normalization

scan watcher

dark and flat field construction

scan selector

notifier

nabu slice reconstruction

data viewer

default center of rotation

create volfloat symlink

Python Script

normalize

data transfer

slice stack

{'acquisitionMethod': ('[scan].xml',), 'controlAreaVisible': True, 'folderObserved': '/lbsram/data/', 'linuxFilePatternSetting': '', 'savedWidgetGeometry': b'\x01\xd9\xd0\xcb\x00\x03\x00\x00\x00\x00\x02I\x00\x00\x01h\x00\x00\x056\x00\x00\x03G\x00\x00\x02I\x00\x00\x01h\x00\x00\x056\x00\x00\x03G\x00\x00\x00\x00\x00\x00\x00\x00\x07\x80\x00\x00\x02I\x00\x00\x01h\x00\x00\x056\x00\x00\x03G', '__version__': 1}
{'_ewoks_default_inputs': {'data': None, 'dark_ref_params': {'DOWHEN': 'before', 'DARKCAL': 'Average', 'DARKOVE': 1, 'DARKRMV': 0, 'DKFILE': 'darkend[0-9]{3,4}', 'REFSCAL': 'Median', 'REFSOVE': 1, 'REFSRMV': 0, 'RFFILE': 'ref*.*[0-9]{3,4}_[0-9]{3,4}'}}, 'controlAreaVisible': True, 'savedWidgetGeometry': b'\x01\xd9\xd0\xcb\x00\x03\x00\x00\x00\x00\x00H\x00\x00\x00\x1b\x00\x00\x03\xef\x00\x00\x02\x1f\x00\x00\x00H\x00\x00\x00@\x00\x00\x03\xef\x00\x00\x02\x1f\x00\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00H\x00\x00\x00@\x00\x00\x03\xef\x00\x00\x02\x1f', '__version__': 1}
{'_scanIDs': [], 'controlAreaVisible': True, 'savedWidgetGeometry': b'\x01\xd9\xd0\xcb\x00\x03\x00\x00\x00\x00\x02\x80\x00\x00\x01C\x00\x00\x04\xff\x00\x00\x03G\x00\x00\x02\x80\x00\x00\x01h\x00\x00\x04\xff\x00\x00\x03G\x00\x00\x00\x00\x00\x00\x00\x00\x07\x80\x00\x00\x02\x80\x00\x00\x01h\x00\x00\x04\xff\x00\x00\x03G', '__version__': 1}
{'_muted': False, 'controlAreaVisible': True, 'savedWidgetGeometry': None, '__version__': 1}
{'_ewoks_default_inputs': {'data': None, 'nabu_params': {'preproc': {'flatfield': 1, 'double_flatfield_enabled': 0, 'dff_sigma': 0.0, 'ccd_filter_enabled': 0, 'ccd_filter_threshold': 0.04, 'take_logarithm': True, 'log_min_clip': 1e-06, 'log_max_clip': 10.0, 'sino_rings_correction': 'None', 'sino_rings_options': 'sigma=1.0 ; levels=10', 'tilt_correction': '', 'autotilt_options': ''}, 'reconstruction': {'method': 'FBP', 'angles_file': '', 'axis_correction_file': '', 'angle_offset': 0.0, 'fbp_filter_type': 'ramlak', 'padding_type': 'edges', 'iterations': 200, 'optim_algorithm': 'chambolle-pock', 'weight_tv': 0.01, 'preconditioning_filter': 1, 'positivity_constraint': 1, 'rotation_axis_position': '', 'translation_movements_file': '', 'clip_outer_circle': 1, 'start_x': 0, 'end_x': -1, 'start_y': 0, 'end_y': -1, 'start_z': 0, 'end_z': -1, 'enable_halftomo': 0}, 'dataset': {'binning': 1, 'binning_z': 1, 'projections_subsampling': 1}, 'tomwer_slices': 'middle', 'output': {'file_format': 'vol', 'location': ''}, 'phase': {'method': 'Paganin', 'delta_beta': '500', 'padding_type': 'edge', 'unsharp_coeff': 3.0, 'unsharp_sigma': 0.65}, 'configuration_level': 'optional', 'mode_locked': False, 'cluster_config': None}}, 'controlAreaVisible': True, 'savedWidgetGeometry': b'\x01\xd9\xd0\xcb\x00\x03\x00\x00\x00\x00\x00H\x00\x00\x00@\x00\x00\x05\xd1\x00\x00\x03\x9e\x00\x00\x00H\x00\x00\x00@\x00\x00\x05\xd1\x00\x00\x03\x9e\x00\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00H\x00\x00\x00@\x00\x00\x05\xd1\x00\x00\x03\x9e', '__version__': 1}
gASVWQEAAAAAAAB9lCiMDl92aWV3ZXJfY29uZmlnlH2UKIwEbW9kZZSMCGJ1aWx0aW5zlIwHZ2V0 YXR0cpSTlIwjdG9td2VyLmd1aS52aXN1YWxpemF0aW9uLmRhdGF2aWV3ZXKUjAxfRGlzcGxheU1v ZGWUk5SMBlNMSUNFU5SGlFKUjAlzbGljZV9vcHSUaAZoB4wKX1NsaWNlTW9kZZSTlIwGTEFURVNU lIaUUpSMCXJhZGlvX29wdJRoBmgHjApfUmFkaW9Nb2RllJOUjApOT1JNQUxJWkVElIaUUpR1jBJj b250cm9sQXJlYVZpc2libGWUiIwTc2F2ZWRXaWRnZXRHZW9tZXRyeZRDQgHZ0MsAAwAAAAAASAAA AIIAAAeRAAAEpAAAAEgAAACnAAAHkQAABKQAAAAAAAAAAAoAAAAASAAAAKcAAAeRAAAEpJSMC19f dmVyc2lvbl9flEsBdS4=
{'_ewoks_default_inputs': {'data': None, 'axis_params': {'MODE': 'centered', 'POSITION_VALUE': -11.37684057962989, 'CALC_INPUT_TYPE': 'transmission_nopag', 'ANGLE_MODE': '0-180', 'USE_SINOGRAM': False, 'SINOGRAM_LINE': '', 'SINOGRAM_SUBSAMPLING': 10, 'AXIS_URL_1': '', 'AXIS_URL_2': '', 'LOOK_AT_STDMAX': False, 'NEAR_WX': 10, 'FINE_STEP_X': 0.1, 'SCALE_IMG2_TO_IMG1': False, 'NEAR_POSITION': 0.0, 'PADDING_MODE': 'edge', 'FLIP_LR': True, 'COMPOSITE_OPTS': {'theta': 10, 'oversampling': 4, 'n_subsampling_y': 10, 'take_log': True, 'near_pos': 0.0, 'near_width': 20}, 'SIDE': 'left', 'COR_OPTIONS': ''}, 'gui': {'mode_is_lock': True, 'value_is_lock': False, 'auto_update_estimated_cor': True}}, 'controlAreaVisible': True, 'savedWidgetGeometry': b'\x01\xd9\xd0\xcb\x00\x03\x00\x00\x00\x00\x00H\x00\x00\x00\x1b\x00\x00\x05]\x00\x00\x03\x17\x00\x00\x00H\x00\x00\x00@\x00\x00\x05]\x00\x00\x03\x17\x00\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00H\x00\x00\x00@\x00\x00\x05]\x00\x00\x03\x17', '__version__': 1}
gASVwwUAAAAAAAB9lCiMEmNvbnRyb2xBcmVhVmlzaWJsZZSIjBJjdXJyZW50U2NyaXB0SW5kZXiU SwCMEWxpYnJhcnlMaXN0U291cmNllF2UjDFvcmFuZ2Vjb250cmliLnRvbXdlci53aWRnZXRzLm90 aGVyLlB5dGhvblNjcmlwdE9XlIwGU2NyaXB0lJOUKYGUfZQojARuYW1llIwLSGVsbG8gd29ybGSU jAZzY3JpcHSUWDUCAABpbXBvcnQgb3MKc2NhbiA9IGluX2RhdGEKCnZvbF9mbG9hdF9wYXRoID0g b3MucGF0aC5qb2luKAogICAgb3MucGF0aC5kaXJuYW1lKHNjYW4ucGF0aCksCiAgICAiLnZvbGZs b2F0X25vYmFja3VwIiwKKQoKdm9sX2Zsb2F0X3N5bV9saW5rX3BhdGggPSBvcy5wYXRoLmpvaW4o CiAgICBvcy5wYXRoLmRpcm5hbWUoc2Nhbi5wYXRoKSwKICAgICJ2b2xmbG9hdCIsCikKCmlmIG5v dCBvcy5wYXRoLmV4aXN0cyh2b2xfZmxvYXRfcGF0aCk6CiAgICBwcmludChmImNyZWF0ZXMge3Zv bF9mbG9hdF9wYXRofSIpCiAgICBvcy5tYWtlZGlycyh2b2xfZmxvYXRfcGF0aCwgbW9kZT0wbzc3 NCkKICAgICMgZG9uJ3Qga25vdyB3aHkgYnV0IGZpcnN0IGNyZWF0aW9uIHdpdGggMG83NzQgZmFp bHMuLi4KICAgIG9zLmNobW9kKHZvbF9mbG9hdF9wYXRoLCAwbzc3NCkKICAgIAogICAgIyBjcmVh dGUgc3ltbGluayBmcm9tIHZvbGZsb2F0IHRvICIudm9sZmxvYXRfbm9iYWNrdXAiCiAgICBvcy5z eW1saW5rKHZvbF9mbG9hdF9wYXRoLCB2b2xfZmxvYXRfc3ltX2xpbmtfcGF0aCkKCgpvdXRfZGF0 YSA9IHNjYW4KlIwFZmxhZ3OUSwCMCGZpbGVuYW1llE51YmGME3NhdmVkV2lkZ2V0R2VvbWV0cnmU Q0IB2dDLAAMAAAAAAEgAAAAbAAAGBwAAA3YAAABIAAAAQAAABgcAAAN2AAAAAAAAAAAKAAAAAEgA AABAAAAGBwAAA3aUjApzY3JpcHRUZXh0lFg1AgAAaW1wb3J0IG9zCnNjYW4gPSBpbl9kYXRhCgp2 b2xfZmxvYXRfcGF0aCA9IG9zLnBhdGguam9pbigKICAgIG9zLnBhdGguZGlybmFtZShzY2FuLnBh dGgpLAogICAgIi52b2xmbG9hdF9ub2JhY2t1cCIsCikKCnZvbF9mbG9hdF9zeW1fbGlua19wYXRo ID0gb3MucGF0aC5qb2luKAogICAgb3MucGF0aC5kaXJuYW1lKHNjYW4ucGF0aCksCiAgICAidm9s ZmxvYXQiLAopCgppZiBub3Qgb3MucGF0aC5leGlzdHModm9sX2Zsb2F0X3BhdGgpOgogICAgcHJp bnQoZiJjcmVhdGVzIHt2b2xfZmxvYXRfcGF0aH0iKQogICAgb3MubWFrZWRpcnModm9sX2Zsb2F0 X3BhdGgsIG1vZGU9MG83NzQpCiAgICAjIGRvbid0IGtub3cgd2h5IGJ1dCBmaXJzdCBjcmVhdGlv biB3aXRoIDBvNzc0IGZhaWxzLi4uCiAgICBvcy5jaG1vZCh2b2xfZmxvYXRfcGF0aCwgMG83NzQp CiAgICAKICAgICMgY3JlYXRlIHN5bWxpbmsgZnJvbSB2b2xmbG9hdCB0byAiLnZvbGZsb2F0X25v YmFja3VwIgogICAgb3Muc3ltbGluayh2b2xfZmxvYXRfcGF0aCwgdm9sX2Zsb2F0X3N5bV9saW5r X3BhdGgpCgoKb3V0X2RhdGEgPSBzY2FuCpSMDXNwbGl0dGVyU3RhdGWUTowLX192ZXJzaW9uX1+U SwF1Lg==
gASVMw8AAAAAAAB9lCiMEmNvbnRyb2xBcmVhVmlzaWJsZZSIjBJjdXJyZW50U2NyaXB0SW5kZXiU SwCMEWxpYnJhcnlMaXN0U291cmNllF2UjDFvcmFuZ2Vjb250cmliLnRvbXdlci53aWRnZXRzLm90 aGVyLlB5dGhvblNjcmlwdE9XlIwGU2NyaXB0lJOUKYGUfZQojARuYW1llIwLSGVsbG8gd29ybGSU jAZzY3JpcHSUWO0GAABpbXBvcnQgc2h1dGlsCmltcG9ydCBvcwpmcm9tIHRvbXdlci5jb3JlLnNj YW4uZWRmc2NhbiBpbXBvcnQgRURGVG9tb1NjYW4KZnJvbSBzaWx4LmlvLmRpY3RkdW1wIGltcG9y dCBkaWN0dG9pbmksIGxvYWQgYXMgbG9hZF9pbmkKCmRlZiBnZXRfa2V5KGxpbmUpOgogICAgIiIi InJldHVybiBrZXkgbmFtZSBvZiBhIC5pbmZvIGZpbGUiIiIKICAgIHJldHVybiBsaW5lLnNwbGl0 KCI9IilbMF0ucmVwbGFjZSgiICIsICIiKQoKCmRlZiBnZXRfcmF3X2RpY3QoZmlsZV9wYXRoKToK ICAgICIiInJldHVybiB0aGUgaW5mbyBmaWxlIG1ldGFkYXRhIGFzIGEgZGljdGlvbmFyeSB3aXRo IG1ldGFkYXRhIG5hbWUgYXMga2V5IGFuZCByYXcgbGluZSBhcyB2YWx1ZSIiIgogICAgbWV0YWRh dGEgPSB7fQogICAgd2l0aCBvcGVuKGZpbGVfcGF0aCwgbW9kZT0iciIpIGFzIGY6CiAgICAgICAg bGluZSA9IGYucmVhZGxpbmUoKQogICAgICAgIHdoaWxlIGxpbmU6CiAgICAgICAgICAgIGtleSA9 IGdldF9rZXkobGluZSkKICAgICAgICAgICAgbWV0YWRhdGFba2V5XSA9IGxpbmUKICAgICAgICAg ICAgbGluZSA9IGYucmVhZGxpbmUoKQogICAgcmV0dXJuIG1ldGFkYXRhCgpzY2FuID0gaW5fZGF0 YQpwcmludCgidHJlYXQiLCBpbl9kYXRhKQoKaWYgaXNpbnN0YW5jZShzY2FuLCBFREZUb21vU2Nh bik6CiAgICAjIGNvcHkgdGhlIC5pbmZvIGZpbGUKICAgIGluZm9fZmlsZSA9IHNjYW4uZ2V0X2lu Zm9fZmlsZShzY2FuLnBhdGgpCiAgICBwcmludChmIlxuXG5UcnlpbmcgdG8gcmVhZCBpbmZvX2Zp bGU6IHtpbmZvX2ZpbGV9IikKICAgICNpbmZvX2ZpbGUgPSBpbmZvX2ZpbGVbNzpdCiAgICBwcmlu dChmIlxuRm9yY2UgdG8gcmVhZCAqdGhpcyogaW5mb19maWxlOiB7aW5mb19maWxlfSIpCiAgICBw cmludChmIlxuSW5pdGlhbCBkaXN0YW5jZSBpbiBpbnB1dCBmaWxlOiBcdHtnZXRfcmF3X2RpY3Qo aW5mb19maWxlKVsnRGlzdGFuY2UnXX0iKQogICAgcmF3X2luZm9fZmlsZSA9IGluZm9fZmlsZVs6 LTVdICsgIl9yYXcuaW5mbyIKICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhyYXdfaW5mb19maWxl KToKICAgICAgICAjIGNvcHkgdGhlIG9yaWdpbmFsIGZpbGUgb25seSB0aGUgZmlyc3QgdGltZS4g T3RoZXJ3aXNlIHdlIHdpbGwgb3ZlcndyaXRlIHdpdGggYW4gdXBkYXRlZCBmaWxlLgogICAgICAg IHNodXRpbC5jb3B5ZmlsZSgKICAgICAgICAgICAgaW5mb19maWxlLAogICAgICAgICAgICByYXdf aW5mb19maWxlLAogICAgICAgICkKICAgIG1ldGFkYXRhID0gZ2V0X3Jhd19kaWN0KGluZm9fZmls ZSkKICAgICMgb3ZlcndyaXRlIGRpc3RhbmNlIGtleQogICAgbmV3X2Rpc3RhbmNlID0gMC4xNjg1 ICoxMDAwICMgMjgwbm0KICAgICNuZXdfZGlzdGFuY2UgPSAwLjA5MTcgIzEwMG5tCiAgICAjbmV3 X2Rpc3RhbmNlID0gMC4xMjUgIzE1MG5tCiAgICAjbmV3X2Rpc3RhbmNlID0gIDAuMDUwMDA2MDUg IyAqIDEwMDAgIzUwbm0KICAgICNuZXdfZGlzdGFuY2UgPSAwLjA5OSAqIDEwMDAgIzE1MG5tCiAg ICBtZXRhZGF0YVsiRGlzdGFuY2UiXSA9ICJEaXN0YW5jZT0gXHRcdCIgKyBzdHIobmV3X2Rpc3Rh bmNlKSArICJcbiIKICAgIHdpdGggb3BlbihpbmZvX2ZpbGUsIG1vZGU9InciKSBhcyBmOgogICAg ICAgIGZvciBfLCBsaW5lIGluIG1ldGFkYXRhLml0ZW1zKCk6CiAgICAgICAgICAgIGYud3JpdGUo bGluZSkKICAgICMgcmVzZXQga2V5IGZvciBjb2hlcmVuY2UKICAgIHNjYW4uX2Rpc3RhbmNlID0g Tm9uZQpvdXRfZGF0YSA9IHNjYW6UjAVmbGFnc5RLAIwIZmlsZW5hbWWUTnViYYwTc2F2ZWRXaWRn ZXRHZW9tZXRyeZRDQgHZ0MsAAwAAAAABfwAAAJAAAAjIAAAEsgAAAX8AAAC1AAAIyAAABLIAAAAA AAAAAAoAAAABfwAAALUAAAjIAAAEspSMCnNjcmlwdFRleHSUWO0GAABpbXBvcnQgc2h1dGlsCmlt cG9ydCBvcwpmcm9tIHRvbXdlci5jb3JlLnNjYW4uZWRmc2NhbiBpbXBvcnQgRURGVG9tb1NjYW4K ZnJvbSBzaWx4LmlvLmRpY3RkdW1wIGltcG9ydCBkaWN0dG9pbmksIGxvYWQgYXMgbG9hZF9pbmkK CmRlZiBnZXRfa2V5KGxpbmUpOgogICAgIiIiInJldHVybiBrZXkgbmFtZSBvZiBhIC5pbmZvIGZp bGUiIiIKICAgIHJldHVybiBsaW5lLnNwbGl0KCI9IilbMF0ucmVwbGFjZSgiICIsICIiKQoKCmRl ZiBnZXRfcmF3X2RpY3QoZmlsZV9wYXRoKToKICAgICIiInJldHVybiB0aGUgaW5mbyBmaWxlIG1l dGFkYXRhIGFzIGEgZGljdGlvbmFyeSB3aXRoIG1ldGFkYXRhIG5hbWUgYXMga2V5IGFuZCByYXcg bGluZSBhcyB2YWx1ZSIiIgogICAgbWV0YWRhdGEgPSB7fQogICAgd2l0aCBvcGVuKGZpbGVfcGF0 aCwgbW9kZT0iciIpIGFzIGY6CiAgICAgICAgbGluZSA9IGYucmVhZGxpbmUoKQogICAgICAgIHdo aWxlIGxpbmU6CiAgICAgICAgICAgIGtleSA9IGdldF9rZXkobGluZSkKICAgICAgICAgICAgbWV0 YWRhdGFba2V5XSA9IGxpbmUKICAgICAgICAgICAgbGluZSA9IGYucmVhZGxpbmUoKQogICAgcmV0 dXJuIG1ldGFkYXRhCgpzY2FuID0gaW5fZGF0YQpwcmludCgidHJlYXQiLCBpbl9kYXRhKQoKaWYg aXNpbnN0YW5jZShzY2FuLCBFREZUb21vU2Nhbik6CiAgICAjIGNvcHkgdGhlIC5pbmZvIGZpbGUK ICAgIGluZm9fZmlsZSA9IHNjYW4uZ2V0X2luZm9fZmlsZShzY2FuLnBhdGgpCiAgICBwcmludChm IlxuXG5UcnlpbmcgdG8gcmVhZCBpbmZvX2ZpbGU6IHtpbmZvX2ZpbGV9IikKICAgICNpbmZvX2Zp bGUgPSBpbmZvX2ZpbGVbNzpdCiAgICBwcmludChmIlxuRm9yY2UgdG8gcmVhZCAqdGhpcyogaW5m b19maWxlOiB7aW5mb19maWxlfSIpCiAgICBwcmludChmIlxuSW5pdGlhbCBkaXN0YW5jZSBpbiBp bnB1dCBmaWxlOiBcdHtnZXRfcmF3X2RpY3QoaW5mb19maWxlKVsnRGlzdGFuY2UnXX0iKQogICAg cmF3X2luZm9fZmlsZSA9IGluZm9fZmlsZVs6LTVdICsgIl9yYXcuaW5mbyIKICAgIGlmIG5vdCBv cy5wYXRoLmV4aXN0cyhyYXdfaW5mb19maWxlKToKICAgICAgICAjIGNvcHkgdGhlIG9yaWdpbmFs IGZpbGUgb25seSB0aGUgZmlyc3QgdGltZS4gT3RoZXJ3aXNlIHdlIHdpbGwgb3ZlcndyaXRlIHdp dGggYW4gdXBkYXRlZCBmaWxlLgogICAgICAgIHNodXRpbC5jb3B5ZmlsZSgKICAgICAgICAgICAg aW5mb19maWxlLAogICAgICAgICAgICByYXdfaW5mb19maWxlLAogICAgICAgICkKICAgIG1ldGFk YXRhID0gZ2V0X3Jhd19kaWN0KGluZm9fZmlsZSkKICAgICMgb3ZlcndyaXRlIGRpc3RhbmNlIGtl eQogICAgbmV3X2Rpc3RhbmNlID0gMC4xNjg1ICoxMDAwICMgMjgwbm0KICAgICNuZXdfZGlzdGFu Y2UgPSAwLjA5MTcgIzEwMG5tCiAgICAjbmV3X2Rpc3RhbmNlID0gMC4xMjUgIzE1MG5tCiAgICAj bmV3X2Rpc3RhbmNlID0gIDAuMDUwMDA2MDUgIyAqIDEwMDAgIzUwbm0KICAgICNuZXdfZGlzdGFu Y2UgPSAwLjA5OSAqIDEwMDAgIzE1MG5tCiAgICBtZXRhZGF0YVsiRGlzdGFuY2UiXSA9ICJEaXN0 YW5jZT0gXHRcdCIgKyBzdHIobmV3X2Rpc3RhbmNlKSArICJcbiIKICAgIHdpdGggb3BlbihpbmZv X2ZpbGUsIG1vZGU9InciKSBhcyBmOgogICAgICAgIGZvciBfLCBsaW5lIGluIG1ldGFkYXRhLml0 ZW1zKCk6CiAgICAgICAgICAgIGYud3JpdGUobGluZSkKICAgICMgcmVzZXQga2V5IGZvciBjb2hl cmVuY2UKICAgIHNjYW4uX2Rpc3RhbmNlID0gTm9uZQpvdXRfZGF0YSA9IHNjYW6UjA1zcGxpdHRl clN0YXRllE6MC19fdmVyc2lvbl9flEsBdS4=
gASVyw4AAAAAAAB9lCiMEmNvbnRyb2xBcmVhVmlzaWJsZZSIjBJjdXJyZW50U2NyaXB0SW5kZXiU SwCMEWxpYnJhcnlMaXN0U291cmNllF2UjDFvcmFuZ2Vjb250cmliLnRvbXdlci53aWRnZXRzLm90 aGVyLlB5dGhvblNjcmlwdE9XlIwGU2NyaXB0lJOUKYGUfZQojARuYW1llIwLSGVsbG8gd29ybGSU jAZzY3JpcHSUWLkGAABpbXBvcnQgb3MKaW1wb3J0IG51bXB5CmZyb20gdG9tb3NjYW4uZmFjdG9y eSBpbXBvcnQgRmFjdG9yeQpmcm9tIG5hYnUubWlzYy51dGlscyBpbXBvcnQgcmVzY2FsZV9kYXRh CgppZiBpbl9kYXRhIGlzIG5vdCBOb25lOgogICAgc2NhbiA9IGluX2RhdGEKICAgIAogICAgIyB3 YXJuaW5nOiBzY2FuLmxhdGVzdF9yZWNvbnN0cnVjdGlvbnMgaXMgZGVmaW5lZCBieSB0aGUgJ25h YnUgc2xpY2UgcmVjb25zdHJ1Y3Rpb24nLiBTbyBpZiBhIHNjYW4gaXMgbG9hZGVkIGFuZCBub3Qg Z28gdHJob3VnaCB0aGlzIHdpZGdldAogICAgIyBoZSB3b24ndCBiZSBhd2FyZSBhYm91dCBzbGlj ZSByZWNvbnN0cnVjdGlvbnMKICAgIHByaW50KCJjaGVjayIsIHNjYW4sICIgLSBsYXRlc3RfcmVj b25zdHJ1Y3Rpb25zIiwgc2Nhbi5sYXRlc3RfcmVjb25zdHJ1Y3Rpb25zKQogICAgaW5fdm9sdW1l cyA9IFsKICAgICAgICBGYWN0b3J5LmNyZWF0ZV90b21vX29iamVjdF9mcm9tX2lkZW50aWZpZXIo aWRlbnRpZmllcikgZm9yIGlkZW50aWZpZXIgaW4gc2Nhbi5sYXRlc3RfcmVjb25zdHJ1Y3Rpb25z CiAgICBdCgogICAgIyBsb29rcyBsaWtlIHRoZXJlIGlzIHNvbWUgZXh0cmEgdm9sdW1lIGV4aXN0 aW5nOiBmaWx0ZXIgdGhlbQogICAgcmVzID0gW10KICAgIGZvciB2b2wgaW4gaW5fdm9sdW1lczoK ICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyh2b2wuZmlsZV9wYXRoKToKICAgICAgICAgICAgcmVz LmFwcGVuZCh2b2wpCiAgICAKICAgIGluX3ZvbHVtZXMgPSByZXMKICAgIHByaW50KCJzbGljZXMg dG8gYmUgaGFuZGxlZCIsIGluX3ZvbHVtZXMpCgogICAgW3ByaW50KHZvbC5nZXRfaWRlbnRpZmll cigpLnRvX3N0cigpKSBmb3Igdm9sIGluIGluX3ZvbHVtZXNdCiAgICAKICAgICMgcmV0cmlldmUg dGhlIG1pbiAvIG1heCBmcm9tIHRoZSBmaXJzdCBhY3F1aXNpdGlvbgogICAgaWYgc2Nhbi5wYXRo LmVuZHN3aXRoKCJfMV8iKToKICAgICAgICBmb3Igdm9sIGluIGluX3ZvbHVtZXM6CiAgICAgICAg ICAgIHByaW50KCJyZWNvbXB1dGUgbWluIGFuZCBtYXggZnJvbSIsIHZvbC5maWxlX3BhdGgpCiAg ICAgICAgICAgIGRhdGEgPSB2b2wubG9hZF9kYXRhKCkKICAgICAgICAgICAgbmV3X21pbiwgbmV3 X21heCA9IG51bXB5LnBlcmNlbnRpbGUoZGF0YVswXSwgKDUsIDk1KSkKCiAgICAjIGFwcGx5IGNh c3QgLyByZWNsYW1pbmcgZGF0YQogICAgaWYgIm5ld19taW4iIGluIGdsb2JhbHMoKSBhbmQgIm5l d19tYXgiIGluIGdsb2JhbHMoKToKICAgICAgICBmb3Igdm9sIGluIGluX3ZvbHVtZXM6CiAgICAg ICAgICAgIHByaW50KCJub3JtYWxpemUiLCB2b2wuZmlsZV9wYXRoKQogICAgICAgICAgICB2b2wu bG9hZF9kYXRhKCkKICAgICAgICAgICAgZGF0YSA9IHZvbC5kYXRhCiAgICAgICAgICAgIGRhdGEg PSByZXNjYWxlX2RhdGEoCiAgICAgICAgICAgICAgICBkYXRhPWRhdGEsCiAgICAgICAgICAgICAg ICBuZXdfbWluPW5ld19taW4sCiAgICAgICAgICAgICAgICBuZXdfbWF4PW5ld19tYXgsCiAgICAg ICAgICAgICAgICBkYXRhX21pbj1kYXRhLm1pbigpLAogICAgICAgICAgICAgICAgZGF0YV9tYXg9 ZGF0YS5tYXgoKSwKICAgICAgICAgICAgKQogICAgICAgICAgICB2b2wuZGF0YSA9IGRhdGEKICAg ICAgICAgICAgdm9sLnNhdmVfZGF0YSgpCiAgICAgICAgCiAgICBvdXRfZGF0YSA9IHNjYW4KZWxz ZToKICAgIG91dF9kYXRhID0gaW5fZGF0YZSMBWZsYWdzlEsAjAhmaWxlbmFtZZROdWJhjBNzYXZl ZFdpZGdldEdlb21ldHJ5lENCAdnQywADAAAAAAHKAAAA5wAACf8AAAWfAAABygAAAOcAAAn/AAAF nwAAAAAAAAAACgAAAAHKAAAA5wAACf8AAAWflIwKc2NyaXB0VGV4dJRYuQYAAGltcG9ydCBvcwpp bXBvcnQgbnVtcHkKZnJvbSB0b21vc2Nhbi5mYWN0b3J5IGltcG9ydCBGYWN0b3J5CmZyb20gbmFi dS5taXNjLnV0aWxzIGltcG9ydCByZXNjYWxlX2RhdGEKCmlmIGluX2RhdGEgaXMgbm90IE5vbmU6 CiAgICBzY2FuID0gaW5fZGF0YQogICAgCiAgICAjIHdhcm5pbmc6IHNjYW4ubGF0ZXN0X3JlY29u c3RydWN0aW9ucyBpcyBkZWZpbmVkIGJ5IHRoZSAnbmFidSBzbGljZSByZWNvbnN0cnVjdGlvbicu IFNvIGlmIGEgc2NhbiBpcyBsb2FkZWQgYW5kIG5vdCBnbyB0cmhvdWdoIHRoaXMgd2lkZ2V0CiAg ICAjIGhlIHdvbid0IGJlIGF3YXJlIGFib3V0IHNsaWNlIHJlY29uc3RydWN0aW9ucwogICAgcHJp bnQoImNoZWNrIiwgc2NhbiwgIiAtIGxhdGVzdF9yZWNvbnN0cnVjdGlvbnMiLCBzY2FuLmxhdGVz dF9yZWNvbnN0cnVjdGlvbnMpCiAgICBpbl92b2x1bWVzID0gWwogICAgICAgIEZhY3RvcnkuY3Jl YXRlX3RvbW9fb2JqZWN0X2Zyb21faWRlbnRpZmllcihpZGVudGlmaWVyKSBmb3IgaWRlbnRpZmll ciBpbiBzY2FuLmxhdGVzdF9yZWNvbnN0cnVjdGlvbnMKICAgIF0KCiAgICAjIGxvb2tzIGxpa2Ug dGhlcmUgaXMgc29tZSBleHRyYSB2b2x1bWUgZXhpc3Rpbmc6IGZpbHRlciB0aGVtCiAgICByZXMg PSBbXQogICAgZm9yIHZvbCBpbiBpbl92b2x1bWVzOgogICAgICAgIGlmIG9zLnBhdGguZXhpc3Rz KHZvbC5maWxlX3BhdGgpOgogICAgICAgICAgICByZXMuYXBwZW5kKHZvbCkKICAgIAogICAgaW5f dm9sdW1lcyA9IHJlcwogICAgcHJpbnQoInNsaWNlcyB0byBiZSBoYW5kbGVkIiwgaW5fdm9sdW1l cykKCiAgICBbcHJpbnQodm9sLmdldF9pZGVudGlmaWVyKCkudG9fc3RyKCkpIGZvciB2b2wgaW4g aW5fdm9sdW1lc10KICAgIAogICAgIyByZXRyaWV2ZSB0aGUgbWluIC8gbWF4IGZyb20gdGhlIGZp cnN0IGFjcXVpc2l0aW9uCiAgICBpZiBzY2FuLnBhdGguZW5kc3dpdGgoIl8xXyIpOgogICAgICAg IGZvciB2b2wgaW4gaW5fdm9sdW1lczoKICAgICAgICAgICAgcHJpbnQoInJlY29tcHV0ZSBtaW4g YW5kIG1heCBmcm9tIiwgdm9sLmZpbGVfcGF0aCkKICAgICAgICAgICAgZGF0YSA9IHZvbC5sb2Fk X2RhdGEoKQogICAgICAgICAgICBuZXdfbWluLCBuZXdfbWF4ID0gbnVtcHkucGVyY2VudGlsZShk YXRhWzBdLCAoNSwgOTUpKQoKICAgICMgYXBwbHkgY2FzdCAvIHJlY2xhbWluZyBkYXRhCiAgICBp ZiAibmV3X21pbiIgaW4gZ2xvYmFscygpIGFuZCAibmV3X21heCIgaW4gZ2xvYmFscygpOgogICAg ICAgIGZvciB2b2wgaW4gaW5fdm9sdW1lczoKICAgICAgICAgICAgcHJpbnQoIm5vcm1hbGl6ZSIs IHZvbC5maWxlX3BhdGgpCiAgICAgICAgICAgIHZvbC5sb2FkX2RhdGEoKQogICAgICAgICAgICBk YXRhID0gdm9sLmRhdGEKICAgICAgICAgICAgZGF0YSA9IHJlc2NhbGVfZGF0YSgKICAgICAgICAg ICAgICAgIGRhdGE9ZGF0YSwKICAgICAgICAgICAgICAgIG5ld19taW49bmV3X21pbiwKICAgICAg ICAgICAgICAgIG5ld19tYXg9bmV3X21heCwKICAgICAgICAgICAgICAgIGRhdGFfbWluPWRhdGEu bWluKCksCiAgICAgICAgICAgICAgICBkYXRhX21heD1kYXRhLm1heCgpLAogICAgICAgICAgICAp CiAgICAgICAgICAgIHZvbC5kYXRhID0gZGF0YQogICAgICAgICAgICB2b2wuc2F2ZV9kYXRhKCkK ICAgICAgICAKICAgIG91dF9kYXRhID0gc2NhbgplbHNlOgogICAgb3V0X2RhdGEgPSBpbl9kYXRh lIwNc3BsaXR0ZXJTdGF0ZZROjAtfX3ZlcnNpb25fX5RLAXUu
{'controlAreaVisible': True, 'dest_dir_settings': None, 'savedWidgetGeometry': b'\x01\xd9\xd0\xcb\x00\x03\x00\x00\x00\x00\x04>\x00\x00\x02h\x00\x00\x05\xad\x00\x00\x02\xe8\x00\x00\x04>\x00\x00\x02h\x00\x00\x05\xad\x00\x00\x02\xe8\x00\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x04>\x00\x00\x02h\x00\x00\x05\xad\x00\x00\x02\xe8', '__version__': 1}
{'controlAreaVisible': True, 'savedWidgetGeometry': b'\x01\xd9\xd0\xcb\x00\x03\x00\x00\x00\x00\x01\xaa\x00\x00\x00\x8b\x00\x00\x08\xbc\x00\x00\x04\x90\x00\x00\x01\xaa\x00\x00\x00\xb0\x00\x00\x08\xbc\x00\x00\x04\x90\x00\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x01\xaa\x00\x00\x00\xb0\x00\x00\x08\xbc\x00\x00\x04\x90', '__version__': 1}