@jsenv/database 0.0.22 → 0.0.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +4 -4
- package/src/.jsenv/chrome@136.00/.internal/database/database@L11C5-L14C14.js +0 -4
- package/src/.jsenv/chrome@136.00/.internal/database/database@L12C7-L16C16.js +0 -5
- package/src/.jsenv/chrome@136.00/.internal/database@L11C5-L14C14.js +0 -4
- package/src/.jsenv/chrome@136.00/.internal/database@L12C7-L16C16.js +0 -5
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/node_modules/@preact/signals/dist/signals.module.js +0 -274
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/node_modules/@preact/signals/dist/signals.module.js.map +0 -162
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/node_modules/@preact/signals-core/dist/signals-core.module.js +0 -1
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/node_modules/@preact/signals-core/dist/signals-core.module.js.map +0 -92
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/node_modules/@prefresh/core/src/@prefresh_core_index.js +0 -210
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/node_modules/@prefresh/core/src/@prefresh_core_index.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/node_modules/@prefresh/core/src/computeKey.js +0 -38
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/node_modules/@prefresh/core/src/computeKey.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/node_modules/@prefresh/core/src/constants.js +0 -13
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/node_modules/@prefresh/core/src/runtime/catchError.js +0 -17
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/node_modules/@prefresh/core/src/runtime/catchError.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/node_modules/@prefresh/core/src/runtime/debounceRendering.js +0 -21
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/node_modules/@prefresh/core/src/runtime/debounceRendering.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/node_modules/@prefresh/core/src/runtime/signaturesForType.js +0 -2
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/node_modules/@prefresh/core/src/runtime/unmount.js +0 -20
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/node_modules/@prefresh/core/src/runtime/unmount.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/node_modules/@prefresh/core/src/runtime/vnode.js +0 -68
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/node_modules/@prefresh/core/src/runtime/vnode.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/node_modules/@prefresh/core/src/runtime/vnodesForComponent.js +0 -3
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/node_modules/@prefresh/utils/src/@prefresh_utils_index.js +0 -43
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/node_modules/@tanstack/table-core/build/lib/index.mjs.map +0 -1
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/node_modules/@tanstack/table-core/build/lib/table-core_index.mjs +0 -3526
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/node_modules/@tanstack/table-core/build/lib/table-core_index.mjs.map +0 -1048
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/node_modules/preact/compat/dist/compat.module.js +0 -435
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/node_modules/preact/compat/dist/compat.module.js.map +0 -386
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/node_modules/preact/debug/dist/debug.module.js +0 -2
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/node_modules/preact/debug/dist/debug.module.js.map +0 -180
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/node_modules/preact/devtools/dist/devtools.module.js +0 -2
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/node_modules/preact/devtools/dist/devtools.module.js.map +0 -29
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/node_modules/preact/dist/preact.module.js +0 -2
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/node_modules/preact/dist/preact.module.js.map +0 -275
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/node_modules/preact/hooks/dist/hooks.module.js +0 -199
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/node_modules/preact/hooks/dist/hooks.module.js.map +0 -169
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js +0 -2
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js.map +0 -76
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/backend/server/src/services/autoreload_on_server_restart/client/autoreload_on_server_restart.js +0 -133
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/animation/src/animation.js +0 -37
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/add_attribute_effect.js +0 -93
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/details_toggle_animation.js +0 -259
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/details_toggle_animation.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/dom.js +0 -43
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/dom.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/element_is_visible.js +0 -24
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/element_is_visible.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/focus/active_element.js +0 -24
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/focus/active_element.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/focus/element_is_focusable.js +0 -42
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/focus/element_is_focusable.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/focus/focus_trap.js +0 -171
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/focus/focus_trap.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/scroll.js +0 -282
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/scroll.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/size/can_take_size.js +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/size/details_content_full_height.js +0 -65
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/size/details_content_full_height.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/size/flex_details_set.js +0 -775
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/size/flex_details_set.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/size/get_available_height.js +0 -24
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/size/get_available_height.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/size/get_available_width.js +0 -24
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/size/get_available_width.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/size/get_border_sizes.js +0 -14
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/size/get_height.js +0 -4
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/size/get_inner_height.js +0 -16
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/size/get_inner_height.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/size/get_inner_width.js +0 -16
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/size/get_inner_width.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/size/get_margin_sizes.js +0 -10
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/size/get_max_height.js +0 -59
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/size/get_max_height.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/size/get_max_width.js +0 -49
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/size/get_max_width.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/size/get_min_height.js +0 -16
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/size/get_min_height.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/size/get_min_width.js +0 -16
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/size/get_min_width.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/size/get_padding_sizes.js +0 -10
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/size/get_width.js +0 -4
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/size/hooks/use_available_height.js +0 -26
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/size/hooks/use_available_height.js.map +0 -36
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/size/hooks/use_available_width.js +0 -26
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/size/hooks/use_available_width.js.map +0 -36
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/size/hooks/use_max_height.js +0 -12
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/size/hooks/use_max_height.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/size/hooks/use_max_width.js +0 -12
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/size/hooks/use_max_width.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/size/hooks/use_resize_status.js +0 -51
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/size/hooks/use_resize_status.js.map +0 -46
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/size/resize.js +0 -697
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/size/resize.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/size/resolve_css_size.js +0 -32
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/size/size_animation_group_controller.js +0 -124
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/size/size_animation_group_controller.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/size/start_resize_gesture.js +0 -131
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/style_and_attributes.js +0 -86
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/style_and_attributes.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/traversal.js +0 -169
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/dom/src/utils.js +0 -42
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/form/src/@jsenv_form_main.js +0 -8
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/form/src/@jsenv_form_main.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/form/src/input_validity/constraints/native_constraints.js +0 -48
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/form/src/input_validity/constraints/single_space_constraint.js +0 -13
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/form/src/input_validity/hooks/use_input_constraint.js +0 -20
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/form/src/input_validity/hooks/use_input_constraint.js.map +0 -27
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/form/src/input_validity/hooks/use_input_custom_validation_ref.js +0 -62
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/form/src/input_validity/hooks/use_input_custom_validation_ref.js.map +0 -39
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/form/src/input_validity/hooks/use_input_validation_message.js +0 -20
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/form/src/input_validity/hooks/use_input_validation_message.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/form/src/input_validity/input_custom_validation.js +0 -346
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/form/src/input_validity/input_custom_validation.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/form/src/input_validity/validation_message.js +0 -644
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/form/src/input_validity/validation_message.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/router_index.js +0 -40
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/router_index.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/action/action.js +0 -205
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/action/action.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/action/action_hooks.js +0 -29
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/action/action_hooks.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/action/action_status.js +0 -5
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/back_and_forward.js +0 -19
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/back_and_forward.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/components/loader_background.jsx +0 -48
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/components/loader_background.jsx.map +0 -28
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/components/rectangle_loading.jsx +0 -103
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/components/rectangle_loading.jsx.map +0 -50
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/components/spa_checkbox.jsx +0 -121
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/components/spa_checkbox.jsx.map +0 -62
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/components/spa_delete_button.jsx +0 -44
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/components/spa_delete_button.jsx.map +0 -37
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/components/spa_form.jsx +0 -233
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/components/spa_form.jsx.map +0 -110
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/components/spa_input_date_and_time.jsx +0 -145
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/components/spa_input_date_and_time.jsx.map +0 -78
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/components/spa_input_integer.jsx +0 -88
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/components/spa_input_integer.jsx.map +0 -50
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/components/spa_input_text.jsx +0 -154
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/components/spa_input_text.jsx.map +0 -70
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/components/spa_link.jsx +0 -102
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/components/spa_link.jsx.map +0 -53
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/components/use_spa_form_status.js +0 -10
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/components/use_spa_form_status.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/components/user_request_submit_on_change.js +0 -30
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/components/user_request_submit_on_change.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/components/validity/input_validity.css.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/components/validity/input_validity.css7as_css_module=7side_effect=.js +0 -22
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/components/validity/input_validity.js +0 -339
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/components/validity/input_validity.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/components/validity/input_validity7side_effect=.css +0 -4
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/components/validity/use_validity.js +0 -43
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/components/validity/use_validity.js.map +0 -31
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/document_loading.js +0 -17
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/document_loading.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/document_routing.js +0 -28
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/document_routing.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/document_url.js +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/document_url.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/history/history.js +0 -92
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/history/history.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/hooks/use_debounce_true.js +0 -30
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/hooks/use_debounce_true.js.map +0 -25
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/hooks/use_details.js +0 -43
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/hooks/use_details.js.map +0 -28
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/hooks/use_optimistic_ui_state.js +0 -19
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/hooks/use_optimistic_ui_state.js.map +0 -25
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/hooks/use_reset_error_boundary.js +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/hooks/use_reset_error_boundary.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/nav/nav.js +0 -221
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/nav/nav.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/normalize_url.js +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/route/route.js +0 -354
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/route/route.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/route/route.jsx +0 -341
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/route/route.jsx.map +0 -100
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/route/route_hooks.js +0 -75
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/route/route_hooks.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/route/route_status.js +0 -5
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/router.js +0 -23
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/router.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/router_ready_state.js +0 -26
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/router_ready_state.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/url.js +0 -131
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/url.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/router/src/value_in_local_storage.js +0 -172
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/sigi/src/@jsenv_sigi_main.js +0 -7
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/sigi/src/@jsenv_sigi_main.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/sigi/src/array_signal_store.js +0 -351
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/sigi/src/array_signal_store.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/sigi/src/array_store_and_route.js +0 -24
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/sigi/src/array_store_and_route.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/sigi/src/sigi.js +0 -183
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/sigi/src/sigi.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/sigi/src/sigi_advanced.js +0 -342
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/sigi/src/sigi_advanced.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/sigi/src/sigref.js +0 -23
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/frontend/sigi/src/sigref.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/internal/ast/src/html/html_src_set.js +0 -18
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/internal/plugin-supervisor/src/client/supervisor.js +0 -1406
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/components/database_table.jsx +0 -64
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/components/database_table.jsx.map +0 -51
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/components/database_value.jsx +0 -182
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/components/database_value.jsx.map +0 -40
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/components/font_sized_svg.jsx +0 -52
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/components/font_sized_svg.jsx.map +0 -28
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/components/icon_and_text.jsx +0 -44
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/components/icon_and_text.jsx.map +0 -29
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/components/link_with_icon.jsx +0 -54
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/components/link_with_icon.jsx.map +0 -32
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/components/page_head.jsx +0 -46
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/components/page_head.jsx.map +0 -29
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/components/page_label.jsx +0 -41
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/components/page_label.jsx.map +0 -28
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/components/table.css.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/components/table.css7as_css_module=7side_effect=.js +0 -22
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/components/table.jsx +0 -184
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/components/table.jsx.map +0 -74
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/components/table7side_effect=.css +0 -19
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/components/use_table.js +0 -42
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/components/use_table.js.map +0 -28
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/database/database_icons.jsx +0 -84
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/database/database_icons.jsx.map +0 -39
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/database/database_item.jsx +0 -49
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/database/database_item.jsx.map +0 -34
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/database/database_link.jsx +0 -48
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/database/database_link.jsx.map +0 -37
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/database/database_page.jsx +0 -203
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/database/database_page.jsx.map +0 -79
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/database/database_routes.js +0 -110
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/database/database_routes.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/database/database_signals.js +0 -62
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/database/database_signals.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/database/database_store.js +0 -5
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/database/database_store.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/database_manager.css.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/database_manager.css7as_css_module=7side_effect=.js +0 -22
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/database_manager.html +0 -70
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/database_manager.html@L11C5-L14C14.js +0 -8
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/database_manager.html@L11C5-L14C14.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/database_manager.jsx +0 -67
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/database_manager.jsx.map +0 -35
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/database_manager7side_effect=.css +0 -16
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/explorer/explorer.css.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/explorer/explorer.css7as_css_module=7side_effect=.js +0 -22
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/explorer/explorer.jsx +0 -125
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/explorer/explorer.jsx.map +0 -72
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/explorer/explorer7side_effect=.css +0 -151
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/explorer/explorer_databases.jsx +0 -101
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/explorer/explorer_databases.jsx.map +0 -62
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/explorer/explorer_group.jsx +0 -473
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/explorer/explorer_group.jsx.map +0 -147
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/explorer/explorer_roles.jsx +0 -101
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/explorer/explorer_roles.jsx.map +0 -61
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/font_sized_svg.jsx +0 -52
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/font_sized_svg.jsx.map +0 -28
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/icons/icons.jsx +0 -93
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/icons/icons.jsx.map +0 -36
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/layout/aside.jsx +0 -98
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/layout/aside.jsx.map +0 -65
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/layout/layout.css.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/layout/layout.css7as_css_module=7side_effect=.js +0 -22
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/layout/layout7side_effect=.css +0 -51
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/role/role_icons.jsx +0 -237
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/role/role_icons.jsx.map +0 -53
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/role/role_item.jsx +0 -50
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/role/role_item.jsx.map +0 -35
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/role/role_link.jsx +0 -49
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/role/role_link.jsx.map +0 -38
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/role/role_page.jsx +0 -248
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/role/role_page.jsx.map +0 -85
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/role/role_routes.js +0 -109
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/role/role_routes.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/role/role_signals.js +0 -55
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/role/role_signals.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/role/role_store.js +0 -5
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/role/role_store.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/router.js +0 -5
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/router.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/svg_mask_overlay.jsx +0 -214
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/svg_mask_overlay.jsx.map +0 -72
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/table/table_page.jsx +0 -69
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/table/table_page.jsx.map +0 -45
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/table/table_routes.js +0 -40
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/table/table_routes.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/table/table_signals.js +0 -6
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-database-manager/src/client/table/table_signals.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-preact/src/client/preact_refresh.js +0 -36
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/related/plugin-preact/src/client/preact_refresh.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/ansi/ansi_browser.js +0 -5
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/ansi/ansi_browser.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/ansi/ansi_runtime_agnostic.js +0 -107
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/byte/byte.js +0 -46
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/byte/byte.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/content_frame/content_frame.js +0 -157
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/error/error_to_html.js +0 -22
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/error/error_to_markdown.js +0 -14
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/js_value/array.js +0 -60
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/js_value/array.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/js_value/bigint.js +0 -3
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/js_value/bigint_object.js +0 -5
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/js_value/boolean.js +0 -1
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/js_value/boolean_object.js +0 -14
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/js_value/boolean_object.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/js_value/constructor.js +0 -10
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/js_value/date.js +0 -10
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/js_value/date.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/js_value/error.js +0 -36
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/js_value/error.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/js_value/function.js +0 -20
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/js_value/humanize.js +0 -144
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/js_value/humanize.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/js_value/null.js +0 -1
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/js_value/number.js +0 -101
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/js_value/number_object.js +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/js_value/number_object.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/js_value/object.js +0 -80
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/js_value/object.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/js_value/regexp.js +0 -1
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/js_value/string.js +0 -141
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/js_value/string_object.js +0 -12
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/js_value/string_object.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/js_value/symbol.js +0 -24
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/js_value/undefined.js +0 -1
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/log/call_orderer.js +0 -39
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/log/detailed_message.js +0 -29
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/main_browser.js +0 -15
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/main_browser.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/percentage/distribute_percentages.js +0 -55
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/percentage/distribute_percentages.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/time/time.js +0 -153
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/time/time.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/unicode/unicode_browser.js +0 -9
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/unicode/unicode_browser.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/unicode/unicode_runtime_agnostic.js +0 -56
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/utils/decimals.js +0 -95
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/humanize/src/utils/indentation.js +0 -38
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/url-pattern/src/headers_pattern.js +0 -7
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/url-pattern/src/headers_pattern.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/url-pattern/src/pattern.js +0 -254
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/url-pattern/src/pattern.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/url-pattern/src/resource_pattern.js +0 -98
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/url-pattern/src/resource_pattern.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/url-pattern/url-pattern_index.js +0 -5
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/url-pattern/url-pattern_index.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/urls/src/main_browser.js +0 -3
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/urls/src/main_browser.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/urls/src/main_shared.js +0 -53
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/urls/src/main_shared.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/urls/src/shared/common_pathname.js +0 -36
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/urls/src/shared/data_url.js +0 -50
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/urls/src/shared/is_filesystem_path.js +0 -21
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/urls/src/shared/move_url.js +0 -16
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/urls/src/shared/move_url.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/urls/src/shared/pathname_to_extension.js +0 -15
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/urls/src/shared/query_params.js +0 -151
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/urls/src/shared/resolve_directory_url.js +0 -9
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/urls/src/shared/resolve_directory_url.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/urls/src/shared/resolve_url.js +0 -6
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/urls/src/shared/resource_to_parts.js +0 -49
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/urls/src/shared/resource_to_parts.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/urls/src/shared/set_url_part.js +0 -96
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/urls/src/shared/set_url_part.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/urls/src/shared/url_is_or_is_inside_of.js +0 -17
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/urls/src/shared/url_to_basename.js +0 -26
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/urls/src/shared/url_to_basename.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/urls/src/shared/url_to_extension.js +0 -9
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/urls/src/shared/url_to_extension.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/urls/src/shared/url_to_filename.js +0 -20
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/urls/src/shared/url_to_filename.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/urls/src/shared/url_to_origin.js +0 -7
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/urls/src/shared/url_to_parent_url.js +0 -33
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/urls/src/shared/url_to_parent_url.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/urls/src/shared/url_to_pathname.js +0 -10
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/urls/src/shared/url_to_pathname.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/urls/src/shared/url_to_relative_url.js +0 -62
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/urls/src/shared/url_to_relative_url.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/urls/src/shared/url_to_resource.js +0 -23
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/urls/src/shared/url_to_resource.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/urls/src/shared/url_to_scheme.js +0 -10
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/urls/src/shared/url_trace.js +0 -35
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/urls/src/shared/url_trace.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/urls/src/shared/windows_file_path_utils.js +0 -16
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/urls/src/shared/yield_ancestor_urls.js +0 -47
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/urls/src/shared/yield_ancestor_urls.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/utils/src/string/escape_chars.js +0 -26
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/utils/src/string/escape_chars.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/utils/src/string/escape_regexp_special_chars.js +0 -25
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/utils/src/string/escape_regexp_special_chars.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/packages/tooling/utils/src/string/is_escaped.js +0 -12
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/src/kitchen/client/inline_content.js +0 -17
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/src/plugins/autoreload/client/autoreload.js +0 -433
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/src/plugins/autoreload/client/autoreload.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/src/plugins/import_meta_css/client/import_meta_css.js +0 -42
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/src/plugins/import_meta_hot/client/import_meta_hot.js +0 -116
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/src/plugins/protocol_file/client/assets/file.png +0 -0
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/src/plugins/protocol_file/client/assets/home.svg +0 -6
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/src/plugins/protocol_file/client/directory_listing.css +0 -214
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/src/plugins/protocol_file/client/directory_listing.html@L12C5-L15C14.js.map +0 -11
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/src/plugins/protocol_file/client/directory_listing.html@L12C5-L15C147url=fileUsersdmailDocumentsdevjsenvcorepackagesbackenddatabasesrccliindex.html7enoent=.js +0 -73
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/src/plugins/protocol_file/client/directory_listing.html@L12C5-L15C147url=fileUsersdmailDocumentsdevjsenvcorepackagesbackenddatabasesrcclitoto.js7enoent=.js +0 -73
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/src/plugins/protocol_file/client/directory_listing.jsx +0 -436
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/src/plugins/protocol_file/client/directory_listing.jsx.map +0 -120
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/src/plugins/protocol_file/client/directory_listing7url=fileUsersdmailDocumentsdevjsenvcorepackagesbackenddatabasesrccliindex.html7enoent=.html +0 -71
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/src/plugins/protocol_file/client/directory_listing7url=fileUsersdmailDocumentsdevjsenvcorepackagesbackenddatabasesrcclitoto.js7enoent=.html +0 -71
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/src/plugins/ribbon/client/ribbon.js +0 -96
- package/src/.jsenv/chrome@136.00/@fs/Users/dmail/Documents/dev/jsenv/core/src/plugins/server_events/client/server_events_client.js +0 -461
- package/src/.jsenv/chrome@136.00/Users/dmail/Documents/dev/jsenv/core/packages/backend/database/src/cli/cli@L11C5-L14C14.js +0 -4
- package/src/.jsenv/chrome@136.00/Users/dmail/Documents/dev/jsenv/core/packages/backend/database/src/cli/cli@L12C7-L16C16.js +0 -5
- package/src/.jsenv/chrome@136.00/index.html@L12C5-L15C14.js +0 -4
- package/src/.jsenv/chrome@136.00/index.html@L12C7-L16C16.js +0 -5
- package/src/.jsenv/chrome@136.00/roles/me@L11C5-L14C147roles=7databases=.js +0 -4
- package/src/.jsenv/chrome@136.00/roles/me@L12C7-L16C167roles=7databases=.js +0 -5
- package/src/.jsenv/chrome@136.00/toto.js@L12C5-L15C14.js +0 -4
- package/src/.jsenv/chrome@136.00/toto.js@L12C7-L16C16.js +0 -5
- package/src/.jsenv/chrome@136.00/uuid.json +0 -1
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
var n,l,u,t,i,r,o,e,f,c,s,a,h,p={},y=[],v=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,w=Array.isArray;function d(n,l){for(var u in l)n[u]=l[u];return n}function g(n){n&&n.parentNode&&n.parentNode.removeChild(n)}function _(l,u,t){var i,r,o,e={};for(o in u)"key"==o?i=u[o]:"ref"==o?r=u[o]:e[o]=u[o];if(arguments.length>2&&(e.children=arguments.length>3?n.call(arguments,2):t),"function"==typeof l&&null!=l.defaultProps)for(o in l.defaultProps)null==e[o]&&(e[o]=l.defaultProps[o]);return m(l,e,i,r,null)}function m(n,t,i,r,o){var e={type:n,props:t,key:i,ref:r,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:null==o?++u:o,__i:-1,__u:0};return null==o&&null!=l.vnode&&l.vnode(e),e}function b(){return{current:null}}function k(n){return n.children}function x(n,l){this.props=n,this.context=l}function S(n,l){if(null==l)return n.__?S(n.__,n.__i+1):null;for(var u;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e)return u.__e;return"function"==typeof n.type?S(n):null}function C(n){var l,u;if(null!=(n=n.__)&&null!=n.__c){for(n.__e=n.__c.base=null,l=0;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e){n.__e=n.__c.base=u.__e;break}return C(n)}}function M(n){(!n.__d&&(n.__d=!0)&&i.push(n)&&!$.__r++||r!=l.debounceRendering)&&((r=l.debounceRendering)||o)($)}function $(){for(var n,u,t,r,o,f,c,s=1;i.length;)i.length>s&&i.sort(e),n=i.shift(),s=i.length,n.__d&&(t=void 0,o=(r=(u=n).__v).__e,f=[],c=[],u.__P&&((t=d({},r)).__v=r.__v+1,l.vnode&&l.vnode(t),O(u.__P,t,r,u.__n,u.__P.namespaceURI,32&r.__u?[o]:null,f,null==o?S(r):o,!!(32&r.__u),c),t.__v=r.__v,t.__.__k[t.__i]=t,z(f,t,c),t.__e!=o&&C(t)));$.__r=0}function I(n,l,u,t,i,r,o,e,f,c,s){var a,h,v,w,d,g,_=t&&t.__k||y,m=l.length;for(f=P(u,l,_,f,m),a=0;a<m;a++)null!=(v=u.__k[a])&&(h=-1==v.__i?p:_[v.__i]||p,v.__i=a,g=O(n,v,h,i,r,o,e,f,c,s),w=v.__e,v.ref&&h.ref!=v.ref&&(h.ref&&q(h.ref,null,v),s.push(v.ref,v.__c||w,v)),null==d&&null!=w&&(d=w),4&v.__u||h.__k===v.__k?f=A(v,f,n):"function"==typeof v.type&&void 0!==g?f=g:w&&(f=w.nextSibling),v.__u&=-7);return u.__e=d,f}function P(n,l,u,t,i){var r,o,e,f,c,s=u.length,a=s,h=0;for(n.__k=new Array(i),r=0;r<i;r++)null!=(o=l[r])&&"boolean"!=typeof o&&"function"!=typeof o?(f=r+h,(o=n.__k[r]="string"==typeof o||"number"==typeof o||"bigint"==typeof o||o.constructor==String?m(null,o,null,null,null):w(o)?m(k,{children:o},null,null,null):null==o.constructor&&o.__b>0?m(o.type,o.props,o.key,o.ref?o.ref:null,o.__v):o).__=n,o.__b=n.__b+1,e=null,-1!=(c=o.__i=L(o,u,f,a))&&(a--,(e=u[c])&&(e.__u|=2)),null==e||null==e.__v?(-1==c&&(i>s?h--:i<s&&h++),"function"!=typeof o.type&&(o.__u|=4)):c!=f&&(c==f-1?h--:c==f+1?h++:(c>f?h--:h++,o.__u|=4))):n.__k[r]=null;if(a)for(r=0;r<s;r++)null!=(e=u[r])&&0==(2&e.__u)&&(e.__e==t&&(t=S(e)),B(e,e));return t}function A(n,l,u){var t,i;if("function"==typeof n.type){for(t=n.__k,i=0;t&&i<t.length;i++)t[i]&&(t[i].__=n,l=A(t[i],l,u));return l}n.__e!=l&&(l&&n.type&&!u.contains(l)&&(l=S(n)),u.insertBefore(n.__e,l||null),l=n.__e);do{l=l&&l.nextSibling}while(null!=l&&8==l.nodeType);return l}function H(n,l){return l=l||[],null==n||"boolean"==typeof n||(w(n)?n.some(function(n){H(n,l)}):l.push(n)),l}function L(n,l,u,t){var i,r,o=n.key,e=n.type,f=l[u];if(null===f&&null==n.key||f&&o==f.key&&e==f.type&&0==(2&f.__u))return u;if(t>(null!=f&&0==(2&f.__u)?1:0))for(i=u-1,r=u+1;i>=0||r<l.length;){if(i>=0){if((f=l[i])&&0==(2&f.__u)&&o==f.key&&e==f.type)return i;i--}if(r<l.length){if((f=l[r])&&0==(2&f.__u)&&o==f.key&&e==f.type)return r;r++}}return-1}function T(n,l,u){"-"==l[0]?n.setProperty(l,null==u?"":u):n[l]=null==u?"":"number"!=typeof u||v.test(l)?u:u+"px"}function j(n,l,u,t,i){var r;n:if("style"==l)if("string"==typeof u)n.style.cssText=u;else{if("string"==typeof t&&(n.style.cssText=t=""),t)for(l in t)u&&l in u||T(n.style,l,"");if(u)for(l in u)t&&u[l]==t[l]||T(n.style,l,u[l])}else if("o"==l[0]&&"n"==l[1])r=l!=(l=l.replace(f,"$1")),l=l.toLowerCase()in n||"onFocusOut"==l||"onFocusIn"==l?l.toLowerCase().slice(2):l.slice(2),n.l||(n.l={}),n.l[l+r]=u,u?t?u.u=t.u:(u.u=c,n.addEventListener(l,r?a:s,r)):n.removeEventListener(l,r?a:s,r);else{if("http://www.w3.org/2000/svg"==i)l=l.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if("width"!=l&&"height"!=l&&"href"!=l&&"list"!=l&&"form"!=l&&"tabIndex"!=l&&"download"!=l&&"rowSpan"!=l&&"colSpan"!=l&&"role"!=l&&"popover"!=l&&l in n)try{n[l]=null==u?"":u;break n}catch(n){}"function"==typeof u||(null==u||!1===u&&"-"!=l[4]?n.removeAttribute(l):n.setAttribute(l,"popover"==l&&1==u?"":u))}}function F(n){return function(u){if(this.l){var t=this.l[u.type+n];if(null==u.t)u.t=c++;else if(u.t<t.u)return;return t(l.event?l.event(u):u)}}}function O(n,u,t,i,r,o,e,f,c,s){var a,h,p,y,v,_,m,b,S,C,M,$,P,A,H,L,T,j=u.type;if(null!=u.constructor)return null;128&t.__u&&(c=!!(32&t.__u),o=[f=u.__e=t.__e]),(a=l.__b)&&a(u);n:if("function"==typeof j)try{if(b=u.props,S="prototype"in j&&j.prototype.render,C=(a=j.contextType)&&i[a.__c],M=a?C?C.props.value:a.__:i,t.__c?m=(h=u.__c=t.__c).__=h.__E:(S?u.__c=h=new j(b,M):(u.__c=h=new x(b,M),h.constructor=j,h.render=D),C&&C.sub(h),h.props=b,h.state||(h.state={}),h.context=M,h.__n=i,p=h.__d=!0,h.__h=[],h._sb=[]),S&&null==h.__s&&(h.__s=h.state),S&&null!=j.getDerivedStateFromProps&&(h.__s==h.state&&(h.__s=d({},h.__s)),d(h.__s,j.getDerivedStateFromProps(b,h.__s))),y=h.props,v=h.state,h.__v=u,p)S&&null==j.getDerivedStateFromProps&&null!=h.componentWillMount&&h.componentWillMount(),S&&null!=h.componentDidMount&&h.__h.push(h.componentDidMount);else{if(S&&null==j.getDerivedStateFromProps&&b!==y&&null!=h.componentWillReceiveProps&&h.componentWillReceiveProps(b,M),!h.__e&&null!=h.shouldComponentUpdate&&!1===h.shouldComponentUpdate(b,h.__s,M)||u.__v==t.__v){for(u.__v!=t.__v&&(h.props=b,h.state=h.__s,h.__d=!1),u.__e=t.__e,u.__k=t.__k,u.__k.some(function(n){n&&(n.__=u)}),$=0;$<h._sb.length;$++)h.__h.push(h._sb[$]);h._sb=[],h.__h.length&&e.push(h);break n}null!=h.componentWillUpdate&&h.componentWillUpdate(b,h.__s,M),S&&null!=h.componentDidUpdate&&h.__h.push(function(){h.componentDidUpdate(y,v,_)})}if(h.context=M,h.props=b,h.__P=n,h.__e=!1,P=l.__r,A=0,S){for(h.state=h.__s,h.__d=!1,P&&P(u),a=h.render(h.props,h.state,h.context),H=0;H<h._sb.length;H++)h.__h.push(h._sb[H]);h._sb=[]}else do{h.__d=!1,P&&P(u),a=h.render(h.props,h.state,h.context),h.state=h.__s}while(h.__d&&++A<25);h.state=h.__s,null!=h.getChildContext&&(i=d(d({},i),h.getChildContext())),S&&!p&&null!=h.getSnapshotBeforeUpdate&&(_=h.getSnapshotBeforeUpdate(y,v)),L=a,null!=a&&a.type===k&&null==a.key&&(L=N(a.props.children)),f=I(n,w(L)?L:[L],u,t,i,r,o,e,f,c,s),h.base=u.__e,u.__u&=-161,h.__h.length&&e.push(h),m&&(h.__E=h.__=null)}catch(n){if(u.__v=null,c||null!=o)if(n.then){for(u.__u|=c?160:128;f&&8==f.nodeType&&f.nextSibling;)f=f.nextSibling;o[o.indexOf(f)]=null,u.__e=f}else for(T=o.length;T--;)g(o[T]);else u.__e=t.__e,u.__k=t.__k;l.__e(n,u,t)}else null==o&&u.__v==t.__v?(u.__k=t.__k,u.__e=t.__e):f=u.__e=V(t.__e,u,t,i,r,o,e,c,s);return(a=l.diffed)&&a(u),128&u.__u?void 0:f}function z(n,u,t){for(var i=0;i<t.length;i++)q(t[i],t[++i],t[++i]);l.__c&&l.__c(u,n),n.some(function(u){try{n=u.__h,u.__h=[],n.some(function(n){n.call(u)})}catch(n){l.__e(n,u.__v)}})}function N(n){return"object"!=typeof n||null==n||n.__b&&n.__b>0?n:w(n)?n.map(N):d({},n)}function V(u,t,i,r,o,e,f,c,s){var a,h,y,v,d,_,m,b=i.props,k=t.props,x=t.type;if("svg"==x?o="http://www.w3.org/2000/svg":"math"==x?o="http://www.w3.org/1998/Math/MathML":o||(o="http://www.w3.org/1999/xhtml"),null!=e)for(a=0;a<e.length;a++)if((d=e[a])&&"setAttribute"in d==!!x&&(x?d.localName==x:3==d.nodeType)){u=d,e[a]=null;break}if(null==u){if(null==x)return document.createTextNode(k);u=document.createElementNS(o,x,k.is&&k),c&&(l.__m&&l.__m(t,e),c=!1),e=null}if(null==x)b===k||c&&u.data==k||(u.data=k);else{if(e=e&&n.call(u.childNodes),b=i.props||p,!c&&null!=e)for(b={},a=0;a<u.attributes.length;a++)b[(d=u.attributes[a]).name]=d.value;for(a in b)if(d=b[a],"children"==a);else if("dangerouslySetInnerHTML"==a)y=d;else if(!(a in k)){if("value"==a&&"defaultValue"in k||"checked"==a&&"defaultChecked"in k)continue;j(u,a,null,d,o)}for(a in k)d=k[a],"children"==a?v=d:"dangerouslySetInnerHTML"==a?h=d:"value"==a?_=d:"checked"==a?m=d:c&&"function"!=typeof d||b[a]===d||j(u,a,d,b[a],o);if(h)c||y&&(h.__html==y.__html||h.__html==u.innerHTML)||(u.innerHTML=h.__html),t.__k=[];else if(y&&(u.innerHTML=""),I("template"==t.type?u.content:u,w(v)?v:[v],t,i,r,"foreignObject"==x?"http://www.w3.org/1999/xhtml":o,e,f,e?e[0]:i.__k&&S(i,0),c,s),null!=e)for(a=e.length;a--;)g(e[a]);c||(a="value","progress"==x&&null==_?u.removeAttribute("value"):null!=_&&(_!==u[a]||"progress"==x&&!_||"option"==x&&_!=b[a])&&j(u,a,_,b[a],o),a="checked",null!=m&&m!=u[a]&&j(u,a,m,b[a],o))}return u}function q(n,u,t){try{if("function"==typeof n){var i="function"==typeof n.__u;i&&n.__u(),i&&null==u||(n.__u=n(u))}else n.current=u}catch(n){l.__e(n,t)}}function B(n,u,t){var i,r;if(l.unmount&&l.unmount(n),(i=n.ref)&&(i.current&&i.current!=n.__e||q(i,null,u)),null!=(i=n.__c)){if(i.componentWillUnmount)try{i.componentWillUnmount()}catch(n){l.__e(n,u)}i.base=i.__P=null}if(i=n.__k)for(r=0;r<i.length;r++)i[r]&&B(i[r],u,t||"function"!=typeof n.type);t||g(n.__e),n.__c=n.__=n.__e=void 0}function D(n,l,u){return this.constructor(n,u)}function E(u,t,i){var r,o,e,f;t==document&&(t=document.documentElement),l.__&&l.__(u,t),o=(r="function"==typeof i)?null:i&&i.__k||t.__k,e=[],f=[],O(t,u=(!r&&i||t).__k=_(k,null,[u]),o||p,p,t.namespaceURI,!r&&i?[i]:o?null:t.firstChild?n.call(t.childNodes):null,e,!r&&i?i:o?o.__e:t.firstChild,r,f),z(e,u,f)}function G(n,l){E(n,l,G)}function J(l,u,t){var i,r,o,e,f=d({},l.props);for(o in l.type&&l.type.defaultProps&&(e=l.type.defaultProps),u)"key"==o?i=u[o]:"ref"==o?r=u[o]:f[o]=null==u[o]&&null!=e?e[o]:u[o];return arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):t),m(l.type,f,i||l.key,r||l.ref,null)}function K(n){function l(n){var u,t;return this.getChildContext||(u=new Set,(t={})[l.__c]=this,this.getChildContext=function(){return t},this.componentWillUnmount=function(){u=null},this.shouldComponentUpdate=function(n){this.props.value!=n.value&&u.forEach(function(n){n.__e=!0,M(n)})},this.sub=function(n){u.add(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u&&u.delete(n),l&&l.call(n)}}),n.children}return l.__c="__cC"+h++,l.__=n,l.Provider=l.__l=(l.Consumer=function(n,l){return n.children(l)}).contextType=l,l}n=y.slice,l={__e:function(n,l,u,t){for(var i,r,o;l=l.__;)if((i=l.__c)&&!i.__)try{if((r=i.constructor)&&null!=r.getDerivedStateFromError&&(i.setState(r.getDerivedStateFromError(n)),o=i.__d),null!=i.componentDidCatch&&(i.componentDidCatch(n,t||{}),o=i.__d),o)return i.__E=i}catch(l){n=l}throw n}},u=0,t=function(n){return null!=n&&null==n.constructor},x.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!=this.state?this.__s:this.__s=d({},this.state),"function"==typeof n&&(n=n(d({},u),this.props)),n&&d(u,n),null!=n&&this.__v&&(l&&this._sb.push(l),M(this))},x.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),M(this))},x.prototype.render=k,i=[],o="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,e=function(n,l){return n.__v.__b-l.__v.__b},$.__r=0,f=/(PointerCapture)$|Capture$/i,c=0,s=F(!1),a=F(!0),h=0;export{x as Component,k as Fragment,J as cloneElement,K as createContext,_ as createElement,b as createRef,_ as h,G as hydrate,t as isValidElement,l as options,E as render,H as toChildArray};
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlYWN0Lm1vZHVsZS5qcyIsInNvdXJjZXMiOlsiZmlsZTovLy9Vc2Vycy9kbWFpbC9Eb2N1bWVudHMvZGV2L2pzZW52L2NvcmUvbm9kZV9tb2R1bGVzL3ByZWFjdC9zcmMvY29uc3RhbnRzLmpzIiwiZmlsZTovLy9Vc2Vycy9kbWFpbC9Eb2N1bWVudHMvZGV2L2pzZW52L2NvcmUvbm9kZV9tb2R1bGVzL3ByZWFjdC9zcmMvdXRpbC5qcyIsImZpbGU6Ly8vVXNlcnMvZG1haWwvRG9jdW1lbnRzL2Rldi9qc2Vudi9jb3JlL25vZGVfbW9kdWxlcy9wcmVhY3Qvc3JjL29wdGlvbnMuanMiLCJmaWxlOi8vL1VzZXJzL2RtYWlsL0RvY3VtZW50cy9kZXYvanNlbnYvY29yZS9ub2RlX21vZHVsZXMvcHJlYWN0L3NyYy9jcmVhdGUtZWxlbWVudC5qcyIsImZpbGU6Ly8vVXNlcnMvZG1haWwvRG9jdW1lbnRzL2Rldi9qc2Vudi9jb3JlL25vZGVfbW9kdWxlcy9wcmVhY3Qvc3JjL2NvbXBvbmVudC5qcyIsImZpbGU6Ly8vVXNlcnMvZG1haWwvRG9jdW1lbnRzL2Rldi9qc2Vudi9jb3JlL25vZGVfbW9kdWxlcy9wcmVhY3Qvc3JjL2RpZmYvcHJvcHMuanMiLCJmaWxlOi8vL1VzZXJzL2RtYWlsL0RvY3VtZW50cy9kZXYvanNlbnYvY29yZS9ub2RlX21vZHVsZXMvcHJlYWN0L3NyYy9jcmVhdGUtY29udGV4dC5qcyIsImZpbGU6Ly8vVXNlcnMvZG1haWwvRG9jdW1lbnRzL2Rldi9qc2Vudi9jb3JlL25vZGVfbW9kdWxlcy9wcmVhY3Qvc3JjL2RpZmYvY2hpbGRyZW4uanMiLCJmaWxlOi8vL1VzZXJzL2RtYWlsL0RvY3VtZW50cy9kZXYvanNlbnYvY29yZS9ub2RlX21vZHVsZXMvcHJlYWN0L3NyYy9kaWZmL2luZGV4LmpzIiwiZmlsZTovLy9Vc2Vycy9kbWFpbC9Eb2N1bWVudHMvZGV2L2pzZW52L2NvcmUvbm9kZV9tb2R1bGVzL3ByZWFjdC9zcmMvcmVuZGVyLmpzIiwiZmlsZTovLy9Vc2Vycy9kbWFpbC9Eb2N1bWVudHMvZGV2L2pzZW52L2NvcmUvbm9kZV9tb2R1bGVzL3ByZWFjdC9zcmMvY2xvbmUtZWxlbWVudC5qcyIsImZpbGU6Ly8vVXNlcnMvZG1haWwvRG9jdW1lbnRzL2Rldi9qc2Vudi9jb3JlL25vZGVfbW9kdWxlcy9wcmVhY3Qvc3JjL2RpZmYvY2F0Y2gtZXJyb3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIE5vcm1hbCBoeWRyYXRpb24gdGhhdCBhdHRhY2hlcyB0byBhIERPTSB0cmVlIGJ1dCBkb2VzIG5vdCBkaWZmIGl0LiAqL1xuZXhwb3J0IGNvbnN0IE1PREVfSFlEUkFURSA9IDEgPDwgNTtcbi8qKiBTaWduaWZpZXMgdGhpcyBWTm9kZSBzdXNwZW5kZWQgb24gdGhlIHByZXZpb3VzIHJlbmRlciAqL1xuZXhwb3J0IGNvbnN0IE1PREVfU1VTUEVOREVEID0gMSA8PCA3O1xuLyoqIEluZGljYXRlcyB0aGF0IHRoaXMgbm9kZSBuZWVkcyB0byBiZSBpbnNlcnRlZCB3aGlsZSBwYXRjaGluZyBjaGlsZHJlbiAqL1xuZXhwb3J0IGNvbnN0IElOU0VSVF9WTk9ERSA9IDEgPDwgMjtcbi8qKiBJbmRpY2F0ZXMgYSBWTm9kZSBoYXMgYmVlbiBtYXRjaGVkIHdpdGggYW5vdGhlciBWTm9kZSBpbiB0aGUgZGlmZiAqL1xuZXhwb3J0IGNvbnN0IE1BVENIRUQgPSAxIDw8IDE7XG5cbi8qKiBSZXNldCBhbGwgbW9kZSBmbGFncyAqL1xuZXhwb3J0IGNvbnN0IFJFU0VUX01PREUgPSB+KE1PREVfSFlEUkFURSB8IE1PREVfU1VTUEVOREVEKTtcblxuZXhwb3J0IGNvbnN0IFNWR19OQU1FU1BBQ0UgPSAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnO1xuZXhwb3J0IGNvbnN0IFhIVE1MX05BTUVTUEFDRSA9ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJztcbmV4cG9ydCBjb25zdCBNQVRIX05BTUVTUEFDRSA9ICdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJztcblxuZXhwb3J0IGNvbnN0IE5VTEwgPSBudWxsO1xuZXhwb3J0IGNvbnN0IFVOREVGSU5FRCA9IHVuZGVmaW5lZDtcbmV4cG9ydCBjb25zdCBFTVBUWV9PQkogPSAvKiogQHR5cGUge2FueX0gKi8gKHt9KTtcbmV4cG9ydCBjb25zdCBFTVBUWV9BUlIgPSBbXTtcbmV4cG9ydCBjb25zdCBJU19OT05fRElNRU5TSU9OQUwgPVxuXHQvYWNpdHxleCg/OnN8Z3xufHB8JCl8cnBofGdyaWR8b3dzfG1uY3xudHd8aW5lW2NoXXx6b298Xm9yZHxpdGVyYS9pO1xuIiwiaW1wb3J0IHsgRU1QVFlfQVJSIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5leHBvcnQgY29uc3QgaXNBcnJheSA9IEFycmF5LmlzQXJyYXk7XG5cbi8qKlxuICogQXNzaWduIHByb3BlcnRpZXMgZnJvbSBgcHJvcHNgIHRvIGBvYmpgXG4gKiBAdGVtcGxhdGUgTywgUCBUaGUgb2JqIGFuZCBwcm9wcyB0eXBlc1xuICogQHBhcmFtIHtPfSBvYmogVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgdG9cbiAqIEBwYXJhbSB7UH0gcHJvcHMgVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgZnJvbVxuICogQHJldHVybnMge08gJiBQfVxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzaWduKG9iaiwgcHJvcHMpIHtcblx0Ly8gQHRzLWV4cGVjdC1lcnJvciBXZSBjaGFuZ2UgdGhlIHR5cGUgb2YgYG9iamAgdG8gYmUgYE8gJiBQYFxuXHRmb3IgKGxldCBpIGluIHByb3BzKSBvYmpbaV0gPSBwcm9wc1tpXTtcblx0cmV0dXJuIC8qKiBAdHlwZSB7TyAmIFB9ICovIChvYmopO1xufVxuXG4vKipcbiAqIFJlbW92ZSBhIGNoaWxkIG5vZGUgZnJvbSBpdHMgcGFyZW50IGlmIGF0dGFjaGVkLiBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3JcbiAqIElFMTEgd2hpY2ggZG9lc24ndCBzdXBwb3J0IGBFbGVtZW50LnByb3RvdHlwZS5yZW1vdmUoKWAuIFVzaW5nIHRoaXMgZnVuY3Rpb25cbiAqIGlzIHNtYWxsZXIgdGhhbiBpbmNsdWRpbmcgYSBkZWRpY2F0ZWQgcG9seWZpbGwuXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbmRleCcpLkNvbnRhaW5lck5vZGV9IG5vZGUgVGhlIG5vZGUgdG8gcmVtb3ZlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVOb2RlKG5vZGUpIHtcblx0aWYgKG5vZGUgJiYgbm9kZS5wYXJlbnROb2RlKSBub2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobm9kZSk7XG59XG5cbmV4cG9ydCBjb25zdCBzbGljZSA9IEVNUFRZX0FSUi5zbGljZTtcbiIsImltcG9ydCB7IF9jYXRjaEVycm9yIH0gZnJvbSAnLi9kaWZmL2NhdGNoLWVycm9yJztcblxuLyoqXG4gKiBUaGUgYG9wdGlvbmAgb2JqZWN0IGNhbiBwb3RlbnRpYWxseSBjb250YWluIGNhbGxiYWNrIGZ1bmN0aW9uc1xuICogdGhhdCBhcmUgY2FsbGVkIGR1cmluZyB2YXJpb3VzIHN0YWdlcyBvZiBvdXIgcmVuZGVyZXIuIFRoaXMgaXMgdGhlXG4gKiBmb3VuZGF0aW9uIG9uIHdoaWNoIGFsbCBvdXIgYWRkb25zIGxpa2UgYHByZWFjdC9kZWJ1Z2AsIGBwcmVhY3QvY29tcGF0YCxcbiAqIGFuZCBgcHJlYWN0L2hvb2tzYCBhcmUgYmFzZWQgb24uIFNlZSB0aGUgYE9wdGlvbnNgIHR5cGUgaW4gYGludGVybmFsLmQudHNgXG4gKiBmb3IgYSBmdWxsIGxpc3Qgb2YgYXZhaWxhYmxlIG9wdGlvbiBob29rcyAobW9zdCBlZGl0b3JzL0lERXMgYWxsb3cgeW91IHRvXG4gKiBjdHJsK2NsaWNrIG9yIGNtZCtjbGljayBvbiBtYWMgdGhlIHR5cGUgZGVmaW5pdGlvbiBiZWxvdykuXG4gKiBAdHlwZSB7aW1wb3J0KCcuL2ludGVybmFsJykuT3B0aW9uc31cbiAqL1xuY29uc3Qgb3B0aW9ucyA9IHtcblx0X2NhdGNoRXJyb3Jcbn07XG5cbmV4cG9ydCBkZWZhdWx0IG9wdGlvbnM7XG4iLCJpbXBvcnQgeyBzbGljZSB9IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgb3B0aW9ucyBmcm9tICcuL29wdGlvbnMnO1xuaW1wb3J0IHsgTlVMTCwgVU5ERUZJTkVEIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5sZXQgdm5vZGVJZCA9IDA7XG5cbi8qKlxuICogQ3JlYXRlIGFuIHZpcnR1YWwgbm9kZSAodXNlZCBmb3IgSlNYKVxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5WTm9kZVtcInR5cGVcIl19IHR5cGUgVGhlIG5vZGUgbmFtZSBvciBDb21wb25lbnQgY29uc3RydWN0b3IgZm9yIHRoaXNcbiAqIHZpcnR1YWwgbm9kZVxuICogQHBhcmFtIHtvYmplY3QgfCBudWxsIHwgdW5kZWZpbmVkfSBbcHJvcHNdIFRoZSBwcm9wZXJ0aWVzIG9mIHRoZSB2aXJ0dWFsIG5vZGVcbiAqIEBwYXJhbSB7QXJyYXk8aW1wb3J0KCcuJykuQ29tcG9uZW50Q2hpbGRyZW4+fSBbY2hpbGRyZW5dIFRoZSBjaGlsZHJlbiBvZiB0aGVcbiAqIHZpcnR1YWwgbm9kZVxuICogQHJldHVybnMge2ltcG9ydCgnLi9pbnRlcm5hbCcpLlZOb2RlfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRWxlbWVudCh0eXBlLCBwcm9wcywgY2hpbGRyZW4pIHtcblx0bGV0IG5vcm1hbGl6ZWRQcm9wcyA9IHt9LFxuXHRcdGtleSxcblx0XHRyZWYsXG5cdFx0aTtcblx0Zm9yIChpIGluIHByb3BzKSB7XG5cdFx0aWYgKGkgPT0gJ2tleScpIGtleSA9IHByb3BzW2ldO1xuXHRcdGVsc2UgaWYgKGkgPT0gJ3JlZicpIHJlZiA9IHByb3BzW2ldO1xuXHRcdGVsc2Ugbm9ybWFsaXplZFByb3BzW2ldID0gcHJvcHNbaV07XG5cdH1cblxuXHRpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDIpIHtcblx0XHRub3JtYWxpemVkUHJvcHMuY2hpbGRyZW4gPVxuXHRcdFx0YXJndW1lbnRzLmxlbmd0aCA+IDMgPyBzbGljZS5jYWxsKGFyZ3VtZW50cywgMikgOiBjaGlsZHJlbjtcblx0fVxuXG5cdC8vIElmIGEgQ29tcG9uZW50IFZOb2RlLCBjaGVjayBmb3IgYW5kIGFwcGx5IGRlZmF1bHRQcm9wc1xuXHQvLyBOb3RlOiB0eXBlIG1heSBiZSB1bmRlZmluZWQgaW4gZGV2ZWxvcG1lbnQsIG11c3QgbmV2ZXIgZXJyb3IgaGVyZS5cblx0aWYgKHR5cGVvZiB0eXBlID09ICdmdW5jdGlvbicgJiYgdHlwZS5kZWZhdWx0UHJvcHMgIT0gTlVMTCkge1xuXHRcdGZvciAoaSBpbiB0eXBlLmRlZmF1bHRQcm9wcykge1xuXHRcdFx0aWYgKG5vcm1hbGl6ZWRQcm9wc1tpXSA9PSBVTkRFRklORUQpIHtcblx0XHRcdFx0bm9ybWFsaXplZFByb3BzW2ldID0gdHlwZS5kZWZhdWx0UHJvcHNbaV07XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGNyZWF0ZVZOb2RlKHR5cGUsIG5vcm1hbGl6ZWRQcm9wcywga2V5LCByZWYsIE5VTEwpO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIFZOb2RlICh1c2VkIGludGVybmFsbHkgYnkgUHJlYWN0KVxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5WTm9kZVtcInR5cGVcIl19IHR5cGUgVGhlIG5vZGUgbmFtZSBvciBDb21wb25lbnRcbiAqIENvbnN0cnVjdG9yIGZvciB0aGlzIHZpcnR1YWwgbm9kZVxuICogQHBhcmFtIHtvYmplY3QgfCBzdHJpbmcgfCBudW1iZXIgfCBudWxsfSBwcm9wcyBUaGUgcHJvcGVydGllcyBvZiB0aGlzIHZpcnR1YWwgbm9kZS5cbiAqIElmIHRoaXMgdmlydHVhbCBub2RlIHJlcHJlc2VudHMgYSB0ZXh0IG5vZGUsIHRoaXMgaXMgdGhlIHRleHQgb2YgdGhlIG5vZGUgKHN0cmluZyBvciBudW1iZXIpLlxuICogQHBhcmFtIHtzdHJpbmcgfCBudW1iZXIgfCBudWxsfSBrZXkgVGhlIGtleSBmb3IgdGhpcyB2aXJ0dWFsIG5vZGUsIHVzZWQgd2hlblxuICogZGlmZmluZyBpdCBhZ2FpbnN0IGl0cyBjaGlsZHJlblxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5WTm9kZVtcInJlZlwiXX0gcmVmIFRoZSByZWYgcHJvcGVydHkgdGhhdCB3aWxsXG4gKiByZWNlaXZlIGEgcmVmZXJlbmNlIHRvIGl0cyBjcmVhdGVkIGNoaWxkXG4gKiBAcmV0dXJucyB7aW1wb3J0KCcuL2ludGVybmFsJykuVk5vZGV9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVWTm9kZSh0eXBlLCBwcm9wcywga2V5LCByZWYsIG9yaWdpbmFsKSB7XG5cdC8vIFY4IHNlZW1zIHRvIGJlIGJldHRlciBhdCBkZXRlY3RpbmcgdHlwZSBzaGFwZXMgaWYgdGhlIG9iamVjdCBpcyBhbGxvY2F0ZWQgZnJvbSB0aGUgc2FtZSBjYWxsIHNpdGVcblx0Ly8gRG8gbm90IGlubGluZSBpbnRvIGNyZWF0ZUVsZW1lbnQgYW5kIGNvZXJjZVRvVk5vZGUhXG5cdC8qKiBAdHlwZSB7aW1wb3J0KCcuL2ludGVybmFsJykuVk5vZGV9ICovXG5cdGNvbnN0IHZub2RlID0ge1xuXHRcdHR5cGUsXG5cdFx0cHJvcHMsXG5cdFx0a2V5LFxuXHRcdHJlZixcblx0XHRfY2hpbGRyZW46IE5VTEwsXG5cdFx0X3BhcmVudDogTlVMTCxcblx0XHRfZGVwdGg6IDAsXG5cdFx0X2RvbTogTlVMTCxcblx0XHRfY29tcG9uZW50OiBOVUxMLFxuXHRcdGNvbnN0cnVjdG9yOiBVTkRFRklORUQsXG5cdFx0X29yaWdpbmFsOiBvcmlnaW5hbCA9PSBOVUxMID8gKyt2bm9kZUlkIDogb3JpZ2luYWwsXG5cdFx0X2luZGV4OiAtMSxcblx0XHRfZmxhZ3M6IDBcblx0fTtcblxuXHQvLyBPbmx5IGludm9rZSB0aGUgdm5vZGUgaG9vayBpZiB0aGlzIHdhcyAqbm90KiBhIGRpcmVjdCBjb3B5OlxuXHRpZiAob3JpZ2luYWwgPT0gTlVMTCAmJiBvcHRpb25zLnZub2RlICE9IE5VTEwpIG9wdGlvbnMudm5vZGUodm5vZGUpO1xuXG5cdHJldHVybiB2bm9kZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJlZigpIHtcblx0cmV0dXJuIHsgY3VycmVudDogTlVMTCB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRnJhZ21lbnQocHJvcHMpIHtcblx0cmV0dXJuIHByb3BzLmNoaWxkcmVuO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgdGhlIGFyZ3VtZW50IGlzIGEgdmFsaWQgUHJlYWN0IFZOb2RlLlxuICogQHBhcmFtIHsqfSB2bm9kZVxuICogQHJldHVybnMge3Zub2RlIGlzIFZOb2RlfVxuICovXG5leHBvcnQgY29uc3QgaXNWYWxpZEVsZW1lbnQgPSB2bm9kZSA9PlxuXHR2bm9kZSAhPSBOVUxMICYmIHZub2RlLmNvbnN0cnVjdG9yID09IFVOREVGSU5FRDtcbiIsImltcG9ydCB7IGFzc2lnbiB9IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgeyBkaWZmLCBjb21taXRSb290IH0gZnJvbSAnLi9kaWZmL2luZGV4JztcbmltcG9ydCBvcHRpb25zIGZyb20gJy4vb3B0aW9ucyc7XG5pbXBvcnQgeyBGcmFnbWVudCB9IGZyb20gJy4vY3JlYXRlLWVsZW1lbnQnO1xuaW1wb3J0IHsgTU9ERV9IWURSQVRFLCBOVUxMIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG4vKipcbiAqIEJhc2UgQ29tcG9uZW50IGNsYXNzLiBQcm92aWRlcyBgc2V0U3RhdGUoKWAgYW5kIGBmb3JjZVVwZGF0ZSgpYCwgd2hpY2hcbiAqIHRyaWdnZXIgcmVuZGVyaW5nXG4gKiBAcGFyYW0ge29iamVjdH0gcHJvcHMgVGhlIGluaXRpYWwgY29tcG9uZW50IHByb3BzXG4gKiBAcGFyYW0ge29iamVjdH0gY29udGV4dCBUaGUgaW5pdGlhbCBjb250ZXh0IGZyb20gcGFyZW50IGNvbXBvbmVudHMnXG4gKiBnZXRDaGlsZENvbnRleHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEJhc2VDb21wb25lbnQocHJvcHMsIGNvbnRleHQpIHtcblx0dGhpcy5wcm9wcyA9IHByb3BzO1xuXHR0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xufVxuXG4vKipcbiAqIFVwZGF0ZSBjb21wb25lbnQgc3RhdGUgYW5kIHNjaGVkdWxlIGEgcmUtcmVuZGVyLlxuICogQHRoaXMge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkNvbXBvbmVudH1cbiAqIEBwYXJhbSB7b2JqZWN0IHwgKChzOiBvYmplY3QsIHA6IG9iamVjdCkgPT4gb2JqZWN0KX0gdXBkYXRlIEEgaGFzaCBvZiBzdGF0ZVxuICogcHJvcGVydGllcyB0byB1cGRhdGUgd2l0aCBuZXcgdmFsdWVzIG9yIGEgZnVuY3Rpb24gdGhhdCBnaXZlbiB0aGUgY3VycmVudFxuICogc3RhdGUgYW5kIHByb3BzIHJldHVybnMgYSBuZXcgcGFydGlhbCBzdGF0ZVxuICogQHBhcmFtIHsoKSA9PiB2b2lkfSBbY2FsbGJhY2tdIEEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIG9uY2UgY29tcG9uZW50IHN0YXRlIGlzXG4gKiB1cGRhdGVkXG4gKi9cbkJhc2VDb21wb25lbnQucHJvdG90eXBlLnNldFN0YXRlID0gZnVuY3Rpb24gKHVwZGF0ZSwgY2FsbGJhY2spIHtcblx0Ly8gb25seSBjbG9uZSBzdGF0ZSB3aGVuIGNvcHlpbmcgdG8gbmV4dFN0YXRlIHRoZSBmaXJzdCB0aW1lLlxuXHRsZXQgcztcblx0aWYgKHRoaXMuX25leHRTdGF0ZSAhPSBOVUxMICYmIHRoaXMuX25leHRTdGF0ZSAhPSB0aGlzLnN0YXRlKSB7XG5cdFx0cyA9IHRoaXMuX25leHRTdGF0ZTtcblx0fSBlbHNlIHtcblx0XHRzID0gdGhpcy5fbmV4dFN0YXRlID0gYXNzaWduKHt9LCB0aGlzLnN0YXRlKTtcblx0fVxuXG5cdGlmICh0eXBlb2YgdXBkYXRlID09ICdmdW5jdGlvbicpIHtcblx0XHQvLyBTb21lIGxpYnJhcmllcyBsaWtlIGBpbW1lcmAgbWFyayB0aGUgY3VycmVudCBzdGF0ZSBhcyByZWFkb25seSxcblx0XHQvLyBwcmV2ZW50aW5nIHVzIGZyb20gbXV0YXRpbmcgaXQsIHNvIHdlIG5lZWQgdG8gY2xvbmUgaXQuIFNlZSAjMjcxNlxuXHRcdHVwZGF0ZSA9IHVwZGF0ZShhc3NpZ24oe30sIHMpLCB0aGlzLnByb3BzKTtcblx0fVxuXG5cdGlmICh1cGRhdGUpIHtcblx0XHRhc3NpZ24ocywgdXBkYXRlKTtcblx0fVxuXG5cdC8vIFNraXAgdXBkYXRlIGlmIHVwZGF0ZXIgZnVuY3Rpb24gcmV0dXJuZWQgbnVsbFxuXHRpZiAodXBkYXRlID09IE5VTEwpIHJldHVybjtcblxuXHRpZiAodGhpcy5fdm5vZGUpIHtcblx0XHRpZiAoY2FsbGJhY2spIHtcblx0XHRcdHRoaXMuX3N0YXRlQ2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xuXHRcdH1cblx0XHRlbnF1ZXVlUmVuZGVyKHRoaXMpO1xuXHR9XG59O1xuXG4vKipcbiAqIEltbWVkaWF0ZWx5IHBlcmZvcm0gYSBzeW5jaHJvbm91cyByZS1yZW5kZXIgb2YgdGhlIGNvbXBvbmVudFxuICogQHRoaXMge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkNvbXBvbmVudH1cbiAqIEBwYXJhbSB7KCkgPT4gdm9pZH0gW2NhbGxiYWNrXSBBIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBhZnRlciBjb21wb25lbnQgaXNcbiAqIHJlLXJlbmRlcmVkXG4gKi9cbkJhc2VDb21wb25lbnQucHJvdG90eXBlLmZvcmNlVXBkYXRlID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG5cdGlmICh0aGlzLl92bm9kZSkge1xuXHRcdC8vIFNldCByZW5kZXIgbW9kZSBzbyB0aGF0IHdlIGNhbiBkaWZmZXJlbnRpYXRlIHdoZXJlIHRoZSByZW5kZXIgcmVxdWVzdFxuXHRcdC8vIGlzIGNvbWluZyBmcm9tLiBXZSBuZWVkIHRoaXMgYmVjYXVzZSBmb3JjZVVwZGF0ZSBzaG91bGQgbmV2ZXIgY2FsbFxuXHRcdC8vIHNob3VsZENvbXBvbmVudFVwZGF0ZVxuXHRcdHRoaXMuX2ZvcmNlID0gdHJ1ZTtcblx0XHRpZiAoY2FsbGJhY2spIHRoaXMuX3JlbmRlckNhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTtcblx0XHRlbnF1ZXVlUmVuZGVyKHRoaXMpO1xuXHR9XG59O1xuXG4vKipcbiAqIEFjY2VwdHMgYHByb3BzYCBhbmQgYHN0YXRlYCwgYW5kIHJldHVybnMgYSBuZXcgVmlydHVhbCBET00gdHJlZSB0byBidWlsZC5cbiAqIFZpcnR1YWwgRE9NIGlzIGdlbmVyYWxseSBjb25zdHJ1Y3RlZCB2aWEgW0pTWF0oaHR0cHM6Ly9qYXNvbmZvcm1hdC5jb20vd3RmLWlzLWpzeCkuXG4gKiBAcGFyYW0ge29iamVjdH0gcHJvcHMgUHJvcHMgKGVnOiBKU1ggYXR0cmlidXRlcykgcmVjZWl2ZWQgZnJvbSBwYXJlbnRcbiAqIGVsZW1lbnQvY29tcG9uZW50XG4gKiBAcGFyYW0ge29iamVjdH0gc3RhdGUgVGhlIGNvbXBvbmVudCdzIGN1cnJlbnQgc3RhdGVcbiAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0IENvbnRleHQgb2JqZWN0LCBhcyByZXR1cm5lZCBieSB0aGUgbmVhcmVzdFxuICogYW5jZXN0b3IncyBgZ2V0Q2hpbGRDb250ZXh0KClgXG4gKiBAcmV0dXJucyB7Q29tcG9uZW50Q2hpbGRyZW4gfCB2b2lkfVxuICovXG5CYXNlQ29tcG9uZW50LnByb3RvdHlwZS5yZW5kZXIgPSBGcmFnbWVudDtcblxuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbnRlcm5hbCcpLlZOb2RlfSB2bm9kZVxuICogQHBhcmFtIHtudW1iZXIgfCBudWxsfSBbY2hpbGRJbmRleF1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERvbVNpYmxpbmcodm5vZGUsIGNoaWxkSW5kZXgpIHtcblx0aWYgKGNoaWxkSW5kZXggPT0gTlVMTCkge1xuXHRcdC8vIFVzZSBjaGlsZEluZGV4PT1udWxsIGFzIGEgc2lnbmFsIHRvIHJlc3VtZSB0aGUgc2VhcmNoIGZyb20gdGhlIHZub2RlJ3Mgc2libGluZ1xuXHRcdHJldHVybiB2bm9kZS5fcGFyZW50XG5cdFx0XHQ/IGdldERvbVNpYmxpbmcodm5vZGUuX3BhcmVudCwgdm5vZGUuX2luZGV4ICsgMSlcblx0XHRcdDogTlVMTDtcblx0fVxuXG5cdGxldCBzaWJsaW5nO1xuXHRmb3IgKDsgY2hpbGRJbmRleCA8IHZub2RlLl9jaGlsZHJlbi5sZW5ndGg7IGNoaWxkSW5kZXgrKykge1xuXHRcdHNpYmxpbmcgPSB2bm9kZS5fY2hpbGRyZW5bY2hpbGRJbmRleF07XG5cblx0XHRpZiAoc2libGluZyAhPSBOVUxMICYmIHNpYmxpbmcuX2RvbSAhPSBOVUxMKSB7XG5cdFx0XHQvLyBTaW5jZSB1cGRhdGVQYXJlbnREb21Qb2ludGVycyBrZWVwcyBfZG9tIHBvaW50ZXIgY29ycmVjdCxcblx0XHRcdC8vIHdlIGNhbiByZWx5IG9uIF9kb20gdG8gdGVsbCB1cyBpZiB0aGlzIHN1YnRyZWUgY29udGFpbnMgYVxuXHRcdFx0Ly8gcmVuZGVyZWQgRE9NIG5vZGUsIGFuZCB3aGF0IHRoZSBmaXJzdCByZW5kZXJlZCBET00gbm9kZSBpc1xuXHRcdFx0cmV0dXJuIHNpYmxpbmcuX2RvbTtcblx0XHR9XG5cdH1cblxuXHQvLyBJZiB3ZSBnZXQgaGVyZSwgd2UgaGF2ZSBub3QgZm91bmQgYSBET00gbm9kZSBpbiB0aGlzIHZub2RlJ3MgY2hpbGRyZW4uXG5cdC8vIFdlIG11c3QgcmVzdW1lIGZyb20gdGhpcyB2bm9kZSdzIHNpYmxpbmcgKGluIGl0J3MgcGFyZW50IF9jaGlsZHJlbiBhcnJheSlcblx0Ly8gT25seSBjbGltYiB1cCBhbmQgc2VhcmNoIHRoZSBwYXJlbnQgaWYgd2UgYXJlbid0IHNlYXJjaGluZyB0aHJvdWdoIGEgRE9NXG5cdC8vIFZOb2RlIChtZWFuaW5nIHdlIHJlYWNoZWQgdGhlIERPTSBwYXJlbnQgb2YgdGhlIG9yaWdpbmFsIHZub2RlIHRoYXQgYmVnYW5cblx0Ly8gdGhlIHNlYXJjaClcblx0cmV0dXJuIHR5cGVvZiB2bm9kZS50eXBlID09ICdmdW5jdGlvbicgPyBnZXREb21TaWJsaW5nKHZub2RlKSA6IE5VTEw7XG59XG5cbi8qKlxuICogVHJpZ2dlciBpbi1wbGFjZSByZS1yZW5kZXJpbmcgb2YgYSBjb21wb25lbnQuXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkNvbXBvbmVudH0gY29tcG9uZW50IFRoZSBjb21wb25lbnQgdG8gcmVyZW5kZXJcbiAqL1xuZnVuY3Rpb24gcmVuZGVyQ29tcG9uZW50KGNvbXBvbmVudCkge1xuXHRsZXQgb2xkVk5vZGUgPSBjb21wb25lbnQuX3Zub2RlLFxuXHRcdG9sZERvbSA9IG9sZFZOb2RlLl9kb20sXG5cdFx0Y29tbWl0UXVldWUgPSBbXSxcblx0XHRyZWZRdWV1ZSA9IFtdO1xuXG5cdGlmIChjb21wb25lbnQuX3BhcmVudERvbSkge1xuXHRcdGNvbnN0IG5ld1ZOb2RlID0gYXNzaWduKHt9LCBvbGRWTm9kZSk7XG5cdFx0bmV3Vk5vZGUuX29yaWdpbmFsID0gb2xkVk5vZGUuX29yaWdpbmFsICsgMTtcblx0XHRpZiAob3B0aW9ucy52bm9kZSkgb3B0aW9ucy52bm9kZShuZXdWTm9kZSk7XG5cblx0XHRkaWZmKFxuXHRcdFx0Y29tcG9uZW50Ll9wYXJlbnREb20sXG5cdFx0XHRuZXdWTm9kZSxcblx0XHRcdG9sZFZOb2RlLFxuXHRcdFx0Y29tcG9uZW50Ll9nbG9iYWxDb250ZXh0LFxuXHRcdFx0Y29tcG9uZW50Ll9wYXJlbnREb20ubmFtZXNwYWNlVVJJLFxuXHRcdFx0b2xkVk5vZGUuX2ZsYWdzICYgTU9ERV9IWURSQVRFID8gW29sZERvbV0gOiBOVUxMLFxuXHRcdFx0Y29tbWl0UXVldWUsXG5cdFx0XHRvbGREb20gPT0gTlVMTCA/IGdldERvbVNpYmxpbmcob2xkVk5vZGUpIDogb2xkRG9tLFxuXHRcdFx0ISEob2xkVk5vZGUuX2ZsYWdzICYgTU9ERV9IWURSQVRFKSxcblx0XHRcdHJlZlF1ZXVlXG5cdFx0KTtcblxuXHRcdG5ld1ZOb2RlLl9vcmlnaW5hbCA9IG9sZFZOb2RlLl9vcmlnaW5hbDtcblx0XHRuZXdWTm9kZS5fcGFyZW50Ll9jaGlsZHJlbltuZXdWTm9kZS5faW5kZXhdID0gbmV3Vk5vZGU7XG5cdFx0Y29tbWl0Um9vdChjb21taXRRdWV1ZSwgbmV3Vk5vZGUsIHJlZlF1ZXVlKTtcblxuXHRcdGlmIChuZXdWTm9kZS5fZG9tICE9IG9sZERvbSkge1xuXHRcdFx0dXBkYXRlUGFyZW50RG9tUG9pbnRlcnMobmV3Vk5vZGUpO1xuXHRcdH1cblx0fVxufVxuXG4vKipcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL2ludGVybmFsJykuVk5vZGV9IHZub2RlXG4gKi9cbmZ1bmN0aW9uIHVwZGF0ZVBhcmVudERvbVBvaW50ZXJzKHZub2RlKSB7XG5cdGlmICgodm5vZGUgPSB2bm9kZS5fcGFyZW50KSAhPSBOVUxMICYmIHZub2RlLl9jb21wb25lbnQgIT0gTlVMTCkge1xuXHRcdHZub2RlLl9kb20gPSB2bm9kZS5fY29tcG9uZW50LmJhc2UgPSBOVUxMO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdm5vZGUuX2NoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRsZXQgY2hpbGQgPSB2bm9kZS5fY2hpbGRyZW5baV07XG5cdFx0XHRpZiAoY2hpbGQgIT0gTlVMTCAmJiBjaGlsZC5fZG9tICE9IE5VTEwpIHtcblx0XHRcdFx0dm5vZGUuX2RvbSA9IHZub2RlLl9jb21wb25lbnQuYmFzZSA9IGNoaWxkLl9kb207XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB1cGRhdGVQYXJlbnREb21Qb2ludGVycyh2bm9kZSk7XG5cdH1cbn1cblxuLyoqXG4gKiBUaGUgcmVuZGVyIHF1ZXVlXG4gKiBAdHlwZSB7QXJyYXk8aW1wb3J0KCcuL2ludGVybmFsJykuQ29tcG9uZW50Pn1cbiAqL1xubGV0IHJlcmVuZGVyUXVldWUgPSBbXTtcblxuLypcbiAqIFRoZSB2YWx1ZSBvZiBgQ29tcG9uZW50LmRlYm91bmNlYCBtdXN0IGFzeW5jaHJvbm91c2x5IGludm9rZSB0aGUgcGFzc2VkIGluIGNhbGxiYWNrLiBJdCBpc1xuICogaW1wb3J0YW50IHRoYXQgY29udHJpYnV0b3JzIHRvIFByZWFjdCBjYW4gY29uc2lzdGVudGx5IHJlYXNvbiBhYm91dCB3aGF0IGNhbGxzIHRvIGBzZXRTdGF0ZWAsIGV0Yy5cbiAqIGRvLCBhbmQgd2hlbiB0aGVpciBlZmZlY3RzIHdpbGwgYmUgYXBwbGllZC4gU2VlIHRoZSBsaW5rcyBiZWxvdyBmb3Igc29tZSBmdXJ0aGVyIHJlYWRpbmcgb24gZGVzaWduaW5nXG4gKiBhc3luY2hyb25vdXMgQVBJcy5cbiAqICogW0Rlc2lnbmluZyBBUElzIGZvciBBc3luY2hyb255XShodHRwczovL2Jsb2cuaXpzLm1lLzIwMTMvMDgvZGVzaWduaW5nLWFwaXMtZm9yLWFzeW5jaHJvbnkpXG4gKiAqIFtDYWxsYmFja3Mgc3luY2hyb25vdXMgYW5kIGFzeW5jaHJvbm91c10oaHR0cHM6Ly9ibG9nLm9tZXRlci5jb20vMjAxMS8wNy8yNC9jYWxsYmFja3Mtc3luY2hyb25vdXMtYW5kLWFzeW5jaHJvbm91cy8pXG4gKi9cblxubGV0IHByZXZEZWJvdW5jZTtcblxuY29uc3QgZGVmZXIgPVxuXHR0eXBlb2YgUHJvbWlzZSA9PSAnZnVuY3Rpb24nXG5cdFx0PyBQcm9taXNlLnByb3RvdHlwZS50aGVuLmJpbmQoUHJvbWlzZS5yZXNvbHZlKCkpXG5cdFx0OiBzZXRUaW1lb3V0O1xuXG4vKipcbiAqIEVucXVldWUgYSByZXJlbmRlciBvZiBhIGNvbXBvbmVudFxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5Db21wb25lbnR9IGMgVGhlIGNvbXBvbmVudCB0byByZXJlbmRlclxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5xdWV1ZVJlbmRlcihjKSB7XG5cdGlmIChcblx0XHQoIWMuX2RpcnR5ICYmXG5cdFx0XHQoYy5fZGlydHkgPSB0cnVlKSAmJlxuXHRcdFx0cmVyZW5kZXJRdWV1ZS5wdXNoKGMpICYmXG5cdFx0XHQhcHJvY2Vzcy5fcmVyZW5kZXJDb3VudCsrKSB8fFxuXHRcdHByZXZEZWJvdW5jZSAhPSBvcHRpb25zLmRlYm91bmNlUmVuZGVyaW5nXG5cdCkge1xuXHRcdHByZXZEZWJvdW5jZSA9IG9wdGlvbnMuZGVib3VuY2VSZW5kZXJpbmc7XG5cdFx0KHByZXZEZWJvdW5jZSB8fCBkZWZlcikocHJvY2Vzcyk7XG5cdH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkNvbXBvbmVudH0gYVxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5Db21wb25lbnR9IGJcbiAqL1xuY29uc3QgZGVwdGhTb3J0ID0gKGEsIGIpID0+IGEuX3Zub2RlLl9kZXB0aCAtIGIuX3Zub2RlLl9kZXB0aDtcblxuLyoqIEZsdXNoIHRoZSByZW5kZXIgcXVldWUgYnkgcmVyZW5kZXJpbmcgYWxsIHF1ZXVlZCBjb21wb25lbnRzICovXG5mdW5jdGlvbiBwcm9jZXNzKCkge1xuXHRsZXQgYyxcblx0XHRsID0gMTtcblxuXHQvLyBEb24ndCB1cGRhdGUgYHJlbmRlckNvdW50YCB5ZXQuIEtlZXAgaXRzIHZhbHVlIG5vbi16ZXJvIHRvIHByZXZlbnQgdW5uZWNlc3Nhcnlcblx0Ly8gcHJvY2VzcygpIGNhbGxzIGZyb20gZ2V0dGluZyBzY2hlZHVsZWQgd2hpbGUgYHF1ZXVlYCBpcyBzdGlsbCBiZWluZyBjb25zdW1lZC5cblx0d2hpbGUgKHJlcmVuZGVyUXVldWUubGVuZ3RoKSB7XG5cdFx0Ly8gS2VlcCB0aGUgcmVyZW5kZXIgcXVldWUgc29ydGVkIGJ5IChkZXB0aCwgaW5zZXJ0aW9uIG9yZGVyKS4gVGhlIHF1ZXVlXG5cdFx0Ly8gd2lsbCBpbml0aWFsbHkgYmUgc29ydGVkIG9uIHRoZSBmaXJzdCBpdGVyYXRpb24gb25seSBpZiBpdCBoYXMgbW9yZSB0aGFuIDEgaXRlbS5cblx0XHQvL1xuXHRcdC8vIE5ldyBpdGVtcyBjYW4gYmUgYWRkZWQgdG8gdGhlIHF1ZXVlIGUuZy4gd2hlbiByZXJlbmRlcmluZyBhIHByb3ZpZGVyLCBzbyB3ZSB3YW50IHRvXG5cdFx0Ly8ga2VlcCB0aGUgb3JkZXIgZnJvbSB0b3AgdG8gYm90dG9tIHdpdGggdGhvc2UgbmV3IGl0ZW1zIHNvIHdlIGNhbiBoYW5kbGUgdGhlbSBpbiBhXG5cdFx0Ly8gc2luZ2xlIHBhc3Ncblx0XHRpZiAocmVyZW5kZXJRdWV1ZS5sZW5ndGggPiBsKSB7XG5cdFx0XHRyZXJlbmRlclF1ZXVlLnNvcnQoZGVwdGhTb3J0KTtcblx0XHR9XG5cblx0XHRjID0gcmVyZW5kZXJRdWV1ZS5zaGlmdCgpO1xuXHRcdGwgPSByZXJlbmRlclF1ZXVlLmxlbmd0aDtcblxuXHRcdGlmIChjLl9kaXJ0eSkge1xuXHRcdFx0cmVuZGVyQ29tcG9uZW50KGMpO1xuXHRcdH1cblx0fVxuXHRwcm9jZXNzLl9yZXJlbmRlckNvdW50ID0gMDtcbn1cblxucHJvY2Vzcy5fcmVyZW5kZXJDb3VudCA9IDA7XG4iLCJpbXBvcnQgeyBJU19OT05fRElNRU5TSU9OQUwsIE5VTEwsIFNWR19OQU1FU1BBQ0UgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IG9wdGlvbnMgZnJvbSAnLi4vb3B0aW9ucyc7XG5cbmZ1bmN0aW9uIHNldFN0eWxlKHN0eWxlLCBrZXksIHZhbHVlKSB7XG5cdGlmIChrZXlbMF0gPT0gJy0nKSB7XG5cdFx0c3R5bGUuc2V0UHJvcGVydHkoa2V5LCB2YWx1ZSA9PSBOVUxMID8gJycgOiB2YWx1ZSk7XG5cdH0gZWxzZSBpZiAodmFsdWUgPT0gTlVMTCkge1xuXHRcdHN0eWxlW2tleV0gPSAnJztcblx0fSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgIT0gJ251bWJlcicgfHwgSVNfTk9OX0RJTUVOU0lPTkFMLnRlc3Qoa2V5KSkge1xuXHRcdHN0eWxlW2tleV0gPSB2YWx1ZTtcblx0fSBlbHNlIHtcblx0XHRzdHlsZVtrZXldID0gdmFsdWUgKyAncHgnO1xuXHR9XG59XG5cbmNvbnN0IENBUFRVUkVfUkVHRVggPSAvKFBvaW50ZXJDYXB0dXJlKSR8Q2FwdHVyZSQvaTtcblxuLy8gQSBsb2dpY2FsIGNsb2NrIHRvIHNvbHZlIGlzc3VlcyBsaWtlIGh0dHBzOi8vZ2l0aHViLmNvbS9wcmVhY3Rqcy9wcmVhY3QvaXNzdWVzLzM5MjcuXG4vLyBXaGVuIHRoZSBET00gcGVyZm9ybXMgYW4gZXZlbnQgaXQgbGVhdmVzIG1pY3JvLXRpY2tzIGluIGJldHdlZW4gYnViYmxpbmcgdXAgd2hpY2ggbWVhbnMgdGhhdFxuLy8gYW4gZXZlbnQgY2FuIHRyaWdnZXIgb24gYSBuZXdseSByZWF0ZWQgRE9NLW5vZGUgd2hpbGUgdGhlIGV2ZW50IGJ1YmJsZXMgdXAuXG4vL1xuLy8gT3JpZ2luYWxseSBpbnNwaXJlZCBieSBWdWVcbi8vIChodHRwczovL2dpdGh1Yi5jb20vdnVlanMvY29yZS9ibG9iL2NhZWI4YTY4ODExYTFiMGY3OS9wYWNrYWdlcy9ydW50aW1lLWRvbS9zcmMvbW9kdWxlcy9ldmVudHMudHMjTDkwLUwxMDEpLFxuLy8gYnV0IG1vZGlmaWVkIHRvIHVzZSBhIGxvZ2ljYWwgY2xvY2sgaW5zdGVhZCBvZiBEYXRlLm5vdygpIGluIGNhc2UgZXZlbnQgaGFuZGxlcnMgZ2V0IGF0dGFjaGVkXG4vLyBhbmQgZXZlbnRzIGdldCBkaXNwYXRjaGVkIGR1cmluZyB0aGUgc2FtZSBtaWxsaXNlY29uZC5cbi8vXG4vLyBUaGUgY2xvY2sgaXMgaW5jcmVtZW50ZWQgYWZ0ZXIgZWFjaCBuZXcgZXZlbnQgZGlzcGF0Y2guIFRoaXMgYWxsb3dzIDEgMDAwIDAwMCBuZXcgZXZlbnRzXG4vLyBwZXIgc2Vjb25kIGZvciBvdmVyIDI4MCB5ZWFycyBiZWZvcmUgdGhlIHZhbHVlIHJlYWNoZXMgTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIgKDIqKjUzIC0gMSkuXG5sZXQgZXZlbnRDbG9jayA9IDA7XG5cbi8qKlxuICogU2V0IGEgcHJvcGVydHkgdmFsdWUgb24gYSBET00gbm9kZVxuICogQHBhcmFtIHtpbXBvcnQoJy4uL2ludGVybmFsJykuUHJlYWN0RWxlbWVudH0gZG9tIFRoZSBET00gbm9kZSB0byBtb2RpZnlcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB0byBzZXRcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldCB0aGUgcHJvcGVydHkgdG9cbiAqIEBwYXJhbSB7Kn0gb2xkVmFsdWUgVGhlIG9sZCB2YWx1ZSB0aGUgcHJvcGVydHkgaGFkXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZXNwYWNlIFdoZXRoZXIgb3Igbm90IHRoaXMgRE9NIG5vZGUgaXMgYW4gU1ZHIG5vZGUgb3Igbm90XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRQcm9wZXJ0eShkb20sIG5hbWUsIHZhbHVlLCBvbGRWYWx1ZSwgbmFtZXNwYWNlKSB7XG5cdGxldCB1c2VDYXB0dXJlO1xuXG5cdG86IGlmIChuYW1lID09ICdzdHlsZScpIHtcblx0XHRpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnKSB7XG5cdFx0XHRkb20uc3R5bGUuY3NzVGV4dCA9IHZhbHVlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRpZiAodHlwZW9mIG9sZFZhbHVlID09ICdzdHJpbmcnKSB7XG5cdFx0XHRcdGRvbS5zdHlsZS5jc3NUZXh0ID0gb2xkVmFsdWUgPSAnJztcblx0XHRcdH1cblxuXHRcdFx0aWYgKG9sZFZhbHVlKSB7XG5cdFx0XHRcdGZvciAobmFtZSBpbiBvbGRWYWx1ZSkge1xuXHRcdFx0XHRcdGlmICghKHZhbHVlICYmIG5hbWUgaW4gdmFsdWUpKSB7XG5cdFx0XHRcdFx0XHRzZXRTdHlsZShkb20uc3R5bGUsIG5hbWUsICcnKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0aWYgKHZhbHVlKSB7XG5cdFx0XHRcdGZvciAobmFtZSBpbiB2YWx1ZSkge1xuXHRcdFx0XHRcdGlmICghb2xkVmFsdWUgfHwgdmFsdWVbbmFtZV0gIT0gb2xkVmFsdWVbbmFtZV0pIHtcblx0XHRcdFx0XHRcdHNldFN0eWxlKGRvbS5zdHlsZSwgbmFtZSwgdmFsdWVbbmFtZV0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHQvLyBCZW5jaG1hcmsgZm9yIGNvbXBhcmlzb246IGh0dHBzOi8vZXNiZW5jaC5jb20vYmVuY2gvNTc0Yzk1NGJkYjk2NWI5YTAwOTY1YWM2XG5cdGVsc2UgaWYgKG5hbWVbMF0gPT0gJ28nICYmIG5hbWVbMV0gPT0gJ24nKSB7XG5cdFx0dXNlQ2FwdHVyZSA9IG5hbWUgIT0gKG5hbWUgPSBuYW1lLnJlcGxhY2UoQ0FQVFVSRV9SRUdFWCwgJyQxJykpO1xuXG5cdFx0Ly8gSW5mZXIgY29ycmVjdCBjYXNpbmcgZm9yIERPTSBidWlsdC1pbiBldmVudHM6XG5cdFx0aWYgKFxuXHRcdFx0bmFtZS50b0xvd2VyQ2FzZSgpIGluIGRvbSB8fFxuXHRcdFx0bmFtZSA9PSAnb25Gb2N1c091dCcgfHxcblx0XHRcdG5hbWUgPT0gJ29uRm9jdXNJbidcblx0XHQpXG5cdFx0XHRuYW1lID0gbmFtZS50b0xvd2VyQ2FzZSgpLnNsaWNlKDIpO1xuXHRcdGVsc2UgbmFtZSA9IG5hbWUuc2xpY2UoMik7XG5cblx0XHRpZiAoIWRvbS5fbGlzdGVuZXJzKSBkb20uX2xpc3RlbmVycyA9IHt9O1xuXHRcdGRvbS5fbGlzdGVuZXJzW25hbWUgKyB1c2VDYXB0dXJlXSA9IHZhbHVlO1xuXG5cdFx0aWYgKHZhbHVlKSB7XG5cdFx0XHRpZiAoIW9sZFZhbHVlKSB7XG5cdFx0XHRcdHZhbHVlLl9hdHRhY2hlZCA9IGV2ZW50Q2xvY2s7XG5cdFx0XHRcdGRvbS5hZGRFdmVudExpc3RlbmVyKFxuXHRcdFx0XHRcdG5hbWUsXG5cdFx0XHRcdFx0dXNlQ2FwdHVyZSA/IGV2ZW50UHJveHlDYXB0dXJlIDogZXZlbnRQcm94eSxcblx0XHRcdFx0XHR1c2VDYXB0dXJlXG5cdFx0XHRcdCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR2YWx1ZS5fYXR0YWNoZWQgPSBvbGRWYWx1ZS5fYXR0YWNoZWQ7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGRvbS5yZW1vdmVFdmVudExpc3RlbmVyKFxuXHRcdFx0XHRuYW1lLFxuXHRcdFx0XHR1c2VDYXB0dXJlID8gZXZlbnRQcm94eUNhcHR1cmUgOiBldmVudFByb3h5LFxuXHRcdFx0XHR1c2VDYXB0dXJlXG5cdFx0XHQpO1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRpZiAobmFtZXNwYWNlID09IFNWR19OQU1FU1BBQ0UpIHtcblx0XHRcdC8vIE5vcm1hbGl6ZSBpbmNvcnJlY3QgcHJvcCB1c2FnZSBmb3IgU1ZHOlxuXHRcdFx0Ly8gLSB4bGluazpocmVmIC8geGxpbmtIcmVmIC0tPiBocmVmICh4bGluazpocmVmIHdhcyByZW1vdmVkIGZyb20gU1ZHIGFuZCBpc24ndCBuZWVkZWQpXG5cdFx0XHQvLyAtIGNsYXNzTmFtZSAtLT4gY2xhc3Ncblx0XHRcdG5hbWUgPSBuYW1lLnJlcGxhY2UoL3hsaW5rKEh8OmgpLywgJ2gnKS5yZXBsYWNlKC9zTmFtZSQvLCAncycpO1xuXHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRuYW1lICE9ICd3aWR0aCcgJiZcblx0XHRcdG5hbWUgIT0gJ2hlaWdodCcgJiZcblx0XHRcdG5hbWUgIT0gJ2hyZWYnICYmXG5cdFx0XHRuYW1lICE9ICdsaXN0JyAmJlxuXHRcdFx0bmFtZSAhPSAnZm9ybScgJiZcblx0XHRcdC8vIERlZmF1bHQgdmFsdWUgaW4gYnJvd3NlcnMgaXMgYC0xYCBhbmQgYW4gZW1wdHkgc3RyaW5nIGlzXG5cdFx0XHQvLyBjYXN0IHRvIGAwYCBpbnN0ZWFkXG5cdFx0XHRuYW1lICE9ICd0YWJJbmRleCcgJiZcblx0XHRcdG5hbWUgIT0gJ2Rvd25sb2FkJyAmJlxuXHRcdFx0bmFtZSAhPSAncm93U3BhbicgJiZcblx0XHRcdG5hbWUgIT0gJ2NvbFNwYW4nICYmXG5cdFx0XHRuYW1lICE9ICdyb2xlJyAmJlxuXHRcdFx0bmFtZSAhPSAncG9wb3ZlcicgJiZcblx0XHRcdG5hbWUgaW4gZG9tXG5cdFx0KSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRkb21bbmFtZV0gPSB2YWx1ZSA9PSBOVUxMID8gJycgOiB2YWx1ZTtcblx0XHRcdFx0Ly8gbGFiZWxsZWQgYnJlYWsgaXMgMWIgc21hbGxlciBoZXJlIHRoYW4gYSByZXR1cm4gc3RhdGVtZW50IChzb3JyeSlcblx0XHRcdFx0YnJlYWsgbztcblx0XHRcdH0gY2F0Y2ggKGUpIHt9XG5cdFx0fVxuXG5cdFx0Ly8gYXJpYS0gYW5kIGRhdGEtIGF0dHJpYnV0ZXMgaGF2ZSBubyBib29sZWFuIHJlcHJlc2VudGF0aW9uLlxuXHRcdC8vIEEgYGZhbHNlYCB2YWx1ZSBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgYXR0cmlidXRlIG5vdCBiZWluZ1xuXHRcdC8vIHByZXNlbnQsIHNvIHdlIGNhbid0IHJlbW92ZSBpdC4gRm9yIG5vbi1ib29sZWFuIGFyaWFcblx0XHQvLyBhdHRyaWJ1dGVzIHdlIGNvdWxkIHRyZWF0IGZhbHNlIGFzIGEgcmVtb3ZhbCwgYnV0IHRoZVxuXHRcdC8vIGFtb3VudCBvZiBleGNlcHRpb25zIHdvdWxkIGNvc3QgdG9vIG1hbnkgYnl0ZXMuIE9uIHRvcCBvZlxuXHRcdC8vIHRoYXQgb3RoZXIgZnJhbWV3b3JrcyBnZW5lcmFsbHkgc3RyaW5naWZ5IGBmYWxzZWAuXG5cblx0XHRpZiAodHlwZW9mIHZhbHVlID09ICdmdW5jdGlvbicpIHtcblx0XHRcdC8vIG5ldmVyIHNlcmlhbGl6ZSBmdW5jdGlvbnMgYXMgYXR0cmlidXRlIHZhbHVlc1xuXHRcdH0gZWxzZSBpZiAodmFsdWUgIT0gTlVMTCAmJiAodmFsdWUgIT09IGZhbHNlIHx8IG5hbWVbNF0gPT0gJy0nKSkge1xuXHRcdFx0ZG9tLnNldEF0dHJpYnV0ZShuYW1lLCBuYW1lID09ICdwb3BvdmVyJyAmJiB2YWx1ZSA9PSB0cnVlID8gJycgOiB2YWx1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGRvbS5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7XG5cdFx0fVxuXHR9XG59XG5cbi8qKlxuICogQ3JlYXRlIGFuIGV2ZW50IHByb3h5IGZ1bmN0aW9uLlxuICogQHBhcmFtIHtib29sZWFufSB1c2VDYXB0dXJlIElzIHRoZSBldmVudCBoYW5kbGVyIGZvciB0aGUgY2FwdHVyZSBwaGFzZS5cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUV2ZW50UHJveHkodXNlQ2FwdHVyZSkge1xuXHQvKipcblx0ICogUHJveHkgYW4gZXZlbnQgdG8gaG9va2VkIGV2ZW50IGhhbmRsZXJzXG5cdCAqIEBwYXJhbSB7aW1wb3J0KCcuLi9pbnRlcm5hbCcpLlByZWFjdEV2ZW50fSBlIFRoZSBldmVudCBvYmplY3QgZnJvbSB0aGUgYnJvd3NlclxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0cmV0dXJuIGZ1bmN0aW9uIChlKSB7XG5cdFx0aWYgKHRoaXMuX2xpc3RlbmVycykge1xuXHRcdFx0Y29uc3QgZXZlbnRIYW5kbGVyID0gdGhpcy5fbGlzdGVuZXJzW2UudHlwZSArIHVzZUNhcHR1cmVdO1xuXHRcdFx0aWYgKGUuX2Rpc3BhdGNoZWQgPT0gTlVMTCkge1xuXHRcdFx0XHRlLl9kaXNwYXRjaGVkID0gZXZlbnRDbG9jaysrO1xuXG5cdFx0XHRcdC8vIFdoZW4gYGUuX2Rpc3BhdGNoZWRgIGlzIHNtYWxsZXIgdGhhbiB0aGUgdGltZSB3aGVuIHRoZSB0YXJnZXRlZCBldmVudFxuXHRcdFx0XHQvLyBoYW5kbGVyIHdhcyBhdHRhY2hlZCB3ZSBrbm93IHdlIGhhdmUgYnViYmxlZCB1cCB0byBhbiBlbGVtZW50IHRoYXQgd2FzIGFkZGVkXG5cdFx0XHRcdC8vIGR1cmluZyBwYXRjaGluZyB0aGUgRE9NLlxuXHRcdFx0fSBlbHNlIGlmIChlLl9kaXNwYXRjaGVkIDwgZXZlbnRIYW5kbGVyLl9hdHRhY2hlZCkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZXZlbnRIYW5kbGVyKG9wdGlvbnMuZXZlbnQgPyBvcHRpb25zLmV2ZW50KGUpIDogZSk7XG5cdFx0fVxuXHR9O1xufVxuXG5jb25zdCBldmVudFByb3h5ID0gY3JlYXRlRXZlbnRQcm94eShmYWxzZSk7XG5jb25zdCBldmVudFByb3h5Q2FwdHVyZSA9IGNyZWF0ZUV2ZW50UHJveHkodHJ1ZSk7XG4iLCJpbXBvcnQgeyBlbnF1ZXVlUmVuZGVyIH0gZnJvbSAnLi9jb21wb25lbnQnO1xuaW1wb3J0IHsgTlVMTCB9IGZyb20gJy4vY29uc3RhbnRzJztcblxuZXhwb3J0IGxldCBpID0gMDtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbnRleHQoZGVmYXVsdFZhbHVlKSB7XG5cdGZ1bmN0aW9uIENvbnRleHQocHJvcHMpIHtcblx0XHRpZiAoIXRoaXMuZ2V0Q2hpbGRDb250ZXh0KSB7XG5cdFx0XHQvKiogQHR5cGUge1NldDxpbXBvcnQoJy4vaW50ZXJuYWwnKS5Db21wb25lbnQ+IHwgbnVsbH0gKi9cblx0XHRcdGxldCBzdWJzID0gbmV3IFNldCgpO1xuXHRcdFx0bGV0IGN0eCA9IHt9O1xuXHRcdFx0Y3R4W0NvbnRleHQuX2lkXSA9IHRoaXM7XG5cblx0XHRcdHRoaXMuZ2V0Q2hpbGRDb250ZXh0ID0gKCkgPT4gY3R4O1xuXG5cdFx0XHR0aGlzLmNvbXBvbmVudFdpbGxVbm1vdW50ID0gKCkgPT4ge1xuXHRcdFx0XHRzdWJzID0gTlVMTDtcblx0XHRcdH07XG5cblx0XHRcdHRoaXMuc2hvdWxkQ29tcG9uZW50VXBkYXRlID0gZnVuY3Rpb24gKF9wcm9wcykge1xuXHRcdFx0XHQvLyBAdHMtZXhwZWN0LWVycm9yIGV2ZW5cblx0XHRcdFx0aWYgKHRoaXMucHJvcHMudmFsdWUgIT0gX3Byb3BzLnZhbHVlKSB7XG5cdFx0XHRcdFx0c3Vicy5mb3JFYWNoKGMgPT4ge1xuXHRcdFx0XHRcdFx0Yy5fZm9yY2UgPSB0cnVlO1xuXHRcdFx0XHRcdFx0ZW5xdWV1ZVJlbmRlcihjKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fTtcblxuXHRcdFx0dGhpcy5zdWIgPSBjID0+IHtcblx0XHRcdFx0c3Vicy5hZGQoYyk7XG5cdFx0XHRcdGxldCBvbGQgPSBjLmNvbXBvbmVudFdpbGxVbm1vdW50O1xuXHRcdFx0XHRjLmNvbXBvbmVudFdpbGxVbm1vdW50ID0gKCkgPT4ge1xuXHRcdFx0XHRcdGlmIChzdWJzKSB7XG5cdFx0XHRcdFx0XHRzdWJzLmRlbGV0ZShjKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKG9sZCkgb2xkLmNhbGwoYyk7XG5cdFx0XHRcdH07XG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdHJldHVybiBwcm9wcy5jaGlsZHJlbjtcblx0fVxuXG5cdENvbnRleHQuX2lkID0gJ19fY0MnICsgaSsrO1xuXHRDb250ZXh0Ll9kZWZhdWx0VmFsdWUgPSBkZWZhdWx0VmFsdWU7XG5cblx0LyoqIEB0eXBlIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5GdW5jdGlvbkNvbXBvbmVudH0gKi9cblx0Q29udGV4dC5Db25zdW1lciA9IChwcm9wcywgY29udGV4dFZhbHVlKSA9PiB7XG5cdFx0cmV0dXJuIHByb3BzLmNoaWxkcmVuKGNvbnRleHRWYWx1ZSk7XG5cdH07XG5cblx0Ly8gd2UgY291bGQgYWxzbyBnZXQgcmlkIG9mIF9jb250ZXh0UmVmIGVudGlyZWx5XG5cdENvbnRleHQuUHJvdmlkZXIgPVxuXHRcdENvbnRleHQuX2NvbnRleHRSZWYgPVxuXHRcdENvbnRleHQuQ29uc3VtZXIuY29udGV4dFR5cGUgPVxuXHRcdFx0Q29udGV4dDtcblxuXHRyZXR1cm4gQ29udGV4dDtcbn1cbiIsImltcG9ydCB7IGRpZmYsIHVubW91bnQsIGFwcGx5UmVmIH0gZnJvbSAnLi9pbmRleCc7XG5pbXBvcnQgeyBjcmVhdGVWTm9kZSwgRnJhZ21lbnQgfSBmcm9tICcuLi9jcmVhdGUtZWxlbWVudCc7XG5pbXBvcnQge1xuXHRFTVBUWV9PQkosXG5cdEVNUFRZX0FSUixcblx0SU5TRVJUX1ZOT0RFLFxuXHRNQVRDSEVELFxuXHRVTkRFRklORUQsXG5cdE5VTExcbn0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IGlzQXJyYXkgfSBmcm9tICcuLi91dGlsJztcbmltcG9ydCB7IGdldERvbVNpYmxpbmcgfSBmcm9tICcuLi9jb21wb25lbnQnO1xuXG4vKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uL2ludGVybmFsJykuQ29tcG9uZW50Q2hpbGRyZW59IENvbXBvbmVudENoaWxkcmVuXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi9pbnRlcm5hbCcpLkNvbXBvbmVudH0gQ29tcG9uZW50XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi9pbnRlcm5hbCcpLlByZWFjdEVsZW1lbnR9IFByZWFjdEVsZW1lbnRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uL2ludGVybmFsJykuVk5vZGV9IFZOb2RlXG4gKi9cblxuLyoqXG4gKiBEaWZmIHRoZSBjaGlsZHJlbiBvZiBhIHZpcnR1YWwgbm9kZVxuICogQHBhcmFtIHtQcmVhY3RFbGVtZW50fSBwYXJlbnREb20gVGhlIERPTSBlbGVtZW50IHdob3NlIGNoaWxkcmVuIGFyZSBiZWluZ1xuICogZGlmZmVkXG4gKiBAcGFyYW0ge0NvbXBvbmVudENoaWxkcmVuW119IHJlbmRlclJlc3VsdFxuICogQHBhcmFtIHtWTm9kZX0gbmV3UGFyZW50Vk5vZGUgVGhlIG5ldyB2aXJ0dWFsIG5vZGUgd2hvc2UgY2hpbGRyZW4gc2hvdWxkIGJlXG4gKiBkaWZmJ2VkIGFnYWluc3Qgb2xkUGFyZW50Vk5vZGVcbiAqIEBwYXJhbSB7Vk5vZGV9IG9sZFBhcmVudFZOb2RlIFRoZSBvbGQgdmlydHVhbCBub2RlIHdob3NlIGNoaWxkcmVuIHNob3VsZCBiZVxuICogZGlmZidlZCBhZ2FpbnN0IG5ld1BhcmVudFZOb2RlXG4gKiBAcGFyYW0ge29iamVjdH0gZ2xvYmFsQ29udGV4dCBUaGUgY3VycmVudCBjb250ZXh0IG9iamVjdCAtIG1vZGlmaWVkIGJ5XG4gKiBnZXRDaGlsZENvbnRleHRcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lc3BhY2UgQ3VycmVudCBuYW1lc3BhY2Ugb2YgdGhlIERPTSBub2RlIChIVE1MLCBTVkcsIG9yIE1hdGhNTClcbiAqIEBwYXJhbSB7QXJyYXk8UHJlYWN0RWxlbWVudD59IGV4Y2Vzc0RvbUNoaWxkcmVuXG4gKiBAcGFyYW0ge0FycmF5PENvbXBvbmVudD59IGNvbW1pdFF1ZXVlIExpc3Qgb2YgY29tcG9uZW50cyB3aGljaCBoYXZlIGNhbGxiYWNrc1xuICogdG8gaW52b2tlIGluIGNvbW1pdFJvb3RcbiAqIEBwYXJhbSB7UHJlYWN0RWxlbWVudH0gb2xkRG9tIFRoZSBjdXJyZW50IGF0dGFjaGVkIERPTSBlbGVtZW50IGFueSBuZXcgZG9tXG4gKiBlbGVtZW50cyBzaG91bGQgYmUgcGxhY2VkIGFyb3VuZC4gTGlrZWx5IGBudWxsYCBvbiBmaXJzdCByZW5kZXIgKGV4Y2VwdCB3aGVuXG4gKiBoeWRyYXRpbmcpLiBDYW4gYmUgYSBzaWJsaW5nIERPTSBlbGVtZW50IHdoZW4gZGlmZmluZyBGcmFnbWVudHMgdGhhdCBoYXZlXG4gKiBzaWJsaW5ncy4gSW4gbW9zdCBjYXNlcywgaXQgc3RhcnRzIG91dCBhcyBgb2xkQ2hpbGRyZW5bMF0uX2RvbWAuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGlzSHlkcmF0aW5nIFdoZXRoZXIgb3Igbm90IHdlIGFyZSBpbiBoeWRyYXRpb25cbiAqIEBwYXJhbSB7YW55W119IHJlZlF1ZXVlIGFuIGFycmF5IG9mIGVsZW1lbnRzIG5lZWRlZCB0byBpbnZva2UgcmVmc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZGlmZkNoaWxkcmVuKFxuXHRwYXJlbnREb20sXG5cdHJlbmRlclJlc3VsdCxcblx0bmV3UGFyZW50Vk5vZGUsXG5cdG9sZFBhcmVudFZOb2RlLFxuXHRnbG9iYWxDb250ZXh0LFxuXHRuYW1lc3BhY2UsXG5cdGV4Y2Vzc0RvbUNoaWxkcmVuLFxuXHRjb21taXRRdWV1ZSxcblx0b2xkRG9tLFxuXHRpc0h5ZHJhdGluZyxcblx0cmVmUXVldWVcbikge1xuXHRsZXQgaSxcblx0XHQvKiogQHR5cGUge1ZOb2RlfSAqL1xuXHRcdG9sZFZOb2RlLFxuXHRcdC8qKiBAdHlwZSB7Vk5vZGV9ICovXG5cdFx0Y2hpbGRWTm9kZSxcblx0XHQvKiogQHR5cGUge1ByZWFjdEVsZW1lbnR9ICovXG5cdFx0bmV3RG9tLFxuXHRcdC8qKiBAdHlwZSB7UHJlYWN0RWxlbWVudH0gKi9cblx0XHRmaXJzdENoaWxkRG9tO1xuXG5cdC8vIFRoaXMgaXMgYSBjb21wcmVzc2lvbiBvZiBvbGRQYXJlbnRWTm9kZSE9bnVsbCAmJiBvbGRQYXJlbnRWTm9kZSAhPSBFTVBUWV9PQkogJiYgb2xkUGFyZW50Vk5vZGUuX2NoaWxkcmVuIHx8IEVNUFRZX0FSUlxuXHQvLyBhcyBFTVBUWV9PQkouX2NoaWxkcmVuIHNob3VsZCBiZSBgdW5kZWZpbmVkYC5cblx0LyoqIEB0eXBlIHtWTm9kZVtdfSAqL1xuXHRsZXQgb2xkQ2hpbGRyZW4gPSAob2xkUGFyZW50Vk5vZGUgJiYgb2xkUGFyZW50Vk5vZGUuX2NoaWxkcmVuKSB8fCBFTVBUWV9BUlI7XG5cblx0bGV0IG5ld0NoaWxkcmVuTGVuZ3RoID0gcmVuZGVyUmVzdWx0Lmxlbmd0aDtcblxuXHRvbGREb20gPSBjb25zdHJ1Y3ROZXdDaGlsZHJlbkFycmF5KFxuXHRcdG5ld1BhcmVudFZOb2RlLFxuXHRcdHJlbmRlclJlc3VsdCxcblx0XHRvbGRDaGlsZHJlbixcblx0XHRvbGREb20sXG5cdFx0bmV3Q2hpbGRyZW5MZW5ndGhcblx0KTtcblxuXHRmb3IgKGkgPSAwOyBpIDwgbmV3Q2hpbGRyZW5MZW5ndGg7IGkrKykge1xuXHRcdGNoaWxkVk5vZGUgPSBuZXdQYXJlbnRWTm9kZS5fY2hpbGRyZW5baV07XG5cdFx0aWYgKGNoaWxkVk5vZGUgPT0gTlVMTCkgY29udGludWU7XG5cblx0XHQvLyBBdCB0aGlzIHBvaW50LCBjb25zdHJ1Y3ROZXdDaGlsZHJlbkFycmF5IGhhcyBhc3NpZ25lZCBfaW5kZXggdG8gYmUgdGhlXG5cdFx0Ly8gbWF0Y2hpbmdJbmRleCBmb3IgdGhpcyBWTm9kZSdzIG9sZFZOb2RlIChvciAtMSBpZiB0aGVyZSBpcyBubyBvbGRWTm9kZSkuXG5cdFx0aWYgKGNoaWxkVk5vZGUuX2luZGV4ID09IC0xKSB7XG5cdFx0XHRvbGRWTm9kZSA9IEVNUFRZX09CSjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0b2xkVk5vZGUgPSBvbGRDaGlsZHJlbltjaGlsZFZOb2RlLl9pbmRleF0gfHwgRU1QVFlfT0JKO1xuXHRcdH1cblxuXHRcdC8vIFVwZGF0ZSBjaGlsZFZOb2RlLl9pbmRleCB0byBpdHMgZmluYWwgaW5kZXhcblx0XHRjaGlsZFZOb2RlLl9pbmRleCA9IGk7XG5cblx0XHQvLyBNb3JwaCB0aGUgb2xkIGVsZW1lbnQgaW50byB0aGUgbmV3IG9uZSwgYnV0IGRvbid0IGFwcGVuZCBpdCB0byB0aGUgZG9tIHlldFxuXHRcdGxldCByZXN1bHQgPSBkaWZmKFxuXHRcdFx0cGFyZW50RG9tLFxuXHRcdFx0Y2hpbGRWTm9kZSxcblx0XHRcdG9sZFZOb2RlLFxuXHRcdFx0Z2xvYmFsQ29udGV4dCxcblx0XHRcdG5hbWVzcGFjZSxcblx0XHRcdGV4Y2Vzc0RvbUNoaWxkcmVuLFxuXHRcdFx0Y29tbWl0UXVldWUsXG5cdFx0XHRvbGREb20sXG5cdFx0XHRpc0h5ZHJhdGluZyxcblx0XHRcdHJlZlF1ZXVlXG5cdFx0KTtcblxuXHRcdC8vIEFkanVzdCBET00gbm9kZXNcblx0XHRuZXdEb20gPSBjaGlsZFZOb2RlLl9kb207XG5cdFx0aWYgKGNoaWxkVk5vZGUucmVmICYmIG9sZFZOb2RlLnJlZiAhPSBjaGlsZFZOb2RlLnJlZikge1xuXHRcdFx0aWYgKG9sZFZOb2RlLnJlZikge1xuXHRcdFx0XHRhcHBseVJlZihvbGRWTm9kZS5yZWYsIE5VTEwsIGNoaWxkVk5vZGUpO1xuXHRcdFx0fVxuXHRcdFx0cmVmUXVldWUucHVzaChcblx0XHRcdFx0Y2hpbGRWTm9kZS5yZWYsXG5cdFx0XHRcdGNoaWxkVk5vZGUuX2NvbXBvbmVudCB8fCBuZXdEb20sXG5cdFx0XHRcdGNoaWxkVk5vZGVcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0aWYgKGZpcnN0Q2hpbGREb20gPT0gTlVMTCAmJiBuZXdEb20gIT0gTlVMTCkge1xuXHRcdFx0Zmlyc3RDaGlsZERvbSA9IG5ld0RvbTtcblx0XHR9XG5cblx0XHRpZiAoXG5cdFx0XHRjaGlsZFZOb2RlLl9mbGFncyAmIElOU0VSVF9WTk9ERSB8fFxuXHRcdFx0b2xkVk5vZGUuX2NoaWxkcmVuID09PSBjaGlsZFZOb2RlLl9jaGlsZHJlblxuXHRcdCkge1xuXHRcdFx0b2xkRG9tID0gaW5zZXJ0KGNoaWxkVk5vZGUsIG9sZERvbSwgcGFyZW50RG9tKTtcblx0XHR9IGVsc2UgaWYgKHR5cGVvZiBjaGlsZFZOb2RlLnR5cGUgPT0gJ2Z1bmN0aW9uJyAmJiByZXN1bHQgIT09IFVOREVGSU5FRCkge1xuXHRcdFx0b2xkRG9tID0gcmVzdWx0O1xuXHRcdH0gZWxzZSBpZiAobmV3RG9tKSB7XG5cdFx0XHRvbGREb20gPSBuZXdEb20ubmV4dFNpYmxpbmc7XG5cdFx0fVxuXG5cdFx0Ly8gVW5zZXQgZGlmZmluZyBmbGFnc1xuXHRcdGNoaWxkVk5vZGUuX2ZsYWdzICY9IH4oSU5TRVJUX1ZOT0RFIHwgTUFUQ0hFRCk7XG5cdH1cblxuXHRuZXdQYXJlbnRWTm9kZS5fZG9tID0gZmlyc3RDaGlsZERvbTtcblxuXHRyZXR1cm4gb2xkRG9tO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7Vk5vZGV9IG5ld1BhcmVudFZOb2RlXG4gKiBAcGFyYW0ge0NvbXBvbmVudENoaWxkcmVuW119IHJlbmRlclJlc3VsdFxuICogQHBhcmFtIHtWTm9kZVtdfSBvbGRDaGlsZHJlblxuICovXG5mdW5jdGlvbiBjb25zdHJ1Y3ROZXdDaGlsZHJlbkFycmF5KFxuXHRuZXdQYXJlbnRWTm9kZSxcblx0cmVuZGVyUmVzdWx0LFxuXHRvbGRDaGlsZHJlbixcblx0b2xkRG9tLFxuXHRuZXdDaGlsZHJlbkxlbmd0aFxuKSB7XG5cdC8qKiBAdHlwZSB7bnVtYmVyfSAqL1xuXHRsZXQgaTtcblx0LyoqIEB0eXBlIHtWTm9kZX0gKi9cblx0bGV0IGNoaWxkVk5vZGU7XG5cdC8qKiBAdHlwZSB7Vk5vZGV9ICovXG5cdGxldCBvbGRWTm9kZTtcblxuXHRsZXQgb2xkQ2hpbGRyZW5MZW5ndGggPSBvbGRDaGlsZHJlbi5sZW5ndGgsXG5cdFx0cmVtYWluaW5nT2xkQ2hpbGRyZW4gPSBvbGRDaGlsZHJlbkxlbmd0aDtcblxuXHRsZXQgc2tldyA9IDA7XG5cblx0bmV3UGFyZW50Vk5vZGUuX2NoaWxkcmVuID0gbmV3IEFycmF5KG5ld0NoaWxkcmVuTGVuZ3RoKTtcblx0Zm9yIChpID0gMDsgaSA8IG5ld0NoaWxkcmVuTGVuZ3RoOyBpKyspIHtcblx0XHQvLyBAdHMtZXhwZWN0LWVycm9yIFdlIGFyZSByZXVzaW5nIHRoZSBjaGlsZFZOb2RlIHZhcmlhYmxlIHRvIGhvbGQgYm90aCB0aGVcblx0XHQvLyBwcmUgYW5kIHBvc3Qgbm9ybWFsaXplZCBjaGlsZFZOb2RlXG5cdFx0Y2hpbGRWTm9kZSA9IHJlbmRlclJlc3VsdFtpXTtcblxuXHRcdGlmIChcblx0XHRcdGNoaWxkVk5vZGUgPT0gTlVMTCB8fFxuXHRcdFx0dHlwZW9mIGNoaWxkVk5vZGUgPT0gJ2Jvb2xlYW4nIHx8XG5cdFx0XHR0eXBlb2YgY2hpbGRWTm9kZSA9PSAnZnVuY3Rpb24nXG5cdFx0KSB7XG5cdFx0XHRuZXdQYXJlbnRWTm9kZS5fY2hpbGRyZW5baV0gPSBOVUxMO1xuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXHRcdC8vIElmIHRoaXMgbmV3Vk5vZGUgaXMgYmVpbmcgcmV1c2VkIChlLmcuIDxkaXY+e3JldXNlfXtyZXVzZX08L2Rpdj4pIGluIHRoZSBzYW1lIGRpZmYsXG5cdFx0Ly8gb3Igd2UgYXJlIHJlbmRlcmluZyBhIGNvbXBvbmVudCAoZS5nLiBzZXRTdGF0ZSkgY29weSB0aGUgb2xkVk5vZGVzIHNvIGl0IGNhbiBoYXZlXG5cdFx0Ly8gaXQncyBvd24gRE9NICYgZXRjLiBwb2ludGVyc1xuXHRcdGVsc2UgaWYgKFxuXHRcdFx0dHlwZW9mIGNoaWxkVk5vZGUgPT0gJ3N0cmluZycgfHxcblx0XHRcdHR5cGVvZiBjaGlsZFZOb2RlID09ICdudW1iZXInIHx8XG5cdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdmFsaWQtdHlwZW9mXG5cdFx0XHR0eXBlb2YgY2hpbGRWTm9kZSA9PSAnYmlnaW50JyB8fFxuXHRcdFx0Y2hpbGRWTm9kZS5jb25zdHJ1Y3RvciA9PSBTdHJpbmdcblx0XHQpIHtcblx0XHRcdGNoaWxkVk5vZGUgPSBuZXdQYXJlbnRWTm9kZS5fY2hpbGRyZW5baV0gPSBjcmVhdGVWTm9kZShcblx0XHRcdFx0TlVMTCxcblx0XHRcdFx0Y2hpbGRWTm9kZSxcblx0XHRcdFx0TlVMTCxcblx0XHRcdFx0TlVMTCxcblx0XHRcdFx0TlVMTFxuXHRcdFx0KTtcblx0XHR9IGVsc2UgaWYgKGlzQXJyYXkoY2hpbGRWTm9kZSkpIHtcblx0XHRcdGNoaWxkVk5vZGUgPSBuZXdQYXJlbnRWTm9kZS5fY2hpbGRyZW5baV0gPSBjcmVhdGVWTm9kZShcblx0XHRcdFx0RnJhZ21lbnQsXG5cdFx0XHRcdHsgY2hpbGRyZW46IGNoaWxkVk5vZGUgfSxcblx0XHRcdFx0TlVMTCxcblx0XHRcdFx0TlVMTCxcblx0XHRcdFx0TlVMTFxuXHRcdFx0KTtcblx0XHR9IGVsc2UgaWYgKGNoaWxkVk5vZGUuY29uc3RydWN0b3IgPT0gVU5ERUZJTkVEICYmIGNoaWxkVk5vZGUuX2RlcHRoID4gMCkge1xuXHRcdFx0Ly8gVk5vZGUgaXMgYWxyZWFkeSBpbiB1c2UsIGNsb25lIGl0LiBUaGlzIGNhbiBoYXBwZW4gaW4gdGhlIGZvbGxvd2luZ1xuXHRcdFx0Ly8gc2NlbmFyaW86XG5cdFx0XHQvLyAgIGNvbnN0IHJldXNlID0gPGRpdiAvPlxuXHRcdFx0Ly8gICA8ZGl2PntyZXVzZX08c3BhbiAvPntyZXVzZX08L2Rpdj5cblx0XHRcdGNoaWxkVk5vZGUgPSBuZXdQYXJlbnRWTm9kZS5fY2hpbGRyZW5baV0gPSBjcmVhdGVWTm9kZShcblx0XHRcdFx0Y2hpbGRWTm9kZS50eXBlLFxuXHRcdFx0XHRjaGlsZFZOb2RlLnByb3BzLFxuXHRcdFx0XHRjaGlsZFZOb2RlLmtleSxcblx0XHRcdFx0Y2hpbGRWTm9kZS5yZWYgPyBjaGlsZFZOb2RlLnJlZiA6IE5VTEwsXG5cdFx0XHRcdGNoaWxkVk5vZGUuX29yaWdpbmFsXG5cdFx0XHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjaGlsZFZOb2RlID0gbmV3UGFyZW50Vk5vZGUuX2NoaWxkcmVuW2ldID0gY2hpbGRWTm9kZTtcblx0XHR9XG5cblx0XHRjb25zdCBza2V3ZWRJbmRleCA9IGkgKyBza2V3O1xuXHRcdGNoaWxkVk5vZGUuX3BhcmVudCA9IG5ld1BhcmVudFZOb2RlO1xuXHRcdGNoaWxkVk5vZGUuX2RlcHRoID0gbmV3UGFyZW50Vk5vZGUuX2RlcHRoICsgMTtcblxuXHRcdC8vIFRlbXBvcmFyaWx5IHN0b3JlIHRoZSBtYXRjaGluZ0luZGV4IG9uIHRoZSBfaW5kZXggcHJvcGVydHkgc28gd2UgY2FuIHB1bGxcblx0XHQvLyBvdXQgdGhlIG9sZFZOb2RlIGluIGRpZmZDaGlsZHJlbi4gV2UnbGwgb3ZlcnJpZGUgdGhpcyB0byB0aGUgVk5vZGUnc1xuXHRcdC8vIGZpbmFsIGluZGV4IGFmdGVyIHVzaW5nIHRoaXMgcHJvcGVydHkgdG8gZ2V0IHRoZSBvbGRWTm9kZVxuXHRcdGNvbnN0IG1hdGNoaW5nSW5kZXggPSAoY2hpbGRWTm9kZS5faW5kZXggPSBmaW5kTWF0Y2hpbmdJbmRleChcblx0XHRcdGNoaWxkVk5vZGUsXG5cdFx0XHRvbGRDaGlsZHJlbixcblx0XHRcdHNrZXdlZEluZGV4LFxuXHRcdFx0cmVtYWluaW5nT2xkQ2hpbGRyZW5cblx0XHQpKTtcblxuXHRcdG9sZFZOb2RlID0gTlVMTDtcblx0XHRpZiAobWF0Y2hpbmdJbmRleCAhPSAtMSkge1xuXHRcdFx0b2xkVk5vZGUgPSBvbGRDaGlsZHJlblttYXRjaGluZ0luZGV4XTtcblx0XHRcdHJlbWFpbmluZ09sZENoaWxkcmVuLS07XG5cdFx0XHRpZiAob2xkVk5vZGUpIHtcblx0XHRcdFx0b2xkVk5vZGUuX2ZsYWdzIHw9IE1BVENIRUQ7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gSGVyZSwgd2UgZGVmaW5lIGlzTW91bnRpbmcgZm9yIHRoZSBwdXJwb3NlcyBvZiB0aGUgc2tldyBkaWZmaW5nXG5cdFx0Ly8gYWxnb3JpdGhtLiBOb2RlcyB0aGF0IGFyZSB1bnN1c3BlbmRpbmcgYXJlIGNvbnNpZGVyZWQgbW91bnRpbmcgYW5kIHdlIGRldGVjdFxuXHRcdC8vIHRoaXMgYnkgY2hlY2tpbmcgaWYgb2xkVk5vZGUuX29yaWdpbmFsID09IG51bGxcblx0XHRjb25zdCBpc01vdW50aW5nID0gb2xkVk5vZGUgPT0gTlVMTCB8fCBvbGRWTm9kZS5fb3JpZ2luYWwgPT0gTlVMTDtcblxuXHRcdGlmIChpc01vdW50aW5nKSB7XG5cdFx0XHRpZiAobWF0Y2hpbmdJbmRleCA9PSAtMSkge1xuXHRcdFx0XHQvLyBXaGVuIHRoZSBhcnJheSBvZiBjaGlsZHJlbiBpcyBncm93aW5nIHdlIG5lZWQgdG8gZGVjcmVhc2UgdGhlIHNrZXdcblx0XHRcdFx0Ly8gYXMgd2UgYXJlIGFkZGluZyBhIG5ldyBlbGVtZW50IHRvIHRoZSBhcnJheS5cblx0XHRcdFx0Ly8gRXhhbXBsZTpcblx0XHRcdFx0Ly8gWzEsIDIsIDNdIC0tPiBbMCwgMSwgMiwgM11cblx0XHRcdFx0Ly8gb2xkQ2hpbGRyZW4gICBuZXdDaGlsZHJlblxuXHRcdFx0XHQvL1xuXHRcdFx0XHQvLyBUaGUgbmV3IGVsZW1lbnQgaXMgYXQgaW5kZXggMCwgc28gb3VyIHNrZXcgaXMgMCxcblx0XHRcdFx0Ly8gd2UgbmVlZCB0byBkZWNyZWFzZSB0aGUgc2tldyBhcyB3ZSBhcmUgYWRkaW5nIGEgbmV3IGVsZW1lbnQuXG5cdFx0XHRcdC8vIFRoZSBkZWNyZWFzZSB3aWxsIGNhdXNlIHVzIHRvIGNvbXBhcmUgdGhlIGVsZW1lbnQgYXQgcG9zaXRpb24gMVxuXHRcdFx0XHQvLyB3aXRoIHZhbHVlIDEgd2l0aCB0aGUgZWxlbWVudCBhdCBwb3NpdGlvbiAwIHdpdGggdmFsdWUgMC5cblx0XHRcdFx0Ly9cblx0XHRcdFx0Ly8gQSBsaW5lYXIgY29uY2VwdCBpcyBhcHBsaWVkIHdoZW4gdGhlIGFycmF5IGlzIHNocmlua2luZyxcblx0XHRcdFx0Ly8gaWYgdGhlIGxlbmd0aCBpcyB1bmNoYW5nZWQgd2UgY2FuIGFzc3VtZSB0aGF0IG5vIHNrZXdcblx0XHRcdFx0Ly8gY2hhbmdlcyBhcmUgbmVlZGVkLlxuXHRcdFx0XHRpZiAobmV3Q2hpbGRyZW5MZW5ndGggPiBvbGRDaGlsZHJlbkxlbmd0aCkge1xuXHRcdFx0XHRcdHNrZXctLTtcblx0XHRcdFx0fSBlbHNlIGlmIChuZXdDaGlsZHJlbkxlbmd0aCA8IG9sZENoaWxkcmVuTGVuZ3RoKSB7XG5cdFx0XHRcdFx0c2tldysrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIElmIHdlIGFyZSBtb3VudGluZyBhIERPTSBWTm9kZSwgbWFyayBpdCBmb3IgaW5zZXJ0aW9uXG5cdFx0XHRpZiAodHlwZW9mIGNoaWxkVk5vZGUudHlwZSAhPSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdGNoaWxkVk5vZGUuX2ZsYWdzIHw9IElOU0VSVF9WTk9ERTtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKG1hdGNoaW5nSW5kZXggIT0gc2tld2VkSW5kZXgpIHtcblx0XHRcdC8vIFdoZW4gd2UgbW92ZSBlbGVtZW50cyBhcm91bmQgaS5lLiBbMCwgMSwgMl0gLS0+IFsxLCAwLCAyXVxuXHRcdFx0Ly8gLS0+IHdlIGRpZmYgMSwgd2UgZmluZCBpdCBhdCBwb3NpdGlvbiAxIHdoaWxlIG91ciBza2V3ZWQgaW5kZXggaXMgMCBhbmQgb3VyIHNrZXcgaXMgMFxuXHRcdFx0Ly8gICAgIHdlIHNldCB0aGUgc2tldyB0byAxIGFzIHdlIGZvdW5kIGFuIG9mZnNldC5cblx0XHRcdC8vIC0tPiB3ZSBkaWZmIDAsIHdlIGZpbmQgaXQgYXQgcG9zaXRpb24gMCB3aGlsZSBvdXIgc2tld2VkIGluZGV4IGlzIGF0IDIgYW5kIG91ciBza2V3IGlzIDFcblx0XHRcdC8vICAgICB0aGlzIG1ha2VzIHVzIGluY3JlYXNlIHRoZSBza2V3IGFnYWluLlxuXHRcdFx0Ly8gLS0+IHdlIGRpZmYgMiwgd2UgZmluZCBpdCBhdCBwb3NpdGlvbiAyIHdoaWxlIG91ciBza2V3ZWQgaW5kZXggaXMgYXQgNCBhbmQgb3VyIHNrZXcgaXMgMlxuXHRcdFx0Ly9cblx0XHRcdC8vIHRoaXMgYmVjb21lcyBhbiBvcHRpbWl6YXRpb24gcXVlc3Rpb24gd2hlcmUgY3VycmVudGx5IHdlIHNlZSBhIDEgZWxlbWVudCBvZmZzZXQgYXMgYW4gaW5zZXJ0aW9uXG5cdFx0XHQvLyBvciBkZWxldGlvbiBpLmUuIHdlIG9wdGltaXplIGZvciBbMCwgMSwgMl0gLS0+IFs5LCAwLCAxLCAyXVxuXHRcdFx0Ly8gd2hpbGUgYSBtb3JlIHRoYW4gMSBvZmZzZXQgd2Ugc2VlIGFzIGEgc3dhcC5cblx0XHRcdC8vIFdlIGNvdWxkIHByb2JhYmx5IGJ1aWxkIGhldXJpc3RpY3MgZm9yIGhhdmluZyBhbiBvcHRpbWl6ZWQgY291cnNlIG9mIGFjdGlvbiBoZXJlIGFzIHdlbGwsIGJ1dFxuXHRcdFx0Ly8gbWlnaHQgZ28gYXQgdGhlIGNvc3Qgb2Ygc29tZSBieXRlcy5cblx0XHRcdC8vXG5cdFx0XHQvLyBJZiB3ZSB3YW50ZWQgdG8gb3B0aW1pemUgZm9yIGkuZS4gb25seSBzd2FwcyB3ZSdkIGp1c3QgZG8gdGhlIGxhc3QgdHdvIGNvZGUtYnJhbmNoZXMgYW5kIGhhdmVcblx0XHRcdC8vIG9ubHkgdGhlIGZpcnN0IGl0ZW0gYmUgYSByZS1zY291dGluZyBhbmQgYWxsIHRoZSBvdGhlcnMgZmFsbCBpbiB0aGVpciBza2V3ZWQgY291bnRlci1wYXJ0LlxuXHRcdFx0Ly8gV2UgY291bGQgYWxzbyBmdXJ0aGVyIG9wdGltaXplIGZvciBzd2Fwc1xuXHRcdFx0aWYgKG1hdGNoaW5nSW5kZXggPT0gc2tld2VkSW5kZXggLSAxKSB7XG5cdFx0XHRcdHNrZXctLTtcblx0XHRcdH0gZWxzZSBpZiAobWF0Y2hpbmdJbmRleCA9PSBza2V3ZWRJbmRleCArIDEpIHtcblx0XHRcdFx0c2tldysrO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aWYgKG1hdGNoaW5nSW5kZXggPiBza2V3ZWRJbmRleCkge1xuXHRcdFx0XHRcdHNrZXctLTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRza2V3Kys7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBNb3ZlIHRoaXMgVk5vZGUncyBET00gaWYgdGhlIG9yaWdpbmFsIGluZGV4IChtYXRjaGluZ0luZGV4KSBkb2Vzbid0XG5cdFx0XHRcdC8vIG1hdGNoIHRoZSBuZXcgc2tldyBpbmRleCAoaSArIG5ldyBza2V3KVxuXHRcdFx0XHQvLyBJbiB0aGUgZm9ybWVyIHR3byBicmFuY2hlcyB3ZSBrbm93IHRoYXQgaXQgbWF0Y2hlcyBhZnRlciBza2V3aW5nXG5cdFx0XHRcdGNoaWxkVk5vZGUuX2ZsYWdzIHw9IElOU0VSVF9WTk9ERTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBSZW1vdmUgcmVtYWluaW5nIG9sZENoaWxkcmVuIGlmIHRoZXJlIGFyZSBhbnkuIExvb3AgZm9yd2FyZHMgc28gdGhhdCBhcyB3ZVxuXHQvLyB1bm1vdW50IERPTSBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIG9sZENoaWxkcmVuLCB3ZSBjYW4gYWRqdXN0IG9sZERvbSB0b1xuXHQvLyBwb2ludCB0byB0aGUgbmV4dCBjaGlsZCwgd2hpY2ggbmVlZHMgdG8gYmUgdGhlIGZpcnN0IERPTSBub2RlIHRoYXQgd29uJ3QgYmVcblx0Ly8gdW5tb3VudGVkLlxuXHRpZiAocmVtYWluaW5nT2xkQ2hpbGRyZW4pIHtcblx0XHRmb3IgKGkgPSAwOyBpIDwgb2xkQ2hpbGRyZW5MZW5ndGg7IGkrKykge1xuXHRcdFx0b2xkVk5vZGUgPSBvbGRDaGlsZHJlbltpXTtcblx0XHRcdGlmIChvbGRWTm9kZSAhPSBOVUxMICYmIChvbGRWTm9kZS5fZmxhZ3MgJiBNQVRDSEVEKSA9PSAwKSB7XG5cdFx0XHRcdGlmIChvbGRWTm9kZS5fZG9tID09IG9sZERvbSkge1xuXHRcdFx0XHRcdG9sZERvbSA9IGdldERvbVNpYmxpbmcob2xkVk5vZGUpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0dW5tb3VudChvbGRWTm9kZSwgb2xkVk5vZGUpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiBvbGREb207XG59XG5cbi8qKlxuICogQHBhcmFtIHtWTm9kZX0gcGFyZW50Vk5vZGVcbiAqIEBwYXJhbSB7UHJlYWN0RWxlbWVudH0gb2xkRG9tXG4gKiBAcGFyYW0ge1ByZWFjdEVsZW1lbnR9IHBhcmVudERvbVxuICogQHJldHVybnMge1ByZWFjdEVsZW1lbnR9XG4gKi9cbmZ1bmN0aW9uIGluc2VydChwYXJlbnRWTm9kZSwgb2xkRG9tLCBwYXJlbnREb20pIHtcblx0Ly8gTm90ZTogVk5vZGVzIGluIG5lc3RlZCBzdXNwZW5kZWQgdHJlZXMgbWF5IGJlIG1pc3NpbmcgX2NoaWxkcmVuLlxuXG5cdGlmICh0eXBlb2YgcGFyZW50Vk5vZGUudHlwZSA9PSAnZnVuY3Rpb24nKSB7XG5cdFx0bGV0IGNoaWxkcmVuID0gcGFyZW50Vk5vZGUuX2NoaWxkcmVuO1xuXHRcdGZvciAobGV0IGkgPSAwOyBjaGlsZHJlbiAmJiBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcblx0XHRcdGlmIChjaGlsZHJlbltpXSkge1xuXHRcdFx0XHQvLyBJZiB3ZSBlbnRlciB0aGlzIGNvZGUgcGF0aCBvbiBzQ1UgYmFpbG91dCwgd2hlcmUgd2UgY29weVxuXHRcdFx0XHQvLyBvbGRWTm9kZS5fY2hpbGRyZW4gdG8gbmV3Vk5vZGUuX2NoaWxkcmVuLCB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgb2xkXG5cdFx0XHRcdC8vIGNoaWxkcmVuJ3MgX3BhcmVudCBwb2ludGVyIHRvIHBvaW50IHRvIHRoZSBuZXdWTm9kZSAocGFyZW50Vk5vZGVcblx0XHRcdFx0Ly8gaGVyZSkuXG5cdFx0XHRcdGNoaWxkcmVuW2ldLl9wYXJlbnQgPSBwYXJlbnRWTm9kZTtcblx0XHRcdFx0b2xkRG9tID0gaW5zZXJ0KGNoaWxkcmVuW2ldLCBvbGREb20sIHBhcmVudERvbSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG9sZERvbTtcblx0fSBlbHNlIGlmIChwYXJlbnRWTm9kZS5fZG9tICE9IG9sZERvbSkge1xuXHRcdGlmIChvbGREb20gJiYgcGFyZW50Vk5vZGUudHlwZSAmJiAhcGFyZW50RG9tLmNvbnRhaW5zKG9sZERvbSkpIHtcblx0XHRcdG9sZERvbSA9IGdldERvbVNpYmxpbmcocGFyZW50Vk5vZGUpO1xuXHRcdH1cblx0XHRwYXJlbnREb20uaW5zZXJ0QmVmb3JlKHBhcmVudFZOb2RlLl9kb20sIG9sZERvbSB8fCBOVUxMKTtcblx0XHRvbGREb20gPSBwYXJlbnRWTm9kZS5fZG9tO1xuXHR9XG5cblx0ZG8ge1xuXHRcdG9sZERvbSA9IG9sZERvbSAmJiBvbGREb20ubmV4dFNpYmxpbmc7XG5cdH0gd2hpbGUgKG9sZERvbSAhPSBOVUxMICYmIG9sZERvbS5ub2RlVHlwZSA9PSA4KTtcblxuXHRyZXR1cm4gb2xkRG9tO1xufVxuXG4vKipcbiAqIEZsYXR0ZW4gYW5kIGxvb3AgdGhyb3VnaCB0aGUgY2hpbGRyZW4gb2YgYSB2aXJ0dWFsIG5vZGVcbiAqIEBwYXJhbSB7Q29tcG9uZW50Q2hpbGRyZW59IGNoaWxkcmVuIFRoZSB1bmZsYXR0ZW5lZCBjaGlsZHJlbiBvZiBhIHZpcnR1YWxcbiAqIG5vZGVcbiAqIEByZXR1cm5zIHtWTm9kZVtdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9DaGlsZEFycmF5KGNoaWxkcmVuLCBvdXQpIHtcblx0b3V0ID0gb3V0IHx8IFtdO1xuXHRpZiAoY2hpbGRyZW4gPT0gTlVMTCB8fCB0eXBlb2YgY2hpbGRyZW4gPT0gJ2Jvb2xlYW4nKSB7XG5cdH0gZWxzZSBpZiAoaXNBcnJheShjaGlsZHJlbikpIHtcblx0XHRjaGlsZHJlbi5zb21lKGNoaWxkID0+IHtcblx0XHRcdHRvQ2hpbGRBcnJheShjaGlsZCwgb3V0KTtcblx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHRvdXQucHVzaChjaGlsZHJlbik7XG5cdH1cblx0cmV0dXJuIG91dDtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge1ZOb2RlfSBjaGlsZFZOb2RlXG4gKiBAcGFyYW0ge1ZOb2RlW119IG9sZENoaWxkcmVuXG4gKiBAcGFyYW0ge251bWJlcn0gc2tld2VkSW5kZXhcbiAqIEBwYXJhbSB7bnVtYmVyfSByZW1haW5pbmdPbGRDaGlsZHJlblxuICogQHJldHVybnMge251bWJlcn1cbiAqL1xuZnVuY3Rpb24gZmluZE1hdGNoaW5nSW5kZXgoXG5cdGNoaWxkVk5vZGUsXG5cdG9sZENoaWxkcmVuLFxuXHRza2V3ZWRJbmRleCxcblx0cmVtYWluaW5nT2xkQ2hpbGRyZW5cbikge1xuXHRjb25zdCBrZXkgPSBjaGlsZFZOb2RlLmtleTtcblx0Y29uc3QgdHlwZSA9IGNoaWxkVk5vZGUudHlwZTtcblx0bGV0IG9sZFZOb2RlID0gb2xkQ2hpbGRyZW5bc2tld2VkSW5kZXhdO1xuXG5cdC8vIFdlIG9ubHkgbmVlZCB0byBwZXJmb3JtIGEgc2VhcmNoIGlmIHRoZXJlIGFyZSBtb3JlIGNoaWxkcmVuXG5cdC8vIChyZW1haW5pbmdPbGRDaGlsZHJlbikgdG8gc2VhcmNoLiBIb3dldmVyLCBpZiB0aGUgb2xkVk5vZGUgd2UganVzdCBsb29rZWRcblx0Ly8gYXQgc2tld2VkSW5kZXggd2FzIG5vdCBhbHJlYWR5IHVzZWQgaW4gdGhpcyBkaWZmLCB0aGVuIHRoZXJlIG11c3QgYmUgYXRcblx0Ly8gbGVhc3QgMSBvdGhlciAoc28gZ3JlYXRlciB0aGFuIDEpIHJlbWFpbmluZ09sZENoaWxkcmVuIHRvIGF0dGVtcHQgdG8gbWF0Y2hcblx0Ly8gYWdhaW5zdC4gU28gdGhlIGZvbGxvd2luZyBjb25kaXRpb24gY2hlY2tzIHRoYXQgZW5zdXJpbmdcblx0Ly8gcmVtYWluaW5nT2xkQ2hpbGRyZW4gPiAxIGlmIHRoZSBvbGRWTm9kZSBpcyBub3QgYWxyZWFkeSB1c2VkL21hdGNoZWQuIEVsc2Vcblx0Ly8gaWYgdGhlIG9sZFZOb2RlIHdhcyBudWxsIG9yIG1hdGNoZWQsIHRoZW4gdGhlcmUgY291bGQgbmVlZHMgdG8gYmUgYXQgbGVhc3Rcblx0Ly8gMSAoYWthIGByZW1haW5pbmdPbGRDaGlsZHJlbiA+IDBgKSBjaGlsZHJlbiB0byBmaW5kIGFuZCBjb21wYXJlIGFnYWluc3QuXG5cdC8vXG5cdC8vIElmIHRoZXJlIGlzIGFuIHVua2V5ZWQgZnVuY3Rpb25hbCBWTm9kZSwgdGhhdCBpc24ndCBhIGJ1aWx0LWluIGxpa2Ugb3VyIEZyYWdtZW50LFxuXHQvLyB3ZSBzaG91bGQgbm90IHNlYXJjaCBhcyB3ZSByaXNrIHJlLXVzaW5nIHN0YXRlIG9mIGFuIHVucmVsYXRlZCBWTm9kZS4gKHJldmVydGVkIGZvciBub3cpXG5cdGxldCBzaG91bGRTZWFyY2ggPVxuXHRcdC8vICh0eXBlb2YgdHlwZSAhPSAnZnVuY3Rpb24nIHx8IHR5cGUgPT09IEZyYWdtZW50IHx8IGtleSkgJiZcblx0XHRyZW1haW5pbmdPbGRDaGlsZHJlbiA+XG5cdFx0KG9sZFZOb2RlICE9IE5VTEwgJiYgKG9sZFZOb2RlLl9mbGFncyAmIE1BVENIRUQpID09IDAgPyAxIDogMCk7XG5cblx0aWYgKFxuXHRcdChvbGRWTm9kZSA9PT0gTlVMTCAmJiBjaGlsZFZOb2RlLmtleSA9PSBudWxsKSB8fFxuXHRcdChvbGRWTm9kZSAmJlxuXHRcdFx0a2V5ID09IG9sZFZOb2RlLmtleSAmJlxuXHRcdFx0dHlwZSA9PSBvbGRWTm9kZS50eXBlICYmXG5cdFx0XHQob2xkVk5vZGUuX2ZsYWdzICYgTUFUQ0hFRCkgPT0gMClcblx0KSB7XG5cdFx0cmV0dXJuIHNrZXdlZEluZGV4O1xuXHR9IGVsc2UgaWYgKHNob3VsZFNlYXJjaCkge1xuXHRcdGxldCB4ID0gc2tld2VkSW5kZXggLSAxO1xuXHRcdGxldCB5ID0gc2tld2VkSW5kZXggKyAxO1xuXHRcdHdoaWxlICh4ID49IDAgfHwgeSA8IG9sZENoaWxkcmVuLmxlbmd0aCkge1xuXHRcdFx0aWYgKHggPj0gMCkge1xuXHRcdFx0XHRvbGRWTm9kZSA9IG9sZENoaWxkcmVuW3hdO1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0b2xkVk5vZGUgJiZcblx0XHRcdFx0XHQob2xkVk5vZGUuX2ZsYWdzICYgTUFUQ0hFRCkgPT0gMCAmJlxuXHRcdFx0XHRcdGtleSA9PSBvbGRWTm9kZS5rZXkgJiZcblx0XHRcdFx0XHR0eXBlID09IG9sZFZOb2RlLnR5cGVcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIHg7XG5cdFx0XHRcdH1cblx0XHRcdFx0eC0tO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoeSA8IG9sZENoaWxkcmVuLmxlbmd0aCkge1xuXHRcdFx0XHRvbGRWTm9kZSA9IG9sZENoaWxkcmVuW3ldO1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0b2xkVk5vZGUgJiZcblx0XHRcdFx0XHQob2xkVk5vZGUuX2ZsYWdzICYgTUFUQ0hFRCkgPT0gMCAmJlxuXHRcdFx0XHRcdGtleSA9PSBvbGRWTm9kZS5rZXkgJiZcblx0XHRcdFx0XHR0eXBlID09IG9sZFZOb2RlLnR5cGVcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIHk7XG5cdFx0XHRcdH1cblx0XHRcdFx0eSsrO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiAtMTtcbn1cbiIsImltcG9ydCB7XG5cdEVNUFRZX09CSixcblx0TUFUSF9OQU1FU1BBQ0UsXG5cdE1PREVfSFlEUkFURSxcblx0TU9ERV9TVVNQRU5ERUQsXG5cdE5VTEwsXG5cdFJFU0VUX01PREUsXG5cdFNWR19OQU1FU1BBQ0UsXG5cdFVOREVGSU5FRCxcblx0WEhUTUxfTkFNRVNQQUNFXG59IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50LCBnZXREb21TaWJsaW5nIH0gZnJvbSAnLi4vY29tcG9uZW50JztcbmltcG9ydCB7IEZyYWdtZW50IH0gZnJvbSAnLi4vY3JlYXRlLWVsZW1lbnQnO1xuaW1wb3J0IHsgZGlmZkNoaWxkcmVuIH0gZnJvbSAnLi9jaGlsZHJlbic7XG5pbXBvcnQgeyBzZXRQcm9wZXJ0eSB9IGZyb20gJy4vcHJvcHMnO1xuaW1wb3J0IHsgYXNzaWduLCBpc0FycmF5LCByZW1vdmVOb2RlLCBzbGljZSB9IGZyb20gJy4uL3V0aWwnO1xuaW1wb3J0IG9wdGlvbnMgZnJvbSAnLi4vb3B0aW9ucyc7XG5cbi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vaW50ZXJuYWwnKS5Db21wb25lbnRDaGlsZHJlbn0gQ29tcG9uZW50Q2hpbGRyZW5cbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uL2ludGVybmFsJykuQ29tcG9uZW50fSBDb21wb25lbnRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uL2ludGVybmFsJykuUHJlYWN0RWxlbWVudH0gUHJlYWN0RWxlbWVudFxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vaW50ZXJuYWwnKS5WTm9kZX0gVk5vZGVcbiAqL1xuXG4vKipcbiAqIEB0ZW1wbGF0ZSB7YW55fSBUXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi9pbnRlcm5hbCcpLlJlZjxUPn0gUmVmPFQ+XG4gKi9cblxuLyoqXG4gKiBEaWZmIHR3byB2aXJ0dWFsIG5vZGVzIGFuZCBhcHBseSBwcm9wZXIgY2hhbmdlcyB0byB0aGUgRE9NXG4gKiBAcGFyYW0ge1ByZWFjdEVsZW1lbnR9IHBhcmVudERvbSBUaGUgcGFyZW50IG9mIHRoZSBET00gZWxlbWVudFxuICogQHBhcmFtIHtWTm9kZX0gbmV3Vk5vZGUgVGhlIG5ldyB2aXJ0dWFsIG5vZGVcbiAqIEBwYXJhbSB7Vk5vZGV9IG9sZFZOb2RlIFRoZSBvbGQgdmlydHVhbCBub2RlXG4gKiBAcGFyYW0ge29iamVjdH0gZ2xvYmFsQ29udGV4dCBUaGUgY3VycmVudCBjb250ZXh0IG9iamVjdC4gTW9kaWZpZWQgYnlcbiAqIGdldENoaWxkQ29udGV4dFxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWVzcGFjZSBDdXJyZW50IG5hbWVzcGFjZSBvZiB0aGUgRE9NIG5vZGUgKEhUTUwsIFNWRywgb3IgTWF0aE1MKVxuICogQHBhcmFtIHtBcnJheTxQcmVhY3RFbGVtZW50Pn0gZXhjZXNzRG9tQ2hpbGRyZW5cbiAqIEBwYXJhbSB7QXJyYXk8Q29tcG9uZW50Pn0gY29tbWl0UXVldWUgTGlzdCBvZiBjb21wb25lbnRzIHdoaWNoIGhhdmUgY2FsbGJhY2tzXG4gKiB0byBpbnZva2UgaW4gY29tbWl0Um9vdFxuICogQHBhcmFtIHtQcmVhY3RFbGVtZW50fSBvbGREb20gVGhlIGN1cnJlbnQgYXR0YWNoZWQgRE9NIGVsZW1lbnQgYW55IG5ldyBkb21cbiAqIGVsZW1lbnRzIHNob3VsZCBiZSBwbGFjZWQgYXJvdW5kLiBMaWtlbHkgYG51bGxgIG9uIGZpcnN0IHJlbmRlciAoZXhjZXB0IHdoZW5cbiAqIGh5ZHJhdGluZykuIENhbiBiZSBhIHNpYmxpbmcgRE9NIGVsZW1lbnQgd2hlbiBkaWZmaW5nIEZyYWdtZW50cyB0aGF0IGhhdmVcbiAqIHNpYmxpbmdzLiBJbiBtb3N0IGNhc2VzLCBpdCBzdGFydHMgb3V0IGFzIGBvbGRDaGlsZHJlblswXS5fZG9tYC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNIeWRyYXRpbmcgV2hldGhlciBvciBub3Qgd2UgYXJlIGluIGh5ZHJhdGlvblxuICogQHBhcmFtIHthbnlbXX0gcmVmUXVldWUgYW4gYXJyYXkgb2YgZWxlbWVudHMgbmVlZGVkIHRvIGludm9rZSByZWZzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaWZmKFxuXHRwYXJlbnREb20sXG5cdG5ld1ZOb2RlLFxuXHRvbGRWTm9kZSxcblx0Z2xvYmFsQ29udGV4dCxcblx0bmFtZXNwYWNlLFxuXHRleGNlc3NEb21DaGlsZHJlbixcblx0Y29tbWl0UXVldWUsXG5cdG9sZERvbSxcblx0aXNIeWRyYXRpbmcsXG5cdHJlZlF1ZXVlXG4pIHtcblx0LyoqIEB0eXBlIHthbnl9ICovXG5cdGxldCB0bXAsXG5cdFx0bmV3VHlwZSA9IG5ld1ZOb2RlLnR5cGU7XG5cblx0Ly8gV2hlbiBwYXNzaW5nIHRocm91Z2ggY3JlYXRlRWxlbWVudCBpdCBhc3NpZ25zIHRoZSBvYmplY3Rcblx0Ly8gY29uc3RydWN0b3IgYXMgdW5kZWZpbmVkLiBUaGlzIHRvIHByZXZlbnQgSlNPTi1pbmplY3Rpb24uXG5cdGlmIChuZXdWTm9kZS5jb25zdHJ1Y3RvciAhPSBVTkRFRklORUQpIHJldHVybiBOVUxMO1xuXG5cdC8vIElmIHRoZSBwcmV2aW91cyBkaWZmIGJhaWxlZCBvdXQsIHJlc3VtZSBjcmVhdGluZy9oeWRyYXRpbmcuXG5cdGlmIChvbGRWTm9kZS5fZmxhZ3MgJiBNT0RFX1NVU1BFTkRFRCkge1xuXHRcdGlzSHlkcmF0aW5nID0gISEob2xkVk5vZGUuX2ZsYWdzICYgTU9ERV9IWURSQVRFKTtcblx0XHRvbGREb20gPSBuZXdWTm9kZS5fZG9tID0gb2xkVk5vZGUuX2RvbTtcblx0XHRleGNlc3NEb21DaGlsZHJlbiA9IFtvbGREb21dO1xuXHR9XG5cblx0aWYgKCh0bXAgPSBvcHRpb25zLl9kaWZmKSkgdG1wKG5ld1ZOb2RlKTtcblxuXHRvdXRlcjogaWYgKHR5cGVvZiBuZXdUeXBlID09ICdmdW5jdGlvbicpIHtcblx0XHR0cnkge1xuXHRcdFx0bGV0IGMsIGlzTmV3LCBvbGRQcm9wcywgb2xkU3RhdGUsIHNuYXBzaG90LCBjbGVhclByb2Nlc3NpbmdFeGNlcHRpb247XG5cdFx0XHRsZXQgbmV3UHJvcHMgPSBuZXdWTm9kZS5wcm9wcztcblx0XHRcdGNvbnN0IGlzQ2xhc3NDb21wb25lbnQgPVxuXHRcdFx0XHQncHJvdG90eXBlJyBpbiBuZXdUeXBlICYmIG5ld1R5cGUucHJvdG90eXBlLnJlbmRlcjtcblxuXHRcdFx0Ly8gTmVjZXNzYXJ5IGZvciBjcmVhdGVDb250ZXh0IGFwaS4gU2V0dGluZyB0aGlzIHByb3BlcnR5IHdpbGwgcGFzc1xuXHRcdFx0Ly8gdGhlIGNvbnRleHQgdmFsdWUgYXMgYHRoaXMuY29udGV4dGAganVzdCBmb3IgdGhpcyBjb21wb25lbnQuXG5cdFx0XHR0bXAgPSBuZXdUeXBlLmNvbnRleHRUeXBlO1xuXHRcdFx0bGV0IHByb3ZpZGVyID0gdG1wICYmIGdsb2JhbENvbnRleHRbdG1wLl9pZF07XG5cdFx0XHRsZXQgY29tcG9uZW50Q29udGV4dCA9IHRtcFxuXHRcdFx0XHQ/IHByb3ZpZGVyXG5cdFx0XHRcdFx0PyBwcm92aWRlci5wcm9wcy52YWx1ZVxuXHRcdFx0XHRcdDogdG1wLl9kZWZhdWx0VmFsdWVcblx0XHRcdFx0OiBnbG9iYWxDb250ZXh0O1xuXG5cdFx0XHQvLyBHZXQgY29tcG9uZW50IGFuZCBzZXQgaXQgdG8gYGNgXG5cdFx0XHRpZiAob2xkVk5vZGUuX2NvbXBvbmVudCkge1xuXHRcdFx0XHRjID0gbmV3Vk5vZGUuX2NvbXBvbmVudCA9IG9sZFZOb2RlLl9jb21wb25lbnQ7XG5cdFx0XHRcdGNsZWFyUHJvY2Vzc2luZ0V4Y2VwdGlvbiA9IGMuX3Byb2Nlc3NpbmdFeGNlcHRpb24gPSBjLl9wZW5kaW5nRXJyb3I7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBJbnN0YW50aWF0ZSB0aGUgbmV3IGNvbXBvbmVudFxuXHRcdFx0XHRpZiAoaXNDbGFzc0NvbXBvbmVudCkge1xuXHRcdFx0XHRcdC8vIEB0cy1leHBlY3QtZXJyb3IgVGhlIGNoZWNrIGFib3ZlIHZlcmlmaWVzIHRoYXQgbmV3VHlwZSBpcyBzdXBwb3NlIHRvIGJlIGNvbnN0cnVjdGVkXG5cdFx0XHRcdFx0bmV3Vk5vZGUuX2NvbXBvbmVudCA9IGMgPSBuZXcgbmV3VHlwZShuZXdQcm9wcywgY29tcG9uZW50Q29udGV4dCk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbmV3LWNhcFxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdC8vIEB0cy1leHBlY3QtZXJyb3IgVHJ1c3QgbWUsIENvbXBvbmVudCBpbXBsZW1lbnRzIHRoZSBpbnRlcmZhY2Ugd2Ugd2FudFxuXHRcdFx0XHRcdG5ld1ZOb2RlLl9jb21wb25lbnQgPSBjID0gbmV3IEJhc2VDb21wb25lbnQoXG5cdFx0XHRcdFx0XHRuZXdQcm9wcyxcblx0XHRcdFx0XHRcdGNvbXBvbmVudENvbnRleHRcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGMuY29uc3RydWN0b3IgPSBuZXdUeXBlO1xuXHRcdFx0XHRcdGMucmVuZGVyID0gZG9SZW5kZXI7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHByb3ZpZGVyKSBwcm92aWRlci5zdWIoYyk7XG5cblx0XHRcdFx0Yy5wcm9wcyA9IG5ld1Byb3BzO1xuXHRcdFx0XHRpZiAoIWMuc3RhdGUpIGMuc3RhdGUgPSB7fTtcblx0XHRcdFx0Yy5jb250ZXh0ID0gY29tcG9uZW50Q29udGV4dDtcblx0XHRcdFx0Yy5fZ2xvYmFsQ29udGV4dCA9IGdsb2JhbENvbnRleHQ7XG5cdFx0XHRcdGlzTmV3ID0gYy5fZGlydHkgPSB0cnVlO1xuXHRcdFx0XHRjLl9yZW5kZXJDYWxsYmFja3MgPSBbXTtcblx0XHRcdFx0Yy5fc3RhdGVDYWxsYmFja3MgPSBbXTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gSW52b2tlIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wc1xuXHRcdFx0aWYgKGlzQ2xhc3NDb21wb25lbnQgJiYgYy5fbmV4dFN0YXRlID09IE5VTEwpIHtcblx0XHRcdFx0Yy5fbmV4dFN0YXRlID0gYy5zdGF0ZTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKGlzQ2xhc3NDb21wb25lbnQgJiYgbmV3VHlwZS5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMgIT0gTlVMTCkge1xuXHRcdFx0XHRpZiAoYy5fbmV4dFN0YXRlID09IGMuc3RhdGUpIHtcblx0XHRcdFx0XHRjLl9uZXh0U3RhdGUgPSBhc3NpZ24oe30sIGMuX25leHRTdGF0ZSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRhc3NpZ24oXG5cdFx0XHRcdFx0Yy5fbmV4dFN0YXRlLFxuXHRcdFx0XHRcdG5ld1R5cGUuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKG5ld1Byb3BzLCBjLl9uZXh0U3RhdGUpXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cblx0XHRcdG9sZFByb3BzID0gYy5wcm9wcztcblx0XHRcdG9sZFN0YXRlID0gYy5zdGF0ZTtcblx0XHRcdGMuX3Zub2RlID0gbmV3Vk5vZGU7XG5cblx0XHRcdC8vIEludm9rZSBwcmUtcmVuZGVyIGxpZmVjeWNsZSBtZXRob2RzXG5cdFx0XHRpZiAoaXNOZXcpIHtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdGlzQ2xhc3NDb21wb25lbnQgJiZcblx0XHRcdFx0XHRuZXdUeXBlLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyA9PSBOVUxMICYmXG5cdFx0XHRcdFx0Yy5jb21wb25lbnRXaWxsTW91bnQgIT0gTlVMTFxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRjLmNvbXBvbmVudFdpbGxNb3VudCgpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKGlzQ2xhc3NDb21wb25lbnQgJiYgYy5jb21wb25lbnREaWRNb3VudCAhPSBOVUxMKSB7XG5cdFx0XHRcdFx0Yy5fcmVuZGVyQ2FsbGJhY2tzLnB1c2goYy5jb21wb25lbnREaWRNb3VudCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHRpc0NsYXNzQ29tcG9uZW50ICYmXG5cdFx0XHRcdFx0bmV3VHlwZS5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMgPT0gTlVMTCAmJlxuXHRcdFx0XHRcdG5ld1Byb3BzICE9PSBvbGRQcm9wcyAmJlxuXHRcdFx0XHRcdGMuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyAhPSBOVUxMXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdGMuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuZXdQcm9wcywgY29tcG9uZW50Q29udGV4dCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0KCFjLl9mb3JjZSAmJlxuXHRcdFx0XHRcdFx0Yy5zaG91bGRDb21wb25lbnRVcGRhdGUgIT0gTlVMTCAmJlxuXHRcdFx0XHRcdFx0Yy5zaG91bGRDb21wb25lbnRVcGRhdGUoXG5cdFx0XHRcdFx0XHRcdG5ld1Byb3BzLFxuXHRcdFx0XHRcdFx0XHRjLl9uZXh0U3RhdGUsXG5cdFx0XHRcdFx0XHRcdGNvbXBvbmVudENvbnRleHRcblx0XHRcdFx0XHRcdCkgPT09IGZhbHNlKSB8fFxuXHRcdFx0XHRcdG5ld1ZOb2RlLl9vcmlnaW5hbCA9PSBvbGRWTm9kZS5fb3JpZ2luYWxcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0Ly8gTW9yZSBpbmZvIGFib3V0IHRoaXMgaGVyZTogaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vSm92aURlQ3Jvb2NrL2JlYzVmMmNlOTM1NDRkMmU2MDcwZWY4ZTAwMzZlNGU4XG5cdFx0XHRcdFx0aWYgKG5ld1ZOb2RlLl9vcmlnaW5hbCAhPSBvbGRWTm9kZS5fb3JpZ2luYWwpIHtcblx0XHRcdFx0XHRcdC8vIFdoZW4gd2UgYXJlIGRlYWxpbmcgd2l0aCBhIGJhaWwgYmVjYXVzZSBvZiBzQ1Ugd2UgaGF2ZSB0byB1cGRhdGVcblx0XHRcdFx0XHRcdC8vIHRoZSBwcm9wcywgc3RhdGUgYW5kIGRpcnR5LXN0YXRlLlxuXHRcdFx0XHRcdFx0Ly8gd2hlbiB3ZSBhcmUgZGVhbGluZyB3aXRoIHN0cmljdC1lcXVhbGl0eSB3ZSBkb24ndCBhcyB0aGUgY2hpbGQgY291bGQgc3RpbGxcblx0XHRcdFx0XHRcdC8vIGJlIGRpcnRpZWQgc2VlICMzODgzXG5cdFx0XHRcdFx0XHRjLnByb3BzID0gbmV3UHJvcHM7XG5cdFx0XHRcdFx0XHRjLnN0YXRlID0gYy5fbmV4dFN0YXRlO1xuXHRcdFx0XHRcdFx0Yy5fZGlydHkgPSBmYWxzZTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRuZXdWTm9kZS5fZG9tID0gb2xkVk5vZGUuX2RvbTtcblx0XHRcdFx0XHRuZXdWTm9kZS5fY2hpbGRyZW4gPSBvbGRWTm9kZS5fY2hpbGRyZW47XG5cdFx0XHRcdFx0bmV3Vk5vZGUuX2NoaWxkcmVuLnNvbWUodm5vZGUgPT4ge1xuXHRcdFx0XHRcdFx0aWYgKHZub2RlKSB2bm9kZS5fcGFyZW50ID0gbmV3Vk5vZGU7XG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGMuX3N0YXRlQ2FsbGJhY2tzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRjLl9yZW5kZXJDYWxsYmFja3MucHVzaChjLl9zdGF0ZUNhbGxiYWNrc1tpXSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGMuX3N0YXRlQ2FsbGJhY2tzID0gW107XG5cblx0XHRcdFx0XHRpZiAoYy5fcmVuZGVyQ2FsbGJhY2tzLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0Y29tbWl0UXVldWUucHVzaChjKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRicmVhayBvdXRlcjtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChjLmNvbXBvbmVudFdpbGxVcGRhdGUgIT0gTlVMTCkge1xuXHRcdFx0XHRcdGMuY29tcG9uZW50V2lsbFVwZGF0ZShuZXdQcm9wcywgYy5fbmV4dFN0YXRlLCBjb21wb25lbnRDb250ZXh0KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChpc0NsYXNzQ29tcG9uZW50ICYmIGMuY29tcG9uZW50RGlkVXBkYXRlICE9IE5VTEwpIHtcblx0XHRcdFx0XHRjLl9yZW5kZXJDYWxsYmFja3MucHVzaCgoKSA9PiB7XG5cdFx0XHRcdFx0XHRjLmNvbXBvbmVudERpZFVwZGF0ZShvbGRQcm9wcywgb2xkU3RhdGUsIHNuYXBzaG90KTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRjLmNvbnRleHQgPSBjb21wb25lbnRDb250ZXh0O1xuXHRcdFx0Yy5wcm9wcyA9IG5ld1Byb3BzO1xuXHRcdFx0Yy5fcGFyZW50RG9tID0gcGFyZW50RG9tO1xuXHRcdFx0Yy5fZm9yY2UgPSBmYWxzZTtcblxuXHRcdFx0bGV0IHJlbmRlckhvb2sgPSBvcHRpb25zLl9yZW5kZXIsXG5cdFx0XHRcdGNvdW50ID0gMDtcblx0XHRcdGlmIChpc0NsYXNzQ29tcG9uZW50KSB7XG5cdFx0XHRcdGMuc3RhdGUgPSBjLl9uZXh0U3RhdGU7XG5cdFx0XHRcdGMuX2RpcnR5ID0gZmFsc2U7XG5cblx0XHRcdFx0aWYgKHJlbmRlckhvb2spIHJlbmRlckhvb2sobmV3Vk5vZGUpO1xuXG5cdFx0XHRcdHRtcCA9IGMucmVuZGVyKGMucHJvcHMsIGMuc3RhdGUsIGMuY29udGV4dCk7XG5cblx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBjLl9zdGF0ZUNhbGxiYWNrcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdGMuX3JlbmRlckNhbGxiYWNrcy5wdXNoKGMuX3N0YXRlQ2FsbGJhY2tzW2ldKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjLl9zdGF0ZUNhbGxiYWNrcyA9IFtdO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZG8ge1xuXHRcdFx0XHRcdGMuX2RpcnR5ID0gZmFsc2U7XG5cdFx0XHRcdFx0aWYgKHJlbmRlckhvb2spIHJlbmRlckhvb2sobmV3Vk5vZGUpO1xuXG5cdFx0XHRcdFx0dG1wID0gYy5yZW5kZXIoYy5wcm9wcywgYy5zdGF0ZSwgYy5jb250ZXh0KTtcblxuXHRcdFx0XHRcdC8vIEhhbmRsZSBzZXRTdGF0ZSBjYWxsZWQgaW4gcmVuZGVyLCBzZWUgIzI1NTNcblx0XHRcdFx0XHRjLnN0YXRlID0gYy5fbmV4dFN0YXRlO1xuXHRcdFx0XHR9IHdoaWxlIChjLl9kaXJ0eSAmJiArK2NvdW50IDwgMjUpO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBIYW5kbGUgc2V0U3RhdGUgY2FsbGVkIGluIHJlbmRlciwgc2VlICMyNTUzXG5cdFx0XHRjLnN0YXRlID0gYy5fbmV4dFN0YXRlO1xuXG5cdFx0XHRpZiAoYy5nZXRDaGlsZENvbnRleHQgIT0gTlVMTCkge1xuXHRcdFx0XHRnbG9iYWxDb250ZXh0ID0gYXNzaWduKGFzc2lnbih7fSwgZ2xvYmFsQ29udGV4dCksIGMuZ2V0Q2hpbGRDb250ZXh0KCkpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoaXNDbGFzc0NvbXBvbmVudCAmJiAhaXNOZXcgJiYgYy5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSAhPSBOVUxMKSB7XG5cdFx0XHRcdHNuYXBzaG90ID0gYy5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZShvbGRQcm9wcywgb2xkU3RhdGUpO1xuXHRcdFx0fVxuXG5cdFx0XHRsZXQgaXNUb3BMZXZlbEZyYWdtZW50ID1cblx0XHRcdFx0dG1wICE9IE5VTEwgJiYgdG1wLnR5cGUgPT09IEZyYWdtZW50ICYmIHRtcC5rZXkgPT0gTlVMTDtcblx0XHRcdGxldCByZW5kZXJSZXN1bHQgPSB0bXA7XG5cblx0XHRcdGlmIChpc1RvcExldmVsRnJhZ21lbnQpIHtcblx0XHRcdFx0cmVuZGVyUmVzdWx0ID0gY2xvbmVOb2RlKHRtcC5wcm9wcy5jaGlsZHJlbik7XG5cdFx0XHR9XG5cblx0XHRcdG9sZERvbSA9IGRpZmZDaGlsZHJlbihcblx0XHRcdFx0cGFyZW50RG9tLFxuXHRcdFx0XHRpc0FycmF5KHJlbmRlclJlc3VsdCkgPyByZW5kZXJSZXN1bHQgOiBbcmVuZGVyUmVzdWx0XSxcblx0XHRcdFx0bmV3Vk5vZGUsXG5cdFx0XHRcdG9sZFZOb2RlLFxuXHRcdFx0XHRnbG9iYWxDb250ZXh0LFxuXHRcdFx0XHRuYW1lc3BhY2UsXG5cdFx0XHRcdGV4Y2Vzc0RvbUNoaWxkcmVuLFxuXHRcdFx0XHRjb21taXRRdWV1ZSxcblx0XHRcdFx0b2xkRG9tLFxuXHRcdFx0XHRpc0h5ZHJhdGluZyxcblx0XHRcdFx0cmVmUXVldWVcblx0XHRcdCk7XG5cblx0XHRcdGMuYmFzZSA9IG5ld1ZOb2RlLl9kb207XG5cblx0XHRcdC8vIFdlIHN1Y2Nlc3NmdWxseSByZW5kZXJlZCB0aGlzIFZOb2RlLCB1bnNldCBhbnkgc3RvcmVkIGh5ZHJhdGlvbi9iYWlsb3V0IHN0YXRlOlxuXHRcdFx0bmV3Vk5vZGUuX2ZsYWdzICY9IFJFU0VUX01PREU7XG5cblx0XHRcdGlmIChjLl9yZW5kZXJDYWxsYmFja3MubGVuZ3RoKSB7XG5cdFx0XHRcdGNvbW1pdFF1ZXVlLnB1c2goYyk7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChjbGVhclByb2Nlc3NpbmdFeGNlcHRpb24pIHtcblx0XHRcdFx0Yy5fcGVuZGluZ0Vycm9yID0gYy5fcHJvY2Vzc2luZ0V4Y2VwdGlvbiA9IE5VTEw7XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0bmV3Vk5vZGUuX29yaWdpbmFsID0gTlVMTDtcblx0XHRcdC8vIGlmIGh5ZHJhdGluZyBvciBjcmVhdGluZyBpbml0aWFsIHRyZWUsIGJhaWxvdXQgcHJlc2VydmVzIERPTTpcblx0XHRcdGlmIChpc0h5ZHJhdGluZyB8fCBleGNlc3NEb21DaGlsZHJlbiAhPSBOVUxMKSB7XG5cdFx0XHRcdGlmIChlLnRoZW4pIHtcblx0XHRcdFx0XHRuZXdWTm9kZS5fZmxhZ3MgfD0gaXNIeWRyYXRpbmdcblx0XHRcdFx0XHRcdD8gTU9ERV9IWURSQVRFIHwgTU9ERV9TVVNQRU5ERURcblx0XHRcdFx0XHRcdDogTU9ERV9TVVNQRU5ERUQ7XG5cblx0XHRcdFx0XHR3aGlsZSAob2xkRG9tICYmIG9sZERvbS5ub2RlVHlwZSA9PSA4ICYmIG9sZERvbS5uZXh0U2libGluZykge1xuXHRcdFx0XHRcdFx0b2xkRG9tID0gb2xkRG9tLm5leHRTaWJsaW5nO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGV4Y2Vzc0RvbUNoaWxkcmVuW2V4Y2Vzc0RvbUNoaWxkcmVuLmluZGV4T2Yob2xkRG9tKV0gPSBOVUxMO1xuXHRcdFx0XHRcdG5ld1ZOb2RlLl9kb20gPSBvbGREb207XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaSA9IGV4Y2Vzc0RvbUNoaWxkcmVuLmxlbmd0aDsgaS0tOyApIHtcblx0XHRcdFx0XHRcdHJlbW92ZU5vZGUoZXhjZXNzRG9tQ2hpbGRyZW5baV0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bmV3Vk5vZGUuX2RvbSA9IG9sZFZOb2RlLl9kb207XG5cdFx0XHRcdG5ld1ZOb2RlLl9jaGlsZHJlbiA9IG9sZFZOb2RlLl9jaGlsZHJlbjtcblx0XHRcdH1cblx0XHRcdG9wdGlvbnMuX2NhdGNoRXJyb3IoZSwgbmV3Vk5vZGUsIG9sZFZOb2RlKTtcblx0XHR9XG5cdH0gZWxzZSBpZiAoXG5cdFx0ZXhjZXNzRG9tQ2hpbGRyZW4gPT0gTlVMTCAmJlxuXHRcdG5ld1ZOb2RlLl9vcmlnaW5hbCA9PSBvbGRWTm9kZS5fb3JpZ2luYWxcblx0KSB7XG5cdFx0bmV3Vk5vZGUuX2NoaWxkcmVuID0gb2xkVk5vZGUuX2NoaWxkcmVuO1xuXHRcdG5ld1ZOb2RlLl9kb20gPSBvbGRWTm9kZS5fZG9tO1xuXHR9IGVsc2Uge1xuXHRcdG9sZERvbSA9IG5ld1ZOb2RlLl9kb20gPSBkaWZmRWxlbWVudE5vZGVzKFxuXHRcdFx0b2xkVk5vZGUuX2RvbSxcblx0XHRcdG5ld1ZOb2RlLFxuXHRcdFx0b2xkVk5vZGUsXG5cdFx0XHRnbG9iYWxDb250ZXh0LFxuXHRcdFx0bmFtZXNwYWNlLFxuXHRcdFx0ZXhjZXNzRG9tQ2hpbGRyZW4sXG5cdFx0XHRjb21taXRRdWV1ZSxcblx0XHRcdGlzSHlkcmF0aW5nLFxuXHRcdFx0cmVmUXVldWVcblx0XHQpO1xuXHR9XG5cblx0aWYgKCh0bXAgPSBvcHRpb25zLmRpZmZlZCkpIHRtcChuZXdWTm9kZSk7XG5cblx0cmV0dXJuIG5ld1ZOb2RlLl9mbGFncyAmIE1PREVfU1VTUEVOREVEID8gdW5kZWZpbmVkIDogb2xkRG9tO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7QXJyYXk8Q29tcG9uZW50Pn0gY29tbWl0UXVldWUgTGlzdCBvZiBjb21wb25lbnRzXG4gKiB3aGljaCBoYXZlIGNhbGxiYWNrcyB0byBpbnZva2UgaW4gY29tbWl0Um9vdFxuICogQHBhcmFtIHtWTm9kZX0gcm9vdFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tbWl0Um9vdChjb21taXRRdWV1ZSwgcm9vdCwgcmVmUXVldWUpIHtcblx0Zm9yIChsZXQgaSA9IDA7IGkgPCByZWZRdWV1ZS5sZW5ndGg7IGkrKykge1xuXHRcdGFwcGx5UmVmKHJlZlF1ZXVlW2ldLCByZWZRdWV1ZVsrK2ldLCByZWZRdWV1ZVsrK2ldKTtcblx0fVxuXG5cdGlmIChvcHRpb25zLl9jb21taXQpIG9wdGlvbnMuX2NvbW1pdChyb290LCBjb21taXRRdWV1ZSk7XG5cblx0Y29tbWl0UXVldWUuc29tZShjID0+IHtcblx0XHR0cnkge1xuXHRcdFx0Ly8gQHRzLWV4cGVjdC1lcnJvciBSZXVzZSB0aGUgY29tbWl0UXVldWUgdmFyaWFibGUgaGVyZSBzbyB0aGUgdHlwZSBjaGFuZ2VzXG5cdFx0XHRjb21taXRRdWV1ZSA9IGMuX3JlbmRlckNhbGxiYWNrcztcblx0XHRcdGMuX3JlbmRlckNhbGxiYWNrcyA9IFtdO1xuXHRcdFx0Y29tbWl0UXVldWUuc29tZShjYiA9PiB7XG5cdFx0XHRcdC8vIEB0cy1leHBlY3QtZXJyb3IgU2VlIGFib3ZlIGNvbW1lbnQgb24gY29tbWl0UXVldWVcblx0XHRcdFx0Y2IuY2FsbChjKTtcblx0XHRcdH0pO1xuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdG9wdGlvbnMuX2NhdGNoRXJyb3IoZSwgYy5fdm5vZGUpO1xuXHRcdH1cblx0fSk7XG59XG5cbmZ1bmN0aW9uIGNsb25lTm9kZShub2RlKSB7XG5cdGlmIChcblx0XHR0eXBlb2Ygbm9kZSAhPSAnb2JqZWN0JyB8fFxuXHRcdG5vZGUgPT0gTlVMTCB8fFxuXHRcdChub2RlLl9kZXB0aCAmJiBub2RlLl9kZXB0aCA+IDApXG5cdCkge1xuXHRcdHJldHVybiBub2RlO1xuXHR9XG5cblx0aWYgKGlzQXJyYXkobm9kZSkpIHtcblx0XHRyZXR1cm4gbm9kZS5tYXAoY2xvbmVOb2RlKTtcblx0fVxuXG5cdHJldHVybiBhc3NpZ24oe30sIG5vZGUpO1xufVxuXG4vKipcbiAqIERpZmYgdHdvIHZpcnR1YWwgbm9kZXMgcmVwcmVzZW50aW5nIERPTSBlbGVtZW50XG4gKiBAcGFyYW0ge1ByZWFjdEVsZW1lbnR9IGRvbSBUaGUgRE9NIGVsZW1lbnQgcmVwcmVzZW50aW5nIHRoZSB2aXJ0dWFsIG5vZGVzXG4gKiBiZWluZyBkaWZmZWRcbiAqIEBwYXJhbSB7Vk5vZGV9IG5ld1ZOb2RlIFRoZSBuZXcgdmlydHVhbCBub2RlXG4gKiBAcGFyYW0ge1ZOb2RlfSBvbGRWTm9kZSBUaGUgb2xkIHZpcnR1YWwgbm9kZVxuICogQHBhcmFtIHtvYmplY3R9IGdsb2JhbENvbnRleHQgVGhlIGN1cnJlbnQgY29udGV4dCBvYmplY3RcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lc3BhY2UgQ3VycmVudCBuYW1lc3BhY2Ugb2YgdGhlIERPTSBub2RlIChIVE1MLCBTVkcsIG9yIE1hdGhNTClcbiAqIEBwYXJhbSB7QXJyYXk8UHJlYWN0RWxlbWVudD59IGV4Y2Vzc0RvbUNoaWxkcmVuXG4gKiBAcGFyYW0ge0FycmF5PENvbXBvbmVudD59IGNvbW1pdFF1ZXVlIExpc3Qgb2YgY29tcG9uZW50cyB3aGljaCBoYXZlIGNhbGxiYWNrc1xuICogdG8gaW52b2tlIGluIGNvbW1pdFJvb3RcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNIeWRyYXRpbmcgV2hldGhlciBvciBub3Qgd2UgYXJlIGluIGh5ZHJhdGlvblxuICogQHBhcmFtIHthbnlbXX0gcmVmUXVldWUgYW4gYXJyYXkgb2YgZWxlbWVudHMgbmVlZGVkIHRvIGludm9rZSByZWZzXG4gKiBAcmV0dXJucyB7UHJlYWN0RWxlbWVudH1cbiAqL1xuZnVuY3Rpb24gZGlmZkVsZW1lbnROb2Rlcyhcblx0ZG9tLFxuXHRuZXdWTm9kZSxcblx0b2xkVk5vZGUsXG5cdGdsb2JhbENvbnRleHQsXG5cdG5hbWVzcGFjZSxcblx0ZXhjZXNzRG9tQ2hpbGRyZW4sXG5cdGNvbW1pdFF1ZXVlLFxuXHRpc0h5ZHJhdGluZyxcblx0cmVmUXVldWVcbikge1xuXHRsZXQgb2xkUHJvcHMgPSBvbGRWTm9kZS5wcm9wcztcblx0bGV0IG5ld1Byb3BzID0gbmV3Vk5vZGUucHJvcHM7XG5cdGxldCBub2RlVHlwZSA9IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAobmV3Vk5vZGUudHlwZSk7XG5cdC8qKiBAdHlwZSB7YW55fSAqL1xuXHRsZXQgaTtcblx0LyoqIEB0eXBlIHt7IF9faHRtbD86IHN0cmluZyB9fSAqL1xuXHRsZXQgbmV3SHRtbDtcblx0LyoqIEB0eXBlIHt7IF9faHRtbD86IHN0cmluZyB9fSAqL1xuXHRsZXQgb2xkSHRtbDtcblx0LyoqIEB0eXBlIHtDb21wb25lbnRDaGlsZHJlbn0gKi9cblx0bGV0IG5ld0NoaWxkcmVuO1xuXHRsZXQgdmFsdWU7XG5cdGxldCBpbnB1dFZhbHVlO1xuXHRsZXQgY2hlY2tlZDtcblxuXHQvLyBUcmFja3MgZW50ZXJpbmcgYW5kIGV4aXRpbmcgbmFtZXNwYWNlcyB3aGVuIGRlc2NlbmRpbmcgdGhyb3VnaCB0aGUgdHJlZS5cblx0aWYgKG5vZGVUeXBlID09ICdzdmcnKSBuYW1lc3BhY2UgPSBTVkdfTkFNRVNQQUNFO1xuXHRlbHNlIGlmIChub2RlVHlwZSA9PSAnbWF0aCcpIG5hbWVzcGFjZSA9IE1BVEhfTkFNRVNQQUNFO1xuXHRlbHNlIGlmICghbmFtZXNwYWNlKSBuYW1lc3BhY2UgPSBYSFRNTF9OQU1FU1BBQ0U7XG5cblx0aWYgKGV4Y2Vzc0RvbUNoaWxkcmVuICE9IE5VTEwpIHtcblx0XHRmb3IgKGkgPSAwOyBpIDwgZXhjZXNzRG9tQ2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcblx0XHRcdHZhbHVlID0gZXhjZXNzRG9tQ2hpbGRyZW5baV07XG5cblx0XHRcdC8vIGlmIG5ld1ZOb2RlIG1hdGNoZXMgYW4gZWxlbWVudCBpbiBleGNlc3NEb21DaGlsZHJlbiBvciB0aGUgYGRvbWBcblx0XHRcdC8vIGFyZ3VtZW50IG1hdGNoZXMgYW4gZWxlbWVudCBpbiBleGNlc3NEb21DaGlsZHJlbiwgcmVtb3ZlIGl0IGZyb21cblx0XHRcdC8vIGV4Y2Vzc0RvbUNoaWxkcmVuIHNvIGl0IGlzbid0IGxhdGVyIHJlbW92ZWQgaW4gZGlmZkNoaWxkcmVuXG5cdFx0XHRpZiAoXG5cdFx0XHRcdHZhbHVlICYmXG5cdFx0XHRcdCdzZXRBdHRyaWJ1dGUnIGluIHZhbHVlID09ICEhbm9kZVR5cGUgJiZcblx0XHRcdFx0KG5vZGVUeXBlID8gdmFsdWUubG9jYWxOYW1lID09IG5vZGVUeXBlIDogdmFsdWUubm9kZVR5cGUgPT0gMylcblx0XHRcdCkge1xuXHRcdFx0XHRkb20gPSB2YWx1ZTtcblx0XHRcdFx0ZXhjZXNzRG9tQ2hpbGRyZW5baV0gPSBOVUxMO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRpZiAoZG9tID09IE5VTEwpIHtcblx0XHRpZiAobm9kZVR5cGUgPT0gTlVMTCkge1xuXHRcdFx0cmV0dXJuIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG5ld1Byb3BzKTtcblx0XHR9XG5cblx0XHRkb20gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoXG5cdFx0XHRuYW1lc3BhY2UsXG5cdFx0XHRub2RlVHlwZSxcblx0XHRcdG5ld1Byb3BzLmlzICYmIG5ld1Byb3BzXG5cdFx0KTtcblxuXHRcdC8vIHdlIGFyZSBjcmVhdGluZyBhIG5ldyBub2RlLCBzbyB3ZSBjYW4gYXNzdW1lIHRoaXMgaXMgYSBuZXcgc3VidHJlZSAoaW5cblx0XHQvLyBjYXNlIHdlIGFyZSBoeWRyYXRpbmcpLCB0aGlzIGRlb3B0cyB0aGUgaHlkcmF0ZVxuXHRcdGlmIChpc0h5ZHJhdGluZykge1xuXHRcdFx0aWYgKG9wdGlvbnMuX2h5ZHJhdGlvbk1pc21hdGNoKVxuXHRcdFx0XHRvcHRpb25zLl9oeWRyYXRpb25NaXNtYXRjaChuZXdWTm9kZSwgZXhjZXNzRG9tQ2hpbGRyZW4pO1xuXHRcdFx0aXNIeWRyYXRpbmcgPSBmYWxzZTtcblx0XHR9XG5cdFx0Ly8gd2UgY3JlYXRlZCBhIG5ldyBwYXJlbnQsIHNvIG5vbmUgb2YgdGhlIHByZXZpb3VzbHkgYXR0YWNoZWQgY2hpbGRyZW4gY2FuIGJlIHJldXNlZDpcblx0XHRleGNlc3NEb21DaGlsZHJlbiA9IE5VTEw7XG5cdH1cblxuXHRpZiAobm9kZVR5cGUgPT0gTlVMTCkge1xuXHRcdC8vIER1cmluZyBoeWRyYXRpb24sIHdlIHN0aWxsIGhhdmUgdG8gc3BsaXQgbWVyZ2VkIHRleHQgZnJvbSBTU1InZCBIVE1MLlxuXHRcdGlmIChvbGRQcm9wcyAhPT0gbmV3UHJvcHMgJiYgKCFpc0h5ZHJhdGluZyB8fCBkb20uZGF0YSAhPSBuZXdQcm9wcykpIHtcblx0XHRcdGRvbS5kYXRhID0gbmV3UHJvcHM7XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdC8vIElmIGV4Y2Vzc0RvbUNoaWxkcmVuIHdhcyBub3QgbnVsbCwgcmVwb3B1bGF0ZSBpdCB3aXRoIHRoZSBjdXJyZW50IGVsZW1lbnQncyBjaGlsZHJlbjpcblx0XHRleGNlc3NEb21DaGlsZHJlbiA9IGV4Y2Vzc0RvbUNoaWxkcmVuICYmIHNsaWNlLmNhbGwoZG9tLmNoaWxkTm9kZXMpO1xuXG5cdFx0b2xkUHJvcHMgPSBvbGRWTm9kZS5wcm9wcyB8fCBFTVBUWV9PQko7XG5cblx0XHQvLyBJZiB3ZSBhcmUgaW4gYSBzaXR1YXRpb24gd2hlcmUgd2UgYXJlIG5vdCBoeWRyYXRpbmcgYnV0IGFyZSB1c2luZ1xuXHRcdC8vIGV4aXN0aW5nIERPTSAoZS5nLiByZXBsYWNlTm9kZSkgd2Ugc2hvdWxkIHJlYWQgdGhlIGV4aXN0aW5nIERPTVxuXHRcdC8vIGF0dHJpYnV0ZXMgdG8gZGlmZiB0aGVtXG5cdFx0aWYgKCFpc0h5ZHJhdGluZyAmJiBleGNlc3NEb21DaGlsZHJlbiAhPSBOVUxMKSB7XG5cdFx0XHRvbGRQcm9wcyA9IHt9O1xuXHRcdFx0Zm9yIChpID0gMDsgaSA8IGRvbS5hdHRyaWJ1dGVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdHZhbHVlID0gZG9tLmF0dHJpYnV0ZXNbaV07XG5cdFx0XHRcdG9sZFByb3BzW3ZhbHVlLm5hbWVdID0gdmFsdWUudmFsdWU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Zm9yIChpIGluIG9sZFByb3BzKSB7XG5cdFx0XHR2YWx1ZSA9IG9sZFByb3BzW2ldO1xuXHRcdFx0aWYgKGkgPT0gJ2NoaWxkcmVuJykge1xuXHRcdFx0fSBlbHNlIGlmIChpID09ICdkYW5nZXJvdXNseVNldElubmVySFRNTCcpIHtcblx0XHRcdFx0b2xkSHRtbCA9IHZhbHVlO1xuXHRcdFx0fSBlbHNlIGlmICghKGkgaW4gbmV3UHJvcHMpKSB7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHQoaSA9PSAndmFsdWUnICYmICdkZWZhdWx0VmFsdWUnIGluIG5ld1Byb3BzKSB8fFxuXHRcdFx0XHRcdChpID09ICdjaGVja2VkJyAmJiAnZGVmYXVsdENoZWNrZWQnIGluIG5ld1Byb3BzKVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRzZXRQcm9wZXJ0eShkb20sIGksIE5VTEwsIHZhbHVlLCBuYW1lc3BhY2UpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIER1cmluZyBoeWRyYXRpb24sIHByb3BzIGFyZSBub3QgZGlmZmVkIGF0IGFsbCAoaW5jbHVkaW5nIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKVxuXHRcdC8vIEBUT0RPIHdlIHNob3VsZCB3YXJuIGluIGRlYnVnIG1vZGUgd2hlbiBwcm9wcyBkb24ndCBtYXRjaCBoZXJlLlxuXHRcdGZvciAoaSBpbiBuZXdQcm9wcykge1xuXHRcdFx0dmFsdWUgPSBuZXdQcm9wc1tpXTtcblx0XHRcdGlmIChpID09ICdjaGlsZHJlbicpIHtcblx0XHRcdFx0bmV3Q2hpbGRyZW4gPSB2YWx1ZTtcblx0XHRcdH0gZWxzZSBpZiAoaSA9PSAnZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwnKSB7XG5cdFx0XHRcdG5ld0h0bWwgPSB2YWx1ZTtcblx0XHRcdH0gZWxzZSBpZiAoaSA9PSAndmFsdWUnKSB7XG5cdFx0XHRcdGlucHV0VmFsdWUgPSB2YWx1ZTtcblx0XHRcdH0gZWxzZSBpZiAoaSA9PSAnY2hlY2tlZCcpIHtcblx0XHRcdFx0Y2hlY2tlZCA9IHZhbHVlO1xuXHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0KCFpc0h5ZHJhdGluZyB8fCB0eXBlb2YgdmFsdWUgPT0gJ2Z1bmN0aW9uJykgJiZcblx0XHRcdFx0b2xkUHJvcHNbaV0gIT09IHZhbHVlXG5cdFx0XHQpIHtcblx0XHRcdFx0c2V0UHJvcGVydHkoZG9tLCBpLCB2YWx1ZSwgb2xkUHJvcHNbaV0sIG5hbWVzcGFjZSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gSWYgdGhlIG5ldyB2bm9kZSBkaWRuJ3QgaGF2ZSBkYW5nZXJvdXNseVNldElubmVySFRNTCwgZGlmZiBpdHMgY2hpbGRyZW5cblx0XHRpZiAobmV3SHRtbCkge1xuXHRcdFx0Ly8gQXZvaWQgcmUtYXBwbHlpbmcgdGhlIHNhbWUgJ19faHRtbCcgaWYgaXQgZGlkIG5vdCBjaGFuZ2VkIGJldHdlZW4gcmUtcmVuZGVyXG5cdFx0XHRpZiAoXG5cdFx0XHRcdCFpc0h5ZHJhdGluZyAmJlxuXHRcdFx0XHQoIW9sZEh0bWwgfHxcblx0XHRcdFx0XHQobmV3SHRtbC5fX2h0bWwgIT0gb2xkSHRtbC5fX2h0bWwgJiYgbmV3SHRtbC5fX2h0bWwgIT0gZG9tLmlubmVySFRNTCkpXG5cdFx0XHQpIHtcblx0XHRcdFx0ZG9tLmlubmVySFRNTCA9IG5ld0h0bWwuX19odG1sO1xuXHRcdFx0fVxuXG5cdFx0XHRuZXdWTm9kZS5fY2hpbGRyZW4gPSBbXTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYgKG9sZEh0bWwpIGRvbS5pbm5lckhUTUwgPSAnJztcblxuXHRcdFx0ZGlmZkNoaWxkcmVuKFxuXHRcdFx0XHQvLyBAdHMtZXhwZWN0LWVycm9yXG5cdFx0XHRcdG5ld1ZOb2RlLnR5cGUgPT0gJ3RlbXBsYXRlJyA/IGRvbS5jb250ZW50IDogZG9tLFxuXHRcdFx0XHRpc0FycmF5KG5ld0NoaWxkcmVuKSA/IG5ld0NoaWxkcmVuIDogW25ld0NoaWxkcmVuXSxcblx0XHRcdFx0bmV3Vk5vZGUsXG5cdFx0XHRcdG9sZFZOb2RlLFxuXHRcdFx0XHRnbG9iYWxDb250ZXh0LFxuXHRcdFx0XHRub2RlVHlwZSA9PSAnZm9yZWlnbk9iamVjdCcgPyBYSFRNTF9OQU1FU1BBQ0UgOiBuYW1lc3BhY2UsXG5cdFx0XHRcdGV4Y2Vzc0RvbUNoaWxkcmVuLFxuXHRcdFx0XHRjb21taXRRdWV1ZSxcblx0XHRcdFx0ZXhjZXNzRG9tQ2hpbGRyZW5cblx0XHRcdFx0XHQ/IGV4Y2Vzc0RvbUNoaWxkcmVuWzBdXG5cdFx0XHRcdFx0OiBvbGRWTm9kZS5fY2hpbGRyZW4gJiYgZ2V0RG9tU2libGluZyhvbGRWTm9kZSwgMCksXG5cdFx0XHRcdGlzSHlkcmF0aW5nLFxuXHRcdFx0XHRyZWZRdWV1ZVxuXHRcdFx0KTtcblxuXHRcdFx0Ly8gUmVtb3ZlIGNoaWxkcmVuIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIGFueSB2bm9kZS5cblx0XHRcdGlmIChleGNlc3NEb21DaGlsZHJlbiAhPSBOVUxMKSB7XG5cdFx0XHRcdGZvciAoaSA9IGV4Y2Vzc0RvbUNoaWxkcmVuLmxlbmd0aDsgaS0tOyApIHtcblx0XHRcdFx0XHRyZW1vdmVOb2RlKGV4Y2Vzc0RvbUNoaWxkcmVuW2ldKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIEFzIGFib3ZlLCBkb24ndCBkaWZmIHByb3BzIGR1cmluZyBoeWRyYXRpb25cblx0XHRpZiAoIWlzSHlkcmF0aW5nKSB7XG5cdFx0XHRpID0gJ3ZhbHVlJztcblx0XHRcdGlmIChub2RlVHlwZSA9PSAncHJvZ3Jlc3MnICYmIGlucHV0VmFsdWUgPT0gTlVMTCkge1xuXHRcdFx0XHRkb20ucmVtb3ZlQXR0cmlidXRlKCd2YWx1ZScpO1xuXHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0aW5wdXRWYWx1ZSAhPSBVTkRFRklORUQgJiZcblx0XHRcdFx0Ly8gIzI3NTYgRm9yIHRoZSA8cHJvZ3Jlc3M+LWVsZW1lbnQgdGhlIGluaXRpYWwgdmFsdWUgaXMgMCxcblx0XHRcdFx0Ly8gZGVzcGl0ZSB0aGUgYXR0cmlidXRlIG5vdCBiZWluZyBwcmVzZW50LiBXaGVuIHRoZSBhdHRyaWJ1dGVcblx0XHRcdFx0Ly8gaXMgbWlzc2luZyB0aGUgcHJvZ3Jlc3MgYmFyIGlzIHRyZWF0ZWQgYXMgaW5kZXRlcm1pbmF0ZS5cblx0XHRcdFx0Ly8gVG8gZml4IHRoYXQgd2UnbGwgYWx3YXlzIHVwZGF0ZSBpdCB3aGVuIGl0IGlzIDAgZm9yIHByb2dyZXNzIGVsZW1lbnRzXG5cdFx0XHRcdChpbnB1dFZhbHVlICE9PSBkb21baV0gfHxcblx0XHRcdFx0XHQobm9kZVR5cGUgPT0gJ3Byb2dyZXNzJyAmJiAhaW5wdXRWYWx1ZSkgfHxcblx0XHRcdFx0XHQvLyBUaGlzIGlzIG9ubHkgZm9yIElFIDExIHRvIGZpeCA8c2VsZWN0PiB2YWx1ZSBub3QgYmVpbmcgdXBkYXRlZC5cblx0XHRcdFx0XHQvLyBUbyBhdm9pZCBhIHN0YWxlIHNlbGVjdCB2YWx1ZSB3ZSBuZWVkIHRvIHNldCB0aGUgb3B0aW9uLnZhbHVlXG5cdFx0XHRcdFx0Ly8gYWdhaW4sIHdoaWNoIHRyaWdnZXJzIElFMTEgdG8gcmUtZXZhbHVhdGUgdGhlIHNlbGVjdCB2YWx1ZVxuXHRcdFx0XHRcdChub2RlVHlwZSA9PSAnb3B0aW9uJyAmJiBpbnB1dFZhbHVlICE9IG9sZFByb3BzW2ldKSlcblx0XHRcdCkge1xuXHRcdFx0XHRzZXRQcm9wZXJ0eShkb20sIGksIGlucHV0VmFsdWUsIG9sZFByb3BzW2ldLCBuYW1lc3BhY2UpO1xuXHRcdFx0fVxuXG5cdFx0XHRpID0gJ2NoZWNrZWQnO1xuXHRcdFx0aWYgKGNoZWNrZWQgIT0gVU5ERUZJTkVEICYmIGNoZWNrZWQgIT0gZG9tW2ldKSB7XG5cdFx0XHRcdHNldFByb3BlcnR5KGRvbSwgaSwgY2hlY2tlZCwgb2xkUHJvcHNbaV0sIG5hbWVzcGFjZSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGRvbTtcbn1cblxuLyoqXG4gKiBJbnZva2Ugb3IgdXBkYXRlIGEgcmVmLCBkZXBlbmRpbmcgb24gd2hldGhlciBpdCBpcyBhIGZ1bmN0aW9uIG9yIG9iamVjdCByZWYuXG4gKiBAcGFyYW0ge1JlZjxhbnk+ICYgeyBfdW5tb3VudD86IHVua25vd24gfX0gcmVmXG4gKiBAcGFyYW0ge2FueX0gdmFsdWVcbiAqIEBwYXJhbSB7Vk5vZGV9IHZub2RlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBseVJlZihyZWYsIHZhbHVlLCB2bm9kZSkge1xuXHR0cnkge1xuXHRcdGlmICh0eXBlb2YgcmVmID09ICdmdW5jdGlvbicpIHtcblx0XHRcdGxldCBoYXNSZWZVbm1vdW50ID0gdHlwZW9mIHJlZi5fdW5tb3VudCA9PSAnZnVuY3Rpb24nO1xuXHRcdFx0aWYgKGhhc1JlZlVubW91bnQpIHtcblx0XHRcdFx0Ly8gQHRzLWlnbm9yZSBUUyBkb2Vzbid0IGxpa2UgbW92aW5nIG5hcnJvd2luZyBjaGVja3MgaW50byB2YXJpYWJsZXNcblx0XHRcdFx0cmVmLl91bm1vdW50KCk7XG5cdFx0XHR9XG5cblx0XHRcdGlmICghaGFzUmVmVW5tb3VudCB8fCB2YWx1ZSAhPSBOVUxMKSB7XG5cdFx0XHRcdC8vIFN0b3JlIHRoZSBjbGVhbnVwIGZ1bmN0aW9uIG9uIHRoZSBmdW5jdGlvblxuXHRcdFx0XHQvLyBpbnN0YW5jZSBvYmplY3QgaXRzZWxmIHRvIGF2b2lkIHNoYXBlXG5cdFx0XHRcdC8vIHRyYW5zaXRpb25pbmcgdm5vZGVcblx0XHRcdFx0cmVmLl91bm1vdW50ID0gcmVmKHZhbHVlKTtcblx0XHRcdH1cblx0XHR9IGVsc2UgcmVmLmN1cnJlbnQgPSB2YWx1ZTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdG9wdGlvbnMuX2NhdGNoRXJyb3IoZSwgdm5vZGUpO1xuXHR9XG59XG5cbi8qKlxuICogVW5tb3VudCBhIHZpcnR1YWwgbm9kZSBmcm9tIHRoZSB0cmVlIGFuZCBhcHBseSBET00gY2hhbmdlc1xuICogQHBhcmFtIHtWTm9kZX0gdm5vZGUgVGhlIHZpcnR1YWwgbm9kZSB0byB1bm1vdW50XG4gKiBAcGFyYW0ge1ZOb2RlfSBwYXJlbnRWTm9kZSBUaGUgcGFyZW50IG9mIHRoZSBWTm9kZSB0aGF0IGluaXRpYXRlZCB0aGUgdW5tb3VudFxuICogQHBhcmFtIHtib29sZWFufSBbc2tpcFJlbW92ZV0gRmxhZyB0aGF0IGluZGljYXRlcyB0aGF0IGEgcGFyZW50IG5vZGUgb2YgdGhlXG4gKiBjdXJyZW50IGVsZW1lbnQgaXMgYWxyZWFkeSBkZXRhY2hlZCBmcm9tIHRoZSBET00uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bm1vdW50KHZub2RlLCBwYXJlbnRWTm9kZSwgc2tpcFJlbW92ZSkge1xuXHRsZXQgcjtcblx0aWYgKG9wdGlvbnMudW5tb3VudCkgb3B0aW9ucy51bm1vdW50KHZub2RlKTtcblxuXHRpZiAoKHIgPSB2bm9kZS5yZWYpKSB7XG5cdFx0aWYgKCFyLmN1cnJlbnQgfHwgci5jdXJyZW50ID09IHZub2RlLl9kb20pIHtcblx0XHRcdGFwcGx5UmVmKHIsIE5VTEwsIHBhcmVudFZOb2RlKTtcblx0XHR9XG5cdH1cblxuXHRpZiAoKHIgPSB2bm9kZS5fY29tcG9uZW50KSAhPSBOVUxMKSB7XG5cdFx0aWYgKHIuY29tcG9uZW50V2lsbFVubW91bnQpIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdHIuY29tcG9uZW50V2lsbFVubW91bnQoKTtcblx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0b3B0aW9ucy5fY2F0Y2hFcnJvcihlLCBwYXJlbnRWTm9kZSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0ci5iYXNlID0gci5fcGFyZW50RG9tID0gTlVMTDtcblx0fVxuXG5cdGlmICgociA9IHZub2RlLl9jaGlsZHJlbikpIHtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHIubGVuZ3RoOyBpKyspIHtcblx0XHRcdGlmIChyW2ldKSB7XG5cdFx0XHRcdHVubW91bnQoXG5cdFx0XHRcdFx0cltpXSxcblx0XHRcdFx0XHRwYXJlbnRWTm9kZSxcblx0XHRcdFx0XHRza2lwUmVtb3ZlIHx8IHR5cGVvZiB2bm9kZS50eXBlICE9ICdmdW5jdGlvbidcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRpZiAoIXNraXBSZW1vdmUpIHtcblx0XHRyZW1vdmVOb2RlKHZub2RlLl9kb20pO1xuXHR9XG5cblx0dm5vZGUuX2NvbXBvbmVudCA9IHZub2RlLl9wYXJlbnQgPSB2bm9kZS5fZG9tID0gVU5ERUZJTkVEO1xufVxuXG4vKiogVGhlIGAucmVuZGVyKClgIG1ldGhvZCBmb3IgYSBQRkMgYmFja2luZyBpbnN0YW5jZS4gKi9cbmZ1bmN0aW9uIGRvUmVuZGVyKHByb3BzLCBzdGF0ZSwgY29udGV4dCkge1xuXHRyZXR1cm4gdGhpcy5jb25zdHJ1Y3Rvcihwcm9wcywgY29udGV4dCk7XG59XG4iLCJpbXBvcnQgeyBFTVBUWV9PQkosIE5VTEwgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBjb21taXRSb290LCBkaWZmIH0gZnJvbSAnLi9kaWZmL2luZGV4JztcbmltcG9ydCB7IGNyZWF0ZUVsZW1lbnQsIEZyYWdtZW50IH0gZnJvbSAnLi9jcmVhdGUtZWxlbWVudCc7XG5pbXBvcnQgb3B0aW9ucyBmcm9tICcuL29wdGlvbnMnO1xuaW1wb3J0IHsgc2xpY2UgfSBmcm9tICcuL3V0aWwnO1xuXG4vKipcbiAqIFJlbmRlciBhIFByZWFjdCB2aXJ0dWFsIG5vZGUgaW50byBhIERPTSBlbGVtZW50XG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkNvbXBvbmVudENoaWxkfSB2bm9kZSBUaGUgdmlydHVhbCBub2RlIHRvIHJlbmRlclxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5QcmVhY3RFbGVtZW50fSBwYXJlbnREb20gVGhlIERPTSBlbGVtZW50IHRvIHJlbmRlciBpbnRvXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbnRlcm5hbCcpLlByZWFjdEVsZW1lbnQgfCBvYmplY3R9IFtyZXBsYWNlTm9kZV0gT3B0aW9uYWw6IEF0dGVtcHQgdG8gcmUtdXNlIGFuXG4gKiBleGlzdGluZyBET00gdHJlZSByb290ZWQgYXQgYHJlcGxhY2VOb2RlYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyKHZub2RlLCBwYXJlbnREb20sIHJlcGxhY2VOb2RlKSB7XG5cdC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wcmVhY3Rqcy9wcmVhY3QvaXNzdWVzLzM3OTRcblx0aWYgKHBhcmVudERvbSA9PSBkb2N1bWVudCkge1xuXHRcdHBhcmVudERvbSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcblx0fVxuXG5cdGlmIChvcHRpb25zLl9yb290KSBvcHRpb25zLl9yb290KHZub2RlLCBwYXJlbnREb20pO1xuXG5cdC8vIFdlIGFidXNlIHRoZSBgcmVwbGFjZU5vZGVgIHBhcmFtZXRlciBpbiBgaHlkcmF0ZSgpYCB0byBzaWduYWwgaWYgd2UgYXJlIGluXG5cdC8vIGh5ZHJhdGlvbiBtb2RlIG9yIG5vdCBieSBwYXNzaW5nIHRoZSBgaHlkcmF0ZWAgZnVuY3Rpb24gaW5zdGVhZCBvZiBhIERPTVxuXHQvLyBlbGVtZW50Li5cblx0bGV0IGlzSHlkcmF0aW5nID0gdHlwZW9mIHJlcGxhY2VOb2RlID09ICdmdW5jdGlvbic7XG5cblx0Ly8gVG8gYmUgYWJsZSB0byBzdXBwb3J0IGNhbGxpbmcgYHJlbmRlcigpYCBtdWx0aXBsZSB0aW1lcyBvbiB0aGUgc2FtZVxuXHQvLyBET00gbm9kZSwgd2UgbmVlZCB0byBvYnRhaW4gYSByZWZlcmVuY2UgdG8gdGhlIHByZXZpb3VzIHRyZWUuIFdlIGRvXG5cdC8vIHRoaXMgYnkgYXNzaWduaW5nIGEgbmV3IGBfY2hpbGRyZW5gIHByb3BlcnR5IHRvIERPTSBub2RlcyB3aGljaCBwb2ludHNcblx0Ly8gdG8gdGhlIGxhc3QgcmVuZGVyZWQgdHJlZS4gQnkgZGVmYXVsdCB0aGlzIHByb3BlcnR5IGlzIG5vdCBwcmVzZW50LCB3aGljaFxuXHQvLyBtZWFucyB0aGF0IHdlIGFyZSBtb3VudGluZyBhIG5ldyB0cmVlIGZvciB0aGUgZmlyc3QgdGltZS5cblx0bGV0IG9sZFZOb2RlID0gaXNIeWRyYXRpbmdcblx0XHQ/IE5VTExcblx0XHQ6IChyZXBsYWNlTm9kZSAmJiByZXBsYWNlTm9kZS5fY2hpbGRyZW4pIHx8IHBhcmVudERvbS5fY2hpbGRyZW47XG5cblx0dm5vZGUgPSAoKCFpc0h5ZHJhdGluZyAmJiByZXBsYWNlTm9kZSkgfHwgcGFyZW50RG9tKS5fY2hpbGRyZW4gPVxuXHRcdGNyZWF0ZUVsZW1lbnQoRnJhZ21lbnQsIE5VTEwsIFt2bm9kZV0pO1xuXG5cdC8vIExpc3Qgb2YgZWZmZWN0cyB0aGF0IG5lZWQgdG8gYmUgY2FsbGVkIGFmdGVyIGRpZmZpbmcuXG5cdGxldCBjb21taXRRdWV1ZSA9IFtdLFxuXHRcdHJlZlF1ZXVlID0gW107XG5cdGRpZmYoXG5cdFx0cGFyZW50RG9tLFxuXHRcdC8vIERldGVybWluZSB0aGUgbmV3IHZub2RlIHRyZWUgYW5kIHN0b3JlIGl0IG9uIHRoZSBET00gZWxlbWVudCBvblxuXHRcdC8vIG91ciBjdXN0b20gYF9jaGlsZHJlbmAgcHJvcGVydHkuXG5cdFx0dm5vZGUsXG5cdFx0b2xkVk5vZGUgfHwgRU1QVFlfT0JKLFxuXHRcdEVNUFRZX09CSixcblx0XHRwYXJlbnREb20ubmFtZXNwYWNlVVJJLFxuXHRcdCFpc0h5ZHJhdGluZyAmJiByZXBsYWNlTm9kZVxuXHRcdFx0PyBbcmVwbGFjZU5vZGVdXG5cdFx0XHQ6IG9sZFZOb2RlXG5cdFx0XHRcdD8gTlVMTFxuXHRcdFx0XHQ6IHBhcmVudERvbS5maXJzdENoaWxkXG5cdFx0XHRcdFx0PyBzbGljZS5jYWxsKHBhcmVudERvbS5jaGlsZE5vZGVzKVxuXHRcdFx0XHRcdDogTlVMTCxcblx0XHRjb21taXRRdWV1ZSxcblx0XHQhaXNIeWRyYXRpbmcgJiYgcmVwbGFjZU5vZGVcblx0XHRcdD8gcmVwbGFjZU5vZGVcblx0XHRcdDogb2xkVk5vZGVcblx0XHRcdFx0PyBvbGRWTm9kZS5fZG9tXG5cdFx0XHRcdDogcGFyZW50RG9tLmZpcnN0Q2hpbGQsXG5cdFx0aXNIeWRyYXRpbmcsXG5cdFx0cmVmUXVldWVcblx0KTtcblxuXHQvLyBGbHVzaCBhbGwgcXVldWVkIGVmZmVjdHNcblx0Y29tbWl0Um9vdChjb21taXRRdWV1ZSwgdm5vZGUsIHJlZlF1ZXVlKTtcbn1cblxuLyoqXG4gKiBVcGRhdGUgYW4gZXhpc3RpbmcgRE9NIGVsZW1lbnQgd2l0aCBkYXRhIGZyb20gYSBQcmVhY3QgdmlydHVhbCBub2RlXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkNvbXBvbmVudENoaWxkfSB2bm9kZSBUaGUgdmlydHVhbCBub2RlIHRvIHJlbmRlclxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5QcmVhY3RFbGVtZW50fSBwYXJlbnREb20gVGhlIERPTSBlbGVtZW50IHRvIHVwZGF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaHlkcmF0ZSh2bm9kZSwgcGFyZW50RG9tKSB7XG5cdHJlbmRlcih2bm9kZSwgcGFyZW50RG9tLCBoeWRyYXRlKTtcbn1cbiIsImltcG9ydCB7IGFzc2lnbiwgc2xpY2UgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHsgY3JlYXRlVk5vZGUgfSBmcm9tICcuL2NyZWF0ZS1lbGVtZW50JztcbmltcG9ydCB7IE5VTEwsIFVOREVGSU5FRCB9IGZyb20gJy4vY29uc3RhbnRzJztcblxuLyoqXG4gKiBDbG9uZXMgdGhlIGdpdmVuIFZOb2RlLCBvcHRpb25hbGx5IGFkZGluZyBhdHRyaWJ1dGVzL3Byb3BzIGFuZCByZXBsYWNpbmcgaXRzXG4gKiBjaGlsZHJlbi5cbiAqIEBwYXJhbSB7aW1wb3J0KCcuL2ludGVybmFsJykuVk5vZGV9IHZub2RlIFRoZSB2aXJ0dWFsIERPTSBlbGVtZW50IHRvIGNsb25lXG4gKiBAcGFyYW0ge29iamVjdH0gcHJvcHMgQXR0cmlidXRlcy9wcm9wcyB0byBhZGQgd2hlbiBjbG9uaW5nXG4gKiBAcGFyYW0ge0FycmF5PGltcG9ydCgnLi9pbnRlcm5hbCcpLkNvbXBvbmVudENoaWxkcmVuPn0gcmVzdCBBbnkgYWRkaXRpb25hbCBhcmd1bWVudHMgd2lsbCBiZSB1c2VkXG4gKiBhcyByZXBsYWNlbWVudCBjaGlsZHJlbi5cbiAqIEByZXR1cm5zIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5WTm9kZX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsb25lRWxlbWVudCh2bm9kZSwgcHJvcHMsIGNoaWxkcmVuKSB7XG5cdGxldCBub3JtYWxpemVkUHJvcHMgPSBhc3NpZ24oe30sIHZub2RlLnByb3BzKSxcblx0XHRrZXksXG5cdFx0cmVmLFxuXHRcdGk7XG5cblx0bGV0IGRlZmF1bHRQcm9wcztcblxuXHRpZiAodm5vZGUudHlwZSAmJiB2bm9kZS50eXBlLmRlZmF1bHRQcm9wcykge1xuXHRcdGRlZmF1bHRQcm9wcyA9IHZub2RlLnR5cGUuZGVmYXVsdFByb3BzO1xuXHR9XG5cblx0Zm9yIChpIGluIHByb3BzKSB7XG5cdFx0aWYgKGkgPT0gJ2tleScpIGtleSA9IHByb3BzW2ldO1xuXHRcdGVsc2UgaWYgKGkgPT0gJ3JlZicpIHJlZiA9IHByb3BzW2ldO1xuXHRcdGVsc2UgaWYgKHByb3BzW2ldID09IFVOREVGSU5FRCAmJiBkZWZhdWx0UHJvcHMgIT0gVU5ERUZJTkVEKSB7XG5cdFx0XHRub3JtYWxpemVkUHJvcHNbaV0gPSBkZWZhdWx0UHJvcHNbaV07XG5cdFx0fSBlbHNlIHtcblx0XHRcdG5vcm1hbGl6ZWRQcm9wc1tpXSA9IHByb3BzW2ldO1xuXHRcdH1cblx0fVxuXG5cdGlmIChhcmd1bWVudHMubGVuZ3RoID4gMikge1xuXHRcdG5vcm1hbGl6ZWRQcm9wcy5jaGlsZHJlbiA9XG5cdFx0XHRhcmd1bWVudHMubGVuZ3RoID4gMyA/IHNsaWNlLmNhbGwoYXJndW1lbnRzLCAyKSA6IGNoaWxkcmVuO1xuXHR9XG5cblx0cmV0dXJuIGNyZWF0ZVZOb2RlKFxuXHRcdHZub2RlLnR5cGUsXG5cdFx0bm9ybWFsaXplZFByb3BzLFxuXHRcdGtleSB8fCB2bm9kZS5rZXksXG5cdFx0cmVmIHx8IHZub2RlLnJlZixcblx0XHROVUxMXG5cdCk7XG59XG4iLCJpbXBvcnQgeyBOVUxMIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcblxuLyoqXG4gKiBGaW5kIHRoZSBjbG9zZXN0IGVycm9yIGJvdW5kYXJ5IHRvIGEgdGhyb3duIGVycm9yIGFuZCBjYWxsIGl0XG4gKiBAcGFyYW0ge29iamVjdH0gZXJyb3IgVGhlIHRocm93biB2YWx1ZVxuICogQHBhcmFtIHtpbXBvcnQoJy4uL2ludGVybmFsJykuVk5vZGV9IHZub2RlIFRoZSB2bm9kZSB0aGF0IHRocmV3IHRoZSBlcnJvciB0aGF0IHdhcyBjYXVnaHQgKGV4Y2VwdFxuICogZm9yIHVubW91bnRpbmcgd2hlbiB0aGlzIHBhcmFtZXRlciBpcyB0aGUgaGlnaGVzdCBwYXJlbnQgdGhhdCB3YXMgYmVpbmdcbiAqIHVubW91bnRlZClcbiAqIEBwYXJhbSB7aW1wb3J0KCcuLi9pbnRlcm5hbCcpLlZOb2RlfSBbb2xkVk5vZGVdXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi4vaW50ZXJuYWwnKS5FcnJvckluZm99IFtlcnJvckluZm9dXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBfY2F0Y2hFcnJvcihlcnJvciwgdm5vZGUsIG9sZFZOb2RlLCBlcnJvckluZm8pIHtcblx0LyoqIEB0eXBlIHtpbXBvcnQoJy4uL2ludGVybmFsJykuQ29tcG9uZW50fSAqL1xuXHRsZXQgY29tcG9uZW50LFxuXHRcdC8qKiBAdHlwZSB7aW1wb3J0KCcuLi9pbnRlcm5hbCcpLkNvbXBvbmVudFR5cGV9ICovXG5cdFx0Y3Rvcixcblx0XHQvKiogQHR5cGUge2Jvb2xlYW59ICovXG5cdFx0aGFuZGxlZDtcblxuXHRmb3IgKDsgKHZub2RlID0gdm5vZGUuX3BhcmVudCk7ICkge1xuXHRcdGlmICgoY29tcG9uZW50ID0gdm5vZGUuX2NvbXBvbmVudCkgJiYgIWNvbXBvbmVudC5fcHJvY2Vzc2luZ0V4Y2VwdGlvbikge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y3RvciA9IGNvbXBvbmVudC5jb25zdHJ1Y3RvcjtcblxuXHRcdFx0XHRpZiAoY3RvciAmJiBjdG9yLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvciAhPSBOVUxMKSB7XG5cdFx0XHRcdFx0Y29tcG9uZW50LnNldFN0YXRlKGN0b3IuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yKGVycm9yKSk7XG5cdFx0XHRcdFx0aGFuZGxlZCA9IGNvbXBvbmVudC5fZGlydHk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoY29tcG9uZW50LmNvbXBvbmVudERpZENhdGNoICE9IE5VTEwpIHtcblx0XHRcdFx0XHRjb21wb25lbnQuY29tcG9uZW50RGlkQ2F0Y2goZXJyb3IsIGVycm9ySW5mbyB8fCB7fSk7XG5cdFx0XHRcdFx0aGFuZGxlZCA9IGNvbXBvbmVudC5fZGlydHk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBUaGlzIGlzIGFuIGVycm9yIGJvdW5kYXJ5LiBNYXJrIGl0IGFzIGhhdmluZyBiYWlsZWQgb3V0LCBhbmQgd2hldGhlciBpdCB3YXMgbWlkLWh5ZHJhdGlvbi5cblx0XHRcdFx0aWYgKGhhbmRsZWQpIHtcblx0XHRcdFx0XHRyZXR1cm4gKGNvbXBvbmVudC5fcGVuZGluZ0Vycm9yID0gY29tcG9uZW50KTtcblx0XHRcdFx0fVxuXHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRlcnJvciA9IGU7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0dGhyb3cgZXJyb3I7XG59XG4iXSwibmFtZXMiOlsic2xpY2UiLCJvcHRpb25zIiwidm5vZGVJZCIsImlzVmFsaWRFbGVtZW50IiwicmVyZW5kZXJRdWV1ZSIsInByZXZEZWJvdW5jZSIsImRlZmVyIiwiZGVwdGhTb3J0IiwiQ0FQVFVSRV9SRUdFWCIsImV2ZW50Q2xvY2siLCJldmVudFByb3h5IiwiZXZlbnRQcm94eUNhcHR1cmUiLCJpIiwiRU1QVFlfT0JKIiwiRU1QVFlfQVJSIiwiSVNfTk9OX0RJTUVOU0lPTkFMIiwiaXNBcnJheSIsIkFycmF5IiwiYXNzaWduIiwib2JqIiwicHJvcHMiLCJyZW1vdmVOb2RlIiwibm9kZSIsInBhcmVudE5vZGUiLCJyZW1vdmVDaGlsZCIsImNyZWF0ZUVsZW1lbnQiLCJ0eXBlIiwiY2hpbGRyZW4iLCJrZXkiLCJyZWYiLCJub3JtYWxpemVkUHJvcHMiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJjYWxsIiwiZGVmYXVsdFByb3BzIiwidW5kZWZpbmVkIiwiY3JlYXRlVk5vZGUiLCJvcmlnaW5hbCIsInZub2RlIiwiX19rIiwiX18iLCJfX2IiLCJfX2UiLCJfX2MiLCJjb25zdHJ1Y3RvciIsIl9fdiIsIl9faSIsIl9fdSIsImNyZWF0ZVJlZiIsImN1cnJlbnQiLCJGcmFnbWVudCIsIkJhc2VDb21wb25lbnQiLCJjb250ZXh0IiwidGhpcyIsImdldERvbVNpYmxpbmciLCJjaGlsZEluZGV4Iiwic2libGluZyIsInVwZGF0ZVBhcmVudERvbVBvaW50ZXJzIiwiY2hpbGQiLCJiYXNlIiwiZW5xdWV1ZVJlbmRlciIsImMiLCJfX2QiLCJwdXNoIiwicHJvY2VzcyIsIl9fciIsImRlYm91bmNlUmVuZGVyaW5nIiwiY29tcG9uZW50IiwibmV3Vk5vZGUiLCJvbGRWTm9kZSIsIm9sZERvbSIsImNvbW1pdFF1ZXVlIiwicmVmUXVldWUiLCJsIiwic29ydCIsInNoaWZ0IiwiX19QIiwiZGlmZiIsIl9fbiIsIm5hbWVzcGFjZVVSSSIsImNvbW1pdFJvb3QiLCJkaWZmQ2hpbGRyZW4iLCJwYXJlbnREb20iLCJyZW5kZXJSZXN1bHQiLCJuZXdQYXJlbnRWTm9kZSIsIm9sZFBhcmVudFZOb2RlIiwiZ2xvYmFsQ29udGV4dCIsIm5hbWVzcGFjZSIsImV4Y2Vzc0RvbUNoaWxkcmVuIiwiaXNIeWRyYXRpbmciLCJjaGlsZFZOb2RlIiwibmV3RG9tIiwiZmlyc3RDaGlsZERvbSIsInJlc3VsdCIsIm9sZENoaWxkcmVuIiwibmV3Q2hpbGRyZW5MZW5ndGgiLCJjb25zdHJ1Y3ROZXdDaGlsZHJlbkFycmF5IiwiYXBwbHlSZWYiLCJpbnNlcnQiLCJuZXh0U2libGluZyIsInNrZXdlZEluZGV4IiwibWF0Y2hpbmdJbmRleCIsIm9sZENoaWxkcmVuTGVuZ3RoIiwicmVtYWluaW5nT2xkQ2hpbGRyZW4iLCJza2V3IiwiU3RyaW5nIiwiZmluZE1hdGNoaW5nSW5kZXgiLCJ1bm1vdW50IiwicGFyZW50Vk5vZGUiLCJjb250YWlucyIsImluc2VydEJlZm9yZSIsIm5vZGVUeXBlIiwidG9DaGlsZEFycmF5Iiwib3V0Iiwic29tZSIsIngiLCJ5Iiwic2V0U3R5bGUiLCJzdHlsZSIsInZhbHVlIiwic2V0UHJvcGVydHkiLCJ0ZXN0IiwiZG9tIiwibmFtZSIsIm9sZFZhbHVlIiwidXNlQ2FwdHVyZSIsIm8iLCJjc3NUZXh0IiwicmVwbGFjZSIsInRvTG93ZXJDYXNlIiwiX2F0dGFjaGVkIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJlIiwicmVtb3ZlQXR0cmlidXRlIiwic2V0QXR0cmlidXRlIiwiY3JlYXRlRXZlbnRQcm94eSIsImV2ZW50SGFuZGxlciIsIl9kaXNwYXRjaGVkIiwiZXZlbnQiLCJ0bXAiLCJpc05ldyIsIm9sZFByb3BzIiwib2xkU3RhdGUiLCJzbmFwc2hvdCIsImNsZWFyUHJvY2Vzc2luZ0V4Y2VwdGlvbiIsIm5ld1Byb3BzIiwiaXNDbGFzc0NvbXBvbmVudCIsInByb3ZpZGVyIiwiY29tcG9uZW50Q29udGV4dCIsInJlbmRlckhvb2siLCJjb3VudCIsIm5ld1R5cGUiLCJvdXRlciIsInByb3RvdHlwZSIsInJlbmRlciIsImNvbnRleHRUeXBlIiwiX19FIiwiZG9SZW5kZXIiLCJzdWIiLCJzdGF0ZSIsIl9faCIsIl9zYiIsIl9fcyIsImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyIsImNvbXBvbmVudFdpbGxNb3VudCIsImNvbXBvbmVudERpZE1vdW50IiwiY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyIsInNob3VsZENvbXBvbmVudFVwZGF0ZSIsImNvbXBvbmVudFdpbGxVcGRhdGUiLCJjb21wb25lbnREaWRVcGRhdGUiLCJnZXRDaGlsZENvbnRleHQiLCJnZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSIsImNsb25lTm9kZSIsInRoZW4iLCJNT0RFX0hZRFJBVEUiLCJpbmRleE9mIiwiZGlmZkVsZW1lbnROb2RlcyIsImRpZmZlZCIsInJvb3QiLCJjYiIsIm1hcCIsIm5ld0h0bWwiLCJvbGRIdG1sIiwibmV3Q2hpbGRyZW4iLCJpbnB1dFZhbHVlIiwiY2hlY2tlZCIsImxvY2FsTmFtZSIsImRvY3VtZW50IiwiY3JlYXRlVGV4dE5vZGUiLCJjcmVhdGVFbGVtZW50TlMiLCJpcyIsIl9fbSIsImRhdGEiLCJjaGlsZE5vZGVzIiwiYXR0cmlidXRlcyIsIl9faHRtbCIsImlubmVySFRNTCIsImNvbnRlbnQiLCJoYXNSZWZVbm1vdW50Iiwic2tpcFJlbW92ZSIsInIiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsInJlcGxhY2VOb2RlIiwiZG9jdW1lbnRFbGVtZW50IiwiZmlyc3RDaGlsZCIsImh5ZHJhdGUiLCJjbG9uZUVsZW1lbnQiLCJjcmVhdGVDb250ZXh0IiwiZGVmYXVsdFZhbHVlIiwiQ29udGV4dCIsInN1YnMiLCJjdHgiLCJTZXQiLCJfcHJvcHMiLCJmb3JFYWNoIiwiYWRkIiwib2xkIiwiZGVsZXRlIiwiUHJvdmlkZXIiLCJfX2wiLCJDb25zdW1lciIsImNvbnRleHRWYWx1ZSIsImVycm9yIiwiZXJyb3JJbmZvIiwiY3RvciIsImhhbmRsZWQiLCJnZXREZXJpdmVkU3RhdGVGcm9tRXJyb3IiLCJzZXRTdGF0ZSIsImNvbXBvbmVudERpZENhdGNoIiwidXBkYXRlIiwiY2FsbGJhY2siLCJzIiwiZm9yY2VVcGRhdGUiLCJQcm9taXNlIiwiYmluZCIsInJlc29sdmUiLCJzZXRUaW1lb3V0IiwiYSIsImIiXSwibWFwcGluZ3MiOiJBQUNPLElDMEJNQSxFQ2hCUEMsRUNQRkMsRUEyRlNDLEVDbUZUQyxFQVdBQyxFQUVFQyxFQTBCQUMsRUMxTUFDLEVBYUZDLEVBa0pFQyxFQUNBQyxFQzVLS0MsRU5lRUMsRUFBZ0MsQ0FBRyxFQUNuQ0MsRUFBWSxHQUNaQyxFQUNaLG9FQ25CWUMsRUFBVUMsTUFBTUQsUUFTdEIsU0FBU0UsRUFBT0MsRUFBS0MsR0FFM0IsSUFBSyxJQUFJUixLQUFLUSxFQUFPRCxFQUFJUCxHQUFLUSxFQUFNUixHQUNwQyxPQUE2Qk8sQ0FDOUIsQ0FRZ0IsU0FBQUUsRUFBV0MsR0FDdEJBLEdBQVFBLEVBQUtDLFlBQVlELEVBQUtDLFdBQVdDLFlBQVlGLEVBQzFELENFVmdCLFNBQUFHLEVBQWNDLEVBQU1OLEVBQU9PLEdBQzFDLElBQ0NDLEVBQ0FDLEVBQ0FqQixFQUhHa0IsRUFBa0IsQ0FBQSxFQUl0QixJQUFLbEIsS0FBS1EsRUFDQSxPQUFMUixFQUFZZ0IsRUFBTVIsRUFBTVIsR0FDZCxPQUFMQSxFQUFZaUIsRUFBTVQsRUFBTVIsR0FDNUJrQixFQUFnQmxCLEdBQUtRLEVBQU1SLEdBVWpDLEdBUEltQixVQUFVQyxPQUFTLElBQ3RCRixFQUFnQkgsU0FDZkksVUFBVUMsT0FBUyxFQUFJaEMsRUFBTWlDLEtBQUtGLFVBQVcsR0FBS0osR0FLakMsbUJBQVJELEdIakJRLE1HaUJjQSxFQUFLUSxhQUNyQyxJQUFLdEIsS0FBS2MsRUFBS1EsYUhqQlFDLE1Ha0JsQkwsRUFBZ0JsQixLQUNuQmtCLEVBQWdCbEIsR0FBS2MsRUFBS1EsYUFBYXRCLElBSzFDLE9BQU93QixFQUFZVixFQUFNSSxFQUFpQkYsRUFBS0MsRUh6QjVCLEtHMEJwQixDQWNnQixTQUFBTyxFQUFZVixFQUFNTixFQUFPUSxFQUFLQyxFQUFLUSxHQUlsRCxJQUFNQyxFQUFRLENBQ2JaLEtBQUFBLEVBQ0FOLE1BQUFBLEVBQ0FRLElBQUFBLEVBQ0FDLElBQUFBLEVBQ0FVLElIakRrQixLR2tEbEJDLEdIbERrQixLR21EbEJDLElBQVEsRUFDUkMsSUhwRGtCLEtHcURsQkMsSUhyRGtCLEtHc0RsQkMsaUJIckR1QlQsRUdzRHZCVSxJSHZEa0IsTUd1RFBSLElBQXFCbkMsRUFBVW1DLEVBQzFDUyxLQUFTLEVBQ1RDLElBQVEsR0FNVCxPSC9EbUIsTUc2RGZWLEdIN0RlLE1HNkRLcEMsRUFBUXFDLE9BQWVyQyxFQUFRcUMsTUFBTUEsR0FFdERBLENBQ1IsVUFFZ0JVLElBQ2YsTUFBTyxDQUFFQyxRSG5FVSxLR29FcEIsQ0FFZ0IsU0FBQUMsRUFBUzlCLEdBQ3hCLE9BQU9BLEVBQU1PLFFBQ2QsQ0MzRU8sU0FBU3dCLEVBQWMvQixFQUFPZ0MsR0FDcENDLEtBQUtqQyxNQUFRQSxFQUNiaUMsS0FBS0QsUUFBVUEsQ0FDaEIsVUEwRWdCRSxFQUFjaEIsRUFBT2lCLEdBQ3BDLEdKM0VtQixNSTJFZkEsRUFFSCxPQUFPakIsRUFBS0UsR0FDVGMsRUFBY2hCLEVBQUtFLEdBQVVGLEVBQUtRLElBQVUsR0o5RTdCLEtJbUZuQixJQURBLElBQUlVLEVBQ0dELEVBQWFqQixFQUFLQyxJQUFXUCxPQUFRdUIsSUFHM0MsR0p0RmtCLE9Jb0ZsQkMsRUFBVWxCLEVBQUtDLElBQVdnQixLSnBGUixNSXNGS0MsRUFBT2QsSUFJN0IsT0FBT2MsRUFBT2QsSUFTaEIsTUFBNEIsbUJBQWRKLEVBQU1aLEtBQXFCNEIsRUFBY2hCLEdKbkdwQyxJSW9HcEIsQ0EyQ0EsU0FBU21CLEVBQXdCbkIsR0FBakMsSUFHVzFCLEVBQ0o4QyxFQUhOLEdKaEptQixPSWdKZHBCLEVBQVFBLEVBQUtFLEtKaEpDLE1JZ0pvQkYsRUFBS0ssSUFBcUIsQ0FFaEUsSUFEQUwsRUFBS0ksSUFBUUosRUFBS0ssSUFBWWdCLEtKakpaLEtJa0pUL0MsRUFBSSxFQUFHQSxFQUFJMEIsRUFBS0MsSUFBV1AsT0FBUXBCLElBRTNDLEdKcEppQixPSW1KYjhDLEVBQVFwQixFQUFLQyxJQUFXM0IsS0puSlgsTUlvSkk4QyxFQUFLaEIsSUFBZSxDQUN4Q0osRUFBS0ksSUFBUUosRUFBS0ssSUFBWWdCLEtBQU9ELEVBQUtoQixJQUMxQyxLQUNELENBR0QsT0FBT2UsRUFBd0JuQixFQUNoQyxDQUNELENBNEJnQixTQUFBc0IsRUFBY0MsS0FFMUJBLEVBQUNDLE1BQ0RELEVBQUNDLEtBQVUsSUFDWjFELEVBQWMyRCxLQUFLRixLQUNsQkcsRUFBT0MsT0FDVDVELEdBQWdCSixFQUFRaUUsc0JBRXhCN0QsRUFBZUosRUFBUWlFLG9CQUNONUQsR0FBTzBELEVBRTFCLENBU0EsU0FBU0EsSUFNUixJQUxBLElBQUlILEVBbkdvQk0sRUFPakJDLEVBTkhDLEVBQ0hDLEVBQ0FDLEVBQ0FDLEVBZ0dBQyxFQUFJLEVBSUVyRSxFQUFjNEIsUUFPaEI1QixFQUFjNEIsT0FBU3lDLEdBQzFCckUsRUFBY3NFLEtBQUtuRSxHQUdwQnNELEVBQUl6RCxFQUFjdUUsUUFDbEJGLEVBQUlyRSxFQUFjNEIsT0FFZDZCLEVBQUNDLE1BL0dDTSxTQUxORSxHQURHRCxHQURvQkYsRUF1SE5OLEdBdEhNaEIsS0FDTkgsSUFDakI2QixFQUFjLEdBQ2RDLEVBQVcsR0FFUkwsRUFBU1MsT0FDTlIsRUFBV2xELEVBQU8sR0FBSW1ELElBQ3BCeEIsSUFBYXdCLEVBQVF4QixJQUFhLEVBQ3RDNUMsRUFBUXFDLE9BQU9yQyxFQUFRcUMsTUFBTThCLEdBRWpDUyxFQUNDVixFQUFTUyxJQUNUUixFQUNBQyxFQUNBRixFQUFTVyxJQUNUWCxFQUFTUyxJQUFZRyxhSnpJSSxHSTBJekJWLEVBQVF0QixJQUF5QixDQUFDdUIsR0ozSGpCLEtJNEhqQkMsRUo1SGlCLE1JNkhqQkQsRUFBaUJoQixFQUFjZSxHQUFZQyxLSjVJbEIsR0k2SXRCRCxFQUFRdEIsS0FDWHlCLEdBR0RKLEVBQVF2QixJQUFhd0IsRUFBUXhCLElBQzdCdUIsRUFBUTVCLEdBQUFELElBQW1CNkIsRUFBUXRCLEtBQVdzQixFQUM5Q1ksRUFBV1QsRUFBYUgsRUFBVUksR0FFOUJKLEVBQVExQixLQUFTNEIsR0FDcEJiLEVBQXdCVyxLQTZGMUJKLEVBQU9DLElBQWtCLENBQzFCLFVHM01nQmdCLEVBQ2ZDLEVBQ0FDLEVBQ0FDLEVBQ0FDLEVBQ0FDLEVBQ0FDLEVBQ0FDLEVBQ0FqQixFQUNBRCxFQUNBbUIsRUFDQWpCLE9BRUk1RCxFQUVIeUQsRUFFQXFCLEVBRUFDLEVBRUFDLEVBaUNJQyxFQTVCREMsRUFBZVQsR0FBa0JBLEVBQWM5QyxLQUFlekIsRUFFOURpRixFQUFvQlosRUFBYW5ELE9BVXJDLElBUkFzQyxFQUFTMEIsRUFDUlosRUFDQUQsRUFDQVcsRUFDQXhCLEVBQ0F5QixHQUdJbkYsRUFBSSxFQUFHQSxFQUFJbUYsRUFBbUJuRixJUGhFaEIsT09pRWxCOEUsRUFBYU4sRUFBYzdDLElBQVczQixNQU1yQ3lELEdBRHlCLEdBQXRCcUIsRUFBVTVDLElBQ0ZqQyxFQUVBaUYsRUFBWUosRUFBVTVDLE1BQVlqQyxFQUk5QzZFLEVBQVU1QyxJQUFVbEMsRUFHaEJpRixFQUFTaEIsRUFDWkssRUFDQVEsRUFDQXJCLEVBQ0FpQixFQUNBQyxFQUNBQyxFQUNBakIsRUFDQUQsRUFDQW1CLEVBQ0FqQixHQUlEbUIsRUFBU0QsRUFBVWhELElBQ2ZnRCxFQUFXN0QsS0FBT3dDLEVBQVN4QyxLQUFPNkQsRUFBVzdELE1BQzVDd0MsRUFBU3hDLEtBQ1pvRSxFQUFTNUIsRUFBU3hDLElQakdGLEtPaUdhNkQsR0FFOUJsQixFQUFTVCxLQUNSMkIsRUFBVzdELElBQ1g2RCxFQUFVL0MsS0FBZWdELEVBQ3pCRCxJUHRHZ0IsTU8wR2RFLEdQMUdjLE1PMEdXRCxJQUM1QkMsRUFBZ0JELEdQdEhTLEVPMEh6QkQsRUFBVTNDLEtBQ1ZzQixFQUFROUIsTUFBZW1ELEVBQVVuRCxJQUVqQytCLEVBQVM0QixFQUFPUixFQUFZcEIsRUFBUVksR0FDQSxtQkFBbkJRLEVBQVdoRSxXUGxITlMsSU9rSDRCMEQsRUFDbER2QixFQUFTdUIsRUFDQ0YsSUFDVnJCLEVBQVNxQixFQUFPUSxhQUlqQlQsRUFBVTNDLE1BQVcsR0FLdEIsT0FGQXFDLEVBQWMxQyxJQUFRa0QsRUFFZnRCLENBQ1IsQ0FPQSxTQUFTMEIsRUFDUlosRUFDQUQsRUFDQVcsRUFDQXhCLEVBQ0F5QixHQUxELElBUUtuRixFQUVBOEUsRUFFQXJCLEVBOERHK0IsRUFPQUMsRUFuRUhDLEVBQW9CUixFQUFZOUQsT0FDbkN1RSxFQUF1QkQsRUFFcEJFLEVBQU8sRUFHWCxJQURBcEIsRUFBYzdDLElBQWEsSUFBSXRCLE1BQU04RSxHQUNoQ25GLEVBQUksRUFBR0EsRUFBSW1GLEVBQW1CbkYsSVAzSmhCLE9POEpsQjhFLEVBQWFQLEVBQWF2RSxLQUlKLGtCQUFkOEUsR0FDYyxtQkFBZEEsR0E4Q0ZVLEVBQWN4RixFQUFJNEYsR0EvQnZCZCxFQUFhTixFQUFjN0MsSUFBVzNCLEdBTmpCLGlCQUFkOEUsR0FDYyxpQkFBZEEsR0FFYyxpQkFBZEEsR0FDUEEsRUFBVzlDLGFBQWU2RCxPQUVpQnJFLEVQbEwxQixLT29MaEJzRCxFUHBMZ0IsZ0JPeUxQMUUsRUFBUTBFLEdBQ3lCdEQsRUFDMUNjLEVBQ0EsQ0FBRXZCLFNBQVUrRCxHUDVMSSxnQkFDS3ZELE1PZ01adUQsRUFBVzlDLGFBQTRCOEMsRUFBVWpELElBQVUsRUFLMUJMLEVBQzFDc0QsRUFBV2hFLEtBQ1hnRSxFQUFXdEUsTUFDWHNFLEVBQVc5RCxJQUNYOEQsRUFBVzdELElBQU02RCxFQUFXN0QsSVAxTVosS08yTWhCNkQsRUFBVTdDLEtBR2dDNkMsR0FJbENsRCxHQUFXNEMsRUFDckJNLEVBQVVqRCxJQUFVMkMsRUFBYzNDLElBQVUsRUFZNUM0QixFUC9Oa0IsTU9nT0ksSUFSaEJnQyxFQUFpQlgsRUFBVTVDLElBQVU0RCxFQUMxQ2hCLEVBQ0FJLEVBQ0FNLEVBQ0FHLE1BTUFBLEtBREFsQyxFQUFXeUIsRUFBWU8sTUFHdEJoQyxFQUFRdEIsS1A3T1csSUFTSCxNTzJPQ3NCLEdQM09ELE1PMk9xQkEsRUFBUXhCLE1BR3hCLEdBQWxCd0QsSUFlQ04sRUFBb0JPLEVBQ3ZCRSxJQUNVVCxFQUFvQk8sR0FDOUJFLEtBSzRCLG1CQUFuQmQsRUFBV2hFLE9BQ3JCZ0UsRUFBVTNDLEtQalJjLElPbVJmc0QsR0FBaUJELElBaUJ2QkMsR0FBaUJELEVBQWMsRUFDbENJLElBQ1VILEdBQWlCRCxFQUFjLEVBQ3pDSSxLQUVJSCxFQUFnQkQsRUFDbkJJLElBRUFBLElBTURkLEVBQVUzQyxLUGxUYyxLT2dMekJxQyxFQUFjN0MsSUFBVzNCLEdQcktSLEtPZ1RuQixHQUFJMkYsRUFDSCxJQUFLM0YsRUFBSSxFQUFHQSxFQUFJMEYsRUFBbUIxRixJUGpUakIsT09rVGpCeUQsRUFBV3lCLEVBQVlsRixLQUNnQyxJUDVUbkMsRU80VEt5RCxFQUFRdEIsT0FDNUJzQixFQUFRM0IsS0FBUzRCLElBQ3BCQSxFQUFTaEIsRUFBY2UsSUFHeEJzQyxFQUFRdEMsRUFBVUEsSUFLckIsT0FBT0MsQ0FDUixDQVFBLFNBQVM0QixFQUFPVSxFQUFhdEMsRUFBUVksR0FBckMsSUFJTXZELEVBQ0tmLEVBRlYsR0FBK0IsbUJBQXBCZ0csRUFBWWxGLEtBQW9CLENBRTFDLElBRElDLEVBQVdpRixFQUFXckUsSUFDakIzQixFQUFJLEVBQUdlLEdBQVlmLEVBQUllLEVBQVNLLE9BQVFwQixJQUM1Q2UsRUFBU2YsS0FLWmUsRUFBU2YsR0FBRTRCLEdBQVdvRSxFQUN0QnRDLEVBQVM0QixFQUFPdkUsRUFBU2YsR0FBSTBELEVBQVFZLElBSXZDLE9BQU9aLENBQ1IsQ0FBV3NDLEVBQVdsRSxLQUFTNEIsSUFDMUJBLEdBQVVzQyxFQUFZbEYsT0FBU3dELEVBQVUyQixTQUFTdkMsS0FDckRBLEVBQVNoQixFQUFjc0QsSUFFeEIxQixFQUFVNEIsYUFBYUYsRUFBV2xFLElBQU80QixHUDNWdkIsTU80VmxCQSxFQUFTc0MsRUFBV2xFLEtBR3JCLEdBQ0M0QixFQUFTQSxHQUFVQSxFQUFPNkIsa0JQaFdSLE1PaVdWN0IsR0FBcUMsR0FBbkJBLEVBQU95QyxVQUVsQyxPQUFPekMsQ0FDUixVQVFnQjBDLEVBQWFyRixFQUFVc0YsR0FVdEMsT0FUQUEsRUFBTUEsR0FBTyxHUDdXTSxNTzhXZnRGLEdBQXVDLGtCQUFaQSxJQUNwQlgsRUFBUVcsR0FDbEJBLEVBQVN1RixLQUFLLFNBQUF4RCxHQUNic0QsRUFBYXRELEVBQU91RCxFQUNyQixHQUVBQSxFQUFJbEQsS0FBS3BDLElBRUhzRixDQUNSLENBU0EsU0FBU1AsRUFDUmhCLEVBQ0FJLEVBQ0FNLEVBQ0FHLEdBSkQsSUFtQ01ZLEVBQ0FDLEVBOUJDeEYsRUFBTThELEVBQVc5RCxJQUNqQkYsRUFBT2dFLEVBQVdoRSxLQUNwQjJDLEVBQVd5QixFQUFZTSxHQWtCM0IsR1AxWm1CLE9PMlpqQi9CLEdBQXVDLE1BQWxCcUIsRUFBVzlELEtBQ2hDeUMsR0FDQXpDLEdBQU95QyxFQUFTekMsS0FDaEJGLEdBQVEyQyxFQUFTM0MsTUFDYyxJUHhhWCxFT3dhbkIyQyxFQUFRdEIsS0FFVixPQUFPcUQsS0FWUEcsR1B2WmtCLE1Pd1pqQmxDLEdBQW1ELElQamEvQixFT2lhQ0EsRUFBUXRCLEtBQTBCLEVBQUksR0FhNUQsSUFGSW9FLEVBQUlmLEVBQWMsRUFDbEJnQixFQUFJaEIsRUFBYyxFQUNmZSxHQUFLLEdBQUtDLEVBQUl0QixFQUFZOUQsUUFBUSxDQUN4QyxHQUFJbUYsR0FBSyxFQUFHLENBRVgsSUFEQTlDLEVBQVd5QixFQUFZcUIsS0FHUyxJUG5iYixFT21iakI5QyxFQUFRdEIsTUFDVG5CLEdBQU95QyxFQUFTekMsS0FDaEJGLEdBQVEyQyxFQUFTM0MsS0FFakIsT0FBT3lGLEVBRVJBLEdBQ0QsQ0FFQSxHQUFJQyxFQUFJdEIsRUFBWTlELE9BQVEsQ0FFM0IsSUFEQXFDLEVBQVd5QixFQUFZc0IsS0FHUyxJUGhjYixFT2djakIvQyxFQUFRdEIsTUFDVG5CLEdBQU95QyxFQUFTekMsS0FDaEJGLEdBQVEyQyxFQUFTM0MsS0FFakIsT0FBTzBGLEVBRVJBLEdBQ0QsQ0FDRCxDQUdELE9BQVEsQ0FDVCxDRmhkQSxTQUFTQyxFQUFTQyxFQUFPMUYsRUFBSzJGLEdBQ2YsS0FBVjNGLEVBQUksR0FDUDBGLEVBQU1FLFlBQVk1RixFTFdBLE1LWEsyRixFQUFnQixHQUFLQSxHQUU1Q0QsRUFBTTFGLEdMU1ksTUtWUjJGLEVBQ0csR0FDYSxpQkFBVEEsR0FBcUJ4RyxFQUFtQjBHLEtBQUs3RixHQUNqRDJGLEVBRUFBLEVBQVEsSUFFdkIsQ0F5QmdCLFNBQUFDLEVBQVlFLEVBQUtDLEVBQU1KLEVBQU9LLEVBQVVyQyxHQUN2RCxJQUFJc0MsRUFFSkMsRUFBRyxHQUFZLFNBQVJILEVBQ04sR0FBb0IsaUJBQVRKLEVBQ1ZHLEVBQUlKLE1BQU1TLFFBQVVSLE1BQ2QsQ0FLTixHQUp1QixpQkFBWkssSUFDVkYsRUFBSUosTUFBTVMsUUFBVUgsRUFBVyxJQUc1QkEsRUFDSCxJQUFLRCxLQUFRQyxFQUNOTCxHQUFTSSxLQUFRSixHQUN0QkYsRUFBU0ssRUFBSUosTUFBT0ssRUFBTSxJQUs3QixHQUFJSixFQUNILElBQUtJLEtBQVFKLEVBQ1BLLEdBQVlMLEVBQU1JLElBQVNDLEVBQVNELElBQ3hDTixFQUFTSyxFQUFJSixNQUFPSyxFQUFNSixFQUFNSSxHQUlwQyxNQUdJLEdBQWUsS0FBWEEsRUFBSyxJQUF3QixLQUFYQSxFQUFLLEdBQy9CRSxFQUFhRixJQUFTQSxFQUFPQSxFQUFLSyxRQUFReEgsRUFBZSxPQVF4RG1ILEVBSkFBLEVBQUtNLGdCQUFpQlAsR0FDZCxjQUFSQyxHQUNRLGFBQVJBLEVBRU9BLEVBQUtNLGNBQWNqSSxNQUFNLEdBQ3JCMkgsRUFBSzNILE1BQU0sR0FFbEIwSCxFQUFHakQsSUFBYWlELEVBQUdqRCxFQUFjLENBQUEsR0FDdENpRCxFQUFHakQsRUFBWWtELEVBQU9FLEdBQWNOLEVBRWhDQSxFQUNFSyxFQVFKTCxFQUFNVyxFQUFZTixFQUFTTSxHQVAzQlgsRUFBTVcsRUFBWXpILEVBQ2xCaUgsRUFBSVMsaUJBQ0hSLEVBQ0FFLEVBQWFsSCxFQUFvQkQsRUFDakNtSCxJQU1GSCxFQUFJVSxvQkFDSFQsRUFDQUUsRUFBYWxILEVBQW9CRCxFQUNqQ21ILE9BR0ksQ0FDTixHTHpGMkIsOEJLeUZ2QnRDLEVBSUhvQyxFQUFPQSxFQUFLSyxRQUFRLGNBQWUsS0FBS0EsUUFBUSxTQUFVLFVBQ3BELEdBQ0UsU0FBUkwsR0FDUSxVQUFSQSxHQUNRLFFBQVJBLEdBQ1EsUUFBUkEsR0FDUSxRQUFSQSxHQUdRLFlBQVJBLEdBQ1EsWUFBUkEsR0FDUSxXQUFSQSxHQUNRLFdBQVJBLEdBQ1EsUUFBUkEsR0FDUSxXQUFSQSxHQUNBQSxLQUFRRCxFQUVSLElBQ0NBLEVBQUlDLEdMM0dZLE1LMkdKSixFQUFnQixHQUFLQSxFQUVqQyxNQUFNTyxFQUNMLE1BQU9PLElBVVUsbUJBQVRkLElMeEhPLE1LMEhQQSxJQUE0QixJQUFWQSxHQUE4QixLQUFYSSxFQUFLLEdBR3BERCxFQUFJWSxnQkFBZ0JYLEdBRnBCRCxFQUFJYSxhQUFhWixFQUFjLFdBQVJBLEdBQThCLEdBQVRKLEVBQWdCLEdBQUtBLEdBSW5FLENBQ0QsQ0FPQSxTQUFTaUIsRUFBaUJYLEdBTXpCLGdCQUFpQlEsR0FDaEIsR0FBSWhGLEtBQUlvQixFQUFhLENBQ3BCLElBQU1nRSxFQUFlcEYsS0FBSW9CLEVBQVk0RCxFQUFFM0csS0FBT21HLEdBQzlDLEdMaEppQixNS2dKYlEsRUFBRUssRUFDTEwsRUFBRUssRUFBY2pJLFNBS1YsR0FBSTRILEVBQUVLLEVBQWNELEVBQWFQLEVBQ3ZDLE9BRUQsT0FBT08sRUFBYXhJLEVBQVEwSSxNQUFRMUksRUFBUTBJLE1BQU1OLEdBQUtBLEVBQ3hELENBQ0QsQ0FDRCxVRzVIZ0J4RCxFQUNmSyxFQUNBZCxFQUNBQyxFQUNBaUIsRUFDQUMsRUFDQUMsRUFDQWpCLEVBQ0FELEVBQ0FtQixFQUNBakIsT0FHSW9FLEVBa0JFL0UsRUFBR2dGLEVBQU9DLEVBQVVDLEVBQVVDLEVBQVVDLEVBQ3hDQyxFQUNFQyxFQU1GQyxFQUNBQyxFQXlHT3pJLEVBNEJQMEksRUFDSEMsRUFTUzNJLEVBNkJOdUUsRUFnRE92RSxFQXRQWjRJLEVBQVVwRixFQUFTMUMsS0FJcEIsR1JqRHdCUyxNUWlEcEJpQyxFQUFTeEIsWUFBMEIsT1JsRHBCLEtBYlUsSVFrRXpCeUIsRUFBUXRCLE1BQ1gwQyxLUnJFMEIsR1FxRVRwQixFQUFRdEIsS0FFekJ5QyxFQUFvQixDQURwQmxCLEVBQVNGLEVBQVExQixJQUFRMkIsRUFBUTNCLE9BSTdCa0csRUFBTTNJLEVBQU93QyxNQUFTbUcsRUFBSXhFLEdBRS9CcUYsRUFBTyxHQUFzQixtQkFBWEQsRUFDakIsSUFrRUMsR0FoRUlOLEVBQVc5RSxFQUFTaEQsTUFDbEIrSCxFQUNMLGNBQWVLLEdBQVdBLEVBQVFFLFVBQVVDLE9BS3pDUCxHQURKUixFQUFNWSxFQUFRSSxjQUNRdEUsRUFBY3NELEVBQUdqRyxLQUNuQzBHLEVBQW1CVCxFQUNwQlEsRUFDQ0EsRUFBU2hJLE1BQU1tRyxNQUNmcUIsRUFBR3BHLEdBQ0o4QyxFQUdDakIsRUFBUTFCLElBRVhzRyxHQURBcEYsRUFBSU8sRUFBUXpCLElBQWMwQixFQUFRMUIsS0FDTkgsR0FBd0JxQixFQUFDZ0csS0FHakRWLEVBRUgvRSxFQUFRekIsSUFBY2tCLEVBQUksSUFBSTJGLEVBQVFOLEVBQVVHLElBR2hEakYsRUFBUXpCLElBQWNrQixFQUFJLElBQUlWLEVBQzdCK0YsRUFDQUcsR0FFRHhGLEVBQUVqQixZQUFjNEcsRUFDaEIzRixFQUFFOEYsT0FBU0csR0FFUlYsR0FBVUEsRUFBU1csSUFBSWxHLEdBRTNCQSxFQUFFekMsTUFBUThILEVBQ0xyRixFQUFFbUcsUUFBT25HLEVBQUVtRyxNQUFRLENBQUEsR0FDeEJuRyxFQUFFVCxRQUFVaUcsRUFDWnhGLEVBQUNpQixJQUFrQlEsRUFDbkJ1RCxFQUFRaEYsRUFBQ0MsS0FBVSxFQUNuQkQsRUFBQ29HLElBQW9CLEdBQ3JCcEcsRUFBQ3FHLElBQW1CLElBSWpCZixHUjVHYSxNUTRHT3RGLEVBQUNzRyxNQUN4QnRHLEVBQUNzRyxJQUFjdEcsRUFBRW1HLE9BR2RiLEdSaEhhLE1RZ0hPSyxFQUFRWSwyQkFDM0J2RyxFQUFDc0csS0FBZXRHLEVBQUVtRyxRQUNyQm5HLEVBQUNzRyxJQUFjakosRUFBTyxHQUFJMkMsRUFBQ3NHLE1BRzVCakosRUFDQzJDLEVBQUNzRyxJQUNEWCxFQUFRWSx5QkFBeUJsQixFQUFVckYsRUFBQ3NHLE9BSTlDckIsRUFBV2pGLEVBQUV6QyxNQUNiMkgsRUFBV2xGLEVBQUVtRyxNQUNibkcsRUFBQ2hCLElBQVV1QixFQUdQeUUsRUFFRk0sR1JsSWUsTVFtSWZLLEVBQVFZLDBCUm5JTyxNUW9JZnZHLEVBQUV3RyxvQkFFRnhHLEVBQUV3RyxxQkFHQ2xCLEdSeklZLE1ReUlRdEYsRUFBRXlHLG1CQUN6QnpHLEVBQUNvRyxJQUFrQmxHLEtBQUtGLEVBQUV5Ryx1QkFFckIsQ0FVTixHQVJDbkIsR1I5SWUsTVErSWZLLEVBQVFZLDBCQUNSbEIsSUFBYUosR1JoSkUsTVFpSmZqRixFQUFFMEcsMkJBRUYxRyxFQUFFMEcsMEJBQTBCckIsRUFBVUcsSUFJcEN4RixFQUFDbkIsS1J2SlksTVF3SmRtQixFQUFFMkcsd0JBS0ksSUFKTjNHLEVBQUUyRyxzQkFDRHRCLEVBQ0FyRixFQUFDc0csSUFDRGQsSUFFRmpGLEVBQVF2QixLQUFjd0IsRUFBUXhCLElBQzdCLENBa0JELElBaEJJdUIsRUFBUXZCLEtBQWN3QixFQUFReEIsTUFLakNnQixFQUFFekMsTUFBUThILEVBQ1ZyRixFQUFFbUcsTUFBUW5HLEVBQUNzRyxJQUNYdEcsRUFBQ0MsS0FBVSxHQUdaTSxFQUFRMUIsSUFBUTJCLEVBQVEzQixJQUN4QjBCLEVBQVE3QixJQUFhOEIsRUFBUTlCLElBQzdCNkIsRUFBUTdCLElBQVcyRSxLQUFLLFNBQUE1RSxHQUNuQkEsSUFBT0EsRUFBS0UsR0FBVzRCLEVBQzVCLEdBRVN4RCxFQUFJLEVBQUdBLEVBQUlpRCxFQUFDcUcsSUFBaUJsSSxPQUFRcEIsSUFDN0NpRCxFQUFDb0csSUFBa0JsRyxLQUFLRixFQUFDcUcsSUFBaUJ0SixJQUUzQ2lELEVBQUNxRyxJQUFtQixHQUVoQnJHLEVBQUNvRyxJQUFrQmpJLFFBQ3RCdUMsRUFBWVIsS0FBS0YsR0FHbEIsTUFBTTRGLENBQ1AsQ1IzTGdCLE1RNkxaNUYsRUFBRTRHLHFCQUNMNUcsRUFBRTRHLG9CQUFvQnZCLEVBQVVyRixFQUFDc0csSUFBYWQsR0FHM0NGLEdSak1ZLE1RaU1RdEYsRUFBRTZHLG9CQUN6QjdHLEVBQUNvRyxJQUFrQmxHLEtBQUssV0FDdkJGLEVBQUU2RyxtQkFBbUI1QixFQUFVQyxFQUFVQyxFQUMxQyxFQUVGLENBU0EsR0FQQW5GLEVBQUVULFFBQVVpRyxFQUNaeEYsRUFBRXpDLE1BQVE4SCxFQUNWckYsRUFBQ2UsSUFBY00sRUFDZnJCLEVBQUNuQixLQUFVLEVBRVA0RyxFQUFhckosRUFBT2dFLElBQ3ZCc0YsRUFBUSxFQUNMSixFQUFrQixDQVFyQixJQVBBdEYsRUFBRW1HLE1BQVFuRyxFQUFDc0csSUFDWHRHLEVBQUNDLEtBQVUsRUFFUHdGLEdBQVlBLEVBQVdsRixHQUUzQndFLEVBQU0vRSxFQUFFOEYsT0FBTzlGLEVBQUV6QyxNQUFPeUMsRUFBRW1HLE1BQU9uRyxFQUFFVCxTQUUxQnhDLEVBQUksRUFBR0EsRUFBSWlELEVBQUNxRyxJQUFpQmxJLE9BQVFwQixJQUM3Q2lELEVBQUNvRyxJQUFrQmxHLEtBQUtGLEVBQUNxRyxJQUFpQnRKLElBRTNDaUQsRUFBQ3FHLElBQW1CLEVBQ3JCLE1BQ0MsR0FDQ3JHLEVBQUNDLEtBQVUsRUFDUHdGLEdBQVlBLEVBQVdsRixHQUUzQndFLEVBQU0vRSxFQUFFOEYsT0FBTzlGLEVBQUV6QyxNQUFPeUMsRUFBRW1HLE1BQU9uRyxFQUFFVCxTQUduQ1MsRUFBRW1HLE1BQVFuRyxFQUFDc0csVUFDSHRHLEVBQUNDLE9BQWF5RixFQUFRLElBSWhDMUYsRUFBRW1HLE1BQVFuRyxFQUFDc0csSVJ4T00sTVEwT2J0RyxFQUFFOEcsa0JBQ0xyRixFQUFnQnBFLEVBQU9BLEVBQU8sQ0FBRSxFQUFFb0UsR0FBZ0J6QixFQUFFOEcsb0JBR2pEeEIsSUFBcUJOLEdSOU9SLE1ROE9pQmhGLEVBQUUrRywwQkFDbkM1QixFQUFXbkYsRUFBRStHLHdCQUF3QjlCLEVBQVVDLElBSzVDNUQsRUFBZXlELEVScFBGLE1RbVBoQkEsR0FBZUEsRUFBSWxILE9BQVN3QixHUm5QWixNUW1Qd0IwRixFQUFJaEgsTUFJNUN1RCxFQUFlMEYsRUFBVWpDLEVBQUl4SCxNQUFNTyxXQUdwQzJDLEVBQVNXLEVBQ1JDLEVBQ0FsRSxFQUFRbUUsR0FBZ0JBLEVBQWUsQ0FBQ0EsR0FDeENmLEVBQ0FDLEVBQ0FpQixFQUNBQyxFQUNBQyxFQUNBakIsRUFDQUQsRUFDQW1CLEVBQ0FqQixHQUdEWCxFQUFFRixLQUFPUyxFQUFRMUIsSUFHakIwQixFQUFRckIsTVJqUmUsSVFtUm5CYyxFQUFDb0csSUFBa0JqSSxRQUN0QnVDLEVBQVlSLEtBQUtGLEdBR2RvRixJQUNIcEYsRUFBQ2dHLElBQWlCaEcsRUFBQ3JCLEdSbFJILEtRNlNsQixDQXpCRSxNQUFPNkYsR0FHUixHQUZBakUsRUFBUXZCLElSclJTLEtRdVJiNEMsR1J2UmEsTVF1UkVELEVBQ2xCLEdBQUk2QyxFQUFFeUMsS0FBTSxDQUtYLElBSkExRyxFQUFRckIsS0FBVzBDLEVBQ2hCc0YsSVJ2U3NCLElRMFNsQnpHLEdBQTZCLEdBQW5CQSxFQUFPeUMsVUFBaUJ6QyxFQUFPNkIsYUFDL0M3QixFQUFTQSxFQUFPNkIsWUFHakJYLEVBQWtCQSxFQUFrQndGLFFBQVExRyxJUmpTN0IsS1FrU2ZGLEVBQVExQixJQUFRNEIsQ0FDakIsTUFDQyxJQUFTMUQsRUFBSTRFLEVBQWtCeEQsT0FBUXBCLEtBQ3RDUyxFQUFXbUUsRUFBa0I1RSxTQUkvQndELEVBQVExQixJQUFRMkIsRUFBUTNCLElBQ3hCMEIsRUFBUTdCLElBQWE4QixFQUFROUIsSUFFOUJ0QyxFQUFPeUMsSUFBYTJGLEVBQUdqRSxFQUFVQyxFQUNsQyxNUjdTa0IsTVErU2xCbUIsR0FDQXBCLEVBQVF2QixLQUFjd0IsRUFBUXhCLEtBRTlCdUIsRUFBUTdCLElBQWE4QixFQUFROUIsSUFDN0I2QixFQUFRMUIsSUFBUTJCLEVBQVEzQixLQUV4QjRCLEVBQVNGLEVBQVExQixJQUFRdUksRUFDeEI1RyxFQUFRM0IsSUFDUjBCLEVBQ0FDLEVBQ0FpQixFQUNBQyxFQUNBQyxFQUNBakIsRUFDQWtCLEVBQ0FqQixHQU1GLE9BRktvRSxFQUFNM0ksRUFBUWlMLFNBQVN0QyxFQUFJeEUsR1IvVUgsSVFpVnRCQSxFQUFRckIsU0FBMkJaLEVBQVltQyxDQUN2RCxVQU9nQlUsRUFBV1QsRUFBYTRHLEVBQU0zRyxHQUM3QyxJQUFLLElBQUk1RCxFQUFJLEVBQUdBLEVBQUk0RCxFQUFTeEMsT0FBUXBCLElBQ3BDcUYsRUFBU3pCLEVBQVM1RCxHQUFJNEQsSUFBVzVELEdBQUk0RCxJQUFXNUQsSUFHN0NYLEVBQU8wQyxLQUFVMUMsRUFBTzBDLElBQVN3SSxFQUFNNUcsR0FFM0NBLEVBQVkyQyxLQUFLLFNBQUFyRCxHQUNoQixJQUVDVSxFQUFjVixFQUFDb0csSUFDZnBHLEVBQUNvRyxJQUFvQixHQUNyQjFGLEVBQVkyQyxLQUFLLFNBQUFrRSxHQUVoQkEsRUFBR25KLEtBQUs0QixFQUNULEVBR0QsQ0FGRSxNQUFPd0UsR0FDUnBJLEVBQU95QyxJQUFhMkYsRUFBR3hFLEVBQUNoQixJQUN6QixDQUNELEVBQ0QsQ0FFQSxTQUFTZ0ksRUFBVXZKLEdBQ2xCLE1BQ2dCLGlCQUFSQSxHUnBXVyxNUXFXbEJBLEdBQ0NBLEVBQUltQixLQUFXbkIsRUFBSW1CLElBQVUsRUFFdkJuQixFQUdKTixFQUFRTSxHQUNKQSxFQUFLK0osSUFBSVIsR0FHVjNKLEVBQU8sQ0FBRSxFQUFFSSxFQUNuQixDQWlCQSxTQUFTMkosRUFDUnZELEVBQ0F0RCxFQUNBQyxFQUNBaUIsRUFDQUMsRUFDQUMsRUFDQWpCLEVBQ0FrQixFQUNBakIsR0FURCxJQWVLNUQsRUFFQTBLLEVBRUFDLEVBRUFDLEVBQ0FqRSxFQUNBa0UsRUFDQUMsRUFiQTVDLEVBQVd6RSxFQUFTakQsTUFDcEI4SCxFQUFXOUUsRUFBU2hELE1BQ3BCMkYsRUFBa0MzQyxFQUFTMUMsS0FrQi9DLEdBSmdCLE9BQVpxRixFQUFtQnhCLEVSaGFLLDZCUWlhUCxRQUFad0IsRUFBb0J4QixFUi9aQSxxQ1FnYW5CQSxJQUFXQSxFUmphUyxnQ0FHWCxNUWdhZkMsRUFDSCxJQUFLNUUsRUFBSSxFQUFHQSxFQUFJNEUsRUFBa0J4RCxPQUFRcEIsSUFNekMsSUFMQTJHLEVBQVEvQixFQUFrQjVFLEtBT3pCLGlCQUFrQjJHLEtBQVdSLElBQzVCQSxFQUFXUSxFQUFNb0UsV0FBYTVFLEVBQTZCLEdBQWxCUSxFQUFNUixVQUMvQyxDQUNEVyxFQUFNSCxFQUNOL0IsRUFBa0I1RSxHUjdhRixLUThhaEIsS0FDRCxDQUlGLEdSbmJtQixNUW1iZjhHLEVBQWEsQ0FDaEIsR1JwYmtCLE1Rb2JkWCxFQUNILE9BQU82RSxTQUFTQyxlQUFlM0MsR0FHaEN4QixFQUFNa0UsU0FBU0UsZ0JBQ2R2RyxFQUNBd0IsRUFDQW1DLEVBQVM2QyxJQUFNN0MsR0FLWnpELElBQ0N4RixFQUFPK0wsS0FDVi9MLEVBQU8rTCxJQUFvQjVILEVBQVVvQixHQUN0Q0MsR0FBYyxHQUdmRCxFUnRja0IsSVF1Y25CLENBRUEsR1J6Y21CLE1ReWNmdUIsRUFFQytCLElBQWFJLEdBQWN6RCxHQUFlaUMsRUFBSXVFLE1BQVEvQyxJQUN6RHhCLEVBQUl1RSxLQUFPL0MsT0FFTixDQVNOLEdBUEExRCxFQUFvQkEsR0FBcUJ4RixFQUFNaUMsS0FBS3lGLEVBQUl3RSxZQUV4RHBELEVBQVd6RSxFQUFTakQsT0FBU1AsR0FLeEI0RSxHUnZkYSxNUXVkRUQsRUFFbkIsSUFEQXNELEVBQVcsQ0FBQSxFQUNObEksRUFBSSxFQUFHQSxFQUFJOEcsRUFBSXlFLFdBQVduSyxPQUFRcEIsSUFFdENrSSxHQURBdkIsRUFBUUcsRUFBSXlFLFdBQVd2TCxJQUNSK0csTUFBUUosRUFBTUEsTUFJL0IsSUFBSzNHLEtBQUtrSSxFQUVULEdBREF2QixFQUFRdUIsRUFBU2xJLEdBQ1IsWUFBTEEsUUFDT0EsR0FBSywyQkFBTEEsRUFDVjJLLEVBQVVoRSxPQUNKLEtBQU0zRyxLQUFLc0ksR0FBVyxDQUM1QixHQUNPLFNBQUx0SSxHQUFnQixpQkFBa0JzSSxHQUM3QixXQUFMdEksR0FBa0IsbUJBQW9Cc0ksRUFFdkMsU0FFRDFCLEVBQVlFLEVBQUs5RyxFUjNlRCxLUTJlVTJHLEVBQU9oQyxFQUNsQyxDQUtELElBQUszRSxLQUFLc0ksRUFDVDNCLEVBQVEyQixFQUFTdEksR0FDUixZQUFMQSxFQUNINEssRUFBY2pFLEVBQ0MsMkJBQUwzRyxFQUNWMEssRUFBVS9ELEVBQ0ssU0FBTDNHLEVBQ1Y2SyxFQUFhbEUsRUFDRSxXQUFMM0csRUFDVjhLLEVBQVVuRSxFQUVSOUIsR0FBK0IsbUJBQVQ4QixHQUN4QnVCLEVBQVNsSSxLQUFPMkcsR0FFaEJDLEVBQVlFLEVBQUs5RyxFQUFHMkcsRUFBT3VCLEVBQVNsSSxHQUFJMkUsR0FLMUMsR0FBSStGLEVBR0Q3RixHQUNDOEYsSUFDQUQsRUFBT2MsUUFBV2IsRUFBT2EsUUFBV2QsRUFBT2MsUUFBVzFFLEVBQUkyRSxhQUU1RDNFLEVBQUkyRSxVQUFZZixFQUFPYyxRQUd4QmhJLEVBQVE3QixJQUFhLFFBc0JyQixHQXBCSWdKLElBQVM3RCxFQUFJMkUsVUFBWSxJQUU3QnBILEVBRWtCLFlBQWpCYixFQUFTMUMsS0FBcUJnRyxFQUFJNEUsUUFBVTVFLEVBQzVDMUcsRUFBUXdLLEdBQWVBLEVBQWMsQ0FBQ0EsR0FDdENwSCxFQUNBQyxFQUNBaUIsRUFDWSxpQkFBWnlCLEVSNWhCMkIsK0JRNGhCcUJ4QixFQUNoREMsRUFDQWpCLEVBQ0FpQixFQUNHQSxFQUFrQixHQUNsQm5CLEVBQVE5QixLQUFjZSxFQUFjZSxFQUFVLEdBQ2pEb0IsRUFDQWpCLEdSaGlCZ0IsTVFvaUJiZ0IsRUFDSCxJQUFLNUUsRUFBSTRFLEVBQWtCeEQsT0FBUXBCLEtBQ2xDUyxFQUFXbUUsRUFBa0I1RSxJQU0zQjZFLElBQ0o3RSxFQUFJLFFBQ1ksWUFBWm1HLEdSOWlCYSxNUThpQmEwRSxFQUM3Qi9ELEVBQUlZLGdCQUFnQixTUjlpQkNuRyxNUWdqQnJCc0osSUFLQ0EsSUFBZS9ELEVBQUk5RyxJQUNOLFlBQVptRyxJQUEyQjBFLEdBSWYsVUFBWjFFLEdBQXdCMEUsR0FBYzNDLEVBQVNsSSxLQUVqRDRHLEVBQVlFLEVBQUs5RyxFQUFHNkssRUFBWTNDLEVBQVNsSSxHQUFJMkUsR0FHOUMzRSxFQUFJLFVSL2pCa0J1QixNUWdrQmxCdUosR0FBd0JBLEdBQVdoRSxFQUFJOUcsSUFDMUM0RyxFQUFZRSxFQUFLOUcsRUFBRzhLLEVBQVM1QyxFQUFTbEksR0FBSTJFLEdBRzdDLENBRUEsT0FBT21DLENBQ1IsQ0FRZ0IsU0FBQXpCLEVBQVNwRSxFQUFLMEYsRUFBT2pGLEdBQ3BDLElBQ0MsR0FBa0IsbUJBQVBULEVBQW1CLENBQzdCLElBQUkwSyxFQUF1QyxtQkFBaEIxSyxFQUFHa0IsSUFDMUJ3SixHQUVIMUssRUFBR2tCLE1BR0N3SixHUnpsQlksTVF5bEJLaEYsSUFJckIxRixFQUFHa0IsSUFBWWxCLEVBQUkwRixHQUVyQixNQUFPMUYsRUFBSW9CLFFBQVVzRSxDQUd0QixDQUZFLE1BQU9jLEdBQ1JwSSxFQUFPeUMsSUFBYTJGLEVBQUcvRixFQUN4QixDQUNELENBU2dCLFNBQUFxRSxFQUFRckUsRUFBT3NFLEVBQWE0RixHQUE1QixJQUNYQyxFQXNCTTdMLEVBYlYsR0FSSVgsRUFBUTBHLFNBQVMxRyxFQUFRMEcsUUFBUXJFLElBRWhDbUssRUFBSW5LLEVBQU1ULE9BQ1Q0SyxFQUFFeEosU0FBV3dKLEVBQUV4SixTQUFXWCxFQUFLSSxLQUNuQ3VELEVBQVN3RyxFUmxuQlEsS1FrbkJDN0YsSVJsbkJELE9Rc25CZDZGLEVBQUluSyxFQUFLSyxLQUFzQixDQUNuQyxHQUFJOEosRUFBRUMscUJBQ0wsSUFDQ0QsRUFBRUMsc0JBR0gsQ0FGRSxNQUFPckUsR0FDUnBJLEVBQU95QyxJQUFhMkYsRUFBR3pCLEVBQ3hCLENBR0Q2RixFQUFFOUksS0FBTzhJLEVBQUM3SCxJUi9uQlEsSVFnb0JuQixDQUVBLEdBQUs2SCxFQUFJbkssRUFBS0MsSUFDYixJQUFTM0IsRUFBSSxFQUFHQSxFQUFJNkwsRUFBRXpLLE9BQVFwQixJQUN6QjZMLEVBQUU3TCxJQUNMK0YsRUFDQzhGLEVBQUU3TCxHQUNGZ0csRUFDQTRGLEdBQW1DLG1CQUFkbEssRUFBTVosTUFNMUI4SyxHQUNKbkwsRUFBV2lCLEVBQUtJLEtBR2pCSixFQUFLSyxJQUFjTCxFQUFLRSxHQUFXRixFQUFLSSxTUmpwQmhCUCxDUWtwQnpCLENBR0EsU0FBUzJILEVBQVMxSSxFQUFPNEksRUFBTzVHLEdBQy9CLFlBQVlSLFlBQVl4QixFQUFPZ0MsRUFDaEMsQ0MzcEJPLFNBQVN1RyxFQUFPckgsRUFBTzRDLEVBQVd5SCxHQUFsQyxJQVdGbEgsRUFPQXBCLEVBUUFFLEVBQ0hDLEVBekJHVSxHQUFhMEcsV0FDaEIxRyxFQUFZMEcsU0FBU2dCLGlCQUdsQjNNLEVBQU91QyxJQUFRdkMsRUFBT3VDLEdBQU9GLEVBQU80QyxHQVlwQ2IsR0FQQW9CLEVBQW9DLG1CQUFma0gsR1RSTixLU2lCZkEsR0FBZUEsRUFBV3BLLEtBQWUyQyxFQUFTM0MsSUFNbERnQyxFQUFjLEdBQ2pCQyxFQUFXLEdBQ1pLLEVBQ0NLLEVBUEQ1QyxJQUFXbUQsR0FBZWtILEdBQWdCekgsR0FBUzNDLElBQ2xEZCxFQUFjeUIsRVRwQkksS1NvQlksQ0FBQ1osSUFVL0IrQixHQUFZeEQsRUFDWkEsRUFDQXFFLEVBQVVILGNBQ1RVLEdBQWVrSCxFQUNiLENBQUNBLEdBQ0R0SSxFVG5DZSxLU3FDZGEsRUFBVTJILFdBQ1Q3TSxFQUFNaUMsS0FBS2lELEVBQVVnSCxZVHRDUixLU3dDbEIzSCxHQUNDa0IsR0FBZWtILEVBQ2JBLEVBQ0F0SSxFQUNDQSxFQUFRM0IsSUFDUndDLEVBQVUySCxXQUNkcEgsRUFDQWpCLEdBSURRLEVBQVdULEVBQWFqQyxFQUFPa0MsRUFDaEMsQ0FPTyxTQUFTc0ksRUFBUXhLLEVBQU80QyxHQUM5QnlFLEVBQU9ySCxFQUFPNEMsRUFBVzRILEVBQzFCLFVDaEVnQkMsRUFBYXpLLEVBQU9sQixFQUFPTyxPQUV6Q0MsRUFDQUMsRUFDQWpCLEVBRUdzQixFQUxBSixFQUFrQlosRUFBTyxDQUFFLEVBQUVvQixFQUFNbEIsT0FXdkMsSUFBS1IsS0FKRDBCLEVBQU1aLE1BQVFZLEVBQU1aLEtBQUtRLGVBQzVCQSxFQUFlSSxFQUFNWixLQUFLUSxjQUdqQmQsRUFDQSxPQUFMUixFQUFZZ0IsRUFBTVIsRUFBTVIsR0FDZCxPQUFMQSxFQUFZaUIsRUFBTVQsRUFBTVIsR0FFaENrQixFQUFnQmxCLEdWWk11QixNVVdkZixFQUFNUixJVlhRdUIsTVVXV0QsRUFDWkEsRUFBYXRCLEdBRWJRLEVBQU1SLEdBUzdCLE9BTEltQixVQUFVQyxPQUFTLElBQ3RCRixFQUFnQkgsU0FDZkksVUFBVUMsT0FBUyxFQUFJaEMsRUFBTWlDLEtBQUtGLFVBQVcsR0FBS0osR0FHN0NTLEVBQ05FLEVBQU1aLEtBQ05JLEVBQ0FGLEdBQU9VLEVBQU1WLElBQ2JDLEdBQU9TLEVBQU1ULElWNUJLLEtVK0JwQixDSjFDZ0IsU0FBQW1MLEVBQWNDLEdBQzdCLFNBQVNDLEVBQVE5TCxHQUFqQixJQUdNK0wsRUFDQUMsRUErQkwsT0FsQ0svSixLQUFLc0gsa0JBRUx3QyxFQUFPLElBQUlFLEtBQ1hELEVBQU0sQ0FBRSxHQUNSRixFQUFPdkssS0FBUVUsS0FFbkJBLEtBQUtzSCxnQkFBa0IsV0FBTSxPQUFBeUMsQ0FBRyxFQUVoQy9KLEtBQUtxSixxQkFBdUIsV0FDM0JTLEVOQWdCLElNQ2pCLEVBRUE5SixLQUFLbUgsc0JBQXdCLFNBQVU4QyxHQUVsQ2pLLEtBQUtqQyxNQUFNbUcsT0FBUytGLEVBQU8vRixPQUM5QjRGLEVBQUtJLFFBQVEsU0FBQTFKLEdBQ1pBLEVBQUNuQixLQUFVLEVBQ1hrQixFQUFjQyxFQUNmLEVBRUYsRUFFQVIsS0FBSzBHLElBQU0sU0FBQWxHLEdBQ1ZzSixFQUFLSyxJQUFJM0osR0FDVCxJQUFJNEosRUFBTTVKLEVBQUU2SSxxQkFDWjdJLEVBQUU2SSxxQkFBdUIsV0FDcEJTLEdBQ0hBLEVBQUtPLE9BQU83SixHQUVUNEosR0FBS0EsRUFBSXhMLEtBQUs0QixFQUNuQixDQUNELEdBR016QyxFQUFNTyxRQUNkLENBZ0JBLE9BZEF1TCxFQUFPdkssSUFBTyxPQUFTL0IsSUFDdkJzTSxFQUFPMUssR0FBaUJ5SyxFQVF4QkMsRUFBUVMsU0FDUFQsRUFBT1UsS0FOUlYsRUFBUVcsU0FBVyxTQUFDek0sRUFBTzBNLEdBQzFCLE9BQU8xTSxFQUFNTyxTQUFTbU0sRUFDdkIsR0FLa0JsRSxZQUNoQnNELEVBRUtBLENBQ1IsQ0xoQ2FsTixFQUFRYyxFQUFVZCxNQ2hCekJDLEVBQVUsQ0FDZnlDLElTRE0sU0FBcUJxTCxFQUFPekwsRUFBTytCLEVBQVUySixHQVFuRCxJQU5BLElBQUk3SixFQUVIOEosRUFFQUMsRUFFTzVMLEVBQVFBLEVBQUtFLElBQ3BCLElBQUsyQixFQUFZN0IsRUFBS0ssT0FBaUJ3QixFQUFTM0IsR0FDL0MsSUFjQyxJQWJBeUwsRUFBTzlKLEVBQVV2QixjWE5ELE1XUUpxTCxFQUFLRSwyQkFDaEJoSyxFQUFVaUssU0FBU0gsRUFBS0UseUJBQXlCSixJQUNqREcsRUFBVS9KLEVBQVNMLEtYVkosTVdhWkssRUFBVWtLLG9CQUNibEssRUFBVWtLLGtCQUFrQk4sRUFBT0MsR0FBYSxDQUFFLEdBQ2xERSxFQUFVL0osRUFBU0wsS0FJaEJvSyxFQUNILE9BQVEvSixFQUFTMEYsSUFBaUIxRixDQUlwQyxDQUZFLE1BQU9rRSxHQUNSMEYsRUFBUTFGLENBQ1QsQ0FJRixNQUFNMEYsQ0FDUCxHUnpDSTdOLEVBQVUsRUEyRkRDLEVBQWlCLFNBQUFtQyxHQUFLLE9IL0VmLE1HZ0ZuQkEsR0gvRXdCSCxNRytFUEcsRUFBTU0sV0FBd0IsRUNyRWhETyxFQUFjdUcsVUFBVTBFLFNBQVcsU0FBVUUsRUFBUUMsR0FFcEQsSUFBSUMsRUFFSEEsRUpma0IsTUljZm5MLEtBQUk4RyxLQUF1QjlHLEtBQUk4RyxLQUFlOUcsS0FBSzJHLE1BQ2xEM0csS0FBSThHLElBRUo5RyxLQUFJOEcsSUFBY2pKLEVBQU8sQ0FBRSxFQUFFbUMsS0FBSzJHLE9BR2xCLG1CQUFWc0UsSUFHVkEsRUFBU0EsRUFBT3BOLEVBQU8sR0FBSXNOLEdBQUluTCxLQUFLakMsUUFHakNrTixHQUNIcE4sRUFBT3NOLEVBQUdGLEdKM0JRLE1JK0JmQSxHQUVBakwsS0FBSVIsTUFDSDBMLEdBQ0hsTCxLQUFJNkcsSUFBaUJuRyxLQUFLd0ssR0FFM0IzSyxFQUFjUCxNQUVoQixFQVFBRixFQUFjdUcsVUFBVStFLFlBQWMsU0FBVUYsR0FDM0NsTCxLQUFJUixNQUlQUSxLQUFJWCxLQUFVLEVBQ1Y2TCxHQUFVbEwsS0FBSTRHLElBQWtCbEcsS0FBS3dLLEdBQ3pDM0ssRUFBY1AsTUFFaEIsRUFZQUYsRUFBY3VHLFVBQVVDLE9BQVN6RyxFQThGN0I5QyxFQUFnQixHQWFkRSxFQUNhLG1CQUFYb08sUUFDSkEsUUFBUWhGLFVBQVVvQixLQUFLNkQsS0FBS0QsUUFBUUUsV0FDcENDLFdBdUJFdE8sRUFBWSxTQUFDdU8sRUFBR0MsVUFBTUQsRUFBQ2pNLElBQUFKLElBQWlCc00sRUFBQ2xNLElBQUFKLEdBQWMsRUE4QjdEdUIsRUFBT0MsSUFBa0IsRUN4T25CekQsRUFBZ0IsOEJBYWxCQyxFQUFhLEVBa0pYQyxFQUFhOEgsR0FBaUIsR0FDOUI3SCxFQUFvQjZILEdBQWlCLEdDNUtoQzVILEVBQUkifQ==
|