From 09bcefbcc17c0f7149d667376319a25fd372ee00 Mon Sep 17 00:00:00 2001 From: Denis Merigoux Date: Sat, 3 Jun 2023 18:02:57 +0200 Subject: [PATCH 1/3] Update tests --- compiler/desugared/linting.ml | 58 ++++++++ .../bad/division_by_zero.catala_en | 78 +--------- tests/test_bool/bad/bad_assert.catala_en | 8 +- tests/test_date/bad/rounding_option.catala_en | 13 +- tests/test_date/bad/rounding_option.catala_fr | 13 +- .../bad/uncomparable_duration.catala_en | 136 +----------------- tests/test_default/bad/conflict.catala_en | 9 +- tests/test_default/bad/empty.catala_en | 25 ++-- .../bad/empty_with_rules.catala_en | 17 +-- tests/test_enum/bad/missing_case.catala_en | 11 +- .../bad/exceptions_cycle.catala_en | 9 +- .../bad/self_exception.catala_en | 9 +- .../bad/two_exceptions.catala_en | 9 +- tests/test_func/good/context_func.catala_en | 92 ++++++++---- tests/test_io/bad/redefining_input.catala_en | 15 +- tests/test_io/bad/using_non_output.catala_en | 7 + .../bad/array_length-empty.catala_en | 17 +-- .../bad/array_length-overlap.catala_en | 17 +-- .../bad/dates_get_year-empty.catala_en | 26 ++-- .../bad/dates_get_year-overlap.catala_en | 17 +-- .../bad/dates_simple-empty.catala_en | 17 +-- .../bad/dates_simple-overlap.catala_en | 17 +-- tests/test_proof/bad/duration-empty.catala_en | 17 +-- .../test_proof/bad/duration-overlap.catala_en | 17 +-- tests/test_proof/bad/enums-empty.catala_en | 17 +-- .../bad/enums-nonbool-empty.catala_en | 17 +-- .../bad/enums-nonbool-overlap.catala_en | 17 +-- tests/test_proof/bad/enums-overlap.catala_en | 17 +-- .../test_proof/bad/enums_inj-empty.catala_en | 17 +-- .../bad/enums_inj-overlap.catala_en | 17 +-- .../test_proof/bad/enums_unit-empty.catala_en | 17 +-- .../bad/enums_unit-overlap.catala_en | 17 +-- .../bad/let_in_condition-empty.catala_en | 15 +- tests/test_proof/bad/money-empty.catala_en | 17 +-- tests/test_proof/bad/money-overlap.catala_en | 17 +-- .../test_proof/bad/no_vars-conflict.catala_en | 17 +-- tests/test_proof/bad/no_vars-empty.catala_en | 17 +-- .../bad/prolala_motivating_example.catala_en | 67 ++++----- .../test_proof/bad/rationals-empty.catala_en | 17 +-- .../bad/rationals-overlap.catala_en | 17 +-- tests/test_proof/bad/sat_solving.catala_en | 33 ++--- tests/test_proof/bad/structs-empty.catala_en | 17 +-- .../test_proof/bad/structs-overlap.catala_en | 17 +-- tests/test_proof/good/array_length.catala_en | 11 +- .../test_proof/good/dates_get_year.catala_en | 11 +- tests/test_proof/good/duration.catala_en | 11 +- tests/test_proof/good/enums-arith.catala_en | 11 +- tests/test_proof/good/enums-nonbool.catala_en | 11 +- tests/test_proof/good/enums.catala_en | 11 +- tests/test_proof/good/enums_inj.catala_en | 11 +- tests/test_proof/good/enums_unit.catala_en | 11 +- tests/test_proof/good/functions.catala_en | 11 +- .../good/let_in_condition.catala_en | 9 +- tests/test_proof/good/money.catala_en | 11 +- tests/test_proof/good/no_vars.catala_en | 9 +- tests/test_proof/good/rationals.catala_en | 11 +- tests/test_proof/good/simple_vars.catala_en | 13 +- tests/test_proof/good/structs.catala_en | 11 +- tests/test_scope/bad/cycle_in_scope.catala_en | 6 +- tests/test_scope/bad/scope.catala_en | 20 +-- .../bad/scope_call_missing.catala_en | 17 +-- .../191_fix_record_name_confusion.catala_en | 32 ++--- tests/test_struct/bad/nested.catala_en | 9 +- tests/test_struct/bad/nested2.catala_en | 10 +- .../good/ambiguous_fields.catala_en | 24 +--- 65 files changed, 402 insertions(+), 920 deletions(-) diff --git a/compiler/desugared/linting.ml b/compiler/desugared/linting.ml index 530aafb1f..16d946920 100644 --- a/compiler/desugared/linting.ml +++ b/compiler/desugared/linting.ml @@ -255,8 +255,66 @@ let detect_unused_enum_constructors (p : program) : unit = constructors) p.program_ctx.ctx_enums +(* Reachability in a graph can be implemented as a simple fixpoint analysis with + backwards propagation. *) +module Reachability = + Graph.Fixpoint.Make + (Dependency.ScopeDependencies) + (struct + type vertex = Dependency.ScopeDependencies.vertex + type edge = Dependency.ScopeDependencies.E.t + type g = Dependency.ScopeDependencies.t + type data = bool + + let direction = Graph.Fixpoint.Backward + let equal = ( = ) + let join = ( || ) + let analyze _ x = x + end) + +let detect_dead_code (p : program) : unit = + (* Dead code detection for scope variables based on an intra-scope dependency + analysis. *) + ScopeName.Map.iter + (fun scope_name scope -> + let scope_dependencies = Dependency.build_scope_dependencies scope in + let is_alive (v : Dependency.ScopeDependencies.vertex) = + match v with + | Assertion _ -> true + | SubScope _ -> true + | Var (var, state) -> + let scope_def = + ScopeDef.Map.find (Var (var, state)) scope.scope_defs + in + Mark.remove scope_def.scope_def_io.io_output + (* A variable is initially alive if it is an output*) + in + let is_alive = Reachability.analyze is_alive scope_dependencies in + ScopeVar.Map.iter + (fun var states -> + let emit_unused_warning () = + Messages.emit_spanned_warning + (Mark.get (ScopeVar.get_info var)) + "This variable is dead code; it does not contribute to computing \ + any of scope %a outputs. Did you forget something?" + (Cli.format_with_style [ANSITerminal.yellow]) + ("\"" ^ Mark.remove (ScopeName.get_info scope_name) ^ "\"") + in + match states with + | WholeVar -> + if not (is_alive (Var (var, None))) then emit_unused_warning () + | States states -> + List.iter + (fun state -> + if not (is_alive (Var (var, Some state))) then + emit_unused_warning ()) + states) + scope.scope_vars) + p.program_scopes + let lint_program (p : program) : unit = detect_empty_definitions p; + detect_dead_code p; detect_unused_scope_vars p; detect_unused_struct_fields p; detect_unused_enum_constructors p; diff --git a/tests/test_arithmetic/bad/division_by_zero.catala_en b/tests/test_arithmetic/bad/division_by_zero.catala_en index 0a48801a9..32c2929b9 100644 --- a/tests/test_arithmetic/bad/division_by_zero.catala_en +++ b/tests/test_arithmetic/bad/division_by_zero.catala_en @@ -4,7 +4,7 @@ ```catala declaration scope Int: - context i content decimal + output i content decimal scope Int: definition i equals 1 / 0 @@ -14,7 +14,7 @@ scope Int: ```catala declaration scope Dec: - context i content decimal + output i content decimal scope Dec: definition i equals 1. / 0. @@ -24,7 +24,7 @@ scope Dec: ```catala declaration scope Money: - context i content decimal + output i content decimal scope Money: definition i equals $10.0 / $0.0 @@ -33,30 +33,6 @@ scope Money: ```catala-test-inline $ catala Interpret -s Dec -[WARNING] In scope "Int", the variable "i" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_arithmetic/bad/division_by_zero.catala_en:7.11-7.12: -└─┐ -7 │ context i content decimal - │ ‾ - └┬ `Division_by_zero` exception management - └─ with integers -[WARNING] In scope "Dec", the variable "i" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_arithmetic/bad/division_by_zero.catala_en:17.11-17.12: -└──┐ -17 │ context i content decimal - │ ‾ - └┬ `Division_by_zero` exception management - └─ with decimals -[WARNING] In scope "Money", the variable "i" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_arithmetic/bad/division_by_zero.catala_en:27.11-27.12: -└──┐ -27 │ context i content decimal - │ ‾ - └┬ `Division_by_zero` exception management - └─ with money [ERROR] division by zero at runtime The division operator: @@ -79,30 +55,6 @@ The null denominator: ```catala-test-inline $ catala Interpret -s Int -[WARNING] In scope "Int", the variable "i" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_arithmetic/bad/division_by_zero.catala_en:7.11-7.12: -└─┐ -7 │ context i content decimal - │ ‾ - └┬ `Division_by_zero` exception management - └─ with integers -[WARNING] In scope "Dec", the variable "i" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_arithmetic/bad/division_by_zero.catala_en:17.11-17.12: -└──┐ -17 │ context i content decimal - │ ‾ - └┬ `Division_by_zero` exception management - └─ with decimals -[WARNING] In scope "Money", the variable "i" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_arithmetic/bad/division_by_zero.catala_en:27.11-27.12: -└──┐ -27 │ context i content decimal - │ ‾ - └┬ `Division_by_zero` exception management - └─ with money [ERROR] division by zero at runtime The division operator: @@ -125,30 +77,6 @@ The null denominator: ```catala-test-inline $ catala Interpret -s Money -[WARNING] In scope "Int", the variable "i" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_arithmetic/bad/division_by_zero.catala_en:7.11-7.12: -└─┐ -7 │ context i content decimal - │ ‾ - └┬ `Division_by_zero` exception management - └─ with integers -[WARNING] In scope "Dec", the variable "i" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_arithmetic/bad/division_by_zero.catala_en:17.11-17.12: -└──┐ -17 │ context i content decimal - │ ‾ - └┬ `Division_by_zero` exception management - └─ with decimals -[WARNING] In scope "Money", the variable "i" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_arithmetic/bad/division_by_zero.catala_en:27.11-27.12: -└──┐ -27 │ context i content decimal - │ ‾ - └┬ `Division_by_zero` exception management - └─ with money [ERROR] division by zero at runtime The division operator: diff --git a/tests/test_bool/bad/bad_assert.catala_en b/tests/test_bool/bad/bad_assert.catala_en index 2dba3b029..fe95049d8 100644 --- a/tests/test_bool/bad/bad_assert.catala_en +++ b/tests/test_bool/bad/bad_assert.catala_en @@ -2,7 +2,7 @@ ```catala declaration scope Foo: - internal x content integer + output x content integer scope Foo: definition x equals 0 @@ -24,10 +24,10 @@ Error coming from typechecking the following expression: └─ Test Type integer coming from expression: -┌─⯈ tests/test_bool/bad/bad_assert.catala_en:5.22-5.29: +┌─⯈ tests/test_bool/bad/bad_assert.catala_en:5.20-5.27: └─┐ -5 │ internal x content integer - │ ‾‾‾‾‾‾‾ +5 │ output x content integer + │ ‾‾‾‾‾‾‾ └─ Test Type bool coming from expression: diff --git a/tests/test_date/bad/rounding_option.catala_en b/tests/test_date/bad/rounding_option.catala_en index 12415f13d..4430aeb03 100644 --- a/tests/test_date/bad/rounding_option.catala_en +++ b/tests/test_date/bad/rounding_option.catala_en @@ -1,8 +1,8 @@ ```catala declaration scope Test: - context bday content date - context today content date - context ambiguous content boolean + internal bday content date + internal today content date + output ambiguous content boolean scope Test: definition bday equals |2000-02-29| @@ -12,13 +12,6 @@ scope Test: ```catala-test-inline $ catala Interpret -s Test -[WARNING] In scope "Test", the variable "ambiguous" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_date/bad/rounding_option.catala_en:5.11-5.20: -└─┐ -5 │ context ambiguous content boolean - │ ‾‾‾‾‾‾‾‾‾ - catala: internal error, uncaught exception: Dates_calc.Dates.AmbiguousComputation diff --git a/tests/test_date/bad/rounding_option.catala_fr b/tests/test_date/bad/rounding_option.catala_fr index 947a776f2..7cbea53d9 100644 --- a/tests/test_date/bad/rounding_option.catala_fr +++ b/tests/test_date/bad/rounding_option.catala_fr @@ -1,8 +1,8 @@ ```catala déclaration champ d'application Test: - contexte bday contenu date - contexte today contenu date - contexte ambiguité contenu booléen + interne bday contenu date + interne today contenu date + résultat ambiguité contenu booléen champ d'application Test: définition bday égal à |2000-02-29| @@ -12,13 +12,6 @@ champ d'application Test: ```catala-test-inline $ catala Interpret -s Test -[WARNING] In scope "Test", the variable "ambiguité" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_date/bad/rounding_option.catala_fr:5.12-5.21: -└─┐ -5 │ contexte ambiguité contenu booléen - │ ‾‾‾‾‾‾‾‾‾ - catala: internal error, uncaught exception: Dates_calc.Dates.AmbiguousComputation diff --git a/tests/test_date/bad/uncomparable_duration.catala_en b/tests/test_date/bad/uncomparable_duration.catala_en index d0bc1a7bc..8101bad8a 100644 --- a/tests/test_date/bad/uncomparable_duration.catala_en +++ b/tests/test_date/bad/uncomparable_duration.catala_en @@ -4,7 +4,7 @@ ```catala declaration scope Lt: - context d content boolean + output d content boolean scope Lt: definition d equals 1 month < 2 day @@ -14,7 +14,7 @@ scope Lt: ```catala declaration scope Le: - context d content boolean + output d content boolean scope Le: definition d equals 1 month <= 2 day @@ -24,7 +24,7 @@ scope Le: ```catala declaration scope Gt: - context d content boolean + output d content boolean scope Gt: definition d equals 1 month > 2 day @@ -34,7 +34,7 @@ scope Gt: ```catala declaration scope Ge: - context d content boolean + output d content boolean scope Ge: definition d equals 1 month >= 2 day @@ -42,38 +42,6 @@ scope Ge: ```catala-test-inline $ catala Interpret -s Ge -[WARNING] In scope "Lt", the variable "d" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_date/bad/uncomparable_duration.catala_en:7.11-7.12: -└─┐ -7 │ context d content boolean - │ ‾ - └┬ `UncomparableDurations` exception management - └─ `<` operator -[WARNING] In scope "Le", the variable "d" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_date/bad/uncomparable_duration.catala_en:17.11-17.12: -└──┐ -17 │ context d content boolean - │ ‾ - └┬ `UncomparableDurations` exception management - └─ `<=` operator -[WARNING] In scope "Gt", the variable "d" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_date/bad/uncomparable_duration.catala_en:27.11-27.12: -└──┐ -27 │ context d content boolean - │ ‾ - └┬ `UncomparableDurations` exception management - └─ `<=` operator -[WARNING] In scope "Ge", the variable "d" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_date/bad/uncomparable_duration.catala_en:37.11-37.12: -└──┐ -37 │ context d content boolean - │ ‾ - └┬ `UncomparableDurations` exception management - └─ `>=` operator [ERROR] Cannot compare together durations that cannot be converted to a precise number of days ┌─⯈ tests/test_date/bad/uncomparable_duration.catala_en:40.23-40.30: @@ -94,38 +62,6 @@ $ catala Interpret -s Ge ```catala-test-inline $ catala Interpret -s Gt -[WARNING] In scope "Lt", the variable "d" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_date/bad/uncomparable_duration.catala_en:7.11-7.12: -└─┐ -7 │ context d content boolean - │ ‾ - └┬ `UncomparableDurations` exception management - └─ `<` operator -[WARNING] In scope "Le", the variable "d" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_date/bad/uncomparable_duration.catala_en:17.11-17.12: -└──┐ -17 │ context d content boolean - │ ‾ - └┬ `UncomparableDurations` exception management - └─ `<=` operator -[WARNING] In scope "Gt", the variable "d" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_date/bad/uncomparable_duration.catala_en:27.11-27.12: -└──┐ -27 │ context d content boolean - │ ‾ - └┬ `UncomparableDurations` exception management - └─ `<=` operator -[WARNING] In scope "Ge", the variable "d" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_date/bad/uncomparable_duration.catala_en:37.11-37.12: -└──┐ -37 │ context d content boolean - │ ‾ - └┬ `UncomparableDurations` exception management - └─ `>=` operator [ERROR] Cannot compare together durations that cannot be converted to a precise number of days ┌─⯈ tests/test_date/bad/uncomparable_duration.catala_en:30.23-30.30: @@ -146,38 +82,6 @@ $ catala Interpret -s Gt ```catala-test-inline $ catala Interpret -s Le -[WARNING] In scope "Lt", the variable "d" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_date/bad/uncomparable_duration.catala_en:7.11-7.12: -└─┐ -7 │ context d content boolean - │ ‾ - └┬ `UncomparableDurations` exception management - └─ `<` operator -[WARNING] In scope "Le", the variable "d" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_date/bad/uncomparable_duration.catala_en:17.11-17.12: -└──┐ -17 │ context d content boolean - │ ‾ - └┬ `UncomparableDurations` exception management - └─ `<=` operator -[WARNING] In scope "Gt", the variable "d" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_date/bad/uncomparable_duration.catala_en:27.11-27.12: -└──┐ -27 │ context d content boolean - │ ‾ - └┬ `UncomparableDurations` exception management - └─ `<=` operator -[WARNING] In scope "Ge", the variable "d" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_date/bad/uncomparable_duration.catala_en:37.11-37.12: -└──┐ -37 │ context d content boolean - │ ‾ - └┬ `UncomparableDurations` exception management - └─ `>=` operator [ERROR] Cannot compare together durations that cannot be converted to a precise number of days ┌─⯈ tests/test_date/bad/uncomparable_duration.catala_en:20.23-20.30: @@ -198,38 +102,6 @@ $ catala Interpret -s Le ```catala-test-inline $ catala Interpret -s Lt -[WARNING] In scope "Lt", the variable "d" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_date/bad/uncomparable_duration.catala_en:7.11-7.12: -└─┐ -7 │ context d content boolean - │ ‾ - └┬ `UncomparableDurations` exception management - └─ `<` operator -[WARNING] In scope "Le", the variable "d" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_date/bad/uncomparable_duration.catala_en:17.11-17.12: -└──┐ -17 │ context d content boolean - │ ‾ - └┬ `UncomparableDurations` exception management - └─ `<=` operator -[WARNING] In scope "Gt", the variable "d" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_date/bad/uncomparable_duration.catala_en:27.11-27.12: -└──┐ -27 │ context d content boolean - │ ‾ - └┬ `UncomparableDurations` exception management - └─ `<=` operator -[WARNING] In scope "Ge", the variable "d" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_date/bad/uncomparable_duration.catala_en:37.11-37.12: -└──┐ -37 │ context d content boolean - │ ‾ - └┬ `UncomparableDurations` exception management - └─ `>=` operator [ERROR] Cannot compare together durations that cannot be converted to a precise number of days ┌─⯈ tests/test_date/bad/uncomparable_duration.catala_en:10.23-10.30: diff --git a/tests/test_default/bad/conflict.catala_en b/tests/test_default/bad/conflict.catala_en index 34a819c7f..b9c263283 100644 --- a/tests/test_default/bad/conflict.catala_en +++ b/tests/test_default/bad/conflict.catala_en @@ -2,7 +2,7 @@ ```catala declaration scope A: - context x content integer + output x content integer scope A: definition x under condition true consequence equals 1 @@ -11,13 +11,6 @@ scope A: ```catala-test-inline $ catala Interpret -s A -[WARNING] In scope "A", the variable "x" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_default/bad/conflict.catala_en:5.11-5.12: -└─┐ -5 │ context x content integer - │ ‾ - └─ Article [ERROR] There is a conflict between multiple valid consequences for assigning the same variable. This consequence has a valid justification: diff --git a/tests/test_default/bad/empty.catala_en b/tests/test_default/bad/empty.catala_en index a155498f3..541d8d82f 100644 --- a/tests/test_default/bad/empty.catala_en +++ b/tests/test_default/bad/empty.catala_en @@ -2,8 +2,8 @@ ```catala declaration scope A: - context x content integer - context y content boolean + output x content integer + output y content boolean scope A: definition x equals 1 @@ -11,26 +11,19 @@ scope A: ```catala-test-inline $ catala Interpret -s A -[WARNING] In scope "A", the variable "x" is never used anywhere; maybe it's unnecessary? +[WARNING] In scope "A", the variable "y" is declared but never defined; did you forget something? -┌─⯈ tests/test_default/bad/empty.catala_en:5.11-5.12: +┌─⯈ tests/test_default/bad/empty.catala_en:6.10-6.11: └─┐ -5 │ context x content integer - │ ‾ - └─ Article -[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_default/bad/empty.catala_en:6.11-6.12: -└─┐ -6 │ context y content boolean - │ ‾ +6 │ output y content boolean + │ ‾ └─ Article [ERROR] This variable evaluated to an empty term (no rule that defined it applied in this situation) -┌─⯈ tests/test_default/bad/empty.catala_en:6.11-6.12: +┌─⯈ tests/test_default/bad/empty.catala_en:6.10-6.11: └─┐ -6 │ context y content boolean - │ ‾ +6 │ output y content boolean + │ ‾ └─ Article #return code 255# ``` diff --git a/tests/test_default/bad/empty_with_rules.catala_en b/tests/test_default/bad/empty_with_rules.catala_en index 0dd269444..c04cefc6b 100644 --- a/tests/test_default/bad/empty_with_rules.catala_en +++ b/tests/test_default/bad/empty_with_rules.catala_en @@ -2,8 +2,8 @@ ```catala declaration scope A: - context x content integer - context y content integer + output x content integer + output y content integer scope A: definition y equals 1 @@ -14,19 +14,12 @@ scope A: ```catala-test-inline $ catala Interpret -s A -[WARNING] In scope "A", the variable "x" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_default/bad/empty_with_rules.catala_en:5.11-5.12: -└─┐ -5 │ context x content integer - │ ‾ - └─ Article [ERROR] This variable evaluated to an empty term (no rule that defined it applied in this situation) -┌─⯈ tests/test_default/bad/empty_with_rules.catala_en:5.11-5.12: +┌─⯈ tests/test_default/bad/empty_with_rules.catala_en:5.10-5.11: └─┐ -5 │ context x content integer - │ ‾ +5 │ output x content integer + │ ‾ └─ Article #return code 255# ``` diff --git a/tests/test_enum/bad/missing_case.catala_en b/tests/test_enum/bad/missing_case.catala_en index c4338af25..4efbbbaf4 100644 --- a/tests/test_enum/bad/missing_case.catala_en +++ b/tests/test_enum/bad/missing_case.catala_en @@ -7,8 +7,8 @@ declaration enumeration E: -- Case3 declaration scope A: - context e content E - context out content boolean + input e content E + output out content boolean scope A: definition out equals match e with pattern @@ -18,13 +18,6 @@ scope A: ```catala-test-inline $ catala Interpret -s A -[WARNING] In scope "A", the variable "out" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_enum/bad/missing_case.catala_en:11.11-11.14: -└──┐ -11 │ context out content boolean - │ ‾‾‾ - └─ Article [WARNING] The constructor "Case3" of enumeration "E" is never used; maybe it's unnecessary? ┌─⯈ tests/test_enum/bad/missing_case.catala_en:7.6-7.11: diff --git a/tests/test_exception/bad/exceptions_cycle.catala_en b/tests/test_exception/bad/exceptions_cycle.catala_en index 3258872f8..38bbb256f 100644 --- a/tests/test_exception/bad/exceptions_cycle.catala_en +++ b/tests/test_exception/bad/exceptions_cycle.catala_en @@ -2,7 +2,7 @@ ```catala declaration scope A: - context x content integer + output x content integer scope A: label base_x @@ -20,13 +20,6 @@ scope A: ```catala-test-inline $ catala Interpret -s A -[WARNING] In scope "A", the variable "x" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_exception/bad/exceptions_cycle.catala_en:5.11-5.12: -└─┐ -5 │ context x content integer - │ ‾ - └─ Test [ERROR] Exception cycle detected when defining x: each of these 3 exceptions applies over the previous one, and the first applies over the last ┌─⯈ tests/test_exception/bad/exceptions_cycle.catala_en:8.3-10.15: diff --git a/tests/test_exception/bad/self_exception.catala_en b/tests/test_exception/bad/self_exception.catala_en index e53a3052f..428dcef61 100644 --- a/tests/test_exception/bad/self_exception.catala_en +++ b/tests/test_exception/bad/self_exception.catala_en @@ -2,7 +2,7 @@ ```catala declaration scope A: - context y content integer + output y content integer scope A: label base_y @@ -12,13 +12,6 @@ scope A: ```catala-test-inline $ catala Interpret -s A -[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_exception/bad/self_exception.catala_en:5.11-5.12: -└─┐ -5 │ context y content integer - │ ‾ - └─ Test [ERROR] Cannot define rule as an exception to itself ┌─⯈ tests/test_exception/bad/self_exception.catala_en:9.13-9.19: diff --git a/tests/test_exception/bad/two_exceptions.catala_en b/tests/test_exception/bad/two_exceptions.catala_en index c188137e2..ac11f22f1 100644 --- a/tests/test_exception/bad/two_exceptions.catala_en +++ b/tests/test_exception/bad/two_exceptions.catala_en @@ -2,7 +2,7 @@ ```catala declaration scope A: - context x content integer + output x content integer scope A: label base_x @@ -17,13 +17,6 @@ scope A: ```catala-test-inline $ catala Interpret -s A -[WARNING] In scope "A", the variable "x" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_exception/bad/two_exceptions.catala_en:5.11-5.12: -└─┐ -5 │ context x content integer - │ ‾ - └─ Test [ERROR] There is a conflict between multiple valid consequences for assigning the same variable. This consequence has a valid justification: diff --git a/tests/test_func/good/context_func.catala_en b/tests/test_func/good/context_func.catala_en index e74a8e80b..d2846b48a 100644 --- a/tests/test_func/good/context_func.catala_en +++ b/tests/test_func/good/context_func.catala_en @@ -2,7 +2,7 @@ ```catala declaration scope A: - context f content integer depends on x content integer + output f content integer depends on x content integer declaration scope B: input b content boolean @@ -17,51 +17,81 @@ scope B: ```catala-test-inline $ catala Scopelang -s B -[WARNING] In scope "A", the variable "f" is never used anywhere; maybe it's unnecessary? +[ERROR] It is impossible to give a definition to a subscope variable not tagged as input or context. -┌─⯈ tests/test_func/good/context_func.catala_en:5.11-5.12: +Incriminated subscope: +┌─⯈ tests/test_func/good/context_func.catala_en:9.3-9.4: └─┐ -5 │ context f content integer depends on x content integer - │ ‾ +9 │ a scope A + │ ‾ └─ Test -let scope B (b: bool|input) = - let a.f : integer → integer = λ (x: integer) → ⟨b && x > 0 ⊢ x - 1⟩; - call A[a] + +Incriminated variable: +┌─⯈ tests/test_func/good/context_func.catala_en:5.10-5.11: +└─┐ +5 │ output f content integer depends on x content integer + │ ‾ + └─ Test + +Incriminated subscope variable definition: +┌─⯈ tests/test_func/good/context_func.catala_en:15.3-15.17: +└──┐ +15 │ definition a.f of x under condition b and x > 0 consequence equals x - 1 + │ ‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + +#return code 255# ``` ```catala-test-inline $ catala Dcalc -s A -[WARNING] In scope "A", the variable "f" is never used anywhere; maybe it's unnecessary? +[ERROR] It is impossible to give a definition to a subscope variable not tagged as input or context. + +Incriminated subscope: +┌─⯈ tests/test_func/good/context_func.catala_en:9.3-9.4: +└─┐ +9 │ a scope A + │ ‾ + └─ Test -┌─⯈ tests/test_func/good/context_func.catala_en:5.11-5.12: +Incriminated variable: +┌─⯈ tests/test_func/good/context_func.catala_en:5.10-5.11: └─┐ -5 │ context f content integer depends on x content integer - │ ‾ +5 │ output f content integer depends on x content integer + │ ‾ └─ Test -let scope A (A_in: A_in {f_in: integer → integer}): A = - let get f : integer → integer = A_in.f_in in - let set f : integer → integer = - λ (x: integer) → - error_empty ⟨ f x | true ⊢ ⟨true ⊢ x + 1⟩ ⟩ - in - return {A} + +Incriminated subscope variable definition: +┌─⯈ tests/test_func/good/context_func.catala_en:15.3-15.17: +└──┐ +15 │ definition a.f of x under condition b and x > 0 consequence equals x - 1 + │ ‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + +#return code 255# ``` ```catala-test-inline $ catala Dcalc -s B -[WARNING] In scope "A", the variable "f" is never used anywhere; maybe it's unnecessary? +[ERROR] It is impossible to give a definition to a subscope variable not tagged as input or context. -┌─⯈ tests/test_func/good/context_func.catala_en:5.11-5.12: +Incriminated subscope: +┌─⯈ tests/test_func/good/context_func.catala_en:9.3-9.4: └─┐ -5 │ context f content integer depends on x content integer - │ ‾ +9 │ a scope A + │ ‾ └─ Test -let scope B (B_in: B_in {b_in: bool}): B = - let get b : bool = B_in.b_in in - let sub_set a.f : integer → integer = - λ (x: integer) → - ⟨b && x > 0 ⊢ x - 1⟩ - in - let call result : A = A { A_in f_in = a.f; } in - return {B} + +Incriminated variable: +┌─⯈ tests/test_func/good/context_func.catala_en:5.10-5.11: +└─┐ +5 │ output f content integer depends on x content integer + │ ‾ + └─ Test + +Incriminated subscope variable definition: +┌─⯈ tests/test_func/good/context_func.catala_en:15.3-15.17: +└──┐ +15 │ definition a.f of x under condition b and x > 0 consequence equals x - 1 + │ ‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + +#return code 255# ``` diff --git a/tests/test_io/bad/redefining_input.catala_en b/tests/test_io/bad/redefining_input.catala_en index ca484f678..51dd56659 100644 --- a/tests/test_io/bad/redefining_input.catala_en +++ b/tests/test_io/bad/redefining_input.catala_en @@ -2,27 +2,20 @@ ```catala declaration scope A: - input a content integer + input output a content integer scope A: definition a equals 0 ``` ```catala-test-inline $ catala Typecheck -[WARNING] In scope "A", the variable "a" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_io/bad/redefining_input.catala_en:5.9-5.10: -└─┐ -5 │ input a content integer - │ ‾ - └─ Test [ERROR] It is impossible to give a definition to a scope variable tagged as input. Incriminated variable: -┌─⯈ tests/test_io/bad/redefining_input.catala_en:5.9-5.10: +┌─⯈ tests/test_io/bad/redefining_input.catala_en:5.16-5.17: └─┐ -5 │ input a content integer - │ ‾ +5 │ input output a content integer + │ ‾ └─ Test Incriminated variable definition: diff --git a/tests/test_io/bad/using_non_output.catala_en b/tests/test_io/bad/using_non_output.catala_en index 09019c0f3..b304f32bf 100644 --- a/tests/test_io/bad/using_non_output.catala_en +++ b/tests/test_io/bad/using_non_output.catala_en @@ -15,6 +15,13 @@ scope B: ``` ```catala-test-inline $ catala Typecheck +[WARNING] This variable is dead code; it does not contribute to computing any of scope "A" outputs. Did you forget something? + +┌─⯈ tests/test_io/bad/using_non_output.catala_en:5.12-5.13: +└─┐ +5 │ internal a content integer + │ ‾ + └─ Test [WARNING] In scope "A", the variable "a" is never used anywhere; maybe it's unnecessary? ┌─⯈ tests/test_io/bad/using_non_output.catala_en:5.12-5.13: diff --git a/tests/test_proof/bad/array_length-empty.catala_en b/tests/test_proof/bad/array_length-empty.catala_en index 74e1d66f9..72066f257 100644 --- a/tests/test_proof/bad/array_length-empty.catala_en +++ b/tests/test_proof/bad/array_length-empty.catala_en @@ -2,8 +2,8 @@ ```catala declaration scope A: - context x content collection integer - context y content boolean + internal x content collection integer + output y content boolean scope A: definition x equals [0; 5] @@ -12,18 +12,11 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples -[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_proof/bad/array_length-empty.catala_en:6.11-6.12: -└─┐ -6 │ context y content boolean - │ ‾ - └─ Test [WARNING] [A.y] This variable might return an empty error: -┌─⯈ tests/test_proof/bad/array_length-empty.catala_en:6.11-6.12: +┌─⯈ tests/test_proof/bad/array_length-empty.catala_en:6.10-6.11: └─┐ -6 │ context y content boolean - │ ‾ +6 │ output y content boolean + │ ‾ └─ Test Counterexample generation is disabled so none was generated. ``` diff --git a/tests/test_proof/bad/array_length-overlap.catala_en b/tests/test_proof/bad/array_length-overlap.catala_en index 0d56b8605..981b663ed 100644 --- a/tests/test_proof/bad/array_length-overlap.catala_en +++ b/tests/test_proof/bad/array_length-overlap.catala_en @@ -2,8 +2,8 @@ ```catala declaration scope A: - context x content collection integer - context y content boolean + internal x content collection integer + output y content boolean scope A: definition x equals [0; 5] @@ -13,18 +13,11 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples -[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_proof/bad/array_length-overlap.catala_en:6.11-6.12: -└─┐ -6 │ context y content boolean - │ ‾ - └─ Test [WARNING] [A.y] At least two exceptions overlap for this variable: -┌─⯈ tests/test_proof/bad/array_length-overlap.catala_en:6.11-6.12: +┌─⯈ tests/test_proof/bad/array_length-overlap.catala_en:6.10-6.11: └─┐ -6 │ context y content boolean - │ ‾ +6 │ output y content boolean + │ ‾ └─ Test Counterexample generation is disabled so none was generated. ``` diff --git a/tests/test_proof/bad/dates_get_year-empty.catala_en b/tests/test_proof/bad/dates_get_year-empty.catala_en index 4abfabb2f..a99324320 100644 --- a/tests/test_proof/bad/dates_get_year-empty.catala_en +++ b/tests/test_proof/bad/dates_get_year-empty.catala_en @@ -2,8 +2,8 @@ ```catala declaration scope A: - context x content date - context y content boolean + input x content date + output y content boolean scope A: definition x equals |2022-01-16| @@ -15,18 +15,20 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples -[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? +[ERROR] It is impossible to give a definition to a scope variable tagged as input. -┌─⯈ tests/test_proof/bad/dates_get_year-empty.catala_en:6.11-6.12: +Incriminated variable: +┌─⯈ tests/test_proof/bad/dates_get_year-empty.catala_en:5.9-5.10: └─┐ -6 │ context y content boolean - │ ‾ +5 │ input x content date + │ ‾ └─ Test -[WARNING] [A.y] This variable might return an empty error: -┌─⯈ tests/test_proof/bad/dates_get_year-empty.catala_en:6.11-6.12: + +Incriminated variable definition: +┌─⯈ tests/test_proof/bad/dates_get_year-empty.catala_en:9.3-9.15: └─┐ -6 │ context y content boolean - │ ‾ - └─ Test -Counterexample generation is disabled so none was generated. +9 │ definition x equals |2022-01-16| + │ ‾‾‾‾‾‾‾‾‾‾‾‾ + +#return code 255# ``` diff --git a/tests/test_proof/bad/dates_get_year-overlap.catala_en b/tests/test_proof/bad/dates_get_year-overlap.catala_en index 32e710d96..dca3c26ac 100644 --- a/tests/test_proof/bad/dates_get_year-overlap.catala_en +++ b/tests/test_proof/bad/dates_get_year-overlap.catala_en @@ -2,8 +2,8 @@ ```catala declaration scope A: - context x content date - context y content boolean + internal x content date + output y content boolean scope A: definition x equals |2022-01-16| @@ -15,18 +15,11 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples -[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_proof/bad/dates_get_year-overlap.catala_en:6.11-6.12: -└─┐ -6 │ context y content boolean - │ ‾ - └─ Test [WARNING] [A.y] At least two exceptions overlap for this variable: -┌─⯈ tests/test_proof/bad/dates_get_year-overlap.catala_en:6.11-6.12: +┌─⯈ tests/test_proof/bad/dates_get_year-overlap.catala_en:6.10-6.11: └─┐ -6 │ context y content boolean - │ ‾ +6 │ output y content boolean + │ ‾ └─ Test Counterexample generation is disabled so none was generated. ``` diff --git a/tests/test_proof/bad/dates_simple-empty.catala_en b/tests/test_proof/bad/dates_simple-empty.catala_en index 1781d0c10..21c8ee2ed 100644 --- a/tests/test_proof/bad/dates_simple-empty.catala_en +++ b/tests/test_proof/bad/dates_simple-empty.catala_en @@ -2,8 +2,8 @@ ```catala declaration scope A: - context x content date - context y content boolean + internal x content date + output y content boolean scope A: definition x equals |2022-01-16| @@ -14,18 +14,11 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples -[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_proof/bad/dates_simple-empty.catala_en:6.11-6.12: -└─┐ -6 │ context y content boolean - │ ‾ - └─ Test [WARNING] [A.y] This variable might return an empty error: -┌─⯈ tests/test_proof/bad/dates_simple-empty.catala_en:6.11-6.12: +┌─⯈ tests/test_proof/bad/dates_simple-empty.catala_en:6.10-6.11: └─┐ -6 │ context y content boolean - │ ‾ +6 │ output y content boolean + │ ‾ └─ Test Counterexample generation is disabled so none was generated. ``` diff --git a/tests/test_proof/bad/dates_simple-overlap.catala_en b/tests/test_proof/bad/dates_simple-overlap.catala_en index 69b1ea1fa..ad4952418 100644 --- a/tests/test_proof/bad/dates_simple-overlap.catala_en +++ b/tests/test_proof/bad/dates_simple-overlap.catala_en @@ -2,8 +2,8 @@ ```catala declaration scope A: - context x content date - context y content boolean + internal x content date + output y content boolean scope A: definition x equals |2022-01-16| @@ -15,18 +15,11 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples -[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_proof/bad/dates_simple-overlap.catala_en:6.11-6.12: -└─┐ -6 │ context y content boolean - │ ‾ - └─ Test [WARNING] [A.y] At least two exceptions overlap for this variable: -┌─⯈ tests/test_proof/bad/dates_simple-overlap.catala_en:6.11-6.12: +┌─⯈ tests/test_proof/bad/dates_simple-overlap.catala_en:6.10-6.11: └─┐ -6 │ context y content boolean - │ ‾ +6 │ output y content boolean + │ ‾ └─ Test Counterexample generation is disabled so none was generated. ``` diff --git a/tests/test_proof/bad/duration-empty.catala_en b/tests/test_proof/bad/duration-empty.catala_en index 0928ffc86..ac710b8aa 100644 --- a/tests/test_proof/bad/duration-empty.catala_en +++ b/tests/test_proof/bad/duration-empty.catala_en @@ -2,8 +2,8 @@ ```catala declaration scope A: - context x content duration - context y content boolean + internal x content duration + output y content boolean scope A: definition x equals 94 day @@ -12,18 +12,11 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples -[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_proof/bad/duration-empty.catala_en:6.11-6.12: -└─┐ -6 │ context y content boolean - │ ‾ - └─ Test [WARNING] [A.y] This variable might return an empty error: -┌─⯈ tests/test_proof/bad/duration-empty.catala_en:6.11-6.12: +┌─⯈ tests/test_proof/bad/duration-empty.catala_en:6.10-6.11: └─┐ -6 │ context y content boolean - │ ‾ +6 │ output y content boolean + │ ‾ └─ Test Counterexample generation is disabled so none was generated. ``` diff --git a/tests/test_proof/bad/duration-overlap.catala_en b/tests/test_proof/bad/duration-overlap.catala_en index 338abc632..e3bad00d6 100644 --- a/tests/test_proof/bad/duration-overlap.catala_en +++ b/tests/test_proof/bad/duration-overlap.catala_en @@ -2,8 +2,8 @@ ```catala declaration scope A: - context x content duration - context y content boolean + internal x content duration + output y content boolean scope A: definition x equals 94 day @@ -13,18 +13,11 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples -[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_proof/bad/duration-overlap.catala_en:6.11-6.12: -└─┐ -6 │ context y content boolean - │ ‾ - └─ Test [WARNING] [A.y] At least two exceptions overlap for this variable: -┌─⯈ tests/test_proof/bad/duration-overlap.catala_en:6.11-6.12: +┌─⯈ tests/test_proof/bad/duration-overlap.catala_en:6.10-6.11: └─┐ -6 │ context y content boolean - │ ‾ +6 │ output y content boolean + │ ‾ └─ Test Counterexample generation is disabled so none was generated. ``` diff --git a/tests/test_proof/bad/enums-empty.catala_en b/tests/test_proof/bad/enums-empty.catala_en index db0b70d54..81d1ca84a 100644 --- a/tests/test_proof/bad/enums-empty.catala_en +++ b/tests/test_proof/bad/enums-empty.catala_en @@ -12,8 +12,8 @@ declaration enumeration S: -- B content T declaration scope A: - context x content integer - context y content S + output x content integer + internal y content S scope A: definition y equals B content (D content 1) @@ -23,13 +23,6 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples -[WARNING] In scope "A", the variable "x" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_proof/bad/enums-empty.catala_en:15.11-15.12: -└──┐ -15 │ context x content integer - │ ‾ - └─ Test [WARNING] The constructor "C" of enumeration "T" is never used; maybe it's unnecessary? ┌─⯈ tests/test_proof/bad/enums-empty.catala_en:7.7-7.8: @@ -38,10 +31,10 @@ $ catala Proof --disable_counterexamples │ ‾ └─ Test [WARNING] [A.x] This variable might return an empty error: -┌─⯈ tests/test_proof/bad/enums-empty.catala_en:15.11-15.12: +┌─⯈ tests/test_proof/bad/enums-empty.catala_en:15.10-15.11: └──┐ -15 │ context x content integer - │ ‾ +15 │ output x content integer + │ ‾ └─ Test Counterexample generation is disabled so none was generated. ``` diff --git a/tests/test_proof/bad/enums-nonbool-empty.catala_en b/tests/test_proof/bad/enums-nonbool-empty.catala_en index e9fc7a5b7..5e19edb3a 100644 --- a/tests/test_proof/bad/enums-nonbool-empty.catala_en +++ b/tests/test_proof/bad/enums-nonbool-empty.catala_en @@ -10,8 +10,8 @@ declaration enumeration S: -- B content T declaration scope A: - context x content integer - context y content S + output x content integer + internal y content S scope A: definition y equals B content (D content 1) @@ -21,13 +21,6 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples -[WARNING] In scope "A", the variable "x" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_proof/bad/enums-nonbool-empty.catala_en:13.11-13.12: -└──┐ -13 │ context x content integer - │ ‾ - └─ Test [WARNING] The constructor "C" of enumeration "T" is never used; maybe it's unnecessary? ┌─⯈ tests/test_proof/bad/enums-nonbool-empty.catala_en:5.7-5.8: @@ -36,10 +29,10 @@ $ catala Proof --disable_counterexamples │ ‾ └─ Test [WARNING] [A.x] This variable might return an empty error: -┌─⯈ tests/test_proof/bad/enums-nonbool-empty.catala_en:13.11-13.12: +┌─⯈ tests/test_proof/bad/enums-nonbool-empty.catala_en:13.10-13.11: └──┐ -13 │ context x content integer - │ ‾ +13 │ output x content integer + │ ‾ └─ Test Counterexample generation is disabled so none was generated. ``` diff --git a/tests/test_proof/bad/enums-nonbool-overlap.catala_en b/tests/test_proof/bad/enums-nonbool-overlap.catala_en index 57b905670..abf9f5610 100644 --- a/tests/test_proof/bad/enums-nonbool-overlap.catala_en +++ b/tests/test_proof/bad/enums-nonbool-overlap.catala_en @@ -10,8 +10,8 @@ declaration enumeration S: -- B content T declaration scope A: - context x content integer - context y content S + output x content integer + internal y content S scope A: definition y equals B content (D content 1) @@ -21,13 +21,6 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples -[WARNING] In scope "A", the variable "x" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_proof/bad/enums-nonbool-overlap.catala_en:13.11-13.12: -└──┐ -13 │ context x content integer - │ ‾ - └─ Test [WARNING] The constructor "C" of enumeration "T" is never used; maybe it's unnecessary? ┌─⯈ tests/test_proof/bad/enums-nonbool-overlap.catala_en:5.7-5.8: @@ -36,10 +29,10 @@ $ catala Proof --disable_counterexamples │ ‾ └─ Test [WARNING] [A.x] At least two exceptions overlap for this variable: -┌─⯈ tests/test_proof/bad/enums-nonbool-overlap.catala_en:13.11-13.12: +┌─⯈ tests/test_proof/bad/enums-nonbool-overlap.catala_en:13.10-13.11: └──┐ -13 │ context x content integer - │ ‾ +13 │ output x content integer + │ ‾ └─ Test Counterexample generation is disabled so none was generated. ``` diff --git a/tests/test_proof/bad/enums-overlap.catala_en b/tests/test_proof/bad/enums-overlap.catala_en index 7b8ac7884..89e3ef2f9 100644 --- a/tests/test_proof/bad/enums-overlap.catala_en +++ b/tests/test_proof/bad/enums-overlap.catala_en @@ -12,8 +12,8 @@ declaration enumeration S: -- B content T declaration scope A: - context x content integer - context y content S + output x content integer + internal y content S scope A: definition y equals B content (D content 1) @@ -23,13 +23,6 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples -[WARNING] In scope "A", the variable "x" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_proof/bad/enums-overlap.catala_en:15.11-15.12: -└──┐ -15 │ context x content integer - │ ‾ - └─ Test [WARNING] The constructor "C" of enumeration "T" is never used; maybe it's unnecessary? ┌─⯈ tests/test_proof/bad/enums-overlap.catala_en:7.7-7.8: @@ -38,10 +31,10 @@ $ catala Proof --disable_counterexamples │ ‾ └─ Test [WARNING] [A.x] At least two exceptions overlap for this variable: -┌─⯈ tests/test_proof/bad/enums-overlap.catala_en:15.11-15.12: +┌─⯈ tests/test_proof/bad/enums-overlap.catala_en:15.10-15.11: └──┐ -15 │ context x content integer - │ ‾ +15 │ output x content integer + │ ‾ └─ Test Counterexample generation is disabled so none was generated. ``` diff --git a/tests/test_proof/bad/enums_inj-empty.catala_en b/tests/test_proof/bad/enums_inj-empty.catala_en index 19e52648e..b6b2d602e 100644 --- a/tests/test_proof/bad/enums_inj-empty.catala_en +++ b/tests/test_proof/bad/enums_inj-empty.catala_en @@ -6,8 +6,8 @@ declaration enumeration E: -- C2 declaration scope A: - context x content E - context y content integer + internal x content E + output y content integer scope A: definition x equals C1 @@ -16,13 +16,6 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples -[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_proof/bad/enums_inj-empty.catala_en:10.11-10.12: -└──┐ -10 │ context y content integer - │ ‾ - └─ Article [WARNING] The constructor "C2" of enumeration "E" is never used; maybe it's unnecessary? ┌─⯈ tests/test_proof/bad/enums_inj-empty.catala_en:6.6-6.8: @@ -31,10 +24,10 @@ $ catala Proof --disable_counterexamples │ ‾‾ └─ Article [WARNING] [A.y] This variable might return an empty error: -┌─⯈ tests/test_proof/bad/enums_inj-empty.catala_en:10.11-10.12: +┌─⯈ tests/test_proof/bad/enums_inj-empty.catala_en:10.10-10.11: └──┐ -10 │ context y content integer - │ ‾ +10 │ output y content integer + │ ‾ └─ Article Counterexample generation is disabled so none was generated. ``` diff --git a/tests/test_proof/bad/enums_inj-overlap.catala_en b/tests/test_proof/bad/enums_inj-overlap.catala_en index fd340294f..1f6bf5ae4 100644 --- a/tests/test_proof/bad/enums_inj-overlap.catala_en +++ b/tests/test_proof/bad/enums_inj-overlap.catala_en @@ -6,8 +6,8 @@ declaration enumeration E: -- C2 declaration scope A: - context x content E - context y content integer + internal x content E + output y content integer scope A: definition x equals C1 @@ -18,18 +18,11 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples -[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_proof/bad/enums_inj-overlap.catala_en:10.11-10.12: -└──┐ -10 │ context y content integer - │ ‾ - └─ Article [WARNING] [A.y] At least two exceptions overlap for this variable: -┌─⯈ tests/test_proof/bad/enums_inj-overlap.catala_en:10.11-10.12: +┌─⯈ tests/test_proof/bad/enums_inj-overlap.catala_en:10.10-10.11: └──┐ -10 │ context y content integer - │ ‾ +10 │ output y content integer + │ ‾ └─ Article Counterexample generation is disabled so none was generated. ``` diff --git a/tests/test_proof/bad/enums_unit-empty.catala_en b/tests/test_proof/bad/enums_unit-empty.catala_en index 88675f291..6a28690c0 100644 --- a/tests/test_proof/bad/enums_unit-empty.catala_en +++ b/tests/test_proof/bad/enums_unit-empty.catala_en @@ -6,8 +6,8 @@ declaration enumeration E: -- Case2 declaration scope A: - context x content E - context y content integer + internal x content E + output y content integer scope A: definition x equals Case1 content 2 @@ -21,18 +21,11 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples -[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_proof/bad/enums_unit-empty.catala_en:10.11-10.12: -└──┐ -10 │ context y content integer - │ ‾ - └─ Article [WARNING] [A.y] This variable might return an empty error: -┌─⯈ tests/test_proof/bad/enums_unit-empty.catala_en:10.11-10.12: +┌─⯈ tests/test_proof/bad/enums_unit-empty.catala_en:10.10-10.11: └──┐ -10 │ context y content integer - │ ‾ +10 │ output y content integer + │ ‾ └─ Article Counterexample generation is disabled so none was generated. ``` diff --git a/tests/test_proof/bad/enums_unit-overlap.catala_en b/tests/test_proof/bad/enums_unit-overlap.catala_en index f52f241e8..6e60e55b6 100644 --- a/tests/test_proof/bad/enums_unit-overlap.catala_en +++ b/tests/test_proof/bad/enums_unit-overlap.catala_en @@ -6,8 +6,8 @@ declaration enumeration E: -- Case2 declaration scope A: - context x content E - context y content integer + internal x content E + output y content integer scope A: definition x equals Case1 content 2 @@ -21,18 +21,11 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples -[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_proof/bad/enums_unit-overlap.catala_en:10.11-10.12: -└──┐ -10 │ context y content integer - │ ‾ - └─ Article [WARNING] [A.y] At least two exceptions overlap for this variable: -┌─⯈ tests/test_proof/bad/enums_unit-overlap.catala_en:10.11-10.12: +┌─⯈ tests/test_proof/bad/enums_unit-overlap.catala_en:10.10-10.11: └──┐ -10 │ context y content integer - │ ‾ +10 │ output y content integer + │ ‾ └─ Article Counterexample generation is disabled so none was generated. ``` diff --git a/tests/test_proof/bad/let_in_condition-empty.catala_en b/tests/test_proof/bad/let_in_condition-empty.catala_en index a88221968..341e041eb 100644 --- a/tests/test_proof/bad/let_in_condition-empty.catala_en +++ b/tests/test_proof/bad/let_in_condition-empty.catala_en @@ -2,7 +2,7 @@ ```catala declaration scope A: - context x content boolean + output x content boolean scope A: definition x under condition @@ -13,18 +13,11 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples -[WARNING] In scope "A", the variable "x" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_proof/bad/let_in_condition-empty.catala_en:5.11-5.12: -└─┐ -5 │ context x content boolean - │ ‾ - └─ Test [WARNING] [A.x] This variable might return an empty error: -┌─⯈ tests/test_proof/bad/let_in_condition-empty.catala_en:5.11-5.12: +┌─⯈ tests/test_proof/bad/let_in_condition-empty.catala_en:5.10-5.11: └─┐ -5 │ context x content boolean - │ ‾ +5 │ output x content boolean + │ ‾ └─ Test Counterexample generation is disabled so none was generated. ``` diff --git a/tests/test_proof/bad/money-empty.catala_en b/tests/test_proof/bad/money-empty.catala_en index 80bfb57b2..5de7fe034 100644 --- a/tests/test_proof/bad/money-empty.catala_en +++ b/tests/test_proof/bad/money-empty.catala_en @@ -4,8 +4,8 @@ The case x < $1000 is not handled ```catala declaration scope A: - context x content money - context y content boolean + internal x content money + output y content boolean scope A: definition x equals $20,000 @@ -16,18 +16,11 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples -[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_proof/bad/money-empty.catala_en:8.11-8.12: -└─┐ -8 │ context y content boolean - │ ‾ - └─ Test [WARNING] [A.y] This variable might return an empty error: -┌─⯈ tests/test_proof/bad/money-empty.catala_en:8.11-8.12: +┌─⯈ tests/test_proof/bad/money-empty.catala_en:8.10-8.11: └─┐ -8 │ context y content boolean - │ ‾ +8 │ output y content boolean + │ ‾ └─ Test Counterexample generation is disabled so none was generated. ``` diff --git a/tests/test_proof/bad/money-overlap.catala_en b/tests/test_proof/bad/money-overlap.catala_en index 2078af7a0..aa60442be 100644 --- a/tests/test_proof/bad/money-overlap.catala_en +++ b/tests/test_proof/bad/money-overlap.catala_en @@ -4,8 +4,8 @@ Overlap when x = $1000 ```catala declaration scope A: - context x content money - context y content boolean + internal x content money + output y content boolean scope A: definition x equals $20,000 @@ -17,18 +17,11 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples -[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_proof/bad/money-overlap.catala_en:8.11-8.12: -└─┐ -8 │ context y content boolean - │ ‾ - └─ Test [WARNING] [A.y] At least two exceptions overlap for this variable: -┌─⯈ tests/test_proof/bad/money-overlap.catala_en:8.11-8.12: +┌─⯈ tests/test_proof/bad/money-overlap.catala_en:8.10-8.11: └─┐ -8 │ context y content boolean - │ ‾ +8 │ output y content boolean + │ ‾ └─ Test Counterexample generation is disabled so none was generated. ``` diff --git a/tests/test_proof/bad/no_vars-conflict.catala_en b/tests/test_proof/bad/no_vars-conflict.catala_en index 1eb287ff3..178a790c8 100644 --- a/tests/test_proof/bad/no_vars-conflict.catala_en +++ b/tests/test_proof/bad/no_vars-conflict.catala_en @@ -4,8 +4,8 @@ Should fail since y has two definitions when x = 0 ```catala declaration scope A: - context x content integer - context y content integer + internal x content integer + output y content integer scope A: definition x under condition (6*7 = 42) and (false or (true and 1458 / 27 = 54.)) @@ -17,18 +17,11 @@ scope A: ``` ```catala-test-inline $ catala Proof --disable_counterexamples -[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_proof/bad/no_vars-conflict.catala_en:8.11-8.12: -└─┐ -8 │ context y content integer - │ ‾ - └─ Test [WARNING] [A.y] At least two exceptions overlap for this variable: -┌─⯈ tests/test_proof/bad/no_vars-conflict.catala_en:8.11-8.12: +┌─⯈ tests/test_proof/bad/no_vars-conflict.catala_en:8.10-8.11: └─┐ -8 │ context y content integer - │ ‾ +8 │ output y content integer + │ ‾ └─ Test Counterexample generation is disabled so none was generated. ``` diff --git a/tests/test_proof/bad/no_vars-empty.catala_en b/tests/test_proof/bad/no_vars-empty.catala_en index 795f08846..6de8f1502 100644 --- a/tests/test_proof/bad/no_vars-empty.catala_en +++ b/tests/test_proof/bad/no_vars-empty.catala_en @@ -3,8 +3,8 @@ ```catala declaration scope A: - context x content integer - context y content integer + internal x content integer + output y content integer scope A: definition x under condition (6*7 = 42) and (false or (true and 1458 / 27 = 54.)) @@ -16,18 +16,11 @@ scope A: ``` ```catala-test-inline $ catala Proof --disable_counterexamples -[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_proof/bad/no_vars-empty.catala_en:7.11-7.12: -└─┐ -7 │ context y content integer - │ ‾ - └─ Test [WARNING] [A.y] This variable might return an empty error: -┌─⯈ tests/test_proof/bad/no_vars-empty.catala_en:7.11-7.12: +┌─⯈ tests/test_proof/bad/no_vars-empty.catala_en:7.10-7.11: └─┐ -7 │ context y content integer - │ ‾ +7 │ output y content integer + │ ‾ └─ Test Counterexample generation is disabled so none was generated. ``` diff --git a/tests/test_proof/bad/prolala_motivating_example.catala_en b/tests/test_proof/bad/prolala_motivating_example.catala_en index 93b067856..1136b06bd 100644 --- a/tests/test_proof/bad/prolala_motivating_example.catala_en +++ b/tests/test_proof/bad/prolala_motivating_example.catala_en @@ -6,8 +6,8 @@ Demo: https://asciinema.org/a/461790 ```catala-metadata declaration scope Eligibility: - context is_student content boolean - context is_professor content boolean + internal is_student content boolean + internal is_professor content boolean output is_eligible content boolean output is_eligible_correct condition @@ -54,11 +54,11 @@ scope Eligibility: ```catala-metadata declaration scope Amount: eligibility scope Eligibility - context is_student content boolean - context is_professor content boolean - context number_of_advisors content integer - context amount content integer - context correct_amount content integer + internal is_student content boolean + internal is_professor content boolean + internal number_of_advisors content integer + output amount content integer + output correct_amount content integer scope Amount: definition eligibility.is_student equals is_student @@ -123,44 +123,29 @@ scope Amount: ```catala-test-inline $ catala Proof --disable_counterexamples -[WARNING] In scope "Amount", the variable "amount" is never used anywhere; maybe it's unnecessary? +[ERROR] It is impossible to give a definition to a subscope variable not tagged as input or context. -┌─⯈ tests/test_proof/bad/prolala_motivating_example.catala_en:60.11-60.17: +Incriminated subscope: +┌─⯈ tests/test_proof/bad/prolala_motivating_example.catala_en:56.3-56.14: └──┐ -60 │ context amount content integer - │ ‾‾‾‾‾‾ +56 │ eligibility scope Eligibility + │ ‾‾‾‾‾‾‾‾‾‾‾ └┬ ProLaLa 2022 Super Cash Bonus └─ Amount -[WARNING] In scope "Amount", the variable "correct_amount" is never used anywhere; maybe it's unnecessary? -┌─⯈ tests/test_proof/bad/prolala_motivating_example.catala_en:61.11-61.25: -└──┐ -61 │ context correct_amount content integer - │ ‾‾‾‾‾‾‾‾‾‾‾‾‾‾ - └┬ ProLaLa 2022 Super Cash Bonus - └─ Amount -[WARNING] [Amount.amount] This variable might return an empty error: -┌─⯈ tests/test_proof/bad/prolala_motivating_example.catala_en:60.11-60.17: -└──┐ -60 │ context amount content integer - │ ‾‾‾‾‾‾ - └┬ ProLaLa 2022 Super Cash Bonus - └─ Amount -Counterexample generation is disabled so none was generated. -[WARNING] [Eligibility.is_eligible] This variable might return an empty error: -┌─⯈ tests/test_proof/bad/prolala_motivating_example.catala_en:11.10-11.21: -└──┐ -11 │ output is_eligible content boolean - │ ‾‾‾‾‾‾‾‾‾‾‾ - └┬ ProLaLa 2022 Super Cash Bonus - └─ Eligibility -Counterexample generation is disabled so none was generated. -[WARNING] [Eligibility.is_eligible] At least two exceptions overlap for this variable: -┌─⯈ tests/test_proof/bad/prolala_motivating_example.catala_en:11.10-11.21: +Incriminated variable: +┌─⯈ tests/test_proof/bad/prolala_motivating_example.catala_en:9.12-9.22: +└─┐ +9 │ internal is_student content boolean + │ ‾‾‾‾‾‾‾‾‾‾ + └┬ ProLaLa 2022 Super Cash Bonus + └─ Eligibility + +Incriminated subscope variable definition: +┌─⯈ tests/test_proof/bad/prolala_motivating_example.catala_en:64.3-64.36: └──┐ -11 │ output is_eligible content boolean - │ ‾‾‾‾‾‾‾‾‾‾‾ - └┬ ProLaLa 2022 Super Cash Bonus - └─ Eligibility -Counterexample generation is disabled so none was generated. +64 │ definition eligibility.is_student equals is_student + │ ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + +#return code 255# ``` diff --git a/tests/test_proof/bad/rationals-empty.catala_en b/tests/test_proof/bad/rationals-empty.catala_en index effa44c57..528f013fa 100644 --- a/tests/test_proof/bad/rationals-empty.catala_en +++ b/tests/test_proof/bad/rationals-empty.catala_en @@ -2,8 +2,8 @@ ```catala declaration scope A: - context x content decimal - context y content boolean + internal x content decimal + output y content boolean scope A: definition x equals 1. @@ -12,18 +12,11 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples -[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_proof/bad/rationals-empty.catala_en:6.11-6.12: -└─┐ -6 │ context y content boolean - │ ‾ - └─ Test [WARNING] [A.y] This variable might return an empty error: -┌─⯈ tests/test_proof/bad/rationals-empty.catala_en:6.11-6.12: +┌─⯈ tests/test_proof/bad/rationals-empty.catala_en:6.10-6.11: └─┐ -6 │ context y content boolean - │ ‾ +6 │ output y content boolean + │ ‾ └─ Test Counterexample generation is disabled so none was generated. ``` diff --git a/tests/test_proof/bad/rationals-overlap.catala_en b/tests/test_proof/bad/rationals-overlap.catala_en index 27dee7f10..3f7a92ecb 100644 --- a/tests/test_proof/bad/rationals-overlap.catala_en +++ b/tests/test_proof/bad/rationals-overlap.catala_en @@ -2,8 +2,8 @@ ```catala declaration scope A: - context x content decimal - context y content boolean + internal x content decimal + output y content boolean scope A: definition x equals 1. @@ -13,18 +13,11 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples -[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_proof/bad/rationals-overlap.catala_en:6.11-6.12: -└─┐ -6 │ context y content boolean - │ ‾ - └─ Test [WARNING] [A.y] At least two exceptions overlap for this variable: -┌─⯈ tests/test_proof/bad/rationals-overlap.catala_en:6.11-6.12: +┌─⯈ tests/test_proof/bad/rationals-overlap.catala_en:6.10-6.11: └─┐ -6 │ context y content boolean - │ ‾ +6 │ output y content boolean + │ ‾ └─ Test Counterexample generation is disabled so none was generated. ``` diff --git a/tests/test_proof/bad/sat_solving.catala_en b/tests/test_proof/bad/sat_solving.catala_en index c52c66176..7b5ce646b 100644 --- a/tests/test_proof/bad/sat_solving.catala_en +++ b/tests/test_proof/bad/sat_solving.catala_en @@ -3,16 +3,16 @@ ```catala declaration scope A: - context x1 content boolean - context x2 content boolean - context x3 content boolean - context x4 content boolean - context x5 content boolean - context x6 content boolean - context x7 content boolean - context x8 content boolean - context x9 content boolean - context x10 content boolean + internal x1 content boolean + internal x2 content boolean + internal x3 content boolean + internal x4 content boolean + internal x5 content boolean + internal x6 content boolean + internal x7 content boolean + internal x8 content boolean + internal x9 content boolean + output x10 content boolean scope A: definition x1 equals true @@ -40,18 +40,11 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples -[WARNING] In scope "A", the variable "x10" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_proof/bad/sat_solving.catala_en:15.11-15.14: -└──┐ -15 │ context x10 content boolean - │ ‾‾‾ - └─ Test [WARNING] [A.x10] This variable might return an empty error: -┌─⯈ tests/test_proof/bad/sat_solving.catala_en:15.11-15.14: +┌─⯈ tests/test_proof/bad/sat_solving.catala_en:15.10-15.13: └──┐ -15 │ context x10 content boolean - │ ‾‾‾ +15 │ output x10 content boolean + │ ‾‾‾ └─ Test Counterexample generation is disabled so none was generated. ``` diff --git a/tests/test_proof/bad/structs-empty.catala_en b/tests/test_proof/bad/structs-empty.catala_en index 5a2faf4f7..4f2b1cc09 100644 --- a/tests/test_proof/bad/structs-empty.catala_en +++ b/tests/test_proof/bad/structs-empty.catala_en @@ -10,8 +10,8 @@ declaration structure S: data b content T declaration scope A: - context x content integer - context y content S + output x content integer + internal y content S scope A: definition y equals S { -- a : 0 -- b : T { -- c : false -- d: 0}} @@ -21,18 +21,11 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples -[WARNING] In scope "A", the variable "x" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_proof/bad/structs-empty.catala_en:13.11-13.12: -└──┐ -13 │ context x content integer - │ ‾ - └─ Test [WARNING] [A.x] This variable might return an empty error: -┌─⯈ tests/test_proof/bad/structs-empty.catala_en:13.11-13.12: +┌─⯈ tests/test_proof/bad/structs-empty.catala_en:13.10-13.11: └──┐ -13 │ context x content integer - │ ‾ +13 │ output x content integer + │ ‾ └─ Test Counterexample generation is disabled so none was generated. ``` diff --git a/tests/test_proof/bad/structs-overlap.catala_en b/tests/test_proof/bad/structs-overlap.catala_en index 16cffaf51..5bd9d0c48 100644 --- a/tests/test_proof/bad/structs-overlap.catala_en +++ b/tests/test_proof/bad/structs-overlap.catala_en @@ -10,8 +10,8 @@ declaration structure S: data b content T declaration scope A: - context x content integer - context y content S + output x content integer + internal y content S scope A: definition y equals S { -- a : 0 -- b : T { -- c : false -- d: 0}} @@ -21,18 +21,11 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples -[WARNING] In scope "A", the variable "x" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_proof/bad/structs-overlap.catala_en:13.11-13.12: -└──┐ -13 │ context x content integer - │ ‾ - └─ Test [WARNING] [A.x] At least two exceptions overlap for this variable: -┌─⯈ tests/test_proof/bad/structs-overlap.catala_en:13.11-13.12: +┌─⯈ tests/test_proof/bad/structs-overlap.catala_en:13.10-13.11: └──┐ -13 │ context x content integer - │ ‾ +13 │ output x content integer + │ ‾ └─ Test Counterexample generation is disabled so none was generated. ``` diff --git a/tests/test_proof/good/array_length.catala_en b/tests/test_proof/good/array_length.catala_en index d4047d916..55c4cb8a2 100644 --- a/tests/test_proof/good/array_length.catala_en +++ b/tests/test_proof/good/array_length.catala_en @@ -2,8 +2,8 @@ ```catala declaration scope A: - context x content collection integer - context y content boolean + internal x content collection integer + output y content boolean scope A: definition x equals [0; 5] @@ -13,12 +13,5 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples -[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_proof/good/array_length.catala_en:6.11-6.12: -└─┐ -6 │ context y content boolean - │ ‾ - └─ Test [RESULT] No errors found during the proof mode run. ``` diff --git a/tests/test_proof/good/dates_get_year.catala_en b/tests/test_proof/good/dates_get_year.catala_en index d3abf4fd8..4c2c385c1 100644 --- a/tests/test_proof/good/dates_get_year.catala_en +++ b/tests/test_proof/good/dates_get_year.catala_en @@ -2,8 +2,8 @@ ```catala declaration scope A: - context x content date - context y content boolean + internal x content date + output y content boolean scope A: definition x equals |2022-01-16| @@ -15,12 +15,5 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples -[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_proof/good/dates_get_year.catala_en:6.11-6.12: -└─┐ -6 │ context y content boolean - │ ‾ - └─ Test [RESULT] No errors found during the proof mode run. ``` diff --git a/tests/test_proof/good/duration.catala_en b/tests/test_proof/good/duration.catala_en index e2295f581..01a2e840c 100644 --- a/tests/test_proof/good/duration.catala_en +++ b/tests/test_proof/good/duration.catala_en @@ -2,8 +2,8 @@ ```catala declaration scope A: - context x content duration - context y content boolean + internal x content duration + output y content boolean scope A: definition x equals 94 day @@ -13,12 +13,5 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples -[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_proof/good/duration.catala_en:6.11-6.12: -└─┐ -6 │ context y content boolean - │ ‾ - └─ Test [RESULT] No errors found during the proof mode run. ``` diff --git a/tests/test_proof/good/enums-arith.catala_en b/tests/test_proof/good/enums-arith.catala_en index 1f5970a28..4fe972ee8 100644 --- a/tests/test_proof/good/enums-arith.catala_en +++ b/tests/test_proof/good/enums-arith.catala_en @@ -10,8 +10,8 @@ declaration enumeration S: -- B content T declaration scope A: - context x content integer - context y content S + output x content integer + internal y content S scope A: definition y equals B content (D content 1) @@ -21,13 +21,6 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples -[WARNING] In scope "A", the variable "x" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_proof/good/enums-arith.catala_en:13.11-13.12: -└──┐ -13 │ context x content integer - │ ‾ - └─ Test [WARNING] The constructor "C" of enumeration "T" is never used; maybe it's unnecessary? ┌─⯈ tests/test_proof/good/enums-arith.catala_en:5.7-5.8: diff --git a/tests/test_proof/good/enums-nonbool.catala_en b/tests/test_proof/good/enums-nonbool.catala_en index dd8a307ae..227d7d4e9 100644 --- a/tests/test_proof/good/enums-nonbool.catala_en +++ b/tests/test_proof/good/enums-nonbool.catala_en @@ -10,8 +10,8 @@ declaration enumeration S: -- B content T declaration scope A: - context x content integer - context y content S + output x content integer + internal y content S scope A: definition y equals B content (D content 1) @@ -21,13 +21,6 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples -[WARNING] In scope "A", the variable "x" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_proof/good/enums-nonbool.catala_en:13.11-13.12: -└──┐ -13 │ context x content integer - │ ‾ - └─ Test [WARNING] The constructor "C" of enumeration "T" is never used; maybe it's unnecessary? ┌─⯈ tests/test_proof/good/enums-nonbool.catala_en:5.7-5.8: diff --git a/tests/test_proof/good/enums.catala_en b/tests/test_proof/good/enums.catala_en index 6125d0d13..dbd08291c 100644 --- a/tests/test_proof/good/enums.catala_en +++ b/tests/test_proof/good/enums.catala_en @@ -10,8 +10,8 @@ declaration enumeration S: -- B content T declaration scope A: - context x content integer - context y content S + output x content integer + internal y content S scope A: definition y equals B content (D content 1) @@ -20,13 +20,6 @@ scope A: ``` ```catala-test-inline $ catala Proof --disable_counterexamples -[WARNING] In scope "A", the variable "x" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_proof/good/enums.catala_en:13.11-13.12: -└──┐ -13 │ context x content integer - │ ‾ - └─ Test [WARNING] The constructor "C" of enumeration "T" is never used; maybe it's unnecessary? ┌─⯈ tests/test_proof/good/enums.catala_en:5.7-5.8: diff --git a/tests/test_proof/good/enums_inj.catala_en b/tests/test_proof/good/enums_inj.catala_en index 31749c424..4e2c7b46a 100644 --- a/tests/test_proof/good/enums_inj.catala_en +++ b/tests/test_proof/good/enums_inj.catala_en @@ -6,8 +6,8 @@ declaration enumeration E: -- C2 declaration scope A: - context x content E - context y content integer + internal x content E + output y content integer scope A: definition x equals C1 @@ -17,12 +17,5 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples -[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_proof/good/enums_inj.catala_en:10.11-10.12: -└──┐ -10 │ context y content integer - │ ‾ - └─ Article [RESULT] No errors found during the proof mode run. ``` diff --git a/tests/test_proof/good/enums_unit.catala_en b/tests/test_proof/good/enums_unit.catala_en index e88591c59..d74268a25 100644 --- a/tests/test_proof/good/enums_unit.catala_en +++ b/tests/test_proof/good/enums_unit.catala_en @@ -6,8 +6,8 @@ declaration enumeration E: -- Case2 declaration scope A: - context x content E - context y content integer + internal x content E + output y content integer scope A: definition x equals Case1 content 2 @@ -21,12 +21,5 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples -[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_proof/good/enums_unit.catala_en:10.11-10.12: -└──┐ -10 │ context y content integer - │ ‾ - └─ Article [RESULT] No errors found during the proof mode run. ``` diff --git a/tests/test_proof/good/functions.catala_en b/tests/test_proof/good/functions.catala_en index 88eccebb5..c4de65b47 100644 --- a/tests/test_proof/good/functions.catala_en +++ b/tests/test_proof/good/functions.catala_en @@ -2,8 +2,8 @@ ```catala declaration scope A: - context x content integer depends on y content boolean - context z content integer + internal x content integer depends on y content boolean + output z content integer scope A: definition x of y under condition y consequence equals 0 @@ -14,12 +14,5 @@ scope A: ``` ```catala-test-inline $ catala Proof --disable_counterexamples -[WARNING] In scope "A", the variable "z" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_proof/good/functions.catala_en:6.11-6.12: -└─┐ -6 │ context z content integer - │ ‾ - └─ Test [RESULT] No errors found during the proof mode run. ``` diff --git a/tests/test_proof/good/let_in_condition.catala_en b/tests/test_proof/good/let_in_condition.catala_en index 1cb2a5a9c..a37062d66 100644 --- a/tests/test_proof/good/let_in_condition.catala_en +++ b/tests/test_proof/good/let_in_condition.catala_en @@ -2,7 +2,7 @@ ```catala declaration scope A: - context x content boolean + output x content boolean scope A: definition x under condition @@ -13,12 +13,5 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples -[WARNING] In scope "A", the variable "x" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_proof/good/let_in_condition.catala_en:5.11-5.12: -└─┐ -5 │ context x content boolean - │ ‾ - └─ Test [RESULT] No errors found during the proof mode run. ``` diff --git a/tests/test_proof/good/money.catala_en b/tests/test_proof/good/money.catala_en index 990a0c0cd..039fb1dda 100644 --- a/tests/test_proof/good/money.catala_en +++ b/tests/test_proof/good/money.catala_en @@ -2,8 +2,8 @@ ```catala declaration scope A: - context x content money - context y content boolean + internal x content money + output y content boolean scope A: definition x equals $20,000 @@ -15,12 +15,5 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples -[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_proof/good/money.catala_en:6.11-6.12: -└─┐ -6 │ context y content boolean - │ ‾ - └─ Test [RESULT] No errors found during the proof mode run. ``` diff --git a/tests/test_proof/good/no_vars.catala_en b/tests/test_proof/good/no_vars.catala_en index 5c6f309de..93244be96 100644 --- a/tests/test_proof/good/no_vars.catala_en +++ b/tests/test_proof/good/no_vars.catala_en @@ -2,7 +2,7 @@ ```catala declaration scope A: - context x content integer + output x content integer scope A: definition x under condition (6*7 = 42) and (false or (true and 1458 / 27 = 54.)) @@ -10,12 +10,5 @@ scope A: ``` ```catala-test-inline $ catala Proof --disable_counterexamples -[WARNING] In scope "A", the variable "x" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_proof/good/no_vars.catala_en:5.11-5.12: -└─┐ -5 │ context x content integer - │ ‾ - └─ Test [RESULT] No errors found during the proof mode run. ``` diff --git a/tests/test_proof/good/rationals.catala_en b/tests/test_proof/good/rationals.catala_en index 83483784f..11c66a408 100644 --- a/tests/test_proof/good/rationals.catala_en +++ b/tests/test_proof/good/rationals.catala_en @@ -2,8 +2,8 @@ ```catala declaration scope A: - context x content decimal - context y content boolean + internal x content decimal + output y content boolean scope A: definition x equals 1. @@ -13,12 +13,5 @@ scope A: ```catala-test-inline $ catala Proof --disable_counterexamples -[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_proof/good/rationals.catala_en:6.11-6.12: -└─┐ -6 │ context y content boolean - │ ‾ - └─ Test [RESULT] No errors found during the proof mode run. ``` diff --git a/tests/test_proof/good/simple_vars.catala_en b/tests/test_proof/good/simple_vars.catala_en index c32fc9104..211082b1a 100644 --- a/tests/test_proof/good/simple_vars.catala_en +++ b/tests/test_proof/good/simple_vars.catala_en @@ -2,9 +2,9 @@ ```catala declaration scope A: - context x content integer - context y content boolean - context z content integer + internal x content integer + internal y content boolean + output z content integer scope A: definition y equals true @@ -16,12 +16,5 @@ scope A: ``` ```catala-test-inline $ catala Proof --disable_counterexamples -[WARNING] In scope "A", the variable "z" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_proof/good/simple_vars.catala_en:7.11-7.12: -└─┐ -7 │ context z content integer - │ ‾ - └─ Test [RESULT] No errors found during the proof mode run. ``` diff --git a/tests/test_proof/good/structs.catala_en b/tests/test_proof/good/structs.catala_en index 7d60b0ccb..30ae8e7de 100644 --- a/tests/test_proof/good/structs.catala_en +++ b/tests/test_proof/good/structs.catala_en @@ -10,8 +10,8 @@ declaration structure S: data b content T declaration scope A: - context x content integer - context y content S + output x content integer + internal y content S scope A: definition y equals S { -- a : 0 -- b : T { -- c : false -- d: 0}} @@ -20,12 +20,5 @@ scope A: ``` ```catala-test-inline $ catala Proof --disable_counterexamples -[WARNING] In scope "A", the variable "x" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_proof/good/structs.catala_en:13.11-13.12: -└──┐ -13 │ context x content integer - │ ‾ - └─ Test [RESULT] No errors found during the proof mode run. ``` diff --git a/tests/test_scope/bad/cycle_in_scope.catala_en b/tests/test_scope/bad/cycle_in_scope.catala_en index 41348c490..423116b87 100644 --- a/tests/test_scope/bad/cycle_in_scope.catala_en +++ b/tests/test_scope/bad/cycle_in_scope.catala_en @@ -2,9 +2,9 @@ ```catala declaration scope A: - context x content integer - context y content integer - context z content integer + output x content integer + output y content integer + output z content integer scope A: definition y under condition x < 0 consequence equals - x diff --git a/tests/test_scope/bad/scope.catala_en b/tests/test_scope/bad/scope.catala_en index 341ecbbfd..2fd80e418 100644 --- a/tests/test_scope/bad/scope.catala_en +++ b/tests/test_scope/bad/scope.catala_en @@ -2,9 +2,9 @@ ```catala declaration scope A: - context a content integer - context b content integer - context c content boolean + output a content integer + output b content integer + internal c content boolean scope A: definition c equals false @@ -16,20 +16,6 @@ scope A: ```catala-test-inline $ catala Interpret -s A -[WARNING] In scope "A", the variable "a" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_scope/bad/scope.catala_en:5.11-5.12: -└─┐ -5 │ context a content integer - │ ‾ - └─ Article -[WARNING] In scope "A", the variable "b" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_scope/bad/scope.catala_en:6.11-6.12: -└─┐ -6 │ context b content integer - │ ‾ - └─ Article [ERROR] There is a conflict between multiple valid consequences for assigning the same variable. This consequence has a valid justification: diff --git a/tests/test_scope/bad/scope_call_missing.catala_en b/tests/test_scope/bad/scope_call_missing.catala_en index 59edf1337..46fd4b20c 100644 --- a/tests/test_scope/bad/scope_call_missing.catala_en +++ b/tests/test_scope/bad/scope_call_missing.catala_en @@ -1,7 +1,7 @@ ```catala declaration scope Toto: - context bar content integer - input baz content decimal + internal bar content integer + input output baz content decimal output foo content integer scope Toto: @@ -16,13 +16,6 @@ scope Titi: ```catala-test-inline $ catala dcalc -s Titi -[WARNING] In scope "Toto", the variable "baz" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_scope/bad/scope_call_missing.catala_en:4.9-4.12: -└─┐ -4 │ input baz content decimal - │ ‾‾‾ - [ERROR] Definition of input variable 'baz' missing in this scope call ┌─⯈ tests/test_scope/bad/scope_call_missing.catala_en:14.26-14.56: @@ -32,10 +25,10 @@ $ catala dcalc -s Titi Declaration of the missing input variable -┌─⯈ tests/test_scope/bad/scope_call_missing.catala_en:4.9-4.12: +┌─⯈ tests/test_scope/bad/scope_call_missing.catala_en:4.16-4.19: └─┐ -4 │ input baz content decimal - │ ‾‾‾ +4 │ input output baz content decimal + │ ‾‾‾ #return code 255# ``` diff --git a/tests/test_scope/good/191_fix_record_name_confusion.catala_en b/tests/test_scope/good/191_fix_record_name_confusion.catala_en index 35afc6527..e3cc4b660 100644 --- a/tests/test_scope/good/191_fix_record_name_confusion.catala_en +++ b/tests/test_scope/good/191_fix_record_name_confusion.catala_en @@ -2,10 +2,10 @@ ```catala declaration scope ScopeA: - context output a content boolean + output a content boolean declaration scope ScopeB: - context a content boolean + output a content boolean scopeA scope ScopeA scope ScopeA: @@ -17,13 +17,6 @@ scope ScopeB: ```catala-test-inline $ catala OCaml -O -[WARNING] In scope "ScopeB", the variable "a" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_scope/good/191_fix_record_name_confusion.catala_en:8.11-8.12: -└─┐ -8 │ context a content boolean - │ ‾ - └─ Article (** This file has been generated by the Catala compiler, do not edit! *) open Runtime_ocaml.Runtime @@ -35,37 +28,34 @@ module ScopeA = struct end module ScopeB = struct - type t = unit + type t = {a: bool} end module ScopeAIn = struct - type t = {a_in: unit -> bool} + type t = unit end module ScopeBIn = struct - type t = {a_in: unit -> bool} + type t = unit end let scope_a (scope_a_in: ScopeAIn.t) : ScopeA.t = - let a_: unit -> bool = scope_a_in.ScopeAIn.a_in in - let a_: bool = try (try (a_ ()) with EmptyError -> true) with + let a_: bool = try true with EmptyError -> (raise (NoValueProvided {filename = "tests/test_scope/good/191_fix_record_name_confusion.catala_en"; - start_line=5; start_column=18; end_line=5; end_column=19; + start_line=5; start_column=10; end_line=5; end_column=11; law_headings=["Article"]})) in {ScopeA.a = a_} let scope_b (scope_b_in: ScopeBIn.t) : ScopeB.t = - let a_: unit -> bool = scope_b_in.ScopeBIn.a_in in - let scope_a_dot_a_: unit -> bool = fun (_: unit) -> raise EmptyError in - let result_: ScopeA.t = scope_a ({ScopeAIn.a_in = scope_a_dot_a_}) in + let result_: ScopeA.t = scope_a (()) in let scope_a_dot_a_: bool = result_.ScopeA.a in - let a_: bool = try (try (a_ ()) with EmptyError -> scope_a_dot_a_) with + let a_: bool = try scope_a_dot_a_ with EmptyError -> (raise (NoValueProvided {filename = "tests/test_scope/good/191_fix_record_name_confusion.catala_en"; - start_line=8; start_column=11; end_line=8; end_column=12; + start_line=8; start_column=10; end_line=8; end_column=11; law_headings=["Article"]})) in - () + {ScopeB.a = a_} ``` diff --git a/tests/test_struct/bad/nested.catala_en b/tests/test_struct/bad/nested.catala_en index 5dca2ac43..f5d6cbcb8 100644 --- a/tests/test_struct/bad/nested.catala_en +++ b/tests/test_struct/bad/nested.catala_en @@ -6,7 +6,7 @@ declaration enumeration E: -- Rec content E declaration scope A: - context y content E + output y content E scope A: definition y equals E.Empty @@ -14,13 +14,6 @@ scope A: ```catala-test-inline $ catala Interpret -s A -[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_struct/bad/nested.catala_en:9.11-9.12: -└─┐ -9 │ context y content E - │ ‾ - └─ Article [WARNING] The constructor "Rec" of enumeration "E" is never used; maybe it's unnecessary? ┌─⯈ tests/test_struct/bad/nested.catala_en:6.6-6.9: diff --git a/tests/test_struct/bad/nested2.catala_en b/tests/test_struct/bad/nested2.catala_en index 3dee6f910..f3e09dbd4 100644 --- a/tests/test_struct/bad/nested2.catala_en +++ b/tests/test_struct/bad/nested2.catala_en @@ -10,17 +10,17 @@ declaration enumeration E: -- Case2 content S declaration scope A: - context x content E + output x content E ``` ```catala-test-inline $ catala Interpret -s A -[WARNING] In scope "A", the variable "x" is never used anywhere; maybe it's unnecessary? +[WARNING] In scope "A", the variable "x" is declared but never defined; did you forget something? -┌─⯈ tests/test_struct/bad/nested2.catala_en:13.11-13.12: +┌─⯈ tests/test_struct/bad/nested2.catala_en:13.10-13.11: └──┐ -13 │ context x content E - │ ‾ +13 │ output x content E + │ ‾ └─ Article [WARNING] The structure "S" is never used; maybe it's unnecessary? diff --git a/tests/test_struct/good/ambiguous_fields.catala_en b/tests/test_struct/good/ambiguous_fields.catala_en index e40f9e387..d73190c0c 100644 --- a/tests/test_struct/good/ambiguous_fields.catala_en +++ b/tests/test_struct/good/ambiguous_fields.catala_en @@ -8,8 +8,8 @@ declaration structure Bar: data f content integer declaration scope A: - context x content Foo - context y content integer + internal x content Foo + output y content integer scope A: definition x equals Foo { -- f: 1 } @@ -18,13 +18,6 @@ scope A: ```catala-test-inline $ catala Interpret -s A -[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_struct/good/ambiguous_fields.catala_en:12.11-12.12: -└──┐ -12 │ context y content integer - │ ‾ - └─ Article [WARNING] The structure "Bar" is never used; maybe it's unnecessary? ┌─⯈ tests/test_struct/good/ambiguous_fields.catala_en:7.23-7.26: @@ -32,17 +25,11 @@ $ catala Interpret -s A 7 │ declaration structure Bar: │ ‾‾‾ └─ Article -[RESULT] Computation successful! +[RESULT] Computation successful! Results: +[RESULT] y = 1 ``` ```catala-test-inline $ catala Interpret_Lcalc -s A --avoid_exceptions --optimize -[WARNING] In scope "A", the variable "y" is never used anywhere; maybe it's unnecessary? - -┌─⯈ tests/test_struct/good/ambiguous_fields.catala_en:12.11-12.12: -└──┐ -12 │ context y content integer - │ ‾ - └─ Article [WARNING] The structure "Bar" is never used; maybe it's unnecessary? ┌─⯈ tests/test_struct/good/ambiguous_fields.catala_en:7.23-7.26: @@ -50,5 +37,6 @@ $ catala Interpret_Lcalc -s A --avoid_exceptions --optimize 7 │ declaration structure Bar: │ ‾‾‾ └─ Article -[RESULT] Computation successful! +[RESULT] Computation successful! Results: +[RESULT] y = ESome 1 ``` From d1a836c6462083cbed8d0cca2a9ac508ddc0dcce Mon Sep 17 00:00:00 2001 From: Denis Merigoux Date: Sat, 3 Jun 2023 18:04:41 +0200 Subject: [PATCH 2/3] Removing less precise message --- compiler/desugared/linting.ml | 34 -------------------- tests/test_io/bad/using_non_output.catala_en | 7 ---- 2 files changed, 41 deletions(-) diff --git a/compiler/desugared/linting.ml b/compiler/desugared/linting.ml index 16d946920..d501da2a5 100644 --- a/compiler/desugared/linting.ml +++ b/compiler/desugared/linting.ml @@ -100,39 +100,6 @@ let detect_identical_rules (p : program) : unit = scope.scope_defs) p.program_scopes -let detect_unused_scope_vars (p : program) : unit = - let used_scope_vars = - Ast.fold_exprs - ~f:(fun used_scope_vars e -> - let rec used_scope_vars_expr e used_scope_vars = - match Mark.remove e with - | ELocation (DesugaredScopeVar (v, _)) -> - ScopeVar.Set.add (Mark.remove v) used_scope_vars - | _ -> Expr.shallow_fold used_scope_vars_expr e used_scope_vars - in - used_scope_vars_expr e used_scope_vars) - ~init:ScopeVar.Set.empty p - in - ScopeName.Map.iter - (fun (scope_name : ScopeName.t) scope -> - ScopeDef.Map.iter - (fun scope_def_key scope_def -> - match scope_def_key with - | ScopeDef.Var (v, _) - when (not (ScopeVar.Set.mem v used_scope_vars)) - && not (Mark.remove scope_def.scope_def_io.io_output) -> - Messages.emit_spanned_warning - (ScopeDef.get_position scope_def_key) - "In scope %a, the variable %a is never used anywhere; maybe it's \ - unnecessary?" - (Cli.format_with_style [ANSITerminal.yellow]) - (Format.asprintf "\"%a\"" ScopeName.format_t scope_name) - (Cli.format_with_style [ANSITerminal.yellow]) - (Format.asprintf "\"%a\"" Ast.ScopeDef.format_t scope_def_key) - | _ -> ()) - scope.scope_defs) - p.program_scopes - let detect_unused_struct_fields (p : program) : unit = (* TODO: this analysis should be finer grained: a false negative is if the field is used to define itself, for passing data around but that never gets @@ -315,7 +282,6 @@ let detect_dead_code (p : program) : unit = let lint_program (p : program) : unit = detect_empty_definitions p; detect_dead_code p; - detect_unused_scope_vars p; detect_unused_struct_fields p; detect_unused_enum_constructors p; detect_identical_rules p diff --git a/tests/test_io/bad/using_non_output.catala_en b/tests/test_io/bad/using_non_output.catala_en index b304f32bf..96353bed4 100644 --- a/tests/test_io/bad/using_non_output.catala_en +++ b/tests/test_io/bad/using_non_output.catala_en @@ -17,13 +17,6 @@ scope B: $ catala Typecheck [WARNING] This variable is dead code; it does not contribute to computing any of scope "A" outputs. Did you forget something? -┌─⯈ tests/test_io/bad/using_non_output.catala_en:5.12-5.13: -└─┐ -5 │ internal a content integer - │ ‾ - └─ Test -[WARNING] In scope "A", the variable "a" is never used anywhere; maybe it's unnecessary? - ┌─⯈ tests/test_io/bad/using_non_output.catala_en:5.12-5.13: └─┐ 5 │ internal a content integer From 6b7e927294f51e66a14bd560d49d5f4ecc57ed37 Mon Sep 17 00:00:00 2001 From: Denis Merigoux Date: Sat, 3 Jun 2023 18:09:32 +0200 Subject: [PATCH 3/3] Update assets --- french_law/js/src/french_law.js | 25850 ++++++++++++++---------------- 1 file changed, 12224 insertions(+), 13626 deletions(-) diff --git a/french_law/js/src/french_law.js b/french_law/js/src/french_law.js index f1e9aa7e8..163f6e7fe 100644 --- a/french_law/js/src/french_law.js +++ b/french_law/js/src/french_law.js @@ -1,5 +1,5 @@ -//# 1 "api_web.bc.runtime.js" -// Generated by js_of_ocaml 4.0.0 +//# 1 ".api_web.eobjs/jsoo/api_web.bc.runtime.js" +// Generated by js_of_ocaml 4.1.0 (function(Object) {typeof globalThis !== @@ -432,7 +432,7 @@ else if(f.signstyle != "-")buffer += f.signstyle; if(f.alternate && f.base == 8)buffer += "0"; - if(f.alternate && f.base == 16)buffer += "0x"; + if(f.alternate && f.base == 16)buffer += f.uppercase?"0X":"0x"; if(f.justify == "+" && f.filler == "0") for(var i=len;i < f.width;i++)buffer += "0"; buffer += rawbuffer; @@ -458,6 +458,7 @@ if(n > 0)buffer = caml_str_repeat(n,"0") + buffer} return caml_finish_formatting(f,buffer)} function caml_expm1_float(x){return Math.expm1(x)} + function caml_ml_condition_broadcast(t){return 0} function caml_jsstring_of_string(s){return s.toUtf16()} function fs_node_supported() {return typeof globalThis.process @@ -508,6 +509,7 @@ switch(comp[i]) {case "..":if(ncomp.length > 1)ncomp.pop();break; case ".":break; + case "":break; default:ncomp.push(comp[i]);break} ncomp.unshift(comp0[0]); ncomp.orig = name; @@ -654,37 +656,27 @@ function caml_raise_with_args(tag,args){throw [0,tag].concat(args)} function caml_is_ml_bytes(s){return s instanceof MlBytes} function caml_is_ml_string(s){return caml_is_ml_bytes(s)} - function caml_bytes_of_array(a){return new MlBytes(4,a,a.length)} + function caml_bytes_of_array(a) + {if(! (a instanceof Uint8Array))a = new Uint8Array(a); + return new MlBytes(4,a,a.length)} function caml_bytes_of_string(s){return s} function caml_raise_sys_error(msg) {caml_raise_with_string(caml_global_data.Sys_error,msg)} function caml_raise_no_such_file(name) {caml_raise_sys_error(name + ": No such file or directory")} - function caml_bytes_bound_error() - {caml_invalid_argument("index out of bounds")} - function caml_bytes_unsafe_get(s,i) - {switch(s.t & 6) - {default:if(i >= s.c.length)return 0;case 0:return s.c.charCodeAt(i); - case 4:return s.c[i] - }} - function caml_bytes_get(s,i) - {if(i >>> 0 >= s.l)caml_bytes_bound_error(); - return caml_bytes_unsafe_get(s,i)} - function caml_create_bytes(len) - {if(len < 0)caml_invalid_argument("Bytes.create"); - return new MlBytes(len?2:9,"",len)} - function caml_ml_bytes_length(s){return s.l} function caml_convert_bytes_to_array(s) - {if(globalThis.Uint8Array) - var a=new (globalThis.Uint8Array)(s.l); - else - var a=new Array(s.l); - var b=s.c,l=b.length,i=0; + {var a=new Uint8Array(s.l),b=s.c,l=b.length,i=0; for(;i < l;i++)a[i] = b.charCodeAt(i); for(l = s.l;i < l;i++)a[i] = 0; s.c = a; s.t = 4; return a} + function caml_uint8_array_of_bytes(s) + {if(s.t != 4)caml_convert_bytes_to_array(s);return s.c} + function caml_create_bytes(len) + {if(len < 0)caml_invalid_argument("Bytes.create"); + return new MlBytes(len?2:9,"",len)} + function caml_ml_bytes_length(s){return s.l} function caml_blit_bytes(s1,i1,s2,i2,len) {if(len == 0)return 0; if(i2 == 0 && (len >= s2.l || s2.t == 2 && len >= s2.c.length)) @@ -715,11 +707,10 @@ for(var i=0;i < l;i++)c2[i2 + i] = c1.charCodeAt(i1 + i); for(;i < len;i++)c2[i2 + i] = 0}} return 0} - function caml_blit_string(a,b,c,d,e) - {caml_blit_bytes(caml_bytes_of_string(a),b,c,d,e);return 0} function MlFile(){} function MlFakeFile(content){this.data = content} MlFakeFile.prototype = new MlFile(); + MlFakeFile.prototype.constructor = MlFakeFile; MlFakeFile.prototype.truncate = function(len) @@ -737,19 +728,38 @@ {var new_str=caml_create_bytes(offset + len),old_data=this.data; this.data = new_str; caml_blit_bytes(old_data,0,this.data,0,clen)} - caml_blit_string(buf,pos,this.data,offset,len); + caml_blit_bytes(caml_bytes_of_array(buf),pos,this.data,offset,len); return 0}; MlFakeFile.prototype.read = function(offset,buf,pos,len) {var clen=this.length(); - caml_blit_bytes(this.data,offset,buf,pos,len); - return 0}; - MlFakeFile.prototype.read_one + if(offset + len >= clen)len = clen - offset; + if(len) + {var data=caml_create_bytes(len | 0); + caml_blit_bytes(this.data,offset,data,0,len); + buf.set(caml_uint8_array_of_bytes(data),pos)} + return len}; + function MlFakeFd(name,file,flags) + {this.file = file;this.name = name;this.flags = flags} + MlFakeFd.prototype.err_closed = - function(offset){return caml_bytes_get(this.data,offset)}; - MlFakeFile.prototype.close = function(){}; - MlFakeFile.prototype.constructor = MlFakeFile; + function() + {caml_raise_sys_error(this.name + ": file descriptor already closed")}; + MlFakeFd.prototype.length + = + function(){if(this.file)return this.file.length();this.err_closed()}; + MlFakeFd.prototype.write + = + function(offset,buf,pos,len) + {if(this.file)return this.file.write(offset,buf,pos,len); + this.err_closed()}; + MlFakeFd.prototype.read + = + function(offset,buf,pos,len) + {if(this.file)return this.file.read(offset,buf,pos,len); + this.err_closed()}; + MlFakeFd.prototype.close = function(){this.file = undefined}; function MlFakeDevice(root,f) {this.content = {};this.root = root;this.lookupFun = f} MlFakeDevice.prototype.nm = function(name){return this.root + name}; @@ -847,6 +857,38 @@ {var m=n.match(r); if(m && ! seen[m[1]]){seen[m[1]] = true;a.push(m[1])}} return a}; + MlFakeDevice.prototype.opendir + = + function(name,raise_unix) + {var + unix_error=raise_unix && caml_named_value("Unix.Unix_error"), + a=this.readdir(name), + c=false, + i=0; + return {readSync: + function() + {if(c) + if(unix_error) + caml_raise_with_args + (unix_error, + make_unix_err_args("EBADF","closedir",this.nm(name))); + else + caml_raise_sys_error(name + ": closedir failed"); + if(i == a.length)return null; + var entry=a[i]; + i++; + return {name:entry}}, + closeSync: + function() + {if(c) + if(unix_error) + caml_raise_with_args + (unix_error, + make_unix_err_args("EBADF","closedir",this.nm(name))); + else + caml_raise_sys_error(name + ": closedir failed"); + c = true; + a = []}}}; MlFakeDevice.prototype.is_dir = function(name) @@ -862,7 +904,38 @@ MlFakeDevice.prototype.open = function(name,f) - {if(f.rdonly && f.wronly) + {var file; + if(f.rdonly && f.wronly) + caml_raise_sys_error + (this.nm(name) + + + " : flags Open_rdonly and Open_wronly are not compatible"); + if(f.text && f.binary) + caml_raise_sys_error + (this.nm(name) + + + " : flags Open_text and Open_binary are not compatible"); + this.lookup(name); + if(this.content[name]) + {if(this.is_dir(name)) + caml_raise_sys_error(this.nm(name) + " : is a directory"); + if(f.create && f.excl) + caml_raise_sys_error(this.nm(name) + " : file already exists"); + file = this.content[name]; + if(f.truncate)file.truncate()} + else + if(f.create) + {this.create_dir_if_needed(name); + this.content[name] = new MlFakeFile(caml_create_bytes(0)); + file = this.content[name]} + else + caml_raise_no_such_file(this.nm(name)); + return new MlFakeFd(this.nm(name),file,f)}; + MlFakeDevice.prototype.open + = + function(name,f) + {var file; + if(f.rdonly && f.wronly) caml_raise_sys_error (this.nm(name) + @@ -878,16 +951,16 @@ caml_raise_sys_error(this.nm(name) + " : is a directory"); if(f.create && f.excl) caml_raise_sys_error(this.nm(name) + " : file already exists"); - var file=this.content[name]; - if(f.truncate)file.truncate(); - return file} + file = this.content[name]; + if(f.truncate)file.truncate()} else if(f.create) {this.create_dir_if_needed(name); this.content[name] = new MlFakeFile(caml_create_bytes(0)); - return this.content[name]} + file = this.content[name]} else - caml_raise_no_such_file(this.nm(name))}; + caml_raise_no_such_file(this.nm(name)); + return new MlFakeFd(this.nm(name),file,f)}; MlFakeDevice.prototype.register = function(name,content) @@ -916,13 +989,18 @@ (this.nm(name) + " : registering file with invalid content type")}; MlFakeDevice.prototype.constructor = MlFakeDevice; function caml_ml_string_length(s){return caml_ml_bytes_length(s)} + function caml_bytes_unsafe_get(s,i) + {switch(s.t & 6) + {default:if(i >= s.c.length)return 0;case 0:return s.c.charCodeAt(i); + case 4:return s.c[i] + }} function caml_string_unsafe_get(s,i){return caml_bytes_unsafe_get(s,i)} - function caml_array_of_string(s) + function caml_uint8_array_of_string(s) {var l=caml_ml_string_length(s),a=new Array(l),i=0; for(;i < l;i++)a[i] = caml_string_unsafe_get(s,i); return a} - function caml_array_of_bytes(s) - {if(s.t != 4)caml_convert_bytes_to_array(s);return s.c} + function caml_bytes_bound_error() + {caml_invalid_argument("index out of bounds")} function caml_bytes_unsafe_set(s,i,c) {c &= 0xff; if(s.t != 4) @@ -934,59 +1012,48 @@ function caml_bytes_set(s,i,c) {if(i >>> 0 >= s.l)caml_bytes_bound_error(); return caml_bytes_unsafe_set(s,i,c)} - function MlNodeFile(fd){this.fs = require("fs");this.fd = fd} - MlNodeFile.prototype = new MlFile(); - MlNodeFile.prototype.truncate + function MlNodeFd(fd,flags) + {this.fs = require("fs");this.fd = fd;this.flags = flags} + MlNodeFd.prototype = new MlFile(); + MlNodeFd.prototype.constructor = MlNodeFd; + MlNodeFd.prototype.truncate = function(len) {try {this.fs.ftruncateSync(this.fd,len | 0)} catch(err){caml_raise_sys_error(err.toString())}}; - MlNodeFile.prototype.length + MlNodeFd.prototype.length = function() {try {return this.fs.fstatSync(this.fd).size} catch(err){caml_raise_sys_error(err.toString())}}; - MlNodeFile.prototype.write + MlNodeFd.prototype.write = function(offset,buf,buf_offset,len) - {var a=caml_array_of_string(buf); - if(! (a instanceof globalThis.Uint8Array)) - a = new (globalThis.Uint8Array)(a); - var buffer=globalThis.Buffer.from(a); - try - {this.fs.writeSync(this.fd,buffer,buf_offset,len,offset)} - catch(err){caml_raise_sys_error(err.toString())} - return 0}; - MlNodeFile.prototype.read - = - function(offset,buf,buf_offset,len) - {var a=caml_array_of_bytes(buf); - if(! (a instanceof globalThis.Uint8Array)) - a = new (globalThis.Uint8Array)(a); - var buffer=globalThis.Buffer.from(a); - try - {this.fs.readSync(this.fd,buffer,buf_offset,len,offset)} + {try + {if(this.flags.isCharacterDevice) + this.fs.writeSync(this.fd,buf,buf_offset,len); + else + this.fs.writeSync(this.fd,buf,buf_offset,len,offset)} catch(err){caml_raise_sys_error(err.toString())} - for(var i=0;i < len;i++) - caml_bytes_set(buf,buf_offset + i,buffer[buf_offset + i]); return 0}; - MlNodeFile.prototype.read_one + MlNodeFd.prototype.read = - function(offset) - {var a=new (globalThis.Uint8Array)(1),buffer=globalThis.Buffer.from(a); - try - {this.fs.readSync(this.fd,buffer,0,1,offset)} - catch(err){caml_raise_sys_error(err.toString())} - return buffer[0]}; - MlNodeFile.prototype.close + function(offset,a,buf_offset,len) + {try + {if(this.flags.isCharacterDevice) + var read=this.fs.readSync(this.fd,a,buf_offset,len); + else + var read=this.fs.readSync(this.fd,a,buf_offset,len,offset); + return read} + catch(err){caml_raise_sys_error(err.toString())}}; + MlNodeFd.prototype.close = function() {try - {this.fs.closeSync(this.fd)} + {this.fs.closeSync(this.fd);return 0} catch(err){caml_raise_sys_error(err.toString())}}; - MlNodeFile.prototype.constructor = MlNodeFile; function MlNodeDevice(root){this.fs = require("fs");this.root = root} MlNodeDevice.prototype.nm = function(name){return this.root + name}; MlNodeDevice.prototype.exists @@ -1042,7 +1109,12 @@ case "nonblock":res |= consts.O_NONBLOCK;break } try - {var fd=this.fs.openSync(this.nm(name),res);return new MlNodeFile(fd)} + {var + fd=this.fs.openSync(this.nm(name),res), + isCharacterDevice= + this.fs.lstatSync(this.nm(name)).isCharacterDevice(); + f.isCharacterDevice = isCharacterDevice; + return new MlNodeFd(fd,f)} catch(err){this.raise_nodejs_error(err,raise_unix)}}; MlNodeDevice.prototype.rename = @@ -1078,6 +1150,12 @@ {var link=this.fs.readlinkSync(this.nm(name),"utf8"); return caml_string_of_jsstring(link)} catch(err){this.raise_nodejs_error(err,raise_unix)}}; + MlNodeDevice.prototype.opendir + = + function(name,raise_unix) + {try + {return this.fs.opendirSync(this.nm(name))} + catch(err){this.raise_nodejs_error(err,raise_unix)}}; MlNodeDevice.prototype.raise_nodejs_error = function(err,raise_unix) @@ -1181,9 +1259,9 @@ function caml_raise_not_found() {caml_raise_constant(caml_global_data.Not_found)} function caml_sys_getenv(name) - {var g=globalThis,n=caml_jsstring_of_string(name); - if(g.process && g.process.env && g.process.env[n] != undefined) - return caml_string_of_jsstring(g.process.env[n]); + {var process=globalThis.process,n=caml_jsstring_of_string(name); + if(process && process.env && process.env[n] != undefined) + return caml_string_of_jsstring(process.env[n]); if(globalThis.jsoo_static_env && globalThis.jsoo_static_env[n]) return caml_string_of_jsstring(globalThis.jsoo_static_env[n]); caml_raise_not_found()} @@ -1243,10 +1321,6 @@ caml_failwith("caml_sys_rename: no implemented"); o_root.device.rename(o_root.rest,n_root.rest)} function caml_log10_float(x){return Math.log10(x)} - function unix_unlink(name) - {var root=resolve_fs_device(name); - if(! root.device.unlink)caml_failwith("unix_unlink: not implemented"); - return root.device.unlink(root.rest,true)} var caml_runtime_warnings=0; function caml_ml_enable_runtime_warnings(bool) {caml_runtime_warnings = bool;return 0} @@ -1256,33 +1330,50 @@ if(x != 0)return 1; return 2} return isNaN(x)?4:3} - function unix_rmdir(name) - {var root=resolve_fs_device(name); - if(! root.device.rmdir)caml_failwith("unix_rmdir: not implemented"); - return root.device.rmdir(root.rest,true)} - function caml_ml_refill_input(chan) - {var str=chan.refill(),str_len=caml_ml_string_length(str); - if(str_len == 0)chan.refill = null; - chan.file.write(chan.file.length(),str,0,str_len); - return str_len} var caml_ml_channels=new Array(); - function caml_ml_may_refill_input(chanid) - {var chan=caml_ml_channels[chanid]; - if(chan.refill == null)return; - if(chan.file.length() != chan.offset)return; - caml_ml_refill_input(chan)} + function caml_refill(chan) + {if(chan.refill != null) + {var str=chan.refill(),str_a=caml_uint8_array_of_string(str); + if(str_a.length == 0) + chan.refill = null; + else + {if(chan.buffer.length < chan.buffer_max + str_a.length) + {var b=new Uint8Array(chan.buffer_max + str_a.length); + b.set(chan.buffer); + chan.buffer = b} + chan.buffer.set(str_a,chan.buffer_max); + chan.offset += str_a.length; + chan.buffer_max += str_a.length}} + else + {var + nread= + chan.file.read + (chan.offset, + chan.buffer, + chan.buffer_max, + chan.buffer.length - chan.buffer_max); + chan.offset += nread; + chan.buffer_max += nread}} function caml_array_bound_error() {caml_invalid_argument("index out of bounds")} function caml_ml_input_scan_line(chanid) - {var chan=caml_ml_channels[chanid]; - caml_ml_may_refill_input(chanid); - var p=chan.offset,len=chan.file.length(); - if(p >= len)return 0; - while(true) - {if(p >= len)return - (p - chan.offset); - if(chan.file.read_one(p) == 10)return p - chan.offset + 1; - p++}} - function caml_gc_minor(){return 0} + {var chan=caml_ml_channels[chanid],p=chan.buffer_curr; + do + if(p >= chan.buffer_max) + {if(chan.buffer_curr > 0) + {chan.buffer.set(chan.buffer.subarray(chan.buffer_curr),0); + p -= chan.buffer_curr; + chan.buffer_max -= chan.buffer_curr; + chan.buffer_curr = 0} + if(chan.buffer_max >= chan.buffer.length)return - chan.buffer_max; + var prev_max=chan.buffer_max; + caml_refill(chan); + if(prev_max == chan.buffer_max)return - chan.buffer_max} + while + (chan.buffer[p++] != 10); + return p - chan.buffer_curr} + function caml_gc_minor(unit) + {if(typeof globalThis.gc == "function")globalThis.gc(true);return 0} var bigInt= function(undefined) @@ -2611,6 +2702,7 @@ else if(po.lt(z)){start = mid.next();ans = mid}else end = mid.prev()} return [0,ml_z_normalize(ans),ml_z_normalize(z.minus(ans.pow(i)))]} + function caml_ml_condition_new(unit){return {condition:1}} function caml_int64_of_bytes(a) {return new MlInt64 @@ -2679,12 +2771,13 @@ globalThis.jsoo_create_file = jsoo_create_file; globalThis.caml_fs_tmp = []; return 0} - function caml_set_parser_trace(){return 0} + var caml_parser_trace=0; + function caml_set_parser_trace(bool) + {var oldflag=caml_parser_trace;caml_parser_trace = bool;return oldflag} function caml_list_of_js_array(a) {var l=0; for(var i=a.length - 1;i >= 0;i--){var e=a[i];l = [0,e,l]} return l} - function unix_gettimeofday(){return new Date().getTime() / 1000} function caml_mul(a,b){return Math.imul(a,b)} function caml_hash_mix_int(h,d) {d = caml_mul(d,0xcc9e2d51 | 0); @@ -2735,6 +2828,37 @@ return 0} else caml_raise_no_such_file(caml_jsbytes_of_string(dir))} + function caml_obj_tag(x) + {if(x instanceof Array && x[0] == x[0] >>> 0) + return x[0]; + else + if(caml_is_ml_bytes(x)) + return 252; + else + if(caml_is_ml_string(x)) + return 252; + else + if(x instanceof Function || typeof x == "function") + return 247; + else + if(x && x.caml_custom)return 255;else return 1000} + function caml_obj_update_tag(b,o,n) + {if(b[0] == o){b[0] = n;return 1}return 0} + var caml_ml_domain_unique_token_=[0]; + function caml_ml_domain_unique_token(unit) + {return caml_ml_domain_unique_token_} + function caml_lazy_update_to_forcing(o) + {var t=caml_obj_tag(o); + if(t != 246 && t != 250 && t != 244)return 4; + if(caml_obj_update_tag(o,246,244)) + return 0; + else + {var field0=o[1]; + t = o[0]; + if(t == 244) + return field0 == caml_ml_domain_unique_token(0)?1:2; + else + if(t == 250)return 3;else return 2}} function caml_gc_counters(){return [254,0,0,0]} function ml_z_div(z1,z2) {z2 = bigInt(z2); @@ -2751,7 +2875,46 @@ return ml_z_div(z1,z2)} function caml_gr_synchronize() {caml_failwith("caml_gr_synchronize not Implemented")} - function unix_has_symlink(unit){return fs_node_supported()?1:0} + function caml_unix_closedir(dir_handle) + {try + {dir_handle.pointer.closeSync()} + catch(e) + {var unix_error=caml_named_value("Unix.Unix_error"); + caml_raise_with_args + (unix_error,make_unix_err_args("EBADF","closedir",dir_handle.path))}} + function caml_unix_opendir(path) + {var root=resolve_fs_device(path); + if(! root.device.opendir) + caml_failwith("caml_unix_opendir: not implemented"); + var dir_handle=root.device.opendir(root.rest,true); + return {pointer:dir_handle,path:path}} + function caml_unix_rewinddir(dir_handle) + {caml_unix_closedir(dir_handle); + var new_dir_handle=caml_unix_opendir(dir_handle.path); + dir_handle.pointer = new_dir_handle.pointer; + return 0} + function caml_raise_end_of_file() + {caml_raise_constant(caml_global_data.End_of_file)} + function caml_unix_readdir(dir_handle) + {var entry; + try + {entry = dir_handle.pointer.readSync()} + catch(e) + {var unix_error=caml_named_value("Unix.Unix_error"); + caml_raise_with_args + (unix_error,make_unix_err_args("EBADF","readdir",dir_handle.path))} + if(entry === null) + caml_raise_end_of_file(); + else + return caml_string_of_jsstring(entry.name)} + function caml_unix_findfirst(path) + {var path_js=caml_jsstring_of_string(path); + path_js = path_js.replace(/(^|[\\\/])\*\.\*$/,""); + path = caml_string_of_jsstring(path_js); + var + dir_handle=caml_unix_opendir(path), + first_entry=caml_unix_readdir(dir_handle); + return [0,first_entry,dir_handle]} var log2_ok=Math.log2 && Math.log2(1.1235582092889474E+307) == 1020; function jsoo_floor_log2(x) {if(log2_ok)return Math.floor(Math.log2(x)); @@ -2760,9 +2923,9 @@ if(x >= 1)while(x >= 2){x /= 2;i++}else while(x < 1){x *= 2;i--} return i} function caml_int32_bits_of_float(x) - {var float32a=new (globalThis.Float32Array)(1); + {var float32a=new Float32Array(1); float32a[0] = x; - var int32a=new (globalThis.Int32Array)(float32a.buffer); + var int32a=new Int32Array(float32a.buffer); return int32a[0] | 0} function caml_int64_create_lo_mi_hi(lo,mi,hi) {return new MlInt64(lo,mi,hi)} @@ -2851,29 +3014,29 @@ function caml_ba_get_size_per_element(kind) {switch(kind){case 7:case 10:case 11:return 2;default:return 1}} function caml_ba_create_buffer(kind,size) - {var g=globalThis,view; + {var view; switch(kind) - {case 0:view = g.Float32Array;break; - case 1:view = g.Float64Array;break; - case 2:view = g.Int8Array;break; - case 3:view = g.Uint8Array;break; - case 4:view = g.Int16Array;break; - case 5:view = g.Uint16Array;break; - case 6:view = g.Int32Array;break; - case 7:view = g.Int32Array;break; - case 8:view = g.Int32Array;break; - case 9:view = g.Int32Array;break; - case 10:view = g.Float32Array;break; - case 11:view = g.Float64Array;break; - case 12:view = g.Uint8Array;break + {case 0:view = Float32Array;break; + case 1:view = Float64Array;break; + case 2:view = Int8Array;break; + case 3:view = Uint8Array;break; + case 4:view = Int16Array;break; + case 5:view = Uint16Array;break; + case 6:view = Int32Array;break; + case 7:view = Int32Array;break; + case 8:view = Int32Array;break; + case 9:view = Int32Array;break; + case 10:view = Float32Array;break; + case 11:view = Float64Array;break; + case 12:view = Uint8Array;break } if(! view)caml_invalid_argument("Bigarray.create: unsupported kind"); var data=new view(size * caml_ba_get_size_per_element(kind)); return data} function caml_int32_float_of_bits(x) - {var int32a=new (globalThis.Int32Array)(1); + {var int32a=new Int32Array(1); int32a[0] = x; - var float32a=new (globalThis.Float32Array)(int32a.buffer); + var float32a=new Float32Array(int32a.buffer); return float32a[0]} function caml_int64_float_of_bits(x) {var lo=x.lo,mi=x.mi,hi=x.hi,exp=(hi & 0x7fff) >> 4; @@ -3411,8 +3574,7 @@ nat2.data[ofs2] = wrap; return 0} function MlNat(x) - {this.data = new (globalThis.Int32Array)(x); - this.length = this.data.length + 2} + {this.data = new Int32Array(x);this.length = this.data.length + 2} MlNat.prototype.caml_custom = "_nat"; function create_nat(size) {var arr=new MlNat(size); @@ -3563,9 +3725,9 @@ var caml_argv= function() - {var g=globalThis,main="a.out",args=[]; - if(g.process && g.process.argv && g.process.argv.length > 1) - {var argv=g.process.argv;main = argv[1];args = argv.slice(2)} + {var process=globalThis.process,main="a.out",args=[]; + if(process && process.argv && process.argv.length > 1) + {var argv=process.argv;main = argv[1];args = argv.slice(2)} var p=caml_string_of_jsstring(main),args2=[0,p]; for(var i=0;i < args.length;i++) args2.push(caml_string_of_jsstring(args[i])); @@ -3582,9 +3744,9 @@ function caml_memprof_set(_control){return 0} function ml_z_neg(z1){return ml_z_normalize(bigInt(z1).negate())} function caml_sys_exit(code) - {var g=globalThis; - if(g.quit)g.quit(code); - if(g.process && g.process.exit)g.process.exit(code); + {if(globalThis.quit)globalThis.quit(code); + if(globalThis.process && globalThis.process.exit) + globalThis.process.exit(code); caml_invalid_argument("Function 'exit' not implemented")} function caml_channel_descriptor(chanid) {var chan=caml_ml_channels[chanid];return chan.fd} @@ -3618,7 +3780,7 @@ var ofs2=ba2.offset(pos2); if(pos1 + len > caml_ml_string_length(str1))caml_array_bound_error(); if(ofs2 + len > ba2.data.length)caml_array_bound_error(); - var slice=caml_array_of_string(str1).slice(pos1,pos1 + len); + var slice=caml_uint8_array_of_string(str1).slice(pos1,pos1 + len); ba2.data.set(slice,ofs2); return 0} function caml_gr_set_window_title(name) @@ -3637,6 +3799,105 @@ return b1 | b2 << 8} function ml_z_of_int32(i){return i | 0} function caml_compare(a,b){return caml_compare_val(a,b,true)} + var + caml_MD5Transform= + function() + {function add(x,y){return x + y | 0} + function xx(q,a,b,x,s,t) + {a = add(add(a,q),add(x,t));return add(a << s | a >>> 32 - s,b)} + function ff(a,b,c,d,x,s,t){return xx(b & c | ~ b & d,a,b,x,s,t)} + function gg(a,b,c,d,x,s,t){return xx(b & d | c & ~ d,a,b,x,s,t)} + function hh(a,b,c,d,x,s,t){return xx(b ^ c ^ d,a,b,x,s,t)} + function ii(a,b,c,d,x,s,t){return xx(c ^ (b | ~ d),a,b,x,s,t)} + return function(w,buffer) + {var a=w[0],b=w[1],c=w[2],d=w[3]; + a = ff(a,b,c,d,buffer[0],7,0xD76AA478); + d = ff(d,a,b,c,buffer[1],12,0xE8C7B756); + c = ff(c,d,a,b,buffer[2],17,0x242070DB); + b = ff(b,c,d,a,buffer[3],22,0xC1BDCEEE); + a = ff(a,b,c,d,buffer[4],7,0xF57C0FAF); + d = ff(d,a,b,c,buffer[5],12,0x4787C62A); + c = ff(c,d,a,b,buffer[6],17,0xA8304613); + b = ff(b,c,d,a,buffer[7],22,0xFD469501); + a = ff(a,b,c,d,buffer[8],7,0x698098D8); + d = ff(d,a,b,c,buffer[9],12,0x8B44F7AF); + c = ff(c,d,a,b,buffer[10],17,0xFFFF5BB1); + b = ff(b,c,d,a,buffer[11],22,0x895CD7BE); + a = ff(a,b,c,d,buffer[12],7,0x6B901122); + d = ff(d,a,b,c,buffer[13],12,0xFD987193); + c = ff(c,d,a,b,buffer[14],17,0xA679438E); + b = ff(b,c,d,a,buffer[15],22,0x49B40821); + a = gg(a,b,c,d,buffer[1],5,0xF61E2562); + d = gg(d,a,b,c,buffer[6],9,0xC040B340); + c = gg(c,d,a,b,buffer[11],14,0x265E5A51); + b = gg(b,c,d,a,buffer[0],20,0xE9B6C7AA); + a = gg(a,b,c,d,buffer[5],5,0xD62F105D); + d = gg(d,a,b,c,buffer[10],9,0x02441453); + c = gg(c,d,a,b,buffer[15],14,0xD8A1E681); + b = gg(b,c,d,a,buffer[4],20,0xE7D3FBC8); + a = gg(a,b,c,d,buffer[9],5,0x21E1CDE6); + d = gg(d,a,b,c,buffer[14],9,0xC33707D6); + c = gg(c,d,a,b,buffer[3],14,0xF4D50D87); + b = gg(b,c,d,a,buffer[8],20,0x455A14ED); + a = gg(a,b,c,d,buffer[13],5,0xA9E3E905); + d = gg(d,a,b,c,buffer[2],9,0xFCEFA3F8); + c = gg(c,d,a,b,buffer[7],14,0x676F02D9); + b = gg(b,c,d,a,buffer[12],20,0x8D2A4C8A); + a = hh(a,b,c,d,buffer[5],4,0xFFFA3942); + d = hh(d,a,b,c,buffer[8],11,0x8771F681); + c = hh(c,d,a,b,buffer[11],16,0x6D9D6122); + b = hh(b,c,d,a,buffer[14],23,0xFDE5380C); + a = hh(a,b,c,d,buffer[1],4,0xA4BEEA44); + d = hh(d,a,b,c,buffer[4],11,0x4BDECFA9); + c = hh(c,d,a,b,buffer[7],16,0xF6BB4B60); + b = hh(b,c,d,a,buffer[10],23,0xBEBFBC70); + a = hh(a,b,c,d,buffer[13],4,0x289B7EC6); + d = hh(d,a,b,c,buffer[0],11,0xEAA127FA); + c = hh(c,d,a,b,buffer[3],16,0xD4EF3085); + b = hh(b,c,d,a,buffer[6],23,0x04881D05); + a = hh(a,b,c,d,buffer[9],4,0xD9D4D039); + d = hh(d,a,b,c,buffer[12],11,0xE6DB99E5); + c = hh(c,d,a,b,buffer[15],16,0x1FA27CF8); + b = hh(b,c,d,a,buffer[2],23,0xC4AC5665); + a = ii(a,b,c,d,buffer[0],6,0xF4292244); + d = ii(d,a,b,c,buffer[7],10,0x432AFF97); + c = ii(c,d,a,b,buffer[14],15,0xAB9423A7); + b = ii(b,c,d,a,buffer[5],21,0xFC93A039); + a = ii(a,b,c,d,buffer[12],6,0x655B59C3); + d = ii(d,a,b,c,buffer[3],10,0x8F0CCC92); + c = ii(c,d,a,b,buffer[10],15,0xFFEFF47D); + b = ii(b,c,d,a,buffer[1],21,0x85845DD1); + a = ii(a,b,c,d,buffer[8],6,0x6FA87E4F); + d = ii(d,a,b,c,buffer[15],10,0xFE2CE6E0); + c = ii(c,d,a,b,buffer[6],15,0xA3014314); + b = ii(b,c,d,a,buffer[13],21,0x4E0811A1); + a = ii(a,b,c,d,buffer[4],6,0xF7537E82); + d = ii(d,a,b,c,buffer[11],10,0xBD3AF235); + c = ii(c,d,a,b,buffer[2],15,0x2AD7D2BB); + b = ii(b,c,d,a,buffer[9],21,0xEB86D391); + w[0] = add(a,w[0]); + w[1] = add(b,w[1]); + w[2] = add(c,w[2]); + w[3] = add(d,w[3])}} + (); + function caml_MD5Update(ctx,input,input_len) + {var in_buf=ctx.len & 0x3f,input_pos=0; + ctx.len += input_len; + if(in_buf) + {var missing=64 - in_buf; + if(input_len < missing) + {ctx.b8.set(input.subarray(0,input_len),in_buf);return} + ctx.b8.set(input.subarray(0,missing),in_buf); + caml_MD5Transform(ctx.w,ctx.b32); + input_len -= missing; + input_pos += missing} + while(input_len >= 64) + {ctx.b8.set(input.subarray(input_pos,input_pos + 64),0); + caml_MD5Transform(ctx.w,ctx.b32); + input_len -= 64; + input_pos += 64} + if(input_len) + ctx.b8.set(input.subarray(input_pos,input_pos + input_len),0)} function caml_fresh_oo_id(){return caml_oo_last_id++} function caml_int64_to_float(x){return x.toFloat()} function caml_ba_get_1(ba,i0){return ba.get(ba.offset(i0))} @@ -3681,6 +3942,7 @@ function caml_raw_backtrace_length(){return 0} function ml_z_shift_right(z1,amt) {return ml_z_normalize(bigInt(z1).shiftRight(amt))} + function caml_str_initialize(unit){return 0} function caml_obj_block(tag,size) {var o=new Array(size + 1); o[0] = tag; @@ -3735,19 +3997,8 @@ return caml_int64_of_bytes([y[7],y[6],y[5],y[4],y[3],y[2],y[1],y[0]])} function ml_z_fits_int(z1){return z1 == (z1 | 0)?1:0} function ml_z_fits_int32(z1){return ml_z_fits_int(z1)} - function caml_fill_bytes(s,i,l,c) - {if(l > 0) - if(i == 0 && (l >= s.l || s.t == 2 && l >= s.c.length)) - if(c == 0) - {s.c = "";s.t = 2} - else - {s.c = caml_str_repeat(l,String.fromCharCode(c));s.t = l == s.l?0:2} - else - {if(s.t != 4)caml_convert_bytes_to_array(s); - for(l += i;i < l;i++)s.c[i] = c} - return 0} - var caml_fill_string=caml_fill_bytes; - function caml_gc_major(){return 0} + function caml_gc_major(unit) + {if(typeof globalThis.gc == "function")globalThis.gc();return 0} function ml_z_shift_left(z1,amt) {return ml_z_normalize(bigInt(z1).shiftLeft(amt))} function caml_lex_array(s) @@ -3782,7 +4033,10 @@ tbl.lex_check = caml_lex_array(tbl[lex_check]); tbl.lex_trans = caml_lex_array(tbl[lex_trans]); tbl.lex_default = caml_lex_array(tbl[lex_default])} - var c,state=start_state,buffer=caml_array_of_bytes(lexbuf[lex_buffer]); + var + c, + state=start_state, + buffer=caml_uint8_array_of_bytes(lexbuf[lex_buffer]); if(state >= 0) {lexbuf[lex_last_pos] = lexbuf[lex_start_pos] = lexbuf[lex_curr_pos]; lexbuf[lex_last_action] = - 1} @@ -3811,10 +4065,6 @@ return lexbuf[lex_last_action]} else if(c == 256)lexbuf[lex_eof_reached] = 0}} - function unix_getuid(unit) - {if(globalThis.process && globalThis.process.getuid) - return globalThis.process.getuid(); - caml_raise_not_found()} function caml_sys_file_exists(name) {var root=resolve_fs_device(name);return root.device.exists(root.rest)} function caml_convert_raw_backtrace_slot() @@ -3831,6 +4081,8 @@ return s1.c == s2.c?1:0} function caml_gr_size_x(){var s=caml_gr_state_get();return s.width} function caml_ml_debug_info_status(){return 0} + function caml_atomic_fetch_add(ref,i) + {var old=ref[1];ref[1] += i;return old} var os_type= globalThis.process @@ -3844,18 +4096,14 @@ :"Unix"; function caml_sys_const_ostype_cygwin(){return os_type == "Cygwin"?1:0} function caml_cosh_float(x){return Math.cosh(x)} + function MlMutex(){this.locked = false} + function caml_ml_mutex_new(unit){return new MlMutex()} var caml_ephe_key_offset=3; - function caml_weak_check(x,i) - {return x[caml_ephe_key_offset + i] - !== - undefined - && - x[caml_ephe_key_offset + i] - !== - 0 - ?1 - :0} - var caml_ephe_check_key=caml_weak_check; + function caml_ephe_check_key(x,i) + {var weak=x[caml_ephe_key_offset + i]; + if(globalThis.WeakRef && weak instanceof globalThis.WeakRef) + weak = weak.deref(); + return weak === undefined?0:1} function caml_hash_mix_final(h) {h ^= h >>> 16; h = caml_mul(h,0x85ebca6b | 0); @@ -3922,7 +4170,10 @@ tbl.lex_default_code = caml_lex_array(tbl[lex_default_code])} if(tbl.lex_code == null) tbl.lex_code = caml_jsbytes_of_string(tbl[lex_code]); - var c,state=start_state,buffer=caml_array_of_bytes(lexbuf[lex_buffer]); + var + c, + state=start_state, + buffer=caml_uint8_array_of_bytes(lexbuf[lex_buffer]); if(state >= 0) {lexbuf[lex_last_pos] = lexbuf[lex_start_pos] = lexbuf[lex_curr_pos]; lexbuf[lex_last_action] = - 1} @@ -3982,38 +4233,80 @@ function caml_sys_executable_name(a){return caml_executable_name} function caml_lessequal(x,y){return + (caml_compare_val(x,y,false) <= 0)} function caml_acosh_float(x){return Math.acosh(x)} + function caml_MD5Init() + {var + buffer=new ArrayBuffer(64), + b32=new Uint32Array(buffer), + b8=new Uint8Array(buffer); + return {len:0, + w:new Uint32Array([0x67452301,0xEFCDAB89,0x98BADCFE,0x10325476]), + b32:b32, + b8:b8}} function caml_ml_flush(chanid) {var chan=caml_ml_channels[chanid]; if(! chan.opened)caml_raise_sys_error("Cannot flush a closed channel"); - if(! chan.buffer || chan.buffer == "")return 0; - if - (chan.fd - && - caml_global_data.fds[chan.fd] - && - caml_global_data.fds[chan.fd].output) - {var output=caml_global_data.fds[chan.fd].output; - switch(output.length) - {case 2:output(chanid,chan.buffer);break;default:output(chan.buffer)}} - chan.buffer = ""; + if(! chan.buffer || chan.buffer_curr == 0)return 0; + if(chan.output) + chan.output(caml_subarray_to_jsbytes(chan.buffer,0,chan.buffer_curr)); + else + chan.file.write(chan.offset,chan.buffer,0,chan.buffer_curr); + chan.offset += chan.buffer_curr; + chan.buffer_curr = 0; return 0} - function caml_ml_seek_out_64(chanid,pos) + function caml_seek_out(chanid,pos) {caml_ml_flush(chanid); - caml_ml_channels[chanid].offset = caml_int64_to_float(pos); + var chan=caml_ml_channels[chanid]; + chan.offset = pos; return 0} + function caml_ml_seek_out_64(chanid,pos) + {var pos=caml_int64_to_float(pos);return caml_seek_out(chanid,pos)} function compare_nat_real(nat1,nat2) {return compare_nat(nat1,0,nat1.data.length,nat2,0,nat2.data.length)} function caml_gc_set(_control){return 0} function caml_js_get(o,f){return o[f]} - function caml_ml_set_buffered(c,v){return 0} + function caml_unix_isatty(fileDescriptor) + {if(fs_node_supported()) + {var tty=require("tty");return tty.isatty(fileDescriptor)?1:0} + else + return 0} + function caml_ml_set_buffered(chanid,v) + {caml_ml_channels[chanid].buffered = v; + if(! v)caml_ml_flush(chanid); + return 0} function caml_gc_compaction(){return 0} - function caml_weak_get(x,i) + function caml_ephe_get_key(x,i) {if(i < 0 || caml_ephe_key_offset + i >= x.length) caml_invalid_argument("Weak.get_key"); - return x[caml_ephe_key_offset + i] === undefined - ?0 - :x[caml_ephe_key_offset + i]} - var caml_ephe_get_key=caml_weak_get; + var weak=x[caml_ephe_key_offset + i]; + if(globalThis.WeakRef && weak instanceof globalThis.WeakRef) + weak = weak.deref(); + return weak === undefined?0:[0,weak]} + function caml_unix_localtime(t) + {var + d=new Date(t * 1000), + d_num=d.getTime(), + januaryfirst=new Date(d.getFullYear(),0,1).getTime(), + doy=Math.floor((d_num - januaryfirst) / 86400000), + jan=new Date(d.getFullYear(),0,1), + jul=new Date(d.getFullYear(),6,1), + stdTimezoneOffset= + Math.max(jan.getTimezoneOffset(),jul.getTimezoneOffset()); + return [0, + d.getSeconds(), + d.getMinutes(), + d.getHours(), + d.getDate(), + d.getMonth(), + d.getFullYear() - 1900, + d.getDay(), + doy, + d.getTimezoneOffset() < stdTimezoneOffset | 0]} + function caml_unix_mktime(tm) + {var + d=new Date(tm[6] + 1900,tm[5],tm[4],tm[3],tm[2],tm[1]).getTime(), + t=Math.floor(d / 1000), + tm2=caml_unix_localtime(t); + return [0,t,tm2]} function jsoo_z_of_js_string_base(base,s) {if(base == 0) {base = 10; @@ -4064,16 +4357,18 @@ var ofs2=ba2.offset(pos2); if(pos1 + len > caml_ml_bytes_length(str1))caml_array_bound_error(); if(ofs2 + len > ba2.data.length)caml_array_bound_error(); - var slice=caml_array_of_bytes(str1).slice(pos1,pos1 + len); + var slice=caml_uint8_array_of_bytes(str1).slice(pos1,pos1 + len); ba2.data.set(slice,ofs2); return 0} - function win_cleanup(){} - function caml_sys_close(fd){delete caml_global_data.fds[fd];return 0} + var caml_sys_fds=new Array(3); + function caml_sys_close(fd) + {var file=caml_sys_fds[fd]; + if(file)file.close(); + delete caml_sys_fds[fd]; + return 0} function caml_ml_close_channel(chanid) {var chan=caml_ml_channels[chanid]; - caml_ml_flush(chanid); chan.opened = false; - chan.file.close(); caml_sys_close(chan.fd); return 0} function caml_exn_with_js_backtrace(exn,force) @@ -4082,9 +4377,16 @@ = new (globalThis.Error)("Js exception containing backtrace"); return exn} + function caml_atomic_exchange(ref,v){var r=ref[1];ref[1] = v;return r} function caml_sys_isatty(_chan){return 0} function is_digit_zero(nat,ofs){if(nat.data[ofs] == 0)return 1;return 0} - function unix_inet_addr_of_string(){return 0} + function caml_unix_lstat(name) + {var root=resolve_fs_device(name); + if(! root.device.lstat) + caml_failwith("caml_unix_lstat: not implemented"); + return root.device.lstat(root.rest,true)} + function caml_unix_lstat_64(name) + {var r=caml_unix_lstat(name);r[9] = caml_int64_of_int32(r[9])} function caml_js_set(o,f,v){o[f] = v;return 0} function ml_z_gcdext_intern(z1,z2) {z1 = bigInt(z1); @@ -4120,6 +4422,11 @@ function caml_array_get(array,index) {if(index < 0 || index >= array.length - 1)caml_array_bound_error(); return array[index + 1]} + function caml_unix_rmdir(name) + {var root=resolve_fs_device(name); + if(! root.device.rmdir) + caml_failwith("caml_unix_rmdir: not implemented"); + return root.device.rmdir(root.rest,true)} function caml_log2_float(x){return Math.log2(x)} function caml_gc_huge_fallback_count(unit){return 0} function ml_z_congruent(a,b,c) @@ -4132,11 +4439,42 @@ function caml_spacetime_only_works_for_native_code() {caml_failwith("Spacetime profiling only works for native code")} function caml_int64_sub(x,y){return x.sub(y)} - function caml_ml_seek_in_64(chanid,pos) + function caml_seek_in(chanid,pos) {var chan=caml_ml_channels[chanid]; if(chan.refill != null)caml_raise_sys_error("Illegal seek"); - chan.offset = caml_int64_to_float(pos); + if + (pos + >= + chan.offset + - + chan.buffer_max + && + pos + <= + chan.offset + && + chan.file.flags.binary) + chan.buffer_curr = chan.buffer_max - (chan.offset - pos); + else + {chan.offset = pos;chan.buffer_curr = 0;chan.buffer_max = 0} return 0} + function caml_ml_seek_in_64(chanid,pos) + {var pos=caml_int64_to_float(pos);return caml_seek_in(chanid,pos)} + var caml_domain_id=0; + function caml_ml_mutex_unlock(t){t.locked = false;return 0} + var caml_domain_latest_idx=1; + function caml_domain_spawn(f,mutex) + {var id=caml_domain_latest_idx++,old=caml_domain_id; + caml_domain_id = id; + f(0); + caml_domain_id = old; + caml_ml_mutex_unlock(mutex); + return id} + function caml_unix_mkdir(name,perm) + {var root=resolve_fs_device(name); + if(! root.device.mkdir) + caml_failwith("caml_unix_mkdir: not implemented"); + return root.device.mkdir(root.rest,perm,true)} function caml_int64_shift_left(x,s){return x.shift_left(s)} function caml_notequal(x,y){return + (caml_compare_val(x,y,false) != 0)} function ml_z_abs(z1){return ml_z_normalize(bigInt(z1).abs())} @@ -4148,6 +4486,8 @@ for(var i=0;i < len;i++)args[i + 1] = arguments[i]; return caml_call_gen(f,args)}} function caml_is_js(){return 1} + function caml_lazy_update_to_forward(o) + {caml_obj_update_tag(o,244,250);return 0} function caml_ba_dim(ba,i) {if(i < 0 || i >= ba.dims.length)caml_invalid_argument("Bigarray.dim"); return ba.dims[i]} @@ -4157,26 +4497,6 @@ if(z.lt(zero)) caml_invalid_argument("Z.sqrt: square root of a negative number"); return ml_z_root(z,2)} - function unix_localtime(t) - {var - d=new Date(t * 1000), - d_num=d.getTime(), - januaryfirst=new Date(d.getFullYear(),0,1).getTime(), - doy=Math.floor((d_num - januaryfirst) / 86400000), - jan=new Date(d.getFullYear(),0,1), - jul=new Date(d.getFullYear(),6,1), - stdTimezoneOffset= - Math.max(jan.getTimezoneOffset(),jul.getTimezoneOffset()); - return [0, - d.getSeconds(), - d.getMinutes(), - d.getHours(), - d.getDate(), - d.getMonth(), - d.getFullYear() - 1900, - d.getDay(), - doy, - d.getTimezoneOffset() < stdTimezoneOffset | 0]} function caml_js_meth_call(o,f,args) {return o[caml_jsstring_of_string(f)].apply(o,caml_js_from_array(args))} function ml_z_lucnum(i) @@ -4186,38 +4506,61 @@ var a=bigInt(2),b=bigInt(1); for(var k=1;k < i;k++){var b2=b;b = a.add(b);a = b2} return ml_z_normalize(b)} + var caml_ephe_data_offset=2; function caml_weak_create(n) {if(n < 0)caml_invalid_argument("Weak.create"); var x=[251,"caml_ephe_list_head"]; x.length = caml_ephe_key_offset + n; return x} - var caml_ephe_create=caml_weak_create; + function caml_ephe_create(n){var x=caml_weak_create(n);return x} function caml_js_to_byte_string(s){return caml_string_of_jsbytes(s)} function ml_z_probab_prime(z,i){return bigInt(z).isProbablePrime(i)?1:0} - function unix_mktime(tm) - {var - d=new Date(tm[6] + 1900,tm[5],tm[4],tm[3],tm[2],tm[1]).getTime(), - t=Math.floor(d / 1000), - tm2=unix_localtime(t); - return [0,t,tm2]} function caml_trampoline(res) {var c=1; while(res && res.joo_tramp) {res = res.joo_tramp.apply(null,res.joo_args);c++} return res} + function caml_maybe_print_stats(unit){return 0} function caml_bytes_get64(s,i) {if(i >>> 0 >= s.l - 7)caml_bytes_bound_error(); var a=new Array(8); for(var j=0;j < 8;j++)a[7 - j] = caml_bytes_unsafe_get(s,i + j); return caml_int64_of_bytes(a)} + function caml_unix_has_symlink(unit){return fs_node_supported()?1:0} function ml_z_rem(z1,z2) {z2 = bigInt(z2); if(z2.equals(bigInt(0)))caml_raise_zero_divide(); return ml_z_normalize(bigInt(z1).mod(z2))} - function caml_weak_set(x,i,v) + function caml_ephe_set_key(x,i,v) {if(i < 0 || caml_ephe_key_offset + i >= x.length) caml_invalid_argument("Weak.set"); - x[caml_ephe_key_offset + i] = v; + if(v instanceof Object && globalThis.WeakRef) + {if(x[1].register)x[1].register(v,undefined,v); + x[caml_ephe_key_offset + i] = new (globalThis.WeakRef)(v)} + else + x[caml_ephe_key_offset + i] = v; + return 0} + function caml_ephe_unset_key(x,i) + {if(i < 0 || caml_ephe_key_offset + i >= x.length) + caml_invalid_argument("Weak.set"); + if + (globalThis.WeakRef + && + x[caml_ephe_key_offset + i] instanceof globalThis.WeakRef + && + x[1].unregister) + {var old=x[caml_ephe_key_offset + i].deref(); + if(old !== undefined) + {var count=0; + for(var j=caml_ephe_key_offset;j < x.length;j++) + {var key=x[j]; + if(key instanceof globalThis.WeakRef) + {key = key.deref();if(key === old)count++}} + if(count == 1)x[1].unregister(old)}} + x[caml_ephe_key_offset + i] = undefined; + return 0} + function caml_weak_set(x,i,v) + {if(v == 0)caml_ephe_unset_key(x,i);else caml_ephe_set_key(x,i,v[1]); return 0} function caml_sys_remove(name) {var root=resolve_fs_device(name),ok=root.device.unlink(root.rest); @@ -4233,6 +4576,9 @@ b3=caml_string_unsafe_get(s,i + 2), b4=caml_string_unsafe_get(s,i + 3); return b4 << 24 | b3 << 16 | b2 << 8 | b1} + function caml_bytes_get(s,i) + {if(i >>> 0 >= s.l)caml_bytes_bound_error(); + return caml_bytes_unsafe_get(s,i)} function caml_hypot_float(x,y){return Math.hypot(x,y)} function ml_z_facM(i,m) {if(i <= 0 || m <= 0) @@ -4245,7 +4591,7 @@ function caml_js_call(f,o,args) {return f.apply(o,caml_js_from_array(args))} function caml_sys_const_max_wosize(){return 0x7FFFFFFF / 4 | 0} - function caml_ephe_unset_key(x,i){return caml_weak_set(x,i,0)} + function caml_unix_inet_addr_of_string(){return 0} function ml_z_mul_overflows(x,y){var z=x * y;return z != (z | 0)} function ml_z_to_int(z1) {if(z1 == (z1 | 0))return z1 | 0; @@ -4318,30 +4664,18 @@ function ml_z_fac(i) {if(i <= 0)caml_invalid_argument("Z.fact: negative arguments"); return ml_z_facM(i,1)} - function caml_raise_end_of_file() - {caml_raise_constant(caml_global_data.End_of_file)} + function caml_ml_input_char(chanid) + {var chan=caml_ml_channels[chanid]; + if(chan.buffer_curr >= chan.buffer_max) + {chan.buffer_curr = 0;chan.buffer_max = 0;caml_refill(chan)} + if(chan.buffer_curr >= chan.buffer_max)caml_raise_end_of_file(); + var res=chan.buffer[chan.buffer_curr]; + chan.buffer_curr++; + return res} function caml_ml_input_int(chanid) - {var chan=caml_ml_channels[chanid],file=chan.file; - while(chan.offset + 3 >= file.length()) - {var l=caml_ml_refill_input(chan);if(l == 0)caml_raise_end_of_file()} - var - o=chan.offset, - r= - file.read_one(o) - << - 24 - | - file.read_one(o + 1) - << - 16 - | - file.read_one(o + 2) - << - 8 - | - file.read_one(o + 3); - chan.offset += 4; - return r} + {var chan=caml_ml_channels[chanid],res=0; + for(var i=0;i < 4;i++)res = (res << 8) + caml_ml_input_char(chanid); + return res} function caml_gr_display_mode() {caml_failwith("caml_gr_display_mode not Implemented")} function ml_z_divisible(a,b) @@ -4379,6 +4713,96 @@ caml_failwith("float_of_string")} function caml_sys_getcwd() {return caml_string_of_jsbytes(caml_current_dir)} + function caml_int64_add(x,y){return x.add(y)} + function caml_int64_mul(x,y){return x.mul(y)} + function caml_int64_ult(x,y){return x.ucompare(y) < 0} + function caml_parse_sign_and_base(s) + {var i=0,len=caml_ml_string_length(s),base=10,sign=1; + if(len > 0) + switch(caml_string_unsafe_get(s,i)) + {case 45:i++;sign = - 1;break;case 43:i++;sign = 1;break} + if(i + 1 < len && caml_string_unsafe_get(s,i) == 48) + switch(caml_string_unsafe_get(s,i + 1)) + {case 120: + case 88:base = 16;i += 2;break; + case 111: + case 79:base = 8;i += 2;break; + case 98: + case 66:base = 2;i += 2;break; + case 117: + case 85:i += 2;break + } + return [i,sign,base]} + function caml_parse_digit(c) + {if(c >= 48 && c <= 57)return c - 48; + if(c >= 65 && c <= 90)return c - 55; + if(c >= 97 && c <= 122)return c - 87; + return - 1} + function caml_int64_of_string(s) + {var + r=caml_parse_sign_and_base(s), + i=r[0], + sign=r[1], + base=r[2], + base64=caml_int64_of_int32(base), + threshold= + new MlInt64(0xffffff,0xfffffff,0xffff).udivmod(base64).quotient, + c=caml_string_unsafe_get(s,i), + d=caml_parse_digit(c); + if(d < 0 || d >= base)caml_failwith("int_of_string"); + var res=caml_int64_of_int32(d); + for(;;) + {i++; + c = caml_string_unsafe_get(s,i); + if(c == 95)continue; + d = caml_parse_digit(c); + if(d < 0 || d >= base)break; + if(caml_int64_ult(threshold,res))caml_failwith("int_of_string"); + d = caml_int64_of_int32(d); + res = caml_int64_add(caml_int64_mul(base64,res),d); + if(caml_int64_ult(res,d))caml_failwith("int_of_string")} + if(i != caml_ml_string_length(s))caml_failwith("int_of_string"); + if(base == 10 && caml_int64_ult(new MlInt64(0,0,0x8000),res)) + caml_failwith("int_of_string"); + if(sign < 0)res = caml_int64_neg(res); + return res} + function caml_ba_set_1(ba,i0,v){ba.set(ba.offset(i0),v);return 0} + function caml_int64_xor(x,y){return x.xor(y)} + function caml_int64_or(x,y){return x.or(y)} + function caml_lxm_next(v) + {function shift_l(x,k){return caml_int64_shift_left(x,k)} + function shift_r(x,k){return caml_int64_shift_right_unsigned(x,k)} + function or(a,b){return caml_int64_or(a,b)} + function xor(a,b){return caml_int64_xor(a,b)} + function add(a,b){return caml_int64_add(a,b)} + function mul(a,b){return caml_int64_mul(a,b)} + function rotl(x,k){return or(shift_l(x,k),shift_r(x,64 - k))} + function get(a,i){return caml_ba_get_1(a,i)} + function set(a,i,x){return caml_ba_set_1(a,i,x)} + var + M=caml_int64_of_string(caml_new_string("0xd1342543de82ef95")), + daba=caml_int64_of_string(caml_new_string("0xdaba0b6eb09322e3")), + z, + q0, + q1, + st=v, + a=get(st,0), + s=get(st,1), + x0=get(st,2), + x1=get(st,3); + z = add(s,x0); + z = mul(xor(z,shift_r(z,32)),daba); + z = mul(xor(z,shift_r(z,32)),daba); + z = xor(z,shift_r(z,32)); + set(st,1,add(mul(s,M),a)); + var q0=x0,q1=x1; + q1 = xor(q1,q0); + q0 = rotl(q0,24); + q0 = xor(xor(q0,q1),shift_l(q1,16)); + q1 = rotl(q1,37); + set(st,2,q0); + set(st,3,q1); + return z} function caml_sys_const_big_endian(){return 0} function caml_list_to_js_array(l) {var a=[];for(;l !== 0;l = l[2])a.push(l[1]);return a} @@ -4434,7 +4858,7 @@ no_sharing=flags.indexOf(0) !== - 1, closures=flags.indexOf(1) !== - 1; if(closures) - globalThis.console.warn + console.warn ("in caml_output_val: flag Marshal.Closures is not supported."); var writer=new Writer(), @@ -4564,26 +4988,20 @@ {caml_raise_sys_error(name + ": Not a directory")} function caml_sys_system_command(cmd) {var cmd=caml_jsstring_of_string(cmd); - if - (typeof require - != - "undefined" - && - require("child_process") - && - require("child_process").execSync) - try - {require("child_process").execSync(cmd,{stdio:"inherit"});return 0} - catch(e){return 1} + if(typeof require != "undefined") + {var child_process=require("child_process"); + if(child_process && child_process.execSync) + try + {child_process.execSync(cmd,{stdio:"inherit"});return 0} + catch(e){return 1}} else return 127} - function unix_isatty(fileDescriptor) - {if(fs_node_supported()) - {var tty=require("tty");return tty.isatty(fileDescriptor)?1:0} - else - return 0} function caml_js_error_of_exception(exn) {if(exn.js_error)return exn.js_error;return null} + function caml_unix_getuid(unit) + {if(globalThis.process && globalThis.process.getuid) + return globalThis.process.getuid(); + caml_raise_not_found()} function deserialize_nat(reader,sz) {var len=reader.read32s(),nat=new MlNat(len); for(var i=0;i < len;i++)nat.data[i] = reader.read32s(); @@ -4596,264 +5014,24 @@ function ml_z_succ(z1){return ml_z_normalize(bigInt(z1).next())} function caml_gr_open_subwindow(a,b,c,d) {caml_failwith("caml_gr_open_subwindow not Implemented")} - function unix_lstat(name) - {var root=resolve_fs_device(name); - if(! root.device.lstat)caml_failwith("unix_lstat: not implemented"); - return root.device.lstat(root.rest,true)} - var unix_lstat_64=unix_lstat; - function js_print_stdout(s) - {var s=caml_utf16_of_utf8(s),g=globalThis; - if(g.process && g.process.stdout && g.process.stdout.write) - g.process.stdout.write(s); - else - {if(s.charCodeAt(s.length - 1) == 10)s = s.substr(0,s.length - 1); - var v=g.console; - v && v.log && v.log(s)}} - function caml_copysign_float(x,y) - {if(y == 0)y = 1 / y;x = Math.abs(x);return y < 0?- x:x} - function caml_gr_set_text_size(size) - {var s=caml_gr_state_get(); - s.text_size = size; - s.context.font = s.text_size + "px " + caml_jsstring_of_string(s.font); - return 0} - var - caml_md5_bytes= - function() - {function add(x,y){return x + y | 0} - function xx(q,a,b,x,s,t) - {a = add(add(a,q),add(x,t));return add(a << s | a >>> 32 - s,b)} - function ff(a,b,c,d,x,s,t){return xx(b & c | ~ b & d,a,b,x,s,t)} - function gg(a,b,c,d,x,s,t){return xx(b & d | c & ~ d,a,b,x,s,t)} - function hh(a,b,c,d,x,s,t){return xx(b ^ c ^ d,a,b,x,s,t)} - function ii(a,b,c,d,x,s,t){return xx(c ^ (b | ~ d),a,b,x,s,t)} - function md5(buffer,length) - {var i=length; - buffer[i >> 2] |= 0x80 << 8 * (i & 3); - for(i = (i & ~ 0x3) + 8;(i & 0x3F) < 60;i += 4) - buffer[(i >> 2) - 1] = 0; - buffer[(i >> 2) - 1] = length << 3; - buffer[i >> 2] = length >> 29 & 0x1FFFFFFF; - var w=[0x67452301,0xEFCDAB89,0x98BADCFE,0x10325476]; - for(i = 0;i < buffer.length;i += 16) - {var a=w[0],b=w[1],c=w[2],d=w[3]; - a = ff(a,b,c,d,buffer[i + 0],7,0xD76AA478); - d = ff(d,a,b,c,buffer[i + 1],12,0xE8C7B756); - c = ff(c,d,a,b,buffer[i + 2],17,0x242070DB); - b = ff(b,c,d,a,buffer[i + 3],22,0xC1BDCEEE); - a = ff(a,b,c,d,buffer[i + 4],7,0xF57C0FAF); - d = ff(d,a,b,c,buffer[i + 5],12,0x4787C62A); - c = ff(c,d,a,b,buffer[i + 6],17,0xA8304613); - b = ff(b,c,d,a,buffer[i + 7],22,0xFD469501); - a = ff(a,b,c,d,buffer[i + 8],7,0x698098D8); - d = ff(d,a,b,c,buffer[i + 9],12,0x8B44F7AF); - c = ff(c,d,a,b,buffer[i + 10],17,0xFFFF5BB1); - b = ff(b,c,d,a,buffer[i + 11],22,0x895CD7BE); - a = ff(a,b,c,d,buffer[i + 12],7,0x6B901122); - d = ff(d,a,b,c,buffer[i + 13],12,0xFD987193); - c = ff(c,d,a,b,buffer[i + 14],17,0xA679438E); - b = ff(b,c,d,a,buffer[i + 15],22,0x49B40821); - a = gg(a,b,c,d,buffer[i + 1],5,0xF61E2562); - d = gg(d,a,b,c,buffer[i + 6],9,0xC040B340); - c = gg(c,d,a,b,buffer[i + 11],14,0x265E5A51); - b = gg(b,c,d,a,buffer[i + 0],20,0xE9B6C7AA); - a = gg(a,b,c,d,buffer[i + 5],5,0xD62F105D); - d = gg(d,a,b,c,buffer[i + 10],9,0x02441453); - c = gg(c,d,a,b,buffer[i + 15],14,0xD8A1E681); - b = gg(b,c,d,a,buffer[i + 4],20,0xE7D3FBC8); - a = gg(a,b,c,d,buffer[i + 9],5,0x21E1CDE6); - d = gg(d,a,b,c,buffer[i + 14],9,0xC33707D6); - c = gg(c,d,a,b,buffer[i + 3],14,0xF4D50D87); - b = gg(b,c,d,a,buffer[i + 8],20,0x455A14ED); - a = gg(a,b,c,d,buffer[i + 13],5,0xA9E3E905); - d = gg(d,a,b,c,buffer[i + 2],9,0xFCEFA3F8); - c = gg(c,d,a,b,buffer[i + 7],14,0x676F02D9); - b = gg(b,c,d,a,buffer[i + 12],20,0x8D2A4C8A); - a = hh(a,b,c,d,buffer[i + 5],4,0xFFFA3942); - d = hh(d,a,b,c,buffer[i + 8],11,0x8771F681); - c = hh(c,d,a,b,buffer[i + 11],16,0x6D9D6122); - b = hh(b,c,d,a,buffer[i + 14],23,0xFDE5380C); - a = hh(a,b,c,d,buffer[i + 1],4,0xA4BEEA44); - d = hh(d,a,b,c,buffer[i + 4],11,0x4BDECFA9); - c = hh(c,d,a,b,buffer[i + 7],16,0xF6BB4B60); - b = hh(b,c,d,a,buffer[i + 10],23,0xBEBFBC70); - a = hh(a,b,c,d,buffer[i + 13],4,0x289B7EC6); - d = hh(d,a,b,c,buffer[i + 0],11,0xEAA127FA); - c = hh(c,d,a,b,buffer[i + 3],16,0xD4EF3085); - b = hh(b,c,d,a,buffer[i + 6],23,0x04881D05); - a = hh(a,b,c,d,buffer[i + 9],4,0xD9D4D039); - d = hh(d,a,b,c,buffer[i + 12],11,0xE6DB99E5); - c = hh(c,d,a,b,buffer[i + 15],16,0x1FA27CF8); - b = hh(b,c,d,a,buffer[i + 2],23,0xC4AC5665); - a = ii(a,b,c,d,buffer[i + 0],6,0xF4292244); - d = ii(d,a,b,c,buffer[i + 7],10,0x432AFF97); - c = ii(c,d,a,b,buffer[i + 14],15,0xAB9423A7); - b = ii(b,c,d,a,buffer[i + 5],21,0xFC93A039); - a = ii(a,b,c,d,buffer[i + 12],6,0x655B59C3); - d = ii(d,a,b,c,buffer[i + 3],10,0x8F0CCC92); - c = ii(c,d,a,b,buffer[i + 10],15,0xFFEFF47D); - b = ii(b,c,d,a,buffer[i + 1],21,0x85845DD1); - a = ii(a,b,c,d,buffer[i + 8],6,0x6FA87E4F); - d = ii(d,a,b,c,buffer[i + 15],10,0xFE2CE6E0); - c = ii(c,d,a,b,buffer[i + 6],15,0xA3014314); - b = ii(b,c,d,a,buffer[i + 13],21,0x4E0811A1); - a = ii(a,b,c,d,buffer[i + 4],6,0xF7537E82); - d = ii(d,a,b,c,buffer[i + 11],10,0xBD3AF235); - c = ii(c,d,a,b,buffer[i + 2],15,0x2AD7D2BB); - b = ii(b,c,d,a,buffer[i + 9],21,0xEB86D391); - w[0] = add(a,w[0]); - w[1] = add(b,w[1]); - w[2] = add(c,w[2]); - w[3] = add(d,w[3])} - var t=new Array(16); - for(var i=0;i < 4;i++) - for(var j=0;j < 4;j++)t[i * 4 + j] = w[i] >> 8 * j & 0xFF; - return t} - return function(s,ofs,len) - {var buf=[],content=caml_ml_bytes_content(s); - if(typeof content === "string") - {var b=content; - for(var i=0;i < len;i += 4) - {var j=i + ofs; - buf[i >> 2] - = - b.charCodeAt(j) - | - b.charCodeAt(j + 1) + function caml_marshal_data_size(s,ofs) + {function get32(s,i) + {return caml_bytes_unsafe_get(s,i) << - 8 + 24 | - b.charCodeAt(j + 2) + caml_bytes_unsafe_get(s,i + 1) << 16 | - b.charCodeAt(j + 3) - << - 24} - for(;i < len;i++) - buf[i >> 2] |= b.charCodeAt(i + ofs) << 8 * (i & 3)} - else - {var a=content; - for(var i=0;i < len;i += 4) - {var j=i + ofs; - buf[i >> 2] - = - a[j] - | - a[j + 1] + caml_bytes_unsafe_get(s,i + 2) << 8 | - a[j + 2] - << - 16 - | - a[j + 3] - << - 24} - for(;i < len;i++)buf[i >> 2] |= a[i + ofs] << 8 * (i & 3)} - return caml_string_of_array(md5(buf,len))}} - (); - function caml_ba_set_generic(ba,i,v) - {ba.set(ba.offset(caml_js_from_array(i)),v);return 0} - function caml_ephe_set_key(x,i,v){return caml_weak_set(x,i,[0,v])} - function caml_bytes_lessequal(s1,s2) - {s1.t & 6 && caml_convert_string_to_bytes(s1); - s2.t & 6 && caml_convert_string_to_bytes(s2); - return s1.c <= s2.c?1:0} - function caml_string_lessequal(s1,s2){return caml_bytes_lessequal(s1,s2)} - function caml_string_greaterequal(s1,s2) - {return caml_string_lessequal(s2,s1)} - function caml_int64_add(x,y){return x.add(y)} - function caml_nextafter_float(x,y) - {if(isNaN(x) || isNaN(y))return NaN; - if(x == y)return y; - if(x == 0)return y < 0?- Math.pow(2,- 1074):Math.pow(2,- 1074); - var bits=caml_int64_bits_of_float(x),one=caml_int64_of_int32(1); - if(x < y == x > 0) - bits = caml_int64_add(bits,one); - else - bits = caml_int64_sub(bits,one); - return caml_int64_float_of_bits(bits)} - function caml_gr_size_y(){var s=caml_gr_state_get();return s.height} - function ml_z_fac2(i) - {if(i <= 0)caml_invalid_argument("Z.fact2: negative arguments"); - return ml_z_facM(i,2)} - function caml_ml_pos_in(chanid){return caml_ml_channels[chanid].offset} - function caml_int64_and(x,y){return x.and(y)} - function caml_sys_const_word_size(){return 32} - function ml_z_bin(n,k) - {var n=bigInt(n),k=bigInt(k),coeff=bigInt(1); - for(var x=n.minus(k).add(bigInt(1));x.leq(n);x = x.add(bigInt(1))) - coeff = coeff.multiply(x); - for(x = bigInt(1);x.leq(k);x = x.add(bigInt(1)))coeff = coeff.divide(x); - return ml_z_normalize(coeff)} - function caml_std_output(chanid,s) - {var - chan=caml_ml_channels[chanid], - str=caml_string_of_jsbytes(s), - slen=caml_ml_string_length(str); - chan.file.write(chan.offset,str,0,slen); - chan.offset += slen; - return 0} - function js_print_stderr(s) - {var s=caml_utf16_of_utf8(s),g=globalThis; - if(g.process && g.process.stdout && g.process.stdout.write) - g.process.stderr.write(s); - else - {if(s.charCodeAt(s.length - 1) == 10)s = s.substr(0,s.length - 1); - var v=g.console; - v && v.error && v.error(s)}} - function caml_sys_open_internal(idx,output,file,flags) - {if(caml_global_data.fds === undefined) - caml_global_data.fds = new Array(); - flags = flags?flags:{}; - var info={}; - info.file = file; - info.offset = flags.append?file.length():0; - info.flags = flags; - info.output = output; - caml_global_data.fds[idx] = info; - if(! caml_global_data.fd_last_idx || idx > caml_global_data.fd_last_idx) - caml_global_data.fd_last_idx = idx; - return idx} - function caml_sys_open(name,flags,_perms) - {var f={}; - while(flags) - {switch(flags[1]) - {case 0:f.rdonly = 1;break; - case 1:f.wronly = 1;break; - case 2:f.append = 1;break; - case 3:f.create = 1;break; - case 4:f.truncate = 1;break; - case 5:f.excl = 1;break; - case 6:f.binary = 1;break; - case 7:f.text = 1;break; - case 8:f.nonblock = 1;break - } - flags = flags[2]} - if(f.rdonly && f.wronly) - caml_raise_sys_error - (caml_jsbytes_of_string(name) - + - " : flags Open_rdonly and Open_wronly are not compatible"); - if(f.text && f.binary) - caml_raise_sys_error - (caml_jsbytes_of_string(name) - + - " : flags Open_text and Open_binary are not compatible"); - var - root=resolve_fs_device(name), - file=root.device.open(root.rest,f), - idx=caml_global_data.fd_last_idx?caml_global_data.fd_last_idx:0; - return caml_sys_open_internal(idx + 1,caml_std_output,file,f)} - caml_sys_open_internal - (0,caml_std_output,new MlFakeFile(caml_create_bytes(0))); - caml_sys_open_internal - (1,js_print_stdout,new MlFakeFile(caml_create_bytes(0))); - caml_sys_open_internal - (2,js_print_stderr,new MlFakeFile(caml_create_bytes(0))); - function ml_z_gcd(z1,z2) - {return ml_z_normalize(bigInt.gcd(bigInt(z1),bigInt(z2)).abs())} + caml_bytes_unsafe_get(s,i + 3)} + if(get32(s,ofs) != (0x8495A6BE | 0)) + caml_failwith("Marshal.data_size: bad object"); + return get32(s,ofs + 4)} function MlStringReader(s,i) {this.s = caml_jsbytes_of_string(s);this.i = i} MlStringReader.prototype @@ -5068,6 +5246,205 @@ MlStringReader (caml_string_of_bytes(s),typeof ofs == "number"?ofs:ofs[0]); return caml_input_value_from_reader(reader,ofs)} + function caml_input_value(chanid) + {var chan=caml_ml_channels[chanid],header=new Uint8Array(20); + function block(buffer,offset,n) + {var r=0; + while(r < n) + {if(chan.buffer_curr >= chan.buffer_max) + {chan.buffer_curr = 0;chan.buffer_max = 0;caml_refill(chan)} + if(chan.buffer_curr >= chan.buffer_max)break; + buffer[offset + r] = chan.buffer[chan.buffer_curr]; + chan.buffer_curr++; + r++} + return r} + var r=block(header,0,20); + if(r == 0) + caml_raise_end_of_file(); + else + if(r < 20)caml_failwith("input_value: truncated object"); + var + len=caml_marshal_data_size(caml_bytes_of_array(header),0), + buf=new Uint8Array(len + 20); + buf.set(header,0); + var r=block(buf,20,len); + if(r < len) + caml_failwith("input_value: truncated object " + r + " " + len); + var + offset=[0], + res=caml_input_value_from_bytes(caml_bytes_of_array(buf),offset); + chan.offset = chan.offset + offset[0]; + return res} + function caml_input_value_to_outside_heap(c){return caml_input_value(c)} + function caml_atomic_cas(ref,o,n) + {if(ref[1] === o){ref[1] = n;return 1}return 0} + function caml_copysign_float(x,y) + {if(y == 0)y = 1 / y;x = Math.abs(x);return y < 0?- x:x} + function caml_gr_set_text_size(size) + {var s=caml_gr_state_get(); + s.text_size = size; + s.context.font = s.text_size + "px " + caml_jsstring_of_string(s.font); + return 0} + function caml_atomic_load(ref){return ref[1]} + function caml_MD5Final(ctx) + {var in_buf=ctx.len & 0x3f; + ctx.b8[in_buf] = 0x80; + in_buf++; + if(in_buf > 56) + {for(var j=in_buf;j < 64;j++)ctx.b8[j] = 0; + caml_MD5Transform(ctx.w,ctx.b32); + for(var j=0;j < 56;j++)ctx.b8[j] = 0} + else + for(var j=in_buf;j < 56;j++)ctx.b8[j] = 0; + ctx.b32[14] = ctx.len << 3; + ctx.b32[15] = ctx.len >> 29 & 0x1FFFFFFF; + caml_MD5Transform(ctx.w,ctx.b32); + var t=new Uint8Array(16); + for(var i=0;i < 4;i++) + for(var j=0;j < 4;j++)t[i * 4 + j] = ctx.w[i] >> 8 * j & 0xFF; + return t} + function caml_md5_bytes(s,ofs,len) + {var ctx=caml_MD5Init(),a=caml_uint8_array_of_bytes(s); + caml_MD5Update(ctx,a.subarray(ofs,ofs + len),len); + return caml_string_of_array(caml_MD5Final(ctx))} + function caml_ba_set_generic(ba,i,v) + {ba.set(ba.offset(caml_js_from_array(i)),v);return 0} + function caml_ml_condition_wait(t,mutext){return 0} + function caml_bytes_lessequal(s1,s2) + {s1.t & 6 && caml_convert_string_to_bytes(s1); + s2.t & 6 && caml_convert_string_to_bytes(s2); + return s1.c <= s2.c?1:0} + function caml_string_lessequal(s1,s2){return caml_bytes_lessequal(s1,s2)} + function caml_string_greaterequal(s1,s2) + {return caml_string_lessequal(s2,s1)} + function caml_nextafter_float(x,y) + {if(isNaN(x) || isNaN(y))return NaN; + if(x == y)return y; + if(x == 0)return y < 0?- Math.pow(2,- 1074):Math.pow(2,- 1074); + var bits=caml_int64_bits_of_float(x),one=caml_int64_of_int32(1); + if(x < y == x > 0) + bits = caml_int64_add(bits,one); + else + bits = caml_int64_sub(bits,one); + return caml_int64_float_of_bits(bits)} + function caml_gr_size_y(){var s=caml_gr_state_get();return s.height} + function ml_z_fac2(i) + {if(i <= 0)caml_invalid_argument("Z.fact2: negative arguments"); + return ml_z_facM(i,2)} + function caml_pos_in(chanid) + {var chan=caml_ml_channels[chanid]; + return chan.offset - (chan.buffer_max - chan.buffer_curr)} + function caml_ml_pos_in(chanid){return caml_pos_in(chanid)} + function caml_int64_and(x,y){return x.and(y)} + function caml_sys_const_word_size(){return 32} + function ml_z_bin(n,k) + {var n=bigInt(n),k=bigInt(k),coeff=bigInt(1); + for(var x=n.minus(k).add(bigInt(1));x.leq(n);x = x.add(bigInt(1))) + coeff = coeff.multiply(x); + for(x = bigInt(1);x.leq(k);x = x.add(bigInt(1)))coeff = coeff.divide(x); + return ml_z_normalize(coeff)} + function caml_unix_unlink(name) + {var root=resolve_fs_device(name); + if(! root.device.unlink) + caml_failwith("caml_unix_unlink: not implemented"); + return root.device.unlink(root.rest,true)} + function caml_sys_open_for_node(fd,flags) + {if(flags.name) + try + {var fs=require("fs"),fd2=fs.openSync(flags.name,"rs"); + return new MlNodeFd(fd2,flags)} + catch(e){} + return new MlNodeFd(fd,flags)} + function MlFakeFd_out(fd,flags) + {MlFakeFile.call(this,caml_create_bytes(0)); + this.log = function(s){return 0}; + if(fd == 1 && typeof console.log == "function") + this.log = console.log; + else + if(fd == 2 && typeof console.error == "function") + this.log = console.error; + else + if(typeof console.log == "function")this.log = console.log; + this.flags = flags} + MlFakeFd_out.prototype.length = function(){return 0}; + MlFakeFd_out.prototype.write + = + function(offset,buf,pos,len) + {if(this.log) + {if + (len + > + 0 + && + pos + >= + 0 + && + pos + + + len + <= + buf.length + && + buf[pos + len - 1] + == + 10) + len--; + var src=caml_create_bytes(len); + caml_blit_bytes(caml_bytes_of_array(buf),pos,src,0,len); + this.log(src.toUtf16()); + return 0} + caml_raise_sys_error(this.fd + ": file descriptor already closed")}; + MlFakeFd_out.prototype.read + = + function(offset,buf,pos,len) + {caml_raise_sys_error(this.fd + ": file descriptor is write only")}; + MlFakeFd_out.prototype.close = function(){this.log = undefined}; + function caml_sys_open_internal(file,idx) + {if(idx == undefined)idx = caml_sys_fds.length; + caml_sys_fds[idx] = file; + return idx} + function caml_sys_open(name,flags,_perms) + {var f={}; + while(flags) + {switch(flags[1]) + {case 0:f.rdonly = 1;break; + case 1:f.wronly = 1;break; + case 2:f.append = 1;break; + case 3:f.create = 1;break; + case 4:f.truncate = 1;break; + case 5:f.excl = 1;break; + case 6:f.binary = 1;break; + case 7:f.text = 1;break; + case 8:f.nonblock = 1;break + } + flags = flags[2]} + if(f.rdonly && f.wronly) + caml_raise_sys_error + (caml_jsbytes_of_string(name) + + + " : flags Open_rdonly and Open_wronly are not compatible"); + if(f.text && f.binary) + caml_raise_sys_error + (caml_jsbytes_of_string(name) + + + " : flags Open_text and Open_binary are not compatible"); + var root=resolve_fs_device(name),file=root.device.open(root.rest,f); + return caml_sys_open_internal(file,undefined)} + (function() + {function file(fd,flags) + {return fs_node_supported() + ?caml_sys_open_for_node(fd,flags) + :new MlFakeFd_out(fd,flags)} + caml_sys_open_internal + (file(0,{rdonly:1,altname:"/dev/stdin",isCharacterDevice:true}),0); + caml_sys_open_internal + (file(1,{buffered:2,wronly:1,isCharacterDevice:true}),1); + caml_sys_open_internal + (file(2,{buffered:2,wronly:1,isCharacterDevice:true}),2)} + ()); + function ml_z_gcd(z1,z2) + {return ml_z_normalize(bigInt.gcd(bigInt(z1),bigInt(z2)).abs())} function ml_z_mul(z1,z2) {return ml_z_normalize(bigInt(z1).multiply(bigInt(z2)))} function ml_z_hamdist(z1,z2) @@ -5151,7 +5528,7 @@ numgroups=re[4] | 0, numregisters=re[5] | 0, startchars=re[6] | 0, - s=caml_array_of_string(s), + s=caml_uint8_array_of_string(s), pc=0, quit=false, stack=[], @@ -5311,7 +5688,10 @@ mul *= caml_ba_get_size_per_element(ba.kind); var new_data=ba.data.subarray(ofs * mul,(ofs + len) * mul); return caml_ba_create_unsafe(ba.kind,ba.layout,new_dims,new_data)} - function caml_gc_full_major(){return 0} + function caml_gc_full_major(unit) + {if(typeof globalThis.gc == "function")globalThis.gc();return 0} + function caml_ml_mutex_try_lock(t) + {if(! t.locked){t.locked = true;return 1}return 0} function caml_bytes_set32(s,i,i32) {if(i >>> 0 >= s.l - 3)caml_bytes_bound_error(); var @@ -5335,6 +5715,22 @@ return 0} function ml_z_div_rem(z1,z2){return [0,ml_z_div(z1,z2),ml_z_rem(z1,z2)]} function caml_sys_const_ostype_unix(){return os_type == "Unix"?1:0} + function caml_unix_gmtime(t) + {var + d=new Date(t * 1000), + d_num=d.getTime(), + januaryfirst=new Date(Date.UTC(d.getUTCFullYear(),0,1)).getTime(), + doy=Math.floor((d_num - januaryfirst) / 86400000); + return [0, + d.getUTCSeconds(), + d.getUTCMinutes(), + d.getUTCHours(), + d.getUTCDate(), + d.getUTCMonth(), + d.getUTCFullYear() - 1900, + d.getUTCDay(), + doy, + false | 0]} function caml_signbit_float(x){if(x == 0)x = 1 / x;return x < 0?1:0} function caml_gr_set_line_width(w) {var s=caml_gr_state_get(); @@ -5378,29 +5774,29 @@ caml_gr_state.context.textBaseline = "bottom"} function caml_gr_current_x(){var s=caml_gr_state_get();return s.x} function caml_ba_kind_of_typed_array(ta) - {var g=globalThis,kind; - if(ta instanceof g.Float32Array) + {var kind; + if(ta instanceof Float32Array) kind = 0; else - if(ta instanceof g.Float64Array) + if(ta instanceof Float64Array) kind = 1; else - if(ta instanceof g.Int8Array) + if(ta instanceof Int8Array) kind = 2; else - if(ta instanceof g.Uint8Array) + if(ta instanceof Uint8Array) kind = 3; else - if(ta instanceof g.Int16Array) + if(ta instanceof Int16Array) kind = 4; else - if(ta instanceof g.Uint16Array) + if(ta instanceof Uint16Array) kind = 5; else - if(ta instanceof g.Int32Array) + if(ta instanceof Int32Array) kind = 6; else - if(ta instanceof g.Uint32Array) + if(ta instanceof Uint32Array) kind = 6; else caml_invalid_argument @@ -5409,9 +5805,13 @@ function caml_ba_from_typed_array(ta) {var kind=caml_ba_kind_of_typed_array(ta); return caml_ba_create_unsafe(kind,0,[ta.length],ta)} - function caml_ml_seek_out(chanid,pos) - {caml_ml_flush(chanid);caml_ml_channels[chanid].offset = pos;return 0} + function caml_ml_seek_out(chanid,pos){return caml_seek_out(chanid,pos)} function caml_js_typeof(o){return typeof o} + function caml_hash_mix_string(h,v) + {return caml_hash_mix_jsbytes(h,caml_jsbytes_of_string(v))} + function caml_string_hash(h,v) + {var h=caml_hash_mix_string(h,v),h=caml_hash_mix_final(h); + return h & 0x3FFFFFFF} function caml_restore_raw_backtrace(exn,bt){return 0} function caml_gr_lineto(x,y) {var s=caml_gr_state_get(); @@ -5476,10 +5876,9 @@ msg=caml_format_exception(err), at_exit=caml_named_value("Pervasives.do_at_exit"); if(at_exit)at_exit(0); - globalThis.console.error("Fatal error: exception " + msg + "\n")}} + console.error("Fatal error: exception " + msg + "\n")}} else throw err} - var caml_ephe_data_offset=2; function caml_ephe_check_data(x) {return x[caml_ephe_data_offset] === undefined?0:1} function caml_bytes_get16(s,i) @@ -5488,78 +5887,124 @@ return b2 << 8 | b1} function caml_obj_make_forward(b,v){b[0] = 250;b[1] = v;return 0} function caml_js_from_bool(x){return ! ! x} - function caml_ml_set_channel_name(){return 0} + function caml_ml_set_channel_name(chanid,name) + {var chan=caml_ml_channels[chanid];chan.name = name;return 0} function caml_exp2_float(x){return Math.pow(2,x)} function caml_gr_close_graph() {var s=caml_gr_state_get(); s.canvas.width = 0; s.canvas.height = 0; return 0} + function caml_ml_domain_cpu_relax(unit){return 0} function caml_create_string(len) {if(len < 0)caml_invalid_argument("String.create"); return new MlBytes(len?2:9,"",len)} - function caml_md5_string(s,ofs,len) - {return caml_md5_bytes(caml_bytes_of_string(s),ofs,len)} - function caml_md5_chan(chanid,len) - {var chan=caml_ml_channels[chanid],chan_len=chan.file.length(); - if(len < 0)len = chan_len - chan.offset; - if(chan.offset + len > chan_len)caml_raise_end_of_file(); - var buf=caml_create_bytes(len); - chan.file.read(chan.offset,buf,0,len); - return caml_md5_string(caml_string_of_bytes(buf),0,len)} - function caml_obj_dup(x) - {var l=x.length,a=new Array(l); - for(var i=0;i < l;i++)a[i] = x[i]; - return a} - function caml_weak_get_copy(x,i) - {if(i < 0 || caml_ephe_key_offset + i >= x.length) - caml_invalid_argument("Weak.get_copy"); - var y=caml_weak_get(x,i); - if(y === 0)return y; - var z=y[1]; - if(z instanceof Array)return [0,caml_obj_dup(z)]; - return y} + function caml_ml_input_block(chanid,ba,i,l) + {var + chan=caml_ml_channels[chanid], + n=l, + avail=chan.buffer_max - chan.buffer_curr; + if(l <= avail) + {ba.set(chan.buffer.subarray(chan.buffer_curr,chan.buffer_curr + l),i); + chan.buffer_curr += l} + else + if(avail > 0) + {ba.set + (chan.buffer.subarray(chan.buffer_curr,chan.buffer_curr + avail),i); + chan.buffer_curr += avail; + n = avail} + else + {chan.buffer_curr = 0; + chan.buffer_max = 0; + caml_refill(chan); + var avail=chan.buffer_max - chan.buffer_curr; + if(n > avail)n = avail; + ba.set(chan.buffer.subarray(chan.buffer_curr,chan.buffer_curr + n),i); + chan.buffer_curr += n} + return n} + function caml_md5_chan(chanid,toread) + {var ctx=caml_MD5Init(),buffer=new Uint8Array(4096); + if(toread < 0) + while(true) + {var read=caml_ml_input_block(chanid,buffer,0,buffer.length); + if(read == 0)break; + caml_MD5Update(ctx,buffer.subarray(0,read),read)} + else + while(toread > 0) + {var + read= + caml_ml_input_block + (chanid,buffer,0,toread > buffer.length?buffer.length:toread); + if(read == 0)caml_raise_end_of_file(); + caml_MD5Update(ctx,buffer.subarray(0,read),read); + toread -= read} + return caml_string_of_array(caml_MD5Final(ctx))} function caml_atanh_float(x){return Math.atanh(x)} + function caml_ml_condition_signal(t){return 0} + function caml_unix_findnext(dir_handle) + {return caml_unix_readdir(dir_handle)} function caml_ml_output_bytes(chanid,buffer,offset,len) {var chan=caml_ml_channels[chanid]; if(! chan.opened) caml_raise_sys_error("Cannot output to a closed channel"); - var bytes; - if(offset == 0 && caml_ml_bytes_length(buffer) == len) - bytes = buffer; - else - {bytes = caml_create_bytes(len); - caml_blit_bytes(buffer,offset,bytes,0,len)} - var - string=caml_string_of_bytes(bytes), - jsstring=caml_jsbytes_of_string(string), - id=jsstring.lastIndexOf("\n"); - if(id < 0) - chan.buffer += jsstring; - else - {chan.buffer += jsstring.substr(0,id + 1); - caml_ml_flush(chanid); - chan.buffer += jsstring.substr(id + 1)} + var buffer=caml_uint8_array_of_bytes(buffer); + buffer = buffer.subarray(offset,offset + len); + if(chan.buffer_curr + buffer.length > chan.buffer.length) + {var b=new Uint8Array(chan.buffer_curr + buffer.length); + b.set(chan.buffer); + chan.buffer = b} + switch(chan.buffered) + {case 0: + chan.buffer.set(buffer,chan.buffer_curr); + chan.buffer_curr += buffer.length; + caml_ml_flush(chanid); + break; + case 1: + chan.buffer.set(buffer,chan.buffer_curr); + chan.buffer_curr += buffer.length; + if(chan.buffer_curr >= chan.buffer.length)caml_ml_flush(chanid); + break; + case 2: + var id=buffer.lastIndexOf(10); + if(id < 0) + {chan.buffer.set(buffer,chan.buffer_curr); + chan.buffer_curr += buffer.length; + if(chan.buffer_curr >= chan.buffer.length)caml_ml_flush(chanid)} + else + {chan.buffer.set(buffer.subarray(0,id + 1),chan.buffer_curr); + chan.buffer_curr += id + 1; + caml_ml_flush(chanid); + chan.buffer.set(buffer.subarray(id + 1),chan.buffer_curr); + chan.buffer_curr += buffer.length - id - 1} + break + } return 0} function caml_ml_output(chanid,buffer,offset,len) {return caml_ml_output_bytes (chanid,caml_bytes_of_string(buffer),offset,len)} + function caml_ml_domain_id(unit){return caml_domain_id} function caml_ephe_get_data(x) {return x[caml_ephe_data_offset] === undefined ?0 :[0,x[caml_ephe_data_offset]]} function caml_xmlhttprequest_create(unit) - {var g=globalThis; - if(typeof g.XMLHttpRequest !== "undefined") - try {return new (g.XMLHttpRequest)()}catch(e){} - if(typeof g.activeXObject !== "undefined") - {try {return new (g.activeXObject)("Msxml2.XMLHTTP")}catch(e){} - try {return new (g.activeXObject)("Msxml3.XMLHTTP")}catch(e){} - try {return new (g.activeXObject)("Microsoft.XMLHTTP")}catch(e){}} + {if(typeof globalThis.XMLHttpRequest !== "undefined") + try {return new (globalThis.XMLHttpRequest)()}catch(e){} + if(typeof globalThis.activeXObject !== "undefined") + {try + {return new (globalThis.activeXObject)("Msxml2.XMLHTTP")} + catch(e){} + try + {return new (globalThis.activeXObject)("Msxml3.XMLHTTP")} + catch(e){} + try + {return new (globalThis.activeXObject)("Microsoft.XMLHTTP")} + catch(e){}} caml_failwith("Cannot create a XMLHttpRequest")} function caml_trampoline_return(f,args) {return {joo_tramp:f,joo_args:args}} - function caml_ml_is_buffered(c){return 1} + function caml_ml_is_buffered(chanid) + {return caml_ml_channels[chanid].buffered?1:0} function caml_array_append(a1,a2) {var l1=a1.length,l2=a2.length,l=l1 + l2 - 1,a=new Array(l); a[0] = 0; @@ -5567,6 +6012,8 @@ for(;i < l1;i++)a[i] = a1[i]; for(;i < l;i++,j++)a[i] = a2[j]; return a} + function caml_unix_gettimeofday(){return new Date().getTime() / 1000} + function caml_unix_time(){return Math.floor(caml_unix_gettimeofday())} function caml_ml_set_channel_refill(chanid,f) {caml_ml_channels[chanid].refill = f;return 0} function ml_z_nextprime(z1) @@ -5579,10 +6026,20 @@ return ml_z_normalize(z1); else z1 = z1.add(two)} + function caml_fill_bytes(s,i,l,c) + {if(l > 0) + if(i == 0 && (l >= s.l || s.t == 2 && l >= s.c.length)) + if(c == 0) + {s.c = "";s.t = 2} + else + {s.c = caml_str_repeat(l,String.fromCharCode(c));s.t = l == s.l?0:2} + else + {if(s.t != 4)caml_convert_bytes_to_array(s); + for(l += i;i < l;i++)s.c[i] = c} + return 0} function caml_js_expr(s) - {js_print_stderr("caml_js_expr: fallback to runtime evaluation\n"); + {console.error("caml_js_expr: fallback to runtime evaluation\n"); return eval(caml_jsstring_of_string(s))} - function caml_int64_mul(x,y){return x.mul(y)} function caml_ml_runtime_warnings_enabled(_unit) {return caml_runtime_warnings} function ml_z_sub(z1,z2) @@ -5654,7 +6111,10 @@ hash_accu = hash_accu * 65599 + h | 0}} hash_aux(obj); return hash_accu & 0x3FFFFFFF} + function caml_md5_string(s,ofs,len) + {return caml_md5_bytes(caml_bytes_of_string(s),ofs,len)} function caml_string_equal(s1,s2){return caml_bytes_equal(s1,s2)} + function caml_array_of_string(x){return caml_uint8_array_of_string(x)} function ml_z_divexact(z1,z2){return ml_z_div(z1,z2)} function caml_output_value_to_buffer(s,ofs,len,v,flags) {var t=caml_output_val(v,flags); @@ -5704,13 +6164,13 @@ default:res += "\\" + cur}}} return caml_string_of_jsbytes(res)} function caml_pure_js_expr(s) - {js_print_stderr("caml_pure_js_expr: fallback to runtime evaluation\n"); + {console.error("caml_pure_js_expr: fallback to runtime evaluation\n"); return eval(caml_jsstring_of_string(s))} + function caml_blit_string(a,b,c,d,e) + {caml_blit_bytes(caml_bytes_of_string(a),b,c,d,e);return 0} function blit_nat(nat1,ofs1,nat2,ofs2,len) {for(var i=0;i < len;i++)nat1.data[ofs1 + i] = nat2.data[ofs2 + i]; return 0} - function caml_int64_ult(x,y){return x.ucompare(y) < 0} - function caml_int64_xor(x,y){return x.xor(y)} function caml_bigstring_blit_ba_to_bytes(ba1,pos1,bytes2,pos2,len) {if(12 != ba1.kind) caml_invalid_argument @@ -5722,6 +6182,10 @@ var slice=ba1.data.slice(ofs1,ofs1 + len); caml_blit_bytes(caml_bytes_of_array(slice),0,bytes2,pos2,len); return 0} + function caml_unix_stat(name) + {var root=resolve_fs_device(name); + if(! root.device.stat)caml_failwith("caml_unix_stat: not implemented"); + return root.device.stat(root.rest,true)} function caml_register_named_value(nm,v) {caml_named_values[caml_jsbytes_of_string(nm)] = v;return 0} function jsoo_create_file_extern(name,content) @@ -5731,57 +6195,15 @@ {if(! globalThis.caml_fs_tmp)globalThis.caml_fs_tmp = []; globalThis.caml_fs_tmp.push({name:name,content:content})} return 0} + function caml_unix_stat_64(name) + {var r=caml_unix_stat(name);r[9] = caml_int64_of_int32(r[9])} function caml_to_js_string(s){return caml_jsstring_of_string(s)} - function caml_parse_sign_and_base(s) - {var i=0,len=caml_ml_string_length(s),base=10,sign=1; - if(len > 0) - switch(caml_string_unsafe_get(s,i)) - {case 45:i++;sign = - 1;break;case 43:i++;sign = 1;break} - if(i + 1 < len && caml_string_unsafe_get(s,i) == 48) - switch(caml_string_unsafe_get(s,i + 1)) - {case 120: - case 88:base = 16;i += 2;break; - case 111: - case 79:base = 8;i += 2;break; - case 98: - case 66:base = 2;i += 2;break; - case 117: - case 85:i += 2;break - } - return [i,sign,base]} - function caml_parse_digit(c) - {if(c >= 48 && c <= 57)return c - 48; - if(c >= 65 && c <= 90)return c - 55; - if(c >= 97 && c <= 122)return c - 87; - return - 1} - function caml_int64_of_string(s) - {var - r=caml_parse_sign_and_base(s), - i=r[0], - sign=r[1], - base=r[2], - base64=caml_int64_of_int32(base), - threshold= - new MlInt64(0xffffff,0xfffffff,0xffff).udivmod(base64).quotient, - c=caml_string_unsafe_get(s,i), - d=caml_parse_digit(c); - if(d < 0 || d >= base)caml_failwith("int_of_string"); - var res=caml_int64_of_int32(d); - for(;;) - {i++; - c = caml_string_unsafe_get(s,i); - if(c == 95)continue; - d = caml_parse_digit(c); - if(d < 0 || d >= base)break; - if(caml_int64_ult(threshold,res))caml_failwith("int_of_string"); - d = caml_int64_of_int32(d); - res = caml_int64_add(caml_int64_mul(base64,res),d); - if(caml_int64_ult(res,d))caml_failwith("int_of_string")} - if(i != caml_ml_string_length(s))caml_failwith("int_of_string"); - if(base == 10 && caml_int64_ult(new MlInt64(0,0,0x8000),res)) - caml_failwith("int_of_string"); - if(sign < 0)res = caml_int64_neg(res); - return res} + function caml_ml_mutex_lock(t) + {if(t.locked) + caml_failwith("Mutex.lock: mutex already locked. Cannot wait."); + else + t.locked = true; + return 0} function re_search_forward(re,s,pos) {if(pos < 0 || pos > caml_ml_string_length(s)) caml_invalid_argument("Str.search_forward"); @@ -5795,11 +6217,7 @@ b[0] = 0; for(var i=1;i < len;i++)b[i] = init; return b} - function caml_ml_seek_in(chanid,pos) - {var chan=caml_ml_channels[chanid]; - if(chan.refill != null)caml_raise_sys_error("Illegal seek"); - chan.offset = pos; - return 0} + function caml_ml_seek_in(chanid,pos){return caml_seek_in(chanid,pos)} function caml_sys_read_directory(name) {var root=resolve_fs_device(name), @@ -5814,18 +6232,11 @@ return 0} function caml_sys_const_ostype_win32(){return os_type == "Win32"?1:0} function caml_obj_is_block(x){return + (x instanceof Array)} - function caml_ml_input_char(chanid) - {var chan=caml_ml_channels[chanid]; - caml_ml_may_refill_input(chanid); - if(chan.offset >= chan.file.length())caml_raise_end_of_file(); - var res=chan.file.read_one(chan.offset); - chan.offset++; - return res} function caml_obj_set_raw_field(o,i,v){return o[i + 1] = v} function caml_js_var(x) {var x=caml_jsstring_of_string(x); if(! x.match(/^[a-zA-Z_$][a-zA-Z_$0-9]*(\.[a-zA-Z_$][a-zA-Z_$0-9]*)*$/)) - js_print_stderr + console.error ('caml_js_var: "' + x @@ -5846,9 +6257,38 @@ writer.write(8,bits.value[i] >>> 24 & 0xff)} sz[0] = 4 * (1 + ((len + 3) / 4 | 0)); sz[1] = 8 * (1 + ((len + 7) / 8 | 0))} + function caml_ephe_unset_data(x) + {if(globalThis.FinalizationRegistry && globalThis.WeakRef) + if(x[1] instanceof globalThis.FinalizationRegistry) + for(var j=caml_ephe_key_offset;j < x.length;j++) + {var key=x[j]; + if(key instanceof globalThis.WeakRef) + {key = key.deref();if(key)x[1].unregister(key)}} + x[caml_ephe_data_offset] = undefined; + return 0} + function caml_ephe_set_data(x,data) + {if(globalThis.FinalizationRegistry && globalThis.WeakRef) + if(! (x[1] instanceof globalThis.FinalizationRegistry)) + {x[1] + = + new + (globalThis.FinalizationRegistry) + (function(){caml_ephe_unset_data(x)}); + for(var j=caml_ephe_key_offset;j < x.length;j++) + {var key=x[j]; + if(key instanceof globalThis.WeakRef) + {key = key.deref();if(key)x[1].register(key,undefined,key)}}} + x[caml_ephe_data_offset] = data; + return 0} function caml_ephe_blit_data(src,dst) - {dst[caml_ephe_data_offset] = src[caml_ephe_data_offset];return 0} + {var n=src[caml_ephe_data_offset]; + if(n === undefined) + caml_ephe_unset_data(dst); + else + caml_ephe_set_data(dst,n); + return 0} function caml_is_printable(c){return + (c > 31 && c < 127)} + function caml_array_of_bytes(x){return caml_uint8_array_of_bytes(x)} function caml_equal(x,y){return + (caml_compare_val(x,y,false) == 0)} function re_partial_match(re,s,pos) {if(pos < 0 || pos > caml_ml_string_length(s)) @@ -5858,27 +6298,35 @@ function caml_sys_random_seed() {if(globalThis.crypto) if(typeof globalThis.crypto.getRandomValues === "function") - {var a=new (globalThis.Uint32Array)(1); + {var a=new Uint32Array(1); globalThis.crypto.getRandomValues(a); return [0,a[0]]} else if(globalThis.crypto.randomBytes === "function") - {var - buff=globalThis.crypto.randomBytes(4), - a=new (globalThis.Uint32Array)(buff); + {var buff=globalThis.crypto.randomBytes(4),a=new Uint32Array(buff); return [0,a[0]]} var now=new Date().getTime(),x=now ^ 0xffffffff * Math.random(); return [0,x]} - function caml_final_register_called_without_value(){return 0} + var all_finalizers=new (globalThis.Set)(); + function caml_final_register_called_without_value(cb,a) + {if(globalThis.FinalizationRegistry && a instanceof Object) + {var + x= + new + (globalThis.FinalizationRegistry) + (function(x){all_finalizers.delete(x);cb(0);return}); + x.register(a,x); + all_finalizers.add(x)} + return 0} function caml_ba_get_2(ba,i0,i1){return ba.get(ba.offset([i0,i1]))} - function win_handle_fd(x){return x} function caml_ba_uint8_set16(ba,i0,v) {var ofs=ba.offset(i0); if(ofs + 1 >= ba.data.length)caml_array_bound_error(); ba.set(ofs + 0,v & 0xff); ba.set(ofs + 1,v >>> 8 & 0xff); return 0} - var win_filedescr_of_channel=caml_channel_descriptor; + function caml_lazy_reset_to_lazy(o) + {caml_obj_update_tag(o,244,246);return 0} function caml_js_delete(o,f){delete o[f];return 0} function caml_int_of_string(s) {var @@ -5938,6 +6386,8 @@ CODE_CUSTOM_FIXED:0x19}; function caml_obj_raw_field(o,i){return o[i + 1]} function caml_js_equals(x,y){return + (x == y)} + function caml_obj_compare_and_swap(x,i,old,n) + {if(x[i + 1] == old){x[i + 1] = n;return 1}return 0} function bigstring_to_typed_array(bs){return bs.data} function ml_z_fits_nativeint(z1){return ml_z_fits_int(z1)} function caml_gr_arc_aux(ctx,cx,cy,ry,rx,a1,a2) @@ -6024,32 +6474,6 @@ (ofs * size_per_element,(ofs + size) * size_per_element); return caml_ba_create_unsafe(ba.kind,ba.layout,sub_dims,new_data)} function ml_z_of_nativeint(i){return i | 0} - function caml_marshal_data_size(s,ofs) - {function get32(s,i) - {return caml_bytes_unsafe_get(s,i) - << - 24 - | - caml_bytes_unsafe_get(s,i + 1) - << - 16 - | - caml_bytes_unsafe_get(s,i + 2) - << - 8 - | - caml_bytes_unsafe_get(s,i + 3)} - if(get32(s,ofs) != (0x8495A6BE | 0)) - caml_failwith("Marshal.data_size: bad object"); - return get32(s,ofs + 4)} - function caml_input_value(chanid) - {var chan=caml_ml_channels[chanid],buf=caml_create_bytes(8); - chan.file.read(chan.offset,buf,0,8); - var len=caml_marshal_data_size(buf,0) + 20,buf=caml_create_bytes(len); - chan.file.read(chan.offset,buf,0,len); - var offset=[0],res=caml_input_value_from_bytes(buf,offset); - chan.offset = chan.offset + offset[0]; - return res} function caml_ba_kind(ba){return ba.kind} function caml_js_fun_call(f,a) {switch(a.length) @@ -6108,13 +6532,9 @@ {if(nat1.data[ofs1] > nat2.data[ofs2])return 1; if(nat1.data[ofs1] < nat2.data[ofs2])return - 1; return 0} - function caml_ml_input(chanid,s,i,l) - {var chan=caml_ml_channels[chanid],l2=chan.file.length() - chan.offset; - if(l2 == 0 && chan.refill != null)l2 = caml_ml_refill_input(chan); - if(l2 < l)l = l2; - chan.file.read(chan.offset,s,i,l); - chan.offset += l; - return l} + function caml_ml_input(chanid,b,i,l) + {var ba=caml_uint8_array_of_bytes(b); + return caml_ml_input_block(chanid,ba,i,l)} function caml_gr_wait_event(_evl) {caml_failwith ("caml_gr_wait_event not Implemented: use Graphics_js instead")} @@ -6122,27 +6542,12 @@ function caml_hash_mix_bigstring(h,bs) {return caml_hash_mix_bytes_arr(h,bs.data)} function caml_record_backtrace(){return 0} - function unix_gmtime(t) - {var - d=new Date(t * 1000), - d_num=d.getTime(), - januaryfirst=new Date(Date.UTC(d.getUTCFullYear(),0,1)).getTime(), - doy=Math.floor((d_num - januaryfirst) / 86400000); - return [0, - d.getUTCSeconds(), - d.getUTCMinutes(), - d.getUTCHours(), - d.getUTCDate(), - d.getUTCMonth(), - d.getUTCFullYear() - 1900, - d.getUTCDay(), - doy, - false | 0]} + function caml_unix_cleanup(){} function caml_sys_const_backend_type() {return [0,caml_string_of_jsbytes("js_of_ocaml")]} function caml_sys_get_config() {return [0,caml_string_of_jsbytes(os_type),32,0]} - function unix_time(){return Math.floor(unix_gettimeofday())} + function caml_obj_is_shared(x){return 1} function caml_ml_out_channels_list() {var l=0; for(var c=0;c < caml_ml_channels.length;c++) @@ -6162,11 +6567,14 @@ if(a.value.length % 2 != 0)acc = caml_hash_mix_int(acc,0); if(a.isNegative)acc = acc + 1; return acc | 0} + function caml_pos_out(chanid) + {var chan=caml_ml_channels[chanid];return chan.offset + chan.buffer_curr} function bigstring_of_array_buffer(ab) - {var ta=new (globalThis.Uint8Array)(ab); + {var ta=new Uint8Array(ab); return caml_ba_create_unsafe(12,0,[ta.length],ta)} function caml_mod(x,y){if(y == 0)caml_raise_zero_divide();return x % y} function caml_ba_init(){return 0} + function caml_unix_filedescr_of_fd(x){return x} function re_string_match(re,s,pos) {if(pos < 0 || pos > caml_ml_string_length(s)) caml_invalid_argument("Str.string_match"); @@ -6243,6 +6651,7 @@ return data} function caml_ba_get_generic(ba,i) {var ofs=ba.offset(caml_js_from_array(i));return ba.get(ofs)} + function caml_unix_startup(){} function caml_get_exception_backtrace(){return 0} function caml_format_float(fmt,x) {function toFixed(x,dp) @@ -6344,6 +6753,10 @@ {return caml_string_lessthan(s2,s1)} function caml_div(x,y) {if(y == 0)caml_raise_zero_divide();return x / y | 0} + function caml_obj_dup(x) + {var l=x.length,a=new Array(l); + for(var i=0;i < l;i++)a[i] = x[i]; + return a} function caml_ephe_get_data_copy(x) {return x[caml_ephe_data_offset] === undefined ?0 @@ -6355,10 +6768,18 @@ var root=bigInt(ml_z_root(z,2)); return root.multiply(root).eq(z)?1:0} function caml_sys_get_argv(a){return [0,caml_argv[1],caml_argv]} + function caml_ml_domain_set_name(_name){return 0} function caml_js_to_bool(x){return + x} function caml_gr_create_image(x,y) {var s=caml_gr_state_get();return s.context.createImageData(x,y)} - var caml_ephe_get_key_copy=caml_weak_get_copy; + function caml_ephe_get_key_copy(x,i) + {if(i < 0 || caml_ephe_key_offset + i >= x.length) + caml_invalid_argument("Weak.get_copy"); + var y=caml_ephe_get_key(x,i); + if(y === 0)return y; + var z=y[1]; + if(z instanceof Array)return [0,caml_obj_dup(z)]; + return y} function caml_lessthan(x,y){return + (caml_compare_val(x,y,false) < 0)} function caml_raw_backtrace_next_slot(){return 0} function ml_z_to_nativeint(z1){return ml_z_to_int(z1)} @@ -6404,7 +6825,7 @@ return tag == meths[li + 1]?meths[li]:0} function caml_js_get_console() {var - c=globalThis.console?globalThis.console:{}, + c=console, m= ["log", "debug", @@ -6425,21 +6846,19 @@ return c} function caml_sys_unsafe_getenv(name){return caml_sys_getenv(name)} function caml_ml_open_descriptor_in(fd) - {var data=caml_global_data.fds[fd]; - if(data.flags.wronly)caml_raise_sys_error("fd " + fd + " is writeonly"); - var refill=null; - if(fd == 0 && fs_node_supported()) - {var fs=require("fs"); - refill - = - function(){return caml_string_of_jsstring(fs.readFileSync(0,"utf8"))}} + {var file=caml_sys_fds[fd]; + if(file.flags.wronly)caml_raise_sys_error("fd " + fd + " is writeonly"); var + refill=null, channel= - {file:data.file, - offset:data.offset, + {file:file, + offset:file.flags.append?file.length():0, fd:fd, opened:true, out:false, + buffer_curr:0, + buffer_max:0, + buffer:new Uint8Array(65536), refill:refill}; caml_ml_channels[channel.fd] = channel; return channel.fd} @@ -6447,7 +6866,7 @@ {var ta= new - (globalThis.Uint8Array) + Uint8Array (ba.buffer,ba.byteOffset,ba.length * ba.BYTES_PER_ELEMENT); return caml_ba_create_unsafe(12,0,[ta.length],ta)} function caml_round_float(x){return Math.round(x)} @@ -6458,11 +6877,6 @@ r = bigInt(base).multiply(d).add(r); base = bigInt(base).multiply(base1)} return ml_z_normalize(r)} - function unix_stat(name) - {var root=resolve_fs_device(name); - if(! root.device.stat)caml_failwith("unix_stat: not implemented"); - return root.device.stat(root.rest,true)} - var unix_stat_64=unix_stat; function caml_ojs_new_arr(c,a) {switch(a.length) {case 0:return new c(); @@ -6482,6 +6896,9 @@ nat.data[ofs + i] = (- 1 >>> 0) - (nat.data[ofs + i] >>> 0)} function ml_z_logxor(z1,z2) {return ml_z_normalize(bigInt(z1).xor(bigInt(z2)))} + var caml_domain_dls=[0]; + function caml_domain_dls_set(a){caml_domain_dls = a} + function caml_lazy_read_result(o){return caml_obj_tag(o) == 250?o[1]:o} var caml_js_regexps={amp:/&/g,lt:/>> 24} - function win_startup(){} function caml_ba_set_3(ba,i0,i1,i2,v) {ba.set(ba.offset([i0,i1,i2]),v);return 0} function ml_z_jacobi(n,k) @@ -6631,13 +7041,6 @@ {caml_failwith("caml_ba_map_file not implemented")} function caml_ba_map_file_bytecode(argv,argn) {return caml_ba_map_file(argv[0],argv[1],argv[2],argv[3],argv[4],argv[5])} - function unix_symlink(to_dir,src,dst) - {var src_root=resolve_fs_device(src),dst_root=resolve_fs_device(dst); - if(src_root.device != dst_root.device) - caml_failwith("unix_symlink: cannot symlink between two filesystems"); - if(! src_root.device.symlink) - caml_failwith("unix_symlink: not implemented"); - return src_root.device.symlink(to_dir,src_root.rest,dst_root.rest,true)} function caml_ba_create_from(data1,data2,jstyp,kind,layout,dims) {if(data2 || caml_ba_get_size_per_element(kind) == 2) caml_invalid_argument @@ -6682,7 +7085,7 @@ {var reader=new MlStringReader(s,typeof ofs == "number"?ofs:ofs[0]); return caml_input_value_from_reader(reader,ofs)} function caml_ml_pos_in_64(chanid) - {return caml_int64_of_float(caml_ml_channels[chanid].offset)} + {return caml_int64_of_float(caml_pos_in(chanid))} function caml_gr_draw_image(im,x,y) {var s=caml_gr_state_get(); if(! im.image) @@ -6706,8 +7109,15 @@ return caml_string_unsafe_set(s,i,c)} function caml_sys_rmdir(name) {var root=resolve_fs_device(name);root.device.rmdir(root.rest);return 0} - function caml_ml_pos_out(chanid) - {caml_ml_flush(chanid);return caml_ml_channels[chanid].offset} + function caml_unix_symlink(to_dir,src,dst) + {var src_root=resolve_fs_device(src),dst_root=resolve_fs_device(dst); + if(src_root.device != dst_root.device) + caml_failwith + ("caml_unix_symlink: cannot symlink between two filesystems"); + if(! src_root.device.symlink) + caml_failwith("caml_unix_symlink: not implemented"); + return src_root.device.symlink(to_dir,src_root.rest,dst_root.rest,true)} + function caml_ml_pos_out(chanid){return caml_pos_out(chanid)} function caml_spacetime_enabled(_unit){return 0} function caml_bytes_notequal(s1,s2){return 1 - caml_bytes_equal(s1,s2)} function caml_runtime_parameters(_unit){return caml_string_of_jsbytes("")} @@ -6721,10 +7131,6 @@ dims=caml_js_from_array(dims_ml), data=caml_ba_create_buffer(kind,caml_ba_get_size(dims)); return caml_ba_create_unsafe(kind,layout,dims,data)} - function caml_weak_blit(a1,i1,a2,i2,len) - {caml_array_blit - (a1,caml_ephe_key_offset + i1 - 1,a2,caml_ephe_key_offset + i2 - 1,len); - return 0} function caml_gr_remember_mode() {caml_failwith("caml_gr_remember_mode not Implemented")} function caml_fma_float(x,y,z) @@ -6812,11 +7218,12 @@ var fs=f * scale; if(Math.abs(fs) > MIN_VALUE)return fs; return fs + adjust(f - fs / scale,i.e) * scale} + function caml_recommended_domain_count(unit){return 1} function caml_bswap16(x){return (x & 0x00FF) << 8 | (x & 0xFF00) >> 8} function caml_ml_set_binary_mode(chanid,mode) - {var chan=caml_ml_channels[chanid],data=caml_global_data.fds[chan.fd]; - data.flags.text = ! mode; - data.flags.binary = mode; + {var chan=caml_ml_channels[chanid]; + chan.file.flags.text = ! mode; + chan.file.flags.binary = mode; return 0} function caml_final_register(){return 0} function caml_gr_draw_rect(x,y,w,h) @@ -6827,14 +7234,15 @@ {if(i >>> 0 >= caml_ml_string_length(s) - 1)caml_string_bound_error(); var b1=caml_string_unsafe_get(s,i),b2=caml_string_unsafe_get(s,i + 1); return b2 << 8 | b1} - function caml_ephe_unset_data(x,data) - {x[caml_ephe_data_offset] = undefined;return 0} function caml_output_value(chanid,v,flags) {var s=caml_output_value_to_string(v,flags); caml_ml_output(chanid,s,0,caml_ml_string_length(s)); return 0} function caml_ba_get_3(ba,i0,i1,i2){return ba.get(ba.offset([i0,i1,i2]))} - var caml_ephe_blit_key=caml_weak_blit; + function caml_ephe_blit_key(a1,i1,a2,i2,len) + {caml_array_blit + (a1,caml_ephe_key_offset + i1 - 1,a2,caml_ephe_key_offset + i2 - 1,len); + return 0} function ml_z_to_int32(z1){return ml_z_to_int(z1)} var caml_initial_time=new Date().getTime() * 0.001; function caml_sys_time() @@ -6843,10 +7251,8 @@ function caml_check_bound(array,index) {if(index >>> 0 >= array.length - 1)caml_array_bound_error(); return array} - function unix_getpwuid(unit){caml_raise_not_found()} + function caml_unix_getpwuid(unit){caml_raise_not_found()} function ml_z_compare(z1,z2){return bigInt(z1).compare(bigInt(z2))} - function caml_hash_mix_string(h,v) - {return caml_hash_mix_jsbytes(h,caml_jsbytes_of_string(v))} function caml_hash(count,limit,seed,obj) {var queue,rd,wr,sz,num,h,v,i,len; sz = limit; @@ -6893,21 +7299,8 @@ if(v === + v){h = caml_hash_mix_float(h,v);num--}} h = caml_hash_mix_final(h); return h & 0x3FFFFFFF} - function caml_obj_tag(x) - {if(x instanceof Array && x[0] == x[0] >>> 0) - return x[0]; - else - if(caml_is_ml_bytes(x)) - return 252; - else - if(caml_is_ml_string(x)) - return 252; - else - if(x instanceof Function || typeof x == "function") - return 247; - else - if(x && x.caml_custom)return 255;else return 1000} function caml_ba_to_typed_array(ba){return ba.data} + function caml_domain_dls_get(unit){return caml_domain_dls} function caml_bytes_get32(s,i) {if(i >>> 0 >= s.l - 3)caml_bytes_bound_error(); var @@ -6935,8 +7328,7 @@ function caml_js_error_option_of_exception(exn) {if(exn.js_error)return [0,exn.js_error];return 0} function caml_ml_pos_out_64(chanid) - {caml_ml_flush(chanid); - return caml_int64_of_float(caml_ml_channels[chanid].offset)} + {return caml_int64_of_float(caml_pos_out(chanid))} function ml_z_extract(z1,pos,len) {z1 = bigInt(z1); return ml_z_normalize @@ -6955,6 +7347,8 @@ caml_raise_constant(caml_named_value("ml_z_overflow")); return ml_z_normalize(bigInt(f1 < 0?Math.ceil(f1):Math.floor(f1)))} function ml_z_lognot(z1){return ml_z_normalize(bigInt(z1).not())} + function caml_unix_findclose(dir_handle) + {return caml_unix_closedir(dir_handle)} function caml_gr_close_subwindow(a) {caml_failwith("caml_gr_close_subwindow not Implemented")} function caml_floatarray_blit(a1,i1,a2,i2,len) @@ -6988,10 +7382,6 @@ function F(){return c.apply(this,caml_js_from_array(a))} F.prototype = c.prototype; return new F()} - function unix_mkdir(name,perm) - {var root=resolve_fs_device(name); - if(! root.device.mkdir)caml_failwith("unix_mkdir: not implemented"); - return root.device.mkdir(root.rest,perm,true)} function caml_gr_current_y(){var s=caml_gr_state_get();return s.y} function caml_format_int(fmt,i) {if(caml_jsbytes_of_string(fmt) == "%d") @@ -7012,16 +7402,19 @@ function is_digit_odd(nat,ofs){if(nat.data[ofs] & 1)return 1;return 0} function caml_runtime_variant(_unit){return caml_string_of_jsbytes("")} function caml_ml_open_descriptor_out(fd) - {var data=caml_global_data.fds[fd]; - if(data.flags.rdonly)caml_raise_sys_error("fd " + fd + " is readonly"); + {var file=caml_sys_fds[fd]; + if(file.flags.rdonly)caml_raise_sys_error("fd " + fd + " is readonly"); var + buffered=file.flags.buffered !== undefined?file.flags.buffered:1, channel= - {file:data.file, - offset:data.offset, + {file:file, + offset:file.flags.append?file.length():0, fd:fd, opened:true, out:true, - buffer:""}; + buffer_curr:0, + buffer:new Uint8Array(65536), + buffered:buffered}; caml_ml_channels[channel.fd] = channel; return channel.fd} function caml_array_concat(l) @@ -7030,7 +7423,7 @@ {var b=l[1];for(var i=1;i < b.length;i++)a.push(b[i]);l = l[2]} return a} function caml_gr_open_graph(info) - {var g=globalThis,info=caml_jsstring_of_string(info); + {var info=caml_jsstring_of_string(info); function get(name) {var res=info.match("(^|,) *" + name + " *= *([a-zA-Z0-9_]+) *(,|$)"); if(res)return res[2]} @@ -7046,7 +7439,7 @@ var h=get("height"); h = h?parseInt(h):200; specs.push("height=" + h); - var win=g.open("about:blank",target,specs.join(",")); + var win=globalThis.open("about:blank",target,specs.join(",")); if(! win)caml_failwith("Graphics.open_graph: cannot open the window"); var doc=win.document,canvas=doc.createElement("canvas"); canvas.width = w; @@ -7058,8 +7451,6 @@ body.style.margin = "0px"; body.appendChild(canvas); return 0} - function caml_ephe_set_data(x,data) - {x[caml_ephe_data_offset] = data;return 0} function caml_make_float_vect(len) {if(len < 0)caml_array_bound_error(); var len=len + 1 | 0,b=new Array(len); @@ -7078,7 +7469,6 @@ return n} function caml_get_exception_raw_backtrace(){return [0]} function caml_log1p_float(x){return Math.log1p(x)} - function caml_int64_or(x,y){return x.or(y)} function caml_lazy_make_forward(v){return [250,v]} function lor_digit_nat(nat1,ofs1,nat2,ofs2) {nat1.data[ofs1] |= nat2.data[ofs2];return 0} @@ -7105,6 +7495,7 @@ {if(index < 0 || index >= array.length - 1)caml_array_bound_error(); array[index + 1] = newval; return 0} + function caml_alloc_stack(ret,exn,h){return {ret:ret,exn:exn,h:h}} function caml_bytes_greaterequal(s1,s2) {return caml_bytes_lessequal(s2,s1)} function ml_z_perfect_power(z) @@ -7252,6 +7643,11 @@ return x} function ml_z_size(z1) {return bigInt(z1).toArray(Math.pow(2,32)).value.length} + function caml_unix_readlink(name) + {var root=resolve_fs_device(name); + if(! root.device.readlink) + caml_failwith("caml_unix_readlink: not implemented"); + return root.device.readlink(root.rest,true)} function caml_backtrace_status(){return 0} function caml_sys_argv(a){return caml_argv} function caml_install_signal_handler(){return 0} @@ -7317,7 +7713,34 @@ tbl_gindex=10, tbl_tablesize=11, tbl_table=12, - tbl_check=13; + tbl_check=13, + tbl_names_const=15, + tbl_names_block=16; + function log(x) + {var s=caml_string_of_jsbytes(x + "\n"); + caml_ml_output(2,s,0,caml_ml_string_length(s))} + function token_name(names,number) + {var str=caml_jsstring_of_string(names); + if(str[0] == "\x00")return ""; + return str.split("\x00")[number]} + function print_token(state,tok) + {var token,kind; + if(tok instanceof Array) + {token = token_name(tables[tbl_names_block],tok[0]); + if(typeof tok[1] == "number") + kind = "" + tok[1]; + else + if(typeof tok[1] == "string") + kind = tok[1]; + else + if(tok[1] instanceof MlBytes) + kind = caml_jsbytes_of_string(tok[1]); + else + kind = "_"; + log("State " + state + ": read token " + token + "(" + kind + ")")} + else + {token = token_name(tables[tbl_names_const],tok); + log("State " + state + ": read token " + token)}} if(! tables.dgoto) {tables.defred = caml_lex_array(tables[tbl_defred]); tables.sindex = caml_lex_array(tables[tbl_sindex]); @@ -7339,6 +7762,7 @@ errflag=env[env_errflag]; exit: for(;;) + next: switch(cmd) {case 0:state = 0;errflag = 0; case 6: @@ -7354,6 +7778,7 @@ else {env[env_curr_char] = tables[tbl_transl_const][arg + 1]; env[env_lval] = 0} + if(caml_parser_trace)print_token(state,arg); case 7: n1 = tables.sindex[state]; n2 = n1 + env[env_curr_char]; @@ -7417,16 +7842,25 @@ tables.check[n2] == ERRCODE) - {cmd = shift_recover;break} + {if(caml_parser_trace)log("Recovering in state " + state1); + cmd = shift_recover; + break next} else - {if(sp <= env[env_stackbase])return RAISE_PARSE_ERROR;sp--}}} + {if(caml_parser_trace)log("Discarding state " + state1); + if(sp <= env[env_stackbase]) + {if(caml_parser_trace)log("No more states to discard"); + return RAISE_PARSE_ERROR} + sp--}}} else {if(env[env_curr_char] == 0)return RAISE_PARSE_ERROR; + if(caml_parser_trace)log("Discarding last token read"); env[env_curr_char] = - 1; cmd = loop; break} case 8:env[env_curr_char] = - 1;if(errflag > 0)errflag--; case 9: + if(caml_parser_trace) + log("State " + state + ": shift to state " + tables.table[n2]); state = tables.table[n2]; sp++; if(sp >= env[env_stacksize]){res = GROW_STACKS_1;break exit} @@ -7438,6 +7872,8 @@ cmd = loop; break; case 10: + if(caml_parser_trace) + log("State " + state + ": reduce by rule " + n); var m=tables.len[n]; env[env_asp] = sp; env[env_rule_number] = n; @@ -7520,7 +7956,7 @@ return im} function caml_ml_set_channel_output(chanid,f) {var chan=caml_ml_channels[chanid]; - caml_global_data.fds[chan.fd].output = f; + chan.output = function(s){f(s)}; return 0} function caml_read_file_content(name) {var @@ -7536,15 +7972,15 @@ caml_raise_no_such_file(caml_jsbytes_of_string(name))} function caml_js_to_float(x){return x} function caml_setup_uncaught_exception_handler() - {var g=globalThis; - if(g.process && g.process.on) - g.process.on + {var process=globalThis.process; + if(process && process.on) + process.on ("uncaughtException", function(err,origin) - {caml_fatal_uncaught_exception(err);g.process.exit(2)}); + {caml_fatal_uncaught_exception(err);process.exit(2)}); else - if(g.addEventListener) - g.addEventListener + if(globalThis.addEventListener) + globalThis.addEventListener ("error", function(event) {if(event.error)caml_fatal_uncaught_exception(event.error)})} @@ -7632,55 +8068,85 @@ ml_z_primorial:ml_z_primorial, ml_z_bin:ml_z_bin, bigInt:bigInt, + caml_alloc_stack:caml_alloc_stack, + caml_ml_condition_new:caml_ml_condition_new, + caml_ml_condition_wait:caml_ml_condition_wait, + caml_ml_condition_broadcast:caml_ml_condition_broadcast, + caml_ml_condition_signal:caml_ml_condition_signal, + MlMutex:MlMutex, + caml_ml_mutex_new:caml_ml_mutex_new, + caml_ml_mutex_lock:caml_ml_mutex_lock, + caml_ml_mutex_try_lock:caml_ml_mutex_try_lock, + caml_ml_mutex_unlock:caml_ml_mutex_unlock, + caml_lxm_next:caml_lxm_next, + caml_domain_dls:caml_domain_dls, + caml_domain_dls_set:caml_domain_dls_set, + caml_domain_dls_get:caml_domain_dls_get, + caml_atomic_load:caml_atomic_load, + caml_atomic_cas:caml_atomic_cas, + caml_atomic_fetch_add:caml_atomic_fetch_add, + caml_atomic_exchange:caml_atomic_exchange, + caml_ml_domain_unique_token:caml_ml_domain_unique_token, + caml_ml_domain_set_name:caml_ml_domain_set_name, + caml_recommended_domain_count:caml_recommended_domain_count, + caml_domain_id:caml_domain_id, + caml_domain_spawn:caml_domain_spawn, + caml_ml_domain_id:caml_ml_domain_id, + caml_ml_domain_cpu_relax:caml_ml_domain_cpu_relax, caml_ephe_key_offset:caml_ephe_key_offset, caml_ephe_data_offset:caml_ephe_data_offset, + caml_ephe_set_key:caml_ephe_set_key, + caml_ephe_unset_key:caml_ephe_unset_key, + caml_ephe_create:caml_ephe_create, caml_weak_create:caml_weak_create, caml_weak_set:caml_weak_set, - caml_weak_get:caml_weak_get, - caml_weak_get_copy:caml_weak_get_copy, - caml_weak_check:caml_weak_check, - caml_weak_blit:caml_weak_blit, - caml_ephe_create:caml_ephe_create, - caml_ephe_blit_key:caml_ephe_blit_key, caml_ephe_get_key:caml_ephe_get_key, caml_ephe_get_key_copy:caml_ephe_get_key_copy, caml_ephe_check_key:caml_ephe_check_key, - caml_ephe_set_key:caml_ephe_set_key, - caml_ephe_unset_key:caml_ephe_unset_key, + caml_ephe_blit_key:caml_ephe_blit_key, caml_ephe_blit_data:caml_ephe_blit_data, caml_ephe_get_data:caml_ephe_get_data, caml_ephe_get_data_copy:caml_ephe_get_data_copy, caml_ephe_set_data:caml_ephe_set_data, caml_ephe_unset_data:caml_ephe_unset_data, caml_ephe_check_data:caml_ephe_check_data, - unix_gettimeofday:unix_gettimeofday, - unix_time:unix_time, - unix_gmtime:unix_gmtime, - unix_localtime:unix_localtime, - unix_mktime:unix_mktime, - win_startup:win_startup, - win_cleanup:win_cleanup, - win_handle_fd:win_handle_fd, - unix_isatty:unix_isatty, + caml_unix_gettimeofday:caml_unix_gettimeofday, + caml_unix_time:caml_unix_time, + caml_unix_gmtime:caml_unix_gmtime, + caml_unix_localtime:caml_unix_localtime, + caml_unix_mktime:caml_unix_mktime, + caml_unix_startup:caml_unix_startup, + caml_unix_cleanup:caml_unix_cleanup, + caml_unix_filedescr_of_fd:caml_unix_filedescr_of_fd, + caml_unix_isatty:caml_unix_isatty, make_unix_err_args:make_unix_err_args, - unix_stat:unix_stat, - unix_stat_64:unix_stat_64, - unix_lstat:unix_lstat, - unix_lstat_64:unix_lstat_64, - unix_mkdir:unix_mkdir, - unix_rmdir:unix_rmdir, - unix_symlink:unix_symlink, - unix_readlink:unix_readlink, - unix_unlink:unix_unlink, - unix_getuid:unix_getuid, - unix_getpwuid:unix_getpwuid, - unix_has_symlink:unix_has_symlink, + caml_unix_stat:caml_unix_stat, + caml_unix_stat_64:caml_unix_stat_64, + caml_unix_lstat:caml_unix_lstat, + caml_unix_lstat_64:caml_unix_lstat_64, + caml_unix_mkdir:caml_unix_mkdir, + caml_unix_rmdir:caml_unix_rmdir, + caml_unix_symlink:caml_unix_symlink, + caml_unix_readlink:caml_unix_readlink, + caml_unix_unlink:caml_unix_unlink, + caml_unix_getuid:caml_unix_getuid, + caml_unix_getpwuid:caml_unix_getpwuid, + caml_unix_has_symlink:caml_unix_has_symlink, + caml_unix_opendir:caml_unix_opendir, + caml_unix_readdir:caml_unix_readdir, + caml_unix_closedir:caml_unix_closedir, + caml_unix_rewinddir:caml_unix_rewinddir, + caml_unix_findfirst:caml_unix_findfirst, + caml_unix_findnext:caml_unix_findnext, + caml_unix_findclose:caml_unix_findclose, + caml_unix_inet_addr_of_string:caml_unix_inet_addr_of_string, re_match:re_match, re_search_forward:re_search_forward, re_search_backward:re_search_backward, re_string_match:re_string_match, re_partial_match:re_partial_match, re_replacement_text:re_replacement_text, + caml_str_initialize:caml_str_initialize, caml_raise_sys_error:caml_raise_sys_error, caml_sys_exit:caml_sys_exit, caml_is_special_exception:caml_is_special_exception, @@ -7713,7 +8179,6 @@ caml_runtime_variant:caml_runtime_variant, caml_runtime_parameters:caml_runtime_parameters, caml_install_signal_handler:caml_install_signal_handler, - unix_inet_addr_of_string:unix_inet_addr_of_string, caml_runtime_warnings:caml_runtime_warnings, caml_ml_enable_runtime_warnings:caml_ml_enable_runtime_warnings, caml_ml_runtime_warnings_enabled:caml_ml_runtime_warnings_enabled, @@ -7731,6 +8196,8 @@ caml_register_global:caml_register_global, caml_get_global_data:caml_get_global_data, caml_is_printable:caml_is_printable, + caml_maybe_print_stats:caml_maybe_print_stats, + caml_parser_trace:caml_parser_trace, caml_parse_engine:caml_parse_engine, caml_set_parser_trace:caml_set_parser_trace, caml_update_dummy:caml_update_dummy, @@ -7742,6 +8209,8 @@ caml_obj_dup:caml_obj_dup, caml_obj_truncate:caml_obj_truncate, caml_obj_make_forward:caml_obj_make_forward, + caml_obj_compare_and_swap:caml_obj_compare_and_swap, + caml_obj_is_shared:caml_obj_is_shared, caml_lazy_make_forward:caml_lazy_make_forward, caml_get_public_method:caml_get_public_method, caml_oo_last_id:caml_oo_last_id, @@ -7751,6 +8220,11 @@ caml_obj_set_raw_field:caml_obj_set_raw_field, caml_obj_reachable_words:caml_obj_reachable_words, caml_obj_add_offset:caml_obj_add_offset, + caml_obj_update_tag:caml_obj_update_tag, + caml_lazy_update_to_forcing:caml_lazy_update_to_forcing, + caml_lazy_update_to_forward:caml_lazy_update_to_forward, + caml_lazy_reset_to_lazy:caml_lazy_reset_to_lazy, + caml_lazy_read_result:caml_lazy_read_result, initialize_nat:initialize_nat, MlNat:MlNat, caml_hash_nat:caml_hash_nat, @@ -7817,8 +8291,8 @@ MlBytes:MlBytes, caml_convert_string_to_bytes:caml_convert_string_to_bytes, caml_convert_bytes_to_array:caml_convert_bytes_to_array, - caml_array_of_bytes:caml_array_of_bytes, - caml_array_of_string:caml_array_of_string, + caml_uint8_array_of_bytes:caml_uint8_array_of_bytes, + caml_uint8_array_of_string:caml_uint8_array_of_string, caml_create_string:caml_create_string, caml_create_bytes:caml_create_bytes, caml_string_of_array:caml_string_of_array, @@ -7834,7 +8308,6 @@ caml_string_greaterthan:caml_string_greaterthan, caml_bytes_greaterthan:caml_bytes_greaterthan, caml_fill_bytes:caml_fill_bytes, - caml_fill_string:caml_fill_string, caml_blit_bytes:caml_blit_bytes, caml_blit_string:caml_blit_string, caml_ml_bytes_length:caml_ml_bytes_length, @@ -7860,8 +8333,14 @@ caml_js_from_string:caml_js_from_string, caml_to_js_string:caml_to_js_string, caml_js_to_string:caml_js_to_string, + caml_array_of_string:caml_array_of_string, + caml_array_of_bytes:caml_array_of_bytes, caml_md5_chan:caml_md5_chan, caml_md5_string:caml_md5_string, + caml_MD5Transform:caml_MD5Transform, + caml_MD5Init:caml_MD5Init, + caml_MD5Update:caml_MD5Update, + caml_MD5Final:caml_MD5Final, caml_md5_bytes:caml_md5_bytes, caml_marshal_constants:caml_marshal_constants, MlStringReader:MlStringReader, @@ -7899,8 +8378,6 @@ caml_js_typeof:caml_js_typeof, caml_trampoline:caml_trampoline, caml_trampoline_return:caml_trampoline_return, - js_print_stdout:js_print_stdout, - js_print_stderr:js_print_stderr, caml_is_js:caml_is_js, caml_wrap_exception:caml_wrap_exception, caml_exn_with_js_backtrace:caml_exn_with_js_backtrace, @@ -7931,8 +8408,8 @@ caml_js_expr:caml_js_expr, caml_pure_js_expr:caml_pure_js_expr, caml_js_object:caml_js_object, + caml_sys_fds:caml_sys_fds, caml_sys_close:caml_sys_close, - caml_std_output:caml_std_output, caml_sys_open:caml_sys_open, caml_ml_set_channel_name:caml_ml_set_channel_name, caml_ml_channels:caml_ml_channels, @@ -7940,21 +8417,23 @@ caml_ml_open_descriptor_out:caml_ml_open_descriptor_out, caml_ml_open_descriptor_in:caml_ml_open_descriptor_in, caml_channel_descriptor:caml_channel_descriptor, - win_filedescr_of_channel:win_filedescr_of_channel, caml_ml_set_binary_mode:caml_ml_set_binary_mode, caml_ml_close_channel:caml_ml_close_channel, caml_ml_channel_size:caml_ml_channel_size, caml_ml_channel_size_64:caml_ml_channel_size_64, caml_ml_set_channel_output:caml_ml_set_channel_output, caml_ml_set_channel_refill:caml_ml_set_channel_refill, - caml_ml_refill_input:caml_ml_refill_input, - caml_ml_may_refill_input:caml_ml_may_refill_input, + caml_refill:caml_refill, caml_ml_input:caml_ml_input, + caml_ml_input_block:caml_ml_input_block, caml_input_value:caml_input_value, + caml_input_value_to_outside_heap:caml_input_value_to_outside_heap, caml_ml_input_char:caml_ml_input_char, caml_ml_input_int:caml_ml_input_int, + caml_seek_in:caml_seek_in, caml_ml_seek_in:caml_ml_seek_in, caml_ml_seek_in_64:caml_ml_seek_in_64, + caml_pos_in:caml_pos_in, caml_ml_pos_in:caml_ml_pos_in, caml_ml_pos_in_64:caml_ml_pos_in_64, caml_ml_input_scan_line:caml_ml_input_scan_line, @@ -7963,8 +8442,10 @@ caml_ml_output:caml_ml_output, caml_ml_output_char:caml_ml_output_char, caml_output_value:caml_output_value, + caml_seek_out:caml_seek_out, caml_ml_seek_out:caml_ml_seek_out, caml_ml_seek_out_64:caml_ml_seek_out_64, + caml_pos_out:caml_pos_out, caml_ml_pos_out:caml_ml_pos_out, caml_ml_pos_out_64:caml_ml_pos_out_64, caml_ml_output_int:caml_ml_output_int, @@ -8055,6 +8536,7 @@ caml_hash_mix_bytes:caml_hash_mix_bytes, caml_hash_mix_string:caml_hash_mix_string, caml_hash:caml_hash, + caml_string_hash:caml_string_hash, caml_gr_state:caml_gr_state, caml_gr_state_get:caml_gr_state_get, caml_gr_state_set:caml_gr_state_set, @@ -8128,9 +8610,12 @@ caml_get_major_credit:caml_get_major_credit, fs_node_supported:fs_node_supported, MlNodeDevice:MlNodeDevice, - MlNodeFile:MlNodeFile, + MlNodeFd:MlNodeFd, + caml_sys_open_for_node:caml_sys_open_for_node, MlFakeDevice:MlFakeDevice, MlFakeFile:MlFakeFile, + MlFakeFd_out:MlFakeFd_out, + MlFakeFd:MlFakeFd, caml_trailing_slash:caml_trailing_slash, caml_current_dir:caml_current_dir, caml_get_root:caml_get_root, @@ -8302,7 +8787,7 @@ (globalThis)); -//# 1 "../../.js/stdlib/stdlib.cma.js" +//# 1 "../../.js/default/stdlib/stdlib.cma.js" (function(globalThis) {"use strict"; var @@ -8341,6 +8826,10 @@ caml_compare=runtime.caml_compare, caml_create_bytes=runtime.caml_create_bytes, caml_div=runtime.caml_div, + caml_ephe_blit_key=runtime.caml_ephe_blit_key, + caml_ephe_check_key=runtime.caml_ephe_check_key, + caml_ephe_get_key=runtime.caml_ephe_get_key, + caml_ephe_get_key_copy=runtime.caml_ephe_get_key_copy, caml_ephe_set_key=runtime.caml_ephe_set_key, caml_ephe_unset_key=runtime.caml_ephe_unset_key, caml_equal=runtime.caml_equal, @@ -8460,8 +8949,8 @@ cst_Stdlib_Pervasives_Exit= caml_string_of_jsbytes("Stdlib.Pervasives.Exit"), cst_Stdlib_Sys_Break=caml_string_of_jsbytes("Stdlib.Sys.Break"), - ocaml_version=caml_string_of_jsbytes("4.14.0"), - ocaml_release=[0,4,14,0,0], + ocaml_version=caml_string_of_jsbytes("4.14.1"), + ocaml_release=[0,4,14,1,0], cst_Obj_Ephemeron_blit_key= caml_string_of_jsbytes("Obj.Ephemeron.blit_key"), cst_Obj_Ephemeron_check_key= @@ -9077,74 +9566,74 @@ _e_=runtime.caml_int64_create_lo_mi_hi(0,0,16), _f_=runtime.caml_int64_create_lo_mi_hi(0,0,15536), _n_=[0,caml_string_of_jsbytes("obj.ml"),95,4], - _r_=[0,caml_string_of_jsbytes("seq.ml"),596,4], - _x_=[0,caml_string_of_jsbytes("uchar.ml"),88,18], - _w_=[0,caml_string_of_jsbytes("uchar.ml"),91,7], - _v_=[0,caml_string_of_jsbytes("uchar.ml"),80,18], - _u_=[0,caml_string_of_jsbytes("uchar.ml"),85,7], - _A_=[0,0,0], - _G_=[0,caml_string_of_jsbytes("bytes.ml"),808,20], - _F_=[0,caml_string_of_jsbytes("bytes.ml"),819,9], - _E_=[0,caml_string_of_jsbytes("bytes.ml"),754,20], - _D_=[0,caml_string_of_jsbytes("bytes.ml"),765,9], - _C_=[0,caml_string_of_jsbytes("bytes.ml"),642,20], - _B_=[0,caml_string_of_jsbytes("bytes.ml"),667,9], - _H_=[0,caml_string_of_jsbytes("array.ml"),322,4], - _J_=[0,caml_string_of_jsbytes("float.ml"),395,6], - _I_=[0,caml_string_of_jsbytes("float.ml"),222,14], - _U_=runtime.caml_int64_create_lo_mi_hi(16777215,16777215,65535), - _T_=runtime.caml_int64_create_lo_mi_hi(0,0,0), - _S_=runtime.caml_int64_create_lo_mi_hi(1,0,0), - _R_=runtime.caml_int64_create_lo_mi_hi(1,0,0), - _V_=[0,0,0,0], - _W_=[0,0,0], - _X_=[0,caml_string_of_jsbytes("set.ml"),570,18], - _Y_=[0,0,0,0], - _Z_=[0,caml_string_of_jsbytes("map.ml"),400,10], - ___=[0,0,0], - _$_=[0,caml_string_of_jsbytes("stream.ml"),53,12], - _aa_=[0,0], - _ab_=[0,caml_string_of_jsbytes("stream.ml"),82,12], - _af_=[0,caml_string_of_jsbytes("buffer.ml"),231,9], - _ae_=[0,caml_string_of_jsbytes("buffer.ml"),212,2], - _ad_=[0,caml_string_of_jsbytes("buffer.ml"),93,2], - _ac_=[0,caml_string_of_jsbytes("buffer.ml"),94,2], - _ah_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),850,23], - _as_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),814,21], - _ak_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),815,21], - _at_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),818,21], - _al_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),819,21], - _au_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),822,19], - _am_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),823,19], - _av_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),826,22], - _an_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),827,22], - _aw_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),831,30], - _ao_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),832,30], - _aq_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),836,26], - _ai_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),837,26], - _ar_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),846,28], - _aj_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),847,28], - _ap_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),851,23], - _ay_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),1558,4], - _az_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),1626,39], - _aA_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),1649,31], - _aB_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),1650,31], - _aC_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),1830,8], - _a6_= + _p_=[0,caml_string_of_jsbytes("seq.ml"),596,4], + _v_=[0,caml_string_of_jsbytes("uchar.ml"),88,18], + _u_=[0,caml_string_of_jsbytes("uchar.ml"),91,7], + _t_=[0,caml_string_of_jsbytes("uchar.ml"),80,18], + _s_=[0,caml_string_of_jsbytes("uchar.ml"),85,7], + _y_=[0,0,0], + _E_=[0,caml_string_of_jsbytes("bytes.ml"),808,20], + _D_=[0,caml_string_of_jsbytes("bytes.ml"),819,9], + _C_=[0,caml_string_of_jsbytes("bytes.ml"),754,20], + _B_=[0,caml_string_of_jsbytes("bytes.ml"),765,9], + _A_=[0,caml_string_of_jsbytes("bytes.ml"),642,20], + _z_=[0,caml_string_of_jsbytes("bytes.ml"),667,9], + _F_=[0,caml_string_of_jsbytes("array.ml"),322,4], + _H_=[0,caml_string_of_jsbytes("float.ml"),395,6], + _G_=[0,caml_string_of_jsbytes("float.ml"),222,14], + _S_=runtime.caml_int64_create_lo_mi_hi(16777215,16777215,65535), + _R_=runtime.caml_int64_create_lo_mi_hi(0,0,0), + _Q_=runtime.caml_int64_create_lo_mi_hi(1,0,0), + _P_=runtime.caml_int64_create_lo_mi_hi(1,0,0), + _T_=[0,0,0,0], + _U_=[0,0,0], + _V_=[0,caml_string_of_jsbytes("set.ml"),570,18], + _W_=[0,0,0,0], + _X_=[0,caml_string_of_jsbytes("map.ml"),400,10], + _Y_=[0,0,0], + _Z_=[0,caml_string_of_jsbytes("stream.ml"),53,12], + ___=[0,0], + _$_=[0,caml_string_of_jsbytes("stream.ml"),82,12], + _ad_=[0,caml_string_of_jsbytes("buffer.ml"),231,9], + _ac_=[0,caml_string_of_jsbytes("buffer.ml"),212,2], + _ab_=[0,caml_string_of_jsbytes("buffer.ml"),93,2], + _aa_=[0,caml_string_of_jsbytes("buffer.ml"),94,2], + _af_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),850,23], + _aq_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),814,21], + _ai_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),815,21], + _ar_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),818,21], + _aj_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),819,21], + _as_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),822,19], + _ak_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),823,19], + _at_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),826,22], + _al_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),827,22], + _au_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),831,30], + _am_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),832,30], + _ao_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),836,26], + _ag_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),837,26], + _ap_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),846,28], + _ah_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),847,28], + _an_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),851,23], + _aw_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),1558,4], + _ax_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),1626,39], + _ay_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),1649,31], + _az_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),1650,31], + _aA_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),1830,8], + _a4_= [0, [11, caml_string_of_jsbytes("bad input: format type mismatch between "), [3,0,[11,caml_string_of_jsbytes(" and "),[3,0,0]]]], caml_string_of_jsbytes ("bad input: format type mismatch between %S and %S")], - _a5_= + _a3_= [0, [11, caml_string_of_jsbytes("bad input: format type mismatch between "), [3,0,[11,caml_string_of_jsbytes(" and "),[3,0,0]]]], caml_string_of_jsbytes ("bad input: format type mismatch between %S and %S")], - _aI_= + _aG_= [0, [11, caml_string_of_jsbytes("invalid format "), @@ -9155,13 +9644,13 @@ [4,0,0,0,[11,caml_string_of_jsbytes(", duplicate flag "),[1,0]]]]]], caml_string_of_jsbytes ("invalid format %S: at character number %d, duplicate flag %C")], - _aJ_=[0,1,0], - _aK_=[0,0], - _aL_=[1,0], + _aH_=[0,1,0], + _aI_=[0,0], + _aJ_=[1,0], + _aK_=[1,1], _aM_=[1,1], - _aO_=[1,1], - _aN_=[1,1], - _aS_= + _aL_=[1,1], + _aQ_= [0, [11, caml_string_of_jsbytes("invalid format "), @@ -9185,7 +9674,7 @@ 0]]]]]]]]], caml_string_of_jsbytes ("invalid format %S: at character number %d, flag %C is only allowed after the '%%', before padding and precision")], - _aP_= + _aN_= [0, [11, caml_string_of_jsbytes("invalid format "), @@ -9202,13 +9691,13 @@ [12,37,[0,[12,34,0]]]]]]]], caml_string_of_jsbytes ('invalid format %S: at character number %d, invalid conversion "%%%c"')], - _aQ_=[0,0], - _aR_=[0,0], - _aT_=[0,[12,64,0]], - _aU_=[0,caml_string_of_jsbytes("@ "),1,0], - _aV_=[0,caml_string_of_jsbytes("@,"),0,0], - _aW_=[2,60], - _aX_= + _aO_=[0,0], + _aP_=[0,0], + _aR_=[0,[12,64,0]], + _aS_=[0,caml_string_of_jsbytes("@ "),1,0], + _aT_=[0,caml_string_of_jsbytes("@,"),0,0], + _aU_=[2,60], + _aV_= [0, [11, caml_string_of_jsbytes("invalid format "), @@ -9230,7 +9719,7 @@ [4,0,0,0,[12,46,0]]]]]]]]]], caml_string_of_jsbytes ("invalid format %S: '%%' alone is not accepted in character sets, use %%%% instead at position %d.")], - _aY_= + _aW_= [0, [11, caml_string_of_jsbytes("invalid format "), @@ -9247,8 +9736,8 @@ [4,0,0,0,0]]]]]], caml_string_of_jsbytes ("invalid format %S: integer %d is greater than the limit %d")], - _aZ_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),2837,11], - _a0_= + _aX_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),2837,11], + _aY_= [0, [11, caml_string_of_jsbytes("invalid format "), @@ -9262,10 +9751,10 @@ [11,caml_string_of_jsbytes('" at character number '),[4,0,0,0,0]]]]]]], caml_string_of_jsbytes ('invalid format %S: unclosed sub-format, expected "%%%c" at character number %d')], - _a1_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),2899,34], - _a2_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),2935,28], - _a3_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),2957,11], - _a4_= + _aZ_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),2899,34], + _a0_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),2935,28], + _a1_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),2957,11], + _a2_= [0, [11, caml_string_of_jsbytes("invalid format "), @@ -9286,7 +9775,7 @@ [0,[11,caml_string_of_jsbytes("' in sub-format "),[3,0,0]]]]]]]]]], caml_string_of_jsbytes ("invalid format %S: at character number %d, %s is incompatible with '%c' in sub-format %S")], - _aH_= + _aF_= [0, [11, caml_string_of_jsbytes("invalid format "), @@ -9303,7 +9792,7 @@ [2,0,[11,caml_string_of_jsbytes(" expected, read "),[1,0]]]]]]]], caml_string_of_jsbytes ("invalid format %S: at character number %d, %s expected, read %C")], - _aG_= + _aE_= [0, [11, caml_string_of_jsbytes("invalid format "), @@ -9320,7 +9809,7 @@ [0,[11,caml_string_of_jsbytes("' without "),[2,0,0]]]]]]]], caml_string_of_jsbytes ("invalid format %S: at character number %d, '%c' without %s")], - _aF_= + _aD_= [0, [11, caml_string_of_jsbytes("invalid format "), @@ -9330,21 +9819,21 @@ caml_string_of_jsbytes(": at character number "), [4,0,0,0,[11,caml_string_of_jsbytes(", "),[2,0,0]]]]]], caml_string_of_jsbytes("invalid format %S: at character number %d, %s")], - _aE_= + _aC_= [0, [11,caml_string_of_jsbytes("invalid box description "),[3,0,0]], caml_string_of_jsbytes("invalid box description %S")], - _aD_=[0,0,4], - _ax_=[0,103], - _ag_=[0,0,0], - _bq_=[0,[2,0,[0,0]],caml_string_of_jsbytes("%s%c")], - _bk_=[0,[2,0,0],caml_string_of_jsbytes("%s")], - _bl_=[0,[2,0,0],caml_string_of_jsbytes("%s")], + _aB_=[0,0,4], + _av_=[0,103], + _ae_=[0,0,0], + _bo_=[0,[2,0,[0,0]],caml_string_of_jsbytes("%s%c")], _bi_=[0,[2,0,0],caml_string_of_jsbytes("%s")], _bj_=[0,[2,0,0],caml_string_of_jsbytes("%s")], _bg_=[0,[2,0,0],caml_string_of_jsbytes("%s")], _bh_=[0,[2,0,0],caml_string_of_jsbytes("%s")], - _ba_= + _be_=[0,[2,0,0],caml_string_of_jsbytes("%s")], + _bf_=[0,[2,0,0],caml_string_of_jsbytes("%s")], + _a__= [0, [2, 0, @@ -9352,7 +9841,7 @@ caml_string_of_jsbytes(": unknown option '"), [2,0,[11,caml_string_of_jsbytes("'.\n"),0]]]], caml_string_of_jsbytes("%s: unknown option '%s'.\n")], - _bd_= + _bb_= [0, [2, 0, @@ -9369,7 +9858,7 @@ [2,0,[11,caml_string_of_jsbytes(".\n"),0]]]]]]]], caml_string_of_jsbytes ("%s: wrong argument '%s'; option '%s' expects %s.\n")], - _be_= + _bc_= [0, [2, 0, @@ -9377,7 +9866,7 @@ caml_string_of_jsbytes(": option '"), [2,0,[11,caml_string_of_jsbytes("' needs an argument.\n"),0]]]], caml_string_of_jsbytes("%s: option '%s' needs an argument.\n")], - _bf_= + _bd_= [0, [2, 0, @@ -9385,28 +9874,28 @@ caml_string_of_jsbytes(": "), [2,0,[11,caml_string_of_jsbytes(".\n"),0]]]], caml_string_of_jsbytes("%s: %s.\n")], - _bb_=[0,caml_string_of_jsbytes("-help")], - _bc_=[0,caml_string_of_jsbytes("--help")], - _a$_=[0,[2,0,0],caml_string_of_jsbytes("%s")], - _a__=[0,[2,0,[12,10,0]],caml_string_of_jsbytes("%s\n")], - _a9_=[0,caml_string_of_jsbytes("-help")], - _a7_= + _a$_=[0,caml_string_of_jsbytes("-help")], + _ba_=[0,caml_string_of_jsbytes("--help")], + _a9_=[0,[2,0,0],caml_string_of_jsbytes("%s")], + _a8_=[0,[2,0,[12,10,0]],caml_string_of_jsbytes("%s\n")], + _a7_=[0,caml_string_of_jsbytes("-help")], + _a5_= [0, [11,caml_string_of_jsbytes(" "),[2,0,[12,32,[2,0,[12,10,0]]]]], caml_string_of_jsbytes(" %s %s\n")], - _a8_= + _a6_= [0, [11,caml_string_of_jsbytes(" "),[2,0,[12,32,[2,0,[2,0,[12,10,0]]]]]], caml_string_of_jsbytes(" %s %s%s\n")], - _bv_= + _bt_= [0, [11,caml_string_of_jsbytes(", "),[2,0,[2,0,0]]], caml_string_of_jsbytes(", %s%s")], - _bH_= + _bF_= [0, [11,caml_string_of_jsbytes("Fatal error: exception "),[2,0,[12,10,0]]], caml_string_of_jsbytes("Fatal error: exception %s\n")], - _bI_= + _bG_= [0, [11, caml_string_of_jsbytes @@ -9414,13 +9903,13 @@ [2,0,[12,10,0]]], caml_string_of_jsbytes ("Fatal error in uncaught exception handler: exception %s\n")], - _bG_= + _bE_= [0, [11,caml_string_of_jsbytes("Fatal error: exception "),[2,0,[12,10,0]]], caml_string_of_jsbytes("Fatal error: exception %s\n")], - _bE_=[0,[2,0,[12,10,0]],caml_string_of_jsbytes("%s\n")], _bC_=[0,[2,0,[12,10,0]],caml_string_of_jsbytes("%s\n")], - _bD_= + _bA_=[0,[2,0,[12,10,0]],caml_string_of_jsbytes("%s\n")], + _bB_= [0, [11, caml_string_of_jsbytes @@ -9428,7 +9917,7 @@ 0], caml_string_of_jsbytes ("(Program not linked with -g, cannot print stack backtrace)\n")], - _bA_= + _by_= [0, [2, 0, @@ -9449,23 +9938,23 @@ [4,0,0,0,[11,caml_string_of_jsbytes(", characters "),partial]]]]]]]]]], caml_string_of_jsbytes ('%s %s in file "%s"%s, line %d, characters %d-%d')], - _bB_= + _bz_= [0, [2,0,[11,caml_string_of_jsbytes(" unknown location"),0]], caml_string_of_jsbytes("%s unknown location")], - _bz_= + _bx_= [0, [11,caml_string_of_jsbytes("Uncaught exception: "),[2,0,[12,10,0]]], caml_string_of_jsbytes("Uncaught exception: %s\n")], - _by_= + _bw_= [0, [11,caml_string_of_jsbytes("Uncaught exception: "),[2,0,[12,10,0]]], caml_string_of_jsbytes("Uncaught exception: %s\n")], - _bw_=[0,[12,40,[2,0,[2,0,[12,41,0]]]],caml_string_of_jsbytes("(%s%s)")], - _bx_=[0,[12,40,[2,0,[12,41,0]]],caml_string_of_jsbytes("(%s)")], - _bu_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")], - _bt_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _bF_= + _bu_=[0,[12,40,[2,0,[2,0,[12,41,0]]]],caml_string_of_jsbytes("(%s%s)")], + _bv_=[0,[12,40,[2,0,[12,41,0]]],caml_string_of_jsbytes("(%s)")], + _bs_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")], + _br_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _bD_= [0, caml_string_of_jsbytes(""), caml_string_of_jsbytes @@ -9476,92 +9965,92 @@ ("(Cannot print locations:\n bytecode executable program file has wrong magic number)"), caml_string_of_jsbytes ("(Cannot print locations:\n bytecode executable program file cannot be opened;\n -- too many open files. Try running with OCAMLRUNPARAM=b=2)")], - _bP_= + _bN_= [0, [11, caml_string_of_jsbytes("minor_collections: "), [4,0,0,0,[12,10,0]]], caml_string_of_jsbytes("minor_collections: %d\n")], - _bQ_= + _bO_= [0, [11, caml_string_of_jsbytes("major_collections: "), [4,0,0,0,[12,10,0]]], caml_string_of_jsbytes("major_collections: %d\n")], - _bR_= + _bP_= [0, [11, caml_string_of_jsbytes("compactions: "), [4,0,0,0,[12,10,0]]], caml_string_of_jsbytes("compactions: %d\n")], - _bS_= + _bQ_= [0, [11, caml_string_of_jsbytes("forced_major_collections: "), [4,0,0,0,[12,10,0]]], caml_string_of_jsbytes("forced_major_collections: %d\n")], - _bT_=[0,[12,10,0],caml_string_of_jsbytes("\n")], - _bU_=[0,[8,[0,0,0],0,[0,0],0],caml_string_of_jsbytes("%.0f")], - _bV_= + _bR_=[0,[12,10,0],caml_string_of_jsbytes("\n")], + _bS_=[0,[8,[0,0,0],0,[0,0],0],caml_string_of_jsbytes("%.0f")], + _bT_= [0, [11, caml_string_of_jsbytes("minor_words: "), [8,[0,0,0],[1,1],[0,0],[12,10,0]]], caml_string_of_jsbytes("minor_words: %*.0f\n")], - _bW_= + _bU_= [0, [11, caml_string_of_jsbytes("promoted_words: "), [8,[0,0,0],[1,1],[0,0],[12,10,0]]], caml_string_of_jsbytes("promoted_words: %*.0f\n")], - _bX_= + _bV_= [0, [11, caml_string_of_jsbytes("major_words: "), [8,[0,0,0],[1,1],[0,0],[12,10,0]]], caml_string_of_jsbytes("major_words: %*.0f\n")], - _bY_=[0,[12,10,0],caml_string_of_jsbytes("\n")], - _bZ_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")], - _b0_= + _bW_=[0,[12,10,0],caml_string_of_jsbytes("\n")], + _bX_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")], + _bY_= [0, [11,caml_string_of_jsbytes("top_heap_words: "),[4,0,[1,1],0,[12,10,0]]], caml_string_of_jsbytes("top_heap_words: %*d\n")], - _b1_= + _bZ_= [0, [11,caml_string_of_jsbytes("heap_words: "),[4,0,[1,1],0,[12,10,0]]], caml_string_of_jsbytes("heap_words: %*d\n")], - _b2_= + _b0_= [0, [11,caml_string_of_jsbytes("live_words: "),[4,0,[1,1],0,[12,10,0]]], caml_string_of_jsbytes("live_words: %*d\n")], - _b3_= + _b1_= [0, [11,caml_string_of_jsbytes("free_words: "),[4,0,[1,1],0,[12,10,0]]], caml_string_of_jsbytes("free_words: %*d\n")], - _b4_= + _b2_= [0, [11,caml_string_of_jsbytes("largest_free: "),[4,0,[1,1],0,[12,10,0]]], caml_string_of_jsbytes("largest_free: %*d\n")], - _b5_= + _b3_= [0, [11,caml_string_of_jsbytes("fragments: "),[4,0,[1,1],0,[12,10,0]]], caml_string_of_jsbytes("fragments: %*d\n")], - _b6_=[0,[12,10,0],caml_string_of_jsbytes("\n")], - _b7_= + _b4_=[0,[12,10,0],caml_string_of_jsbytes("\n")], + _b5_= [0, [11,caml_string_of_jsbytes("live_blocks: "),[4,0,0,0,[12,10,0]]], caml_string_of_jsbytes("live_blocks: %d\n")], - _b8_= + _b6_= [0, [11,caml_string_of_jsbytes("free_blocks: "),[4,0,0,0,[12,10,0]]], caml_string_of_jsbytes("free_blocks: %d\n")], - _b9_= + _b7_= [0, [11,caml_string_of_jsbytes("heap_chunks: "),[4,0,0,0,[12,10,0]]], caml_string_of_jsbytes("heap_chunks: %d\n")], - _cf_=runtime.caml_int64_create_lo_mi_hi(1,0,0), - _cg_=runtime.caml_int64_create_lo_mi_hi(0,0,0), - _ch_= + _cd_=runtime.caml_int64_create_lo_mi_hi(1,0,0), + _ce_=runtime.caml_int64_create_lo_mi_hi(0,0,0), + _cf_= [0, 987910699, 495797812, @@ -9618,43 +10107,43 @@ 652377910, 409934019, 801085050], - _ck_=[0,0], - _cq_=[3,0,3], - _cp_=[1,caml_string_of_jsbytes("max_indent < 2")], - _cn_=[1,caml_string_of_jsbytes("margin <= max_indent")], - _co_=[0,0], - _cm_=[0,caml_string_of_jsbytes("")], - _cl_=[0,caml_string_of_jsbytes(""),0,caml_string_of_jsbytes("")], - _cG_=[0,91], - _cF_=[0,123], - _cH_=[0,caml_string_of_jsbytes("scanf.ml"),1453,13], - _cI_=[0,[3,0,[10,0]],caml_string_of_jsbytes("%S%!")], - _cE_=[0,37,caml_string_of_jsbytes("")], - _cD_= + _ci_=[0,0], + _co_=[3,0,3], + _cn_=[1,caml_string_of_jsbytes("max_indent < 2")], + _cl_=[1,caml_string_of_jsbytes("margin <= max_indent")], + _cm_=[0,0], + _ck_=[0,caml_string_of_jsbytes("")], + _cj_=[0,caml_string_of_jsbytes(""),0,caml_string_of_jsbytes("")], + _cE_=[0,91], + _cD_=[0,123], + _cF_=[0,caml_string_of_jsbytes("scanf.ml"),1453,13], + _cG_=[0,[3,0,[10,0]],caml_string_of_jsbytes("%S%!")], + _cC_=[0,37,caml_string_of_jsbytes("")], + _cB_= [0, [11, caml_string_of_jsbytes("scanf: bad input at char number "), [4,3,0,0,[11,caml_string_of_jsbytes(": "),[2,0,0]]]], caml_string_of_jsbytes("scanf: bad input at char number %i: %s")], - _cC_= + _cA_= [0, [11, caml_string_of_jsbytes("the character "), [1,[11,caml_string_of_jsbytes(" cannot start a boolean"),0]]], caml_string_of_jsbytes("the character %C cannot start a boolean")], - _cB_= + _cz_= [0, [11, caml_string_of_jsbytes("bad character hexadecimal encoding \\"), [0,[0,0]]], caml_string_of_jsbytes("bad character hexadecimal encoding \\%c%c")], - _cA_= + _cy_= [0, [11, caml_string_of_jsbytes("bad character decimal encoding \\"), [0,[0,[0,0]]]], caml_string_of_jsbytes("bad character decimal encoding \\%c%c%c")], - _cz_= + _cx_= [0, [11, caml_string_of_jsbytes("character "), @@ -9663,24 +10152,24 @@ caml_string_of_jsbytes(" is not a valid "), [2,0,[11,caml_string_of_jsbytes(" digit"),0]]]]], caml_string_of_jsbytes("character %C is not a valid %s digit")], - _cy_= + _cw_= [0, [11, caml_string_of_jsbytes("character "), [1,[11,caml_string_of_jsbytes(" is not a decimal digit"),0]]], caml_string_of_jsbytes("character %C is not a decimal digit")], - _cx_=[0,caml_string_of_jsbytes("scanf.ml"),555,9], - _cw_= + _cv_=[0,caml_string_of_jsbytes("scanf.ml"),555,9], + _cu_= [0, [11,caml_string_of_jsbytes("invalid boolean '"),[2,0,[12,39,0]]], caml_string_of_jsbytes("invalid boolean '%s'")], - _cv_= + _ct_= [0, [11, caml_string_of_jsbytes("looking for "), [1,[11,caml_string_of_jsbytes(", found "),[1,0]]]], caml_string_of_jsbytes("looking for %C, found %C")], - _cu_= + _cs_= [0, [11, caml_string_of_jsbytes("scanning of "), @@ -9692,7 +10181,7 @@ 0]]], caml_string_of_jsbytes ("scanning of %s failed: premature end of file occurred before end of token")], - _ct_= + _cr_= [0, [11, caml_string_of_jsbytes("scanning of "), @@ -9704,28 +10193,28 @@ 0]]], caml_string_of_jsbytes ("scanning of %s failed: the specified length was too short for token")], - _cs_= + _cq_= [0, [11,caml_string_of_jsbytes("illegal escape character "),[1,0]], caml_string_of_jsbytes("illegal escape character %C")], - _cP_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),439,17], - _cO_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),421,13], - _cN_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),418,13], - _cM_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),415,13], - _cL_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),412,13], - _cK_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),409,13], - _cJ_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),281,50], - _cQ_=[0,caml_string_of_jsbytes("camlinternalMod.ml"),72,5], - _cR_=[0,caml_string_of_jsbytes("camlinternalMod.ml"),81,2], - _cU_=[0,0], - _cT_=[0,0], + _cN_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),439,17], + _cM_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),421,13], + _cL_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),418,13], + _cK_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),415,13], + _cJ_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),412,13], + _cI_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),409,13], + _cH_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),281,50], + _cO_=[0,caml_string_of_jsbytes("camlinternalMod.ml"),72,5], + _cP_=[0,caml_string_of_jsbytes("camlinternalMod.ml"),81,2], _cS_=[0,0], - _cZ_=[0,7,0], - _cY_=[0,1,[0,3,[0,5,0]]], - _cX_=[0,[2,0,[4,6,[0,2,6],0,[2,0,0]]],caml_string_of_jsbytes("%s%06x%s")], - _cW_=[0,caml_string_of_jsbytes('"'),0], - _c0_=[254,0.,0.], - _c1_=[0,0]; + _cR_=[0,0], + _cQ_=[0,0], + _cX_=[0,7,0], + _cW_=[0,1,[0,3,[0,5,0]]], + _cV_=[0,[2,0,[4,6,[0,2,6],0,[2,0,0]]],caml_string_of_jsbytes("%s%06x%s")], + _cU_=[0,caml_string_of_jsbytes('"'),0], + _cY_=[254,0.,0.], + _cZ_=[0,0]; function erase_rel(param) {if(typeof param === "number") return 0; @@ -9899,11 +10388,11 @@ function string_of_int(n){return caml_string_of_jsbytes("" + n)} function int_of_string_opt(s) {try - {var _EE_=[0,caml_int_of_string(s)];return _EE_} - catch(_EF_) - {_EF_ = caml_wrap_exception(_EF_); - if(_EF_[1] === Failure)return 0; - throw _EF_}} + {var _Ey_=[0,caml_int_of_string(s)];return _Ey_} + catch(_Ez_) + {_Ez_ = caml_wrap_exception(_Ez_); + if(_Ez_[1] === Failure)return 0; + throw _Ez_}} function valid_float_lexem(s) {var l=caml_ml_string_length(s),i=0; for(;;) @@ -9919,11 +10408,11 @@ {return valid_float_lexem(caml_format_float(cst_12g,f))} function of_string_opt(s) {try - {var _EC_=[0,caml_float_of_string(s)];return _EC_} - catch(_ED_) - {_ED_ = caml_wrap_exception(_ED_); - if(_ED_[1] === Failure)return 0; - throw _ED_}} + {var _Ew_=[0,caml_float_of_string(s)];return _Ew_} + catch(_Ex_) + {_Ex_ = caml_wrap_exception(_Ex_); + if(_Ex_[1] === Failure)return 0; + throw _Ex_}} function append(l1,l2) {if(l1){var tl=l1[2],hd=l1[1];return [0,hd,append(tl,l2)]}return l2} var @@ -9944,10 +10433,10 @@ {var l=param$0[2],a=param$0[1]; try {caml_ml_flush(a)} - catch(_EB_) - {_EB_ = caml_wrap_exception(_EB_); - if(_EB_[1] !== Sys_error)throw _EB_; - var _EA_=_EB_} + catch(_Ev_) + {_Ev_ = caml_wrap_exception(_Ev_); + if(_Ev_[1] !== Sys_error)throw _Ev_; + var _Eu_=_Ev_} var param$0=l; continue} return 0}} @@ -9978,10 +10467,10 @@ function output_value(chan,v){return caml_output_value(chan,v,0)} function close(oc){caml_ml_flush(oc);return caml_ml_close_channel(oc)} function close_noerr(oc) - {try {caml_ml_flush(oc)}catch(_Ez_){} + {try {caml_ml_flush(oc)}catch(_Et_){} try - {var _Ex_=caml_ml_close_channel(oc);return _Ex_} - catch(_Ey_){return 0}} + {var _Er_=caml_ml_close_channel(oc);return _Er_} + catch(_Es_){return 0}} function open_gen$0(mode,perm,name) {var c=caml_ml_open_descriptor_in(caml_sys_open(name,mode,perm)); caml_ml_set_channel_name(c,name); @@ -10026,7 +10515,7 @@ {var n=runtime.caml_ml_input_scan_line(chan); if(0 === n) {if(! accu)throw End_of_file; - var _Ew_=build_result(caml_create_bytes(len),len,accu)} + var _Eq_=build_result(caml_create_bytes(len),len,accu)} else {if(! (0 < n)) {var beg=caml_create_bytes(- n | 0); @@ -10039,14 +10528,14 @@ if(accu) var len$0=(len + n | 0) - 1 | 0, - _Ew_=build_result(caml_create_bytes(len$0),len$0,[0,res,accu]); + _Eq_=build_result(caml_create_bytes(len$0),len$0,[0,res,accu]); else - var _Ew_=res} - return caml_string_of_bytes(_Ew_)}} + var _Eq_=res} + return caml_string_of_bytes(_Eq_)}} function close_noerr$0(ic) {try - {var _Eu_=caml_ml_close_channel(ic);return _Eu_} - catch(_Ev_){return 0}} + {var _Eo_=caml_ml_close_channel(ic);return _Eo_} + catch(_Ep_){return 0}} function print_char(c){return caml_ml_output_char(stdout,c)} function print_string(s){return output_string(stdout,s)} function print_bytes(s){return output_bytes(stdout,s)} @@ -10077,14 +10566,14 @@ function read_float(param){return caml_float_of_string(read_line(0))} function read_float_opt(param){return of_string_opt(read_line(0))} function string_of_format(param){var str=param[2];return str} - function symbol(param,_Es_) + function symbol(param,_Em_) {var - str2=_Es_[2], - fmt2=_Es_[1], + str2=_Em_[2], + fmt2=_Em_[1], str1=param[2], fmt1=param[1], - _Et_=cat(str1,cat(cst$0,str2)); - return [0,concat_fmt(fmt1,fmt2),_Et_]} + _En_=cat(str1,cat(cst$0,str2)); + return [0,concat_fmt(fmt1,fmt2),_En_]} var exit_function=[0,flush_all]; function at_exit(f) {for(;;) @@ -10099,9 +10588,9 @@ return new_exit}, new_exit=new_exit$0(f_yet_to_run,old_exit), success=compare_and_set(exit_function,old_exit,new_exit), - _Er_=1 - success; - if(_Er_)continue; - return _Er_}} + _El_=1 - success; + if(_El_)continue; + return _El_}} function do_at_exit(param){return caml_call1(exit_function[1],0)} function exit(retcode) {do_at_exit(0);return runtime.caml_sys_exit(retcode)} @@ -10355,21 +10844,21 @@ return caml_call1(right,v$0)} function equal(left,right,e1,e2) {if(0 === e1[0]) - {var _Ep_=e1[1]; - if(0 === e2[0]){var v2=e2[1];return caml_call2(left,_Ep_,v2)}} + {var _Ej_=e1[1]; + if(0 === e2[0]){var v2=e2[1];return caml_call2(left,_Ej_,v2)}} else - {var _Eq_=e1[1]; - if(0 !== e2[0]){var v2$0=e2[1];return caml_call2(right,_Eq_,v2$0)}} + {var _Ek_=e1[1]; + if(0 !== e2[0]){var v2$0=e2[1];return caml_call2(right,_Ek_,v2$0)}} return 0} function compare(left,right,e1,e2) {if(0 === e1[0]) - {var _En_=e1[1]; - if(0 === e2[0]){var v2=e2[1];return caml_call2(left,_En_,v2)} + {var _Eh_=e1[1]; + if(0 === e2[0]){var v2=e2[1];return caml_call2(left,_Eh_,v2)} return -1} - var _Eo_=e1[1]; + var _Ei_=e1[1]; if(0 === e2[0])return 1; var v2$0=e2[1]; - return caml_call2(right,_Eo_,v2$0)} + return caml_call2(right,_Ei_,v2$0)} var Stdlib_Either= [0, @@ -10404,11 +10893,11 @@ int_size=32; function getenv_opt(s) {try - {var _El_=[0,caml_sys_getenv(s)];return _El_} - catch(_Em_) - {_Em_ = caml_wrap_exception(_Em_); - if(_Em_ === Not_found)return 0; - throw _Em_}} + {var _Ef_=[0,caml_sys_getenv(s)];return _Ef_} + catch(_Eg_) + {_Eg_ = caml_wrap_exception(_Eg_); + if(_Eg_ === Not_found)return 0; + throw _Eg_}} var interactive=[0,0]; function set_signal(sig_num,sig_beh){return 0} var @@ -10443,7 +10932,7 @@ sigxfsz=-28; function catch_break(on){return on?0:0} var development_version=0; - function Make(_Ek_,_Ej_){return [0,1]} + function Make(_Ee_,_Ed_){return [0,1]} var Immediate64=[0,Make], Stdlib_Sys= @@ -10549,19 +11038,19 @@ extension_id=Extension_constructor[3], max_ephe_length=max_array_length - 2 | 0; function create(l) - {var _Eh_=0 <= l?1:0,_Ei_=_Eh_?l <= max_ephe_length?1:0:_Eh_; - if(1 - _Ei_)invalid_arg(cst_Obj_Ephemeron_create); + {var _Eb_=0 <= l?1:0,_Ec_=_Eb_?l <= max_ephe_length?1:0:_Eb_; + if(1 - _Ec_)invalid_arg(cst_Obj_Ephemeron_create); return runtime.caml_ephe_create(l)} function length(x){return x.length - 1 - 2 | 0} function raise_if_invalid_offset(e,o,msg) - {var _Ee_=0 <= o?1:0,_Ef_=_Ee_?o < length(e)?1:0:_Ee_,_Eg_=1 - _Ef_; - return _Eg_?invalid_arg(msg):_Eg_} + {var _D__=0 <= o?1:0,_D$_=_D__?o < length(e)?1:0:_D__,_Ea_=1 - _D$_; + return _Ea_?invalid_arg(msg):_Ea_} function get_key(e,o) {raise_if_invalid_offset(e,o,cst_Obj_Ephemeron_get_key); - return runtime.caml_ephe_get_key(e,o)} + return caml_ephe_get_key(e,o)} function get_key_copy(e,o) {raise_if_invalid_offset(e,o,cst_Obj_Ephemeron_get_key_copy); - return runtime.caml_ephe_get_key_copy(e,o)} + return caml_ephe_get_key_copy(e,o)} function set_key(e,o,x) {raise_if_invalid_offset(e,o,cst_Obj_Ephemeron_set_key); return caml_ephe_set_key(e,o,x)} @@ -10570,7 +11059,7 @@ return caml_ephe_unset_key(e,o)} function check_key(e,o) {raise_if_invalid_offset(e,o,cst_Obj_Ephemeron_check_key); - return runtime.caml_ephe_check_key(e,o)} + return caml_ephe_check_key(e,o)} function blit_key(e1,o1,e2,o2,l) {if (0 @@ -10590,15 +11079,11 @@ && ! ((length(e2) - l | 0) < o2)) - {var - _Ec_=0 !== l?1:0, - _Ed_=_Ec_?runtime.caml_ephe_blit_key(e1,o1,e2,o2,l):_Ec_; - return _Ed_} + {var _D8_=0 !== l?1:0,_D9_=_D8_?caml_ephe_blit_key(e1,o1,e2,o2,l):_D8_; + return _D9_} return invalid_arg(cst_Obj_Ephemeron_blit_key)} var - _o_=runtime.caml_ephe_blit_data, - _p_=runtime.caml_ephe_check_data, - _q_= + _o_= [0, create, length, @@ -10611,9 +11096,9 @@ runtime.caml_ephe_get_data, runtime.caml_ephe_get_data_copy, runtime.caml_ephe_set_data, - function(_Eb_){return runtime.caml_ephe_unset_data(_Eb_)}, - _p_, - _o_, + runtime.caml_ephe_unset_data, + runtime.caml_ephe_check_data, + runtime.caml_ephe_blit_data, max_ephe_length], Stdlib_Obj= [0, @@ -10642,7 +11127,7 @@ extension_constructor, extension_name, extension_id, - _q_]; + _o_]; caml_register_global(779,Stdlib_Obj,"Stdlib__Obj"); var Undefined=[248,cst_CamlinternalLazy_Undefined,caml_fresh_oo_id(0)]; function raise_undefined(param){throw Undefined} @@ -10679,23 +11164,23 @@ function is_val(l){return caml_obj_tag(l) !== 246?1:0} function map$0(f,x) {return [246, - function(_D__) + function(_D5_) {var - _D$_=caml_obj_tag(x), - _Ea_=250 === _D$_?x[1]:246 === _D$_?force_lazy_block(x):x; - return caml_call1(f,_Ea_)}]} + _D6_=caml_obj_tag(x), + _D7_=250 === _D6_?x[1]:246 === _D6_?force_lazy_block(x):x; + return caml_call1(f,_D7_)}]} function map_val(f,x) {if(is_val(x)) {var - _D5_=caml_obj_tag(x), - _D6_=250 === _D5_?x[1]:246 === _D5_?force_lazy_block(x):x; - return from_val(caml_call1(f,_D6_))} + _D0_=caml_obj_tag(x), + _D1_=250 === _D0_?x[1]:246 === _D0_?force_lazy_block(x):x; + return from_val(caml_call1(f,_D1_))} return [246, - function(_D7_) + function(_D2_) {var - _D8_=caml_obj_tag(x), - _D9_=250 === _D8_?x[1]:246 === _D8_?force_lazy_block(x):x; - return caml_call1(f,_D9_)}]} + _D3_=caml_obj_tag(x), + _D4_=250 === _D3_?x[1]:246 === _D3_?force_lazy_block(x):x; + return caml_call1(f,_D4_)}]} var Stdlib_Lazy= [0, @@ -10717,7 +11202,7 @@ {var match=caml_call1(seq1,0); if(match) {var next=match[2],x=match[1]; - return [0,x,function(_D4_){return append$0(next,seq2,_D4_)}]} + return [0,x,function(_DZ_){return append$0(next,seq2,_DZ_)}]} return caml_call1(seq2,0)} function map$1(f,seq,param) {var match=caml_call1(seq,0); @@ -10725,8 +11210,8 @@ {var next=match[2], x=match[1], - _D2_=function(_D3_){return map$1(f,next,_D3_)}; - return [0,caml_call1(f,x),_D2_]} + _DX_=function(_DY_){return map$1(f,next,_DY_)}; + return [0,caml_call1(f,x),_DX_]} return 0} function filter_map(f,seq,param) {var seq$0=seq; @@ -10736,7 +11221,7 @@ {var next=match[2],x=match[1],match$0=caml_call1(f,x); if(match$0) {var y=match$0[1]; - return [0,y,function(_D1_){return filter_map(f,next,_D1_)}]} + return [0,y,function(_DW_){return filter_map(f,next,_DW_)}]} var seq$0=next; continue} return 0}} @@ -10747,15 +11232,15 @@ if(match) {var next=match[2],x=match[1]; if(caml_call1(f,x)) - return [0,x,function(_D0_){return filter(f,next,_D0_)}]; + return [0,x,function(_DV_){return filter(f,next,_DV_)}]; var seq$0=next; continue} return 0}} function concat(seq,param) {var match=caml_call1(seq,0); if(match) - {var next=match[2],x=match[1],_DY_=0; - return append$0(x,function(_DZ_){return concat(next,_DZ_)},_DY_)} + {var next=match[2],x=match[1],_DT_=0; + return append$0(x,function(_DU_){return concat(next,_DU_)},_DT_)} return 0} function flat_map(f,seq,param) {var match=caml_call1(seq,0); @@ -10763,9 +11248,9 @@ {var next=match[2], x=match[1], - _DV_=0, - _DW_=function(_DX_){return flat_map(f,next,_DX_)}; - return append$0(caml_call1(f,x),_DW_,_DV_)} + _DQ_=0, + _DR_=function(_DS_){return flat_map(f,next,_DS_)}; + return append$0(caml_call1(f,x),_DR_,_DQ_)} return 0} function fold_left(f,acc,seq) {var acc$0=acc,seq$0=seq; @@ -10794,7 +11279,7 @@ {var match=caml_call1(f,u); if(match) {var match$0=match[1],u$0=match$0[2],x=match$0[1]; - return [0,x,function(_DU_){return unfold(f,u$0,_DU_)}]} + return [0,x,function(_DP_){return unfold(f,u$0,_DP_)}]} return 0} function is_empty(xs){var match=caml_call1(xs,0);return match?0:1} function uncons(xs) @@ -10838,17 +11323,17 @@ for(;;) {var match=caml_call1(xs$0,0); if(match) - {var xs$1=match[2],x=match[1],_DT_=caml_call1(p,x); - if(_DT_){var xs$0=xs$1;continue} - return _DT_} + {var xs$1=match[2],x=match[1],_DO_=caml_call1(p,x); + if(_DO_){var xs$0=xs$1;continue} + return _DO_} return 1}} function exists(p,xs) {var xs$0=xs; for(;;) {var match=caml_call1(xs$0,0); if(match) - {var xs$1=match[2],x=match[1],_DS_=caml_call1(p,x); - if(_DS_)return _DS_; + {var xs$1=match[2],x=match[1],_DN_=caml_call1(p,x); + if(_DN_)return _DN_; var xs$0=xs$1; continue} return 0}} @@ -10909,9 +11394,9 @@ if(match) {var xs$1=match[2],x=match[1],match$0=caml_call1(ys$0,0); if(match$0) - {var ys$1=match$0[2],y=match$0[1],_DR_=caml_call2(f,x,y); - if(_DR_){var xs$0=xs$1,ys$0=ys$1;continue} - return _DR_} + {var ys$1=match$0[2],y=match$0[1],_DM_=caml_call2(f,x,y); + if(_DM_){var xs$0=xs$1,ys$0=ys$1;continue} + return _DM_} return 1} return 1}} function exists2(f,xs,ys) @@ -10921,8 +11406,8 @@ if(match) {var xs$1=match[2],x=match[1],match$0=caml_call1(ys$0,0); if(match$0) - {var ys$1=match$0[2],y=match$0[1],_DQ_=caml_call2(f,x,y); - if(_DQ_)return _DQ_; + {var ys$1=match$0[2],y=match$0[1],_DL_=caml_call2(f,x,y); + if(_DL_)return _DL_; var xs$0=xs$1,ys$0=ys$1; continue} return 0} @@ -10938,9 +11423,9 @@ y=match$0[1], xs$1=match[2], x=match[1], - _DP_=caml_call2(eq,x,y); - if(_DP_){var xs$0=xs$1,ys$0=ys$1;continue} - return _DP_}} + _DK_=caml_call2(eq,x,y); + if(_DK_){var xs$0=xs$1,ys$0=ys$1;continue} + return _DK_}} else if(! match$0)return 1; return 0}} @@ -10949,68 +11434,68 @@ for(;;) {var match=caml_call1(xs$0,0),match$0=caml_call1(ys$0,0); if(match) - {var _DN_=match[2],_DO_=match[1]; + {var _DI_=match[2],_DJ_=match[1]; if(match$0) - {var ys$1=match$0[2],y=match$0[1],c=caml_call2(cmp,_DO_,y); - if(0 === c){var xs$0=_DN_,ys$0=ys$1;continue} + {var ys$1=match$0[2],y=match$0[1],c=caml_call2(cmp,_DJ_,y); + if(0 === c){var xs$0=_DI_,ys$0=ys$1;continue} return c} return 1} return match$0?-1:0}} function init_aux(f,i,j,param) {if(i < j) {var - _DK_=i + 1 | 0, - _DL_=function(_DM_){return init_aux(f,_DK_,j,_DM_)}; - return [0,caml_call1(f,i),_DL_]} + _DF_=i + 1 | 0, + _DG_=function(_DH_){return init_aux(f,_DF_,j,_DH_)}; + return [0,caml_call1(f,i),_DG_]} return 0} function init(n,f) {if(0 <= n) - {var _DI_=0;return function(_DJ_){return init_aux(f,_DI_,n,_DJ_)}} + {var _DD_=0;return function(_DE_){return init_aux(f,_DD_,n,_DE_)}} return invalid_arg(cst_Seq_init)} function repeat(x,param) - {return [0,x,function(_DH_){return repeat(x,_DH_)}]} + {return [0,x,function(_DC_){return repeat(x,_DC_)}]} function forever(f,param) - {function _DF_(_DG_){return forever(f,_DG_)} - return [0,caml_call1(f,0),_DF_]} + {function _DA_(_DB_){return forever(f,_DB_)} + return [0,caml_call1(f,0),_DA_]} function cycle_nonempty(xs,param) - {var _DD_=0; - return append$0(xs,function(_DE_){return cycle_nonempty(xs,_DE_)},_DD_)} + {var _Dy_=0; + return append$0(xs,function(_Dz_){return cycle_nonempty(xs,_Dz_)},_Dy_)} function cycle(xs,param) {var match=caml_call1(xs,0); if(match) {var xs$0=match[2], x=match[1], - _DA_=function(_DC_){return cycle_nonempty(xs,_DC_)}; - return [0,x,function(_DB_){return append$0(xs$0,_DA_,_DB_)}]} + _Dv_=function(_Dx_){return cycle_nonempty(xs,_Dx_)}; + return [0,x,function(_Dw_){return append$0(xs$0,_Dv_,_Dw_)}]} return 0} function iterate1(f,x,param) {var y=caml_call1(f,x); - return [0,y,function(_Dz_){return iterate1(f,y,_Dz_)}]} + return [0,y,function(_Du_){return iterate1(f,y,_Du_)}]} function iterate(f,x) - {function _Dw_(_Dy_){return iterate1(f,x,_Dy_)} - return function(_Dx_){return [0,x,_Dw_]}} + {function _Dr_(_Dt_){return iterate1(f,x,_Dt_)} + return function(_Ds_){return [0,x,_Dr_]}} function mapi_aux(f,i,xs,param) {var match=caml_call1(xs,0); if(match) {var xs$0=match[2], x=match[1], - _Dt_=i + 1 | 0, - _Du_=function(_Dv_){return mapi_aux(f,_Dt_,xs$0,_Dv_)}; - return [0,caml_call2(f,i,x),_Du_]} + _Do_=i + 1 | 0, + _Dp_=function(_Dq_){return mapi_aux(f,_Do_,xs$0,_Dq_)}; + return [0,caml_call2(f,i,x),_Dp_]} return 0} function mapi(f,xs) - {var _Dr_=0;return function(_Ds_){return mapi_aux(f,_Dr_,xs,_Ds_)}} + {var _Dm_=0;return function(_Dn_){return mapi_aux(f,_Dm_,xs,_Dn_)}} function tail_scan(f,s,xs,param) {var match=caml_call1(xs,0); if(match) {var xs$0=match[2],x=match[1],s$0=caml_call2(f,s,x); - return [0,s$0,function(_Dq_){return tail_scan(f,s$0,xs$0,_Dq_)}]} + return [0,s$0,function(_Dl_){return tail_scan(f,s$0,xs$0,_Dl_)}]} return 0} function scan(f,s,xs) - {function _Dn_(_Dp_){return tail_scan(f,s,xs,_Dp_)} - return function(_Do_){return [0,s,_Dn_]}} + {function _Di_(_Dk_){return tail_scan(f,s,xs,_Dk_)} + return function(_Dj_){return [0,s,_Di_]}} function take_aux(n,xs) {return 0 === n ?empty @@ -11042,7 +11527,7 @@ if(match) {var xs$0=match[2],x=match[1]; return caml_call1(p,x) - ?[0,x,function(_Dm_){return take_while(p,xs$0,_Dm_)}] + ?[0,x,function(_Dh_){return take_while(p,xs$0,_Dh_)}] :0} return 0} function drop_while(p,xs,param) @@ -11060,12 +11545,12 @@ {var xs$0=match[2], x=match[1], - _Dd_=caml_call1(eq,x), - _De_=function(_Dl_){return drop_while(_Dd_,xs$0,_Dl_)}, - _Df_=function(_Dk_){return group(eq,_De_,_Dk_)}, - _Dg_=caml_call1(eq,x), - _Dh_=function(_Dj_){return take_while(_Dg_,xs$0,_Dj_)}; - return [0,function(_Di_){return [0,x,_Dh_]},_Df_]} + _C__=caml_call1(eq,x), + _C$_=function(_Dg_){return drop_while(_C__,xs$0,_Dg_)}, + _Da_=function(_Df_){return group(eq,_C$_,_Df_)}, + _Db_=caml_call1(eq,x), + _Dc_=function(_De_){return take_while(_Db_,xs$0,_De_)}; + return [0,function(_Dd_){return [0,x,_Dc_]},_Da_]} return 0} var Forced_twice=[248,cst_Stdlib_Seq_Forced_twice,caml_fresh_oo_id(0)]; function failure(param){throw Forced_twice} @@ -11075,9 +11560,9 @@ if(match){var xs$0=match[2],x=match[1];return [0,x,memoize(xs$0)]} return 0} var s=to_lazy(s$0); - return function(_Dc_) - {var _Db_=caml_obj_tag(s); - return 250 === _Db_?s[1]:246 === _Db_?force_lazy_block(s):s}} + return function(_C9_) + {var _C8_=caml_obj_tag(s); + return 250 === _C8_?s[1]:246 === _C8_?force_lazy_block(s):s}} function once(xs) {function f(param) {var match=caml_call1(xs,0); @@ -11092,7 +11577,7 @@ {var xs$0=match[2],x=match[1],match$0=caml_call1(ys,0); if(match$0) {var ys$0=match$0[2],y=match$0[1]; - return [0,[0,x,y],function(_Da_){return zip(xs$0,ys$0,_Da_)}]} + return [0,[0,x,y],function(_C7_){return zip(xs$0,ys$0,_C7_)}]} return 0} return 0} function map2(f,xs,ys,param) @@ -11103,21 +11588,21 @@ {var ys$0=match$0[2], y=match$0[1], - _C__=function(_C$_){return map2(f,xs$0,ys$0,_C$_)}; - return [0,caml_call2(f,x,y),_C__]} + _C5_=function(_C6_){return map2(f,xs$0,ys$0,_C6_)}; + return [0,caml_call2(f,x,y),_C5_]} return 0} return 0} function interleave(xs,ys,param) {var match=caml_call1(xs,0); if(match) {var xs$0=match[2],x=match[1]; - return [0,x,function(_C9_){return interleave(ys,xs$0,_C9_)}]} + return [0,x,function(_C4_){return interleave(ys,xs$0,_C4_)}]} return caml_call1(ys,0)} function sorted_merge1(cmp,x,xs,y,ys) {return 0 < caml_call2(cmp,x,y) ?[0, y, - function(_C7_) + function(_C2_) {var match=caml_call1(ys,0); if(match) {var ys$0=match[2],y=match[1]; @@ -11125,7 +11610,7 @@ return [0,x,xs]}] :[0, x, - function(_C8_) + function(_C3_) {var match=caml_call1(xs,0); if(match) {var xs$0=match[2],x=match[1]; @@ -11145,17 +11630,17 @@ {var match=caml_call1(xys,0); if(match) {var xys$0=match[2],match$0=match[1],x=match$0[1]; - return [0,x,function(_C6_){return map_fst(xys$0,_C6_)}]} + return [0,x,function(_C1_){return map_fst(xys$0,_C1_)}]} return 0} function map_snd(xys,param) {var match=caml_call1(xys,0); if(match) {var xys$0=match[2],match$0=match[1],y=match$0[2]; - return [0,y,function(_C5_){return map_snd(xys$0,_C5_)}]} + return [0,y,function(_C0_){return map_snd(xys$0,_C0_)}]} return 0} function unzip(xys) - {function _C2_(_C4_){return map_snd(xys,_C4_)} - return [0,function(_C3_){return map_fst(xys,_C3_)},_C2_]} + {function _CX_(_CZ_){return map_snd(xys,_CZ_)} + return [0,function(_CY_){return map_fst(xys,_CY_)},_CX_]} function filter_map_find_left_map(f,xs,param) {var xs$0=xs; for(;;) @@ -11166,7 +11651,7 @@ {var y=match$0[1]; return [0, y, - function(_C1_){return filter_map_find_left_map(f,xs$1,_C1_)}]} + function(_CW_){return filter_map_find_left_map(f,xs$1,_CW_)}]} var xs$0=xs$1; continue} return 0}} @@ -11180,26 +11665,26 @@ var z=match$0[1]; return [0, z, - function(_C0_) - {return filter_map_find_right_map(f,xs$1,_C0_)}]} + function(_CV_) + {return filter_map_find_right_map(f,xs$1,_CV_)}]} return 0}} function partition_map(f,xs) - {function _CX_(_CZ_){return filter_map_find_right_map(f,xs,_CZ_)} + {function _CS_(_CU_){return filter_map_find_right_map(f,xs,_CU_)} return [0, - function(_CY_){return filter_map_find_left_map(f,xs,_CY_)}, - _CX_]} + function(_CT_){return filter_map_find_left_map(f,xs,_CT_)}, + _CS_]} function partition(p,xs) - {function _CT_(x){return 1 - caml_call1(p,x)} - function _CU_(_CW_){return filter(_CT_,xs,_CW_)} - return [0,function(_CV_){return filter(p,xs,_CV_)},_CU_]} + {function _CO_(x){return 1 - caml_call1(p,x)} + function _CP_(_CR_){return filter(_CO_,xs,_CR_)} + return [0,function(_CQ_){return filter(p,xs,_CQ_)},_CP_]} function peel(xss) - {return unzip(function(_CS_){return filter_map(uncons,xss,_CS_)})} + {return unzip(function(_CN_){return filter_map(uncons,xss,_CN_)})} function transpose(xss,param) {var match=peel(xss),tails=match[2],heads=match[1]; if(is_empty(heads)) - {if(is_empty(tails))return 0;throw [0,Assert_failure,_r_]} - return [0,heads,function(_CR_){return transpose(tails,_CR_)}]} - function _s_(remainders,xss,param) + {if(is_empty(tails))return 0;throw [0,Assert_failure,_p_]} + return [0,heads,function(_CM_){return transpose(tails,_CM_)}]} + function _q_(remainders,xss,param) {var match=caml_call1(xss,0); if(match) {var xss$0=match[2],xs=match[1],match$0=caml_call1(xs,0); @@ -11210,19 +11695,19 @@ match$1=peel(remainders), tails=match$1[2], heads=match$1[1], - _CL_=function(_CQ_){return [0,xs$0,tails]}, - _CM_=function(_CP_){return _s_(_CL_,xss$0,_CP_)}; - return [0,function(_CO_){return [0,x,heads]},_CM_]} + _CG_=function(_CL_){return [0,xs$0,tails]}, + _CH_=function(_CK_){return _q_(_CG_,xss$0,_CK_)}; + return [0,function(_CJ_){return [0,x,heads]},_CH_]} var match$2=peel(remainders),tails$0=match$2[2],heads$0=match$2[1]; - return [0,heads$0,function(_CN_){return _s_(tails$0,xss$0,_CN_)}]} + return [0,heads$0,function(_CI_){return _q_(tails$0,xss$0,_CI_)}]} return transpose(remainders,0)} function map_product(f,xs,ys) - {function _CF_(x) - {function _CJ_(y){return caml_call2(f,x,y)} - return function(_CK_){return map$1(_CJ_,ys,_CK_)}} - function xss(_CI_){return map$1(_CF_,xs,_CI_)} - function _CE_(_CH_){return _s_(empty,xss,_CH_)} - return function(_CG_){return concat(_CE_,_CG_)}} + {function _CA_(x) + {function _CE_(y){return caml_call2(f,x,y)} + return function(_CF_){return map$1(_CE_,ys,_CF_)}} + function xss(_CD_){return map$1(_CA_,xs,_CD_)} + function _Cz_(_CC_){return _q_(empty,xss,_CC_)} + return function(_CB_){return concat(_Cz_,_CB_)}} function product(xs,ys) {return map_product(function(x,y){return [0,x,y]},xs,ys)} function of_dispenser(it) @@ -11238,7 +11723,7 @@ if(match){var xs=match[2],x=match[1];s[1] = xs;return [0,x]} return 0}} function ints(i,param) - {var _CC_=i + 1 | 0;return [0,i,function(_CD_){return ints(_CC_,_CD_)}]} + {var _Cx_=i + 1 | 0;return [0,i,function(_Cy_){return ints(_Cx_,_Cy_)}]} var Stdlib_Seq= [0, @@ -11323,15 +11808,15 @@ return 0} function compare$1(cmp,o0,o1) {if(o0) - {var _CB_=o0[1]; - if(o1){var v1=o1[1];return caml_call2(cmp,_CB_,v1)} + {var _Cw_=o0[1]; + if(o1){var v1=o1[1];return caml_call2(cmp,_Cw_,v1)} return 1} return o1?-1:0} function to_result(none,param) {if(param){var v=param[1];return [0,v]}return [1,none]} function to_list(param){if(param){var v=param[1];return [0,v,0]}return 0} function to_seq(param) - {if(param){var v=param[1];return function(_CA_){return return$0(v,_CA_)}} + {if(param){var v=param[1];return function(_Cv_){return return$0(v,_Cv_)}} return empty} var Stdlib_Option= @@ -11383,28 +11868,28 @@ function is_error(param){return 0 === param[0]?0:1} function equal$2(ok,error,r0,r1) {if(0 === r0[0]) - {var _Cy_=r0[1]; - if(0 === r1[0]){var v1=r1[1];return caml_call2(ok,_Cy_,v1)}} + {var _Ct_=r0[1]; + if(0 === r1[0]){var v1=r1[1];return caml_call2(ok,_Ct_,v1)}} else - {var _Cz_=r0[1]; - if(0 !== r1[0]){var e1=r1[1];return caml_call2(error,_Cz_,e1)}} + {var _Cu_=r0[1]; + if(0 !== r1[0]){var e1=r1[1];return caml_call2(error,_Cu_,e1)}} return 0} function compare$2(ok,error,r0,r1) {if(0 === r0[0]) - {var _Cw_=r0[1]; - if(0 === r1[0]){var v1=r1[1];return caml_call2(ok,_Cw_,v1)} + {var _Cr_=r0[1]; + if(0 === r1[0]){var v1=r1[1];return caml_call2(ok,_Cr_,v1)} return -1} - var _Cx_=r0[1]; + var _Cs_=r0[1]; if(0 === r1[0])return 1; var e1=r1[1]; - return caml_call2(error,_Cx_,e1)} + return caml_call2(error,_Cs_,e1)} function to_option(param) {if(0 === param[0]){var v=param[1];return [0,v]}return 0} function to_list$0(param) {if(0 === param[0]){var v=param[1];return [0,v,0]}return 0} function to_seq$0(param) {if(0 === param[0]) - {var v=param[1];return function(_Cv_){return return$0(v,_Cv_)}} + {var v=param[1];return function(_Cq_){return return$0(v,_Cq_)}} return empty} var Stdlib_Result= @@ -11429,18 +11914,18 @@ to_list$0, to_seq$0]; caml_register_global(784,Stdlib_Result,"Stdlib__Result"); - function equal$3(_Cu_,_Ct_){return _Cu_ === _Ct_?1:0} + function equal$3(_Cp_,_Co_){return _Cp_ === _Co_?1:0} var compare$3=caml_int_compare; function to_float(param){return param?1.:0.} function to_string$0(param){return param?cst_true$2:cst_false$2} - function _t_(_Cs_){return _Cs_} + function _r_(_Cn_){return _Cn_} var Stdlib_Bool= [0, - function(_Cr_){return 1 - _Cr_}, + function(_Cm_){return 1 - _Cm_}, equal$3, compare$3, - _t_, + _r_, to_float, to_string$0]; caml_register_global(785,Stdlib_Bool,"Stdlib__Bool"); @@ -11472,18 +11957,18 @@ caml_bytes_unsafe_set(s,3,48 + (c % 10 | 0) | 0); return caml_string_of_bytes(s)} function lowercase(c) - {var _Cq_=c - 192 | 0,switch$0=0; - if(30 < _Cq_ >>> 0) - {if(! (25 < _Cq_ + 127 >>> 0))switch$0 = 1} + {var _Cl_=c - 192 | 0,switch$0=0; + if(30 < _Cl_ >>> 0) + {if(! (25 < _Cl_ + 127 >>> 0))switch$0 = 1} else - if(23 !== _Cq_)switch$0 = 1; + if(23 !== _Cl_)switch$0 = 1; return switch$0?c + 32 | 0:c} function uppercase(c) - {var _Cp_=c - 224 | 0,switch$0=0; - if(30 < _Cp_ >>> 0) - {if(! (25 < _Cp_ + 127 >>> 0))switch$0 = 1} + {var _Ck_=c - 224 | 0,switch$0=0; + if(30 < _Ck_ >>> 0) + {if(! (25 < _Ck_ + 127 >>> 0))switch$0 = 1} else - if(23 !== _Cp_)switch$0 = 1; + if(23 !== _Ck_)switch$0 = 1; return switch$0?c - 32 | 0:c} function lowercase_ascii(c){return 25 < c - 65 >>> 0?c:c + 32 | 0} function uppercase_ascii(c){return 25 < c - 97 >>> 0?c:c - 32 | 0} @@ -11515,12 +12000,12 @@ function pred(u) {return u === 57344?lo_bound:u === 0?invalid_arg(err_no_pred):u - 1 | 0} function is_valid(i) - {var _Cl_=0 <= i?1:0,_Cm_=_Cl_?i <= 55295?1:0:_Cl_; - if(_Cm_) - var _Cn_=_Cm_; + {var _Cg_=0 <= i?1:0,_Ch_=_Cg_?i <= 55295?1:0:_Cg_; + if(_Ch_) + var _Ci_=_Ch_; else - var _Co_=57344 <= i?1:0,_Cn_=_Co_?i <= 1114111?1:0:_Co_; - return _Cn_} + var _Cj_=57344 <= i?1:0,_Ci_=_Cj_?i <= 1114111?1:0:_Cj_; + return _Ci_} function of_int(i) {return is_valid(i) ?i @@ -11536,10 +12021,10 @@ cat (caml_format_int(cst_04X,u),cst_is_not_a_latin1_character))) :u} - function unsafe_to_char(_Ck_){return _Ck_} - function equal$5(_Cj_,_Ci_){return _Cj_ === _Ci_?1:0} + function unsafe_to_char(_Cf_){return _Cf_} + function equal$5(_Ce_,_Cd_){return _Ce_ === _Cd_?1:0} var compare$5=caml_int_compare; - function hash(_Ch_){return _Ch_} + function hash(_Cc_){return _Cc_} function utf_decode_is_valid(d){return 1 === (d >>> 27 | 0)?1:0} function utf_decode_length(d){return (d >>> 24 | 0) & 7} function utf_decode_uchar(d){return d & 16777215} @@ -11550,17 +12035,17 @@ {if(127 < u) {if(2047 < u) {if(65535 < u) - {if(1114111 < u)throw [0,Assert_failure,_u_];return 4} + {if(1114111 < u)throw [0,Assert_failure,_s_];return 4} return 3} return 2} return 1} - throw [0,Assert_failure,_v_]} + throw [0,Assert_failure,_t_]} function utf_16_byte_length(u) {if(0 <= u) - {if(65535 < u){if(1114111 < u)throw [0,Assert_failure,_w_];return 4} + {if(65535 < u){if(1114111 < u)throw [0,Assert_failure,_u_];return 4} return 2} - throw [0,Assert_failure,_x_]} - function _y_(_Cg_){return _Cg_} + throw [0,Assert_failure,_v_]} + function _w_(_Cb_){return _Cb_} var Stdlib_Uchar= [0, @@ -11572,8 +12057,8 @@ pred, is_valid, of_int, - function(_Cf_){return _Cf_}, - _y_, + function(_Ca_){return _Ca_}, + _w_, is_char, of_char, to_char, @@ -11652,12 +12137,12 @@ {if(param) {var l=param[2],a=param[1],r=caml_call1(f,a);return [0,r,map$4(f,l)]} return 0} - function _z_(i,f,param) + function _x_(i,f,param) {if(param) {var l=param[2],a=param[1],r=caml_call2(f,i,a); - return [0,r,_z_(i + 1 | 0,f,l)]} + return [0,r,_x_(i + 1 | 0,f,l)]} return 0} - function mapi$0(f,l){return _z_(0,f,l)} + function mapi$0(f,l){return _x_(0,f,l)} function rev_map(f,param) {var accu=0,param$0=param; for(;;) @@ -11771,16 +12256,16 @@ {var param$0=param; for(;;) {if(param$0) - {var l=param$0[2],a=param$0[1],_Ce_=caml_call1(p,a); - if(_Ce_){var param$0=l;continue} - return _Ce_} + {var l=param$0[2],a=param$0[1],_B$_=caml_call1(p,a); + if(_B$_){var param$0=l;continue} + return _B$_} return 1}} function exists$0(p,param) {var param$0=param; for(;;) {if(param$0) - {var l=param$0[2],a=param$0[1],_Cd_=caml_call1(p,a); - if(_Cd_)return _Cd_; + {var l=param$0[2],a=param$0[1],_B__=caml_call1(p,a); + if(_B__)return _B__; var param$0=l; continue} return 0}} @@ -11794,9 +12279,9 @@ a2=l2$0[1], l1$1=l1$0[2], a1=l1$0[1], - _Cc_=caml_call2(p,a1,a2); - if(_Cc_){var l1$0=l1$1,l2$0=l2$1;continue} - return _Cc_}} + _B9_=caml_call2(p,a1,a2); + if(_B9_){var l1$0=l1$1,l2$0=l2$1;continue} + return _B9_}} else if(! l2$0)return 1; return invalid_arg(cst_List_for_all2)}} @@ -11810,8 +12295,8 @@ a2=l2$0[1], l1$1=l1$0[2], a1=l1$0[1], - _Cb_=caml_call2(p,a1,a2); - if(_Cb_)return _Cb_; + _B8_=caml_call2(p,a1,a2); + if(_B8_)return _B8_; var l1$0=l1$1,l2$0=l2$1; continue}} else @@ -11821,8 +12306,8 @@ {var param$0=param; for(;;) {if(param$0) - {var l=param$0[2],a=param$0[1],_Ca_=0 === caml_compare(a,x)?1:0; - if(_Ca_)return _Ca_; + {var l=param$0[2],a=param$0[1],_B7_=0 === caml_compare(a,x)?1:0; + if(_B7_)return _B7_; var param$0=l; continue} return 0}} @@ -11830,8 +12315,8 @@ {var param$0=param; for(;;) {if(param$0) - {var l=param$0[2],a=param$0[1],_B$_=a === x?1:0; - if(_B$_)return _B$_; + {var l=param$0[2],a=param$0[1],_B6_=a === x?1:0; + if(_B6_)return _B6_; var param$0=l; continue} return 0}} @@ -11879,8 +12364,8 @@ l=param$0[2], match=param$0[1], a=match[1], - _B__=0 === caml_compare(a,x)?1:0; - if(_B__)return _B__; + _B5_=0 === caml_compare(a,x)?1:0; + if(_B5_)return _B5_; var param$0=l; continue} return 0}} @@ -11888,8 +12373,8 @@ {var param$0=param; for(;;) {if(param$0) - {var l=param$0[2],match=param$0[1],a=match[1],_B9_=a === x?1:0; - if(_B9_)return _B9_; + {var l=param$0[2],match=param$0[1],a=match[1],_B4_=a === x?1:0; + if(_B4_)return _B4_; var param$0=l; continue} return 0}} @@ -12007,8 +12492,8 @@ {var yes$0=[0,x,yes],yes=yes$0,param$0=l;continue} var no$0=[0,x,no],no=no$0,param$0=l; continue} - var _B8_=rev(no); - return [0,rev(yes),_B8_]}} + var _B3_=rev(no); + return [0,rev(yes),_B3_]}} function partition_map$0(p,param) {var left=0,right=0,param$0=param; for(;;) @@ -12018,8 +12503,8 @@ {var v=match[1],left$0=[0,v,left],left=left$0,param$0=l;continue} var v$0=match[1],right$0=[0,v$0,right],right=right$0,param$0=l; continue} - var _B7_=rev(right); - return [0,rev(left),_B7_]}} + var _B2_=rev(right); + return [0,rev(left),_B2_]}} function split(param) {if(param) {var @@ -12031,7 +12516,7 @@ ry=match$0[2], rx=match$0[1]; return [0,[0,x,rx],[0,y,ry]]} - return _A_} + return _y_} function combine(l1,l2) {if(l1) {if(l2) @@ -12050,48 +12535,48 @@ return l1} return l2} function fast_sort(cmp,l) - {function rev_sort(n,l) + {function sort(n,l) {if(2 === n) {if(l) - {var _B3_=l[2]; - if(_B3_) + {var _BY_=l[2]; + if(_BY_) {var - tl=_B3_[2], - x2=_B3_[1], + tl=_BY_[2], + x2=_BY_[1], x1=l[1], - s=0 < caml_call2(cmp,x1,x2)?[0,x1,[0,x2,0]]:[0,x2,[0,x1,0]]; + s=0 < caml_call2(cmp,x1,x2)?[0,x2,[0,x1,0]]:[0,x1,[0,x2,0]]; return [0,s,tl]}}} else if(3 === n && l) - {var _B5_=l[2]; - if(_B5_) - {var _B6_=_B5_[2]; - if(_B6_) + {var _B0_=l[2]; + if(_B0_) + {var _B1_=_B0_[2]; + if(_B1_) {var - tl$1=_B6_[2], - x3=_B6_[1], - x2$0=_B5_[1], + tl$1=_B1_[2], + x3=_B1_[1], + x2$0=_B0_[1], x1$0=l[1], s$0= 0 < caml_call2(cmp,x1$0,x2$0) - ?0 < caml_call2(cmp,x2$0,x3) - ?[0,x1$0,[0,x2$0,[0,x3,0]]] - :0 < caml_call2(cmp,x1$0,x3) - ?[0,x1$0,[0,x3,[0,x2$0,0]]] - :[0,x3,[0,x1$0,[0,x2$0,0]]] - :0 < caml_call2(cmp,x1$0,x3) - ?[0,x2$0,[0,x1$0,[0,x3,0]]] - :0 < caml_call2(cmp,x2$0,x3) - ?[0,x2$0,[0,x3,[0,x1$0,0]]] - :[0,x3,[0,x2$0,[0,x1$0,0]]]; + ?0 < caml_call2(cmp,x1$0,x3) + ?0 < caml_call2(cmp,x2$0,x3) + ?[0,x3,[0,x2$0,[0,x1$0,0]]] + :[0,x2$0,[0,x3,[0,x1$0,0]]] + :[0,x2$0,[0,x1$0,[0,x3,0]]] + :0 < caml_call2(cmp,x2$0,x3) + ?0 < caml_call2(cmp,x1$0,x3) + ?[0,x3,[0,x1$0,[0,x2$0,0]]] + :[0,x1$0,[0,x3,[0,x2$0,0]]] + :[0,x1$0,[0,x2$0,[0,x3,0]]]; return [0,s$0,tl$1]}}} var n1=n >> 1, n2=n - n1 | 0, - match=sort(n1,l), + match=rev_sort(n1,l), l2$0=match[2], s1=match[1], - match$0=sort(n2,l2$0), + match$0=rev_sort(n2,l2$0), tl$0=match$0[2], s2=match$0[1], l1=s1, @@ -12102,55 +12587,55 @@ {if(l2) {var t2=l2[2],h2=l2[1],t1=l1[2],h1=l1[1]; if(0 < caml_call2(cmp,h1,h2)) - {var accu$0=[0,h2,accu],l2=t2,accu=accu$0;continue} - var accu$1=[0,h1,accu],l1=t1,accu=accu$1; + {var accu$0=[0,h1,accu],l1=t1,accu=accu$0;continue} + var accu$1=[0,h2,accu],l2=t2,accu=accu$1; continue} - var _B4_=rev_append(l1,accu)} + var _BZ_=rev_append(l1,accu)} else - var _B4_=rev_append(l2,accu); - return [0,_B4_,tl$0]}} - function sort(n,l) + var _BZ_=rev_append(l2,accu); + return [0,_BZ_,tl$0]}} + function rev_sort(n,l) {if(2 === n) {if(l) - {var _BZ_=l[2]; - if(_BZ_) + {var _BU_=l[2]; + if(_BU_) {var - tl=_BZ_[2], - x2=_BZ_[1], + tl=_BU_[2], + x2=_BU_[1], x1=l[1], - s=0 < caml_call2(cmp,x1,x2)?[0,x2,[0,x1,0]]:[0,x1,[0,x2,0]]; + s=0 < caml_call2(cmp,x1,x2)?[0,x1,[0,x2,0]]:[0,x2,[0,x1,0]]; return [0,s,tl]}}} else if(3 === n && l) - {var _B1_=l[2]; - if(_B1_) - {var _B2_=_B1_[2]; - if(_B2_) + {var _BW_=l[2]; + if(_BW_) + {var _BX_=_BW_[2]; + if(_BX_) {var - tl$1=_B2_[2], - x3=_B2_[1], - x2$0=_B1_[1], + tl$1=_BX_[2], + x3=_BX_[1], + x2$0=_BW_[1], x1$0=l[1], s$0= 0 < caml_call2(cmp,x1$0,x2$0) - ?0 < caml_call2(cmp,x1$0,x3) - ?0 < caml_call2(cmp,x2$0,x3) - ?[0,x3,[0,x2$0,[0,x1$0,0]]] - :[0,x2$0,[0,x3,[0,x1$0,0]]] - :[0,x2$0,[0,x1$0,[0,x3,0]]] - :0 < caml_call2(cmp,x2$0,x3) - ?0 < caml_call2(cmp,x1$0,x3) - ?[0,x3,[0,x1$0,[0,x2$0,0]]] - :[0,x1$0,[0,x3,[0,x2$0,0]]] - :[0,x1$0,[0,x2$0,[0,x3,0]]]; + ?0 < caml_call2(cmp,x2$0,x3) + ?[0,x1$0,[0,x2$0,[0,x3,0]]] + :0 < caml_call2(cmp,x1$0,x3) + ?[0,x1$0,[0,x3,[0,x2$0,0]]] + :[0,x3,[0,x1$0,[0,x2$0,0]]] + :0 < caml_call2(cmp,x1$0,x3) + ?[0,x2$0,[0,x1$0,[0,x3,0]]] + :0 < caml_call2(cmp,x2$0,x3) + ?[0,x2$0,[0,x3,[0,x1$0,0]]] + :[0,x3,[0,x2$0,[0,x1$0,0]]]; return [0,s$0,tl$1]}}} var n1=n >> 1, n2=n - n1 | 0, - match=rev_sort(n1,l), + match=sort(n1,l), l2$0=match[2], s1=match[1], - match$0=rev_sort(n2,l2$0), + match$0=sort(n2,l2$0), tl$0=match$0[2], s2=match$0[1], l1=s1, @@ -12161,93 +12646,93 @@ {if(l2) {var t2=l2[2],h2=l2[1],t1=l1[2],h1=l1[1]; if(0 < caml_call2(cmp,h1,h2)) - {var accu$0=[0,h1,accu],l1=t1,accu=accu$0;continue} - var accu$1=[0,h2,accu],l2=t2,accu=accu$1; + {var accu$0=[0,h2,accu],l2=t2,accu=accu$0;continue} + var accu$1=[0,h1,accu],l1=t1,accu=accu$1; continue} - var _B0_=rev_append(l1,accu)} + var _BV_=rev_append(l1,accu)} else - var _B0_=rev_append(l2,accu); - return [0,_B0_,tl$0]}} + var _BV_=rev_append(l2,accu); + return [0,_BV_,tl$0]}} var len=length$1(l); return 2 <= len?sort(len,l)[1]:l} function sort_uniq(cmp,l) - {function rev_sort(n,l) + {function sort(n,l) {if(2 === n) {if(l) - {var _BQ_=l[2]; - if(_BQ_) + {var _BL_=l[2]; + if(_BL_) {var - tl=_BQ_[2], - x2=_BQ_[1], + tl=_BL_[2], + x2=_BL_[1], x1=l[1], c$0=caml_call2(cmp,x1,x2), - s=0 === c$0?[0,x1,0]:0 < c$0?[0,x1,[0,x2,0]]:[0,x2,[0,x1,0]]; + s=0 === c$0?[0,x1,0]:0 <= c$0?[0,x2,[0,x1,0]]:[0,x1,[0,x2,0]]; return [0,s,tl]}}} else if(3 === n && l) - {var _BS_=l[2]; - if(_BS_) - {var _BT_=_BS_[2]; - if(_BT_) + {var _BN_=l[2]; + if(_BN_) + {var _BO_=_BN_[2]; + if(_BO_) {var - tl$1=_BT_[2], - x3=_BT_[1], - x2$0=_BS_[1], + tl$1=_BO_[2], + x3=_BO_[1], + x2$0=_BN_[1], x1$0=l[1], c$1=caml_call2(cmp,x1$0,x2$0); if(0 === c$1) var c$2=caml_call2(cmp,x2$0,x3), - _BU_= + _BP_= 0 === c$2 ?[0,x2$0,0] - :0 < c$2?[0,x2$0,[0,x3,0]]:[0,x3,[0,x2$0,0]], - s$0=_BU_; + :0 <= c$2?[0,x3,[0,x2$0,0]]:[0,x2$0,[0,x3,0]], + s$0=_BP_; else - if(0 < c$1) - {var c$3=caml_call2(cmp,x2$0,x3); + if(0 <= c$1) + {var c$3=caml_call2(cmp,x1$0,x3); if(0 === c$3) - var _BV_=[0,x1$0,[0,x2$0,0]]; + var _BQ_=[0,x2$0,[0,x1$0,0]]; else - if(0 < c$3) - var _BV_=[0,x1$0,[0,x2$0,[0,x3,0]]]; - else + if(0 <= c$3) var - c$4=caml_call2(cmp,x1$0,x3), - _BW_= + c$4=caml_call2(cmp,x2$0,x3), + _BR_= 0 === c$4 - ?[0,x1$0,[0,x2$0,0]] - :0 < c$4 - ?[0,x1$0,[0,x3,[0,x2$0,0]]] - :[0,x3,[0,x1$0,[0,x2$0,0]]], - _BV_=_BW_; - var s$0=_BV_} + ?[0,x2$0,[0,x1$0,0]] + :0 <= c$4 + ?[0,x3,[0,x2$0,[0,x1$0,0]]] + :[0,x2$0,[0,x3,[0,x1$0,0]]], + _BQ_=_BR_; + else + var _BQ_=[0,x2$0,[0,x1$0,[0,x3,0]]]; + var s$0=_BQ_} else - {var c$5=caml_call2(cmp,x1$0,x3); + {var c$5=caml_call2(cmp,x2$0,x3); if(0 === c$5) - var _BX_=[0,x2$0,[0,x1$0,0]]; + var _BS_=[0,x1$0,[0,x2$0,0]]; else - if(0 < c$5) - var _BX_=[0,x2$0,[0,x1$0,[0,x3,0]]]; - else + if(0 <= c$5) var - c$6=caml_call2(cmp,x2$0,x3), - _BY_= + c$6=caml_call2(cmp,x1$0,x3), + _BT_= 0 === c$6 - ?[0,x2$0,[0,x1$0,0]] - :0 < c$6 - ?[0,x2$0,[0,x3,[0,x1$0,0]]] - :[0,x3,[0,x2$0,[0,x1$0,0]]], - _BX_=_BY_; - var s$0=_BX_} + ?[0,x1$0,[0,x2$0,0]] + :0 <= c$6 + ?[0,x3,[0,x1$0,[0,x2$0,0]]] + :[0,x1$0,[0,x3,[0,x2$0,0]]], + _BS_=_BT_; + else + var _BS_=[0,x1$0,[0,x2$0,[0,x3,0]]]; + var s$0=_BS_} return [0,s$0,tl$1]}}} var n1=n >> 1, n2=n - n1 | 0, - match=sort(n1,l), + match=rev_sort(n1,l), l2$0=match[2], s1=match[1], - match$0=sort(n2,l2$0), + match$0=rev_sort(n2,l2$0), tl$0=match$0[2], s2=match$0[1], l1=s1, @@ -12259,90 +12744,90 @@ {var t2=l2[2],h2=l2[1],t1=l1[2],h1=l1[1],c=caml_call2(cmp,h1,h2); if(0 === c) {var accu$0=[0,h1,accu],l1=t1,l2=t2,accu=accu$0;continue} - if(0 <= c){var accu$1=[0,h2,accu],l2=t2,accu=accu$1;continue} - var accu$2=[0,h1,accu],l1=t1,accu=accu$2; + if(0 < c){var accu$1=[0,h1,accu],l1=t1,accu=accu$1;continue} + var accu$2=[0,h2,accu],l2=t2,accu=accu$2; continue} - var _BR_=rev_append(l1,accu)} + var _BM_=rev_append(l1,accu)} else - var _BR_=rev_append(l2,accu); - return [0,_BR_,tl$0]}} - function sort(n,l) + var _BM_=rev_append(l2,accu); + return [0,_BM_,tl$0]}} + function rev_sort(n,l) {if(2 === n) {if(l) - {var _BH_=l[2]; - if(_BH_) + {var _BC_=l[2]; + if(_BC_) {var - tl=_BH_[2], - x2=_BH_[1], + tl=_BC_[2], + x2=_BC_[1], x1=l[1], c$0=caml_call2(cmp,x1,x2), - s=0 === c$0?[0,x1,0]:0 <= c$0?[0,x2,[0,x1,0]]:[0,x1,[0,x2,0]]; + s=0 === c$0?[0,x1,0]:0 < c$0?[0,x1,[0,x2,0]]:[0,x2,[0,x1,0]]; return [0,s,tl]}}} else if(3 === n && l) - {var _BJ_=l[2]; - if(_BJ_) - {var _BK_=_BJ_[2]; - if(_BK_) + {var _BE_=l[2]; + if(_BE_) + {var _BF_=_BE_[2]; + if(_BF_) {var - tl$1=_BK_[2], - x3=_BK_[1], - x2$0=_BJ_[1], + tl$1=_BF_[2], + x3=_BF_[1], + x2$0=_BE_[1], x1$0=l[1], c$1=caml_call2(cmp,x1$0,x2$0); if(0 === c$1) var c$2=caml_call2(cmp,x2$0,x3), - _BL_= + _BG_= 0 === c$2 ?[0,x2$0,0] - :0 <= c$2?[0,x3,[0,x2$0,0]]:[0,x2$0,[0,x3,0]], - s$0=_BL_; + :0 < c$2?[0,x2$0,[0,x3,0]]:[0,x3,[0,x2$0,0]], + s$0=_BG_; else - if(0 <= c$1) - {var c$3=caml_call2(cmp,x1$0,x3); + if(0 < c$1) + {var c$3=caml_call2(cmp,x2$0,x3); if(0 === c$3) - var _BM_=[0,x2$0,[0,x1$0,0]]; + var _BH_=[0,x1$0,[0,x2$0,0]]; else - if(0 <= c$3) + if(0 < c$3) + var _BH_=[0,x1$0,[0,x2$0,[0,x3,0]]]; + else var - c$4=caml_call2(cmp,x2$0,x3), - _BN_= + c$4=caml_call2(cmp,x1$0,x3), + _BI_= 0 === c$4 - ?[0,x2$0,[0,x1$0,0]] - :0 <= c$4 - ?[0,x3,[0,x2$0,[0,x1$0,0]]] - :[0,x2$0,[0,x3,[0,x1$0,0]]], - _BM_=_BN_; - else - var _BM_=[0,x2$0,[0,x1$0,[0,x3,0]]]; - var s$0=_BM_} + ?[0,x1$0,[0,x2$0,0]] + :0 < c$4 + ?[0,x1$0,[0,x3,[0,x2$0,0]]] + :[0,x3,[0,x1$0,[0,x2$0,0]]], + _BH_=_BI_; + var s$0=_BH_} else - {var c$5=caml_call2(cmp,x2$0,x3); + {var c$5=caml_call2(cmp,x1$0,x3); if(0 === c$5) - var _BO_=[0,x1$0,[0,x2$0,0]]; + var _BJ_=[0,x2$0,[0,x1$0,0]]; else - if(0 <= c$5) + if(0 < c$5) + var _BJ_=[0,x2$0,[0,x1$0,[0,x3,0]]]; + else var - c$6=caml_call2(cmp,x1$0,x3), - _BP_= + c$6=caml_call2(cmp,x2$0,x3), + _BK_= 0 === c$6 - ?[0,x1$0,[0,x2$0,0]] - :0 <= c$6 - ?[0,x3,[0,x1$0,[0,x2$0,0]]] - :[0,x1$0,[0,x3,[0,x2$0,0]]], - _BO_=_BP_; - else - var _BO_=[0,x1$0,[0,x2$0,[0,x3,0]]]; - var s$0=_BO_} + ?[0,x2$0,[0,x1$0,0]] + :0 < c$6 + ?[0,x2$0,[0,x3,[0,x1$0,0]]] + :[0,x3,[0,x2$0,[0,x1$0,0]]], + _BJ_=_BK_; + var s$0=_BJ_} return [0,s$0,tl$1]}}} var n1=n >> 1, n2=n - n1 | 0, - match=rev_sort(n1,l), + match=sort(n1,l), l2$0=match[2], s1=match[1], - match$0=rev_sort(n2,l2$0), + match$0=sort(n2,l2$0), tl$0=match$0[2], s2=match$0[1], l1=s1, @@ -12354,13 +12839,13 @@ {var t2=l2[2],h2=l2[1],t1=l1[2],h1=l1[1],c=caml_call2(cmp,h1,h2); if(0 === c) {var accu$0=[0,h1,accu],l1=t1,l2=t2,accu=accu$0;continue} - if(0 < c){var accu$1=[0,h1,accu],l1=t1,accu=accu$1;continue} - var accu$2=[0,h2,accu],l2=t2,accu=accu$2; + if(0 <= c){var accu$1=[0,h2,accu],l2=t2,accu=accu$1;continue} + var accu$2=[0,h1,accu],l1=t1,accu=accu$2; continue} - var _BI_=rev_append(l1,accu)} + var _BD_=rev_append(l1,accu)} else - var _BI_=rev_append(l2,accu); - return [0,_BI_,tl$0]}} + var _BD_=rev_append(l2,accu); + return [0,_BD_,tl$0]}} var len=length$1(l); return 2 <= len?sort(len,l)[1]:l} function compare_lengths(l1,l2) @@ -12388,9 +12873,9 @@ a2=l2$0[1], l1$1=l1$0[2], a1=l1$0[1], - _BG_=caml_call2(eq,a1,a2); - if(_BG_){var l1$0=l1$1,l2$0=l2$1;continue} - return _BG_}} + _BB_=caml_call2(eq,a1,a2); + if(_BB_){var l1$0=l1$1,l2$0=l2$1;continue} + return _BB_}} else if(! l2$0)return 1; return 0}} @@ -12398,10 +12883,10 @@ {var l1$0=l1,l2$0=l2; for(;;) {if(l1$0) - {var _BE_=l1$0[2],_BF_=l1$0[1]; + {var _Bz_=l1$0[2],_BA_=l1$0[1]; if(l2$0) - {var l2$1=l2$0[2],a2=l2$0[1],c=caml_call2(cmp,_BF_,a2); - if(0 === c){var l1$0=_BE_,l2$0=l2$1;continue} + {var l2$1=l2$0[2],a2=l2$0[1],c=caml_call2(cmp,_BA_,a2); + if(0 === c){var l1$0=_Bz_,l2$0=l2$1;continue} return c} return 1} return l2$0?-1:0}} @@ -12409,14 +12894,14 @@ {function aux(l,param) {if(l) {var tail=l[2],x=l[1]; - return [0,x,function(_BD_){return aux(tail,_BD_)}]} + return [0,x,function(_By_){return aux(tail,_By_)}]} return 0} - return function(_BC_){return aux(l,_BC_)}} + return function(_Bx_){return aux(l,_Bx_)}} function of_seq(seq) {function direct(depth,seq) {if(0 === depth) - {var _BB_=0; - return rev(fold_left(function(acc,x){return [0,x,acc]},_BB_,seq))} + {var _Bw_=0; + return rev(fold_left(function(acc,x){return [0,x,acc]},_Bw_,seq))} var match=caml_call1(seq,0); if(match) {var next=match[2],x=match[1]; @@ -12493,7 +12978,7 @@ function abs$0(x){return 0 <= x?x:- x | 0} var max_int$0=2147483647,min_int$0=-2147483648; function lognot(x){return x ^ -1} - function equal$7(_BA_,_Bz_){return _BA_ === _Bz_?1:0} + function equal$7(_Bv_,_Bu_){return _Bv_ === _Bu_?1:0} var compare$7=caml_int_compare; function min$1(x,y){return x <= y?x:y} function max$1(x,y){return y <= x?x:y} @@ -12517,13 +13002,13 @@ function make$0(n,c) {var s=caml_create_bytes(n);caml_fill_bytes(s,0,n,c);return s} function init$1(n,f) - {var s=caml_create_bytes(n),_Bx_=n - 1 | 0,_Bw_=0; - if(! (_Bx_ < 0)) - {var i=_Bw_; + {var s=caml_create_bytes(n),_Bs_=n - 1 | 0,_Br_=0; + if(! (_Bs_ < 0)) + {var i=_Br_; for(;;) {caml_bytes_unsafe_set(s,i,caml_call1(f,i)); - var _By_=i + 1 | 0; - if(_Bx_ !== i){var i=_By_;continue} + var _Bt_=i + 1 | 0; + if(_Bs_ !== i){var i=_Bt_;continue} break}} return s} var empty$0=caml_create_bytes(0); @@ -12541,11 +13026,11 @@ function sub_string(b,ofs,len) {return caml_string_of_bytes(sub(b,ofs,len))} function symbol$0(a,b) - {var c=a + b | 0,_Bv_=b < 0?1:0,match=c < 0?1:0,switch$0=0; + {var c=a + b | 0,_Bq_=b < 0?1:0,match=c < 0?1:0,switch$0=0; if(a < 0) - {if(_Bv_ && ! match)switch$0 = 1} + {if(_Bq_ && ! match)switch$0 = 1} else - if(! _Bv_ && match)switch$0 = 1; + if(! _Bq_ && match)switch$0 = 1; return switch$0?invalid_arg(cst_Bytes_extend):c} function extend(s,left,right) {var @@ -12606,23 +13091,23 @@ return caml_blit_string(s1,ofs1,s2,ofs2,len); return invalid_arg(cst_String_blit_Bytes_blit_str)} function iter$3(f,a) - {var _Bt_=caml_ml_bytes_length(a) - 1 | 0,_Bs_=0; - if(! (_Bt_ < 0)) - {var i=_Bs_; + {var _Bo_=caml_ml_bytes_length(a) - 1 | 0,_Bn_=0; + if(! (_Bo_ < 0)) + {var i=_Bn_; for(;;) {caml_call1(f,caml_bytes_unsafe_get(a,i)); - var _Bu_=i + 1 | 0; - if(_Bt_ !== i){var i=_Bu_;continue} + var _Bp_=i + 1 | 0; + if(_Bo_ !== i){var i=_Bp_;continue} break}} return 0} function iteri$1(f,a) - {var _Bq_=caml_ml_bytes_length(a) - 1 | 0,_Bp_=0; - if(! (_Bq_ < 0)) - {var i=_Bp_; + {var _Bl_=caml_ml_bytes_length(a) - 1 | 0,_Bk_=0; + if(! (_Bl_ < 0)) + {var i=_Bk_; for(;;) {caml_call2(f,i,caml_bytes_unsafe_get(a,i)); - var _Br_=i + 1 | 0; - if(_Bq_ !== i){var i=_Br_;continue} + var _Bm_=i + 1 | 0; + if(_Bl_ !== i){var i=_Bm_;continue} break}} return 0} function concat$0(sep,l) @@ -12630,33 +13115,33 @@ {var seplen=caml_ml_bytes_length(sep),acc=0,param=l,pos$1=0; for(;;) {if(param) - {var _Bm_=param[1]; + {var _Bh_=param[1]; if(param[2]) {var tl=param[2], - x=(caml_ml_bytes_length(_Bm_) + seplen | 0) + acc | 0, + x=(caml_ml_bytes_length(_Bh_) + seplen | 0) + acc | 0, acc$0=acc <= x?x:invalid_arg(cst_Bytes_concat), acc=acc$0, param=tl; continue} - var _Bo_=caml_ml_bytes_length(_Bm_) + acc | 0} + var _Bj_=caml_ml_bytes_length(_Bh_) + acc | 0} else - var _Bo_=acc; - var dst=caml_create_bytes(_Bo_),pos=pos$1,param$0=l; + var _Bj_=acc; + var dst=caml_create_bytes(_Bj_),pos=pos$1,param$0=l; for(;;) {if(param$0) - {var _Bn_=param$0[1]; + {var _Bi_=param$0[1]; if(param$0[2]) {var tl$0=param$0[2]; - caml_blit_bytes(_Bn_,0,dst,pos,caml_ml_bytes_length(_Bn_)); + caml_blit_bytes(_Bi_,0,dst,pos,caml_ml_bytes_length(_Bi_)); caml_blit_bytes - (sep,0,dst,pos + caml_ml_bytes_length(_Bn_) | 0,seplen); + (sep,0,dst,pos + caml_ml_bytes_length(_Bi_) | 0,seplen); var - pos$0=(pos + caml_ml_bytes_length(_Bn_) | 0) + seplen | 0, + pos$0=(pos + caml_ml_bytes_length(_Bi_) | 0) + seplen | 0, pos=pos$0, param$0=tl$0; continue} - caml_blit_bytes(_Bn_,0,dst,pos,caml_ml_bytes_length(_Bn_)); + caml_blit_bytes(_Bi_,0,dst,pos,caml_ml_bytes_length(_Bi_)); return dst} return dst}}} return empty$0} @@ -12669,11 +13154,11 @@ caml_blit_bytes(s2,0,r,l1,l2); return r} function is_space(param) - {var _Bl_=param - 9 | 0,switch$0=0; - if(4 < _Bl_ >>> 0) - {if(23 === _Bl_)switch$0 = 1} + {var _Bg_=param - 9 | 0,switch$0=0; + if(4 < _Bg_ >>> 0) + {if(23 === _Bg_)switch$0 = 1} else - if(2 !== _Bl_)switch$0 = 1; + if(2 !== _Bg_)switch$0 = 1; return switch$0?1:0} function trim(s) {var len=caml_ml_bytes_length(s),i=[0,0]; @@ -12686,34 +13171,34 @@ {j[1] += -1;continue} return i[1] <= j[1]?sub(s,i[1],(j[1] - i[1] | 0) + 1 | 0):empty$0}}} function escaped$0(s) - {var n=[0,0],_Be_=caml_ml_bytes_length(s) - 1 | 0,_Bd_=0; - if(! (_Be_ < 0)) - {var i$0=_Bd_; + {var n=[0,0],_A$_=caml_ml_bytes_length(s) - 1 | 0,_A__=0; + if(! (_A$_ < 0)) + {var i$0=_A__; for(;;) {var match=caml_bytes_unsafe_get(s,i$0),switch$0=0; if(32 <= match) - {var _Bi_=match - 34 | 0,switch$1=0; - if(58 < _Bi_ >>> 0) - {if(93 <= _Bi_)switch$1 = 1} + {var _Bd_=match - 34 | 0,switch$1=0; + if(58 < _Bd_ >>> 0) + {if(93 <= _Bd_)switch$1 = 1} else - if(56 < _Bi_ - 1 >>> 0){switch$0 = 1;switch$1 = 1} - if(! switch$1){var _Bj_=1;switch$0 = 2}} + if(56 < _Bd_ - 1 >>> 0){switch$0 = 1;switch$1 = 1} + if(! switch$1){var _Be_=1;switch$0 = 2}} else if(11 <= match) {if(13 === match)switch$0 = 1} else if(8 <= match)switch$0 = 1; - switch(switch$0){case 0:var _Bj_=4;break;case 1:var _Bj_=2;break} - n[1] = n[1] + _Bj_ | 0; - var _Bk_=i$0 + 1 | 0; - if(_Be_ !== i$0){var i$0=_Bk_;continue} + switch(switch$0){case 0:var _Be_=4;break;case 1:var _Be_=2;break} + n[1] = n[1] + _Be_ | 0; + var _Bf_=i$0 + 1 | 0; + if(_A$_ !== i$0){var i$0=_Bf_;continue} break}} if(n[1] === caml_ml_bytes_length(s))return copy(s); var s$0=caml_create_bytes(n[1]); n[1] = 0; - var _Bg_=caml_ml_bytes_length(s) - 1 | 0,_Bf_=0; - if(! (_Bg_ < 0)) - {var i=_Bf_; + var _Bb_=caml_ml_bytes_length(s) - 1 | 0,_Ba_=0; + if(! (_Bb_ < 0)) + {var i=_Ba_; for(;;) {var c=caml_bytes_unsafe_get(s,i),switch$2=0; if(35 <= c) @@ -12768,53 +13253,53 @@ case 3:caml_bytes_unsafe_set(s$0,n[1],c);break } n[1]++; - var _Bh_=i + 1 | 0; - if(_Bg_ !== i){var i=_Bh_;continue} + var _Bc_=i + 1 | 0; + if(_Bb_ !== i){var i=_Bc_;continue} break}} return s$0} function map$5(f,s) {var l=caml_ml_bytes_length(s); if(0 === l)return s; - var r=caml_create_bytes(l),_Bb_=l - 1 | 0,_Ba_=0; - if(! (_Bb_ < 0)) - {var i=_Ba_; + var r=caml_create_bytes(l),_A8_=l - 1 | 0,_A7_=0; + if(! (_A8_ < 0)) + {var i=_A7_; for(;;) {caml_bytes_unsafe_set(r,i,caml_call1(f,caml_bytes_unsafe_get(s,i))); - var _Bc_=i + 1 | 0; - if(_Bb_ !== i){var i=_Bc_;continue} + var _A9_=i + 1 | 0; + if(_A8_ !== i){var i=_A9_;continue} break}} return r} function mapi$1(f,s) {var l=caml_ml_bytes_length(s); if(0 === l)return s; - var r=caml_create_bytes(l),_A__=l - 1 | 0,_A9_=0; - if(! (_A__ < 0)) - {var i=_A9_; + var r=caml_create_bytes(l),_A5_=l - 1 | 0,_A4_=0; + if(! (_A5_ < 0)) + {var i=_A4_; for(;;) {caml_bytes_unsafe_set (r,i,caml_call2(f,i,caml_bytes_unsafe_get(s,i))); - var _A$_=i + 1 | 0; - if(_A__ !== i){var i=_A$_;continue} + var _A6_=i + 1 | 0; + if(_A5_ !== i){var i=_A6_;continue} break}} return r} function fold_left$1(f,x,a) - {var r=[0,x],_A7_=caml_ml_bytes_length(a) - 1 | 0,_A6_=0; - if(! (_A7_ < 0)) - {var i=_A6_; + {var r=[0,x],_A2_=caml_ml_bytes_length(a) - 1 | 0,_A1_=0; + if(! (_A2_ < 0)) + {var i=_A1_; for(;;) {r[1] = caml_call2(f,r[1],caml_bytes_unsafe_get(a,i)); - var _A8_=i + 1 | 0; - if(_A7_ !== i){var i=_A8_;continue} + var _A3_=i + 1 | 0; + if(_A2_ !== i){var i=_A3_;continue} break}} return r[1]} function fold_right$0(f,a,x) - {var r=[0,x],_A4_=caml_ml_bytes_length(a) - 1 | 0; - if(! (_A4_ < 0)) - {var i=_A4_; + {var r=[0,x],_AZ_=caml_ml_bytes_length(a) - 1 | 0; + if(! (_AZ_ < 0)) + {var i=_AZ_; for(;;) {r[1] = caml_call2(f,caml_bytes_unsafe_get(a,i),r[1]); - var _A5_=i - 1 | 0; - if(0 !== i){var i=_A5_;continue} + var _A0_=i - 1 | 0; + if(0 !== i){var i=_A0_;continue} break}} return r[1]} function exists$1(p,s) @@ -12844,8 +13329,8 @@ {var len_s=caml_ml_bytes_length(s), len_pre=caml_ml_bytes_length(prefix), - _A3_=len_pre <= len_s?1:0; - if(_A3_) + _AY_=len_pre <= len_s?1:0; + if(_AY_) {var i=0; for(;;) {if(i === len_pre)return 1; @@ -12853,14 +13338,14 @@ return 0; var i$0=i + 1 | 0,i=i$0; continue}} - return _A3_} + return _AY_} function ends_with(suffix,s) {var len_s=caml_ml_bytes_length(s), len_suf=caml_ml_bytes_length(suffix), diff=len_s - len_suf | 0, - _A2_=0 <= diff?1:0; - if(_A2_) + _AX_=0 <= diff?1:0; + if(_AX_) {var i=0; for(;;) {if(i === len_suf)return 1; @@ -12871,7 +13356,7 @@ return 0; var i$0=i + 1 | 0,i=i$0; continue}} - return _A2_} + return _AX_} function index_rec(s,lim,i,c) {var i$0=i; for(;;) @@ -12928,40 +13413,40 @@ {var l=caml_ml_bytes_length(s); if(0 <= i && ! (l < i)) try - {index_rec(s,l,i,c);var _A0_=1;return _A0_} - catch(_A1_) - {_A1_ = caml_wrap_exception(_A1_); - if(_A1_ === Not_found)return 0; - throw _A1_} + {index_rec(s,l,i,c);var _AV_=1;return _AV_} + catch(_AW_) + {_AW_ = caml_wrap_exception(_AW_); + if(_AW_ === Not_found)return 0; + throw _AW_} return invalid_arg(cst_String_contains_from_Bytes)} function contains(s,c){return contains_from(s,0,c)} function rcontains_from(s,i,c) {if(0 <= i && ! (caml_ml_bytes_length(s) <= i)) try - {rindex_rec(s,i,c);var _AY_=1;return _AY_} - catch(_AZ_) - {_AZ_ = caml_wrap_exception(_AZ_); - if(_AZ_ === Not_found)return 0; - throw _AZ_} + {rindex_rec(s,i,c);var _AT_=1;return _AT_} + catch(_AU_) + {_AU_ = caml_wrap_exception(_AU_); + if(_AU_ === Not_found)return 0; + throw _AU_} return invalid_arg(cst_String_rcontains_from_Byte)} function compare$8(x,y){return runtime.caml_bytes_compare(x,y)} function split_on_char(sep,s) {var r=[0,0], j=[0,caml_ml_bytes_length(s)], - _AU_=caml_ml_bytes_length(s) - 1 | 0; - if(! (_AU_ < 0)) - {var i=_AU_; + _AP_=caml_ml_bytes_length(s) - 1 | 0; + if(! (_AP_ < 0)) + {var i=_AP_; for(;;) {if(caml_bytes_unsafe_get(s,i) === sep) - {var _AW_=r[1]; - r[1] = [0,sub(s,i + 1 | 0,(j[1] - i | 0) - 1 | 0),_AW_]; + {var _AR_=r[1]; + r[1] = [0,sub(s,i + 1 | 0,(j[1] - i | 0) - 1 | 0),_AR_]; j[1] = i} - var _AX_=i - 1 | 0; - if(0 !== i){var i=_AX_;continue} + var _AS_=i - 1 | 0; + if(0 !== i){var i=_AS_;continue} break}} - var _AV_=r[1]; - return [0,sub(s,0,j[1]),_AV_]} + var _AQ_=r[1]; + return [0,sub(s,0,j[1]),_AQ_]} function uppercase$0(s){return map$5(uppercase,s)} function lowercase$0(s){return map$5(lowercase,s)} function capitalize(s){return apply1(uppercase,s)} @@ -12969,17 +13454,17 @@ function to_seq$2(s) {function aux(i,param) {if(i === caml_ml_bytes_length(s))return 0; - var x=caml_bytes_get(s,i),_AS_=i + 1 | 0; - return [0,x,function(_AT_){return aux(_AS_,_AT_)}]} - var _AQ_=0; - return function(_AR_){return aux(_AQ_,_AR_)}} + var x=caml_bytes_get(s,i),_AN_=i + 1 | 0; + return [0,x,function(_AO_){return aux(_AN_,_AO_)}]} + var _AL_=0; + return function(_AM_){return aux(_AL_,_AM_)}} function to_seqi(s) {function aux(i,param) {if(i === caml_ml_bytes_length(s))return 0; - var x=caml_bytes_get(s,i),_AO_=i + 1 | 0; - return [0,[0,i,x],function(_AP_){return aux(_AO_,_AP_)}]} - var _AM_=0; - return function(_AN_){return aux(_AM_,_AN_)}} + var x=caml_bytes_get(s,i),_AJ_=i + 1 | 0; + return [0,[0,i,x],function(_AK_){return aux(_AJ_,_AK_)}]} + var _AH_=0; + return function(_AI_){return aux(_AH_,_AI_)}} function of_seq$0(i) {var n=[0,0],buf=[0,make$0(256,0)]; iter @@ -13024,7 +13509,7 @@ function not_in_xA0_to_xBF(b){return 5 !== (b >>> 5 | 0)?1:0} function not_in_x80_to_x9F(b){return 4 !== (b >>> 5 | 0)?1:0} function not_in_x90_to_xBF(b) - {var _AK_=b < 144?1:0,_AL_=_AK_ || (191 < b?1:0);return _AL_} + {var _AF_=b < 144?1:0,_AG_=_AF_ || (191 < b?1:0);return _AG_} function not_in_x80_to_x8F(b){return 8 !== (b >>> 4 | 0)?1:0} function utf_8_uchar_3(b0,b1,b2) {return (b0 & 15) << 12 | (b1 & 63) << 6 | b2 & 63} @@ -13130,14 +13615,14 @@ :dec_ret(2,(b0 & 31) << 6 | b1$5 & 63)}} return dec_invalid(1)} function set_utf_8_uchar(b,i,u) - {function set(_AJ_,_AI_,_AH_) - {caml_bytes_unsafe_set(_AJ_,_AI_,_AH_);return 0} + {function set(_AE_,_AD_,_AC_) + {caml_bytes_unsafe_set(_AE_,_AD_,_AC_);return 0} var max=caml_ml_bytes_length(b) - 1 | 0; if(0 <= u) {if(127 < u) {if(2047 < u) {if(65535 < u) - {if(1114111 < u)throw [0,Assert_failure,_B_]; + {if(1114111 < u)throw [0,Assert_failure,_z_]; var last=i + 3 | 0; return max < last ?0 @@ -13161,7 +13646,7 @@ 2)} caml_bytes_set(b,i,u); return 1} - throw [0,Assert_failure,_C_]} + throw [0,Assert_failure,_A_]} function is_valid_utf_8(b) {var max=caml_ml_bytes_length(b) - 1 | 0,i=0; for(;;) @@ -13297,7 +13782,7 @@ if(0 <= i && ! (max < i)) {if(0 <= u) {if(65535 < u) - {if(1114111 < u)throw [0,Assert_failure,_D_]; + {if(1114111 < u)throw [0,Assert_failure,_B_]; var last=i + 3 | 0; if(max < last)return 0; var @@ -13309,7 +13794,7 @@ return 4} var last$0=i + 1 | 0; return max < last$0?0:(set$0(b,i,u),2)} - throw [0,Assert_failure,_E_]} + throw [0,Assert_failure,_C_]} return invalid_arg(cst_index_out_of_bounds$0)} function is_valid_utf_16be(b) {var max=caml_ml_bytes_length(b) - 1 | 0,i=0; @@ -13348,7 +13833,7 @@ if(0 <= i && ! (max < i)) {if(0 <= u) {if(65535 < u) - {if(1114111 < u)throw [0,Assert_failure,_F_]; + {if(1114111 < u)throw [0,Assert_failure,_D_]; var last=i + 3 | 0; if(max < last)return 0; var @@ -13360,7 +13845,7 @@ return 4} var last$0=i + 1 | 0; return max < last$0?0:(caml_bytes_set16(b,i,u),2)} - throw [0,Assert_failure,_G_]} + throw [0,Assert_failure,_E_]} return invalid_arg(cst_index_out_of_bounds$2)} function is_valid_utf_16le(b) {var max=caml_ml_bytes_length(b) - 1 | 0,i=0; @@ -13494,53 +13979,53 @@ {var seplen=caml_ml_string_length(sep),acc=0,param=l,pos$1=0; for(;;) {if(param) - {var _AE_=param[1]; + {var _Az_=param[1]; if(param[2]) {var tl=param[2], - x=(caml_ml_string_length(_AE_) + seplen | 0) + acc | 0, + x=(caml_ml_string_length(_Az_) + seplen | 0) + acc | 0, acc$0=acc <= x?x:invalid_arg(cst_String_concat), acc=acc$0, param=tl; continue} - var _AG_=caml_ml_string_length(_AE_) + acc | 0} + var _AB_=caml_ml_string_length(_Az_) + acc | 0} else - var _AG_=acc; - var dst=caml_create_bytes(_AG_),pos=pos$1,param$0=l; + var _AB_=acc; + var dst=caml_create_bytes(_AB_),pos=pos$1,param$0=l; for(;;) {if(param$0) - {var _AF_=param$0[1]; + {var _AA_=param$0[1]; if(param$0[2]) {var tl$0=param$0[2]; - caml_blit_string(_AF_,0,dst,pos,caml_ml_string_length(_AF_)); + caml_blit_string(_AA_,0,dst,pos,caml_ml_string_length(_AA_)); caml_blit_string - (sep,0,dst,pos + caml_ml_string_length(_AF_) | 0,seplen); + (sep,0,dst,pos + caml_ml_string_length(_AA_) | 0,seplen); var - pos$0=(pos + caml_ml_string_length(_AF_) | 0) + seplen | 0, + pos$0=(pos + caml_ml_string_length(_AA_) | 0) + seplen | 0, pos=pos$0, param$0=tl$0; continue} - caml_blit_string(_AF_,0,dst,pos,caml_ml_string_length(_AF_))} + caml_blit_string(_AA_,0,dst,pos,caml_ml_string_length(_AA_))} return caml_string_of_bytes(dst)}}} return cst$3} function iter$4(f,s) - {var _AC_=caml_ml_string_length(s) - 1 | 0,_AB_=0; - if(! (_AC_ < 0)) - {var i=_AB_; + {var _Ax_=caml_ml_string_length(s) - 1 | 0,_Aw_=0; + if(! (_Ax_ < 0)) + {var i=_Aw_; for(;;) {caml_call1(f,caml_string_unsafe_get(s,i)); - var _AD_=i + 1 | 0; - if(_AC_ !== i){var i=_AD_;continue} + var _Ay_=i + 1 | 0; + if(_Ax_ !== i){var i=_Ay_;continue} break}} return 0} function iteri$2(f,s) - {var _Az_=caml_ml_string_length(s) - 1 | 0,_Ay_=0; - if(! (_Az_ < 0)) - {var i=_Ay_; + {var _Au_=caml_ml_string_length(s) - 1 | 0,_At_=0; + if(! (_Au_ < 0)) + {var i=_At_; for(;;) {caml_call2(f,i,caml_string_unsafe_get(s,i)); - var _AA_=i + 1 | 0; - if(_Az_ !== i){var i=_AA_;continue} + var _Av_=i + 1 | 0; + if(_Au_ !== i){var i=_Av_;continue} break}} return 0} function map$6(f,s) @@ -13554,11 +14039,11 @@ function exists$2(f,s){return exists$1(f,caml_bytes_of_string(s))} function for_all$2(f,s){return for_all$1(f,caml_bytes_of_string(s))} function is_space$0(param) - {var _Ax_=param - 9 | 0,switch$0=0; - if(4 < _Ax_ >>> 0) - {if(23 === _Ax_)switch$0 = 1} + {var _As_=param - 9 | 0,switch$0=0; + if(4 < _As_ >>> 0) + {if(23 === _As_)switch$0 = 1} else - if(2 !== _Ax_)switch$0 = 1; + if(2 !== _As_)switch$0 = 1; return switch$0?1:0} function trim$0(s) {if(caml_string_equal(s,cst$4))return s; @@ -13574,11 +14059,11 @@ {var n=caml_ml_string_length(s),i=0; for(;;) {if(n <= i)return s; - var match=caml_string_unsafe_get(s,i),_Aw_=match - 32 | 0,switch$0=0; - if(59 < _Aw_ >>> 0) - {if(33 < _Aw_ - 61 >>> 0)switch$0 = 1} + var match=caml_string_unsafe_get(s,i),_Ar_=match - 32 | 0,switch$0=0; + if(59 < _Ar_ >>> 0) + {if(33 < _Ar_ - 61 >>> 0)switch$0 = 1} else - if(2 === _Aw_)switch$0 = 1; + if(2 === _Ar_)switch$0 = 1; if(switch$0) return caml_string_of_bytes(escaped$0(caml_bytes_of_string(s))); var i$0=i + 1 | 0,i=i$0; @@ -13640,21 +14125,21 @@ {var l=caml_ml_string_length(s); if(0 <= i && ! (l < i)) try - {index_rec$0(s,l,i,c);var _Au_=1;return _Au_} - catch(_Av_) - {_Av_ = caml_wrap_exception(_Av_); - if(_Av_ === Not_found)return 0; - throw _Av_} + {index_rec$0(s,l,i,c);var _Ap_=1;return _Ap_} + catch(_Aq_) + {_Aq_ = caml_wrap_exception(_Aq_); + if(_Aq_ === Not_found)return 0; + throw _Aq_} return invalid_arg(cst_String_contains_from_Bytes$0)} function contains$0(s,c){return contains_from$0(s,0,c)} function rcontains_from$0(s,i,c) {if(0 <= i && ! (caml_ml_string_length(s) <= i)) try - {rindex_rec$0(s,i,c);var _As_=1;return _As_} - catch(_At_) - {_At_ = caml_wrap_exception(_At_); - if(_At_ === Not_found)return 0; - throw _At_} + {rindex_rec$0(s,i,c);var _An_=1;return _An_} + catch(_Ao_) + {_Ao_ = caml_wrap_exception(_Ao_); + if(_Ao_ === Not_found)return 0; + throw _Ao_} return invalid_arg(cst_String_rcontains_from_Byte$0)} function uppercase_ascii$1(s) {return caml_string_of_bytes(uppercase_ascii$0(caml_bytes_of_string(s)))} @@ -13668,8 +14153,8 @@ {var len_s=caml_ml_string_length(s), len_pre=caml_ml_string_length(prefix), - _Ar_=len_pre <= len_s?1:0; - if(_Ar_) + _Am_=len_pre <= len_s?1:0; + if(_Am_) {var i=0; for(;;) {if(i === len_pre)return 1; @@ -13677,14 +14162,14 @@ return 0; var i$0=i + 1 | 0,i=i$0; continue}} - return _Ar_} + return _Am_} function ends_with$0(suffix,s) {var len_s=caml_ml_string_length(s), len_suf=caml_ml_string_length(suffix), diff=len_s - len_suf | 0, - _Aq_=0 <= diff?1:0; - if(_Aq_) + _Al_=0 <= diff?1:0; + if(_Al_) {var i=0; for(;;) {if(i === len_suf)return 1; @@ -13695,24 +14180,24 @@ return 0; var i$0=i + 1 | 0,i=i$0; continue}} - return _Aq_} + return _Al_} function split_on_char$0(sep,s) {var r=[0,0], j=[0,caml_ml_string_length(s)], - _Am_=caml_ml_string_length(s) - 1 | 0; - if(! (_Am_ < 0)) - {var i=_Am_; + _Ah_=caml_ml_string_length(s) - 1 | 0; + if(! (_Ah_ < 0)) + {var i=_Ah_; for(;;) {if(caml_string_unsafe_get(s,i) === sep) - {var _Ao_=r[1]; - r[1] = [0,sub$0(s,i + 1 | 0,(j[1] - i | 0) - 1 | 0),_Ao_]; + {var _Aj_=r[1]; + r[1] = [0,sub$0(s,i + 1 | 0,(j[1] - i | 0) - 1 | 0),_Aj_]; j[1] = i} - var _Ap_=i - 1 | 0; - if(0 !== i){var i=_Ap_;continue} + var _Ak_=i - 1 | 0; + if(0 !== i){var i=_Ak_;continue} break}} - var _An_=r[1]; - return [0,sub$0(s,0,j[1]),_An_]} + var _Ai_=r[1]; + return [0,sub$0(s,0,j[1]),_Ai_]} function uppercase$1(s) {return caml_string_of_bytes(uppercase$0(caml_bytes_of_string(s)))} function lowercase$1(s) @@ -13833,8 +14318,8 @@ get_int64_be$0, get_int64_le$0]; caml_register_global(791,include$2,"Stdlib__String"); - function equal$10(param,_Al_){return 1} - function compare$10(param,_Ak_){return 0} + function equal$10(param,_Ag_){return 1} + function compare$10(param,_Af_){return 0} function to_string$2(param){return cst$5} var Stdlib_Unit=[0,equal$10,compare$10,to_string$2]; caml_register_global(792,Stdlib_Unit,"Stdlib__Unit"); @@ -13883,24 +14368,24 @@ function init$3(l,f) {if(0 === l)return [0]; if(0 <= l) - {var res=caml_make_vect(l,caml_call1(f,0)),_Ai_=l - 1 | 0,_Ah_=1; - if(! (_Ai_ < 1)) - {var i=_Ah_; + {var res=caml_make_vect(l,caml_call1(f,0)),_Ad_=l - 1 | 0,_Ac_=1; + if(! (_Ad_ < 1)) + {var i=_Ac_; for(;;) {res[1 + i] = caml_call1(f,i); - var _Aj_=i + 1 | 0; - if(_Ai_ !== i){var i=_Aj_;continue} + var _Ae_=i + 1 | 0; + if(_Ad_ !== i){var i=_Ae_;continue} break}} return res} return invalid_arg(cst_Array_init)} function create_matrix(sx,sy,init) - {var res=caml_make_vect(sx,[0]),_Af_=sx - 1 | 0,_Ae_=0; - if(! (_Af_ < 0)) - {var x=_Ae_; + {var res=caml_make_vect(sx,[0]),_Aa_=sx - 1 | 0,_z$_=0; + if(! (_Aa_ < 0)) + {var x=_z$_; for(;;) {res[1 + x] = caml_make_vect(sy,init); - var _Ag_=x + 1 | 0; - if(_Af_ !== x){var x=_Ag_;continue} + var _Ab_=x + 1 | 0; + if(_Aa_ !== x){var x=_Ab_;continue} break}} return res} function copy$1(a) @@ -13942,72 +14427,72 @@ return runtime.caml_array_blit(a1,ofs1,a2,ofs2,len); return invalid_arg(cst_Array_blit)} function iter$5(f,a) - {var _Ac_=a.length - 1 - 1 | 0,_Ab_=0; - if(! (_Ac_ < 0)) - {var i=_Ab_; + {var _z9_=a.length - 1 - 1 | 0,_z8_=0; + if(! (_z9_ < 0)) + {var i=_z8_; for(;;) {caml_call1(f,a[1 + i]); - var _Ad_=i + 1 | 0; - if(_Ac_ !== i){var i=_Ad_;continue} + var _z__=i + 1 | 0; + if(_z9_ !== i){var i=_z__;continue} break}} return 0} function iter2$1(f,a,b) {if(a.length - 1 !== b.length - 1) return invalid_arg(cst_Array_iter2_arrays_must_ha); - var _z$_=a.length - 1 - 1 | 0,_z__=0; - if(! (_z$_ < 0)) - {var i=_z__; + var _z6_=a.length - 1 - 1 | 0,_z5_=0; + if(! (_z6_ < 0)) + {var i=_z5_; for(;;) {caml_call2(f,a[1 + i],b[1 + i]); - var _Aa_=i + 1 | 0; - if(_z$_ !== i){var i=_Aa_;continue} + var _z7_=i + 1 | 0; + if(_z6_ !== i){var i=_z7_;continue} break}} return 0} function map$7(f,a) {var l=a.length - 1; if(0 === l)return [0]; - var r=caml_make_vect(l,caml_call1(f,a[1])),_z8_=l - 1 | 0,_z7_=1; - if(! (_z8_ < 1)) - {var i=_z7_; + var r=caml_make_vect(l,caml_call1(f,a[1])),_z3_=l - 1 | 0,_z2_=1; + if(! (_z3_ < 1)) + {var i=_z2_; for(;;) {r[1 + i] = caml_call1(f,a[1 + i]); - var _z9_=i + 1 | 0; - if(_z8_ !== i){var i=_z9_;continue} + var _z4_=i + 1 | 0; + if(_z3_ !== i){var i=_z4_;continue} break}} return r} function map2$1(f,a,b) {var la=a.length - 1,lb=b.length - 1; if(la !== lb)return invalid_arg(cst_Array_map2_arrays_must_hav); if(0 === la)return [0]; - var r=caml_make_vect(la,caml_call2(f,a[1],b[1])),_z5_=la - 1 | 0,_z4_=1; - if(! (_z5_ < 1)) - {var i=_z4_; + var r=caml_make_vect(la,caml_call2(f,a[1],b[1])),_z0_=la - 1 | 0,_zZ_=1; + if(! (_z0_ < 1)) + {var i=_zZ_; for(;;) {r[1 + i] = caml_call2(f,a[1 + i],b[1 + i]); - var _z6_=i + 1 | 0; - if(_z5_ !== i){var i=_z6_;continue} + var _z1_=i + 1 | 0; + if(_z0_ !== i){var i=_z1_;continue} break}} return r} function iteri$3(f,a) - {var _z2_=a.length - 1 - 1 | 0,_z1_=0; - if(! (_z2_ < 0)) - {var i=_z1_; + {var _zX_=a.length - 1 - 1 | 0,_zW_=0; + if(! (_zX_ < 0)) + {var i=_zW_; for(;;) {caml_call2(f,i,a[1 + i]); - var _z3_=i + 1 | 0; - if(_z2_ !== i){var i=_z3_;continue} + var _zY_=i + 1 | 0; + if(_zX_ !== i){var i=_zY_;continue} break}} return 0} function mapi$3(f,a) {var l=a.length - 1; if(0 === l)return [0]; - var r=caml_make_vect(l,caml_call2(f,0,a[1])),_zZ_=l - 1 | 0,_zY_=1; - if(! (_zZ_ < 1)) - {var i=_zY_; + var r=caml_make_vect(l,caml_call2(f,0,a[1])),_zU_=l - 1 | 0,_zT_=1; + if(! (_zU_ < 1)) + {var i=_zT_; for(;;) {r[1 + i] = caml_call2(f,i,a[1 + i]); - var _z0_=i + 1 | 0; - if(_zZ_ !== i){var i=_z0_;continue} + var _zV_=i + 1 | 0; + if(_zU_ !== i){var i=_zV_;continue} break}} return r} function to_list$1(a) @@ -14044,13 +14529,13 @@ return a}} return [0]} function fold_left$3(f,x,a) - {var r=[0,x],_zW_=a.length - 1 - 1 | 0,_zV_=0; - if(! (_zW_ < 0)) - {var i=_zV_; + {var r=[0,x],_zR_=a.length - 1 - 1 | 0,_zQ_=0; + if(! (_zR_ < 0)) + {var i=_zQ_; for(;;) {r[1] = caml_call2(f,r[1],a[1 + i]); - var _zX_=i + 1 | 0; - if(_zW_ !== i){var i=_zX_;continue} + var _zS_=i + 1 | 0; + if(_zR_ !== i){var i=_zS_;continue} break}} return r[1]} function fold_left_map$0(f,acc,input_array) @@ -14062,10 +14547,10 @@ acc$0=match[1], output_array=caml_make_vect(len,elt), acc$1=[0,acc$0], - _zT_=len - 1 | 0, - _zS_=1; - if(! (_zT_ < 1)) - {var i=_zS_; + _zO_=len - 1 | 0, + _zN_=1; + if(! (_zO_ < 1)) + {var i=_zN_; for(;;) {var match$0=caml_call2(f,acc$1[1],input_array[1 + i]), @@ -14073,18 +14558,18 @@ acc$2=match$0[1]; acc$1[1] = acc$2; output_array[1 + i] = elt$0; - var _zU_=i + 1 | 0; - if(_zT_ !== i){var i=_zU_;continue} + var _zP_=i + 1 | 0; + if(_zO_ !== i){var i=_zP_;continue} break}} return [0,acc$1[1],output_array]} function fold_right$2(f,a,x) - {var r=[0,x],_zQ_=a.length - 1 - 1 | 0; - if(! (_zQ_ < 0)) - {var i=_zQ_; + {var r=[0,x],_zL_=a.length - 1 - 1 | 0; + if(! (_zL_ < 0)) + {var i=_zL_; for(;;) {r[1] = caml_call2(f,a[1 + i],r[1]); - var _zR_=i - 1 | 0; - if(0 !== i){var i=_zR_;continue} + var _zM_=i - 1 | 0; + if(0 !== i){var i=_zM_;continue} break}} return r[1]} function exists$3(p,a) @@ -14157,29 +14642,29 @@ n=x.length - 1, a=caml_make_vect(n,a0), b=caml_make_vect(n,b0), - _zO_=n - 1 | 0, - _zN_=1; - if(! (_zO_ < 1)) - {var i=_zN_; + _zJ_=n - 1 | 0, + _zI_=1; + if(! (_zJ_ < 1)) + {var i=_zI_; for(;;) {var match$0=x[1 + i],bi=match$0[2],ai=match$0[1]; a[1 + i] = ai; b[1 + i] = bi; - var _zP_=i + 1 | 0; - if(_zO_ !== i){var i=_zP_;continue} + var _zK_=i + 1 | 0; + if(_zJ_ !== i){var i=_zK_;continue} break}} return [0,a,b]} function combine$0(a,b) {var na=a.length - 1,nb=b.length - 1; if(na !== nb)invalid_arg(cst_Array_combine); if(0 === na)return [0]; - var x=caml_make_vect(na,[0,a[1],b[1]]),_zL_=na - 1 | 0,_zK_=1; - if(! (_zL_ < 1)) - {var i=_zK_; + var x=caml_make_vect(na,[0,a[1],b[1]]),_zG_=na - 1 | 0,_zF_=1; + if(! (_zG_ < 1)) + {var i=_zF_; for(;;) {x[1 + i] = [0,a[1 + i],b[1 + i]]; - var _zM_=i + 1 | 0; - if(_zL_ !== i){var i=_zM_;continue} + var _zH_=i + 1 | 0; + if(_zG_ !== i){var i=_zH_;continue} break}} return x} var Bottom=[248,cst_Stdlib_Array_Bottom,caml_fresh_oo_id(0)]; @@ -14187,19 +14672,19 @@ {function maxson(l,i) {var i31=((i + i | 0) + i | 0) + 1 | 0,x=[0,i31]; if((i31 + 2 | 0) < l) - {var _zD_=i31 + 1 | 0,_zE_=caml_check_bound(a,_zD_)[1 + _zD_]; - if(caml_call2(cmp,caml_check_bound(a,i31)[1 + i31],_zE_) < 0) + {var _zy_=i31 + 1 | 0,_zz_=caml_check_bound(a,_zy_)[1 + _zy_]; + if(caml_call2(cmp,caml_check_bound(a,i31)[1 + i31],_zz_) < 0) x[1] = i31 + 1 | 0; var - _zF_=i31 + 2 | 0, - _zG_=caml_check_bound(a,_zF_)[1 + _zF_], - _zH_=x[1]; - if(caml_call2(cmp,caml_check_bound(a,_zH_)[1 + _zH_],_zG_) < 0) + _zA_=i31 + 2 | 0, + _zB_=caml_check_bound(a,_zA_)[1 + _zA_], + _zC_=x[1]; + if(caml_call2(cmp,caml_check_bound(a,_zC_)[1 + _zC_],_zB_) < 0) x[1] = i31 + 2 | 0; return x[1]} if((i31 + 1 | 0) < l) - {var _zI_=i31 + 1 | 0,_zJ_=caml_check_bound(a,_zI_)[1 + _zI_]; - if(! (0 <= caml_call2(cmp,caml_check_bound(a,i31)[1 + i31],_zJ_))) + {var _zD_=i31 + 1 | 0,_zE_=caml_check_bound(a,_zD_)[1 + _zD_]; + if(! (0 <= caml_call2(cmp,caml_check_bound(a,i31)[1 + i31],_zE_))) return i31 + 1 | 0} if(i31 < l)return i31; throw [0,Bottom,i]} @@ -14208,15 +14693,15 @@ for(;;) {var j=maxson(l,i$0); if(0 < caml_call2(cmp,caml_check_bound(a,j)[1 + j],e)) - {var _zC_=caml_check_bound(a,j)[1 + j]; - caml_check_bound(a,i$0)[1 + i$0] = _zC_; + {var _zx_=caml_check_bound(a,j)[1 + j]; + caml_check_bound(a,i$0)[1 + i$0] = _zx_; var i$0=j; continue} caml_check_bound(a,i$0)[1 + i$0] = e; return 0}} function trickle(l,i,e) {try - {var _zB_=trickledown(l,i,e);return _zB_} + {var _zw_=trickledown(l,i,e);return _zw_} catch(exn) {exn = caml_wrap_exception(exn); if(exn[1] === Bottom) @@ -14225,59 +14710,59 @@ function bubbledown(l,i) {var i$0=i; for(;;) - {var i$1=maxson(l,i$0),_zA_=caml_check_bound(a,i$1)[1 + i$1]; - caml_check_bound(a,i$0)[1 + i$0] = _zA_; + {var i$1=maxson(l,i$0),_zv_=caml_check_bound(a,i$1)[1 + i$1]; + caml_check_bound(a,i$0)[1 + i$0] = _zv_; var i$0=i$1; continue}} function bubble(l,i) {try - {var _zz_=bubbledown(l,i);return _zz_} + {var _zu_=bubbledown(l,i);return _zu_} catch(exn) {exn = caml_wrap_exception(exn); if(exn[1] === Bottom){var i$0=exn[2];return i$0} throw exn}} - var l=a.length - 1,_zr_=((l + 1 | 0) / 3 | 0) - 1 | 0; - if(! (_zr_ < 0)) - {var i$2=_zr_; + var l=a.length - 1,_zm_=((l + 1 | 0) / 3 | 0) - 1 | 0; + if(! (_zm_ < 0)) + {var i$2=_zm_; for(;;) {trickle(l,i$2,caml_check_bound(a,i$2)[1 + i$2]); - var _zy_=i$2 - 1 | 0; - if(0 !== i$2){var i$2=_zy_;continue} + var _zt_=i$2 - 1 | 0; + if(0 !== i$2){var i$2=_zt_;continue} break}} - var _zs_=l - 1 | 0; - if(! (_zs_ < 2)) - {var i$0=_zs_; + var _zn_=l - 1 | 0; + if(! (_zn_ < 2)) + {var i$0=_zn_; a: for(;;) {var e$0=caml_check_bound(a,i$0)[1 + i$0], - _zw_=caml_check_bound(a,0)[1]; - caml_check_bound(a,i$0)[1 + i$0] = _zw_; + _zr_=caml_check_bound(a,0)[1]; + caml_check_bound(a,i$0)[1 + i$0] = _zr_; var i$1=bubble(i$0,0),i=i$1; for(;;) {var father=(i - 1 | 0) / 3 | 0; - if(i === father)throw [0,Assert_failure,_H_]; + if(i === father)throw [0,Assert_failure,_F_]; if (0 <= caml_call2(cmp,caml_check_bound(a,father)[1 + father],e$0)) caml_check_bound(a,i)[1 + i] = e$0; else - {var _zq_=caml_check_bound(a,father)[1 + father]; - caml_check_bound(a,i)[1 + i] = _zq_; + {var _zl_=caml_check_bound(a,father)[1 + father]; + caml_check_bound(a,i)[1 + i] = _zl_; if(0 < father){var i=father;continue} caml_check_bound(a,0)[1] = e$0} - var _zx_=i$0 - 1 | 0; - if(2 !== i$0){var i$0=_zx_;continue a} + var _zs_=i$0 - 1 | 0; + if(2 !== i$0){var i$0=_zs_;continue a} break} break}} - var _zt_=1 < l?1:0; - if(_zt_) - {var e=caml_check_bound(a,1)[2],_zu_=caml_check_bound(a,0)[1]; - caml_check_bound(a,1)[2] = _zu_; + var _zo_=1 < l?1:0; + if(_zo_) + {var e=caml_check_bound(a,1)[2],_zp_=caml_check_bound(a,0)[1]; + caml_check_bound(a,1)[2] = _zp_; caml_check_bound(a,0)[1] = e; - var _zv_=0} + var _zq_=0} else - var _zv_=_zt_; - return _zv_} + var _zq_=_zo_; + return _zq_} function fast_sort$0(cmp,a) {function merge(src1ofs,src1len,src2,src2ofs,src2len,dst,dstofs) {var @@ -14315,30 +14800,30 @@ continue} return blit$1(src2,i2,dst,d + 1 | 0,src2r - i2 | 0)}} function isortto(srcofs,dst,dstofs,len) - {var _zi_=len - 1 | 0,_zh_=0; - if(! (_zi_ < 0)) - {var i=_zh_; + {var _zd_=len - 1 | 0,_zc_=0; + if(! (_zd_ < 0)) + {var i=_zc_; a: for(;;) {var - _zj_=srcofs + i | 0, - e=caml_check_bound(a,_zj_)[1 + _zj_], + _ze_=srcofs + i | 0, + e=caml_check_bound(a,_ze_)[1 + _ze_], j=[0,(dstofs + i | 0) - 1 | 0]; for(;;) {if(dstofs <= j[1]) - {var _zk_=j[1]; - if(0 < caml_call2(cmp,caml_check_bound(dst,_zk_)[1 + _zk_],e)) + {var _zf_=j[1]; + if(0 < caml_call2(cmp,caml_check_bound(dst,_zf_)[1 + _zf_],e)) {var - _zl_=j[1], - _zm_=caml_check_bound(dst,_zl_)[1 + _zl_], - _zn_=j[1] + 1 | 0; - caml_check_bound(dst,_zn_)[1 + _zn_] = _zm_; + _zg_=j[1], + _zh_=caml_check_bound(dst,_zg_)[1 + _zg_], + _zi_=j[1] + 1 | 0; + caml_check_bound(dst,_zi_)[1 + _zi_] = _zh_; j[1] += -1; continue}} - var _zo_=j[1] + 1 | 0; - caml_check_bound(dst,_zo_)[1 + _zo_] = e; - var _zp_=i + 1 | 0; - if(_zi_ !== i){var i=_zp_;continue a} + var _zj_=j[1] + 1 | 0; + caml_check_bound(dst,_zj_)[1 + _zj_] = e; + var _zk_=i + 1 | 0; + if(_zd_ !== i){var i=_zk_;continue a} break} break}} return 0} @@ -14360,21 +14845,21 @@ function to_seq$4(a) {function aux(i,param) {if(i < a.length - 1) - {var x=a[1 + i],_zf_=i + 1 | 0; - return [0,x,function(_zg_){return aux(_zf_,_zg_)}]} + {var x=a[1 + i],_za_=i + 1 | 0; + return [0,x,function(_zb_){return aux(_za_,_zb_)}]} return 0} - var _zd_=0; - return function(_ze_){return aux(_zd_,_ze_)}} + var _y__=0; + return function(_y$_){return aux(_y__,_y$_)}} function to_seqi$1(a) {function aux(i,param) {if(i < a.length - 1) - {var x=a[1 + i],_zb_=i + 1 | 0; - return [0,[0,i,x],function(_zc_){return aux(_zb_,_zc_)}]} + {var x=a[1 + i],_y8_=i + 1 | 0; + return [0,[0,i,x],function(_y9_){return aux(_y8_,_y9_)}]} return 0} - var _y$_=0; - return function(_za_){return aux(_y$_,_za_)}} + var _y6_=0; + return function(_y7_){return aux(_y6_,_y7_)}} function of_seq$2(i$2) - {var _y__=0,l=fold_left(function(acc,x){return [0,x,acc]},_y__,i$2); + {var _y5_=0,l=fold_left(function(acc,x){return [0,x,acc]},_y5_,i$2); if(l) {var tl=l[2], @@ -14441,8 +14926,8 @@ function is_nan(x){return x != x?1:0} var pi=3.14159265358979312; function is_integer(x) - {var _y9_=x == runtime.caml_trunc_float(x)?1:0; - return _y9_?is_finite(x):_y9_} + {var _y4_=x == runtime.caml_trunc_float(x)?1:0; + return _y4_?is_finite(x):_y4_} function succ$0(x){return caml_nextafter_float(x,infinity)} function pred$0(x){return caml_nextafter_float(x,neg_infinity)} function equal$11(x,y){return 0 === caml_float_compare(x,y)?1:0} @@ -14488,41 +14973,41 @@ return [0,x,y]} function hash$0(x){return caml_hash(10,100,0,x)} function unsafe_fill(a,ofs,len,v) - {var _y7_=(ofs + len | 0) - 1 | 0; - if(! (_y7_ < ofs)) + {var _y2_=(ofs + len | 0) - 1 | 0; + if(! (_y2_ < ofs)) {var i=ofs; for(;;) {a[1 + i] = v; - var _y8_=i + 1 | 0; - if(_y7_ !== i){var i=_y8_;continue} + var _y3_=i + 1 | 0; + if(_y2_ !== i){var i=_y3_;continue} break}} return 0} function check(a,ofs,len,msg) - {var _y3_=ofs < 0?1:0; - if(_y3_) - var _y4_=_y3_; + {var _yY_=ofs < 0?1:0; + if(_yY_) + var _yZ_=_yY_; else - {var _y5_=len < 0?1:0; - if(_y5_) - var _y4_=_y5_; + {var _y0_=len < 0?1:0; + if(_y0_) + var _yZ_=_y0_; else var - _y6_=(ofs + len | 0) < 0?1:0, - _y4_=_y6_ || (a.length - 1 < (ofs + len | 0)?1:0)} - return _y4_?invalid_arg(msg):_y4_} + _y1_=(ofs + len | 0) < 0?1:0, + _yZ_=_y1_ || (a.length - 1 < (ofs + len | 0)?1:0)} + return _yZ_?invalid_arg(msg):_yZ_} function make$2(n,v) {var result=caml_floatarray_create(n); unsafe_fill(result,0,n,v); return result} function init$4(l,f) {if(0 <= l) - {var res=caml_floatarray_create(l),_y1_=l - 1 | 0,_y0_=0; - if(! (_y1_ < 0)) - {var i=_y0_; + {var res=caml_floatarray_create(l),_yW_=l - 1 | 0,_yV_=0; + if(! (_yW_ < 0)) + {var i=_yV_; for(;;) {res[1 + i] = caml_call1(f,i); - var _y2_=i + 1 | 0; - if(_y1_ !== i){var i=_y2_;continue} + var _yX_=i + 1 | 0; + if(_yW_ !== i){var i=_yX_;continue} break}} return res} return invalid_arg(cst_Float_Array_init)} @@ -14554,7 +15039,7 @@ var i$0=i + hlen | 0,l$0=tl$0,i=i$0; continue} if(i === acc)return result; - throw [0,Assert_failure,_I_]}}} + throw [0,Assert_failure,_G_]}}} function sub$2(a,ofs,len) {check(a,ofs,len,cst_Float_Array_sub); var result=caml_floatarray_create(len); @@ -14571,7 +15056,7 @@ check(dst,dofs,len,cst_Float_array_blit$0); return caml_floatarray_blit(src,sofs,dst,dofs,len)} function to_list$2(a) - {return init$0(a.length - 1,function(_yZ_){return a[1 + _yZ_]})} + {return init$0(a.length - 1,function(_yU_){return a[1 + _yU_]})} function of_list$0(l) {var result=caml_floatarray_create(length$1(l)),i=0,l$0=l; for(;;) @@ -14582,87 +15067,87 @@ continue} return result}} function iter$6(f,a) - {var _yX_=a.length - 1 - 1 | 0,_yW_=0; - if(! (_yX_ < 0)) - {var i=_yW_; + {var _yS_=a.length - 1 - 1 | 0,_yR_=0; + if(! (_yS_ < 0)) + {var i=_yR_; for(;;) {caml_call1(f,a[1 + i]); - var _yY_=i + 1 | 0; - if(_yX_ !== i){var i=_yY_;continue} + var _yT_=i + 1 | 0; + if(_yS_ !== i){var i=_yT_;continue} break}} return 0} function iter2$2(f,a,b) {if(a.length - 1 !== b.length - 1) return invalid_arg(cst_Float_Array_iter2_arrays_m); - var _yU_=a.length - 1 - 1 | 0,_yT_=0; - if(! (_yU_ < 0)) - {var i=_yT_; + var _yP_=a.length - 1 - 1 | 0,_yO_=0; + if(! (_yP_ < 0)) + {var i=_yO_; for(;;) {caml_call2(f,a[1 + i],b[1 + i]); - var _yV_=i + 1 | 0; - if(_yU_ !== i){var i=_yV_;continue} + var _yQ_=i + 1 | 0; + if(_yP_ !== i){var i=_yQ_;continue} break}} return 0} function map$8(f,a) - {var l=a.length - 1,r=caml_floatarray_create(l),_yR_=l - 1 | 0,_yQ_=0; - if(! (_yR_ < 0)) - {var i=_yQ_; + {var l=a.length - 1,r=caml_floatarray_create(l),_yM_=l - 1 | 0,_yL_=0; + if(! (_yM_ < 0)) + {var i=_yL_; for(;;) {r[1 + i] = caml_call1(f,a[1 + i]); - var _yS_=i + 1 | 0; - if(_yR_ !== i){var i=_yS_;continue} + var _yN_=i + 1 | 0; + if(_yM_ !== i){var i=_yN_;continue} break}} return r} function map2$2(f,a,b) {var la=a.length - 1,lb=b.length - 1; if(la !== lb)return invalid_arg(cst_Float_Array_map2_arrays_mu); - var r=caml_floatarray_create(la),_yO_=la - 1 | 0,_yN_=0; - if(! (_yO_ < 0)) - {var i=_yN_; + var r=caml_floatarray_create(la),_yJ_=la - 1 | 0,_yI_=0; + if(! (_yJ_ < 0)) + {var i=_yI_; for(;;) {r[1 + i] = caml_call2(f,a[1 + i],b[1 + i]); - var _yP_=i + 1 | 0; - if(_yO_ !== i){var i=_yP_;continue} + var _yK_=i + 1 | 0; + if(_yJ_ !== i){var i=_yK_;continue} break}} return r} function iteri$4(f,a) - {var _yL_=a.length - 1 - 1 | 0,_yK_=0; - if(! (_yL_ < 0)) - {var i=_yK_; + {var _yG_=a.length - 1 - 1 | 0,_yF_=0; + if(! (_yG_ < 0)) + {var i=_yF_; for(;;) {caml_call2(f,i,a[1 + i]); - var _yM_=i + 1 | 0; - if(_yL_ !== i){var i=_yM_;continue} + var _yH_=i + 1 | 0; + if(_yG_ !== i){var i=_yH_;continue} break}} return 0} function mapi$4(f,a) - {var l=a.length - 1,r=caml_floatarray_create(l),_yI_=l - 1 | 0,_yH_=0; - if(! (_yI_ < 0)) - {var i=_yH_; + {var l=a.length - 1,r=caml_floatarray_create(l),_yD_=l - 1 | 0,_yC_=0; + if(! (_yD_ < 0)) + {var i=_yC_; for(;;) {r[1 + i] = caml_call2(f,i,a[1 + i]); - var _yJ_=i + 1 | 0; - if(_yI_ !== i){var i=_yJ_;continue} + var _yE_=i + 1 | 0; + if(_yD_ !== i){var i=_yE_;continue} break}} return r} function fold_left$4(f,x,a) - {var r=[0,x],_yF_=a.length - 1 - 1 | 0,_yE_=0; - if(! (_yF_ < 0)) - {var i=_yE_; + {var r=[0,x],_yA_=a.length - 1 - 1 | 0,_yz_=0; + if(! (_yA_ < 0)) + {var i=_yz_; for(;;) {r[1] = caml_call2(f,r[1],a[1 + i]); - var _yG_=i + 1 | 0; - if(_yF_ !== i){var i=_yG_;continue} + var _yB_=i + 1 | 0; + if(_yA_ !== i){var i=_yB_;continue} break}} return r[1]} function fold_right$3(f,a,x) - {var r=[0,x],_yC_=a.length - 1 - 1 | 0; - if(! (_yC_ < 0)) - {var i=_yC_; + {var r=[0,x],_yx_=a.length - 1 - 1 | 0; + if(! (_yx_ < 0)) + {var i=_yx_; for(;;) {r[1] = caml_call2(f,a[1 + i],r[1]); - var _yD_=i - 1 | 0; - if(0 !== i){var i=_yD_;continue} + var _yy_=i - 1 | 0; + if(0 !== i){var i=_yy_;continue} break}} return r[1]} function exists$4(p,a) @@ -14731,7 +15216,7 @@ return caml_array_set(a,i$0,e)}} function trickle(l,i,e) {try - {var _yB_=trickledown(l,i,e);return _yB_} + {var _yw_=trickledown(l,i,e);return _yw_} catch(exn) {exn = caml_wrap_exception(exn); if(exn[1] === Bottom$0) @@ -14746,22 +15231,22 @@ continue}} function bubble(l,i) {try - {var _yA_=bubbledown(l,i);return _yA_} + {var _yv_=bubbledown(l,i);return _yv_} catch(exn) {exn = caml_wrap_exception(exn); if(exn[1] === Bottom$0){var i$0=exn[2];return i$0} throw exn}} - var l=a.length - 1,_yu_=((l + 1 | 0) / 3 | 0) - 1 | 0; - if(! (_yu_ < 0)) - {var i$2=_yu_; + var l=a.length - 1,_yp_=((l + 1 | 0) / 3 | 0) - 1 | 0; + if(! (_yp_ < 0)) + {var i$2=_yp_; for(;;) {trickle(l,i$2,caml_array_get(a,i$2)); - var _yz_=i$2 - 1 | 0; - if(0 !== i$2){var i$2=_yz_;continue} + var _yu_=i$2 - 1 | 0; + if(0 !== i$2){var i$2=_yu_;continue} break}} - var _yv_=l - 1 | 0; - if(! (_yv_ < 2)) - {var i$0=_yv_; + var _yq_=l - 1 | 0; + if(! (_yq_ < 2)) + {var i$0=_yq_; a: for(;;) {var e$0=caml_array_get(a,i$0); @@ -14769,25 +15254,25 @@ var i$1=bubble(i$0,0),i=i$1; for(;;) {var father=(i - 1 | 0) / 3 | 0; - if(i === father)throw [0,Assert_failure,_J_]; + if(i === father)throw [0,Assert_failure,_H_]; if(0 <= caml_call2(cmp,caml_array_get(a,father),e$0)) caml_array_set(a,i,e$0); else {caml_array_set(a,i,caml_array_get(a,father)); if(0 < father){var i=father;continue} caml_array_set(a,0,e$0)} - var _yy_=i$0 - 1 | 0; - if(2 !== i$0){var i$0=_yy_;continue a} + var _yt_=i$0 - 1 | 0; + if(2 !== i$0){var i$0=_yt_;continue a} break} break}} - var _yw_=1 < l?1:0; - if(_yw_) + var _yr_=1 < l?1:0; + if(_yr_) {var e=caml_array_get(a,1); caml_array_set(a,1,caml_array_get(a,0)); - var _yx_=caml_array_set(a,0,e)} + var _ys_=caml_array_set(a,0,e)} else - var _yx_=_yw_; - return _yx_} + var _ys_=_yr_; + return _ys_} function stable_sort(cmp,a) {function merge(src1ofs,src1len,src2,src2ofs,src2len,dst,dstofs) {var @@ -14825,9 +15310,9 @@ continue} return blit$2(src2,i2,dst,d + 1 | 0,src2r - i2 | 0)}} function isortto(srcofs,dst,dstofs,len) - {var _ys_=len - 1 | 0,_yr_=0; - if(! (_ys_ < 0)) - {var i=_yr_; + {var _yn_=len - 1 | 0,_ym_=0; + if(! (_yn_ < 0)) + {var i=_ym_; a: for(;;) {var @@ -14846,8 +15331,8 @@ j[1] += -1; continue} caml_array_set(dst,j[1] + 1 | 0,e); - var _yt_=i + 1 | 0; - if(_ys_ !== i){var i=_yt_;continue a} + var _yo_=i + 1 | 0; + if(_yn_ !== i){var i=_yo_;continue a} break} break}} return 0} @@ -14866,23 +15351,23 @@ function to_seq$5(a) {function aux(i,param) {if(i < a.length - 1) - {var x=a[1 + i],_yp_=i + 1 | 0; - return [0,x,function(_yq_){return aux(_yp_,_yq_)}]} + {var x=a[1 + i],_yk_=i + 1 | 0; + return [0,x,function(_yl_){return aux(_yk_,_yl_)}]} return 0} - var _yn_=0; - return function(_yo_){return aux(_yn_,_yo_)}} + var _yi_=0; + return function(_yj_){return aux(_yi_,_yj_)}} function to_seqi$2(a) {function aux(i,param) {if(i < a.length - 1) - {var x=a[1 + i],_yl_=i + 1 | 0; - return [0,[0,i,x],function(_ym_){return aux(_yl_,_ym_)}]} + {var x=a[1 + i],_yg_=i + 1 | 0; + return [0,[0,i,x],function(_yh_){return aux(_yg_,_yh_)}]} return 0} - var _yj_=0; - return function(_yk_){return aux(_yj_,_yk_)}} + var _ye_=0; + return function(_yf_){return aux(_ye_,_yf_)}} function of_seq$3(i$2) {var - _yi_=0, - param$0=fold_left(function(acc,x){return [0,x,acc]},_yi_,i$2), + _yd_=0, + param$0=fold_left(function(acc,x){return [0,x,acc]},_yd_,i$2), len=length$1(param$0), a=caml_floatarray_create(len), i$1=len - 1 | 0, @@ -14898,36 +15383,36 @@ function map_to_array(f,a) {var l=a.length - 1; if(0 === l)return [0]; - var r=caml_make_vect(l,caml_call1(f,a[1])),_yg_=l - 1 | 0,_yf_=1; - if(! (_yg_ < 1)) - {var i=_yf_; + var r=caml_make_vect(l,caml_call1(f,a[1])),_yb_=l - 1 | 0,_ya_=1; + if(! (_yb_ < 1)) + {var i=_ya_; for(;;) {r[1 + i] = caml_call1(f,a[1 + i]); - var _yh_=i + 1 | 0; - if(_yg_ !== i){var i=_yh_;continue} + var _yc_=i + 1 | 0; + if(_yb_ !== i){var i=_yc_;continue} break}} return r} function map_from_array(f,a) - {var l=a.length - 1,r=caml_floatarray_create(l),_yd_=l - 1 | 0,_yc_=0; - if(! (_yd_ < 0)) - {var i=_yc_; + {var l=a.length - 1,r=caml_floatarray_create(l),_x__=l - 1 | 0,_x9_=0; + if(! (_x__ < 0)) + {var i=_x9_; for(;;) {r[1 + i] = caml_call1(f,a[1 + i]); - var _ye_=i + 1 | 0; - if(_yd_ !== i){var i=_ye_;continue} + var _x$_=i + 1 | 0; + if(_x__ !== i){var i=_x$_;continue} break}} return r} var - _K_=caml_floatarray_create, - _L_=caml_array_set, - _M_=caml_array_get, - _N_= + _I_=caml_floatarray_create, + _J_=caml_array_set, + _K_=caml_array_get, + _L_= [0, - function(_yb_){return _yb_.length - 1}, - _M_, - _L_, - make$2, + function(_x8_){return _x8_.length - 1}, _K_, + _J_, + make$2, + _I_, init$4, append$2, concat$3, @@ -14957,9 +15442,9 @@ of_seq$3, map_to_array, map_from_array], - _O_=caml_floatarray_create, - _P_=caml_array_set, - _Q_=caml_array_get, + _M_=caml_floatarray_create, + _N_=caml_array_set, + _O_=caml_array_get, Stdlib_Float= [0, zero$0, @@ -14990,11 +15475,11 @@ min_max_num, hash$0, [0, - function(_ya_){return _ya_.length - 1}, - _Q_, - _P_, - make$2, + function(_x7_){return _x7_.length - 1}, _O_, + _N_, + make$2, + _M_, init$4, append$2, concat$3, @@ -15024,7 +15509,7 @@ of_seq$3, map_to_array, map_from_array], - _N_]; + _L_]; caml_register_global(795,Stdlib_Float,"Stdlib__Float"); var zero$1=0,one$1=1,minus_one$1=-1; function succ$1(n){return n + 1 | 0} @@ -15044,11 +15529,11 @@ function to_string$3(n){return caml_format_int(cst_d,n)} function of_string_opt$0(s) {try - {var _x__=[0,caml_int_of_string(s)];return _x__} - catch(_x$_) - {_x$_ = caml_wrap_exception(_x$_); - if(_x$_[1] === Failure)return 0; - throw _x$_}} + {var _x5_=[0,caml_int_of_string(s)];return _x5_} + catch(_x6_) + {_x6_ = caml_wrap_exception(_x6_); + if(_x6_[1] === Failure)return 0; + throw _x6_}} function compare$11(x,y){return caml_int_compare(x,y)} function equal$12(x,y){return 0 === caml_int_compare(x,y)?1:0} function unsigned_compare(n,m) @@ -15083,11 +15568,11 @@ min$3, max$3]; caml_register_global(796,Stdlib_Int32,"Stdlib__Int32"); - function succ$2(n){return caml_int64_add(n,_R_)} - function pred$2(n){return caml_int64_sub(n,_S_)} + function succ$2(n){return caml_int64_add(n,_P_)} + function pred$2(n){return caml_int64_sub(n,_Q_)} function abs$2(n) - {return caml_greaterequal(n,_T_)?n:runtime.caml_int64_neg(n)} - function lognot$1(n){return runtime.caml_int64_xor(n,_U_)} + {return caml_greaterequal(n,_R_)?n:runtime.caml_int64_neg(n)} + function lognot$1(n){return runtime.caml_int64_xor(n,_S_)} var max_int$3=caml_int64_of_int32(2147483647); function unsigned_to_int$0(n) {if @@ -15101,11 +15586,11 @@ function to_string$4(n){return caml_int64_format(cst_d$0,n)} function of_string_opt$1(s) {try - {var _x8_=[0,caml_int64_of_string(s)];return _x8_} - catch(_x9_) - {_x9_ = caml_wrap_exception(_x9_); - if(_x9_[1] === Failure)return 0; - throw _x9_}} + {var _x3_=[0,caml_int64_of_string(s)];return _x3_} + catch(_x4_) + {_x4_ = caml_wrap_exception(_x4_); + if(_x4_[1] === Failure)return 0; + throw _x4_}} function compare$12(x,y){return caml_int64_compare(x,y)} function equal$13(x,y){return 0 === caml_int64_compare(x,y)?1:0} function unsigned_compare$0(n,m) @@ -15165,11 +15650,11 @@ function to_string$5(n){return caml_format_int(cst_d$1,n)} function of_string_opt$2(s) {try - {var _x6_=[0,caml_int_of_string(s)];return _x6_} - catch(_x7_) - {_x7_ = caml_wrap_exception(_x7_); - if(_x7_[1] === Failure)return 0; - throw _x7_}} + {var _x1_=[0,caml_int_of_string(s)];return _x1_} + catch(_x2_) + {_x2_ = caml_wrap_exception(_x2_); + if(_x2_[1] === Failure)return 0; + throw _x2_}} function compare$13(x,y){return caml_int_compare(x,y)} function equal$14(x,y){return 0 === caml_int_compare(x,y)?1:0} function unsigned_compare$1(n,m) @@ -15209,38 +15694,38 @@ function engine(tbl,state,buf) {var result=runtime.caml_lex_engine(tbl,state,buf), - _x3_=0 <= result?1:0, - _x4_=_x3_?buf[12] !== dummy_pos?1:0:_x3_; - if(_x4_) + _xY_=0 <= result?1:0, + _xZ_=_xY_?buf[12] !== dummy_pos?1:0:_xY_; + if(_xZ_) {buf[11] = buf[12]; - var _x5_=buf[12]; - buf[12] = [0,_x5_[1],_x5_[2],_x5_[3],buf[4] + buf[6] | 0]} + var _x0_=buf[12]; + buf[12] = [0,_x0_[1],_x0_[2],_x0_[3],buf[4] + buf[6] | 0]} return result} function new_engine(tbl,state,buf) {var result=runtime.caml_new_lex_engine(tbl,state,buf), - _x0_=0 <= result?1:0, - _x1_=_x0_?buf[12] !== dummy_pos?1:0:_x0_; - if(_x1_) + _xV_=0 <= result?1:0, + _xW_=_xV_?buf[12] !== dummy_pos?1:0:_xV_; + if(_xW_) {buf[11] = buf[12]; - var _x2_=buf[12]; - buf[12] = [0,_x2_[1],_x2_[2],_x2_[3],buf[4] + buf[6] | 0]} + var _xX_=buf[12]; + buf[12] = [0,_xX_[1],_xX_[2],_xX_[3],buf[4] + buf[6] | 0]} return result} function from_function(opt,f) {if(opt)var sth=opt[1],with_positions=sth;else var with_positions=1; var - _xM_=with_positions?zero_pos:dummy_pos, - _xN_=with_positions?zero_pos:dummy_pos, + _xH_=with_positions?zero_pos:dummy_pos, + _xI_=with_positions?zero_pos:dummy_pos, aux_buffer=caml_create_bytes(512), - _xO_=[0], + _xJ_=[0], + _xK_=0, + _xL_=0, + _xM_=0, + _xN_=0, + _xO_=0, _xP_=0, _xQ_=0, - _xR_=0, - _xS_=0, - _xT_=0, - _xU_=0, - _xV_=0, - _xW_=caml_create_bytes(1024); + _xR_=caml_create_bytes(1024); return [0, function(lexbuf) {var @@ -15270,66 +15755,66 @@ lexbuf[5] = 0; lexbuf[7] = lexbuf[7] - s | 0; lexbuf[3] = lexbuf[3] - s | 0; - var t=lexbuf[10],_xY_=t.length - 1 - 1 | 0,_xX_=0; - if(! (_xY_ < 0)) - {var i=_xX_; + var t=lexbuf[10],_xT_=t.length - 1 - 1 | 0,_xS_=0; + if(! (_xT_ < 0)) + {var i=_xS_; for(;;) {var v=caml_check_bound(t,i)[1 + i]; if(0 <= v)caml_check_bound(t,i)[1 + i] = v - s | 0; - var _xZ_=i + 1 | 0; - if(_xY_ !== i){var i=_xZ_;continue} + var _xU_=i + 1 | 0; + if(_xT_ !== i){var i=_xU_;continue} break}}} blit(aux_buffer,0,lexbuf[2],lexbuf[3],n); lexbuf[3] = lexbuf[3] + n | 0; return 0}, - _xW_, - _xV_, - _xU_, - _xT_, - _xS_, _xR_, _xQ_, _xP_, _xO_, _xN_, - _xM_]} + _xM_, + _xL_, + _xK_, + _xJ_, + _xI_, + _xH_]} function from_channel(with_positions,ic) {return from_function (with_positions,function(buf,n){return input(ic,buf,0,n)})} function from_string$0(opt,s) {if(opt)var sth=opt[1],with_positions=sth;else var with_positions=1; var - _xB_=with_positions?zero_pos:dummy_pos, - _xC_=with_positions?zero_pos:dummy_pos, - _xD_=[0], - _xE_=1, - _xF_=0, - _xG_=0, - _xH_=0, - _xI_=0, - _xJ_=0, - _xK_=caml_ml_string_length(s), - _xL_=to_bytes(s); + _xw_=with_positions?zero_pos:dummy_pos, + _xx_=with_positions?zero_pos:dummy_pos, + _xy_=[0], + _xz_=1, + _xA_=0, + _xB_=0, + _xC_=0, + _xD_=0, + _xE_=0, + _xF_=caml_ml_string_length(s), + _xG_=to_bytes(s); return [0, function(lexbuf){lexbuf[9] = 1;return 0}, - _xL_, - _xK_, - _xJ_, - _xI_, - _xH_, _xG_, _xF_, _xE_, _xD_, _xC_, - _xB_]} + _xB_, + _xA_, + _xz_, + _xy_, + _xx_, + _xw_]} function set_position(lexbuf,position) {lexbuf[12] = [0,lexbuf[12][1],position[2],position[3],position[4]]; lexbuf[4] = position[4]; return 0} function set_filename(lexbuf,fname) - {var _xA_=lexbuf[12]; - lexbuf[12] = [0,fname,_xA_[2],_xA_[3],_xA_[4]]; + {var _xv_=lexbuf[12]; + lexbuf[12] = [0,fname,_xv_[2],_xv_[3],_xv_[4]]; return 0} function with_positions(lexbuf){return lexbuf[12] !== dummy_pos?1:0} function lexeme(lexbuf) @@ -15352,9 +15837,9 @@ function new_line(lexbuf) {var lcp=lexbuf[12], - _xy_=lcp !== dummy_pos?1:0, - _xz_=_xy_?(lexbuf[12] = [0,lcp[1],lcp[2] + 1 | 0,lcp[4],lcp[4]],0):_xy_; - return _xz_} + _xt_=lcp !== dummy_pos?1:0, + _xu_=_xt_?(lexbuf[12] = [0,lcp[1],lcp[2] + 1 | 0,lcp[4],lcp[4]],0):_xt_; + return _xu_} function flush_input(lb) {lb[6] = 0; lb[4] = 0; @@ -15459,16 +15944,16 @@ case 4: try {var - _xs_=env[13], - _xt_= - caml_call1(caml_check_bound(tables[1],_xs_)[1 + _xs_],env), - _xu_=4, - arg$1=_xt_, - cmd$0=_xu_} - catch(_xx_) - {_xx_ = caml_wrap_exception(_xx_); - if(_xx_ !== Parse_error)throw _xx_; - var arg$1=0,cmd$0=5,_xv_=_xx_} + _xn_=env[13], + _xo_= + caml_call1(caml_check_bound(tables[1],_xn_)[1 + _xn_],env), + _xp_=4, + arg$1=_xo_, + cmd$0=_xp_} + catch(_xs_) + {_xs_ = caml_wrap_exception(_xs_); + if(_xs_ !== Parse_error)throw _xs_; + var arg$1=0,cmd$0=5,_xq_=_xs_} var cmd=cmd$0,arg=arg$1; continue; default: @@ -15488,36 +15973,36 @@ = function(tok) {if(is_block(tok)) - {var _xw_=caml_obj_tag(tok); - return caml_check_bound(tables[3],_xw_)[1 + _xw_] === curr_char + {var _xr_=caml_obj_tag(tok); + return caml_check_bound(tables[3],_xr_)[1 + _xr_] === curr_char ?1 :0} return caml_check_bound(tables[2],tok)[1 + tok] === curr_char?1:0}; throw exn}} function peek_val(env,n) - {var _xr_=env[11] - n | 0;return caml_check_bound(env[2],_xr_)[1 + _xr_]} + {var _xm_=env[11] - n | 0;return caml_check_bound(env[2],_xm_)[1 + _xm_]} function symbol_start_pos(param) {var i=env[12]; for(;;) {if(0 < i) {var - _xo_=(env[11] - i | 0) + 1 | 0, - st=caml_check_bound(env[3],_xo_)[1 + _xo_], - _xp_=(env[11] - i | 0) + 1 | 0, - en=caml_check_bound(env[4],_xp_)[1 + _xp_]; + _xj_=(env[11] - i | 0) + 1 | 0, + st=caml_check_bound(env[3],_xj_)[1 + _xj_], + _xk_=(env[11] - i | 0) + 1 | 0, + en=caml_check_bound(env[4],_xk_)[1 + _xk_]; if(caml_notequal(st,en))return st; var i$0=i - 1 | 0,i=i$0; continue} - var _xq_=env[11]; - return caml_check_bound(env[4],_xq_)[1 + _xq_]}} + var _xl_=env[11]; + return caml_check_bound(env[4],_xl_)[1 + _xl_]}} function symbol_end_pos(param) - {var _xn_=env[11];return caml_check_bound(env[4],_xn_)[1 + _xn_]} + {var _xi_=env[11];return caml_check_bound(env[4],_xi_)[1 + _xi_]} function rhs_start_pos(n) - {var _xm_=env[11] - (env[12] - n | 0) | 0; - return caml_check_bound(env[3],_xm_)[1 + _xm_]} + {var _xh_=env[11] - (env[12] - n | 0) | 0; + return caml_check_bound(env[3],_xh_)[1 + _xh_]} function rhs_end_pos(n) - {var _xl_=env[11] - (env[12] - n | 0) | 0; - return caml_check_bound(env[4],_xl_)[1 + _xl_]} + {var _xg_=env[11] - (env[12] - n | 0) | 0; + return caml_check_bound(env[4],_xg_)[1 + _xg_]} function symbol_start(param){return symbol_start_pos(0)[4]} function symbol_end(param){return symbol_end_pos(0)[4]} function rhs_start(n){return rhs_start_pos(n)[4]} @@ -15538,7 +16023,7 @@ rhs_end_pos, clear_parser, Parse_error, - function(_xk_){return runtime.caml_set_parser_trace(_xk_)}, + runtime.caml_set_parser_trace, YYexit, yyparse, peek_val, @@ -15553,31 +16038,31 @@ function create(l,v,r) {if(l)var h=l[4],hl=h;else var hl=0; if(r)var h$0=r[4],hr=h$0;else var hr=0; - var _xj_=hr <= hl?hl + 1 | 0:hr + 1 | 0; - return [0,l,v,r,_xj_]} + var _xf_=hr <= hl?hl + 1 | 0:hr + 1 | 0; + return [0,l,v,r,_xf_]} function bal(l,v,r) {if(l)var h=l[4],hl=h;else var hl=0; if(r)var h$0=r[4],hr=h$0;else var hr=0; if((hr + 2 | 0) < hl) {if(l) - {var lr=l[3],lv=l[2],ll=l[1],_xe_=height(lr); - if(_xe_ <= height(ll))return create(ll,lv,create(lr,v,r)); + {var lr=l[3],lv=l[2],ll=l[1],_xa_=height(lr); + if(_xa_ <= height(ll))return create(ll,lv,create(lr,v,r)); if(lr) - {var lrr=lr[3],lrv=lr[2],lrl=lr[1],_xf_=create(lrr,v,r); - return create(create(ll,lv,lrl),lrv,_xf_)} + {var lrr=lr[3],lrv=lr[2],lrl=lr[1],_xb_=create(lrr,v,r); + return create(create(ll,lv,lrl),lrv,_xb_)} return invalid_arg(cst_Set_bal)} return invalid_arg(cst_Set_bal$0)} if((hl + 2 | 0) < hr) {if(r) - {var rr=r[3],rv=r[2],rl=r[1],_xg_=height(rl); - if(_xg_ <= height(rr))return create(create(l,v,rl),rv,rr); + {var rr=r[3],rv=r[2],rl=r[1],_xc_=height(rl); + if(_xc_ <= height(rr))return create(create(l,v,rl),rv,rr); if(rl) - {var rlr=rl[3],rlv=rl[2],rll=rl[1],_xh_=create(rlr,rv,rr); - return create(create(l,v,rll),rlv,_xh_)} + {var rlr=rl[3],rlv=rl[2],rll=rl[1],_xd_=create(rlr,rv,rr); + return create(create(l,v,rll),rlv,_xd_)} return invalid_arg(cst_Set_bal$1)} return invalid_arg(cst_Set_bal$2)} - var _xi_=hr <= hl?hl + 1 | 0:hr + 1 | 0; - return [0,l,v,r,_xi_]} + var _xe_=hr <= hl?hl + 1 | 0:hr + 1 | 0; + return [0,l,v,r,_xe_]} function add(x,t) {if(t) {var r=t[3],v=t[2],l=t[1],c=caml_call2(Ord[1],x,v); @@ -15618,8 +16103,8 @@ {var param$0=param; for(;;) {if(param$0) - {var _xd_=param$0[1]; - if(_xd_){var param$0=_xd_;continue} + {var _w$_=param$0[1]; + if(_w$_){var param$0=_w$_;continue} var v=param$0[2]; return v} throw Not_found}} @@ -15627,8 +16112,8 @@ {var param$0=param; for(;;) {if(param$0) - {var _xc_=param$0[1]; - if(_xc_){var param$0=_xc_;continue} + {var _w__=param$0[1]; + if(_w__){var param$0=_w__;continue} var v=param$0[2]; return [0,v]} return 0}} @@ -15650,16 +16135,16 @@ return 0}} function remove_min_elt(param) {if(param) - {var _xb_=param[1]; - if(_xb_) - {var r=param[3],v=param[2];return bal(remove_min_elt(_xb_),v,r)} + {var _w9_=param[1]; + if(_w9_) + {var r=param[3],v=param[2];return bal(remove_min_elt(_w9_),v,r)} var r$0=param[3]; return r$0} return invalid_arg(cst_Set_remove_min_elt)} function concat(t1,t2) {if(t1) {if(t2) - {var _xa_=remove_min_elt(t2);return join(t1,min_elt(t2),_xa_)} + {var _w8_=remove_min_elt(t2);return join(t1,min_elt(t2),_w8_)} return t1} return t2} function split(x,param) @@ -15675,7 +16160,7 @@ pres$0=match$0[2], ll=match$0[1]; return [0,ll,pres$0,join(rl,v,r)]} - return _V_} + return _T_} var empty=0; function is_empty(param){return param?0:1} function mem(x,param) @@ -15687,8 +16172,8 @@ v=param$0[2], l=param$0[1], c=caml_call2(Ord[1],x,v), - _w$_=0 === c?1:0; - if(_w$_)return _w$_; + _w7_=0 === c?1:0; + if(_w7_)return _w7_; var param$1=0 <= c?r:l,param$0=param$1; continue} return 0}} @@ -15698,7 +16183,7 @@ if(0 === c) {if(l) {if(r) - {var _w__=remove_min_elt(r);return bal(l,min_elt(r),_w__)} + {var _w6_=remove_min_elt(r);return bal(l,min_elt(r),_w6_)} return l} return r} if(0 <= c){var rr=remove(x,r);return r === rr?t:bal(l,v,rr)} @@ -15723,26 +16208,26 @@ match=split(v1,s2), r2$0=match[3], l2$0=match[1], - _w8_=union(r1,r2$0); - return join(union(l1,l2$0),v1,_w8_)} + _w4_=union(r1,r2$0); + return join(union(l1,l2$0),v1,_w4_)} if(1 === h1)return add(v1,s2); var match$0=split(v2,s1), r1$0=match$0[3], l1$0=match$0[1], - _w9_=union(r1$0,r2); - return join(union(l1$0,l2),v2,_w9_)} + _w5_=union(r1$0,r2); + return join(union(l1$0,l2),v2,_w5_)} return s1} return s2} function inter(s1,s2) {if(s1) {if(s2) - {var r1=s1[3],v1=s1[2],l1=s1[1],_w4_=split(v1,s2),_w5_=_w4_[1]; - if(_w4_[2]) - {var r2=_w4_[3],_w6_=inter(r1,r2); - return join(inter(l1,_w5_),v1,_w6_)} - var r2$0=_w4_[3],_w7_=inter(r1,r2$0); - return concat(inter(l1,_w5_),_w7_)} + {var r1=s1[3],v1=s1[2],l1=s1[1],_w0_=split(v1,s2),_w1_=_w0_[1]; + if(_w0_[2]) + {var r2=_w0_[3],_w2_=inter(r1,r2); + return join(inter(l1,_w1_),v1,_w2_)} + var r2$0=_w0_[3],_w3_=inter(r1,r2$0); + return concat(inter(l1,_w1_),_w3_)} return 0} return 0} function split_bis(x,param) @@ -15770,21 +16255,21 @@ if(s1$0 === s2$0)return 0; var match=split_bis(v1,s2$0); if(match) - {var r2=match[2],l2=match[1],_w3_=disjoint(l1,l2); - if(_w3_) + {var r2=match[2],l2=match[1],_wZ_=disjoint(l1,l2); + if(_wZ_) {var s2$1=caml_call1(r2,0),s1$0=r1,s2$0=s2$1;continue} - return _w3_} + return _wZ_} return 0} return 1}} function diff(s1,s2) {if(s1) {if(s2) - {var r1=s1[3],v1=s1[2],l1=s1[1],_wZ_=split(v1,s2),_w0_=_wZ_[1]; - if(_wZ_[2]) - {var r2=_wZ_[3],_w1_=diff(r1,r2); - return concat(diff(l1,_w0_),_w1_)} - var r2$0=_wZ_[3],_w2_=diff(r1,r2$0); - return join(diff(l1,_w0_),v1,_w2_)} + {var r1=s1[3],v1=s1[2],l1=s1[1],_wV_=split(v1,s2),_wW_=_wV_[1]; + if(_wV_[2]) + {var r2=_wV_[3],_wX_=diff(r1,r2); + return concat(diff(l1,_wW_),_wX_)} + var r2$0=_wV_[3],_wY_=diff(r1,r2$0); + return join(diff(l1,_wW_),v1,_wY_)} return s1} return 0} function cons_enum(s,e) @@ -15838,16 +16323,16 @@ l1=s1$0[1], c=caml_call2(Ord[1],v1,v2); if(0 === c) - {var _wW_=subset(l1,l2); - if(_wW_){var s1$0=r1,s2$0=r2;continue} - return _wW_} + {var _wS_=subset(l1,l2); + if(_wS_){var s1$0=r1,s2$0=r2;continue} + return _wS_} if(0 <= c) - {var _wX_=subset([0,0,v1,r1,0],r2); - if(_wX_){var s1$0=l1;continue} - return _wX_} - var _wY_=subset([0,l1,v1,0,0],l2); - if(_wY_){var s1$0=r1;continue} - return _wY_} + {var _wT_=subset([0,0,v1,r1,0],r2); + if(_wT_){var s1$0=l1;continue} + return _wT_} + var _wU_=subset([0,l1,v1,0,0],l2); + if(_wU_){var s1$0=r1;continue} + return _wU_} return 0} return 1}} function iter(f,param) @@ -15881,14 +16366,14 @@ r=param$0[3], v=param$0[2], l=param$0[1], - _wT_=caml_call1(p,v); - if(_wT_) - {var _wU_=for_all(p,l); - if(_wU_){var param$0=r;continue} - var _wV_=_wU_} + _wP_=caml_call1(p,v); + if(_wP_) + {var _wQ_=for_all(p,l); + if(_wQ_){var param$0=r;continue} + var _wR_=_wQ_} else - var _wV_=_wT_; - return _wV_} + var _wR_=_wP_; + return _wR_} return 1}} function exists(p,param) {var param$0=param; @@ -15898,14 +16383,14 @@ r=param$0[3], v=param$0[2], l=param$0[1], - _wQ_=caml_call1(p,v); - if(_wQ_) - var _wR_=_wQ_; + _wM_=caml_call1(p,v); + if(_wM_) + var _wN_=_wM_; else - {var _wS_=exists(p,l); - if(! _wS_){var param$0=r;continue} - var _wR_=_wS_} - return _wR_} + {var _wO_=exists(p,l); + if(! _wO_){var param$0=r;continue} + var _wN_=_wO_} + return _wN_} return 0}} function filter(p,t) {if(t) @@ -15932,14 +16417,14 @@ match$0=partition(p,r), rf=match$0[2], rt=match$0[1]; - if(pv){var _wO_=concat(lf,rf);return [0,join(lt,v,rt),_wO_]} - var _wP_=join(lf,v,rf); - return [0,concat(lt,rt),_wP_]} - return _W_} + if(pv){var _wK_=concat(lf,rf);return [0,join(lt,v,rt),_wK_]} + var _wL_=join(lf,v,rf); + return [0,concat(lt,rt),_wL_]} + return _U_} function cardinal(param) {if(param) - {var r=param[3],l=param[1],_wN_=cardinal(r); - return (cardinal(l) + 1 | 0) + _wN_ | 0} + {var r=param[3],l=param[1],_wJ_=cardinal(r); + return (cardinal(l) + 1 | 0) + _wJ_ | 0} return 0} function elements_aux(accu,param) {var accu$0=accu,param$0=param; @@ -16052,13 +16537,13 @@ function try_join(l,v,r) {var switch$0=0; if(0 !== l) - {var _wM_=max_elt(l); - if(0 <= caml_call2(Ord[1],_wM_,v))switch$0 = 1} + {var _wI_=max_elt(l); + if(0 <= caml_call2(Ord[1],_wI_,v))switch$0 = 1} if(! switch$0) {var switch$1=0; if(0 !== r) - {var _wL_=min_elt(r); - if(0 <= caml_call2(Ord[1],v,_wL_))switch$1 = 1} + {var _wH_=min_elt(r); + if(0 <= caml_call2(Ord[1],v,_wH_))switch$1 = 1} if(! switch$1)return join(l,v,r)} return union(l,add(v,r))} function map(f,t) @@ -16088,22 +16573,22 @@ return try_join(t1,v$1,t2)} if(t1) {if(t2) - {var _wK_=remove_min_elt(t2); - return try_join(t1,min_elt(t2),_wK_)} + {var _wG_=remove_min_elt(t2); + return try_join(t1,min_elt(t2),_wG_)} return t1} return t2} return 0} function of_list(l) {if(l) - {var _wz_=l[2],_wA_=l[1]; - if(_wz_) - {var _wB_=_wz_[2],_wC_=_wz_[1]; - if(_wB_) - {var _wD_=_wB_[2],_wE_=_wB_[1]; - if(_wD_) - {var _wF_=_wD_[2],_wG_=_wD_[1]; - if(_wF_) - {if(_wF_[2]) + {var _wv_=l[2],_ww_=l[1]; + if(_wv_) + {var _wx_=_wv_[2],_wy_=_wv_[1]; + if(_wx_) + {var _wz_=_wx_[2],_wA_=_wx_[1]; + if(_wz_) + {var _wB_=_wz_[2],_wC_=_wz_[1]; + if(_wB_) + {if(_wB_[2]) {var l$0=sort_uniq(Ord[1],l), sub= @@ -16116,18 +16601,18 @@ break; case 2: if(l) - {var _wH_=l[2]; - if(_wH_) - {var l$4=_wH_[2],x1=_wH_[1],x0$0=l[1]; + {var _wD_=l[2]; + if(_wD_) + {var l$4=_wD_[2],x1=_wD_[1],x0$0=l[1]; return [0,[0,[0,0,x0$0,0,1],x1,0,2],l$4]}} break; default: if(l) - {var _wI_=l[2]; - if(_wI_) - {var _wJ_=_wI_[2]; - if(_wJ_) - {var l$5=_wJ_[2],x2=_wJ_[1],x1$0=_wI_[1],x0$1=l[1]; + {var _wE_=l[2]; + if(_wE_) + {var _wF_=_wE_[2]; + if(_wF_) + {var l$5=_wF_[2],x2=_wF_[1],x1$0=_wE_[1],x0$1=l[1]; return [0,[0,[0,0,x0$1,0,1],x1$0,[0,0,x2,0,1],2],l$5]}}}} var nl=n / 2 | 0,match=sub(nl,l),l$0=match[2],left=match[1]; if(l$0) @@ -16138,26 +16623,26 @@ l$2=match$0[2], right=match$0[1]; return [0,create(left,mid,right),l$2]} - throw [0,Assert_failure,_X_]}; + throw [0,Assert_failure,_V_]}; return sub(length$1(l$0),l$0)[1]} - var x4=_wF_[1]; - return add(x4,add(_wG_,add(_wE_,add(_wC_,singleton(_wA_)))))} - return add(_wG_,add(_wE_,add(_wC_,singleton(_wA_))))} - return add(_wE_,add(_wC_,singleton(_wA_)))} - return add(_wC_,singleton(_wA_))} - return singleton(_wA_)} + var x4=_wB_[1]; + return add(x4,add(_wC_,add(_wA_,add(_wy_,singleton(_ww_)))))} + return add(_wC_,add(_wA_,add(_wy_,singleton(_ww_))))} + return add(_wA_,add(_wy_,singleton(_ww_)))} + return add(_wy_,singleton(_ww_))} + return singleton(_ww_)} return empty} function add_seq(i,m) {return fold_left(function(s,x){return add(x,s)},m,i)} function of_seq(i){return add_seq(i,empty)} function seq_of_enum(c,param) {if(c) - {var rest=c[3],t=c[2],x=c[1],_wx_=cons_enum(t,rest); - return [0,x,function(_wy_){return seq_of_enum(_wx_,_wy_)}]} + {var rest=c[3],t=c[2],x=c[1],_wt_=cons_enum(t,rest); + return [0,x,function(_wu_){return seq_of_enum(_wt_,_wu_)}]} return 0} function to_seq(c) - {var _wv_=cons_enum(c,0); - return function(_ww_){return seq_of_enum(_wv_,_ww_)}} + {var _wr_=cons_enum(c,0); + return function(_ws_){return seq_of_enum(_wr_,_ws_)}} function snoc_enum(s,e) {var s$0=s,e$0=e; for(;;) @@ -16173,12 +16658,12 @@ return e$0}} function rev_seq_of_enum(c,param) {if(c) - {var rest=c[3],t=c[2],x=c[1],_wt_=snoc_enum(t,rest); - return [0,x,function(_wu_){return rev_seq_of_enum(_wt_,_wu_)}]} + {var rest=c[3],t=c[2],x=c[1],_wp_=snoc_enum(t,rest); + return [0,x,function(_wq_){return rev_seq_of_enum(_wp_,_wq_)}]} return 0} function to_rev_seq(c) - {var _wr_=snoc_enum(c,0); - return function(_ws_){return rev_seq_of_enum(_wr_,_ws_)}} + {var _wn_=snoc_enum(c,0); + return function(_wo_){return rev_seq_of_enum(_wn_,_wo_)}} function to_seq_from(low,s) {var s$0=s,c=0; for(;;) @@ -16188,10 +16673,10 @@ {if(0 <= n){var c$0=[0,v,r,c],s$0=l,c=c$0;continue} var s$0=r; continue} - var _wp_=[0,v,r,c]} + var _wl_=[0,v,r,c]} else - var _wp_=c; - return function(_wq_){return seq_of_enum(_wp_,_wq_)}}} + var _wl_=c; + return function(_wm_){return seq_of_enum(_wl_,_wm_)}}} return [0, empty, is_empty, @@ -16242,42 +16727,42 @@ function(Ord) {function height(param){if(param){var h=param[5];return h}return 0} function create(l,x,d,r) - {var hl=height(l),hr=height(r),_wo_=hr <= hl?hl + 1 | 0:hr + 1 | 0; - return [0,l,x,d,r,_wo_]} + {var hl=height(l),hr=height(r),_wk_=hr <= hl?hl + 1 | 0:hr + 1 | 0; + return [0,l,x,d,r,_wk_]} function singleton(x,d){return [0,0,x,d,0,1]} function bal(l,x,d,r) {if(l)var h=l[5],hl=h;else var hl=0; if(r)var h$0=r[5],hr=h$0;else var hr=0; if((hr + 2 | 0) < hl) {if(l) - {var lr=l[4],ld=l[3],lv=l[2],ll=l[1],_wj_=height(lr); - if(_wj_ <= height(ll))return create(ll,lv,ld,create(lr,x,d,r)); + {var lr=l[4],ld=l[3],lv=l[2],ll=l[1],_wf_=height(lr); + if(_wf_ <= height(ll))return create(ll,lv,ld,create(lr,x,d,r)); if(lr) {var lrr=lr[4], lrd=lr[3], lrv=lr[2], lrl=lr[1], - _wk_=create(lrr,x,d,r); - return create(create(ll,lv,ld,lrl),lrv,lrd,_wk_)} + _wg_=create(lrr,x,d,r); + return create(create(ll,lv,ld,lrl),lrv,lrd,_wg_)} return invalid_arg(cst_Map_bal)} return invalid_arg(cst_Map_bal$0)} if((hl + 2 | 0) < hr) {if(r) - {var rr=r[4],rd=r[3],rv=r[2],rl=r[1],_wl_=height(rl); - if(_wl_ <= height(rr))return create(create(l,x,d,rl),rv,rd,rr); + {var rr=r[4],rd=r[3],rv=r[2],rl=r[1],_wh_=height(rl); + if(_wh_ <= height(rr))return create(create(l,x,d,rl),rv,rd,rr); if(rl) {var rlr=rl[4], rld=rl[3], rlv=rl[2], rll=rl[1], - _wm_=create(rlr,rv,rd,rr); - return create(create(l,x,d,rll),rlv,rld,_wm_)} + _wi_=create(rlr,rv,rd,rr); + return create(create(l,x,d,rll),rlv,rld,_wi_)} return invalid_arg(cst_Map_bal$1)} return invalid_arg(cst_Map_bal$2)} - var _wn_=hr <= hl?hl + 1 | 0:hr + 1 | 0; - return [0,l,x,d,r,_wn_]} + var _wj_=hr <= hl?hl + 1 | 0:hr + 1 | 0; + return [0,l,x,d,r,_wj_]} var empty=0; function is_empty(param){return param?0:1} function add(x,data,m) @@ -16409,8 +16894,8 @@ v=param$0[2], l=param$0[1], c=caml_call2(Ord[1],x,v), - _wi_=0 === c?1:0; - if(_wi_)return _wi_; + _we_=0 === c?1:0; + if(_we_)return _we_; var param$1=0 <= c?r:l,param$0=param$1; continue} return 0}} @@ -16418,8 +16903,8 @@ {var param$0=param; for(;;) {if(param$0) - {var _wh_=param$0[1]; - if(_wh_){var param$0=_wh_;continue} + {var _wd_=param$0[1]; + if(_wd_){var param$0=_wd_;continue} var d=param$0[3],v=param$0[2]; return [0,v,d]} throw Not_found}} @@ -16427,8 +16912,8 @@ {var param$0=param; for(;;) {if(param$0) - {var _wg_=param$0[1]; - if(_wg_){var param$0=_wg_;continue} + {var _wc_=param$0[1]; + if(_wc_){var param$0=_wc_;continue} var d=param$0[3],v=param$0[2]; return [0,[0,v,d]]} return 0}} @@ -16450,14 +16935,14 @@ return 0}} function remove_min_binding(param) {if(param) - {var _wf_=param[1]; - if(_wf_) + {var _wb_=param[1]; + if(_wb_) {var r=param[4],d=param[3],v=param[2]; - return bal(remove_min_binding(_wf_),v,d,r)} + return bal(remove_min_binding(_wb_),v,d,r)} var r$0=param[4]; return r$0} return invalid_arg(cst_Map_remove_min_elt)} - function _vQ_(t1,t2) + function _vM_(t1,t2) {if(t1) {if(t2) {var match=min_binding(t2),d=match[2],x=match[1]; @@ -16467,7 +16952,7 @@ function remove(x,m) {if(m) {var r=m[4],d=m[3],v=m[2],l=m[1],c=caml_call2(Ord[1],x,v); - if(0 === c)return _vQ_(l,r); + if(0 === c)return _vM_(l,r); if(0 <= c){var rr=remove(x,r);return r === rr?m:bal(l,v,d,rr)} var ll=remove(x,l); return l === ll?m:bal(ll,v,d,r)} @@ -16479,7 +16964,7 @@ {var match=caml_call1(f,[0,d]); if(match) {var data=match[1];return d === data?m:[0,l,x,data,r,h]} - return _vQ_(l,r)} + return _vM_(l,r)} if(0 <= c){var rr=update(x,f,r);return r === rr?m:bal(l,v,d,rr)} var ll=update(x,f,l); return l === ll?m:bal(ll,v,d,r)} @@ -16545,14 +17030,14 @@ d=param$0[3], v=param$0[2], l=param$0[1], - _wc_=caml_call2(p,v,d); - if(_wc_) - {var _wd_=for_all(p,l); - if(_wd_){var param$0=r;continue} - var _we_=_wd_} + _v__=caml_call2(p,v,d); + if(_v__) + {var _v$_=for_all(p,l); + if(_v$_){var param$0=r;continue} + var _wa_=_v$_} else - var _we_=_wc_; - return _we_} + var _wa_=_v__; + return _wa_} return 1}} function exists(p,param) {var param$0=param; @@ -16563,14 +17048,14 @@ d=param$0[3], v=param$0[2], l=param$0[1], - _v$_=caml_call2(p,v,d); - if(_v$_) - var _wa_=_v$_; + _v7_=caml_call2(p,v,d); + if(_v7_) + var _v8_=_v7_; else - {var _wb_=exists(p,l); - if(! _wb_){var param$0=r;continue} - var _wa_=_wb_} - return _wa_} + {var _v9_=exists(p,l); + if(! _v9_){var param$0=r;continue} + var _v8_=_v9_} + return _v8_} return 0}} function add_min_binding(k,x,param) {if(param) @@ -16630,7 +17115,7 @@ pres$0=match$0[2], ll=match$0[1]; return [0,ll,pres$0,join(rl,v,d,r)]} - return _Y_} + return _W_} function merge(f,s1,s2) {if(s1) {var h1=s1[5],r1=s1[4],d1=s1[3],v1=s1[2],l1=s1[1]; @@ -16640,9 +17125,9 @@ r2=match[3], d2=match[2], l2=match[1], - _v7_=merge(f,r1,r2), - _v8_=caml_call3(f,v1,[0,d1],d2); - return concat_or_join(merge(f,l1,l2),v1,_v8_,_v7_)}} + _v3_=merge(f,r1,r2), + _v4_=caml_call3(f,v1,[0,d1],d2); + return concat_or_join(merge(f,l1,l2),v1,_v4_,_v3_)}} else if(! s2)return 0; if(s2) @@ -16655,10 +17140,10 @@ r1$0=match$0[3], d1$0=match$0[2], l1$0=match$0[1], - _v9_=merge(f,r1$0,r2$0), - _v__=caml_call3(f,v2,d1$0,[0,d2$0]); - return concat_or_join(merge(f,l1$0,l2$0),v2,_v__,_v9_)} - throw [0,Assert_failure,_Z_]} + _v5_=merge(f,r1$0,r2$0), + _v6_=caml_call3(f,v2,d1$0,[0,d2$0]); + return concat_or_join(merge(f,l1$0,l2$0),v2,_v6_,_v5_)} + throw [0,Assert_failure,_X_]} function union(f,s1,s2) {if(s1) {if(s2) @@ -16741,10 +17226,10 @@ match$0=partition(p,r), rf=match$0[2], rt=match$0[1]; - if(pvd){var _v5_=concat(lf,rf);return [0,join(lt,v,d,rt),_v5_]} - var _v6_=join(lf,v,d,rf); - return [0,concat(lt,rt),_v6_]} - return ___} + if(pvd){var _v1_=concat(lf,rf);return [0,join(lt,v,d,rt),_v1_]} + var _v2_=join(lf,v,d,rf); + return [0,concat(lt,rt),_v2_]} + return _Y_} function cons_enum(m,e) {var m$0=m,e$0=e; for(;;) @@ -16801,26 +17286,26 @@ r1=e1[3], d1=e1[2], v1=e1[1], - _v2_=0 === caml_call2(Ord[1],v1,v2)?1:0; - if(_v2_) - {var _v3_=caml_call2(cmp,d1,d2); - if(_v3_) + _vY_=0 === caml_call2(Ord[1],v1,v2)?1:0; + if(_vY_) + {var _vZ_=caml_call2(cmp,d1,d2); + if(_vZ_) {var e2$1=cons_enum(r2,e2$0), e1$1=cons_enum(r1,e1$0), e1=e1$1, e2=e2$1; continue} - var _v4_=_v3_} + var _v0_=_vZ_} else - var _v4_=_v2_; - return _v4_} + var _v0_=_vY_; + return _v0_} return 0} return e2?0:1}} function cardinal(param) {if(param) - {var r=param[4],l=param[1],_v1_=cardinal(r); - return (cardinal(l) + 1 | 0) + _v1_ | 0} + {var r=param[4],l=param[1],_vX_=cardinal(r); + return (cardinal(l) + 1 | 0) + _vX_ | 0} return 0} function bindings_aux(accu,param) {var accu$0=accu,param$0=param; @@ -16846,12 +17331,12 @@ function of_seq(i){return add_seq(i,empty)} function seq_of_enum(c,param) {if(c) - {var rest=c[4],t=c[3],v=c[2],k=c[1],_vZ_=cons_enum(t,rest); - return [0,[0,k,v],function(_v0_){return seq_of_enum(_vZ_,_v0_)}]} + {var rest=c[4],t=c[3],v=c[2],k=c[1],_vV_=cons_enum(t,rest); + return [0,[0,k,v],function(_vW_){return seq_of_enum(_vV_,_vW_)}]} return 0} function to_seq(m) - {var _vX_=cons_enum(m,0); - return function(_vY_){return seq_of_enum(_vX_,_vY_)}} + {var _vT_=cons_enum(m,0); + return function(_vU_){return seq_of_enum(_vT_,_vU_)}} function snoc_enum(s,e) {var s$0=s,e$0=e; for(;;) @@ -16868,14 +17353,14 @@ return e$0}} function rev_seq_of_enum(c,param) {if(c) - {var rest=c[4],t=c[3],v=c[2],k=c[1],_vV_=snoc_enum(t,rest); + {var rest=c[4],t=c[3],v=c[2],k=c[1],_vR_=snoc_enum(t,rest); return [0, [0,k,v], - function(_vW_){return rev_seq_of_enum(_vV_,_vW_)}]} + function(_vS_){return rev_seq_of_enum(_vR_,_vS_)}]} return 0} function to_rev_seq(c) - {var _vT_=snoc_enum(c,0); - return function(_vU_){return rev_seq_of_enum(_vT_,_vU_)}} + {var _vP_=snoc_enum(c,0); + return function(_vQ_){return rev_seq_of_enum(_vP_,_vQ_)}} function to_seq_from(low,m) {var m$0=m,c=0; for(;;) @@ -16890,10 +17375,10 @@ {if(0 <= n){var c$0=[0,v,d,r,c],m$0=l,c=c$0;continue} var m$0=r; continue} - var _vR_=[0,v,d,r,c]} + var _vN_=[0,v,d,r,c]} else - var _vR_=c; - return function(_vS_){return seq_of_enum(_vR_,_vS_)}}} + var _vN_=c; + return function(_vO_){return seq_of_enum(_vN_,_vO_)}}} return [0, empty, is_empty, @@ -16942,19 +17427,19 @@ function copy$3(s){return [0,s[1],s[2]]} function push(x,s){s[1] = [0,x,s[1]];s[2] = s[2] + 1 | 0;return 0} function pop(s) - {var _vP_=s[1]; - if(_vP_) - {var tl=_vP_[2],hd=_vP_[1];s[1] = tl;s[2] = s[2] - 1 | 0;return hd} + {var _vL_=s[1]; + if(_vL_) + {var tl=_vL_[2],hd=_vL_[1];s[1] = tl;s[2] = s[2] - 1 | 0;return hd} throw Empty} function pop_opt(s) - {var _vO_=s[1]; - if(_vO_) - {var tl=_vO_[2],hd=_vO_[1];s[1] = tl;s[2] = s[2] - 1 | 0;return [0,hd]} + {var _vK_=s[1]; + if(_vK_) + {var tl=_vK_[2],hd=_vK_[1];s[1] = tl;s[2] = s[2] - 1 | 0;return [0,hd]} return 0} function top(s) - {var _vN_=s[1];if(_vN_){var hd=_vN_[1];return hd}throw Empty} + {var _vJ_=s[1];if(_vJ_){var hd=_vJ_[1];return hd}throw Empty} function top_opt(s) - {var _vM_=s[1];if(_vM_){var hd=_vM_[1];return [0,hd]}return 0} + {var _vI_=s[1];if(_vI_){var hd=_vI_[1];return [0,hd]}return 0} function is_empty$0(s){return 0 === s[1]?1:0} function length$2(s){return s[2]} function iter$7(f,s){return iter$2(f,s[1])} @@ -16986,31 +17471,31 @@ function create$1(param){return [0,0,0,0]} function clear$0(q){q[1] = 0;q[2] = 0;q[3] = 0;return 0} function add(x,q) - {var cell=[0,x,0],_vL_=q[3]; - return _vL_ - ?(q[1] = q[1] + 1 | 0,_vL_[2] = cell,q[3] = cell,0) + {var cell=[0,x,0],_vH_=q[3]; + return _vH_ + ?(q[1] = q[1] + 1 | 0,_vH_[2] = cell,q[3] = cell,0) :(q[1] = 1,q[2] = cell,q[3] = cell,0)} function peek(q) - {var _vK_=q[2];if(_vK_){var content=_vK_[1];return content}throw Empty$0} + {var _vG_=q[2];if(_vG_){var content=_vG_[1];return content}throw Empty$0} function peek_opt(q) - {var _vJ_=q[2];if(_vJ_){var content=_vJ_[1];return [0,content]}return 0} + {var _vF_=q[2];if(_vF_){var content=_vF_[1];return [0,content]}return 0} function take$0(q) - {var _vH_=q[2]; - if(_vH_) - {var _vI_=_vH_[1]; - if(_vH_[2]) - {var next=_vH_[2];q[1] = q[1] - 1 | 0;q[2] = next;return _vI_} + {var _vD_=q[2]; + if(_vD_) + {var _vE_=_vD_[1]; + if(_vD_[2]) + {var next=_vD_[2];q[1] = q[1] - 1 | 0;q[2] = next;return _vE_} clear$0(q); - return _vI_} + return _vE_} throw Empty$0} function take_opt(q) - {var _vF_=q[2]; - if(_vF_) - {var _vG_=_vF_[1]; - if(_vF_[2]) - {var next=_vF_[2];q[1] = q[1] - 1 | 0;q[2] = next;return [0,_vG_]} + {var _vB_=q[2]; + if(_vB_) + {var _vC_=_vB_[1]; + if(_vB_[2]) + {var next=_vB_[2];q[1] = q[1] - 1 | 0;q[2] = next;return [0,_vC_]} clear$0(q); - return [0,_vG_]} + return [0,_vC_]} return 0} function copy$4(q) {var q_res=[0,q[1],0,0],prev=0,cell=q[2]; @@ -17046,10 +17531,10 @@ continue} return accu}} function transfer(q1,q2) - {var _vD_=0 < q1[1]?1:0; - if(_vD_) - {var _vE_=q2[3]; - return _vE_ + {var _vz_=0 < q1[1]?1:0; + if(_vz_) + {var _vA_=q2[3]; + return _vA_ ?(q2[1] = q2[1] @@ -17057,7 +17542,7 @@ q1[1] | 0, - _vE_[2] + _vA_[2] = q1[2], q2[3] @@ -17065,15 +17550,15 @@ q1[3], clear$0(q1)) :(q2[1] = q1[1],q2[2] = q1[2],q2[3] = q1[3],clear$0(q1))} - return _vD_} + return _vz_} function to_seq$7(q) {function aux(c,param) {if(c) {var x=c[1],next=c[2]; - return [0,x,function(_vC_){return aux(next,_vC_)}]} + return [0,x,function(_vy_){return aux(next,_vy_)}]} return 0} - var _vA_=q[2]; - return function(_vB_){return aux(_vA_,_vB_)}} + var _vw_=q[2]; + return function(_vx_){return aux(_vw_,_vx_)}} function add_seq$0(q,i){return iter(function(x){return add(x,q)},i)} function of_seq$5(g){var q=create$1(0);add_seq$0(q,g);return q} var @@ -17121,23 +17606,23 @@ else {if(0 === match[0]) {var d11=match[2],a=match[1];return [0,a,[1,d11,d2]]} - throw [0,Assert_failure,_$_]} + throw [0,Assert_failure,_Z_]} case 2: var f=d$0[1], - _vw_=caml_obj_tag(f), - d$1=250 === _vw_?f[1]:246 === _vw_?force_lazy_block(f):f, + _vs_=caml_obj_tag(f), + d$1=250 === _vs_?f[1]:246 === _vs_?force_lazy_block(f):f, d$0=d$1; continue; case 3: - var _vx_=d$0[1],_vy_=_vx_[1]; - if(_vy_) - {var _vz_=_vy_[1]; - if(_vz_){var a$0=_vz_[1];_vx_[1] = 0;return [0,a$0,d$0]} + var _vt_=d$0[1],_vu_=_vt_[1]; + if(_vu_) + {var _vv_=_vu_[1]; + if(_vv_){var a$0=_vv_[1];_vt_[1] = 0;return [0,a$0,d$0]} return 0} - var match$0=caml_call1(_vx_[2],count); + var match$0=caml_call1(_vt_[2],count); if(match$0){var a$1=match$0[1];return [0,a$1,d$0]} - _vx_[1] = _aa_; + _vt_[1] = ___; return 0; case 4: var b=d$0[1]; @@ -17150,34 +17635,34 @@ return d$0}} function peek_data(s) {for(;;) - {var _vr_=s[2]; - if(typeof _vr_ === "number") + {var _vn_=s[2]; + if(typeof _vn_ === "number") return 0; else - switch(_vr_[0]) - {case 0:var a=_vr_[1];return [0,a]; + switch(_vn_[0]) + {case 0:var a=_vn_[1];return [0,a]; case 1: var d=get_data(s[1],s[2]); if(typeof d === "number") return 0; else {if(0 === d[0]){var a$0=d[1];s[2] = d;return [0,a$0]} - throw [0,Assert_failure,_ab_]} + throw [0,Assert_failure,_$_]} case 2: var - f=_vr_[1], - _vs_=caml_obj_tag(f), - _vt_=250 === _vs_?f[1]:246 === _vs_?force_lazy_block(f):f; - s[2] = _vt_; + f=_vn_[1], + _vo_=caml_obj_tag(f), + _vp_=250 === _vo_?f[1]:246 === _vo_?force_lazy_block(f):f; + s[2] = _vp_; continue; case 3: - var _vu_=_vr_[1],_vv_=_vu_[1]; - if(_vv_){var a$1=_vv_[1];return a$1} - var x=caml_call1(_vu_[2],s[1]); - _vu_[1] = [0,x]; + var _vq_=_vn_[1],_vr_=_vq_[1]; + if(_vr_){var a$1=_vr_[1];return a$1} + var x=caml_call1(_vq_[2],s[1]); + _vq_[1] = [0,x]; return x; default: - var b=_vr_[1]; + var b=_vn_[1]; if(b[3] <= b[4])fill_buff(b); return 0 === b[3] ?(s[2] = 0,0) @@ -17186,16 +17671,16 @@ {if(param){var s=param[1];return peek_data(s)}return 0} function junk_data(s) {for(;;) - {var _vp_=s[2]; - if(typeof _vp_ !== "number") - switch(_vp_[0]) - {case 0:var d=_vp_[2];s[1] = s[1] + 1 | 0;s[2] = d;return 0; + {var _vl_=s[2]; + if(typeof _vl_ !== "number") + switch(_vl_[0]) + {case 0:var d=_vl_[2];s[1] = s[1] + 1 | 0;s[2] = d;return 0; case 3: - var _vq_=_vp_[1]; - if(_vq_[1]){s[1] = s[1] + 1 | 0;_vq_[1] = 0;return 0} + var _vm_=_vl_[1]; + if(_vm_[1]){s[1] = s[1] + 1 | 0;_vm_[1] = 0;return 0} break; case 4: - var b=_vp_[1]; + var b=_vl_[1]; if(b[3] <= b[4])fill_buff(b); return 0 === b[3] ?(s[2] = 0,0) @@ -17244,8 +17729,8 @@ return 0}} function from(f){return [0,[0,0,[3,[0,0,f]]]]} function of_list$1(l) - {var _vo_=0; - return [0,[0,0,fold_right(function(x,l){return [0,x,l]},l,_vo_)]]} + {var _vk_=0; + return [0,[0,0,fold_right(function(x,l){return [0,x,l]},l,_vk_)]]} function of_string(s) {var count=[0,0]; return from @@ -17264,7 +17749,7 @@ :0})} function of_channel(ic) {return [0,[0,0,[4,[0,ic,caml_create_bytes(4096),0,0]]]]} - function iapp(i,s){var _vn_=data(s);return [0,[0,0,[1,data(i),_vn_]]]} + function iapp(i,s){var _vj_=data(s);return [0,[0,0,[1,data(i),_vj_]]]} function icons(i,s){return [0,[0,0,[0,i,data(s)]]]} function ising(i){return [0,[0,0,[0,i,0]]]} function lapp(f,s) @@ -17273,21 +17758,28 @@ 0, [2, [246, - function(_vl_) - {var _vm_=data(s);return [1,data(caml_call1(f,0)),_vm_]}]]]]} + function(_vh_) + {var _vi_=data(s);return [1,data(caml_call1(f,0)),_vi_]}]]]]} function lcons(f,s) {return [0, [0, 0, [2, [246, - function(_vj_) - {var _vk_=data(s);return [0,caml_call1(f,0),_vk_]}]]]]} + function(_vf_) + {var _vg_=data(s);return [0,caml_call1(f,0),_vg_]}]]]]} function lsing(f) - {return [0,[0,0,[2,[246,function(_vi_){return [0,caml_call1(f,0),0]}]]]]} + {return [0,[0,0,[2,[246,function(_ve_){return [0,caml_call1(f,0),0]}]]]]} var sempty=0; function slazy(f) - {return [0,[0,0,[2,[246,function(_vh_){return data(caml_call1(f,0))}]]]]} + {return [0,[0,0,[2,[246,function(_vd_){return data(caml_call1(f,0))}]]]]} + function dump(f,s) + {print_string(cst_count); + print_int(count(s)); + print_string(cst_data); + dump_data(f,data(s)); + print_string(cst$6); + return print_newline(0)} function dump_data(f,param) {if(typeof param === "number") return print_string(cst_Sempty); @@ -17310,13 +17802,6 @@ case 2:return print_string(cst_Slazy); case 3:return print_string(cst_Sgen); default:return print_string(cst_Sbuffio)}} - function dump(f,s) - {print_string(cst_count); - print_int(count(s)); - print_string(cst_data); - dump_data(f,data(s)); - print_string(cst$6); - return print_newline(0)} var Stdlib_Stream= [0, @@ -17400,8 +17885,8 @@ b[3] = new_len[1]; if((b[2] + more | 0) <= b[3]) {if((old_pos + more | 0) <= b[3])return 0; - throw [0,Assert_failure,_ac_]} - throw [0,Assert_failure,_ad_]}} + throw [0,Assert_failure,_aa_]} + throw [0,Assert_failure,_ab_]}} function add_char(b,c) {var pos=b[2]; if(b[3] <= pos)resize(b,1); @@ -17434,14 +17919,14 @@ b[2] = pos + n | 0; return 0}} function add_substring(b,s,offset,len) - {var _ve_=offset < 0?1:0; - if(_ve_) - var _vf_=_ve_; + {var _va_=offset < 0?1:0; + if(_va_) + var _vb_=_va_; else var - _vg_=len < 0?1:0, - _vf_=_vg_ || ((caml_ml_string_length(s) - len | 0) < offset?1:0); - if(_vf_)invalid_arg(cst_Buffer_add_substring_add_s); + _vc_=len < 0?1:0, + _vb_=_vc_ || ((caml_ml_string_length(s) - len | 0) < offset?1:0); + if(_vb_)invalid_arg(cst_Buffer_add_substring_add_s); var new_position=b[2] + len | 0; if(b[3] < new_position)resize(b,len); caml_blit_string(s,offset,b[1],b[2],len); @@ -17458,13 +17943,13 @@ function add_bytes(b,s){return add_string(b,caml_string_of_bytes(s))} function add_buffer(b,bs){return add_subbytes(b,bs[1],0,bs[2])} function add_channel(b,ic,len) - {var _vc_=len < 0?1:0,_vd_=_vc_ || (max_string_length < len?1:0); - if(_vd_)invalid_arg(cst_Buffer_add_channel); + {var _u__=len < 0?1:0,_u$_=_u__ || (max_string_length < len?1:0); + if(_u$_)invalid_arg(cst_Buffer_add_channel); if(b[3] < (b[2] + len | 0))resize(b,len); - var already_read=0,ofs=b[2],to_read=len,_vb_=b[1]; + var already_read=0,ofs=b[2],to_read=len,_u9_=b[1]; for(;;) {if(0 !== to_read) - {var r=input(ic,_vb_,ofs,to_read); + {var r=input(ic,_u9_,ofs,to_read); if(0 !== r) {var already_read$0=already_read + r | 0, @@ -17478,7 +17963,7 @@ {b[2] = b[2] + already_read | 0; if(already_read < len)throw End_of_file; return 0} - throw [0,Assert_failure,_ae_]}} + throw [0,Assert_failure,_ac_]}} function output_buffer(oc,b){return output(oc,b[1],0,b[2])} function add_substitute(b,f,s) {var lim$1=caml_ml_string_length(s),previous=32,i$7=0; @@ -17518,15 +18003,15 @@ if(! switch$0) {var i$5=start + 1 | 0,k$2=0; if(40 === opening) - var _u$_=41; + var _u7_=41; else - {if(123 !== opening)throw [0,Assert_failure,_af_];var _u$_=125} + {if(123 !== opening)throw [0,Assert_failure,_ad_];var _u7_=125} var lim=caml_ml_string_length(s),k=k$2,i=i$5; for(;;) {if(lim <= i)throw Not_found; if(caml_string_get(s,i) === opening) {var i$0=i + 1 | 0,k$0=k + 1 | 0,k=k$0,i=i$0;continue} - if(caml_string_get(s,i) !== _u$_) + if(caml_string_get(s,i) !== _u7_) {var i$2=i + 1 | 0,i=i$2;continue} if(0 !== k) {var i$1=i + 1 | 0,k$1=k - 1 | 0,k=k$1,i=i$1;continue} @@ -17548,27 +18033,27 @@ add_char(b,current); var i$11=i$7 + 1 | 0,previous=current,i$7=i$11; continue} - var _va_=92 === previous?1:0; - return _va_?add_char(b,previous):_va_}} + var _u8_=92 === previous?1:0; + return _u8_?add_char(b,previous):_u8_}} function truncate(b,len) {if(0 <= len && ! (b[2] < len)){b[2] = len;return 0} return invalid_arg(cst_Buffer_truncate)} function to_seq$8(b) - {function aux(i,param) - {if(b[2] <= i)return 0; - var x=caml_bytes_unsafe_get(b[1],i),_u9_=i + 1 | 0; - return [0,x,function(_u__){return aux(_u9_,_u__)}]} - var _u7_=0; - return function(_u8_){return aux(_u7_,_u8_)}} - function to_seqi$3(b) {function aux(i,param) {if(b[2] <= i)return 0; var x=caml_bytes_unsafe_get(b[1],i),_u5_=i + 1 | 0; - return [0,[0,i,x],function(_u6_){return aux(_u5_,_u6_)}]} + return [0,x,function(_u6_){return aux(_u5_,_u6_)}]} var _u3_=0; return function(_u4_){return aux(_u3_,_u4_)}} + function to_seqi$3(b) + {function aux(i,param) + {if(b[2] <= i)return 0; + var x=caml_bytes_unsafe_get(b[1],i),_u1_=i + 1 | 0; + return [0,[0,i,x],function(_u2_){return aux(_u1_,_u2_)}]} + var _uZ_=0; + return function(_u0_){return aux(_uZ_,_u0_)}} function add_seq$1(b,seq) - {return iter(function(_u2_){return add_char(b,_u2_)},seq)} + {return iter(function(_uY_){return add_char(b,_uY_)},seq)} function of_seq$6(i){var b=create$2(32);add_seq$1(b,i);return b} function add_int8(b,x) {var new_position=b[2] + 1 | 0; @@ -17660,8 +18145,8 @@ for(;;) {caml_bytes_set (char_set$0,i,char_of_int(caml_string_get(char_set,i) ^ 255)); - var _u1_=i + 1 | 0; - if(31 !== i){var i=_u1_;continue} + var _uX_=i + 1 | 0; + if(31 !== i){var i=_uX_;continue} return caml_string_of_bytes(char_set$0)}} function is_in_char_set(char_set,c) {var str_ind=c >>> 3 | 0,mask=1 << (c & 7); @@ -17694,8 +18179,8 @@ return [0,[7,iconv$2,pad_of_pad_opt(pad_opt$4),0,fmt]]; case 6: var prec_opt=ign[2],pad_opt$5=ign[1]; - if(prec_opt)var ndec=prec_opt[1],_u0_=[0,ndec];else var _u0_=0; - return [0,[8,_ag_,pad_of_pad_opt(pad_opt$5),_u0_,fmt]]; + if(prec_opt)var ndec=prec_opt[1],_uW_=[0,ndec];else var _uW_=0; + return [0,[8,_ae_,pad_of_pad_opt(pad_opt$5),_uW_,fmt]]; case 7: var pad_opt$6=ign[1];return [0,[9,pad_of_pad_opt(pad_opt$6),fmt]]; case 8: @@ -17715,17 +18200,17 @@ {var len=caml_ml_bytes_length(buf[2]), min_len=buf[1] + overhead | 0, - _uY_=len < min_len?1:0; - if(_uY_) + _uU_=len < min_len?1:0; + if(_uU_) {var new_len=max$1(len * 2 | 0,min_len), new_str=caml_create_bytes(new_len); blit(buf[2],0,new_str,0,len); buf[2] = new_str; - var _uZ_=0} + var _uV_=0} else - var _uZ_=_uY_; - return _uZ_} + var _uV_=_uU_; + return _uV_} function buffer_add_char(buf,c) {buffer_check_size(buf,1); caml_bytes_set(buf[2],buf[1],c); @@ -17838,13 +18323,13 @@ function bprint_char_literal(buf,chr) {return 37 === chr?buffer_add_string(buf,cst$20):buffer_add_char(buf,chr)} function bprint_string_literal(buf,str) - {var _uW_=caml_ml_string_length(str) - 1 | 0,_uV_=0; - if(! (_uW_ < 0)) - {var i=_uV_; + {var _uS_=caml_ml_string_length(str) - 1 | 0,_uR_=0; + if(! (_uS_ < 0)) + {var i=_uR_; for(;;) {bprint_char_literal(buf,caml_string_get(str,i)); - var _uX_=i + 1 | 0; - if(_uW_ !== i){var i=_uX_;continue} + var _uT_=i + 1 | 0; + if(_uS_ !== i){var i=_uT_;continue} break}} return 0} function bprint_fmtty(buf,fmtty) @@ -18125,33 +18610,33 @@ :buffer_add_char(buf,c)}; buffer_add_char(buf,91); var - _uL_= + _uH_= is_in_char_set(char_set,0) ?(buffer_add_char(buf,94),rev_char_set(char_set)) :char_set, is_alone$0= - function(_uQ_) + function(_uM_) {function is_alone(c) {var after=chr(c + 1 | 0), before=chr(c - 1 | 0), - _uR_=is_in_char_set(_uQ_,c); - if(_uR_) + _uN_=is_in_char_set(_uM_,c); + if(_uN_) var - _uS_=is_in_char_set(_uQ_,before), - _uT_=_uS_?is_in_char_set(_uQ_,after):_uS_, - _uU_=1 - _uT_; + _uO_=is_in_char_set(_uM_,before), + _uP_=_uO_?is_in_char_set(_uM_,after):_uO_, + _uQ_=1 - _uP_; else - var _uU_=_uR_; - return _uU_} + var _uQ_=_uN_; + return _uQ_} return is_alone}, - is_alone=is_alone$0(_uL_); + is_alone=is_alone$0(_uH_); if(is_alone(93))buffer_add_char(buf,93); var i=1; b: for(;;) {if(i < 256) - {if(! is_in_char_set(_uL_,char_of_int(i))) + {if(! is_in_char_set(_uH_,char_of_int(i))) {var i$0=i + 1 | 0,i=i$0;continue} var match=char_of_int(i),switcher=match - 45 | 0,switch$0=0; if(48 < switcher >>> 0) @@ -18162,7 +18647,7 @@ switch$0 = 1} if(switch$0) {var i$1=i + 1 | 0; - if(! is_in_char_set(_uL_,char_of_int(i$1))) + if(! is_in_char_set(_uH_,char_of_int(i$1))) {print_char(buf,i$1 - 1 | 0); var i$6=i$1 + 1 | 0,i=i$6; continue} @@ -18177,7 +18662,7 @@ switch$1 = 1; else if(46 < switcher$0 - 1 >>> 0) - {if(! is_in_char_set(_uL_,char_of_int(i$1 + 1 | 0))) + {if(! is_in_char_set(_uH_,char_of_int(i$1 + 1 | 0))) {print_char(buf,i$1 - 1 | 0); var i$5=i$1 + 1 | 0,i=i$5; continue} @@ -18185,14 +18670,14 @@ else switch$1 = 1; if(switch$1) - {if(! is_in_char_set(_uL_,char_of_int(i$1 + 1 | 0))) + {if(! is_in_char_set(_uH_,char_of_int(i$1 + 1 | 0))) {print_char(buf,i$1 - 1 | 0); print_char(buf,i$1); var i$4=i$1 + 2 | 0,i=i$4; continue} var j=i$1 + 2 | 0,i$3=i$1 - 1 | 0,j$0=j; for(;;) - {if(256 !== j$0 && is_in_char_set(_uL_,char_of_int(j$0))) + {if(256 !== j$0 && is_in_char_set(_uH_,char_of_int(j$0))) {var j$1=j$0 + 1 | 0,j$0=j$1;continue} print_char(buf,i$3); print_char(buf,45); @@ -18208,10 +18693,10 @@ buffer_add_char(buf,37); bprint_ignored_flag(buf,ign_flag$0); switch(counter) - {case 0:var _uM_=108;break; - case 1:var _uM_=110;break; - default:var _uM_=78} - buffer_add_char(buf,_uM_); + {case 0:var _uI_=108;break; + case 1:var _uI_=110;break; + default:var _uI_=78} + buffer_add_char(buf,_uI_); var fmt$0=rest$20,ign_flag$0=0; continue; case 22: @@ -18234,16 +18719,16 @@ var rest$23=fmt$0[3], arity=fmt$0[1], - _uO_=int_of_custom_arity(arity), - _uN_=1; - if(! (_uO_ < 1)) - {var i$8=_uN_; + _uK_=int_of_custom_arity(arity), + _uJ_=1; + if(! (_uK_ < 1)) + {var i$8=_uJ_; for(;;) {buffer_add_char(buf,37); bprint_ignored_flag(buf,ign_flag$0); buffer_add_char(buf,63); - var _uP_=i$8 + 1 | 0; - if(_uO_ !== i$8){var i$8=_uP_;continue} + var _uL_=i$8 + 1 | 0; + if(_uK_ !== i$8){var i$8=_uL_;continue} break}} var fmt$0=rest$23,ign_flag$0=0; continue}} @@ -18271,6 +18756,236 @@ case 12:var rest$11=param[1];return [12,symm(rest$11)]; case 13:var rest$12=param[1];return [13,symm(rest$12)]; default:var rest$13=param[1];return [14,symm(rest$13)]}} + function fmtty_rel_det(param) + {if(typeof param === "number") + {var + _uj_=function(param){return 0}, + _uk_=function(param){return 0}, + _ul_=function(param){return 0}; + return [0,function(param){return 0},_ul_,_uk_,_uj_]} + else + switch(param[0]) + {case 0: + var + rest=param[1], + match=fmtty_rel_det(rest), + de=match[4], + ed=match[3], + af=match[2], + fa=match[1], + _um_=function(param){caml_call1(af,0);return 0}; + return [0,function(param){caml_call1(fa,0);return 0},_um_,ed,de]; + case 1: + var + rest$0=param[1], + match$0=fmtty_rel_det(rest$0), + de$0=match$0[4], + ed$0=match$0[3], + af$0=match$0[2], + fa$0=match$0[1], + _un_=function(param){caml_call1(af$0,0);return 0}; + return [0, + function(param){caml_call1(fa$0,0);return 0}, + _un_, + ed$0, + de$0]; + case 2: + var + rest$1=param[1], + match$1=fmtty_rel_det(rest$1), + de$1=match$1[4], + ed$1=match$1[3], + af$1=match$1[2], + fa$1=match$1[1], + _uo_=function(param){caml_call1(af$1,0);return 0}; + return [0, + function(param){caml_call1(fa$1,0);return 0}, + _uo_, + ed$1, + de$1]; + case 3: + var + rest$2=param[1], + match$2=fmtty_rel_det(rest$2), + de$2=match$2[4], + ed$2=match$2[3], + af$2=match$2[2], + fa$2=match$2[1], + _up_=function(param){caml_call1(af$2,0);return 0}; + return [0, + function(param){caml_call1(fa$2,0);return 0}, + _up_, + ed$2, + de$2]; + case 4: + var + rest$3=param[1], + match$3=fmtty_rel_det(rest$3), + de$3=match$3[4], + ed$3=match$3[3], + af$3=match$3[2], + fa$3=match$3[1], + _uq_=function(param){caml_call1(af$3,0);return 0}; + return [0, + function(param){caml_call1(fa$3,0);return 0}, + _uq_, + ed$3, + de$3]; + case 5: + var + rest$4=param[1], + match$4=fmtty_rel_det(rest$4), + de$4=match$4[4], + ed$4=match$4[3], + af$4=match$4[2], + fa$4=match$4[1], + _ur_=function(param){caml_call1(af$4,0);return 0}; + return [0, + function(param){caml_call1(fa$4,0);return 0}, + _ur_, + ed$4, + de$4]; + case 6: + var + rest$5=param[1], + match$5=fmtty_rel_det(rest$5), + de$5=match$5[4], + ed$5=match$5[3], + af$5=match$5[2], + fa$5=match$5[1], + _us_=function(param){caml_call1(af$5,0);return 0}; + return [0, + function(param){caml_call1(fa$5,0);return 0}, + _us_, + ed$5, + de$5]; + case 7: + var + rest$6=param[1], + match$6=fmtty_rel_det(rest$6), + de$6=match$6[4], + ed$6=match$6[3], + af$6=match$6[2], + fa$6=match$6[1], + _ut_=function(param){caml_call1(af$6,0);return 0}; + return [0, + function(param){caml_call1(fa$6,0);return 0}, + _ut_, + ed$6, + de$6]; + case 8: + var + rest$7=param[2], + match$7=fmtty_rel_det(rest$7), + de$7=match$7[4], + ed$7=match$7[3], + af$7=match$7[2], + fa$7=match$7[1], + _uu_=function(param){caml_call1(af$7,0);return 0}; + return [0, + function(param){caml_call1(fa$7,0);return 0}, + _uu_, + ed$7, + de$7]; + case 9: + var + rest$8=param[3], + ty2=param[2], + ty1=param[1], + match$8=fmtty_rel_det(rest$8), + de$8=match$8[4], + ed$8=match$8[3], + af$8=match$8[2], + fa$8=match$8[1], + ty=trans(symm(ty1),ty2), + match$9=fmtty_rel_det(ty), + jd=match$9[4], + dj=match$9[3], + ga=match$9[2], + ag=match$9[1], + _uv_=function(param){caml_call1(jd,0);caml_call1(de$8,0);return 0}, + _uw_=function(param){caml_call1(ed$8,0);caml_call1(dj,0);return 0}, + _ux_=function(param){caml_call1(ga,0);caml_call1(af$8,0);return 0}; + return [0, + function(param) + {caml_call1(fa$8,0);caml_call1(ag,0);return 0}, + _ux_, + _uw_, + _uv_]; + case 10: + var + rest$9=param[1], + match$10=fmtty_rel_det(rest$9), + de$9=match$10[4], + ed$9=match$10[3], + af$9=match$10[2], + fa$9=match$10[1], + _uy_=function(param){caml_call1(af$9,0);return 0}; + return [0, + function(param){caml_call1(fa$9,0);return 0}, + _uy_, + ed$9, + de$9]; + case 11: + var + rest$10=param[1], + match$11=fmtty_rel_det(rest$10), + de$10=match$11[4], + ed$10=match$11[3], + af$10=match$11[2], + fa$10=match$11[1], + _uz_=function(param){caml_call1(af$10,0);return 0}; + return [0, + function(param){caml_call1(fa$10,0);return 0}, + _uz_, + ed$10, + de$10]; + case 12: + var + rest$11=param[1], + match$12=fmtty_rel_det(rest$11), + de$11=match$12[4], + ed$11=match$12[3], + af$11=match$12[2], + fa$11=match$12[1], + _uA_=function(param){caml_call1(af$11,0);return 0}; + return [0, + function(param){caml_call1(fa$11,0);return 0}, + _uA_, + ed$11, + de$11]; + case 13: + var + rest$12=param[1], + match$13=fmtty_rel_det(rest$12), + de$12=match$13[4], + ed$12=match$13[3], + af$12=match$13[2], + fa$12=match$13[1], + _uB_=function(param){caml_call1(de$12,0);return 0}, + _uC_=function(param){caml_call1(ed$12,0);return 0}, + _uD_=function(param){caml_call1(af$12,0);return 0}; + return [0, + function(param){caml_call1(fa$12,0);return 0}, + _uD_, + _uC_, + _uB_]; + default: + var + rest$13=param[1], + match$14=fmtty_rel_det(rest$13), + de$13=match$14[4], + ed$13=match$14[3], + af$13=match$14[2], + fa$13=match$14[1], + _uE_=function(param){caml_call1(de$13,0);return 0}, + _uF_=function(param){caml_call1(ed$13,0);return 0}, + _uG_=function(param){caml_call1(af$13,0);return 0}; + return [0, + function(param){caml_call1(fa$13,0);return 0}, + _uG_, + _uF_, + _uE_]}} function trans(ty1,ty2) {var switch$0=0; if(typeof ty1 === "number") @@ -18285,14 +19000,14 @@ case 14:switch$0 = 4;break; case 8:switch$0 = 5;break; case 9:switch$0 = 6;break; - default:throw [0,Assert_failure,_ah_]} + default:throw [0,Assert_failure,_af_]} else switch(ty1[0]) {case 0: - var switch$1=0,_us_=ty1[1]; + var switch$1=0,_t2_=ty1[1]; if(typeof ty2 !== "number") switch(ty2[0]) - {case 0:var rest2=ty2[1];return [0,trans(_us_,rest2)]; + {case 0:var rest2=ty2[1];return [0,trans(_t2_,rest2)]; case 8:switch$0 = 5;switch$1 = 1;break; case 9:switch$0 = 6;switch$1 = 1;break; case 10:switch$1 = 1;break; @@ -18304,10 +19019,10 @@ if(! switch$1)switch$0 = 7; break; case 1: - var switch$2=0,_ut_=ty1[1]; + var switch$2=0,_t3_=ty1[1]; if(typeof ty2 !== "number") switch(ty2[0]) - {case 1:var rest2$0=ty2[1];return [1,trans(_ut_,rest2$0)]; + {case 1:var rest2$0=ty2[1];return [1,trans(_t3_,rest2$0)]; case 8:switch$0 = 5;switch$2 = 1;break; case 9:switch$0 = 6;switch$2 = 1;break; case 10:switch$2 = 1;break; @@ -18319,12 +19034,12 @@ if(! switch$2)switch$0 = 7; break; case 2: - var switch$3=0,_uu_=ty1[1]; + var switch$3=0,_t4_=ty1[1]; if(typeof ty2 === "number") switch$3 = 1; else switch(ty2[0]) - {case 2:var rest2$1=ty2[1];return [2,trans(_uu_,rest2$1)]; + {case 2:var rest2$1=ty2[1];return [2,trans(_t4_,rest2$1)]; case 8:switch$0 = 5;break; case 9:switch$0 = 6;break; case 10:break; @@ -18336,12 +19051,12 @@ if(switch$3)switch$0 = 7; break; case 3: - var switch$4=0,_uv_=ty1[1]; + var switch$4=0,_t5_=ty1[1]; if(typeof ty2 === "number") switch$4 = 1; else switch(ty2[0]) - {case 3:var rest2$2=ty2[1];return [3,trans(_uv_,rest2$2)]; + {case 3:var rest2$2=ty2[1];return [3,trans(_t5_,rest2$2)]; case 8:switch$0 = 5;break; case 9:switch$0 = 6;break; case 10:break; @@ -18353,12 +19068,12 @@ if(switch$4)switch$0 = 7; break; case 4: - var switch$5=0,_uw_=ty1[1]; + var switch$5=0,_t6_=ty1[1]; if(typeof ty2 === "number") switch$5 = 1; else switch(ty2[0]) - {case 4:var rest2$3=ty2[1];return [4,trans(_uw_,rest2$3)]; + {case 4:var rest2$3=ty2[1];return [4,trans(_t6_,rest2$3)]; case 8:switch$0 = 5;break; case 9:switch$0 = 6;break; case 10:break; @@ -18370,12 +19085,12 @@ if(switch$5)switch$0 = 7; break; case 5: - var switch$6=0,_ux_=ty1[1]; + var switch$6=0,_t7_=ty1[1]; if(typeof ty2 === "number") switch$6 = 1; else switch(ty2[0]) - {case 5:var rest2$4=ty2[1];return [5,trans(_ux_,rest2$4)]; + {case 5:var rest2$4=ty2[1];return [5,trans(_t7_,rest2$4)]; case 8:switch$0 = 5;break; case 9:switch$0 = 6;break; case 10:break; @@ -18387,12 +19102,12 @@ if(switch$6)switch$0 = 7; break; case 6: - var switch$7=0,_uy_=ty1[1]; + var switch$7=0,_t8_=ty1[1]; if(typeof ty2 === "number") switch$7 = 1; else switch(ty2[0]) - {case 6:var rest2$5=ty2[1];return [6,trans(_uy_,rest2$5)]; + {case 6:var rest2$5=ty2[1];return [6,trans(_t8_,rest2$5)]; case 8:switch$0 = 5;break; case 9:switch$0 = 6;break; case 10:break; @@ -18404,12 +19119,12 @@ if(switch$7)switch$0 = 7; break; case 7: - var switch$8=0,_uz_=ty1[1]; + var switch$8=0,_t9_=ty1[1]; if(typeof ty2 === "number") switch$8 = 1; else switch(ty2[0]) - {case 7:var rest2$6=ty2[1];return [7,trans(_uz_,rest2$6)]; + {case 7:var rest2$6=ty2[1];return [7,trans(_t9_,rest2$6)]; case 8:switch$0 = 5;break; case 9:switch$0 = 6;break; case 10:break; @@ -18421,24 +19136,24 @@ if(switch$8)switch$0 = 7; break; case 8: - var switch$9=0,_uA_=ty1[2],_uB_=ty1[1]; + var switch$9=0,_t__=ty1[2],_t$_=ty1[1]; if(typeof ty2 === "number") switch$9 = 1; else switch(ty2[0]) {case 8: - var rest2$7=ty2[2],ty2$0=ty2[1],_uC_=trans(_uA_,rest2$7); - return [8,trans(_uB_,ty2$0),_uC_]; + var rest2$7=ty2[2],ty2$0=ty2[1],_ua_=trans(_t__,rest2$7); + return [8,trans(_t$_,ty2$0),_ua_]; case 10:break; case 11:switch$0 = 1;break; case 12:switch$0 = 2;break; case 13:switch$0 = 3;break; case 14:switch$0 = 4;break; default:switch$9 = 1} - if(switch$9)throw [0,Assert_failure,_aq_]; + if(switch$9)throw [0,Assert_failure,_ao_]; break; case 9: - var switch$10=0,_uD_=ty1[3],_uE_=ty1[2],_uF_=ty1[1]; + var switch$10=0,_ub_=ty1[3],_uc_=ty1[2],_ud_=ty1[1]; if(typeof ty2 === "number") switch$10 = 1; else @@ -18449,51 +19164,51 @@ rest2$8=ty2[3], ty22=ty2[2], ty21=ty2[1], - ty=trans(symm(_uE_),ty21), + ty=trans(symm(_uc_),ty21), match=fmtty_rel_det(ty), f4=match[4], f2=match[2]; caml_call1(f2,0); caml_call1(f4,0); - return [9,_uF_,ty22,trans(_uD_,rest2$8)]; + return [9,_ud_,ty22,trans(_ub_,rest2$8)]; case 10:break; case 11:switch$0 = 1;break; case 12:switch$0 = 2;break; case 13:switch$0 = 3;break; case 14:switch$0 = 4;break; default:switch$10 = 1} - if(switch$10)throw [0,Assert_failure,_ar_]; + if(switch$10)throw [0,Assert_failure,_ap_]; break; case 10: - var _uG_=ty1[1]; + var _ue_=ty1[1]; if(typeof ty2 !== "number" && 10 === ty2[0]) - {var rest2$9=ty2[1];return [10,trans(_uG_,rest2$9)]} - throw [0,Assert_failure,_as_]; + {var rest2$9=ty2[1];return [10,trans(_ue_,rest2$9)]} + throw [0,Assert_failure,_aq_]; case 11: - var switch$11=0,_uH_=ty1[1]; + var switch$11=0,_uf_=ty1[1]; if(typeof ty2 === "number") switch$11 = 1; else switch(ty2[0]) {case 10:break; - case 11:var rest2$10=ty2[1];return [11,trans(_uH_,rest2$10)]; + case 11:var rest2$10=ty2[1];return [11,trans(_uf_,rest2$10)]; default:switch$11 = 1} - if(switch$11)throw [0,Assert_failure,_at_]; + if(switch$11)throw [0,Assert_failure,_ar_]; break; case 12: - var switch$12=0,_uI_=ty1[1]; + var switch$12=0,_ug_=ty1[1]; if(typeof ty2 === "number") switch$12 = 1; else switch(ty2[0]) {case 10:break; case 11:switch$0 = 1;break; - case 12:var rest2$11=ty2[1];return [12,trans(_uI_,rest2$11)]; + case 12:var rest2$11=ty2[1];return [12,trans(_ug_,rest2$11)]; default:switch$12 = 1} - if(switch$12)throw [0,Assert_failure,_au_]; + if(switch$12)throw [0,Assert_failure,_as_]; break; case 13: - var switch$13=0,_uJ_=ty1[1]; + var switch$13=0,_uh_=ty1[1]; if(typeof ty2 === "number") switch$13 = 1; else @@ -18501,12 +19216,12 @@ {case 10:break; case 11:switch$0 = 1;break; case 12:switch$0 = 2;break; - case 13:var rest2$12=ty2[1];return [13,trans(_uJ_,rest2$12)]; + case 13:var rest2$12=ty2[1];return [13,trans(_uh_,rest2$12)]; default:switch$13 = 1} - if(switch$13)throw [0,Assert_failure,_av_]; + if(switch$13)throw [0,Assert_failure,_at_]; break; default: - var switch$14=0,_uK_=ty1[1]; + var switch$14=0,_ui_=ty1[1]; if(typeof ty2 === "number") switch$14 = 1; else @@ -18515,250 +19230,18 @@ case 11:switch$0 = 1;break; case 12:switch$0 = 2;break; case 13:switch$0 = 3;break; - case 14:var rest2$13=ty2[1];return [14,trans(_uK_,rest2$13)]; + case 14:var rest2$13=ty2[1];return [14,trans(_ui_,rest2$13)]; default:switch$14 = 1} - if(switch$14)throw [0,Assert_failure,_aw_]} + if(switch$14)throw [0,Assert_failure,_au_]} switch(switch$0) - {case 0:throw [0,Assert_failure,_ak_]; - case 1:throw [0,Assert_failure,_al_]; - case 2:throw [0,Assert_failure,_am_]; - case 3:throw [0,Assert_failure,_an_]; - case 4:throw [0,Assert_failure,_ao_]; - case 5:throw [0,Assert_failure,_ai_]; - case 6:throw [0,Assert_failure,_aj_]; - default:throw [0,Assert_failure,_ap_]}} - function fmtty_rel_det(param) - {if(typeof param === "number") - {var - _t6_=function(param){return 0}, - _t7_=function(param){return 0}, - _t8_=function(param){return 0}; - return [0,function(param){return 0},_t8_,_t7_,_t6_]} - else - switch(param[0]) - {case 0: - var - rest=param[1], - match=fmtty_rel_det(rest), - de=match[4], - ed=match[3], - af=match[2], - fa=match[1], - _t9_=function(param){caml_call1(af,0);return 0}; - return [0,function(param){caml_call1(fa,0);return 0},_t9_,ed,de]; - case 1: - var - rest$0=param[1], - match$0=fmtty_rel_det(rest$0), - de$0=match$0[4], - ed$0=match$0[3], - af$0=match$0[2], - fa$0=match$0[1], - _t__=function(param){caml_call1(af$0,0);return 0}; - return [0, - function(param){caml_call1(fa$0,0);return 0}, - _t__, - ed$0, - de$0]; - case 2: - var - rest$1=param[1], - match$1=fmtty_rel_det(rest$1), - de$1=match$1[4], - ed$1=match$1[3], - af$1=match$1[2], - fa$1=match$1[1], - _t$_=function(param){caml_call1(af$1,0);return 0}; - return [0, - function(param){caml_call1(fa$1,0);return 0}, - _t$_, - ed$1, - de$1]; - case 3: - var - rest$2=param[1], - match$2=fmtty_rel_det(rest$2), - de$2=match$2[4], - ed$2=match$2[3], - af$2=match$2[2], - fa$2=match$2[1], - _ua_=function(param){caml_call1(af$2,0);return 0}; - return [0, - function(param){caml_call1(fa$2,0);return 0}, - _ua_, - ed$2, - de$2]; - case 4: - var - rest$3=param[1], - match$3=fmtty_rel_det(rest$3), - de$3=match$3[4], - ed$3=match$3[3], - af$3=match$3[2], - fa$3=match$3[1], - _ub_=function(param){caml_call1(af$3,0);return 0}; - return [0, - function(param){caml_call1(fa$3,0);return 0}, - _ub_, - ed$3, - de$3]; - case 5: - var - rest$4=param[1], - match$4=fmtty_rel_det(rest$4), - de$4=match$4[4], - ed$4=match$4[3], - af$4=match$4[2], - fa$4=match$4[1], - _uc_=function(param){caml_call1(af$4,0);return 0}; - return [0, - function(param){caml_call1(fa$4,0);return 0}, - _uc_, - ed$4, - de$4]; - case 6: - var - rest$5=param[1], - match$5=fmtty_rel_det(rest$5), - de$5=match$5[4], - ed$5=match$5[3], - af$5=match$5[2], - fa$5=match$5[1], - _ud_=function(param){caml_call1(af$5,0);return 0}; - return [0, - function(param){caml_call1(fa$5,0);return 0}, - _ud_, - ed$5, - de$5]; - case 7: - var - rest$6=param[1], - match$6=fmtty_rel_det(rest$6), - de$6=match$6[4], - ed$6=match$6[3], - af$6=match$6[2], - fa$6=match$6[1], - _ue_=function(param){caml_call1(af$6,0);return 0}; - return [0, - function(param){caml_call1(fa$6,0);return 0}, - _ue_, - ed$6, - de$6]; - case 8: - var - rest$7=param[2], - match$7=fmtty_rel_det(rest$7), - de$7=match$7[4], - ed$7=match$7[3], - af$7=match$7[2], - fa$7=match$7[1], - _uf_=function(param){caml_call1(af$7,0);return 0}; - return [0, - function(param){caml_call1(fa$7,0);return 0}, - _uf_, - ed$7, - de$7]; - case 9: - var - rest$8=param[3], - ty2=param[2], - ty1=param[1], - match$8=fmtty_rel_det(rest$8), - de$8=match$8[4], - ed$8=match$8[3], - af$8=match$8[2], - fa$8=match$8[1], - ty=trans(symm(ty1),ty2), - match$9=fmtty_rel_det(ty), - jd=match$9[4], - dj=match$9[3], - ga=match$9[2], - ag=match$9[1], - _ug_=function(param){caml_call1(jd,0);caml_call1(de$8,0);return 0}, - _uh_=function(param){caml_call1(ed$8,0);caml_call1(dj,0);return 0}, - _ui_=function(param){caml_call1(ga,0);caml_call1(af$8,0);return 0}; - return [0, - function(param) - {caml_call1(fa$8,0);caml_call1(ag,0);return 0}, - _ui_, - _uh_, - _ug_]; - case 10: - var - rest$9=param[1], - match$10=fmtty_rel_det(rest$9), - de$9=match$10[4], - ed$9=match$10[3], - af$9=match$10[2], - fa$9=match$10[1], - _uj_=function(param){caml_call1(af$9,0);return 0}; - return [0, - function(param){caml_call1(fa$9,0);return 0}, - _uj_, - ed$9, - de$9]; - case 11: - var - rest$10=param[1], - match$11=fmtty_rel_det(rest$10), - de$10=match$11[4], - ed$10=match$11[3], - af$10=match$11[2], - fa$10=match$11[1], - _uk_=function(param){caml_call1(af$10,0);return 0}; - return [0, - function(param){caml_call1(fa$10,0);return 0}, - _uk_, - ed$10, - de$10]; - case 12: - var - rest$11=param[1], - match$12=fmtty_rel_det(rest$11), - de$11=match$12[4], - ed$11=match$12[3], - af$11=match$12[2], - fa$11=match$12[1], - _ul_=function(param){caml_call1(af$11,0);return 0}; - return [0, - function(param){caml_call1(fa$11,0);return 0}, - _ul_, - ed$11, - de$11]; - case 13: - var - rest$12=param[1], - match$13=fmtty_rel_det(rest$12), - de$12=match$13[4], - ed$12=match$13[3], - af$12=match$13[2], - fa$12=match$13[1], - _um_=function(param){caml_call1(de$12,0);return 0}, - _un_=function(param){caml_call1(ed$12,0);return 0}, - _uo_=function(param){caml_call1(af$12,0);return 0}; - return [0, - function(param){caml_call1(fa$12,0);return 0}, - _uo_, - _un_, - _um_]; - default: - var - rest$13=param[1], - match$14=fmtty_rel_det(rest$13), - de$13=match$14[4], - ed$13=match$14[3], - af$13=match$14[2], - fa$13=match$14[1], - _up_=function(param){caml_call1(de$13,0);return 0}, - _uq_=function(param){caml_call1(ed$13,0);return 0}, - _ur_=function(param){caml_call1(af$13,0);return 0}; - return [0, - function(param){caml_call1(fa$13,0);return 0}, - _ur_, - _uq_, - _up_]}} - function fmtty_of_precision_fmtty(prec,fmtty) - {return typeof prec === "number"?prec?[2,fmtty]:fmtty:fmtty} + {case 0:throw [0,Assert_failure,_ai_]; + case 1:throw [0,Assert_failure,_aj_]; + case 2:throw [0,Assert_failure,_ak_]; + case 3:throw [0,Assert_failure,_al_]; + case 4:throw [0,Assert_failure,_am_]; + case 5:throw [0,Assert_failure,_ag_]; + case 6:throw [0,Assert_failure,_ah_]; + default:throw [0,Assert_failure,_an_]}} function fmtty_of_padding_fmtty(pad,fmtty) {return typeof pad === "number"?fmtty:0 === pad[0]?fmtty:[2,fmtty]} function fmtty_of_custom(arity,fmtty) @@ -18839,15 +19322,15 @@ var rest$13=fmtty$0[2], fmting_gen=fmtty$0[1], - _t4_=fmtty_of_fmt(rest$13); + _t0_=fmtty_of_fmt(rest$13); if(0 === fmting_gen[0]) - var match=fmting_gen[1],fmt=match[1],_t5_=fmtty_of_fmt(fmt); + var match=fmting_gen[1],fmt=match[1],_t1_=fmtty_of_fmt(fmt); else var match$0=fmting_gen[1], fmt$0=match$0[1], - _t5_=fmtty_of_fmt(fmt$0); - return concat_fmtty(_t5_,_t4_); + _t1_=fmtty_of_fmt(fmt$0); + return concat_fmtty(_t1_,_t0_); case 19:var rest$14=fmtty$0[1];return [13,fmtty_of_fmt(rest$14)]; case 20:var rest$15=fmtty$0[3];return [1,fmtty_of_fmt(rest$15)]; case 21:var rest$16=fmtty$0[2];return [2,fmtty_of_fmt(rest$16)]; @@ -18879,6 +19362,8 @@ default: var rest$19=fmtty$0[3],arity=fmtty$0[1]; return fmtty_of_custom(arity,fmtty_of_fmt(rest$19))}} + function fmtty_of_precision_fmtty(prec,fmtty) + {return typeof prec === "number"?prec?[2,fmtty]:fmtty:fmtty} var Type_mismatch= [248,cst_CamlinternalFormat_Type_mi,caml_fresh_oo_id(0)]; @@ -18895,213 +19380,21 @@ {var match=type_padding(pad,fmtty); if(typeof prec === "number") {if(prec) - {var _t3_=match[2]; - if(typeof _t3_ !== "number" && 2 === _t3_[0]) - {var rest=_t3_[1],pad$0=match[1];return [0,pad$0,1,rest]} + {var _tZ_=match[2]; + if(typeof _tZ_ !== "number" && 2 === _tZ_[0]) + {var rest=_tZ_[1],pad$0=match[1];return [0,pad$0,1,rest]} throw Type_mismatch} var rest$0=match[2],pad$1=match[1]; return [0,pad$1,0,rest$0]} var rest$1=match[2],pad$2=match[1],p=prec[1]; return [0,pad$2,[0,p],rest$1]} - function type_ignored_format_substituti(sub_fmtty,fmt,fmtty) - {if(typeof sub_fmtty === "number") - return [0,0,type_format_gen(fmt,fmtty)]; - else - switch(sub_fmtty[0]) - {case 0: - if(typeof fmtty !== "number" && 0 === fmtty[0]) - {var - fmtty_rest=fmtty[1], - sub_fmtty_rest=sub_fmtty[1], - match= - type_ignored_format_substituti(sub_fmtty_rest,fmt,fmtty_rest), - fmt$0=match[2], - sub_fmtty_rest$0=match[1]; - return [0,[0,sub_fmtty_rest$0],fmt$0]} - break; - case 1: - if(typeof fmtty !== "number" && 1 === fmtty[0]) - {var - fmtty_rest$0=fmtty[1], - sub_fmtty_rest$1=sub_fmtty[1], - match$0= - type_ignored_format_substituti - (sub_fmtty_rest$1,fmt,fmtty_rest$0), - fmt$1=match$0[2], - sub_fmtty_rest$2=match$0[1]; - return [0,[1,sub_fmtty_rest$2],fmt$1]} - break; - case 2: - if(typeof fmtty !== "number" && 2 === fmtty[0]) - {var - fmtty_rest$1=fmtty[1], - sub_fmtty_rest$3=sub_fmtty[1], - match$1= - type_ignored_format_substituti - (sub_fmtty_rest$3,fmt,fmtty_rest$1), - fmt$2=match$1[2], - sub_fmtty_rest$4=match$1[1]; - return [0,[2,sub_fmtty_rest$4],fmt$2]} - break; - case 3: - if(typeof fmtty !== "number" && 3 === fmtty[0]) - {var - fmtty_rest$2=fmtty[1], - sub_fmtty_rest$5=sub_fmtty[1], - match$2= - type_ignored_format_substituti - (sub_fmtty_rest$5,fmt,fmtty_rest$2), - fmt$3=match$2[2], - sub_fmtty_rest$6=match$2[1]; - return [0,[3,sub_fmtty_rest$6],fmt$3]} - break; - case 4: - if(typeof fmtty !== "number" && 4 === fmtty[0]) - {var - fmtty_rest$3=fmtty[1], - sub_fmtty_rest$7=sub_fmtty[1], - match$3= - type_ignored_format_substituti - (sub_fmtty_rest$7,fmt,fmtty_rest$3), - fmt$4=match$3[2], - sub_fmtty_rest$8=match$3[1]; - return [0,[4,sub_fmtty_rest$8],fmt$4]} - break; - case 5: - if(typeof fmtty !== "number" && 5 === fmtty[0]) - {var - fmtty_rest$4=fmtty[1], - sub_fmtty_rest$9=sub_fmtty[1], - match$4= - type_ignored_format_substituti - (sub_fmtty_rest$9,fmt,fmtty_rest$4), - fmt$5=match$4[2], - sub_fmtty_rest$10=match$4[1]; - return [0,[5,sub_fmtty_rest$10],fmt$5]} - break; - case 6: - if(typeof fmtty !== "number" && 6 === fmtty[0]) - {var - fmtty_rest$5=fmtty[1], - sub_fmtty_rest$11=sub_fmtty[1], - match$5= - type_ignored_format_substituti - (sub_fmtty_rest$11,fmt,fmtty_rest$5), - fmt$6=match$5[2], - sub_fmtty_rest$12=match$5[1]; - return [0,[6,sub_fmtty_rest$12],fmt$6]} - break; - case 7: - if(typeof fmtty !== "number" && 7 === fmtty[0]) - {var - fmtty_rest$6=fmtty[1], - sub_fmtty_rest$13=sub_fmtty[1], - match$6= - type_ignored_format_substituti - (sub_fmtty_rest$13,fmt,fmtty_rest$6), - fmt$7=match$6[2], - sub_fmtty_rest$14=match$6[1]; - return [0,[7,sub_fmtty_rest$14],fmt$7]} - break; - case 8: - if(typeof fmtty !== "number" && 8 === fmtty[0]) - {var - fmtty_rest$7=fmtty[2], - sub2_fmtty=fmtty[1], - sub_fmtty_rest$15=sub_fmtty[2], - sub2_fmtty$0=sub_fmtty[1]; - if(caml_notequal([0,sub2_fmtty$0],[0,sub2_fmtty])) - throw Type_mismatch; - var - match$7= - type_ignored_format_substituti - (sub_fmtty_rest$15,fmt,fmtty_rest$7), - fmt$8=match$7[2], - sub_fmtty_rest$16=match$7[1]; - return [0,[8,sub2_fmtty,sub_fmtty_rest$16],fmt$8]} - break; - case 9: - if(typeof fmtty !== "number" && 9 === fmtty[0]) - {var - fmtty_rest$8=fmtty[3], - sub2_fmtty$1=fmtty[2], - sub1_fmtty=fmtty[1], - sub_fmtty_rest$17=sub_fmtty[3], - sub2_fmtty$2=sub_fmtty[2], - sub1_fmtty$0=sub_fmtty[1], - _t1_=[0,erase_rel(sub1_fmtty)]; - if(caml_notequal([0,erase_rel(sub1_fmtty$0)],_t1_)) - throw Type_mismatch; - var _t2_=[0,erase_rel(sub2_fmtty$1)]; - if(caml_notequal([0,erase_rel(sub2_fmtty$2)],_t2_)) - throw Type_mismatch; - var - sub_fmtty$0=trans(symm(sub1_fmtty),sub2_fmtty$1), - match$8=fmtty_rel_det(sub_fmtty$0), - f4=match$8[4], - f2=match$8[2]; - caml_call1(f2,0); - caml_call1(f4,0); - var - match$9= - type_ignored_format_substituti - (erase_rel(sub_fmtty_rest$17),fmt,fmtty_rest$8), - fmt$9=match$9[2], - sub_fmtty_rest$18=match$9[1]; - return [0, - [9,sub1_fmtty,sub2_fmtty$1,symm(sub_fmtty_rest$18)], - fmt$9]} - break; - case 10: - if(typeof fmtty !== "number" && 10 === fmtty[0]) - {var - fmtty_rest$9=fmtty[1], - sub_fmtty_rest$19=sub_fmtty[1], - match$10= - type_ignored_format_substituti - (sub_fmtty_rest$19,fmt,fmtty_rest$9), - fmt$10=match$10[2], - sub_fmtty_rest$20=match$10[1]; - return [0,[10,sub_fmtty_rest$20],fmt$10]} - break; - case 11: - if(typeof fmtty !== "number" && 11 === fmtty[0]) - {var - fmtty_rest$10=fmtty[1], - sub_fmtty_rest$21=sub_fmtty[1], - match$11= - type_ignored_format_substituti - (sub_fmtty_rest$21,fmt,fmtty_rest$10), - fmt$11=match$11[2], - sub_fmtty_rest$22=match$11[1]; - return [0,[11,sub_fmtty_rest$22],fmt$11]} - break; - case 13: - if(typeof fmtty !== "number" && 13 === fmtty[0]) - {var - fmtty_rest$11=fmtty[1], - sub_fmtty_rest$23=sub_fmtty[1], - match$12= - type_ignored_format_substituti - (sub_fmtty_rest$23,fmt,fmtty_rest$11), - fmt$12=match$12[2], - sub_fmtty_rest$24=match$12[1]; - return [0,[13,sub_fmtty_rest$24],fmt$12]} - break; - case 14: - if(typeof fmtty !== "number" && 14 === fmtty[0]) - {var - fmtty_rest$12=fmtty[1], - sub_fmtty_rest$25=sub_fmtty[1], - match$13= - type_ignored_format_substituti - (sub_fmtty_rest$25,fmt,fmtty_rest$12), - fmt$13=match$13[2], - sub_fmtty_rest$26=match$13[1]; - return [0,[14,sub_fmtty_rest$26],fmt$13]} - break - } + function type_format(fmt,fmtty) + {var _tY_=type_format_gen(fmt,fmtty); + if(typeof _tY_[2] === "number"){var fmt$0=_tY_[1];return fmt$0} throw Type_mismatch} + function type_ignored_param_one(ign,fmt,fmtty) + {var match=type_format_gen(fmt,fmtty),fmtty$0=match[2],fmt$0=match[1]; + return [0,[23,ign,fmt$0],fmtty$0]} function type_format_gen(fmt,fmtty) {if(typeof fmt === "number") return [0,0,fmtty]; @@ -19132,30 +19425,30 @@ fmt_rest$1=fmt[2], pad=fmt[1], match$1=type_padding(pad,fmtty), - _tK_=match$1[2], - _tJ_=match$1[1]; - if(typeof _tK_ !== "number" && 1 === _tK_[0]) + _tH_=match$1[2], + _tG_=match$1[1]; + if(typeof _tH_ !== "number" && 1 === _tH_[0]) {var - fmtty_rest$1=_tK_[1], + fmtty_rest$1=_tH_[1], match$2=type_format_gen(fmt_rest$1,fmtty_rest$1), fmtty$2=match$2[2], fmt$2=match$2[1]; - return [0,[2,_tJ_,fmt$2],fmtty$2]} + return [0,[2,_tG_,fmt$2],fmtty$2]} throw Type_mismatch; case 3: var fmt_rest$2=fmt[2], pad$0=fmt[1], match$3=type_padding(pad$0,fmtty), - _tM_=match$3[2], - _tL_=match$3[1]; - if(typeof _tM_ !== "number" && 1 === _tM_[0]) + _tJ_=match$3[2], + _tI_=match$3[1]; + if(typeof _tJ_ !== "number" && 1 === _tJ_[0]) {var - fmtty_rest$2=_tM_[1], + fmtty_rest$2=_tJ_[1], match$4=type_format_gen(fmt_rest$2,fmtty_rest$2), fmtty$3=match$4[2], fmt$3=match$4[1]; - return [0,[3,_tL_,fmt$3],fmtty$3]} + return [0,[3,_tI_,fmt$3],fmtty$3]} throw Type_mismatch; case 4: var @@ -19164,16 +19457,16 @@ pad$1=fmt[2], iconv=fmt[1], match$5=type_padprec(pad$1,prec,fmtty), - _tO_=match$5[3], - _tN_=match$5[1]; - if(typeof _tO_ !== "number" && 2 === _tO_[0]) + _tL_=match$5[3], + _tK_=match$5[1]; + if(typeof _tL_ !== "number" && 2 === _tL_[0]) {var - fmtty_rest$3=_tO_[1], + fmtty_rest$3=_tL_[1], prec$0=match$5[2], match$6=type_format_gen(fmt_rest$3,fmtty_rest$3), fmtty$4=match$6[2], fmt$4=match$6[1]; - return [0,[4,iconv,_tN_,prec$0,fmt$4],fmtty$4]} + return [0,[4,iconv,_tK_,prec$0,fmt$4],fmtty$4]} throw Type_mismatch; case 5: var @@ -19182,16 +19475,16 @@ pad$2=fmt[2], iconv$0=fmt[1], match$7=type_padprec(pad$2,prec$1,fmtty), - _tQ_=match$7[3], - _tP_=match$7[1]; - if(typeof _tQ_ !== "number" && 3 === _tQ_[0]) + _tN_=match$7[3], + _tM_=match$7[1]; + if(typeof _tN_ !== "number" && 3 === _tN_[0]) {var - fmtty_rest$4=_tQ_[1], + fmtty_rest$4=_tN_[1], prec$2=match$7[2], match$8=type_format_gen(fmt_rest$4,fmtty_rest$4), fmtty$5=match$8[2], fmt$5=match$8[1]; - return [0,[5,iconv$0,_tP_,prec$2,fmt$5],fmtty$5]} + return [0,[5,iconv$0,_tM_,prec$2,fmt$5],fmtty$5]} throw Type_mismatch; case 6: var @@ -19200,16 +19493,16 @@ pad$3=fmt[2], iconv$1=fmt[1], match$9=type_padprec(pad$3,prec$3,fmtty), - _tS_=match$9[3], - _tR_=match$9[1]; - if(typeof _tS_ !== "number" && 4 === _tS_[0]) + _tP_=match$9[3], + _tO_=match$9[1]; + if(typeof _tP_ !== "number" && 4 === _tP_[0]) {var - fmtty_rest$5=_tS_[1], + fmtty_rest$5=_tP_[1], prec$4=match$9[2], match$10=type_format_gen(fmt_rest$5,fmtty_rest$5), fmtty$6=match$10[2], fmt$6=match$10[1]; - return [0,[6,iconv$1,_tR_,prec$4,fmt$6],fmtty$6]} + return [0,[6,iconv$1,_tO_,prec$4,fmt$6],fmtty$6]} throw Type_mismatch; case 7: var @@ -19218,16 +19511,16 @@ pad$4=fmt[2], iconv$2=fmt[1], match$11=type_padprec(pad$4,prec$5,fmtty), - _tU_=match$11[3], - _tT_=match$11[1]; - if(typeof _tU_ !== "number" && 5 === _tU_[0]) + _tR_=match$11[3], + _tQ_=match$11[1]; + if(typeof _tR_ !== "number" && 5 === _tR_[0]) {var - fmtty_rest$6=_tU_[1], + fmtty_rest$6=_tR_[1], prec$6=match$11[2], match$12=type_format_gen(fmt_rest$6,fmtty_rest$6), fmtty$7=match$12[2], fmt$7=match$12[1]; - return [0,[7,iconv$2,_tT_,prec$6,fmt$7],fmtty$7]} + return [0,[7,iconv$2,_tQ_,prec$6,fmt$7],fmtty$7]} throw Type_mismatch; case 8: var @@ -19236,31 +19529,31 @@ pad$5=fmt[2], fconv=fmt[1], match$13=type_padprec(pad$5,prec$7,fmtty), - _tW_=match$13[3], - _tV_=match$13[1]; - if(typeof _tW_ !== "number" && 6 === _tW_[0]) + _tT_=match$13[3], + _tS_=match$13[1]; + if(typeof _tT_ !== "number" && 6 === _tT_[0]) {var - fmtty_rest$7=_tW_[1], + fmtty_rest$7=_tT_[1], prec$8=match$13[2], match$14=type_format_gen(fmt_rest$7,fmtty_rest$7), fmtty$8=match$14[2], fmt$8=match$14[1]; - return [0,[8,fconv,_tV_,prec$8,fmt$8],fmtty$8]} + return [0,[8,fconv,_tS_,prec$8,fmt$8],fmtty$8]} throw Type_mismatch; case 9: var fmt_rest$8=fmt[2], pad$6=fmt[1], match$15=type_padding(pad$6,fmtty), - _tY_=match$15[2], - _tX_=match$15[1]; - if(typeof _tY_ !== "number" && 7 === _tY_[0]) + _tV_=match$15[2], + _tU_=match$15[1]; + if(typeof _tV_ !== "number" && 7 === _tV_[0]) {var - fmtty_rest$8=_tY_[1], + fmtty_rest$8=_tV_[1], match$16=type_format_gen(fmt_rest$8,fmtty_rest$8), fmtty$9=match$16[2], fmt$9=match$16[1]; - return [0,[9,_tX_,fmt$9],fmtty$9]} + return [0,[9,_tU_,fmt$9],fmtty$9]} throw Type_mismatch; case 10: var @@ -19309,8 +19602,8 @@ fmt_rest$13=fmt[3], sub_fmtty$1=fmt[2], pad_opt$0=fmt[1], - _tZ_=[0,erase_rel(sub_fmtty1)]; - if(caml_notequal([0,erase_rel(sub_fmtty$1)],_tZ_)) + _tW_=[0,erase_rel(sub_fmtty1)]; + if(caml_notequal([0,erase_rel(sub_fmtty$1)],_tW_)) throw Type_mismatch; var match$21=type_format_gen(fmt_rest$13,erase_rel(fmtty_rest$10)), @@ -19438,141 +19731,333 @@ var sub_fmtty$3=ign[2], pad_opt$2=ign[1], - _t0_=type_ignored_format_substituti(sub_fmtty$3,rest,fmtty), - match$35=_t0_[2], + _tX_=type_ignored_format_substituti(sub_fmtty$3,rest,fmtty), + match$35=_tX_[2], fmtty$22=match$35[2], fmt$22=match$35[1], - sub_fmtty$4=_t0_[1]; + sub_fmtty$4=_tX_[1]; return [0,[23,[9,pad_opt$2,sub_fmtty$4],fmt$22],fmtty$22]; case 10:return type_ignored_param_one(ign,rest,fmtty); default:return type_ignored_param_one(ign,rest,fmtty)} } throw Type_mismatch} - function type_ignored_param_one(ign,fmt,fmtty) - {var match=type_format_gen(fmt,fmtty),fmtty$0=match[2],fmt$0=match[1]; - return [0,[23,ign,fmt$0],fmtty$0]} - function type_format(fmt,fmtty) - {var _tI_=type_format_gen(fmt,fmtty); - if(typeof _tI_[2] === "number"){var fmt$0=_tI_[1];return fmt$0} - throw Type_mismatch} - function recast(fmt,fmtty){return type_format(fmt,erase_rel(symm(fmtty)))} - function fix_padding(padty,width,str) - {var - len=caml_ml_string_length(str), - padty$0=0 <= width?padty:0, - width$0=abs(width); - if(width$0 <= len)return str; - var _tH_=2 === padty$0?48:32,res=make$0(width$0,_tH_); - switch(padty$0) - {case 0:blit$0(str,0,res,0,len);break; - case 1:blit$0(str,0,res,width$0 - len | 0,len);break; - default: - var switch$0=0; - if(0 < len) - {var switch$1=0; - if - (43 - !== - caml_string_get(str,0) - && - 45 - !== - caml_string_get(str,0) - && - 32 - !== - caml_string_get(str,0)) - {switch$0 = 1;switch$1 = 1} - if(! switch$1) - {caml_bytes_set(res,0,caml_string_get(str,0)); - blit$0(str,1,res,(width$0 - len | 0) + 1 | 0,len - 1 | 0)}} - else - switch$0 = 1; - if(switch$0) - {var switch$2=0; - if(1 < len && 48 === caml_string_get(str,0)) - {var switch$3=0; - if - (120 - !== - caml_string_get(str,1) - && - 88 - !== - caml_string_get(str,1)) - {switch$2 = 1;switch$3 = 1} - if(! switch$3) - {caml_bytes_set(res,1,caml_string_get(str,1)); - blit$0(str,2,res,(width$0 - len | 0) + 2 | 0,len - 2 | 0)}} - else - switch$2 = 1; - if(switch$2)blit$0(str,0,res,width$0 - len | 0,len)}} - return caml_string_of_bytes(res)} - function fix_int_precision(prec,str) - {var - prec$0=abs(prec), - len=caml_ml_string_length(str), - c=caml_string_get(str,0), - switch$0=0; - if(58 <= c) - {if(71 <= c) - {if(! (5 < c - 97 >>> 0))switch$0 = 1} - else - if(65 <= c)switch$0 = 1} + function type_ignored_format_substituti(sub_fmtty,fmt,fmtty) + {if(typeof sub_fmtty === "number") + return [0,0,type_format_gen(fmt,fmtty)]; else - {var switch$1=0; - if(32 !== c) - if(43 <= c) - switch(c - 43 | 0) - {case 5: - if(len < (prec$0 + 2 | 0) && 1 < len) - {var switch$2=0; - if - (120 - === - caml_string_get(str,1) - || - 88 - === - caml_string_get(str,1)) - switch$2 = 1; - if(switch$2) - {var res$1=make$0(prec$0 + 2 | 0,48); - caml_bytes_set(res$1,1,caml_string_get(str,1)); - blit$0(str,2,res$1,(prec$0 - len | 0) + 4 | 0,len - 2 | 0); - return caml_string_of_bytes(res$1)}} - switch$0 = 1; - switch$1 = 1; - break; - case 0: - case 2:break; - case 1: - case 3: - case 4:switch$1 = 1;break; - default:switch$0 = 1;switch$1 = 1} - else - switch$1 = 1; - if(! switch$1 && len < (prec$0 + 1 | 0)) - {var res$0=make$0(prec$0 + 1 | 0,48); - caml_bytes_set(res$0,0,c); - blit$0(str,1,res$0,(prec$0 - len | 0) + 2 | 0,len - 1 | 0); - return caml_string_of_bytes(res$0)}} - if(switch$0 && len < prec$0) - {var res=make$0(prec$0,48); - blit$0(str,0,res,prec$0 - len | 0,len); - return caml_string_of_bytes(res)} - return str} - function string_to_caml_string(str) - {var - str$0=escaped$1(str), - l=caml_ml_string_length(str$0), - res=make$0(l + 2 | 0,34); - caml_blit_string(str$0,0,res,1,l); - return caml_string_of_bytes(res)} - function format_of_fconv(fconv,prec) - {var + switch(sub_fmtty[0]) + {case 0: + if(typeof fmtty !== "number" && 0 === fmtty[0]) + {var + fmtty_rest=fmtty[1], + sub_fmtty_rest=sub_fmtty[1], + match= + type_ignored_format_substituti(sub_fmtty_rest,fmt,fmtty_rest), + fmt$0=match[2], + sub_fmtty_rest$0=match[1]; + return [0,[0,sub_fmtty_rest$0],fmt$0]} + break; + case 1: + if(typeof fmtty !== "number" && 1 === fmtty[0]) + {var + fmtty_rest$0=fmtty[1], + sub_fmtty_rest$1=sub_fmtty[1], + match$0= + type_ignored_format_substituti + (sub_fmtty_rest$1,fmt,fmtty_rest$0), + fmt$1=match$0[2], + sub_fmtty_rest$2=match$0[1]; + return [0,[1,sub_fmtty_rest$2],fmt$1]} + break; + case 2: + if(typeof fmtty !== "number" && 2 === fmtty[0]) + {var + fmtty_rest$1=fmtty[1], + sub_fmtty_rest$3=sub_fmtty[1], + match$1= + type_ignored_format_substituti + (sub_fmtty_rest$3,fmt,fmtty_rest$1), + fmt$2=match$1[2], + sub_fmtty_rest$4=match$1[1]; + return [0,[2,sub_fmtty_rest$4],fmt$2]} + break; + case 3: + if(typeof fmtty !== "number" && 3 === fmtty[0]) + {var + fmtty_rest$2=fmtty[1], + sub_fmtty_rest$5=sub_fmtty[1], + match$2= + type_ignored_format_substituti + (sub_fmtty_rest$5,fmt,fmtty_rest$2), + fmt$3=match$2[2], + sub_fmtty_rest$6=match$2[1]; + return [0,[3,sub_fmtty_rest$6],fmt$3]} + break; + case 4: + if(typeof fmtty !== "number" && 4 === fmtty[0]) + {var + fmtty_rest$3=fmtty[1], + sub_fmtty_rest$7=sub_fmtty[1], + match$3= + type_ignored_format_substituti + (sub_fmtty_rest$7,fmt,fmtty_rest$3), + fmt$4=match$3[2], + sub_fmtty_rest$8=match$3[1]; + return [0,[4,sub_fmtty_rest$8],fmt$4]} + break; + case 5: + if(typeof fmtty !== "number" && 5 === fmtty[0]) + {var + fmtty_rest$4=fmtty[1], + sub_fmtty_rest$9=sub_fmtty[1], + match$4= + type_ignored_format_substituti + (sub_fmtty_rest$9,fmt,fmtty_rest$4), + fmt$5=match$4[2], + sub_fmtty_rest$10=match$4[1]; + return [0,[5,sub_fmtty_rest$10],fmt$5]} + break; + case 6: + if(typeof fmtty !== "number" && 6 === fmtty[0]) + {var + fmtty_rest$5=fmtty[1], + sub_fmtty_rest$11=sub_fmtty[1], + match$5= + type_ignored_format_substituti + (sub_fmtty_rest$11,fmt,fmtty_rest$5), + fmt$6=match$5[2], + sub_fmtty_rest$12=match$5[1]; + return [0,[6,sub_fmtty_rest$12],fmt$6]} + break; + case 7: + if(typeof fmtty !== "number" && 7 === fmtty[0]) + {var + fmtty_rest$6=fmtty[1], + sub_fmtty_rest$13=sub_fmtty[1], + match$6= + type_ignored_format_substituti + (sub_fmtty_rest$13,fmt,fmtty_rest$6), + fmt$7=match$6[2], + sub_fmtty_rest$14=match$6[1]; + return [0,[7,sub_fmtty_rest$14],fmt$7]} + break; + case 8: + if(typeof fmtty !== "number" && 8 === fmtty[0]) + {var + fmtty_rest$7=fmtty[2], + sub2_fmtty=fmtty[1], + sub_fmtty_rest$15=sub_fmtty[2], + sub2_fmtty$0=sub_fmtty[1]; + if(caml_notequal([0,sub2_fmtty$0],[0,sub2_fmtty])) + throw Type_mismatch; + var + match$7= + type_ignored_format_substituti + (sub_fmtty_rest$15,fmt,fmtty_rest$7), + fmt$8=match$7[2], + sub_fmtty_rest$16=match$7[1]; + return [0,[8,sub2_fmtty,sub_fmtty_rest$16],fmt$8]} + break; + case 9: + if(typeof fmtty !== "number" && 9 === fmtty[0]) + {var + fmtty_rest$8=fmtty[3], + sub2_fmtty$1=fmtty[2], + sub1_fmtty=fmtty[1], + sub_fmtty_rest$17=sub_fmtty[3], + sub2_fmtty$2=sub_fmtty[2], + sub1_fmtty$0=sub_fmtty[1], + _tE_=[0,erase_rel(sub1_fmtty)]; + if(caml_notequal([0,erase_rel(sub1_fmtty$0)],_tE_)) + throw Type_mismatch; + var _tF_=[0,erase_rel(sub2_fmtty$1)]; + if(caml_notequal([0,erase_rel(sub2_fmtty$2)],_tF_)) + throw Type_mismatch; + var + sub_fmtty$0=trans(symm(sub1_fmtty),sub2_fmtty$1), + match$8=fmtty_rel_det(sub_fmtty$0), + f4=match$8[4], + f2=match$8[2]; + caml_call1(f2,0); + caml_call1(f4,0); + var + match$9= + type_ignored_format_substituti + (erase_rel(sub_fmtty_rest$17),fmt,fmtty_rest$8), + fmt$9=match$9[2], + sub_fmtty_rest$18=match$9[1]; + return [0, + [9,sub1_fmtty,sub2_fmtty$1,symm(sub_fmtty_rest$18)], + fmt$9]} + break; + case 10: + if(typeof fmtty !== "number" && 10 === fmtty[0]) + {var + fmtty_rest$9=fmtty[1], + sub_fmtty_rest$19=sub_fmtty[1], + match$10= + type_ignored_format_substituti + (sub_fmtty_rest$19,fmt,fmtty_rest$9), + fmt$10=match$10[2], + sub_fmtty_rest$20=match$10[1]; + return [0,[10,sub_fmtty_rest$20],fmt$10]} + break; + case 11: + if(typeof fmtty !== "number" && 11 === fmtty[0]) + {var + fmtty_rest$10=fmtty[1], + sub_fmtty_rest$21=sub_fmtty[1], + match$11= + type_ignored_format_substituti + (sub_fmtty_rest$21,fmt,fmtty_rest$10), + fmt$11=match$11[2], + sub_fmtty_rest$22=match$11[1]; + return [0,[11,sub_fmtty_rest$22],fmt$11]} + break; + case 13: + if(typeof fmtty !== "number" && 13 === fmtty[0]) + {var + fmtty_rest$11=fmtty[1], + sub_fmtty_rest$23=sub_fmtty[1], + match$12= + type_ignored_format_substituti + (sub_fmtty_rest$23,fmt,fmtty_rest$11), + fmt$12=match$12[2], + sub_fmtty_rest$24=match$12[1]; + return [0,[13,sub_fmtty_rest$24],fmt$12]} + break; + case 14: + if(typeof fmtty !== "number" && 14 === fmtty[0]) + {var + fmtty_rest$12=fmtty[1], + sub_fmtty_rest$25=sub_fmtty[1], + match$13= + type_ignored_format_substituti + (sub_fmtty_rest$25,fmt,fmtty_rest$12), + fmt$13=match$13[2], + sub_fmtty_rest$26=match$13[1]; + return [0,[14,sub_fmtty_rest$26],fmt$13]} + break + } + throw Type_mismatch} + function recast(fmt,fmtty){return type_format(fmt,erase_rel(symm(fmtty)))} + function fix_padding(padty,width,str) + {var + len=caml_ml_string_length(str), + padty$0=0 <= width?padty:0, + width$0=abs(width); + if(width$0 <= len)return str; + var _tD_=2 === padty$0?48:32,res=make$0(width$0,_tD_); + switch(padty$0) + {case 0:blit$0(str,0,res,0,len);break; + case 1:blit$0(str,0,res,width$0 - len | 0,len);break; + default: + var switch$0=0; + if(0 < len) + {var switch$1=0; + if + (43 + !== + caml_string_get(str,0) + && + 45 + !== + caml_string_get(str,0) + && + 32 + !== + caml_string_get(str,0)) + {switch$0 = 1;switch$1 = 1} + if(! switch$1) + {caml_bytes_set(res,0,caml_string_get(str,0)); + blit$0(str,1,res,(width$0 - len | 0) + 1 | 0,len - 1 | 0)}} + else + switch$0 = 1; + if(switch$0) + {var switch$2=0; + if(1 < len && 48 === caml_string_get(str,0)) + {var switch$3=0; + if + (120 + !== + caml_string_get(str,1) + && + 88 + !== + caml_string_get(str,1)) + {switch$2 = 1;switch$3 = 1} + if(! switch$3) + {caml_bytes_set(res,1,caml_string_get(str,1)); + blit$0(str,2,res,(width$0 - len | 0) + 2 | 0,len - 2 | 0)}} + else + switch$2 = 1; + if(switch$2)blit$0(str,0,res,width$0 - len | 0,len)}} + return caml_string_of_bytes(res)} + function fix_int_precision(prec,str) + {var + prec$0=abs(prec), + len=caml_ml_string_length(str), + c=caml_string_get(str,0), + switch$0=0; + if(58 <= c) + {if(71 <= c) + {if(! (5 < c - 97 >>> 0))switch$0 = 1} + else + if(65 <= c)switch$0 = 1} + else + {var switch$1=0; + if(32 !== c) + if(43 <= c) + switch(c - 43 | 0) + {case 5: + if(len < (prec$0 + 2 | 0) && 1 < len) + {var switch$2=0; + if + (120 + === + caml_string_get(str,1) + || + 88 + === + caml_string_get(str,1)) + switch$2 = 1; + if(switch$2) + {var res$1=make$0(prec$0 + 2 | 0,48); + caml_bytes_set(res$1,1,caml_string_get(str,1)); + blit$0(str,2,res$1,(prec$0 - len | 0) + 4 | 0,len - 2 | 0); + return caml_string_of_bytes(res$1)}} + switch$0 = 1; + switch$1 = 1; + break; + case 0: + case 2:break; + case 1: + case 3: + case 4:switch$1 = 1;break; + default:switch$0 = 1;switch$1 = 1} + else + switch$1 = 1; + if(! switch$1 && len < (prec$0 + 1 | 0)) + {var res$0=make$0(prec$0 + 1 | 0,48); + caml_bytes_set(res$0,0,c); + blit$0(str,1,res$0,(prec$0 - len | 0) + 2 | 0,len - 1 | 0); + return caml_string_of_bytes(res$0)}} + if(switch$0 && len < prec$0) + {var res=make$0(prec$0,48); + blit$0(str,0,res,prec$0 - len | 0,len); + return caml_string_of_bytes(res)} + return str} + function string_to_caml_string(str) + {var + str$0=escaped$1(str), + l=caml_ml_string_length(str$0), + res=make$0(l + 2 | 0,34); + caml_blit_string(str$0,0,res,1,l); + return caml_string_of_bytes(res)} + function format_of_fconv(fconv,prec) + {var prec$0=abs(prec), - symb=char_of_fconv(_ax_,fconv), + symb=char_of_fconv(_av_,fconv), buf=buffer_create(16); buffer_add_char(buf,37); bprint_fconv_flag(buf,fconv); @@ -19582,14 +20067,14 @@ return buffer_contents(buf)} function transform_int_alt(iconv,s) {if(13 <= iconv) - {var n=[0,0],_tC_=caml_ml_string_length(s) - 1 | 0,_tB_=0; - if(! (_tC_ < 0)) - {var i$0=_tB_; + {var n=[0,0],_ty_=caml_ml_string_length(s) - 1 | 0,_tx_=0; + if(! (_ty_ < 0)) + {var i$0=_tx_; for(;;) {var match=caml_string_unsafe_get(s,i$0); if(! (9 < match - 48 >>> 0))n[1]++; - var _tG_=i$0 + 1 | 0; - if(_tC_ !== i$0){var i$0=_tG_;continue} + var _tC_=i$0 + 1 | 0; + if(_ty_ !== i$0){var i$0=_tC_;continue} break}} var digits=n[1], @@ -19599,93 +20084,93 @@ pos=[0,0], put=function(c){caml_bytes_set(buf,pos[1],c);pos[1]++;return 0}, left=[0,((digits - 1 | 0) % 3 | 0) + 1 | 0], - _tE_=caml_ml_string_length(s) - 1 | 0, - _tD_=0; - if(! (_tE_ < 0)) - {var i=_tD_; + _tA_=caml_ml_string_length(s) - 1 | 0, + _tz_=0; + if(! (_tA_ < 0)) + {var i=_tz_; for(;;) {var c=caml_string_unsafe_get(s,i); if(9 < c - 48 >>> 0) put(c); else {if(0 === left[1]){put(95);left[1] = 3}left[1] += -1;put(c)} - var _tF_=i + 1 | 0; - if(_tE_ !== i){var i=_tF_;continue} + var _tB_=i + 1 | 0; + if(_tA_ !== i){var i=_tB_;continue} break}} return caml_string_of_bytes(buf)} return s} function convert_int(iconv,n) {switch(iconv) - {case 1:var _tA_=cst_d$3;break; - case 2:var _tA_=cst_d$4;break; - case 4:var _tA_=cst_i$1;break; - case 5:var _tA_=cst_i$2;break; - case 6:var _tA_=cst_x;break; - case 7:var _tA_=cst_x$0;break; - case 8:var _tA_=cst_X$0;break; - case 9:var _tA_=cst_X$1;break; - case 10:var _tA_=cst_o;break; - case 11:var _tA_=cst_o$0;break; + {case 1:var _tw_=cst_d$3;break; + case 2:var _tw_=cst_d$4;break; + case 4:var _tw_=cst_i$1;break; + case 5:var _tw_=cst_i$2;break; + case 6:var _tw_=cst_x;break; + case 7:var _tw_=cst_x$0;break; + case 8:var _tw_=cst_X$0;break; + case 9:var _tw_=cst_X$1;break; + case 10:var _tw_=cst_o;break; + case 11:var _tw_=cst_o$0;break; case 0: - case 13:var _tA_=cst_d$2;break; + case 13:var _tw_=cst_d$2;break; case 3: - case 14:var _tA_=cst_i$0;break; - default:var _tA_=cst_u} - return transform_int_alt(iconv,caml_format_int(_tA_,n))} + case 14:var _tw_=cst_i$0;break; + default:var _tw_=cst_u} + return transform_int_alt(iconv,caml_format_int(_tw_,n))} function convert_int32(iconv,n) {switch(iconv) - {case 1:var _tz_=cst_ld$0;break; - case 2:var _tz_=cst_ld$1;break; - case 4:var _tz_=cst_li$1;break; - case 5:var _tz_=cst_li$2;break; - case 6:var _tz_=cst_lx;break; - case 7:var _tz_=cst_lx$0;break; - case 8:var _tz_=cst_lX;break; - case 9:var _tz_=cst_lX$0;break; - case 10:var _tz_=cst_lo;break; - case 11:var _tz_=cst_lo$0;break; + {case 1:var _tv_=cst_ld$0;break; + case 2:var _tv_=cst_ld$1;break; + case 4:var _tv_=cst_li$1;break; + case 5:var _tv_=cst_li$2;break; + case 6:var _tv_=cst_lx;break; + case 7:var _tv_=cst_lx$0;break; + case 8:var _tv_=cst_lX;break; + case 9:var _tv_=cst_lX$0;break; + case 10:var _tv_=cst_lo;break; + case 11:var _tv_=cst_lo$0;break; case 0: - case 13:var _tz_=cst_ld;break; + case 13:var _tv_=cst_ld;break; case 3: - case 14:var _tz_=cst_li$0;break; - default:var _tz_=cst_lu} - return transform_int_alt(iconv,caml_format_int(_tz_,n))} + case 14:var _tv_=cst_li$0;break; + default:var _tv_=cst_lu} + return transform_int_alt(iconv,caml_format_int(_tv_,n))} function convert_nativeint(iconv,n) {switch(iconv) - {case 1:var _ty_=cst_nd$0;break; - case 2:var _ty_=cst_nd$1;break; - case 4:var _ty_=cst_ni$1;break; - case 5:var _ty_=cst_ni$2;break; - case 6:var _ty_=cst_nx;break; - case 7:var _ty_=cst_nx$0;break; - case 8:var _ty_=cst_nX;break; - case 9:var _ty_=cst_nX$0;break; - case 10:var _ty_=cst_no;break; - case 11:var _ty_=cst_no$0;break; + {case 1:var _tu_=cst_nd$0;break; + case 2:var _tu_=cst_nd$1;break; + case 4:var _tu_=cst_ni$1;break; + case 5:var _tu_=cst_ni$2;break; + case 6:var _tu_=cst_nx;break; + case 7:var _tu_=cst_nx$0;break; + case 8:var _tu_=cst_nX;break; + case 9:var _tu_=cst_nX$0;break; + case 10:var _tu_=cst_no;break; + case 11:var _tu_=cst_no$0;break; case 0: - case 13:var _ty_=cst_nd;break; + case 13:var _tu_=cst_nd;break; case 3: - case 14:var _ty_=cst_ni$0;break; - default:var _ty_=cst_nu} - return transform_int_alt(iconv,caml_format_int(_ty_,n))} + case 14:var _tu_=cst_ni$0;break; + default:var _tu_=cst_nu} + return transform_int_alt(iconv,caml_format_int(_tu_,n))} function convert_int64(iconv,n) {switch(iconv) - {case 1:var _tx_=cst_Ld$0;break; - case 2:var _tx_=cst_Ld$1;break; - case 4:var _tx_=cst_Li$1;break; - case 5:var _tx_=cst_Li$2;break; - case 6:var _tx_=cst_Lx;break; - case 7:var _tx_=cst_Lx$0;break; - case 8:var _tx_=cst_LX;break; - case 9:var _tx_=cst_LX$0;break; - case 10:var _tx_=cst_Lo;break; - case 11:var _tx_=cst_Lo$0;break; + {case 1:var _tt_=cst_Ld$0;break; + case 2:var _tt_=cst_Ld$1;break; + case 4:var _tt_=cst_Li$1;break; + case 5:var _tt_=cst_Li$2;break; + case 6:var _tt_=cst_Lx;break; + case 7:var _tt_=cst_Lx$0;break; + case 8:var _tt_=cst_LX;break; + case 9:var _tt_=cst_LX$0;break; + case 10:var _tt_=cst_Lo;break; + case 11:var _tt_=cst_Lo$0;break; case 0: - case 13:var _tx_=cst_Ld;break; + case 13:var _tt_=cst_Ld;break; case 3: - case 14:var _tx_=cst_Li$0;break; - default:var _tx_=cst_Lu} - return transform_int_alt(iconv,caml_int64_format(_tx_,n))} + case 14:var _tt_=cst_Li$0;break; + default:var _tt_=cst_Lu} + return transform_int_alt(iconv,caml_int64_format(_tt_,n))} function convert_float(fconv,prec,x) {function hex(param) {switch(fconv[1]) @@ -19706,17 +20191,17 @@ i=0; for(;;) {if(i === len) - var _tv_=0; + var _tr_=0; else - {var match=caml_string_get(str,i),_tu_=match - 46 | 0,switch$0=0; - if(23 < _tu_ >>> 0) - {if(55 === _tu_)switch$0 = 1} + {var match=caml_string_get(str,i),_tq_=match - 46 | 0,switch$0=0; + if(23 < _tq_ >>> 0) + {if(55 === _tq_)switch$0 = 1} else - if(21 < _tu_ - 1 >>> 0)switch$0 = 1; + if(21 < _tq_ - 1 >>> 0)switch$0 = 1; if(! switch$0){var i$0=i + 1 | 0,i=i$0;continue} - var _tv_=1} - var _tw_=_tv_?str:cat(str,cst$29); - return caml_special_val(_tw_)} + var _tr_=1} + var _ts_=_tr_?str:cat(str,cst$29); + return caml_special_val(_ts_)} case 6:return hex(0); case 7:return uppercase_ascii$1(hex(0)); case 8:return caml_special_val(hex(0)); @@ -19725,6 +20210,75 @@ {var buf=buffer_create(16); bprint_fmtty(buf,fmtty); return buffer_contents(buf)} + function make_int_padding_precision(k,acc,fmt,pad,prec,trans,iconv) + {if(typeof pad === "number") + {if(typeof prec === "number") + return prec + ?function(p,x) + {var str=fix_int_precision(p,caml_call2(trans,iconv,x)); + return make_printf(k,[4,acc,str],fmt)} + :function(x) + {var str=caml_call2(trans,iconv,x); + return make_printf(k,[4,acc,str],fmt)}; + var p=prec[1]; + return function(x) + {var str=fix_int_precision(p,caml_call2(trans,iconv,x)); + return make_printf(k,[4,acc,str],fmt)}} + else + {if(0 === pad[0]) + {var _tn_=pad[2],_to_=pad[1]; + if(typeof prec === "number") + return prec + ?function(p,x) + {var + str= + fix_padding + (_to_,_tn_,fix_int_precision(p,caml_call2(trans,iconv,x))); + return make_printf(k,[4,acc,str],fmt)} + :function(x) + {var str=fix_padding(_to_,_tn_,caml_call2(trans,iconv,x)); + return make_printf(k,[4,acc,str],fmt)}; + var p$0=prec[1]; + return function(x) + {var + str= + fix_padding + (_to_,_tn_,fix_int_precision(p$0,caml_call2(trans,iconv,x))); + return make_printf(k,[4,acc,str],fmt)}} + var _tp_=pad[1]; + if(typeof prec === "number") + return prec + ?function(w,p,x) + {var + str= + fix_padding + (_tp_,w,fix_int_precision(p,caml_call2(trans,iconv,x))); + return make_printf(k,[4,acc,str],fmt)} + :function(w,x) + {var str=fix_padding(_tp_,w,caml_call2(trans,iconv,x)); + return make_printf(k,[4,acc,str],fmt)}; + var p$1=prec[1]; + return function(w,x) + {var + str= + fix_padding + (_tp_,w,fix_int_precision(p$1,caml_call2(trans,iconv,x))); + return make_printf(k,[4,acc,str],fmt)}}} + function make_padding(k,acc,fmt,pad,trans) + {if(typeof pad === "number") + return function(x) + {var new_acc=[4,acc,caml_call1(trans,x)]; + return make_printf(k,new_acc,fmt)}; + else + {if(0 === pad[0]) + {var width=pad[2],padty=pad[1]; + return function(x) + {var new_acc=[4,acc,fix_padding(padty,width,caml_call1(trans,x))]; + return make_printf(k,new_acc,fmt)}} + var padty$0=pad[1]; + return function(w,x) + {var new_acc=[4,acc,fix_padding(padty$0,w,caml_call1(trans,x))]; + return make_printf(k,new_acc,fmt)}}} function make_printf$0(counter,k,acc,fmt) {var k$0=k,acc$0=acc,fmt$0=fmt; for(;;) @@ -19799,35 +20353,35 @@ return make_printf(k$0,[4,acc$0,str],rest$7)}} else {if(0 === pad$5[0]) - {var _tr_=pad$5[2],_ts_=pad$5[1]; + {var _tk_=pad$5[2],_tl_=pad$5[1]; if(typeof prec$3 === "number") return prec$3 ?function(p,x) - {var str=fix_padding(_ts_,_tr_,convert_float(fconv,p,x)); + {var str=fix_padding(_tl_,_tk_,convert_float(fconv,p,x)); return make_printf(k$0,[4,acc$0,str],rest$7)} :function(x) {var str=convert_float(fconv,default_float_precision(fconv),x), - str$0=fix_padding(_ts_,_tr_,str); + str$0=fix_padding(_tl_,_tk_,str); return make_printf(k$0,[4,acc$0,str$0],rest$7)}; var p$0=prec$3[1]; return function(x) - {var str=fix_padding(_ts_,_tr_,convert_float(fconv,p$0,x)); + {var str=fix_padding(_tl_,_tk_,convert_float(fconv,p$0,x)); return make_printf(k$0,[4,acc$0,str],rest$7)}} - var _tt_=pad$5[1]; + var _tm_=pad$5[1]; if(typeof prec$3 === "number") return prec$3 ?function(w,p,x) - {var str=fix_padding(_tt_,w,convert_float(fconv,p,x)); + {var str=fix_padding(_tm_,w,convert_float(fconv,p,x)); return make_printf(k$0,[4,acc$0,str],rest$7)} :function(w,x) {var str=convert_float(fconv,default_float_precision(fconv),x), - str$0=fix_padding(_tt_,w,str); + str$0=fix_padding(_tm_,w,str); return make_printf(k$0,[4,acc$0,str$0],rest$7)}; var p$1=prec$3[1]; return function(w,x) - {var str=fix_padding(_tt_,w,convert_float(fconv,p$1,x)); + {var str=fix_padding(_tm_,w,convert_float(fconv,p$1,x)); return make_printf(k$0,[4,acc$0,str],rest$7)}} case 9: var rest$8=fmt$0[2],pad$6=fmt$0[1]; @@ -19882,11 +20436,11 @@ fmt$0=fmt$4; continue; case 18: - var _tp_=fmt$0[1]; - if(0 === _tp_[0]) + var _ti_=fmt$0[1]; + if(0 === _ti_[0]) {var rest$13=fmt$0[2], - match=_tp_[1], + match=_ti_[1], fmt$5=match[1], k$3= function(acc,k,rest) @@ -19900,7 +20454,7 @@ continue} var rest$14=fmt$0[2], - match$0=_tp_[1], + match$0=_ti_[1], fmt$6=match$0[1], k$4= function(acc,k,rest) @@ -19911,7 +20465,7 @@ acc$0=0, fmt$0=fmt$6; continue; - case 19:throw [0,Assert_failure,_ay_]; + case 19:throw [0,Assert_failure,_aw_]; case 20: var rest$15=fmt$0[3],new_acc=[8,acc$0,cst_Printf_bad_conversion]; return function(param){return make_printf(k$0,new_acc,rest$15)}; @@ -19936,12 +20490,12 @@ rest$19=fmt$0[3], f=fmt$0[2], arity=fmt$0[1], - _tq_=caml_call1(f,0); + _tj_=caml_call1(f,0); if(counter < 50) {var counter$0=counter + 1 | 0; - return make_custom$0(counter$0,k$0,acc$0,rest$19,arity,_tq_)} + return make_custom$0(counter$0,k$0,acc$0,rest$19,arity,_tj_)} return caml_trampoline_return - (make_custom$0,[0,k$0,acc$0,rest$19,arity,_tq_])}} + (make_custom$0,[0,k$0,acc$0,rest$19,arity,_tj_])}} function make_ignored_param$0(counter,k,acc,ign,fmt) {if(typeof ign === "number") switch(ign) @@ -19955,7 +20509,7 @@ {var counter$1=counter + 1 | 0; return make_invalid_arg(counter$1,k,acc,fmt)} return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]); - case 2:throw [0,Assert_failure,_az_]; + case 2:throw [0,Assert_failure,_ax_]; default: if(counter < 50) {var counter$2=counter + 1 | 0; @@ -20069,7 +20623,7 @@ {return make_from_fmtty(k,acc,concat_fmtty(ty,rest$8),fmt)}; case 10: var rest$9=fmtty[1]; - return function(param,_to_) + return function(param,_th_) {return make_from_fmtty(k,acc,rest$9,fmt)}; case 11: var rest$10=fmtty[1]; @@ -20077,24 +20631,24 @@ case 12: var rest$11=fmtty[1]; return function(param){return make_from_fmtty(k,acc,rest$11,fmt)}; - case 13:throw [0,Assert_failure,_aA_]; - default:throw [0,Assert_failure,_aB_]}} + case 13:throw [0,Assert_failure,_ay_]; + default:throw [0,Assert_failure,_az_]}} function make_invalid_arg(counter,k,acc,fmt) - {var _tn_=[8,acc,cst_Printf_bad_conversion$0]; + {var _tg_=[8,acc,cst_Printf_bad_conversion$0]; if(counter < 50) {var counter$0=counter + 1 | 0; - return make_printf$0(counter$0,k,_tn_,fmt)} - return caml_trampoline_return(make_printf$0,[0,k,_tn_,fmt])} + return make_printf$0(counter$0,k,_tg_,fmt)} + return caml_trampoline_return(make_printf$0,[0,k,_tg_,fmt])} function make_custom$0(counter,k,acc,rest,arity,f) {if(arity) {var arity$0=arity[1]; return function(x) {return make_custom(k,acc,rest,arity$0,caml_call1(f,x))}} - var _tm_=[4,acc,f]; + var _tf_=[4,acc,f]; if(counter < 50) {var counter$0=counter + 1 | 0; - return make_printf$0(counter$0,k,_tm_,rest)} - return caml_trampoline_return(make_printf$0,[0,k,_tm_,rest])} + return make_printf$0(counter$0,k,_tf_,rest)} + return caml_trampoline_return(make_printf$0,[0,k,_tf_,rest])} function make_printf(k,acc,fmt) {return caml_trampoline(make_printf$0(0,k,acc,fmt))} function make_ignored_param(k,acc,ign,fmt) @@ -20103,75 +20657,37 @@ {return caml_trampoline(make_from_fmtty$0(0,k,acc,fmtty,fmt))} function make_custom(k,acc,rest,arity,f) {return caml_trampoline(make_custom$0(0,k,acc,rest,arity,f))} - function make_padding(k,acc,fmt,pad,trans) - {if(typeof pad === "number") - return function(x) - {var new_acc=[4,acc,caml_call1(trans,x)]; - return make_printf(k,new_acc,fmt)}; - else - {if(0 === pad[0]) - {var width=pad[2],padty=pad[1]; - return function(x) - {var new_acc=[4,acc,fix_padding(padty,width,caml_call1(trans,x))]; - return make_printf(k,new_acc,fmt)}} - var padty$0=pad[1]; - return function(w,x) - {var new_acc=[4,acc,fix_padding(padty$0,w,caml_call1(trans,x))]; - return make_printf(k,new_acc,fmt)}}} - function make_int_padding_precision(k,acc,fmt,pad,prec,trans,iconv) + function fn_of_padding_precision(k,o,fmt,pad,prec) {if(typeof pad === "number") {if(typeof prec === "number") - return prec - ?function(p,x) - {var str=fix_int_precision(p,caml_call2(trans,iconv,x)); - return make_printf(k,[4,acc,str],fmt)} - :function(x) - {var str=caml_call2(trans,iconv,x); - return make_printf(k,[4,acc,str],fmt)}; - var p=prec[1]; - return function(x) - {var str=fix_int_precision(p,caml_call2(trans,iconv,x)); - return make_printf(k,[4,acc,str],fmt)}} + {if(prec) + {var _sN_=make_iprintf(k,o,fmt),_sO_=function(_s5_){return _sN_}; + return function(_s4_){return _sO_}} + var _sP_=make_iprintf(k,o,fmt); + return function(_s3_){return _sP_}} + var _sQ_=make_iprintf(k,o,fmt); + return function(_s2_){return _sQ_}} else {if(0 === pad[0]) - {var _tj_=pad[2],_tk_=pad[1]; - if(typeof prec === "number") - return prec - ?function(p,x) - {var - str= - fix_padding - (_tk_,_tj_,fix_int_precision(p,caml_call2(trans,iconv,x))); - return make_printf(k,[4,acc,str],fmt)} - :function(x) - {var str=fix_padding(_tk_,_tj_,caml_call2(trans,iconv,x)); - return make_printf(k,[4,acc,str],fmt)}; - var p$0=prec[1]; - return function(x) - {var - str= - fix_padding - (_tk_,_tj_,fix_int_precision(p$0,caml_call2(trans,iconv,x))); - return make_printf(k,[4,acc,str],fmt)}} - var _tl_=pad[1]; + {if(typeof prec === "number") + {if(prec) + {var _sR_=make_iprintf(k,o,fmt),_sS_=function(_te_){return _sR_}; + return function(_td_){return _sS_}} + var _sT_=make_iprintf(k,o,fmt); + return function(_tc_){return _sT_}} + var _sU_=make_iprintf(k,o,fmt); + return function(_tb_){return _sU_}} if(typeof prec === "number") - return prec - ?function(w,p,x) - {var - str= - fix_padding - (_tl_,w,fix_int_precision(p,caml_call2(trans,iconv,x))); - return make_printf(k,[4,acc,str],fmt)} - :function(w,x) - {var str=fix_padding(_tl_,w,caml_call2(trans,iconv,x)); - return make_printf(k,[4,acc,str],fmt)}; - var p$1=prec[1]; - return function(w,x) - {var - str= - fix_padding - (_tl_,w,fix_int_precision(p$1,caml_call2(trans,iconv,x))); - return make_printf(k,[4,acc,str],fmt)}}} + {if(prec) + {var + _sV_=make_iprintf(k,o,fmt), + _sW_=function(_ta_){return _sV_}, + _sX_=function(_s$_){return _sW_}; + return function(_s__){return _sX_}} + var _sY_=make_iprintf(k,o,fmt),_sZ_=function(_s9_){return _sY_}; + return function(_s8_){return _sZ_}} + var _s0_=make_iprintf(k,o,fmt),_s1_=function(_s7_){return _s0_}; + return function(_s6_){return _s1_}}} function make_iprintf$0(counter,k,o,fmt) {var k$0=k,fmt$0=fmt; for(;;) @@ -20180,39 +20696,39 @@ else switch(fmt$0[0]) {case 0: - var rest=fmt$0[1],_sA_=make_iprintf(k$0,o,rest); - return function(_ti_){return _sA_}; + var rest=fmt$0[1],_r4_=make_iprintf(k$0,o,rest); + return function(_sM_){return _r4_}; case 1: - var rest$0=fmt$0[1],_sB_=make_iprintf(k$0,o,rest$0); - return function(_th_){return _sB_}; + var rest$0=fmt$0[1],_r5_=make_iprintf(k$0,o,rest$0); + return function(_sL_){return _r5_}; case 2: - var _sC_=fmt$0[1]; - if(typeof _sC_ === "number") - {var rest$1=fmt$0[2],_sD_=make_iprintf(k$0,o,rest$1); - return function(_td_){return _sD_}} + var _r6_=fmt$0[1]; + if(typeof _r6_ === "number") + {var rest$1=fmt$0[2],_r7_=make_iprintf(k$0,o,rest$1); + return function(_sH_){return _r7_}} else - {if(0 === _sC_[0]) - {var rest$2=fmt$0[2],_sE_=make_iprintf(k$0,o,rest$2); - return function(_tg_){return _sE_}} + {if(0 === _r6_[0]) + {var rest$2=fmt$0[2],_r8_=make_iprintf(k$0,o,rest$2); + return function(_sK_){return _r8_}} var rest$3=fmt$0[2], - _sF_=make_iprintf(k$0,o,rest$3), - _sG_=function(_tf_){return _sF_}; - return function(_te_){return _sG_}} + _r9_=make_iprintf(k$0,o,rest$3), + _r__=function(_sJ_){return _r9_}; + return function(_sI_){return _r__}} case 3: - var _sH_=fmt$0[1]; - if(typeof _sH_ === "number") - {var rest$4=fmt$0[2],_sI_=make_iprintf(k$0,o,rest$4); - return function(_s$_){return _sI_}} + var _r$_=fmt$0[1]; + if(typeof _r$_ === "number") + {var rest$4=fmt$0[2],_sa_=make_iprintf(k$0,o,rest$4); + return function(_sD_){return _sa_}} else - {if(0 === _sH_[0]) - {var rest$5=fmt$0[2],_sJ_=make_iprintf(k$0,o,rest$5); - return function(_tc_){return _sJ_}} + {if(0 === _r$_[0]) + {var rest$5=fmt$0[2],_sb_=make_iprintf(k$0,o,rest$5); + return function(_sG_){return _sb_}} var rest$6=fmt$0[2], - _sK_=make_iprintf(k$0,o,rest$6), - _sL_=function(_tb_){return _sK_}; - return function(_ta_){return _sL_}} + _sc_=make_iprintf(k$0,o,rest$6), + _sd_=function(_sF_){return _sc_}; + return function(_sE_){return _sd_}} case 4: var rest$7=fmt$0[4],prec=fmt$0[3],pad=fmt$0[2]; return fn_of_padding_precision(k$0,o,rest$7,pad,prec); @@ -20229,25 +20745,25 @@ var rest$11=fmt$0[4],prec$3=fmt$0[3],pad$3=fmt$0[2]; return fn_of_padding_precision(k$0,o,rest$11,pad$3,prec$3); case 9: - var _sM_=fmt$0[1]; - if(typeof _sM_ === "number") - {var rest$12=fmt$0[2],_sN_=make_iprintf(k$0,o,rest$12); - return function(_s7_){return _sN_}} + var _se_=fmt$0[1]; + if(typeof _se_ === "number") + {var rest$12=fmt$0[2],_sf_=make_iprintf(k$0,o,rest$12); + return function(_sz_){return _sf_}} else - {if(0 === _sM_[0]) - {var rest$13=fmt$0[2],_sO_=make_iprintf(k$0,o,rest$13); - return function(_s__){return _sO_}} + {if(0 === _se_[0]) + {var rest$13=fmt$0[2],_sg_=make_iprintf(k$0,o,rest$13); + return function(_sC_){return _sg_}} var rest$14=fmt$0[2], - _sP_=make_iprintf(k$0,o,rest$14), - _sQ_=function(_s9_){return _sP_}; - return function(_s8_){return _sQ_}} + _sh_=make_iprintf(k$0,o,rest$14), + _si_=function(_sB_){return _sh_}; + return function(_sA_){return _si_}} case 10:var fmt$1=fmt$0[1],fmt$0=fmt$1;continue; case 11:var fmt$2=fmt$0[2],fmt$0=fmt$2;continue; case 12:var fmt$3=fmt$0[2],fmt$0=fmt$3;continue; case 13: - var rest$15=fmt$0[3],_sR_=make_iprintf(k$0,o,rest$15); - return function(_s6_){return _sR_}; + var rest$15=fmt$0[3],_sj_=make_iprintf(k$0,o,rest$15); + return function(_sy_){return _sj_}; case 14: var rest$16=fmt$0[3],fmtty=fmt$0[2]; return function(param) @@ -20256,19 +20772,19 @@ case 15: var rest$17=fmt$0[1], - _sS_=make_iprintf(k$0,o,rest$17), - _sT_=function(_s5_){return _sS_}; - return function(_s4_){return _sT_}; + _sk_=make_iprintf(k$0,o,rest$17), + _sl_=function(_sx_){return _sk_}; + return function(_sw_){return _sl_}; case 16: - var rest$18=fmt$0[1],_sU_=make_iprintf(k$0,o,rest$18); - return function(_s3_){return _sU_}; + var rest$18=fmt$0[1],_sm_=make_iprintf(k$0,o,rest$18); + return function(_sv_){return _sm_}; case 17:var fmt$4=fmt$0[2],fmt$0=fmt$4;continue; case 18: - var _sV_=fmt$0[1]; - if(0 === _sV_[0]) + var _sn_=fmt$0[1]; + if(0 === _sn_[0]) {var rest$19=fmt$0[2], - match=_sV_[1], + match=_sn_[1], fmt$5=match[1], k$3= function(k,rest) @@ -20279,7 +20795,7 @@ continue} var rest$20=fmt$0[2], - match$0=_sV_[1], + match$0=_sn_[1], fmt$6=match$0[1], k$4= function(k,rest) @@ -20288,20 +20804,20 @@ k$0=k$2, fmt$0=fmt$6; continue; - case 19:throw [0,Assert_failure,_aC_]; + case 19:throw [0,Assert_failure,_aA_]; case 20: - var rest$21=fmt$0[3],_sW_=make_iprintf(k$0,o,rest$21); - return function(_s2_){return _sW_}; + var rest$21=fmt$0[3],_so_=make_iprintf(k$0,o,rest$21); + return function(_su_){return _so_}; case 21: - var rest$22=fmt$0[2],_sX_=make_iprintf(k$0,o,rest$22); - return function(_s1_){return _sX_}; + var rest$22=fmt$0[2],_sp_=make_iprintf(k$0,o,rest$22); + return function(_st_){return _sp_}; case 22: - var rest$23=fmt$0[1],_sY_=make_iprintf(k$0,o,rest$23); - return function(_s0_){return _sY_}; + var rest$23=fmt$0[1],_sq_=make_iprintf(k$0,o,rest$23); + return function(_ss_){return _sq_}; case 23: - var rest$24=fmt$0[2],ign=fmt$0[1],_sZ_=0; + var rest$24=fmt$0[2],ign=fmt$0[1],_sr_=0; return make_ignored_param - (function(param){return caml_call1(k$0,o)},_sZ_,ign,rest$24); + (function(param){return caml_call1(k$0,o)},_sr_,ign,rest$24); default: var rest$25=fmt$0[3],arity=fmt$0[1]; if(counter < 50) @@ -20311,8 +20827,8 @@ (fn_of_custom_arity$0,[0,k$0,o,rest$25,arity])}} function fn_of_custom_arity$0(counter,k,o,fmt,param) {if(param) - {var arity=param[1],_sy_=fn_of_custom_arity(k,o,fmt,arity); - return function(_sz_){return _sy_}} + {var arity=param[1],_r2_=fn_of_custom_arity(k,o,fmt,arity); + return function(_r3_){return _r2_}} if(counter < 50) {var counter$0=counter + 1 | 0; return make_iprintf$0(counter$0,k,o,fmt)} @@ -20321,37 +20837,6 @@ {return caml_trampoline(make_iprintf$0(0,k,o,fmt))} function fn_of_custom_arity(k,o,fmt,param) {return caml_trampoline(fn_of_custom_arity$0(0,k,o,fmt,param))} - function fn_of_padding_precision(k,o,fmt,pad,prec) - {if(typeof pad === "number") - {if(typeof prec === "number") - {if(prec) - {var _r6_=make_iprintf(k,o,fmt),_r7_=function(_sm_){return _r6_}; - return function(_sl_){return _r7_}} - var _r8_=make_iprintf(k,o,fmt); - return function(_sk_){return _r8_}} - var _r9_=make_iprintf(k,o,fmt); - return function(_sj_){return _r9_}} - else - {if(0 === pad[0]) - {if(typeof prec === "number") - {if(prec) - {var _r__=make_iprintf(k,o,fmt),_r$_=function(_sx_){return _r__}; - return function(_sw_){return _r$_}} - var _sa_=make_iprintf(k,o,fmt); - return function(_sv_){return _sa_}} - var _sb_=make_iprintf(k,o,fmt); - return function(_su_){return _sb_}} - if(typeof prec === "number") - {if(prec) - {var - _sc_=make_iprintf(k,o,fmt), - _sd_=function(_st_){return _sc_}, - _se_=function(_ss_){return _sd_}; - return function(_sr_){return _se_}} - var _sf_=make_iprintf(k,o,fmt),_sg_=function(_sq_){return _sf_}; - return function(_sp_){return _sg_}} - var _sh_=make_iprintf(k,o,fmt),_si_=function(_so_){return _sh_}; - return function(_sn_){return _si_}}} function output_acc(o,acc) {var acc$0=acc; for(;;) @@ -20367,15 +20852,15 @@ output_acc(o,p); return output_string(o,s); case 1: - var _r4_=acc$0[2],_r5_=acc$0[1]; - if(0 === _r4_[0]) - {var acc$1=_r4_[1]; - output_acc(o,_r5_); + var _r0_=acc$0[2],_r1_=acc$0[1]; + if(0 === _r0_[0]) + {var acc$1=_r0_[1]; + output_acc(o,_r1_); output_string(o,cst$30); var acc$0=acc$1; continue} - var acc$2=_r4_[1]; - output_acc(o,_r5_); + var acc$2=_r0_[1]; + output_acc(o,_r1_); output_string(o,cst$31); var acc$0=acc$2; continue; @@ -20412,15 +20897,15 @@ bufput_acc(b,p); return add_string(b,s); case 1: - var _r2_=acc$0[2],_r3_=acc$0[1]; - if(0 === _r2_[0]) - {var acc$1=_r2_[1]; - bufput_acc(b,_r3_); + var _rY_=acc$0[2],_rZ_=acc$0[1]; + if(0 === _rY_[0]) + {var acc$1=_rY_[1]; + bufput_acc(b,_rZ_); add_string(b,cst$32); var acc$0=acc$1; continue} - var acc$2=_r2_[1]; - bufput_acc(b,_r3_); + var acc$2=_rY_[1]; + bufput_acc(b,_rZ_); add_string(b,cst$33); var acc$0=acc$2; continue; @@ -20455,15 +20940,15 @@ strput_acc(b,p); return add_string(b,s); case 1: - var _r0_=acc$0[2],_r1_=acc$0[1]; - if(0 === _r0_[0]) - {var acc$1=_r0_[1]; - strput_acc(b,_r1_); + var _rW_=acc$0[2],_rX_=acc$0[1]; + if(0 === _rW_[0]) + {var acc$1=_rW_[1]; + strput_acc(b,_rX_); add_string(b,cst$34); var acc$0=acc$1; continue} - var acc$2=_r0_[1]; - strput_acc(b,_r1_); + var acc$2=_rW_[1]; + strput_acc(b,_rX_); add_string(b,cst$35); var acc$0=acc$2; continue; @@ -20488,10 +20973,10 @@ function k(acc){strput_acc(buf,acc);return failwith(contents(buf))} return make_printf(k,0,fmt)} function open_box_of_string(str) - {if(caml_string_equal(str,cst$36))return _aD_; + {if(caml_string_equal(str,cst$36))return _aB_; var len=caml_ml_string_length(str); function invalid_box(param) - {return caml_call1(failwith_message(_aE_),str)} + {return caml_call1(failwith_message(_aC_),str)} function parse_spaces(i) {var i$0=i; for(;;) @@ -20530,11 +21015,11 @@ else try {var - _rY_=caml_int_of_string(sub$0(str,nstart,nend - nstart | 0)), - indent=_rY_} - catch(_rZ_) - {_rZ_ = caml_wrap_exception(_rZ_); - if(_rZ_[1] !== Failure)throw _rZ_; + _rU_=caml_int_of_string(sub$0(str,nstart,nend - nstart | 0)), + indent=_rU_} + catch(_rV_) + {_rV_ = caml_wrap_exception(_rV_); + if(_rV_[1] !== Failure)throw _rV_; var indent=invalid_box(0)} var exp_end=parse_spaces(nend); if(exp_end !== len)invalid_box(0); @@ -20581,13 +21066,13 @@ else var legacy_behavior$0=1; function invalid_format_message(str_ind,msg) - {return caml_call3(failwith_message(_aF_),str,str_ind,msg)} + {return caml_call3(failwith_message(_aD_),str,str_ind,msg)} function unexpected_end_of_format(end_ind) {return invalid_format_message(end_ind,cst_unexpected_end_of_format)} function invalid_format_without(str_ind,c,s) - {return caml_call4(failwith_message(_aG_),str,str_ind,c,s)} + {return caml_call4(failwith_message(_aE_),str,str_ind,c,s)} function expected_character(str_ind,expected,read) - {return caml_call4(failwith_message(_aH_),str,str_ind,expected,read)} + {return caml_call4(failwith_message(_aF_),str,str_ind,expected,read)} function add_literal(lit_start,str_ind,fmt) {var size=str_ind - lit_start | 0; return 0 === size @@ -20595,483 +21080,134 @@ :1 === size ?[0,[12,caml_string_get(str,lit_start),fmt]] :[0,[11,sub$0(str,lit_start,size),fmt]]} - function parse_positive(str_ind,end_ind,acc) - {var str_ind$0=str_ind,acc$0=acc; - for(;;) - {if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind); - var c=caml_string_get(str,str_ind$0); - if(9 < c - 48 >>> 0)return [0,str_ind$0,acc$0]; - var acc$1=(acc$0 * 10 | 0) + (c - 48 | 0) | 0; - if(max_string_length < acc$1) - return caml_call3 - (failwith_message(_aY_),str,acc$1,max_string_length); - var str_ind$1=str_ind$0 + 1 | 0,str_ind$0=str_ind$1,acc$0=acc$1; - continue}} - function parse_integer(str_ind,end_ind) - {if(str_ind === end_ind)unexpected_end_of_format(end_ind); - var match=caml_string_get(str,str_ind); - if(48 <= match) - {if(! (58 <= match))return parse_positive(str_ind,end_ind,0)} - else - if(45 === match) - {if((str_ind + 1 | 0) === end_ind)unexpected_end_of_format(end_ind); - var c=caml_string_get(str,str_ind + 1 | 0); - if(9 < c - 48 >>> 0) - return expected_character(str_ind + 1 | 0,cst_digit,c); - var - match$0=parse_positive(str_ind + 1 | 0,end_ind,0), - n=match$0[2], - next_ind=match$0[1]; - return [0,next_ind,- n | 0]} - throw [0,Assert_failure,_aZ_]} - function parse_spaces(str_ind,end_ind) - {var str_ind$0=str_ind; - for(;;) - {if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind); - if(32 === caml_string_get(str,str_ind$0)) - {var str_ind$1=str_ind$0 + 1 | 0,str_ind$0=str_ind$1;continue} - return str_ind$0}} - function incompatible_flag(pct_ind,str_ind,symb,option) - {var subfmt=sub$0(str,pct_ind,str_ind - pct_ind | 0); - return caml_call5 - (failwith_message(_a4_),str,pct_ind,option,symb,subfmt)} - function compute_int_conv(pct_ind,str_ind,plus,hash,space,symb) - {var plus$0=plus,hash$0=hash,space$0=space; + function parse(lit_start,end_ind) + {var str_ind=lit_start; for(;;) - {var switch$0=0; - if(plus$0) - {if(hash$0) - switch$0 = 1; + {if(str_ind === end_ind)return add_literal(lit_start,str_ind,0); + var match=caml_string_get(str,str_ind); + if(37 === match) + {var str_ind$2=str_ind + 1 | 0; + if(str_ind$2 === end_ind)unexpected_end_of_format(end_ind); + var + match$1=caml_string_get(str,str_ind$2), + _rT_= + 95 === match$1 + ?parse_flags(str_ind,str_ind$2 + 1 | 0,end_ind,1) + :parse_flags(str_ind,str_ind$2,end_ind,0), + fmt_rest=_rT_[1]; + return add_literal(lit_start,str_ind,fmt_rest)} + if(64 === match) + {var str_ind$0=str_ind + 1 | 0; + if(str_ind$0 === end_ind) + var match$0=_aR_; else - if(! space$0){if(100 === symb)return 1;if(105 === symb)return 4}} - else - if(hash$0) - if(space$0) - switch$0 = 1; - else - {var switcher$0=symb - 88 | 0; - if(32 < switcher$0 >>> 0) - switch$0 = 1; - else - switch(switcher$0) - {case 0:return 9; - case 12:return 13; - case 17:return 14; - case 23:return 11; - case 29:return 15; - case 32:return 7; - default:switch$0 = 1}} - else - if(space$0) - {if(100 === symb)return 2;if(105 === symb)return 5} - else - {var switcher$1=symb - 88 | 0; - if(! (32 < switcher$1 >>> 0)) - switch(switcher$1) - {case 0:return 8; - case 12:return 0; - case 17:return 3; - case 23:return 10; - case 29:return 12; - case 32:return 6 - }} - if(switch$0) - {var switcher=symb - 88 | 0; - if(! (32 < switcher >>> 0)) - switch(switcher) - {case 0:if(legacy_behavior$0)return 9;break; - case 23:if(legacy_behavior$0)return 11;break; - case 32:if(legacy_behavior$0)return 7;break; - case 12: - case 17: - case 29: - if(legacy_behavior$0){var hash$0=0;continue} - return incompatible_flag(pct_ind,str_ind,symb,cst$49) - }} - if(plus$0) - {if(space$0) - {if(legacy_behavior$0){var space$0=0;continue} - return incompatible_flag(pct_ind,str_ind,32,cst$46)} - if(legacy_behavior$0){var plus$0=0;continue} - return incompatible_flag(pct_ind,str_ind,symb,cst$47)} - if(space$0) - {if(legacy_behavior$0){var space$0=0;continue} - return incompatible_flag(pct_ind,str_ind,symb,cst$48)} - throw [0,Assert_failure,_a2_]}} - function search_subformat_end(str_ind,end_ind,c) - {var str_ind$0=str_ind; - for(;;) - {if(str_ind$0 === end_ind) - caml_call3(failwith_message(_a0_),str,c,end_ind); - var match=caml_string_get(str,str_ind$0); - if(37 === match) - {if((str_ind$0 + 1 | 0) === end_ind) - unexpected_end_of_format(end_ind); - if(caml_string_get(str,str_ind$0 + 1 | 0) === c)return str_ind$0; - var match$0=caml_string_get(str,str_ind$0 + 1 | 0); - if(95 <= match$0) - {if(123 <= match$0) - {if(! (126 <= match$0)) - switch(match$0 - 123 | 0) + {var c=caml_string_get(str,str_ind$0),switch$0=0; + if(65 <= c) + if(94 <= c) + {var switcher=c - 123 | 0; + if(2 < switcher >>> 0) + switch$0 = 1; + else + switch(switcher) + {case 0: + var match$0=parse_tag(1,str_ind$0 + 1 | 0,end_ind);break; + case 1:switch$0 = 1;break; + default: + var + match$3=parse(str_ind$0 + 1 | 0,end_ind), + fmt_rest$2=match$3[1], + match$0=[0,[17,1,fmt_rest$2]]}} + else + if(91 <= c) + switch(c - 91 | 0) {case 0: - var - sub_end=search_subformat_end(str_ind$0 + 2 | 0,end_ind,125), - str_ind$2=sub_end + 2 | 0, - str_ind$0=str_ind$2; - continue; - case 1:break; + var match$0=parse_tag(0,str_ind$0 + 1 | 0,end_ind);break; + case 1:switch$0 = 1;break; default: - return expected_character - (str_ind$0 + 1 | 0,cst_character,125)}} + var + match$4=parse(str_ind$0 + 1 | 0,end_ind), + fmt_rest$3=match$4[1], + match$0=[0,[17,0,fmt_rest$3]]} + else + switch$0 = 1; else - if(! (96 <= match$0)) - {if((str_ind$0 + 2 | 0) === end_ind) - unexpected_end_of_format(end_ind); - var match$1=caml_string_get(str,str_ind$0 + 2 | 0); - if(40 === match$1) - {var - sub_end$0=search_subformat_end(str_ind$0 + 3 | 0,end_ind,41), - str_ind$3=sub_end$0 + 2 | 0, - str_ind$0=str_ind$3; - continue} - if(123 === match$1) - {var - sub_end$1= - search_subformat_end(str_ind$0 + 3 | 0,end_ind,125), - str_ind$4=sub_end$1 + 2 | 0, - str_ind$0=str_ind$4; - continue} - var str_ind$5=str_ind$0 + 3 | 0,str_ind$0=str_ind$5; - continue}} - else - {if(40 === match$0) - {var - sub_end$2=search_subformat_end(str_ind$0 + 2 | 0,end_ind,41), - str_ind$6=sub_end$2 + 2 | 0, - str_ind$0=str_ind$6; - continue} - if(41 === match$0) - return expected_character(str_ind$0 + 1 | 0,cst_character$0,41)} - var str_ind$1=str_ind$0 + 2 | 0,str_ind$0=str_ind$1; - continue} - var str_ind$7=str_ind$0 + 1 | 0,str_ind$0=str_ind$7; + if(10 === c) + var + match$5=parse(str_ind$0 + 1 | 0,end_ind), + fmt_rest$4=match$5[1], + match$0=[0,[17,3,fmt_rest$4]]; + else + if(32 <= c) + switch(c - 32 | 0) + {case 0: + var + match$6=parse(str_ind$0 + 1 | 0,end_ind), + fmt_rest$5=match$6[1], + match$0=[0,[17,_aS_,fmt_rest$5]]; + break; + case 5: + var switch$1=0; + if + ((str_ind$0 + 1 | 0) + < + end_ind + && + 37 + === + caml_string_get(str,str_ind$0 + 1 | 0)) + {var + match$7=parse(str_ind$0 + 2 | 0,end_ind), + fmt_rest$6=match$7[1], + match$0=[0,[17,6,fmt_rest$6]]; + switch$1 = 1} + if(! switch$1) + var + match$8=parse(str_ind$0,end_ind), + fmt_rest$7=match$8[1], + match$0=[0,[12,64,fmt_rest$7]]; + break; + case 12: + var + match$9=parse(str_ind$0 + 1 | 0,end_ind), + fmt_rest$8=match$9[1], + match$0=[0,[17,_aT_,fmt_rest$8]]; + break; + case 14: + var + match$10=parse(str_ind$0 + 1 | 0,end_ind), + fmt_rest$9=match$10[1], + match$0=[0,[17,4,fmt_rest$9]]; + break; + case 27: + var match$0=parse_good_break(str_ind$0 + 1 | 0,end_ind); + break; + case 28: + var match$0=parse_magic_size(str_ind$0 + 1 | 0,end_ind); + break; + case 31: + var + match$11=parse(str_ind$0 + 1 | 0,end_ind), + fmt_rest$10=match$11[1], + match$0=[0,[17,2,fmt_rest$10]]; + break; + case 32: + var + match$12=parse(str_ind$0 + 1 | 0,end_ind), + fmt_rest$11=match$12[1], + match$0=[0,[17,5,fmt_rest$11]]; + break; + default:switch$0 = 1} + else + switch$0 = 1; + if(switch$0) + var + match$2=parse(str_ind$0 + 1 | 0,end_ind), + fmt_rest$1=match$2[1], + match$0=[0,[17,[2,c],fmt_rest$1]]} + var fmt_rest$0=match$0[1]; + return add_literal(lit_start,str_ind,fmt_rest$0)} + var str_ind$1=str_ind + 1 | 0,str_ind=str_ind$1; continue}} - function parse_magic_size(str_ind,end_ind) - {try - {var - str_ind_1=parse_spaces(str_ind,end_ind), - match$2=caml_string_get(str,str_ind_1), - switch$0=0; - if(48 <= match$2) - {if(! (58 <= match$2))switch$0 = 1} - else - if(45 === match$2)switch$0 = 1; - if(switch$0) - {var - match$3=parse_integer(str_ind_1,end_ind), - size=match$3[2], - str_ind_2=match$3[1], - str_ind_3=parse_spaces(str_ind_2,end_ind); - if(62 !== caml_string_get(str,str_ind_3))throw Not_found; - var - s=sub$0(str,str_ind - 2 | 0,(str_ind_3 - str_ind | 0) + 3 | 0), - _rW_=[0,[0,str_ind_3 + 1 | 0,[1,s,size]]]} - else - var _rW_=0; - var _rV_=_rW_} - catch(_rX_) - {_rX_ = caml_wrap_exception(_rX_); - if(_rX_ !== Not_found && _rX_[1] !== Failure)throw _rX_; - var _rV_=0} - if(_rV_) - {var - match=_rV_[1], - formatting_lit=match[2], - next_ind=match[1], - match$0=parse(next_ind,end_ind), - fmt_rest=match$0[1]; - return [0,[17,formatting_lit,fmt_rest]]} - var match$1=parse(str_ind,end_ind),fmt_rest$0=match$1[1]; - return [0,[17,_aW_,fmt_rest$0]]} - function parse_good_break(str_ind,end_ind) - {try - {var - _rO_=str_ind === end_ind?1:0, - _rP_=_rO_ || (60 !== caml_string_get(str,str_ind)?1:0); - if(_rP_)throw Not_found; - var - str_ind_1=parse_spaces(str_ind + 1 | 0,end_ind), - match$0=caml_string_get(str,str_ind_1), - switch$0=0; - if(48 <= match$0) - {if(! (58 <= match$0))switch$0 = 1} - else - if(45 === match$0)switch$0 = 1; - if(! switch$0)throw Not_found; - var - match$1=parse_integer(str_ind_1,end_ind), - width=match$1[2], - str_ind_2=match$1[1], - str_ind_3=parse_spaces(str_ind_2,end_ind), - match$2=caml_string_get(str,str_ind_3), - switcher=match$2 - 45 | 0, - switch$1=0; - if(12 < switcher >>> 0) - if(17 === switcher) - var - s=sub$0(str,str_ind - 2 | 0,(str_ind_3 - str_ind | 0) + 3 | 0), - _rQ_=[0,s,width,0], - _rR_=str_ind_3 + 1 | 0, - formatting_lit$0=_rQ_, - next_ind=_rR_; - else - switch$1 = 1; - else - if(1 < switcher - 1 >>> 0) - {var - match$3=parse_integer(str_ind_3,end_ind), - offset=match$3[2], - str_ind_4=match$3[1], - str_ind_5=parse_spaces(str_ind_4,end_ind); - if(62 !== caml_string_get(str,str_ind_5))throw Not_found; - var - s$0=sub$0(str,str_ind - 2 | 0,(str_ind_5 - str_ind | 0) + 3 | 0), - _rS_=[0,s$0,width,offset], - _rT_=str_ind_5 + 1 | 0, - formatting_lit$0=_rS_, - next_ind=_rT_} - else - switch$1 = 1; - if(switch$1)throw Not_found} - catch(_rU_) - {_rU_ = caml_wrap_exception(_rU_); - if(_rU_ !== Not_found && _rU_[1] !== Failure)throw _rU_; - var formatting_lit$0=formatting_lit,next_ind=str_ind} - var match=parse(next_ind,end_ind),fmt_rest=match[1]; - return [0,[17,formatting_lit$0,fmt_rest]]} - function parse_tag(is_open_tag,str_ind,end_ind) - {try - {if(str_ind === end_ind)throw Not_found; - var match$0=caml_string_get(str,str_ind); - if(60 === match$0) - {var ind=index_from$0(str,str_ind + 1 | 0,62); - if(end_ind <= ind)throw Not_found; - var - sub_str=sub$0(str,str_ind,(ind - str_ind | 0) + 1 | 0), - match$1=parse(ind + 1 | 0,end_ind), - fmt_rest$0=match$1[1], - match$2=parse(str_ind,ind + 1 | 0), - sub_fmt=match$2[1], - sub_format$0=[0,sub_fmt,sub_str], - formatting$0=is_open_tag?[0,sub_format$0]:[1,sub_format$0], - _rM_=[0,[18,formatting$0,fmt_rest$0]]; - return _rM_} - throw Not_found} - catch(_rN_) - {_rN_ = caml_wrap_exception(_rN_); - if(_rN_ === Not_found) - {var - match=parse(str_ind,end_ind), - fmt_rest=match[1], - formatting=is_open_tag?[0,sub_format]:[1,sub_format]; - return [0,[18,formatting,fmt_rest]]} - throw _rN_}} - function parse_flags(pct_ind,str_ind,end_ind,ign) - {var zero=[0,0],minus=[0,0],plus=[0,0],space=[0,0],hash=[0,0]; - function set_flag(str_ind,flag) - {var _rJ_=flag[1],_rK_=_rJ_?1 - legacy_behavior$0:_rJ_; - if(_rK_) - {var _rL_=caml_string_get(str,str_ind); - caml_call3(failwith_message(_aI_),str,str_ind,_rL_)} - flag[1] = 1; - return 0} - var str_ind$0=str_ind; - for(;;) - {if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind); - var match=caml_string_get(str,str_ind$0),switcher=match - 32 | 0; - if(! (16 < switcher >>> 0)) - switch(switcher) - {case 0: - set_flag(str_ind$0,space); - var str_ind$1=str_ind$0 + 1 | 0,str_ind$0=str_ind$1; - continue; - case 3: - set_flag(str_ind$0,hash); - var str_ind$2=str_ind$0 + 1 | 0,str_ind$0=str_ind$2; - continue; - case 11: - set_flag(str_ind$0,plus); - var str_ind$3=str_ind$0 + 1 | 0,str_ind$0=str_ind$3; - continue; - case 13: - set_flag(str_ind$0,minus); - var str_ind$4=str_ind$0 + 1 | 0,str_ind$0=str_ind$4; - continue; - case 16: - set_flag(str_ind$0,zero); - var str_ind$5=str_ind$0 + 1 | 0,str_ind$0=str_ind$5; - continue - } - var - _rE_=space[1], - _rF_=hash[1], - _rG_=plus[1], - _rH_=minus[1], - _rI_=zero[1]; - if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind); - var - padty= - _rI_ - ?_rH_ - ?legacy_behavior$0 - ?0 - :incompatible_flag(pct_ind,str_ind$0,45,cst_0) - :2 - :_rH_?0:1, - match$0=caml_string_get(str,str_ind$0); - if(48 <= match$0) - {if(! (58 <= match$0)) - {var - match$1=parse_positive(str_ind$0,end_ind,0), - width=match$1[2], - new_ind=match$1[1]; - return parse_after_padding - (pct_ind, - new_ind, - end_ind, - _rH_, - _rG_, - _rF_, - _rE_, - ign, - [0,padty,width])}} - else - if(42 === match$0) - return parse_after_padding - (pct_ind, - str_ind$0 + 1 | 0, - end_ind, - _rH_, - _rG_, - _rF_, - _rE_, - ign, - [1,padty]); - switch(padty) - {case 0: - if(1 - legacy_behavior$0) - invalid_format_without(str_ind$0 - 1 | 0,45,cst_padding); - return parse_after_padding - (pct_ind,str_ind$0,end_ind,_rH_,_rG_,_rF_,_rE_,ign,0); - case 1: - return parse_after_padding - (pct_ind,str_ind$0,end_ind,_rH_,_rG_,_rF_,_rE_,ign,0); - default: - return parse_after_padding - (pct_ind,str_ind$0,end_ind,_rH_,_rG_,_rF_,_rE_,ign,_aJ_)}}} - function parse_after_padding - (pct_ind,str_ind,end_ind,minus,plus,hash,space,ign,pad) - {if(str_ind === end_ind)unexpected_end_of_format(end_ind); - var symb=caml_string_get(str,str_ind); - if(46 === symb) - {var str_ind$0=str_ind + 1 | 0; - if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind); - var - parse_literal= - function(minus,str_ind) - {var - match=parse_positive(str_ind,end_ind,0), - prec=match[2], - new_ind=match[1]; - return parse_after_precision - (pct_ind, - new_ind, - end_ind, - minus, - plus, - hash, - space, - ign, - pad, - [0,prec])}, - symb$0=caml_string_get(str,str_ind$0); - if(48 <= symb$0) - {if(! (58 <= symb$0))return parse_literal(minus,str_ind$0)} - else - if(42 <= symb$0) - switch(symb$0 - 42 | 0) - {case 0: - return parse_after_precision - (pct_ind, - str_ind$0 + 1 | 0, - end_ind, - minus, - plus, - hash, - space, - ign, - pad, - 1); - case 1: - case 3: - if(legacy_behavior$0) - {var - _rD_=str_ind$0 + 1 | 0, - minus$0=minus || (45 === symb$0?1:0); - return parse_literal(minus$0,_rD_)} - break - } - return legacy_behavior$0 - ?parse_after_precision - (pct_ind, - str_ind$0, - end_ind, - minus, - plus, - hash, - space, - ign, - pad, - _aK_) - :invalid_format_without(str_ind$0 - 1 | 0,46,cst_precision)} - return parse_conversion - (pct_ind, - str_ind + 1 | 0, - end_ind, - plus, - hash, - space, - ign, - pad, - 0, - pad, - symb)} - function parse_after_precision - (pct_ind,str_ind,end_ind,minus,plus,hash,space,ign,pad,prec) - {if(str_ind === end_ind)unexpected_end_of_format(end_ind); - function parse_conv(padprec) - {return parse_conversion - (pct_ind, - str_ind + 1 | 0, - end_ind, - plus, - hash, - space, - ign, - pad, - prec, - padprec, - caml_string_get(str,str_ind))} - if(typeof pad === "number") - {if(typeof prec === "number" && ! prec)return parse_conv(0); - if(minus) - {if(typeof prec === "number")return parse_conv(_aL_); - var n=prec[1]; - return parse_conv([0,0,n])} - if(typeof prec === "number")return parse_conv(_aM_); - var n$0=prec[1]; - return parse_conv([0,1,n$0])} - return parse_conv(pad)} function parse_conversion (pct_ind,str_ind,end_ind,plus,hash,space,ign,pad,prec,padprec,symb) {var @@ -21103,7 +21239,7 @@ return pad} return 2 <= pad[1] ?legacy_behavior$0 - ?_aN_ + ?_aL_ :incompatible_flag(pct_ind,str_ind,48,cst_precision$1) :pad}} function check_no_0(symb,pad) @@ -21119,7 +21255,7 @@ return pad} return 2 <= pad[1] ?legacy_behavior$0 - ?_aO_ + ?_aM_ :incompatible_flag(pct_ind,str_ind,symb,cst_0$1) :pad}} function opt_of_pad(c,pad) @@ -21164,18 +21300,18 @@ if(get_ign(0)) var ignored$2=[9,get_pad_opt(95),sub_fmtty], - _ra_=[0,[23,ignored$2,fmt_rest$7]]; + _rq_=[0,[23,ignored$2,fmt_rest$7]]; else - var _ra_=[0,[14,get_pad_opt(40),sub_fmtty,fmt_rest$7]]; - var fmt_result=_ra_; + var _rq_=[0,[14,get_pad_opt(40),sub_fmtty,fmt_rest$7]]; + var fmt_result=_rq_; break; case 44:var fmt_result=parse(str_ind,end_ind);break; case 67: var match$12=parse(str_ind,end_ind), fmt_rest$10=match$12[1], - _rc_=get_ign(0)?[0,[23,1,fmt_rest$10]]:[0,[1,fmt_rest$10]], - fmt_result=_rc_; + _rs_=get_ign(0)?[0,[23,1,fmt_rest$10]]:[0,[1,fmt_rest$10]], + fmt_result=_rs_; break; case 78: var @@ -21183,10 +21319,10 @@ fmt_rest$14=match$16[1], counter$0=2; if(get_ign(0)) - var ignored$6=[11,counter$0],_ri_=[0,[23,ignored$6,fmt_rest$14]]; + var ignored$6=[11,counter$0],_ry_=[0,[23,ignored$6,fmt_rest$14]]; else - var _ri_=[0,[21,counter$0,fmt_rest$14]]; - var fmt_result=_ri_; + var _ry_=[0,[21,counter$0,fmt_rest$14]]; + var fmt_result=_ry_; break; case 83: var @@ -21196,14 +21332,14 @@ if(get_ign(0)) var ignored$7=[1,get_padprec_opt(95)], - _rj_=[0,[23,ignored$7,fmt_rest$15]]; + _rz_=[0,[23,ignored$7,fmt_rest$15]]; else var match$18=make_padding_fmt_ebb(pad$6,fmt_rest$15), fmt_rest$16=match$18[2], pad$7=match$18[1], - _rj_=[0,[3,pad$7,fmt_rest$16]]; - var fmt_result=_rj_; + _rz_=[0,[3,pad$7,fmt_rest$16]]; + var fmt_result=_rz_; break; case 91: if(str_ind === end_ind)unexpected_end_of_format(end_ind); @@ -21216,13 +21352,13 @@ {var i=c$0; for(;;) {add_in_char_set(char_set,char_of_int(i)); - var _rC_=i + 1 | 0; - if(c !== i){var i=_rC_;continue} + var _rS_=i + 1 | 0; + if(c !== i){var i=_rS_;continue} break}} return 0}, fail_single_percent= function(str_ind) - {return caml_call2(failwith_message(_aX_),str,str_ind)}, + {return caml_call2(failwith_message(_aV_),str,str_ind)}, parse_char_set_content= function(counter,str_ind,end_ind) {var str_ind$0=str_ind; @@ -21234,12 +21370,12 @@ var str_ind$1=str_ind$0 + 1 | 0,str_ind$0=str_ind$1; continue} if(93 === c)return str_ind$0 + 1 | 0; - var _rB_=str_ind$0 + 1 | 0; + var _rR_=str_ind$0 + 1 | 0; if(counter < 50) {var counter$0=counter + 1 | 0; - return parse_char_set_after_char$0(counter$0,_rB_,end_ind,c)} + return parse_char_set_after_char$0(counter$0,_rR_,end_ind,c)} return caml_trampoline_return - (parse_char_set_after_char$0,[0,_rB_,end_ind,c])}}, + (parse_char_set_after_char$0,[0,_rR_,end_ind,c])}}, parse_char_set_after_char$0= function(counter,str_ind,end_ind,c) {var str_ind$0=str_ind,c$0=c; @@ -21266,29 +21402,29 @@ if(37 !== c$3 && 64 !== c$3) return fail_single_percent(str_ind$2); add_range(c$0,c$3); - var _rz_=str_ind$2 + 2 | 0; + var _rP_=str_ind$2 + 2 | 0; if(counter < 50) {var counter$2=counter + 1 | 0; - return parse_char_set_content(counter$2,_rz_,end_ind)} + return parse_char_set_content(counter$2,_rP_,end_ind)} return caml_trampoline_return - (parse_char_set_content,[0,_rz_,end_ind])} + (parse_char_set_content,[0,_rP_,end_ind])} if(93 === c$2) {add_char(c$0);add_char(45);return str_ind$2 + 1 | 0} add_range(c$0,c$2); - var _rA_=str_ind$2 + 1 | 0; + var _rQ_=str_ind$2 + 1 | 0; if(counter < 50) {var counter$1=counter + 1 | 0; - return parse_char_set_content(counter$1,_rA_,end_ind)} + return parse_char_set_content(counter$1,_rQ_,end_ind)} return caml_trampoline_return - (parse_char_set_content,[0,_rA_,end_ind])} + (parse_char_set_content,[0,_rQ_,end_ind])} if(switch$0 && 37 === c$0) {add_char(c$1); - var _ry_=str_ind$0 + 1 | 0; + var _rO_=str_ind$0 + 1 | 0; if(counter < 50) {var counter$0=counter + 1 | 0; - return parse_char_set_content(counter$0,_ry_,end_ind)} + return parse_char_set_content(counter$0,_rO_,end_ind)} return caml_trampoline_return - (parse_char_set_content,[0,_ry_,end_ind])} + (parse_char_set_content,[0,_rO_,end_ind])} if(37 === c$0)fail_single_percent(str_ind$0); add_char(c$0); var str_ind$1=str_ind$0 + 1 | 0,str_ind$0=str_ind$1,c$0=c$1; @@ -21314,10 +21450,10 @@ if(get_ign(0)) var ignored$9=[10,get_pad_opt(95),char_set$1], - _ro_=[0,[23,ignored$9,fmt_rest$19]]; + _rE_=[0,[23,ignored$9,fmt_rest$19]]; else - var _ro_=[0,[20,get_pad_opt(91),char_set$1,fmt_rest$19]]; - var fmt_result=_ro_; + var _rE_=[0,[20,get_pad_opt(91),char_set$1,fmt_rest$19]]; + var fmt_result=_rE_; break; case 97: var @@ -21336,26 +21472,26 @@ if(match$24) {if(0 === match$24[1]) var - _rp_=get_ign(0)?[0,[23,3,fmt_rest$21]]:[0,[22,fmt_rest$21]], - _rq_=_rp_; + _rF_=get_ign(0)?[0,[23,3,fmt_rest$21]]:[0,[22,fmt_rest$21]], + _rG_=_rF_; else var - _rq_= + _rG_= legacy_behavior$0 ?char_format(fmt_rest$21) :invalid_format_message (str_ind,cst_non_zero_widths_are_unsupp); - var _rr_=_rq_} + var _rH_=_rG_} else - var _rr_=char_format(fmt_rest$21); - var fmt_result=_rr_; + var _rH_=char_format(fmt_rest$21); + var fmt_result=_rH_; break; case 114: var match$25=parse(str_ind,end_ind), fmt_rest$22=match$25[1], - _rs_=get_ign(0)?[0,[23,2,fmt_rest$22]]:[0,[19,fmt_rest$22]], - fmt_result=_rs_; + _rI_=get_ign(0)?[0,[23,2,fmt_rest$22]]:[0,[19,fmt_rest$22]], + fmt_result=_rI_; break; case 115: var @@ -21365,14 +21501,14 @@ if(get_ign(0)) var ignored$10=[0,get_padprec_opt(95)], - _rt_=[0,[23,ignored$10,fmt_rest$23]]; + _rJ_=[0,[23,ignored$10,fmt_rest$23]]; else var match$27=make_padding_fmt_ebb(pad$9,fmt_rest$23), fmt_rest$24=match$27[2], pad$10=match$27[1], - _rt_=[0,[2,pad$10,fmt_rest$24]]; - var fmt_result=_rt_; + _rJ_=[0,[2,pad$10,fmt_rest$24]]; + var fmt_result=_rJ_; break; case 116: var @@ -21391,10 +21527,10 @@ if(get_ign(0)) var ignored$11=[8,get_pad_opt(95),sub_fmtty$0], - _ru_=[0,[23,ignored$11,fmt_rest$26]]; + _rK_=[0,[23,ignored$11,fmt_rest$26]]; else - var _ru_=[0,[13,get_pad_opt(123),sub_fmtty$0,fmt_rest$26]]; - var fmt_result=_ru_; + var _rK_=[0,[13,get_pad_opt(123),sub_fmtty$0,fmt_rest$26]]; + var fmt_result=_rK_; break; case 66: case 98: @@ -21405,14 +21541,14 @@ if(get_ign(0)) var ignored$3=[7,get_padprec_opt(95)], - _rb_=[0,[23,ignored$3,fmt_rest$8]]; + _rr_=[0,[23,ignored$3,fmt_rest$8]]; else var match$11=make_padding_fmt_ebb(pad$3,fmt_rest$8), fmt_rest$9=match$11[2], pad$4=match$11[1], - _rb_=[0,[9,pad$4,fmt_rest$9]]; - var fmt_result=_rb_; + _rr_=[0,[9,pad$4,fmt_rest$9]]; + var fmt_result=_rr_; break; case 37: case 64: @@ -21428,19 +21564,19 @@ if(str_ind !== end_ind) {var symb$0=caml_string_get(str,str_ind), - _rv_=symb$0 - 88 | 0, + _rL_=symb$0 - 88 | 0, switch$2=0; - if(! (32 < _rv_ >>> 0)) - switch(_rv_) + if(! (32 < _rL_ >>> 0)) + switch(_rL_) {case 0: case 12: case 17: case 23: case 29: - case 32:var _rh_=1;switch$2 = 1;break + case 32:var _rx_=1;switch$2 = 1;break } - if(! switch$2)var _rh_=0; - if(_rh_){switch$0 = 1;switch$1 = 1}} + if(! switch$2)var _rx_=0; + if(_rx_){switch$0 = 1;switch$1 = 1}} if(! switch$1) {var match$15=parse(str_ind,end_ind), @@ -21454,12 +21590,12 @@ default:var counter=1;switch$3 = 1}} else if(76 === symb){var counter=2;switch$3 = 1} - if(! switch$3)throw [0,Assert_failure,_a1_]; + if(! switch$3)throw [0,Assert_failure,_aZ_]; if(get_ign(0)) - var ignored$5=[11,counter],_rg_=[0,[23,ignored$5,fmt_rest$13]]; + var ignored$5=[11,counter],_rw_=[0,[23,ignored$5,fmt_rest$13]]; else - var _rg_=[0,[21,counter,fmt_rest$13]]; - var fmt_result=_rg_} + var _rw_=[0,[21,counter,fmt_rest$13]]; + var fmt_result=_rw_} break; case 32: case 35: @@ -21468,7 +21604,7 @@ case 95: var fmt_result= - caml_call3(failwith_message(_aS_),str,pct_ind,symb); + caml_call3(failwith_message(_aQ_),str,pct_ind,symb); break; case 88: case 100: @@ -21477,25 +21613,25 @@ case 117: case 120: var - _rk_=get_space(0), - _rl_=get_hash(0), + _rA_=get_space(0), + _rB_=get_hash(0), iconv$2= - compute_int_conv(pct_ind,str_ind,get_plus(0),_rl_,_rk_,symb), + compute_int_conv(pct_ind,str_ind,get_plus(0),_rB_,_rA_,symb), match$19=parse(str_ind,end_ind), fmt_rest$17=match$19[1]; if(get_ign(0)) var ignored$8=[2,iconv$2,get_pad_opt(95)], - _rm_=[0,[23,ignored$8,fmt_rest$17]]; + _rC_=[0,[23,ignored$8,fmt_rest$17]]; else var - _rn_=get_prec(0), - match$20=make_padprec_fmt_ebb(get_int_pad(0),_rn_,fmt_rest$17), + _rD_=get_prec(0), + match$20=make_padprec_fmt_ebb(get_int_pad(0),_rD_,fmt_rest$17), fmt_rest$18=match$20[3], prec$4=match$20[2], pad$8=match$20[1], - _rm_=[0,[4,iconv$2,pad$8,prec$4,fmt_rest$18]]; - var fmt_result=_rm_; + _rC_=[0,[4,iconv$2,pad$8,prec$4,fmt_rest$18]]; + var fmt_result=_rC_; break; case 69: case 70: @@ -21506,325 +21642,674 @@ case 103: case 104: var - space$1=get_space(0), - hash$1=get_hash(0), - plus$2=get_plus(0), - flag= - plus$2 - ?space$1 - ?legacy_behavior$0 - ?1 - :incompatible_flag(pct_ind,str_ind,32,cst$50) - :1 - :space$1?2:0, - switch$4=0; - if(73 <= symb) - {var switcher=symb - 101 | 0; - if(3 < switcher >>> 0) - switch$4 = 1; - else - {switch(switcher) - {case 0:var _rw_=1;break; - case 1:var _rw_=0;break; - case 2:var _rw_=3;break; - default:var _rw_=6} - var kind=_rw_}} - else - if(69 <= symb) - {var switch$5=0; - switch(symb - 69 | 0) - {case 0:var _rx_=2;break; - case 1:switch$4 = 1;switch$5 = 1;break; - case 2:var _rx_=4;break; - default:var _rx_=7} - if(! switch$5)var kind=_rx_} - else - switch$4 = 1; - if(switch$4) - {var switch$6=0; - if(hash$1) - if(70 === symb)var kind=8;else switch$6 = 1; - else - if(70 === symb)var kind=5;else switch$6 = 1; - if(switch$6)throw [0,Assert_failure,_a3_]} + space$1=get_space(0), + hash$1=get_hash(0), + plus$2=get_plus(0), + flag= + plus$2 + ?space$1 + ?legacy_behavior$0 + ?1 + :incompatible_flag(pct_ind,str_ind,32,cst$50) + :1 + :space$1?2:0, + switch$4=0; + if(73 <= symb) + {var switcher=symb - 101 | 0; + if(3 < switcher >>> 0) + switch$4 = 1; + else + {switch(switcher) + {case 0:var _rM_=1;break; + case 1:var _rM_=0;break; + case 2:var _rM_=3;break; + default:var _rM_=6} + var kind=_rM_}} + else + if(69 <= symb) + {var switch$5=0; + switch(symb - 69 | 0) + {case 0:var _rN_=2;break; + case 1:switch$4 = 1;switch$5 = 1;break; + case 2:var _rN_=4;break; + default:var _rN_=7} + if(! switch$5)var kind=_rN_} + else + switch$4 = 1; + if(switch$4) + {var switch$6=0; + if(hash$1) + if(70 === symb)var kind=8;else switch$6 = 1; + else + if(70 === symb)var kind=5;else switch$6 = 1; + if(switch$6)throw [0,Assert_failure,_a1_]} + var + fconv=[0,flag,kind], + match$13=parse(str_ind,end_ind), + fmt_rest$11=match$13[1]; + if(get_ign(0)) + {var match=get_prec(0); + if(typeof match === "number") + var _rt_=match?incompatible_flag(pct_ind,str_ind,95,cst$40):0; + else + var ndec=match[1],_rt_=[0,ndec]; + var + ignored$4=[6,get_pad_opt(95),_rt_], + _ru_=[0,[23,ignored$4,fmt_rest$11]]} + else + var + _rv_=get_prec(0), + match$14=make_padprec_fmt_ebb(get_pad(0),_rv_,fmt_rest$11), + fmt_rest$12=match$14[3], + prec$3=match$14[2], + pad$5=match$14[1], + _ru_=[0,[8,fconv,pad$5,prec$3,fmt_rest$12]]; + var fmt_result=_ru_; + break; + default:switch$0 = 1} + if(switch$0) + {var switch$7=0; + if(108 <= symb) + if(111 <= symb) + switch$7 = 1; + else + {var switch$8=0; + switch(symb - 108 | 0) + {case 0: + var + _ra_=caml_string_get(str,str_ind), + _rb_=get_space(0), + _rc_=get_hash(0), + iconv= + compute_int_conv + (pct_ind,str_ind + 1 | 0,get_plus(0),_rc_,_rb_,_ra_), + match$0=parse(str_ind + 1 | 0,end_ind), + fmt_rest=match$0[1]; + if(get_ign(0)) + var + ignored=[3,iconv,get_pad_opt(95)], + _rd_=[0,[23,ignored,fmt_rest]]; + else + var + _rf_=get_prec(0), + match$1=make_padprec_fmt_ebb(get_int_pad(0),_rf_,fmt_rest), + fmt_rest$0=match$1[3], + prec$0=match$1[2], + pad$0=match$1[1], + _rd_=[0,[5,iconv,pad$0,prec$0,fmt_rest$0]]; + var _re_=_rd_; + break; + case 1:switch$7 = 1;switch$8 = 1;break; + default: + var + _rg_=caml_string_get(str,str_ind), + _rh_=get_space(0), + _ri_=get_hash(0), + iconv$0= + compute_int_conv + (pct_ind,str_ind + 1 | 0,get_plus(0),_ri_,_rh_,_rg_), + match$2=parse(str_ind + 1 | 0,end_ind), + fmt_rest$1=match$2[1]; + if(get_ign(0)) + var + ignored$0=[4,iconv$0,get_pad_opt(95)], + _rj_=[0,[23,ignored$0,fmt_rest$1]]; + else + var + _rk_=get_prec(0), + match$3=make_padprec_fmt_ebb(get_int_pad(0),_rk_,fmt_rest$1), + fmt_rest$2=match$3[3], + prec$1=match$3[2], + pad$1=match$3[1], + _rj_=[0,[6,iconv$0,pad$1,prec$1,fmt_rest$2]]; + var _re_=_rj_} + if(! switch$8)var fmt_result=_re_} + else + if(76 === symb) + {var + _rl_=caml_string_get(str,str_ind), + _rm_=get_space(0), + _rn_=get_hash(0), + iconv$1= + compute_int_conv + (pct_ind,str_ind + 1 | 0,get_plus(0),_rn_,_rm_,_rl_), + match$4=parse(str_ind + 1 | 0,end_ind), + fmt_rest$3=match$4[1]; + if(get_ign(0)) + var + ignored$1=[5,iconv$1,get_pad_opt(95)], + _ro_=[0,[23,ignored$1,fmt_rest$3]]; + else + var + _rp_=get_prec(0), + match$5=make_padprec_fmt_ebb(get_int_pad(0),_rp_,fmt_rest$3), + fmt_rest$4=match$5[3], + prec$2=match$5[2], + pad$2=match$5[1], + _ro_=[0,[7,iconv$1,pad$2,prec$2,fmt_rest$4]]; + var fmt_result=_ro_} + else + switch$7 = 1; + if(switch$7) + var + fmt_result= + caml_call3(failwith_message(_aN_),str,str_ind - 1 | 0,symb)} + if(1 - legacy_behavior$0) + {var _q3_=1 - plus_used[1],plus$0=_q3_?plus:_q3_; + if(plus$0)incompatible_flag(pct_ind,str_ind,symb,cst$41); + var _q4_=1 - hash_used[1],hash$0=_q4_?hash:_q4_; + if(hash$0)incompatible_flag(pct_ind,str_ind,symb,cst$42); + var _q5_=1 - space_used[1],space$0=_q5_?space:_q5_; + if(space$0)incompatible_flag(pct_ind,str_ind,symb,cst$43); + var _q6_=1 - pad_used[1],_q7_=_q6_?caml_notequal([0,pad],_aO_):_q6_; + if(_q7_)incompatible_flag(pct_ind,str_ind,symb,cst_padding$0); + var + _q8_=1 - prec_used[1], + _q9_=_q8_?caml_notequal([0,prec],_aP_):_q8_; + if(_q9_) + {var _q__=ign?95:symb; + incompatible_flag(pct_ind,str_ind,_q__,cst_precision$2)} + var plus$1=ign?plus:ign; + if(plus$1)incompatible_flag(pct_ind,str_ind,95,cst$44)} + var _q$_=1 - ign_used[1],ign$0=_q$_?ign:_q$_; + if(ign$0) + {var switch$9=0; + if(38 <= symb) + {if(44 !== symb && 64 !== symb)switch$9 = 1} + else + if(33 !== symb && ! (37 <= symb))switch$9 = 1; + var switch$10=0; + if(switch$9 || ! legacy_behavior$0)switch$10 = 1; + if(switch$10)incompatible_flag(pct_ind,str_ind,symb,cst$45)} + return fmt_result} + function parse_after_precision + (pct_ind,str_ind,end_ind,minus,plus,hash,space,ign,pad,prec) + {if(str_ind === end_ind)unexpected_end_of_format(end_ind); + function parse_conv(padprec) + {return parse_conversion + (pct_ind, + str_ind + 1 | 0, + end_ind, + plus, + hash, + space, + ign, + pad, + prec, + padprec, + caml_string_get(str,str_ind))} + if(typeof pad === "number") + {if(typeof prec === "number" && ! prec)return parse_conv(0); + if(minus) + {if(typeof prec === "number")return parse_conv(_aJ_); + var n=prec[1]; + return parse_conv([0,0,n])} + if(typeof prec === "number")return parse_conv(_aK_); + var n$0=prec[1]; + return parse_conv([0,1,n$0])} + return parse_conv(pad)} + function parse_after_padding + (pct_ind,str_ind,end_ind,minus,plus,hash,space,ign,pad) + {if(str_ind === end_ind)unexpected_end_of_format(end_ind); + var symb=caml_string_get(str,str_ind); + if(46 === symb) + {var str_ind$0=str_ind + 1 | 0; + if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind); + var + parse_literal= + function(minus,str_ind) + {var + match=parse_positive(str_ind,end_ind,0), + prec=match[2], + new_ind=match[1]; + return parse_after_precision + (pct_ind, + new_ind, + end_ind, + minus, + plus, + hash, + space, + ign, + pad, + [0,prec])}, + symb$0=caml_string_get(str,str_ind$0); + if(48 <= symb$0) + {if(! (58 <= symb$0))return parse_literal(minus,str_ind$0)} + else + if(42 <= symb$0) + switch(symb$0 - 42 | 0) + {case 0: + return parse_after_precision + (pct_ind, + str_ind$0 + 1 | 0, + end_ind, + minus, + plus, + hash, + space, + ign, + pad, + 1); + case 1: + case 3: + if(legacy_behavior$0) + {var + _q2_=str_ind$0 + 1 | 0, + minus$0=minus || (45 === symb$0?1:0); + return parse_literal(minus$0,_q2_)} + break + } + return legacy_behavior$0 + ?parse_after_precision + (pct_ind, + str_ind$0, + end_ind, + minus, + plus, + hash, + space, + ign, + pad, + _aI_) + :invalid_format_without(str_ind$0 - 1 | 0,46,cst_precision)} + return parse_conversion + (pct_ind, + str_ind + 1 | 0, + end_ind, + plus, + hash, + space, + ign, + pad, + 0, + pad, + symb)} + function parse_flags(pct_ind,str_ind,end_ind,ign) + {var zero=[0,0],minus=[0,0],plus=[0,0],space=[0,0],hash=[0,0]; + function set_flag(str_ind,flag) + {var _qZ_=flag[1],_q0_=_qZ_?1 - legacy_behavior$0:_qZ_; + if(_q0_) + {var _q1_=caml_string_get(str,str_ind); + caml_call3(failwith_message(_aG_),str,str_ind,_q1_)} + flag[1] = 1; + return 0} + var str_ind$0=str_ind; + for(;;) + {if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind); + var match=caml_string_get(str,str_ind$0),switcher=match - 32 | 0; + if(! (16 < switcher >>> 0)) + switch(switcher) + {case 0: + set_flag(str_ind$0,space); + var str_ind$1=str_ind$0 + 1 | 0,str_ind$0=str_ind$1; + continue; + case 3: + set_flag(str_ind$0,hash); + var str_ind$2=str_ind$0 + 1 | 0,str_ind$0=str_ind$2; + continue; + case 11: + set_flag(str_ind$0,plus); + var str_ind$3=str_ind$0 + 1 | 0,str_ind$0=str_ind$3; + continue; + case 13: + set_flag(str_ind$0,minus); + var str_ind$4=str_ind$0 + 1 | 0,str_ind$0=str_ind$4; + continue; + case 16: + set_flag(str_ind$0,zero); + var str_ind$5=str_ind$0 + 1 | 0,str_ind$0=str_ind$5; + continue + } + var + _qU_=space[1], + _qV_=hash[1], + _qW_=plus[1], + _qX_=minus[1], + _qY_=zero[1]; + if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind); + var + padty= + _qY_ + ?_qX_ + ?legacy_behavior$0 + ?0 + :incompatible_flag(pct_ind,str_ind$0,45,cst_0) + :2 + :_qX_?0:1, + match$0=caml_string_get(str,str_ind$0); + if(48 <= match$0) + {if(! (58 <= match$0)) + {var + match$1=parse_positive(str_ind$0,end_ind,0), + width=match$1[2], + new_ind=match$1[1]; + return parse_after_padding + (pct_ind, + new_ind, + end_ind, + _qX_, + _qW_, + _qV_, + _qU_, + ign, + [0,padty,width])}} + else + if(42 === match$0) + return parse_after_padding + (pct_ind, + str_ind$0 + 1 | 0, + end_ind, + _qX_, + _qW_, + _qV_, + _qU_, + ign, + [1,padty]); + switch(padty) + {case 0: + if(1 - legacy_behavior$0) + invalid_format_without(str_ind$0 - 1 | 0,45,cst_padding); + return parse_after_padding + (pct_ind,str_ind$0,end_ind,_qX_,_qW_,_qV_,_qU_,ign,0); + case 1: + return parse_after_padding + (pct_ind,str_ind$0,end_ind,_qX_,_qW_,_qV_,_qU_,ign,0); + default: + return parse_after_padding + (pct_ind,str_ind$0,end_ind,_qX_,_qW_,_qV_,_qU_,ign,_aH_)}}} + function parse_tag(is_open_tag,str_ind,end_ind) + {try + {if(str_ind === end_ind)throw Not_found; + var match$0=caml_string_get(str,str_ind); + if(60 === match$0) + {var ind=index_from$0(str,str_ind + 1 | 0,62); + if(end_ind <= ind)throw Not_found; + var + sub_str=sub$0(str,str_ind,(ind - str_ind | 0) + 1 | 0), + match$1=parse(ind + 1 | 0,end_ind), + fmt_rest$0=match$1[1], + match$2=parse(str_ind,ind + 1 | 0), + sub_fmt=match$2[1], + sub_format$0=[0,sub_fmt,sub_str], + formatting$0=is_open_tag?[0,sub_format$0]:[1,sub_format$0], + _qS_=[0,[18,formatting$0,fmt_rest$0]]; + return _qS_} + throw Not_found} + catch(_qT_) + {_qT_ = caml_wrap_exception(_qT_); + if(_qT_ === Not_found) + {var + match=parse(str_ind,end_ind), + fmt_rest=match[1], + formatting=is_open_tag?[0,sub_format]:[1,sub_format]; + return [0,[18,formatting,fmt_rest]]} + throw _qT_}} + function parse_good_break(str_ind,end_ind) + {try + {var + _qL_=str_ind === end_ind?1:0, + _qM_=_qL_ || (60 !== caml_string_get(str,str_ind)?1:0); + if(_qM_)throw Not_found; + var + str_ind_1=parse_spaces(str_ind + 1 | 0,end_ind), + match$0=caml_string_get(str,str_ind_1), + switch$0=0; + if(48 <= match$0) + {if(! (58 <= match$0))switch$0 = 1} + else + if(45 === match$0)switch$0 = 1; + if(! switch$0)throw Not_found; + var + match$1=parse_integer(str_ind_1,end_ind), + width=match$1[2], + str_ind_2=match$1[1], + str_ind_3=parse_spaces(str_ind_2,end_ind), + match$2=caml_string_get(str,str_ind_3), + switcher=match$2 - 45 | 0, + switch$1=0; + if(12 < switcher >>> 0) + if(17 === switcher) var - fconv=[0,flag,kind], - match$13=parse(str_ind,end_ind), - fmt_rest$11=match$13[1]; - if(get_ign(0)) - {var match=get_prec(0); - if(typeof match === "number") - var _rd_=match?incompatible_flag(pct_ind,str_ind,95,cst$40):0; - else - var ndec=match[1],_rd_=[0,ndec]; - var - ignored$4=[6,get_pad_opt(95),_rd_], - _re_=[0,[23,ignored$4,fmt_rest$11]]} - else - var - _rf_=get_prec(0), - match$14=make_padprec_fmt_ebb(get_pad(0),_rf_,fmt_rest$11), - fmt_rest$12=match$14[3], - prec$3=match$14[2], - pad$5=match$14[1], - _re_=[0,[8,fconv,pad$5,prec$3,fmt_rest$12]]; - var fmt_result=_re_; - break; - default:switch$0 = 1} - if(switch$0) - {var switch$7=0; - if(108 <= symb) - if(111 <= symb) - switch$7 = 1; + s=sub$0(str,str_ind - 2 | 0,(str_ind_3 - str_ind | 0) + 3 | 0), + _qN_=[0,s,width,0], + _qO_=str_ind_3 + 1 | 0, + formatting_lit$0=_qN_, + next_ind=_qO_; else - {var switch$8=0; - switch(symb - 108 | 0) - {case 0: - var - _qW_=caml_string_get(str,str_ind), - _qX_=get_space(0), - _qY_=get_hash(0), - iconv= - compute_int_conv - (pct_ind,str_ind + 1 | 0,get_plus(0),_qY_,_qX_,_qW_), - match$0=parse(str_ind + 1 | 0,end_ind), - fmt_rest=match$0[1]; - if(get_ign(0)) - var - ignored=[3,iconv,get_pad_opt(95)], - _qZ_=[0,[23,ignored,fmt_rest]]; - else - var - _q1_=get_prec(0), - match$1=make_padprec_fmt_ebb(get_int_pad(0),_q1_,fmt_rest), - fmt_rest$0=match$1[3], - prec$0=match$1[2], - pad$0=match$1[1], - _qZ_=[0,[5,iconv,pad$0,prec$0,fmt_rest$0]]; - var _q0_=_qZ_; - break; - case 1:switch$7 = 1;switch$8 = 1;break; - default: - var - _q2_=caml_string_get(str,str_ind), - _q3_=get_space(0), - _q4_=get_hash(0), - iconv$0= - compute_int_conv - (pct_ind,str_ind + 1 | 0,get_plus(0),_q4_,_q3_,_q2_), - match$2=parse(str_ind + 1 | 0,end_ind), - fmt_rest$1=match$2[1]; - if(get_ign(0)) - var - ignored$0=[4,iconv$0,get_pad_opt(95)], - _q5_=[0,[23,ignored$0,fmt_rest$1]]; - else - var - _q6_=get_prec(0), - match$3=make_padprec_fmt_ebb(get_int_pad(0),_q6_,fmt_rest$1), - fmt_rest$2=match$3[3], - prec$1=match$3[2], - pad$1=match$3[1], - _q5_=[0,[6,iconv$0,pad$1,prec$1,fmt_rest$2]]; - var _q0_=_q5_} - if(! switch$8)var fmt_result=_q0_} + switch$1 = 1; else - if(76 === symb) + if(1 < switcher - 1 >>> 0) {var - _q7_=caml_string_get(str,str_ind), - _q8_=get_space(0), - _q9_=get_hash(0), - iconv$1= - compute_int_conv - (pct_ind,str_ind + 1 | 0,get_plus(0),_q9_,_q8_,_q7_), - match$4=parse(str_ind + 1 | 0,end_ind), - fmt_rest$3=match$4[1]; - if(get_ign(0)) - var - ignored$1=[5,iconv$1,get_pad_opt(95)], - _q__=[0,[23,ignored$1,fmt_rest$3]]; - else - var - _q$_=get_prec(0), - match$5=make_padprec_fmt_ebb(get_int_pad(0),_q$_,fmt_rest$3), - fmt_rest$4=match$5[3], - prec$2=match$5[2], - pad$2=match$5[1], - _q__=[0,[7,iconv$1,pad$2,prec$2,fmt_rest$4]]; - var fmt_result=_q__} + match$3=parse_integer(str_ind_3,end_ind), + offset=match$3[2], + str_ind_4=match$3[1], + str_ind_5=parse_spaces(str_ind_4,end_ind); + if(62 !== caml_string_get(str,str_ind_5))throw Not_found; + var + s$0=sub$0(str,str_ind - 2 | 0,(str_ind_5 - str_ind | 0) + 3 | 0), + _qP_=[0,s$0,width,offset], + _qQ_=str_ind_5 + 1 | 0, + formatting_lit$0=_qP_, + next_ind=_qQ_} else - switch$7 = 1; - if(switch$7) - var - fmt_result= - caml_call3(failwith_message(_aP_),str,str_ind - 1 | 0,symb)} - if(1 - legacy_behavior$0) - {var _qN_=1 - plus_used[1],plus$0=_qN_?plus:_qN_; - if(plus$0)incompatible_flag(pct_ind,str_ind,symb,cst$41); - var _qO_=1 - hash_used[1],hash$0=_qO_?hash:_qO_; - if(hash$0)incompatible_flag(pct_ind,str_ind,symb,cst$42); - var _qP_=1 - space_used[1],space$0=_qP_?space:_qP_; - if(space$0)incompatible_flag(pct_ind,str_ind,symb,cst$43); - var _qQ_=1 - pad_used[1],_qR_=_qQ_?caml_notequal([0,pad],_aQ_):_qQ_; - if(_qR_)incompatible_flag(pct_ind,str_ind,symb,cst_padding$0); - var - _qS_=1 - prec_used[1], - _qT_=_qS_?caml_notequal([0,prec],_aR_):_qS_; - if(_qT_) - {var _qU_=ign?95:symb; - incompatible_flag(pct_ind,str_ind,_qU_,cst_precision$2)} - var plus$1=ign?plus:ign; - if(plus$1)incompatible_flag(pct_ind,str_ind,95,cst$44)} - var _qV_=1 - ign_used[1],ign$0=_qV_?ign:_qV_; - if(ign$0) - {var switch$9=0; - if(38 <= symb) - {if(44 !== symb && 64 !== symb)switch$9 = 1} + switch$1 = 1; + if(switch$1)throw Not_found} + catch(_qR_) + {_qR_ = caml_wrap_exception(_qR_); + if(_qR_ !== Not_found && _qR_[1] !== Failure)throw _qR_; + var formatting_lit$0=formatting_lit,next_ind=str_ind} + var match=parse(next_ind,end_ind),fmt_rest=match[1]; + return [0,[17,formatting_lit$0,fmt_rest]]} + function parse_magic_size(str_ind,end_ind) + {try + {var + str_ind_1=parse_spaces(str_ind,end_ind), + match$2=caml_string_get(str,str_ind_1), + switch$0=0; + if(48 <= match$2) + {if(! (58 <= match$2))switch$0 = 1} else - if(33 !== symb && ! (37 <= symb))switch$9 = 1; - var switch$10=0; - if(switch$9 || ! legacy_behavior$0)switch$10 = 1; - if(switch$10)incompatible_flag(pct_ind,str_ind,symb,cst$45)} - return fmt_result} - function parse(lit_start,end_ind) - {var str_ind=lit_start; + if(45 === match$2)switch$0 = 1; + if(switch$0) + {var + match$3=parse_integer(str_ind_1,end_ind), + size=match$3[2], + str_ind_2=match$3[1], + str_ind_3=parse_spaces(str_ind_2,end_ind); + if(62 !== caml_string_get(str,str_ind_3))throw Not_found; + var + s=sub$0(str,str_ind - 2 | 0,(str_ind_3 - str_ind | 0) + 3 | 0), + _qJ_=[0,[0,str_ind_3 + 1 | 0,[1,s,size]]]} + else + var _qJ_=0; + var _qI_=_qJ_} + catch(_qK_) + {_qK_ = caml_wrap_exception(_qK_); + if(_qK_ !== Not_found && _qK_[1] !== Failure)throw _qK_; + var _qI_=0} + if(_qI_) + {var + match=_qI_[1], + formatting_lit=match[2], + next_ind=match[1], + match$0=parse(next_ind,end_ind), + fmt_rest=match$0[1]; + return [0,[17,formatting_lit,fmt_rest]]} + var match$1=parse(str_ind,end_ind),fmt_rest$0=match$1[1]; + return [0,[17,_aU_,fmt_rest$0]]} + function parse_spaces(str_ind,end_ind) + {var str_ind$0=str_ind; for(;;) - {if(str_ind === end_ind)return add_literal(lit_start,str_ind,0); - var match=caml_string_get(str,str_ind); + {if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind); + if(32 === caml_string_get(str,str_ind$0)) + {var str_ind$1=str_ind$0 + 1 | 0,str_ind$0=str_ind$1;continue} + return str_ind$0}} + function parse_positive(str_ind,end_ind,acc) + {var str_ind$0=str_ind,acc$0=acc; + for(;;) + {if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind); + var c=caml_string_get(str,str_ind$0); + if(9 < c - 48 >>> 0)return [0,str_ind$0,acc$0]; + var acc$1=(acc$0 * 10 | 0) + (c - 48 | 0) | 0; + if(max_string_length < acc$1) + return caml_call3 + (failwith_message(_aW_),str,acc$1,max_string_length); + var str_ind$1=str_ind$0 + 1 | 0,str_ind$0=str_ind$1,acc$0=acc$1; + continue}} + function parse_integer(str_ind,end_ind) + {if(str_ind === end_ind)unexpected_end_of_format(end_ind); + var match=caml_string_get(str,str_ind); + if(48 <= match) + {if(! (58 <= match))return parse_positive(str_ind,end_ind,0)} + else + if(45 === match) + {if((str_ind + 1 | 0) === end_ind)unexpected_end_of_format(end_ind); + var c=caml_string_get(str,str_ind + 1 | 0); + if(9 < c - 48 >>> 0) + return expected_character(str_ind + 1 | 0,cst_digit,c); + var + match$0=parse_positive(str_ind + 1 | 0,end_ind,0), + n=match$0[2], + next_ind=match$0[1]; + return [0,next_ind,- n | 0]} + throw [0,Assert_failure,_aX_]} + function search_subformat_end(str_ind,end_ind,c) + {var str_ind$0=str_ind; + for(;;) + {if(str_ind$0 === end_ind) + caml_call3(failwith_message(_aY_),str,c,end_ind); + var match=caml_string_get(str,str_ind$0); if(37 === match) - {var str_ind$2=str_ind + 1 | 0; - if(str_ind$2 === end_ind)unexpected_end_of_format(end_ind); - var - match$1=caml_string_get(str,str_ind$2), - _qM_= - 95 === match$1 - ?parse_flags(str_ind,str_ind$2 + 1 | 0,end_ind,1) - :parse_flags(str_ind,str_ind$2,end_ind,0), - fmt_rest=_qM_[1]; - return add_literal(lit_start,str_ind,fmt_rest)} - if(64 === match) - {var str_ind$0=str_ind + 1 | 0; - if(str_ind$0 === end_ind) - var match$0=_aT_; - else - {var c=caml_string_get(str,str_ind$0),switch$0=0; - if(65 <= c) - if(94 <= c) - {var switcher=c - 123 | 0; - if(2 < switcher >>> 0) - switch$0 = 1; - else - switch(switcher) - {case 0: - var match$0=parse_tag(1,str_ind$0 + 1 | 0,end_ind);break; - case 1:switch$0 = 1;break; - default: - var - match$3=parse(str_ind$0 + 1 | 0,end_ind), - fmt_rest$2=match$3[1], - match$0=[0,[17,1,fmt_rest$2]]}} - else - if(91 <= c) - switch(c - 91 | 0) + {if((str_ind$0 + 1 | 0) === end_ind) + unexpected_end_of_format(end_ind); + if(caml_string_get(str,str_ind$0 + 1 | 0) === c)return str_ind$0; + var match$0=caml_string_get(str,str_ind$0 + 1 | 0); + if(95 <= match$0) + {if(123 <= match$0) + {if(! (126 <= match$0)) + switch(match$0 - 123 | 0) {case 0: - var match$0=parse_tag(0,str_ind$0 + 1 | 0,end_ind);break; - case 1:switch$0 = 1;break; - default: var - match$4=parse(str_ind$0 + 1 | 0,end_ind), - fmt_rest$3=match$4[1], - match$0=[0,[17,0,fmt_rest$3]]} - else - switch$0 = 1; + sub_end=search_subformat_end(str_ind$0 + 2 | 0,end_ind,125), + str_ind$2=sub_end + 2 | 0, + str_ind$0=str_ind$2; + continue; + case 1:break; + default: + return expected_character + (str_ind$0 + 1 | 0,cst_character,125)}} else - if(10 === c) - var - match$5=parse(str_ind$0 + 1 | 0,end_ind), - fmt_rest$4=match$5[1], - match$0=[0,[17,3,fmt_rest$4]]; - else - if(32 <= c) - switch(c - 32 | 0) - {case 0: - var - match$6=parse(str_ind$0 + 1 | 0,end_ind), - fmt_rest$5=match$6[1], - match$0=[0,[17,_aU_,fmt_rest$5]]; - break; - case 5: - var switch$1=0; - if - ((str_ind$0 + 1 | 0) - < - end_ind - && - 37 - === - caml_string_get(str,str_ind$0 + 1 | 0)) - {var - match$7=parse(str_ind$0 + 2 | 0,end_ind), - fmt_rest$6=match$7[1], - match$0=[0,[17,6,fmt_rest$6]]; - switch$1 = 1} - if(! switch$1) - var - match$8=parse(str_ind$0,end_ind), - fmt_rest$7=match$8[1], - match$0=[0,[12,64,fmt_rest$7]]; - break; - case 12: - var - match$9=parse(str_ind$0 + 1 | 0,end_ind), - fmt_rest$8=match$9[1], - match$0=[0,[17,_aV_,fmt_rest$8]]; - break; - case 14: - var - match$10=parse(str_ind$0 + 1 | 0,end_ind), - fmt_rest$9=match$10[1], - match$0=[0,[17,4,fmt_rest$9]]; - break; - case 27: - var match$0=parse_good_break(str_ind$0 + 1 | 0,end_ind); - break; - case 28: - var match$0=parse_magic_size(str_ind$0 + 1 | 0,end_ind); - break; - case 31: - var - match$11=parse(str_ind$0 + 1 | 0,end_ind), - fmt_rest$10=match$11[1], - match$0=[0,[17,2,fmt_rest$10]]; - break; - case 32: - var - match$12=parse(str_ind$0 + 1 | 0,end_ind), - fmt_rest$11=match$12[1], - match$0=[0,[17,5,fmt_rest$11]]; - break; - default:switch$0 = 1} - else - switch$0 = 1; - if(switch$0) - var - match$2=parse(str_ind$0 + 1 | 0,end_ind), - fmt_rest$1=match$2[1], - match$0=[0,[17,[2,c],fmt_rest$1]]} - var fmt_rest$0=match$0[1]; - return add_literal(lit_start,str_ind,fmt_rest$0)} - var str_ind$1=str_ind + 1 | 0,str_ind=str_ind$1; + if(! (96 <= match$0)) + {if((str_ind$0 + 2 | 0) === end_ind) + unexpected_end_of_format(end_ind); + var match$1=caml_string_get(str,str_ind$0 + 2 | 0); + if(40 === match$1) + {var + sub_end$0=search_subformat_end(str_ind$0 + 3 | 0,end_ind,41), + str_ind$3=sub_end$0 + 2 | 0, + str_ind$0=str_ind$3; + continue} + if(123 === match$1) + {var + sub_end$1= + search_subformat_end(str_ind$0 + 3 | 0,end_ind,125), + str_ind$4=sub_end$1 + 2 | 0, + str_ind$0=str_ind$4; + continue} + var str_ind$5=str_ind$0 + 3 | 0,str_ind$0=str_ind$5; + continue}} + else + {if(40 === match$0) + {var + sub_end$2=search_subformat_end(str_ind$0 + 2 | 0,end_ind,41), + str_ind$6=sub_end$2 + 2 | 0, + str_ind$0=str_ind$6; + continue} + if(41 === match$0) + return expected_character(str_ind$0 + 1 | 0,cst_character$0,41)} + var str_ind$1=str_ind$0 + 2 | 0,str_ind$0=str_ind$1; + continue} + var str_ind$7=str_ind$0 + 1 | 0,str_ind$0=str_ind$7; continue}} + function incompatible_flag(pct_ind,str_ind,symb,option) + {var subfmt=sub$0(str,pct_ind,str_ind - pct_ind | 0); + return caml_call5 + (failwith_message(_a2_),str,pct_ind,option,symb,subfmt)} + function compute_int_conv(pct_ind,str_ind,plus,hash,space,symb) + {var plus$0=plus,hash$0=hash,space$0=space; + for(;;) + {var switch$0=0; + if(plus$0) + {if(hash$0) + switch$0 = 1; + else + if(! space$0){if(100 === symb)return 1;if(105 === symb)return 4}} + else + if(hash$0) + if(space$0) + switch$0 = 1; + else + {var switcher$0=symb - 88 | 0; + if(32 < switcher$0 >>> 0) + switch$0 = 1; + else + switch(switcher$0) + {case 0:return 9; + case 12:return 13; + case 17:return 14; + case 23:return 11; + case 29:return 15; + case 32:return 7; + default:switch$0 = 1}} + else + if(space$0) + {if(100 === symb)return 2;if(105 === symb)return 5} + else + {var switcher$1=symb - 88 | 0; + if(! (32 < switcher$1 >>> 0)) + switch(switcher$1) + {case 0:return 8; + case 12:return 0; + case 17:return 3; + case 23:return 10; + case 29:return 12; + case 32:return 6 + }} + if(switch$0) + {var switcher=symb - 88 | 0; + if(! (32 < switcher >>> 0)) + switch(switcher) + {case 0:if(legacy_behavior$0)return 9;break; + case 23:if(legacy_behavior$0)return 11;break; + case 32:if(legacy_behavior$0)return 7;break; + case 12: + case 17: + case 29: + if(legacy_behavior$0){var hash$0=0;continue} + return incompatible_flag(pct_ind,str_ind,symb,cst$49) + }} + if(plus$0) + {if(space$0) + {if(legacy_behavior$0){var space$0=0;continue} + return incompatible_flag(pct_ind,str_ind,32,cst$46)} + if(legacy_behavior$0){var plus$0=0;continue} + return incompatible_flag(pct_ind,str_ind,symb,cst$47)} + if(space$0) + {if(legacy_behavior$0){var space$0=0;continue} + return incompatible_flag(pct_ind,str_ind,symb,cst$48)} + throw [0,Assert_failure,_a0_]}} return parse(0,caml_ml_string_length(str))} function format_of_string_fmtty(str,fmtty) {var match=fmt_ebb_of_string(0,str),fmt=match[1]; try - {var _qK_=[0,type_format(fmt,fmtty),str];return _qK_} - catch(_qL_) - {_qL_ = caml_wrap_exception(_qL_); - if(_qL_ === Type_mismatch) - {var _qJ_=string_of_fmtty(fmtty); - return caml_call2(failwith_message(_a5_),str,_qJ_)} - throw _qL_}} + {var _qG_=[0,type_format(fmt,fmtty),str];return _qG_} + catch(_qH_) + {_qH_ = caml_wrap_exception(_qH_); + if(_qH_ === Type_mismatch) + {var _qF_=string_of_fmtty(fmtty); + return caml_call2(failwith_message(_a3_),str,_qF_)} + throw _qH_}} function format_of_string_format(str,param) {var str$0=param[2], @@ -21832,12 +22317,12 @@ match=fmt_ebb_of_string(0,str), fmt$0=match[1]; try - {var _qH_=[0,type_format(fmt$0,fmtty_of_fmt(fmt)),str];return _qH_} - catch(_qI_) - {_qI_ = caml_wrap_exception(_qI_); - if(_qI_ === Type_mismatch) - return caml_call2(failwith_message(_a6_),str,str$0); - throw _qI_}} + {var _qD_=[0,type_format(fmt$0,fmtty_of_fmt(fmt)),str];return _qD_} + catch(_qE_) + {_qE_ = caml_wrap_exception(_qE_); + if(_qE_ === Type_mismatch) + return caml_call2(failwith_message(_a4_),str,str$0); + throw _qE_}} var CamlinternalFormat= [0, @@ -21866,24 +22351,24 @@ recast]; caml_register_global(807,CamlinternalFormat,"CamlinternalFormat"); function kfprintf(k,o,param) - {var fmt=param[1],_qG_=0; + {var fmt=param[1],_qC_=0; return make_printf (function(acc){output_acc(o,acc);return caml_call1(k,o)}, - _qG_, + _qC_, fmt)} function kbprintf(k,b,param) - {var fmt=param[1],_qF_=0; + {var fmt=param[1],_qB_=0; return make_printf (function(acc){bufput_acc(b,acc);return caml_call1(k,b)}, - _qF_, + _qB_, fmt)} function ikfprintf(k,oc,param) {var fmt=param[1];return make_iprintf(k,oc,fmt)} - function fprintf(oc,fmt){return kfprintf(function(_qE_){return 0},oc,fmt)} - function bprintf(b,fmt){return kbprintf(function(_qD_){return 0},b,fmt)} + function fprintf(oc,fmt){return kfprintf(function(_qA_){return 0},oc,fmt)} + function bprintf(b,fmt){return kbprintf(function(_qz_){return 0},b,fmt)} function ifprintf(oc,fmt) - {return ikfprintf(function(_qC_){return 0},oc,fmt)} - function ibprintf(b,fmt){return ikfprintf(function(_qB_){return 0},b,fmt)} + {return ikfprintf(function(_qy_){return 0},oc,fmt)} + function ibprintf(b,fmt){return ikfprintf(function(_qx_){return 0},b,fmt)} function printf(fmt){return fprintf(stdout,fmt)} function eprintf(fmt){return fprintf(stderr,fmt)} function ksprintf(k,param) @@ -21928,80 +22413,80 @@ {var i=index$0(s,61), len=caml_ml_string_length(s), - _qA_=sub$0(s,i + 1 | 0,len - (i + 1 | 0) | 0); - return [0,sub$0(s,0,i),_qA_]} + _qw_=sub$0(s,i + 1 | 0,len - (i + 1 | 0) | 0); + return [0,sub$0(s,0,i),_qw_]} function make_symlist(prefix,sep,suffix,l) {if(l) - {var t=l[2],h=l[1],_qz_=cat(prefix,h); + {var t=l[2],h=l[1],_qv_=cat(prefix,h); return cat - (fold_left$0(function(x,y){return cat(x,cat(sep,y))},_qz_,t), + (fold_left$0(function(x,y){return cat(x,cat(sep,y))},_qv_,t), suffix)} return cst_none} - function help_action(param){throw [0,Stop,_a9_]} + function help_action(param){throw [0,Stop,_a7_]} function add_help(speclist) {try - {assoc3(cst_help$2,speclist);var _qw_=0,_qu_=_qw_} - catch(_qy_) - {_qy_ = caml_wrap_exception(_qy_); - if(_qy_ !== Not_found)throw _qy_; + {assoc3(cst_help$2,speclist);var _qs_=0,_qq_=_qs_} + catch(_qu_) + {_qu_ = caml_wrap_exception(_qu_); + if(_qu_ !== Not_found)throw _qu_; var - _qu_= + _qq_= [0,[0,cst_help,[0,help_action],cst_Display_this_list_of_optio],0]} try - {assoc3(cst_help$1,speclist);var _qv_=0,add2=_qv_} - catch(_qx_) - {_qx_ = caml_wrap_exception(_qx_); - if(_qx_ !== Not_found)throw _qx_; + {assoc3(cst_help$1,speclist);var _qr_=0,add2=_qr_} + catch(_qt_) + {_qt_ = caml_wrap_exception(_qt_); + if(_qt_ !== Not_found)throw _qt_; var add2= [0, [0,cst_help$0,[0,help_action],cst_Display_this_list_of_optio$0], 0]} - return append(speclist,append(_qu_,add2))} + return append(speclist,append(_qq_,add2))} function usage_b(buf,speclist,errmsg) - {caml_call1(bprintf(buf,_a__),errmsg); - var _qr_=add_help(speclist); + {caml_call1(bprintf(buf,_a8_),errmsg); + var _qn_=add_help(speclist); return iter$2 (function(param) {var doc=param[3], spec=param[2], key=param[1], - _qs_=0 < caml_ml_string_length(doc)?1:0; - if(_qs_) + _qo_=0 < caml_ml_string_length(doc)?1:0; + if(_qo_) {if(11 === spec[0]) - {var l=spec[1],_qt_=make_symlist(cst$53,cst$52,cst$51,l); - return caml_call3(bprintf(buf,_a8_),key,_qt_,doc)} - return caml_call2(bprintf(buf,_a7_),key,doc)} - return _qs_}, - _qr_)} + {var l=spec[1],_qp_=make_symlist(cst$53,cst$52,cst$51,l); + return caml_call3(bprintf(buf,_a6_),key,_qp_,doc)} + return caml_call2(bprintf(buf,_a5_),key,doc)} + return _qo_}, + _qn_)} function usage_string(speclist,errmsg) {var b=create$2(200);usage_b(b,speclist,errmsg);return contents(b)} function usage(speclist,errmsg) - {var _qq_=usage_string(speclist,errmsg); - return caml_call1(eprintf(_a$_),_qq_)} + {var _qm_=usage_string(speclist,errmsg); + return caml_call1(eprintf(_a9_),_qm_)} var current=[0,0]; function bool_of_string_opt$0(x) {try - {var _qo_=[0,bool_of_string(x)];return _qo_} - catch(_qp_) - {_qp_ = caml_wrap_exception(_qp_); - if(_qp_[1] === Invalid_argument)return 0; - throw _qp_}} + {var _qk_=[0,bool_of_string(x)];return _qk_} + catch(_ql_) + {_ql_ = caml_wrap_exception(_ql_); + if(_ql_[1] === Invalid_argument)return 0; + throw _ql_}} function int_of_string_opt$0(x) {try - {var _qm_=[0,caml_int_of_string(x)];return _qm_} - catch(_qn_) - {_qn_ = caml_wrap_exception(_qn_); - if(_qn_[1] === Failure)return 0; - throw _qn_}} + {var _qi_=[0,caml_int_of_string(x)];return _qi_} + catch(_qj_) + {_qj_ = caml_wrap_exception(_qj_); + if(_qj_[1] === Failure)return 0; + throw _qj_}} function float_of_string_opt(x) {try - {var _qk_=[0,caml_float_of_string(x)];return _qk_} - catch(_ql_) - {_ql_ = caml_wrap_exception(_ql_); - if(_ql_[1] === Failure)return 0; - throw _ql_}} + {var _qg_=[0,caml_float_of_string(x)];return _qg_} + catch(_qh_) + {_qh_ = caml_wrap_exception(_qh_); + if(_qh_[1] === Failure)return 0; + throw _qh_}} function parse_and_expand_argv_dynamic_ (allow_expand,current,argv,speclist,anonfun,errmsg) {var initpos=current[1]; @@ -22014,21 +22499,21 @@ :cst$54; switch(error[0]) {case 0: - var _qj_=error[1]; + var _qf_=error[1]; if - (caml_string_notequal(_qj_,cst_help$3) + (caml_string_notequal(_qf_,cst_help$3) && - caml_string_notequal(_qj_,cst_help$4)) - caml_call2(bprintf(b,_ba_),progname,_qj_); + caml_string_notequal(_qf_,cst_help$4)) + caml_call2(bprintf(b,_a__),progname,_qf_); break; case 1: var expected=error[3],arg=error[2],opt=error[1]; - caml_call4(bprintf(b,_bd_),progname,arg,opt,expected); + caml_call4(bprintf(b,_bb_),progname,arg,opt,expected); break; - case 2:var s=error[1];caml_call2(bprintf(b,_be_),progname,s);break; - default:var s$0=error[1];caml_call2(bprintf(b,_bf_),progname,s$0)} + case 2:var s=error[1];caml_call2(bprintf(b,_bc_),progname,s);break; + default:var s$0=error[1];caml_call2(bprintf(b,_bd_),progname,s$0)} usage_b(b,speclist[1],errmsg); - if(! caml_equal(error,_bb_) && ! caml_equal(error,_bc_)) + if(! caml_equal(error,_a$_) && ! caml_equal(error,_ba_)) return [0,Bad,contents(b)]; return [0,Help,contents(b)]} current[1]++; @@ -22036,32 +22521,32 @@ {if(current[1] < argv[1].length - 1) {try {var - _p__=current[1], - s=caml_check_bound(argv[1],_p__)[1 + _p__], + _p6_=current[1], + s=caml_check_bound(argv[1],_p6_)[1 + _p6_], switch$0=0; if(1 <= caml_ml_string_length(s) && 45 === caml_string_get(s,0)) {try {var follow$1=0, - _qa_=assoc3(s,speclist[1]), + _p8_=assoc3(s,speclist[1]), follow$0=follow$1, - action=_qa_} - catch(_qh_) - {_qh_ = caml_wrap_exception(_qh_); - if(_qh_ !== Not_found)throw _qh_; + action=_p8_} + catch(_qd_) + {_qd_ = caml_wrap_exception(_qd_); + if(_qd_ !== Not_found)throw _qd_; try {var match=split$1(s), arg=match[2], keyword=match[1], follow=[0,arg], - _p$_=assoc3(keyword,speclist[1])} - catch(_qi_) - {_qi_ = caml_wrap_exception(_qi_); - if(_qi_ === Not_found)throw [0,Stop,[0,s]]; - throw _qi_; - var _qb_=_qi_} - var follow$0=follow,action=_p$_,_qc_=_qh_} + _p7_=assoc3(keyword,speclist[1])} + catch(_qe_) + {_qe_ = caml_wrap_exception(_qe_); + if(_qe_ === Not_found)throw [0,Stop,[0,s]]; + throw _qe_; + var _p9_=_qe_} + var follow$0=follow,action=_p7_,_p__=_qd_} var no_arg$0= function(s,follow) @@ -22076,8 +22561,8 @@ {function get_arg(param) {if(follow){var arg=follow[1];return arg} if((current[1] + 1 | 0) < argv[1].length - 1) - {var _qg_=current[1] + 1 | 0; - return caml_check_bound(argv[1],_qg_)[1 + _qg_]} + {var _qc_=current[1] + 1 | 0; + return caml_check_bound(argv[1],_qc_)[1 + _qc_]} throw [0,Stop,[2,s]]} return get_arg}, get_arg=get_arg$0(s,follow$0), @@ -22161,8 +22646,8 @@ no_arg(0); for(;;) {if(current[1] < (argv[1].length - 1 - 1 | 0)) - {var _qd_=current[1] + 1 | 0; - caml_call1(f$5,caml_check_bound(argv[1],_qd_)[1 + _qd_]); + {var _p$_=current[1] + 1 | 0; + caml_call1(f$5,caml_check_bound(argv[1],_p$_)[1 + _p$_]); consume_arg(0); continue} return 0} @@ -22172,8 +22657,8 @@ var acc=[0,0]; for(;;) {if(current[1] < (argv[1].length - 1 - 1 | 0)) - {var _qf_=current[1] + 1 | 0,_qe_=acc[1]; - acc[1] = [0,caml_check_bound(argv[1],_qf_)[1 + _qf_],_qe_]; + {var _qb_=current[1] + 1 | 0,_qa_=acc[1]; + acc[1] = [0,caml_check_bound(argv[1],_qb_)[1 + _qb_],_qa_]; consume_arg(0); continue} return caml_call1(f$6,rev(acc[1]))} @@ -22222,23 +22707,23 @@ ([0,current$0],argv,[0,speclist],anonfun,errmsg)} function parse(l,f,msg) {try - {var _p9_=parse_argv(0,caml_sys_argv(0),l,f,msg);return _p9_} + {var _p5_=parse_argv(0,caml_sys_argv(0),l,f,msg);return _p5_} catch(exn) {exn = caml_wrap_exception(exn); if(exn[1] === Bad) - {var msg$0=exn[2];caml_call1(eprintf(_bg_),msg$0);return exit(2)} + {var msg$0=exn[2];caml_call1(eprintf(_be_),msg$0);return exit(2)} if(exn[1] === Help) - {var msg$1=exn[2];caml_call1(printf(_bh_),msg$1);return exit(0)} + {var msg$1=exn[2];caml_call1(printf(_bf_),msg$1);return exit(0)} throw exn}} function parse_dynamic(l,f,msg) {try - {var _p8_=parse_argv_dynamic(0,caml_sys_argv(0),l,f,msg);return _p8_} + {var _p4_=parse_argv_dynamic(0,caml_sys_argv(0),l,f,msg);return _p4_} catch(exn) {exn = caml_wrap_exception(exn); if(exn[1] === Bad) - {var msg$0=exn[2];caml_call1(eprintf(_bi_),msg$0);return exit(2)} + {var msg$0=exn[2];caml_call1(eprintf(_bg_),msg$0);return exit(2)} if(exn[1] === Help) - {var msg$1=exn[2];caml_call1(printf(_bj_),msg$1);return exit(0)} + {var msg$1=exn[2];caml_call1(printf(_bh_),msg$1);return exit(0)} throw exn}} function parse_expand(l,f,msg) {try @@ -22246,14 +22731,14 @@ argv=[0,caml_sys_argv(0)], spec=[0,l], current$0=[0,current[1]], - _p7_=parse_and_expand_argv_dynamic(current$0,argv,spec,f,msg); - return _p7_} + _p3_=parse_and_expand_argv_dynamic(current$0,argv,spec,f,msg); + return _p3_} catch(exn) {exn = caml_wrap_exception(exn); if(exn[1] === Bad) - {var msg$0=exn[2];caml_call1(eprintf(_bk_),msg$0);return exit(2)} + {var msg$0=exn[2];caml_call1(eprintf(_bi_),msg$0);return exit(2)} if(exn[1] === Help) - {var msg$1=exn[2];caml_call1(printf(_bl_),msg$1);return exit(0)} + {var msg$1=exn[2];caml_call1(printf(_bj_),msg$1);return exit(0)} throw exn}} function second_word(s) {var len=caml_ml_string_length(s); @@ -22266,17 +22751,17 @@ return n$0}} try {var n$0=index$0(s,9)} - catch(_p5_) - {_p5_ = caml_wrap_exception(_p5_); - if(_p5_ === Not_found) + catch(_p1_) + {_p1_ = caml_wrap_exception(_p1_); + if(_p1_ === Not_found) {try {var n=index$0(s,32)} - catch(_p6_) - {_p6_ = caml_wrap_exception(_p6_); - if(_p6_ === Not_found)return len; - throw _p6_} + catch(_p2_) + {_p2_ = caml_wrap_exception(_p2_); + if(_p2_ === Not_found)return len; + throw _p2_} return loop(n + 1 | 0)} - throw _p5_} + throw _p1_} return loop(n$0 + 1 | 0)} function max_arg_len(cur,param) {var doc=param[3],spec=param[2],kwd=param[1]; @@ -22297,22 +22782,22 @@ len$0=min$1(len,limit); return map$4 (function(ksd) - {var _p3_=ksd[1],_p4_=ksd[2]; + {var _pZ_=ksd[1],_p0_=ksd[2]; if(caml_string_notequal(ksd[3],cst$58)) - {if(11 === _p4_[0]) + {if(11 === _p0_[0]) {var msg$0=ksd[3], cutcol$0=second_word(msg$0), spaces$0=make$1(max$1(0,len$0 - cutcol$0 | 0) + 3 | 0,32); return [0, - _p3_, - _p4_, + _pZ_, + _p0_, cat(cst$59,cat(spaces$0,replace_leading_tab(msg$0)))]} var msg=ksd[3], spec=ksd[2], cutcol=second_word(msg), - kwd_len=caml_ml_string_length(_p3_), + kwd_len=caml_ml_string_length(_pZ_), diff=(len$0 - kwd_len | 0) - cutcol | 0; if(0 < diff) {var @@ -22320,8 +22805,8 @@ prefix=sub$0(replace_leading_tab(msg),0,cutcol), suffix= sub$0(msg,cutcol,caml_ml_string_length(msg) - cutcol | 0); - return [0,_p3_,spec,cat(prefix,cat(spaces,suffix))]} - return [0,_p3_,spec,replace_leading_tab(msg)]} + return [0,_pZ_,spec,cat(prefix,cat(spaces,suffix))]} + return [0,_pZ_,spec,replace_leading_tab(msg)]} return ksd}, completed)} function read_aux(trim,sep,file) @@ -22331,9 +22816,9 @@ if(trim) {var len=caml_ml_string_length(s),switch$0=0; if(0 < len && 13 === caml_string_get(s,len - 1 | 0)) - {var _p2_=sub$0(s,0,len - 1 | 0);switch$0 = 1} - if(! switch$0)var _p2_=s; - var word=_p2_} + {var _pY_=sub$0(s,0,len - 1 | 0);switch$0 = 1} + if(! switch$0)var _pY_=s; + var word=_pY_} else var word=s; words[1] = [0,word,words[1]]; @@ -22343,25 +22828,25 @@ {var c=caml_ml_input_char(ic); if(c === sep)stash(0);else add_char(buf,c); continue}} - catch(_p1_) - {_p1_ = caml_wrap_exception(_p1_); - if(_p1_ === End_of_file) + catch(_pX_) + {_pX_ = caml_wrap_exception(_pX_); + if(_pX_ === End_of_file) {if(0 < buf[2])stash(0); caml_ml_close_channel(ic); return of_list(rev(words[1]))} - throw _p1_}} - var _bm_=10,_bn_=1; - function read_arg(_p0_){return read_aux(_bn_,_bm_,_p0_)} - var _bo_=0,_bp_=0; - function read_arg0(_pZ_){return read_aux(_bp_,_bo_,_pZ_)} + throw _pX_}} + var _bk_=10,_bl_=1; + function read_arg(_pW_){return read_aux(_bl_,_bk_,_pW_)} + var _bm_=0,_bn_=0; + function read_arg0(_pV_){return read_aux(_bn_,_bm_,_pV_)} function write_aux(sep,file,args) {var oc=open_bin(file); - iter$5(function(s){return caml_call2(fprintf(oc,_bq_),s,sep)},args); + iter$5(function(s){return caml_call2(fprintf(oc,_bo_),s,sep)},args); return close(oc)} - var _br_=10; - function write_arg(_pX_,_pY_){return write_aux(_br_,_pX_,_pY_)} - var _bs_=0; - function write_arg0(_pV_,_pW_){return write_aux(_bs_,_pV_,_pW_)} + var _bp_=10; + function write_arg(_pT_,_pU_){return write_aux(_bp_,_pT_,_pU_)} + var _bq_=0; + function write_arg0(_pR_,_pS_){return write_aux(_bq_,_pR_,_pS_)} var Stdlib_Arg= [0, @@ -22391,13 +22876,13 @@ {var f=x[1 + i]; return is_block(f) ?caml_obj_tag(f) === 252 - ?caml_call1(sprintf(_bt_),f) + ?caml_call1(sprintf(_br_),f) :caml_obj_tag(f) === 253?to_string(f):cst$60 - :caml_call1(sprintf(_bu_),f)} + :caml_call1(sprintf(_bs_),f)} function other_fields(x,i) {if(x.length - 1 <= i)return cst$61; - var _pT_=other_fields(x,i + 1 | 0),_pU_=field(x,i); - return caml_call2(sprintf(_bv_),_pU_,_pT_)} + var _pP_=other_fields(x,i + 1 | 0),_pQ_=field(x,i); + return caml_call2(sprintf(_bt_),_pQ_,_pP_)} function use_printers(x) {function conv(param) {var param$0=param; @@ -22406,7 +22891,7 @@ {var tl=param$0[2],hd=param$0[1]; try {var switch$0=0,val=caml_call1(hd,x);switch$0 = 1} - catch(_pS_){} + catch(_pO_){} if(switch$0 && val){var s=val[1];return [0,s]} var param$0=tl; continue} @@ -22454,15 +22939,15 @@ {var constructor=x[1][1],match=x.length - 1; if(2 < match >>> 0) var - _pO_=other_fields(x,2), - _pP_=field(x,1), - _pR_=caml_call2(sprintf(_bw_),_pP_,_pO_); + _pK_=other_fields(x,2), + _pL_=field(x,1), + _pN_=caml_call2(sprintf(_bu_),_pL_,_pK_); else switch(match) - {case 0:var _pR_=cst$62;break; - case 1:var _pR_=cst$63;break; - default:var _pQ_=field(x,1),_pR_=caml_call1(sprintf(_bx_),_pQ_)} - return cat(constructor,_pR_)} + {case 0:var _pN_=cst$62;break; + case 1:var _pN_=cst$63;break; + default:var _pM_=field(x,1),_pN_=caml_call1(sprintf(_bv_),_pM_)} + return cat(constructor,_pN_)} return x[1]} function to_string$6(e) {var match=use_printers(e); @@ -22470,21 +22955,21 @@ return to_string_default(e)} function print(fct,arg) {try - {var _pN_=caml_call1(fct,arg);return _pN_} + {var _pJ_=caml_call1(fct,arg);return _pJ_} catch(x) {x = caml_wrap_exception(x); - var _pM_=to_string$6(x); - caml_call1(eprintf(_by_),_pM_); + var _pI_=to_string$6(x); + caml_call1(eprintf(_bw_),_pI_); caml_ml_flush(stderr); throw x}} function catch$0(fct,arg) {try - {var _pL_=caml_call1(fct,arg);return _pL_} + {var _pH_=caml_call1(fct,arg);return _pH_} catch(x) {x = caml_wrap_exception(x); caml_ml_flush(stdout); - var _pK_=to_string$6(x); - caml_call1(eprintf(_bz_),_pK_); + var _pG_=to_string$6(x); + caml_call1(eprintf(_bx_),_pG_); return exit(2)}} function raw_backtrace_entries(bt){return bt} function convert_raw_backtrace(bt) @@ -22496,45 +22981,45 @@ :0 === pos?cst_Raised_by_primitive_operat:cst_Called_from} if(0 === slot[0]) {var - _pC_=slot[5], - _pD_=slot[4], - _pE_=slot[3], - _pF_=slot[6]?cst_inlined:cst$64, - _pG_=slot[2], - _pH_=slot[7], - _pI_=info(slot[1]); + _py_=slot[5], + _pz_=slot[4], + _pA_=slot[3], + _pB_=slot[6]?cst_inlined:cst$64, + _pC_=slot[2], + _pD_=slot[7], + _pE_=info(slot[1]); return [0, - caml_call7(sprintf(_bA_),_pI_,_pH_,_pG_,_pF_,_pE_,_pD_,_pC_)]} + caml_call7(sprintf(_by_),_pE_,_pD_,_pC_,_pB_,_pA_,_pz_,_py_)]} if(slot[1])return 0; - var _pJ_=info(0); - return [0,caml_call1(sprintf(_bB_),_pJ_)]} + var _pF_=info(0); + return [0,caml_call1(sprintf(_bz_),_pF_)]} function print_raw_backtrace(outchan,raw_backtrace) {var backtrace=convert_raw_backtrace(raw_backtrace); if(backtrace) - {var a=backtrace[1],_pA_=a.length - 1 - 1 | 0,_pz_=0; - if(! (_pA_ < 0)) - {var i=_pz_; + {var a=backtrace[1],_pw_=a.length - 1 - 1 | 0,_pv_=0; + if(! (_pw_ < 0)) + {var i=_pv_; for(;;) {var match=format_backtrace_slot(i,caml_check_bound(a,i)[1 + i]); - if(match){var str=match[1];caml_call1(fprintf(outchan,_bC_),str)} - var _pB_=i + 1 | 0; - if(_pA_ !== i){var i=_pB_;continue} + if(match){var str=match[1];caml_call1(fprintf(outchan,_bA_),str)} + var _px_=i + 1 | 0; + if(_pw_ !== i){var i=_px_;continue} break}} return 0} - return fprintf(outchan,_bD_)} + return fprintf(outchan,_bB_)} function print_backtrace(outchan) {return print_raw_backtrace(outchan,caml_get_exception_raw_backtra(0))} function raw_backtrace_to_string(raw_backtrace) {var backtrace=convert_raw_backtrace(raw_backtrace); if(backtrace) - {var a=backtrace[1],b=create$2(1024),_px_=a.length - 1 - 1 | 0,_pw_=0; - if(! (_px_ < 0)) - {var i=_pw_; + {var a=backtrace[1],b=create$2(1024),_pt_=a.length - 1 - 1 | 0,_ps_=0; + if(! (_pt_ < 0)) + {var i=_ps_; for(;;) {var match=format_backtrace_slot(i,caml_check_bound(a,i)[1 + i]); - if(match){var str=match[1];caml_call1(bprintf(b,_bE_),str)} - var _py_=i + 1 | 0; - if(_px_ !== i){var i=_py_;continue} + if(match){var str=match[1];caml_call1(bprintf(b,_bC_),str)} + var _pu_=i + 1 | 0; + if(_pt_ !== i){var i=_pu_;continue} break}} return contents(b)} return cst_Program_not_linked_with_g_} @@ -22553,14 +23038,14 @@ {var backtrace=match[1],i$1=backtrace.length - 1 - 1 | 0,i=i$1; for(;;) {if(-1 === i) - var _pv_=0; + var _pr_=0; else {var param=caml_check_bound(backtrace,i)[1 + i], - _pu_=0 === param[0]?1:0; - if(! _pu_){var i$0=i - 1 | 0,i=i$0;continue} - var _pv_=_pu_} - return _pv_?[0,backtrace]:0}} + _pq_=0 === param[0]?1:0; + if(! _pq_){var i$0=i - 1 | 0,i=i$0;continue} + var _pr_=_pq_} + return _pr_?[0,backtrace]:0}} return 0} function backtrace_slots_of_raw_entry(entry) {return backtrace_slots([0,entry])} @@ -22573,21 +23058,21 @@ old_printers=printers[1], new_printers=[0,fn,old_printers], success=compare_and_set(printers,old_printers,new_printers), - _pt_=1 - success; - if(_pt_)continue; - return _pt_}} + _pp_=1 - success; + if(_pp_)continue; + return _pp_}} function exn_slot(x){return 0 === caml_obj_tag(x)?x[1]:x} function exn_slot_id(x){var slot=exn_slot(x);return slot[2]} function exn_slot_name(x){var slot=exn_slot(x);return slot[1]} - var errors=_bF_.slice(); + var errors=_bD_.slice(); function default_uncaught_exception_han(exn,raw_backtrace) - {var _pr_=to_string$6(exn); - caml_call1(eprintf(_bG_),_pr_); + {var _pn_=to_string$6(exn); + caml_call1(eprintf(_bE_),_pn_); print_raw_backtrace(stderr,raw_backtrace); var status=runtime.caml_ml_debug_info_status(0); if(status < 0) - {var _ps_=abs(status); - prerr_endline(caml_check_bound(errors,_ps_)[1 + _ps_])} + {var _po_=abs(status); + prerr_endline(caml_check_bound(errors,_po_)[1 + _po_])} return caml_ml_flush(stderr)} var uncaught_exception_handler=[0,default_uncaught_exception_han]; function set_uncaught_exception_handler(fn) @@ -22599,46 +23084,46 @@ {var raw_backtrace= debugger_in_use?empty_backtrace:caml_get_exception_raw_backtra(0); - try {do_at_exit(0)}catch(_pq_){} + try {do_at_exit(0)}catch(_pm_){} try {var - _pm_=caml_call2(uncaught_exception_handler[1],exn,raw_backtrace), - _pl_=_pm_} + _pi_=caml_call2(uncaught_exception_handler[1],exn,raw_backtrace), + _ph_=_pi_} catch(exn$0) {exn$0 = caml_wrap_exception(exn$0); var raw_backtrace$0=caml_get_exception_raw_backtra(0), - _pj_=to_string$6(exn); - caml_call1(eprintf(_bH_),_pj_); + _pf_=to_string$6(exn); + caml_call1(eprintf(_bF_),_pf_); print_raw_backtrace(stderr,raw_backtrace); - var _pk_=to_string$6(exn$0); - caml_call1(eprintf(_bI_),_pk_); + var _pg_=to_string$6(exn$0); + caml_call1(eprintf(_bG_),_pg_); print_raw_backtrace(stderr,raw_backtrace$0); - var _pl_=caml_ml_flush(stderr)} - var _pn_=_pl_} - catch(_pp_) - {_pp_ = caml_wrap_exception(_pp_); - if(_pp_ !== Out_of_memory)throw _pp_; - var _pn_=prerr_endline(cst_Fatal_error_out_of_memory_)} - return _pn_} - catch(_po_){return 0}} + var _ph_=caml_ml_flush(stderr)} + var _pj_=_ph_} + catch(_pl_) + {_pl_ = caml_wrap_exception(_pl_); + if(_pl_ !== Out_of_memory)throw _pl_; + var _pj_=prerr_endline(cst_Fatal_error_out_of_memory_)} + return _pj_} + catch(_pk_){return 0}} caml_register_named_value (caml_string_of_jsbytes("Printexc.handle_uncaught_exception"), handle_uncaught_exception); - function _bJ_(_pi_){return runtime.caml_raw_backtrace_next_slot(_pi_)} - function _bK_(_ph_){return runtime.caml_convert_raw_backtrace_slot(_ph_)} - function _bL_(_pg_,_pf_) - {return runtime.caml_raw_backtrace_slot(_pg_,_pf_)} + function _bH_(_pe_){return runtime.caml_raw_backtrace_next_slot(_pe_)} + function _bI_(_pd_){return runtime.caml_convert_raw_backtrace_slot(_pd_)} + function _bJ_(_pc_,_pb_) + {return runtime.caml_raw_backtrace_slot(_pc_,_pb_)} var - _bM_= + _bK_= [0, backtrace_slot_is_raise, backtrace_slot_is_inline, backtrace_slot_location, backtrace_slot_defname, format_backtrace_slot]; - function _bN_(_pe_){return caml_get_exception_raw_backtra(_pe_)} - function _bO_(_pd_){return runtime.caml_backtrace_status(_pd_)} + function _bL_(_pa_){return caml_get_exception_raw_backtra(_pa_)} + function _bM_(_o$_){return runtime.caml_backtrace_status(_o$_)} var Stdlib_Printexc= [0, @@ -22648,23 +23133,23 @@ catch$0, print_backtrace, get_backtrace, - function(_pc_){return runtime.caml_record_backtrace(_pc_)}, - _bO_, + function(_o__){return runtime.caml_record_backtrace(_o__)}, + _bM_, register_printer, use_printers, raw_backtrace_entries, - _bN_, + _bL_, print_raw_backtrace, raw_backtrace_to_string, default_uncaught_exception_han, set_uncaught_exception_handler, backtrace_slots, backtrace_slots_of_raw_entry, - _bM_, - raw_backtrace_length, - _bL_, _bK_, + raw_backtrace_length, _bJ_, + _bI_, + _bH_, exn_slot_id, exn_slot_name]; caml_register_global(811,Stdlib_Printexc,"Stdlib__Printexc"); @@ -22683,7 +23168,7 @@ function protect(finally$0,work) {function finally_no_exn(param) {try - {var _pb_=caml_call1(finally$0,0);return _pb_} + {var _o9_=caml_call1(finally$0,0);return _o9_} catch(e) {e = caml_wrap_exception(e); var bt=caml_get_exception_raw_backtra(0),exn=[0,Finally_raised,e]; @@ -22702,47 +23187,47 @@ var Stdlib_Fun=[0,const$0,flip,negate,protect,Finally_raised]; caml_register_global(812,Stdlib_Fun,"Stdlib__Fun"); function print_stat(c) - {var st=runtime.caml_gc_stat(0),_oV_=st[4]; - caml_call1(fprintf(c,_bP_),_oV_); - var _oW_=st[5]; - caml_call1(fprintf(c,_bQ_),_oW_); - var _oX_=st[14]; - caml_call1(fprintf(c,_bR_),_oX_); - var _oY_=st[17]; - caml_call1(fprintf(c,_bS_),_oY_); - fprintf(c,_bT_); + {var st=runtime.caml_gc_stat(0),_oR_=st[4]; + caml_call1(fprintf(c,_bN_),_oR_); + var _oS_=st[5]; + caml_call1(fprintf(c,_bO_),_oS_); + var _oT_=st[14]; + caml_call1(fprintf(c,_bP_),_oT_); + var _oU_=st[17]; + caml_call1(fprintf(c,_bQ_),_oU_); + fprintf(c,_bR_); var - _oZ_=st[1], - l1=caml_ml_string_length(caml_call1(sprintf(_bU_),_oZ_)), - _o0_=st[1]; - caml_call2(fprintf(c,_bV_),l1,_o0_); - var _o1_=st[2]; - caml_call2(fprintf(c,_bW_),l1,_o1_); - var _o2_=st[3]; - caml_call2(fprintf(c,_bX_),l1,_o2_); - fprintf(c,_bY_); + _oV_=st[1], + l1=caml_ml_string_length(caml_call1(sprintf(_bS_),_oV_)), + _oW_=st[1]; + caml_call2(fprintf(c,_bT_),l1,_oW_); + var _oX_=st[2]; + caml_call2(fprintf(c,_bU_),l1,_oX_); + var _oY_=st[3]; + caml_call2(fprintf(c,_bV_),l1,_oY_); + fprintf(c,_bW_); var - _o3_=st[15], - l2=caml_ml_string_length(caml_call1(sprintf(_bZ_),_o3_)), - _o4_=st[15]; - caml_call2(fprintf(c,_b0_),l2,_o4_); - var _o5_=st[6]; - caml_call2(fprintf(c,_b1_),l2,_o5_); - var _o6_=st[8]; - caml_call2(fprintf(c,_b2_),l2,_o6_); - var _o7_=st[10]; - caml_call2(fprintf(c,_b3_),l2,_o7_); - var _o8_=st[12]; - caml_call2(fprintf(c,_b4_),l2,_o8_); - var _o9_=st[13]; - caml_call2(fprintf(c,_b5_),l2,_o9_); - fprintf(c,_b6_); - var _o__=st[9]; - caml_call1(fprintf(c,_b7_),_o__); - var _o$_=st[11]; - caml_call1(fprintf(c,_b8_),_o$_); - var _pa_=st[7]; - return caml_call1(fprintf(c,_b9_),_pa_)} + _oZ_=st[15], + l2=caml_ml_string_length(caml_call1(sprintf(_bX_),_oZ_)), + _o0_=st[15]; + caml_call2(fprintf(c,_bY_),l2,_o0_); + var _o1_=st[6]; + caml_call2(fprintf(c,_bZ_),l2,_o1_); + var _o2_=st[8]; + caml_call2(fprintf(c,_b0_),l2,_o2_); + var _o3_=st[10]; + caml_call2(fprintf(c,_b1_),l2,_o3_); + var _o4_=st[12]; + caml_call2(fprintf(c,_b2_),l2,_o4_); + var _o5_=st[13]; + caml_call2(fprintf(c,_b3_),l2,_o5_); + fprintf(c,_b4_); + var _o6_=st[9]; + caml_call1(fprintf(c,_b5_),_o6_); + var _o7_=st[11]; + caml_call1(fprintf(c,_b6_),_o7_); + var _o8_=st[7]; + return caml_call1(fprintf(c,_b7_),_o8_)} function allocated_bytes(param) {var match=runtime.caml_gc_counters(0), @@ -22752,32 +23237,31 @@ return (mi + ma - pro) * 4} function create_alarm(f){return [0,1]} function delete_alarm(a){a[1] = 0;return 0} + function _b8_(param){return 0} + function _b9_(param){return 0} function _b__(param){return 0} function _b$_(param){return 0} - function _ca_(param){return 0} - function _cb_(param){return 0} - var null_tracker=[0,function(param){return 0},_cb_,_ca_,_b$_,_b__]; + var null_tracker=[0,function(param){return 0},_b$_,_b__,_b9_,_b8_]; function start(sampling_rate,opt,tracker) {if(opt) var sth=opt[1],callstack_size=sth; else var callstack_size=max_int; return runtime.caml_memprof_start(sampling_rate,callstack_size,tracker)} - var _cc_=[0,null_tracker,start,runtime.caml_memprof_stop]; - function _cd_(_oU_){return runtime.caml_final_release(_oU_)} - function _ce_(_oT_,_oS_) - {return runtime.caml_final_register_called_without_value(_oT_,_oS_)} + var _ca_=[0,null_tracker,start,runtime.caml_memprof_stop]; + function _cb_(_oQ_){return runtime.caml_final_release(_oQ_)} var + _cc_=runtime.caml_final_register_called_without_value, Stdlib_Gc= [0, print_stat, allocated_bytes, - function(_oR_,_oQ_){return runtime.caml_final_register(_oR_,_oQ_)}, - _ce_, - _cd_, + function(_oP_,_oO_){return runtime.caml_final_register(_oP_,_oO_)}, + _cc_, + _cb_, create_alarm, delete_alarm, - _cc_]; + _ca_]; caml_register_global(813,Stdlib_Gc,"Stdlib__Gc"); function string(str) {return caml_md5_string(str,0,caml_ml_string_length(str))} @@ -22807,7 +23291,7 @@ return d} function output$0(chan,digest){return output_string(chan,digest)} function input$0(chan){return really_input_string(chan,16)} - function char_hex(n){var _oP_=10 <= n?87:48;return n + _oP_ | 0} + function char_hex(n){var _oN_=10 <= n?87:48;return n + _oN_ | 0} function to_hex(d) {if(16 !== caml_ml_string_length(d))invalid_arg(cst_Digest_to_hex); var result=caml_create_bytes(32),i=0; @@ -22815,8 +23299,8 @@ {var x=caml_string_get(d,i); caml_bytes_unsafe_set(result,i * 2 | 0,char_hex(x >>> 4 | 0)); caml_bytes_unsafe_set(result,(i * 2 | 0) + 1 | 0,char_hex(x & 15)); - var _oO_=i + 1 | 0; - if(15 !== i){var i=_oO_;continue} + var _oM_=i + 1 | 0; + if(15 !== i){var i=_oM_;continue} return caml_string_of_bytes(result)}} function from_hex(s) {if(32 !== caml_ml_string_length(s))invalid_arg(cst_Digest_from_hex); @@ -22831,11 +23315,11 @@ throw [0,Invalid_argument,cst_Digest_from_hex$0]} var result=caml_create_bytes(16),i=0; for(;;) - {var i$0=2 * i | 0,_oM_=digit(caml_string_get(s,i$0 + 1 | 0)); + {var i$0=2 * i | 0,_oK_=digit(caml_string_get(s,i$0 + 1 | 0)); caml_bytes_set - (result,i,chr((digit(caml_string_get(s,i$0)) << 4) + _oM_ | 0)); - var _oN_=i + 1 | 0; - if(15 !== i){var i=_oN_;continue} + (result,i,chr((digit(caml_string_get(s,i$0)) << 4) + _oK_ | 0)); + var _oL_=i + 1 | 0; + if(15 !== i){var i=_oL_;continue} return caml_string_of_bytes(result)}} var Stdlib_Digest= @@ -22859,11 +23343,11 @@ {var seed$0=0 === seed.length - 1?[0,0]:seed,l=seed$0.length - 1,i$0=0; for(;;) {caml_check_bound(s[1],i$0)[1 + i$0] = i$0; - var _oL_=i$0 + 1 | 0; - if(54 !== i$0){var i$0=_oL_;continue} - var accu=[0,cst_x$1],_oH_=54 + max$1(55,l) | 0,_oG_=0; - if(! (_oH_ < 0)) - {var i=_oG_; + var _oJ_=i$0 + 1 | 0; + if(54 !== i$0){var i$0=_oJ_;continue} + var accu=[0,cst_x$1],_oF_=54 + max$1(55,l) | 0,_oE_=0; + if(! (_oF_ < 0)) + {var i=_oE_; for(;;) {var j=i % 55 | 0, @@ -22871,15 +23355,15 @@ x=caml_check_bound(seed$0,k)[1 + k]; accu[1] = string(cat(accu[1],caml_string_of_jsbytes("" + x))); var - _oI_=accu[1], - _oC_=caml_string_get(_oI_,3) << 24, - _oD_=caml_string_get(_oI_,2) << 16, - _oE_=caml_string_get(_oI_,1) << 8, - _oF_=((caml_string_get(_oI_,0) + _oE_ | 0) + _oD_ | 0) + _oC_ | 0, - _oJ_=(caml_check_bound(s[1],j)[1 + j] ^ _oF_) & 1073741823; - caml_check_bound(s[1],j)[1 + j] = _oJ_; - var _oK_=i + 1 | 0; - if(_oH_ !== i){var i=_oK_;continue} + _oG_=accu[1], + _oA_=caml_string_get(_oG_,3) << 24, + _oB_=caml_string_get(_oG_,2) << 16, + _oC_=caml_string_get(_oG_,1) << 8, + _oD_=((caml_string_get(_oG_,0) + _oC_ | 0) + _oB_ | 0) + _oA_ | 0, + _oH_=(caml_check_bound(s[1],j)[1 + j] ^ _oD_) & 1073741823; + caml_check_bound(s[1],j)[1 + j] = _oH_; + var _oI_=i + 1 | 0; + if(_oF_ !== i){var i=_oI_;continue} break}} s[2] = 0; return 0}} @@ -22890,18 +23374,18 @@ function bits(s) {s[2] = (s[2] + 1 | 0) % 55 | 0; var - _oz_=s[2], - curval=caml_check_bound(s[1],_oz_)[1 + _oz_], - _oA_=(s[2] + 24 | 0) % 55 | 0, + _ox_=s[2], + curval=caml_check_bound(s[1],_ox_)[1 + _ox_], + _oy_=(s[2] + 24 | 0) % 55 | 0, newval= - caml_check_bound(s[1],_oA_)[1 + _oA_] + caml_check_bound(s[1],_oy_)[1 + _oy_] + (curval ^ (curval >>> 25 | 0) & 31) | 0, newval30=newval & 1073741823, - _oB_=s[2]; - caml_check_bound(s[1],_oB_)[1 + _oB_] = newval30; + _oz_=s[2]; + caml_check_bound(s[1],_oz_)[1 + _oz_] = newval30; return newval30} function intaux(s,n) {for(;;) @@ -22945,7 +23429,7 @@ continue; return v}} function int64(s,bound) - {if(caml_lessequal(bound,_cg_))return invalid_arg(cst_Random_int64); + {if(caml_lessequal(bound,_ce_))return invalid_arg(cst_Random_int64); for(;;) {var b1=caml_int64_of_int32(bits(s)), @@ -22956,7 +23440,7 @@ if (caml_greaterthan (caml_int64_sub(r,v), - caml_int64_add(caml_int64_sub(max_int$2,bound),_cf_))) + caml_int64_add(caml_int64_sub(max_int$2,bound),_cd_))) continue; return v}} function nativeint(s,bound){return int32(s,bound)} @@ -22976,7 +23460,7 @@ caml_int64_or (caml_int64_shift_left(b2,21),caml_int64_shift_left(b3,42)))} function nativebits(s){return bits32(s)} - var default$0=[0,_ch_.slice(),0]; + var default$0=[0,_cf_.slice(),0]; function bits$0(param){return bits(default$0)} function int$1(bound){return int$0(default$0,bound)} function full_int$0(bound){return full_int(default$0,bound)} @@ -22994,7 +23478,7 @@ function get_state(param){return copy$5(default$0)} function set_state(s){return assign(default$0,s)} var - _ci_= + _cg_= [0, make$3, make_self_init, @@ -23026,31 +23510,31 @@ bits32$0, bits64$0, nativebits$0, - _ci_, + _cg_, get_state, set_state]; caml_register_global(815,Stdlib_Random,"Stdlib__Random"); function ongoing_traversal(h) - {var _ox_=h.length - 1 < 4?1:0,_oy_=_ox_ || (h[4] < 0?1:0);return _oy_} + {var _ov_=h.length - 1 < 4?1:0,_ow_=_ov_ || (h[4] < 0?1:0);return _ow_} function flip_ongoing_traversal(h){h[4] = - h[4] | 0;return 0} try - {var _c5_=caml_sys_getenv(cst_OCAMLRUNPARAM),params=_c5_} - catch(_ov_) - {_ov_ = caml_wrap_exception(_ov_); - if(_ov_ !== Not_found)throw _ov_; + {var _c3_=caml_sys_getenv(cst_OCAMLRUNPARAM),params=_c3_} + catch(_ot_) + {_ot_ = caml_wrap_exception(_ot_); + if(_ot_ !== Not_found)throw _ot_; try - {var _c4_=caml_sys_getenv(cst_CAMLRUNPARAM),_cj_=_c4_} - catch(_ow_) - {_ow_ = caml_wrap_exception(_ow_); - if(_ow_ !== Not_found)throw _ow_; - var _cj_=cst$66} - var params=_cj_} + {var _c2_=caml_sys_getenv(cst_CAMLRUNPARAM),_ch_=_c2_} + catch(_ou_) + {_ou_ = caml_wrap_exception(_ou_); + if(_ou_ !== Not_found)throw _ou_; + var _ch_=cst$66} + var params=_ch_} var randomized_default=contains$0(params,82), randomized=[0,randomized_default]; function randomize(param){randomized[1] = 1;return 0} function is_randomized(param){return randomized[1]} - var prng=[246,function(_ou_){return caml_call1(_ci_[2],0)}]; + var prng=[246,function(_os_){return caml_call1(_cg_[2],0)}]; function power_2_above(x,n) {var x$0=x; for(;;) @@ -23063,15 +23547,15 @@ var s=power_2_above(16,initial_size); if(random) var - _os_=caml_obj_tag(prng), - _ot_=250 === _os_?prng[1]:246 === _os_?force_lazy_block(prng):prng, - seed=caml_call1(_ci_[4],_ot_); + _oq_=caml_obj_tag(prng), + _or_=250 === _oq_?prng[1]:246 === _oq_?force_lazy_block(prng):prng, + seed=caml_call1(_cg_[4],_or_); else var seed=0; return [0,0,caml_make_vect(s,0),seed,s]} function clear$2(h) - {var _or_=0 < h[1]?1:0; - return _or_?(h[1] = 0,fill$0(h[2],0,h[2].length - 1,0)):_or_} + {var _op_=0 < h[1]?1:0; + return _op_?(h[1] = 0,fill$0(h[2],0,h[2].length - 1,0)):_op_} function reset$0(h) {var len=h[2].length - 1; if(4 <= h.length - 1 && len !== abs(h[4])) @@ -23099,17 +23583,17 @@ return prec$0}} return 0} function copy$6(init) - {var _oo_=init[4],_op_=init[3],_oq_=map$7(copy_bucketlist,init[2]); - return [0,init[1],_oq_,_op_,_oo_]} + {var _om_=init[4],_on_=init[3],_oo_=map$7(copy_bucketlist,init[2]); + return [0,init[1],_oo_,_on_,_om_]} function length$5(h){return h[1]} function insert_all_buckets(indexfun,inplace,odata,ndata) {var nsize=ndata.length - 1, ndata_tail=caml_make_vect(nsize,0), - _oi_=odata.length - 1 - 1 | 0, - _oh_=0; - if(! (_oi_ < 0)) - {var i$0=_oh_; + _og_=odata.length - 1 - 1 | 0, + _of_=0; + if(! (_og_ < 0)) + {var i$0=_of_; a: for(;;) {var cell$1=caml_check_bound(odata,i$0)[1 + i$0],cell=cell$1; @@ -23129,35 +23613,35 @@ caml_check_bound(ndata_tail,nidx)[1 + nidx] = cell$0; var cell=next; continue} - var _on_=i$0 + 1 | 0; - if(_oi_ !== i$0){var i$0=_on_;continue a} + var _ol_=i$0 + 1 | 0; + if(_og_ !== i$0){var i$0=_ol_;continue a} break} break}} if(inplace) - {var _ok_=nsize - 1 | 0,_oj_=0; - if(! (_ok_ < 0)) - {var i=_oj_; + {var _oi_=nsize - 1 | 0,_oh_=0; + if(! (_oi_ < 0)) + {var i=_oh_; for(;;) {var match$0=caml_check_bound(ndata_tail,i)[1 + i]; if(match$0)match$0[3] = 0; - var _om_=i + 1 | 0; - if(_ok_ !== i){var i=_om_;continue} + var _ok_=i + 1 | 0; + if(_oi_ !== i){var i=_ok_;continue} break}} - var _ol_=0} + var _oj_=0} else - var _ol_=inplace; - return _ol_} + var _oj_=inplace; + return _oj_} function resize$0(indexfun,h) {var odata=h[2], osize=odata.length - 1, nsize=osize * 2 | 0, - _og_=nsize < max_array_length?1:0; - if(_og_) + _oe_=nsize < max_array_length?1:0; + if(_oe_) {var ndata=caml_make_vect(nsize,0),inplace=1 - ongoing_traversal(h); h[2] = ndata; return insert_all_buckets(caml_call1(indexfun,h),inplace,odata,ndata)} - return _og_} + return _oe_} function iter$10(f,h) {function do_bucket(param) {var param$0=param; @@ -23171,16 +23655,16 @@ var old_trav=ongoing_traversal(h); if(1 - old_trav)flip_ongoing_traversal(h); try - {var d=h[2],_oc_=d.length - 1 - 1 | 0,_ob_=0; - if(! (_oc_ < 0)) - {var i=_ob_; + {var d=h[2],_oa_=d.length - 1 - 1 | 0,_n$_=0; + if(! (_oa_ < 0)) + {var i=_n$_; for(;;) {do_bucket(caml_check_bound(d,i)[1 + i]); - var _of_=i + 1 | 0; - if(_oc_ !== i){var i=_of_;continue} + var _od_=i + 1 | 0; + if(_oa_ !== i){var i=_od_;continue} break}} - var _od_=1 - old_trav,_oe_=_od_?flip_ongoing_traversal(h):_od_; - return _oe_} + var _ob_=1 - old_trav,_oc_=_ob_?flip_ongoing_traversal(h):_ob_; + return _oc_} catch(exn) {exn = caml_wrap_exception(exn); if(old_trav)throw exn; @@ -23214,16 +23698,16 @@ {var d=h[2],old_trav=ongoing_traversal(h); if(1 - old_trav)flip_ongoing_traversal(h); try - {var _n9_=d.length - 1 - 1 | 0,_n8_=0; - if(! (_n9_ < 0)) - {var i=_n8_; + {var _n7_=d.length - 1 - 1 | 0,_n6_=0; + if(! (_n7_ < 0)) + {var i=_n6_; for(;;) {filter_map_inplace_bucket(f,h,i,0,caml_check_bound(h[2],i)[1 + i]); - var _oa_=i + 1 | 0; - if(_n9_ !== i){var i=_oa_;continue} + var _n__=i + 1 | 0; + if(_n7_ !== i){var i=_n__;continue} break}} - var _n__=1 - old_trav,_n$_=_n__?flip_ongoing_traversal(h):_n__; - return _n$_} + var _n8_=1 - old_trav,_n9_=_n8_?flip_ongoing_traversal(h):_n8_; + return _n9_} catch(exn) {exn = caml_wrap_exception(exn); if(old_trav)throw exn; @@ -23246,18 +23730,18 @@ var old_trav=ongoing_traversal(h); if(1 - old_trav)flip_ongoing_traversal(h); try - {var d=h[2],accu=[0,init],_n4_=d.length - 1 - 1 | 0,_n3_=0; - if(! (_n4_ < 0)) - {var i=_n3_; + {var d=h[2],accu=[0,init],_n2_=d.length - 1 - 1 | 0,_n1_=0; + if(! (_n2_ < 0)) + {var i=_n1_; for(;;) - {var _n6_=accu[1]; - accu[1] = do_bucket(caml_check_bound(d,i)[1 + i],_n6_); - var _n7_=i + 1 | 0; - if(_n4_ !== i){var i=_n7_;continue} + {var _n4_=accu[1]; + accu[1] = do_bucket(caml_check_bound(d,i)[1 + i],_n4_); + var _n5_=i + 1 | 0; + if(_n2_ !== i){var i=_n5_;continue} break}} if(1 - old_trav)flip_ongoing_traversal(h); - var _n5_=accu[1]; - return _n5_} + var _n3_=accu[1]; + return _n3_} catch(exn) {exn = caml_wrap_exception(exn); if(old_trav)throw exn; @@ -23276,21 +23760,21 @@ return accu$0}} function stats(h) {var - _nZ_=h[2], - _n0_=0, + _nX_=h[2], + _nY_=0, mbl= fold_left$3 - (function(m,b){return max$1(m,bucket_length(0,b))},_n0_,_nZ_), + (function(m,b){return max$1(m,bucket_length(0,b))},_nY_,_nX_), histo=caml_make_vect(mbl + 1 | 0,0), - _n1_=h[2]; + _nZ_=h[2]; iter$5 (function(b) {var l=bucket_length(0,b), - _n2_=caml_check_bound(histo,l)[1 + l] + 1 | 0; - caml_check_bound(histo,l)[1 + l] = _n2_; + _n0_=caml_check_bound(histo,l)[1 + l] + 1 | 0; + caml_check_bound(histo,l)[1 + l] = _n0_; return 0}, - _n1_); + _nZ_); return [0,h[1],h[2].length - 1,mbl,histo]} function to_seq$9(tbl) {var tbl_data=tbl[2]; @@ -23299,7 +23783,7 @@ for(;;) {if(buck$0) {var key=buck$0[1],data=buck$0[2],next=buck$0[3]; - return [0,[0,key,data],function(_nY_){return aux(i$0,next,_nY_)}]} + return [0,[0,key,data],function(_nW_){return aux(i$0,next,_nW_)}]} if(i$0 === tbl_data.length - 1)return 0; var buck$1=caml_check_bound(tbl_data,i$0)[1 + i$0], @@ -23307,28 +23791,28 @@ i$0=i$1, buck$0=buck$1; continue}} - var _nV_=0,_nW_=0; - return function(_nX_){return aux(_nW_,_nV_,_nX_)}} + var _nT_=0,_nU_=0; + return function(_nV_){return aux(_nU_,_nT_,_nV_)}} function to_seq_keys(m) - {var _nR_=to_seq$9(m); - function _nS_(_nU_){return _nU_[1]} - return function(_nT_){return map$1(_nS_,_nR_,_nT_)}} + {var _nP_=to_seq$9(m); + function _nQ_(_nS_){return _nS_[1]} + return function(_nR_){return map$1(_nQ_,_nP_,_nR_)}} function to_seq_values(m) - {var _nN_=to_seq$9(m); - function _nO_(_nQ_){return _nQ_[2]} - return function(_nP_){return map$1(_nO_,_nN_,_nP_)}} + {var _nL_=to_seq$9(m); + function _nM_(_nO_){return _nO_[2]} + return function(_nN_){return map$1(_nM_,_nL_,_nN_)}} function MakeSeeded(H) {function key_index(h,key) - {var _nM_=h[2].length - 1 - 1 | 0; - return caml_call2(H[2],h[3],key) & _nM_} + {var _nK_=h[2].length - 1 - 1 | 0; + return caml_call2(H[2],h[3],key) & _nK_} function add(h,key,data) {var i=key_index(h,key), bucket=[0,key,data,caml_check_bound(h[2],i)[1 + i]]; caml_check_bound(h[2],i)[1 + i] = bucket; h[1] = h[1] + 1 | 0; - var _nL_=h[2].length - 1 << 1 < h[1]?1:0; - return _nL_?resize$0(key_index,h):_nL_} + var _nJ_=h[2].length - 1 << 1 < h[1]?1:0; + return _nJ_?resize$0(key_index,h):_nJ_} function remove(h,key) {var i=key_index(h,key), @@ -23347,7 +23831,7 @@ continue} return 0}} function find(h,key) - {var _nK_=key_index(h,key),match=caml_check_bound(h[2],_nK_)[1 + _nK_]; + {var _nI_=key_index(h,key),match=caml_check_bound(h[2],_nI_)[1 + _nI_]; if(match) {var k1=match[1],d1=match[2],next1=match[3]; if(caml_call2(H[1],key,k1))return d1; @@ -23369,7 +23853,7 @@ throw Not_found} throw Not_found} function find_opt(h,key) - {var _nJ_=key_index(h,key),match=caml_check_bound(h[2],_nJ_)[1 + _nJ_]; + {var _nH_=key_index(h,key),match=caml_check_bound(h[2],_nH_)[1 + _nH_]; if(match) {var k1=match[1],d1=match[2],next1=match[3]; if(caml_call2(H[1],key,k1))return [0,d1]; @@ -23400,8 +23884,8 @@ var param$0=next; continue} return 0}} - var _nI_=key_index(h,key); - return find_in_bucket(caml_check_bound(h[2],_nI_)[1 + _nI_])} + var _nG_=key_index(h,key); + return find_in_bucket(caml_check_bound(h[2],_nG_)[1 + _nG_])} function replace(h,key,data) {var i=key_index(h,key), @@ -23413,27 +23897,27 @@ if(! caml_call2(H[1],k,key)){var param=next;continue} param[1] = key; param[2] = data; - var _nF_=0} + var _nD_=0} else - var _nF_=1; - if(_nF_) + var _nD_=1; + if(_nD_) {caml_check_bound(h[2],i)[1 + i] = [0,key,data,param$0]; h[1] = h[1] + 1 | 0; - var _nG_=h[2].length - 1 << 1 < h[1]?1:0; - if(_nG_)return resize$0(key_index,h); - var _nH_=_nG_} + var _nE_=h[2].length - 1 << 1 < h[1]?1:0; + if(_nE_)return resize$0(key_index,h); + var _nF_=_nE_} else - var _nH_=_nF_; - return _nH_}} + var _nF_=_nD_; + return _nF_}} function mem(h,key) {var - _nE_=key_index(h,key), - param$0=caml_check_bound(h[2],_nE_)[1 + _nE_], + _nC_=key_index(h,key), + param$0=caml_check_bound(h[2],_nC_)[1 + _nC_], param=param$0; for(;;) {if(param) - {var k=param[1],next=param[3],_nD_=caml_call2(H[1],k,key); - if(_nD_)return _nD_; + {var k=param[1],next=param[3],_nB_=caml_call2(H[1],k,key); + if(_nB_)return _nB_; var param=next; continue} return 0}} @@ -23496,8 +23980,8 @@ to_seq_values=include[19], add_seq=include[20], replace_seq=include[21], - _nC_=include[1]; - function create(sz){return caml_call2(_nC_,_ck_,sz)} + _nA_=include[1]; + function create(sz){return caml_call2(_nA_,_ci_,sz)} function of_seq(i) {var tbl=create(16);caml_call2(replace_seq,tbl,i);return tbl} return [0, @@ -23536,8 +24020,8 @@ bucket=[0,key,data,caml_check_bound(h[2],i)[1 + i]]; caml_check_bound(h[2],i)[1 + i] = bucket; h[1] = h[1] + 1 | 0; - var _nB_=h[2].length - 1 << 1 < h[1]?1:0; - return _nB_?resize$0(key_index,h):_nB_} + var _nz_=h[2].length - 1 << 1 < h[1]?1:0; + return _nz_?resize$0(key_index,h):_nz_} function remove(h,key) {var i=key_index(h,key),c$0=caml_check_bound(h[2],i)[1 + i],prec=0,c=c$0; for(;;) @@ -23552,7 +24036,7 @@ continue} return 0}} function find$1(h,key) - {var _nA_=key_index(h,key),match=caml_check_bound(h[2],_nA_)[1 + _nA_]; + {var _ny_=key_index(h,key),match=caml_check_bound(h[2],_ny_)[1 + _ny_]; if(match) {var k1=match[1],d1=match[2],next1=match[3]; if(0 === caml_compare(key,k1))return d1; @@ -23574,7 +24058,7 @@ throw Not_found} throw Not_found} function find_opt$1(h,key) - {var _nz_=key_index(h,key),match=caml_check_bound(h[2],_nz_)[1 + _nz_]; + {var _nx_=key_index(h,key),match=caml_check_bound(h[2],_nx_)[1 + _nx_]; if(match) {var k1=match[1],d1=match[2],next1=match[3]; if(0 === caml_compare(key,k1))return [0,d1]; @@ -23605,8 +24089,8 @@ var param$0=next; continue} return 0}} - var _ny_=key_index(h,key); - return find_in_bucket(caml_check_bound(h[2],_ny_)[1 + _ny_])} + var _nw_=key_index(h,key); + return find_in_bucket(caml_check_bound(h[2],_nw_)[1 + _nw_])} function replace(h,key,data) {var i=key_index(h,key), @@ -23618,27 +24102,27 @@ if(0 !== caml_compare(k,key)){var param=next;continue} param[1] = key; param[2] = data; - var _nv_=0} + var _nt_=0} else - var _nv_=1; - if(_nv_) + var _nt_=1; + if(_nt_) {caml_check_bound(h[2],i)[1 + i] = [0,key,data,param$0]; h[1] = h[1] + 1 | 0; - var _nw_=h[2].length - 1 << 1 < h[1]?1:0; - if(_nw_)return resize$0(key_index,h); - var _nx_=_nw_} + var _nu_=h[2].length - 1 << 1 < h[1]?1:0; + if(_nu_)return resize$0(key_index,h); + var _nv_=_nu_} else - var _nx_=_nv_; - return _nx_}} + var _nv_=_nt_; + return _nv_}} function mem$2(h,key) {var - _nu_=key_index(h,key), - param$0=caml_check_bound(h[2],_nu_)[1 + _nu_], + _ns_=key_index(h,key), + param$0=caml_check_bound(h[2],_ns_)[1 + _ns_], param=param$0; for(;;) {if(param) - {var k=param[1],next=param[3],_nt_=0 === caml_compare(k,key)?1:0; - if(_nt_)return _nt_; + {var k=param[1],next=param[3],_nr_=0 === caml_compare(k,key)?1:0; + if(_nr_)return _nr_; var param=next; continue} return 0}} @@ -23658,19 +24142,19 @@ var s=power_2_above(16,h[2].length - 1); if(random) var - _nm_=caml_obj_tag(prng), - _nn_=250 === _nm_?prng[1]:246 === _nm_?force_lazy_block(prng):prng, - seed=caml_call1(_ci_[4],_nn_); + _nk_=caml_obj_tag(prng), + _nl_=250 === _nk_?prng[1]:246 === _nk_?force_lazy_block(prng):prng, + seed=caml_call1(_cg_[4],_nl_); else var seed=4 <= h.length - 1?h[3]:0; var - _no_=4 <= h.length - 1?h[4]:s, - h$0=[0,h[1],caml_make_vect(s,0),seed,_no_], - _np_=h$0[2], - _nq_=h[2], - _nr_=0; + _nm_=4 <= h.length - 1?h[4]:s, + h$0=[0,h[1],caml_make_vect(s,0),seed,_nm_], + _nn_=h$0[2], + _no_=h[2], + _np_=0; insert_all_buckets - (function(_ns_){return key_index(h$0,_ns_)},_nr_,_nq_,_np_); + (function(_nq_){return key_index(h$0,_nq_)},_np_,_no_,_nn_); return h$0} var Stdlib_Hashtbl= @@ -23708,26 +24192,26 @@ caml_hash]; caml_register_global(816,Stdlib_Hashtbl,"Stdlib__Hashtbl"); function weak_create(l) - {var _nk_=0 <= l?1:0,_nl_=_nk_?l <= _q_[15]?1:0:_nk_; - if(1 - _nl_)invalid_arg(cst_Weak_create); + {var _ni_=0 <= l?1:0,_nj_=_ni_?l <= _o_[15]?1:0:_ni_; + if(1 - _nj_)invalid_arg(cst_Weak_create); return runtime.caml_weak_create(l)} function length$6(x){return x.length - 1 - 2 | 0} function raise_if_invalid_offset$0(e,o,msg) - {var _nh_=0 <= o?1:0,_ni_=_nh_?o < length$6(e)?1:0:_nh_,_nj_=1 - _ni_; - return _nj_?invalid_arg(msg):_nj_} + {var _nf_=0 <= o?1:0,_ng_=_nf_?o < length$6(e)?1:0:_nf_,_nh_=1 - _ng_; + return _nh_?invalid_arg(msg):_nh_} function set$1(e,o,x) {raise_if_invalid_offset$0(e,o,cst_Weak_set); if(x){var x$0=x[1];return caml_ephe_set_key(e,o,x$0)} return caml_ephe_unset_key(e,o)} function get$2(e,o) {raise_if_invalid_offset$0(e,o,cst_Weak_get); - return runtime.caml_weak_get(e,o)} + return caml_ephe_get_key(e,o)} function get_copy(e,o) {raise_if_invalid_offset$0(e,o,cst_Weak_get_copy); - return runtime.caml_weak_get_copy(e,o)} + return caml_ephe_get_key_copy(e,o)} function check$0(e,o) {raise_if_invalid_offset$0(e,o,cst_Weak_check); - return runtime.caml_weak_check(e,o)} + return caml_ephe_check_key(e,o)} function blit$4(e1,o1,e2,o2,l) {if (0 @@ -23747,20 +24231,18 @@ && ! ((length$6(e2) - l | 0) < o2)) - {var - _nf_=0 !== l?1:0, - _ng_=_nf_?runtime.caml_weak_blit(e1,o1,e2,o2,l):_nf_; - return _ng_} + {var _nd_=0 !== l?1:0,_ne_=_nd_?caml_ephe_blit_key(e1,o1,e2,o2,l):_nd_; + return _ne_} return invalid_arg(cst_Weak_blit)} function fill$2(ar,ofs,len,x) {if(0 <= ofs && 0 <= len && ! ((length$6(ar) - len | 0) < ofs)) - {var _nd_=(ofs + len | 0) - 1 | 0; - if(! (_nd_ < ofs)) + {var _nb_=(ofs + len | 0) - 1 | 0; + if(! (_nb_ < ofs)) {var i=ofs; for(;;) {set$1(ar,i,x); - var _ne_=i + 1 | 0; - if(_nd_ !== i){var i=_ne_;continue} + var _nc_=i + 1 | 0; + if(_nb_ !== i){var i=_nc_;continue} break}} return 0} throw [0,Invalid_argument,cst_Weak_fill]} @@ -23779,20 +24261,20 @@ 0, 0]} function clear(t) - {var _nb_=t[1].length - 1 - 1 | 0,_na_=0; - if(! (_nb_ < 0)) - {var i=_na_; + {var _m$_=t[1].length - 1 - 1 | 0,_m__=0; + if(! (_m$_ < 0)) + {var i=_m__; for(;;) {caml_check_bound(t[1],i)[1 + i] = emptybucket; caml_check_bound(t[2],i)[1 + i] = [0]; - var _nc_=i + 1 | 0; - if(_nb_ !== i){var i=_nc_;continue} + var _na_=i + 1 | 0; + if(_m$_ !== i){var i=_na_;continue} break}} t[3] = limit; t[4] = 0; return 0} function fold(f,t,init) - {var _m$_=t[1],i=0; + {var _m9_=t[1],i=0; return fold_right$2 (function(b,accu$1) {var i$0=i,accu=accu$1; @@ -23809,10 +24291,10 @@ continue} var i$2=i$0 + 1 | 0,i$0=i$2; continue}}, - _m$_, + _m9_, init)} function iter(f,t) - {var _m__=t[1],i=0; + {var _m8_=t[1],i=0; return iter$5 (function(b) {var i$0=i; @@ -23826,24 +24308,24 @@ continue} var i$2=i$0 + 1 | 0,i$0=i$2; continue}}, - _m__)} + _m8_)} function count_bucket(i,b,accu) {var i$0=i,accu$0=accu; for(;;) {if(length$6(b) <= i$0)return accu$0; var - _m9_=check$0(b,i$0)?1:0, - accu$1=accu$0 + _m9_ | 0, + _m7_=check$0(b,i$0)?1:0, + accu$1=accu$0 + _m7_ | 0, i$1=i$0 + 1 | 0, i$0=i$1, accu$0=accu$1; continue}} function count(t) - {var _m4_=0,_m5_=t[1],_m6_=0; + {var _m2_=0,_m3_=t[1],_m4_=0; return fold_right$2 - (function(_m7_,_m8_){return count_bucket(_m6_,_m7_,_m8_)}, - _m5_, - _m4_)} + (function(_m5_,_m6_){return count_bucket(_m4_,_m5_,_m6_)}, + _m3_, + _m2_)} function add_aux(t,setter,d,h,index) {var bucket$0=caml_check_bound(t[1],index)[1 + index], @@ -23865,16 +24347,16 @@ caml_check_bound(newhashes,sz)[1 + sz] = h; caml_check_bound(t[1],index)[1 + index] = newbucket$0; caml_check_bound(t[2],index)[1 + index] = newhashes; - var _m0_=sz <= t[3]?1:0,_m1_=_m0_?t[3] < newsz?1:0:_m0_; - if(_m1_) + var _mY_=sz <= t[3]?1:0,_mZ_=_mY_?t[3] < newsz?1:0:_mY_; + if(_mZ_) {t[4] = t[4] + 1 | 0; var i$4=0; for(;;) {var - _mQ_=t[5], - bucket=caml_check_bound(t[1],_mQ_)[1 + _mQ_], - _mR_=t[5], - hbucket=caml_check_bound(t[2],_mR_)[1 + _mR_], + _mO_=t[5], + bucket=caml_check_bound(t[1],_mO_)[1 + _mO_], + _mP_=t[5], + hbucket=caml_check_bound(t[2],_mP_)[1 + _mP_], n=length$6(bucket), prev_len=(((n - 3 | 0) * 2 | 0) + 2 | 0) / 3 | 0, live=count_bucket(0,bucket,0); @@ -23886,38 +24368,38 @@ {var i$1=i$0 + 1 | 0,i$0=i$1;continue} if(check$0(bucket,j)) {blit$4(bucket,j,bucket,i$0,1); - var _mS_=caml_check_bound(hbucket,j)[1 + j]; - caml_check_bound(hbucket,i$0)[1 + i$0] = _mS_; + var _mQ_=caml_check_bound(hbucket,j)[1 + j]; + caml_check_bound(hbucket,i$0)[1 + i$0] = _mQ_; var j$0=j - 1 | 0,i$2=i$0 + 1 | 0,i$0=i$2,j=j$0; continue} var j$1=j - 1 | 0,j=j$1; continue} if(0 === prev_len) - {var _mT_=t[5]; - caml_check_bound(t[1],_mT_)[1 + _mT_] = emptybucket; - var _mU_=t[5]; - caml_check_bound(t[2],_mU_)[1 + _mU_] = [0]} + {var _mR_=t[5]; + caml_check_bound(t[1],_mR_)[1 + _mR_] = emptybucket; + var _mS_=t[5]; + caml_check_bound(t[2],_mS_)[1 + _mS_] = [0]} else {var newbucket=weak_create(prev_len); blit$4(bucket,0,newbucket,0,prev_len); - var _mX_=t[5]; - caml_check_bound(t[1],_mX_)[1 + _mX_] = newbucket; - var _mY_=sub$1(hbucket,0,prev_len),_mZ_=t[5]; - caml_check_bound(t[2],_mZ_)[1 + _mZ_] = _mY_} - var _mV_=t[3] < n?1:0,_mW_=_mV_?prev_len <= t[3]?1:0:_mV_; - if(_mW_)t[4] = t[4] - 1 | 0; + var _mV_=t[5]; + caml_check_bound(t[1],_mV_)[1 + _mV_] = newbucket; + var _mW_=sub$1(hbucket,0,prev_len),_mX_=t[5]; + caml_check_bound(t[2],_mX_)[1 + _mX_] = _mW_} + var _mT_=t[3] < n?1:0,_mU_=_mT_?prev_len <= t[3]?1:0:_mT_; + if(_mU_)t[4] = t[4] - 1 | 0; break}} t[5] = caml_mod(t[5] + 1 | 0,t[1].length - 1); - var _m3_=i$4 + 1 | 0; - if(2 !== i$4){var i$4=_m3_;continue} + var _m1_=i$4 + 1 | 0; + if(2 !== i$4){var i$4=_m1_;continue} break}} - var _m2_=((t[1].length - 1) / 2 | 0) < t[4]?1:0; - if(_m2_) + var _m0_=((t[1].length - 1) / 2 | 0) < t[4]?1:0; + if(_m0_) {var n$0=t[1].length - 1, newlen=min$1(((3 * n$0 | 0) / 2 | 0) + 3 | 0,max_array_length); if(n$0 < newlen) - {var newt=create(newlen),_mP_=t[1],i=0; + {var newt=create(newlen),_mN_=t[1],i=0; iteri$3 (function(j,ob) {var i$0=i; @@ -23938,7 +24420,7 @@ continue} var i$2=i$0 + 1 | 0,i$0=i$2; continue}}, - _mP_); + _mN_); t[1] = newt[1]; t[2] = newt[2]; t[3] = newt[3]; @@ -23948,7 +24430,7 @@ t[3] = max_int; t[4] = 0; return 0} - return _m2_} + return _m0_} if(check$0(bucket$0,i$3)){var i$5=i$3 + 1 | 0,i$3=i$5;continue} caml_call3(setter,bucket$0,i$3,d); caml_check_bound(hashes,i$3)[1 + i$3] = h; @@ -24029,10 +24511,10 @@ var i$1=i + 1 | 0,i=i$1; continue}} function remove(t,d) - {var _mO_=0; - return find_shadow(t,d,function(w,i){return set$1(w,i,0)},_mO_)} + {var _mM_=0; + return find_shadow(t,d,function(w,i){return set$1(w,i,0)},_mM_)} function mem(t,d) - {var _mN_=0;return find_shadow(t,d,function(w,i){return 1},_mN_)} + {var _mL_=0;return find_shadow(t,d,function(w,i){return 1},_mL_)} function find_all(t,d) {var h=caml_call1(H[2],d), @@ -24068,15 +24550,15 @@ {var len=t[1].length - 1,lens=map$7(length$6,t[1]); sort(caml_int_compare,lens); var - _mF_=0, + _mD_=0, totlen= - fold_left$3(function(_mM_,_mL_){return _mM_ + _mL_ | 0},_mF_,lens), - _mG_=len - 1 | 0, - _mI_=len / 2 | 0, + fold_left$3(function(_mK_,_mJ_){return _mK_ + _mJ_ | 0},_mD_,lens), + _mE_=len - 1 | 0, + _mG_=len / 2 | 0, + _mF_=caml_check_bound(lens,_mE_)[1 + _mE_], _mH_=caml_check_bound(lens,_mG_)[1 + _mG_], - _mJ_=caml_check_bound(lens,_mI_)[1 + _mI_], - _mK_=caml_check_bound(lens,0)[1]; - return [0,len,count(t),totlen,_mK_,_mJ_,_mH_]} + _mI_=caml_check_bound(lens,0)[1]; + return [0,len,count(t),totlen,_mI_,_mH_,_mF_]} return [0, create, clear, @@ -24121,8 +24603,8 @@ state[11] = 0; return 0} function format_string(state,s) - {var _mE_=caml_string_notequal(s,cst$67); - return _mE_?format_pp_text(state,caml_ml_string_length(s),s):_mE_} + {var _mC_=caml_string_notequal(s,cst$67); + return _mC_?format_pp_text(state,caml_ml_string_length(s),s):_mC_} function break_new_line(state,param,width) {var after=param[3],offset=param[2],before=param[1]; format_string(state,before); @@ -24135,7 +24617,7 @@ state[9] = state[6] - state[10] | 0; caml_call1(state[21],state[10]); return format_string(state,after)} - function break_line(state,width){return break_new_line(state,_cl_,width)} + function break_line(state,width){return break_new_line(state,_cj_,width)} function break_same_line(state,param) {var after=param[3],width=param[2],before=param[1]; format_string(state,before); @@ -24169,8 +24651,8 @@ return break_line(state,width$0)} return pp_output_newline(state); case 4: - var _mB_=state[10] !== (state[6] - state[9] | 0)?1:0; - if(_mB_) + var _mz_=state[10] !== (state[6] - state[9] | 0)?1:0; + if(_mz_) {var match$1=take_opt(state[28]); if(match$1) {var match$2=match$1[1],size=match$2[1],length=match$2[3]; @@ -24178,7 +24660,7 @@ state[9] = state[9] + size | 0; return 0} return 0} - return _mB_; + return _mz_; default: var match$7=pop_opt(state[5]); if(match$7) @@ -24222,17 +24704,17 @@ insertion_point=state[6] - state[9] | 0, match$10=top_opt(state[3]); if(match$10) - {var match$11=match$10[1],tabs$0=match$11[1],_mC_=tabs$0[1]; - if(_mC_) - {var first=_mC_[1],param$0=tabs$0[1]; + {var match$11=match$10[1],tabs$0=match$11[1],_mA_=tabs$0[1]; + if(_mA_) + {var first=_mA_[1],param$0=tabs$0[1]; for(;;) {if(param$0) {var tail=param$0[2],head=param$0[1]; if(! (insertion_point <= head)){var param$0=tail;continue} - var _mD_=head} + var _mB_=head} else - var _mD_=first; - var tab=_mD_; + var _mB_=first; + var tab=_mB_; break}} else var tab=insertion_point; @@ -24274,15 +24756,15 @@ length=match$0[3], token=match$0[2], pending_count=state[13] - state[12] | 0, - _mz_=0 <= size?1:0, - _mA_=_mz_ || (state[9] <= pending_count?1:0); - if(_mA_) + _mx_=0 <= size?1:0, + _my_=_mx_ || (state[9] <= pending_count?1:0); + if(_my_) {take$0(state[28]); var size$0=0 <= size?size:pp_infinity; format_pp_token(state,size$0,token); state[12] = length + state[12] | 0; continue} - return _mA_} + return _my_} return 0}} function enqueue_advance(state,tok) {pp_enqueue(state,tok);return advance_left(state)} @@ -24290,7 +24772,7 @@ {return enqueue_advance(state,[0,size,[0,s],size])} function initialize_scan_stack(stack) {clear(stack); - var queue_elem=[0,unknown,_cm_,0]; + var queue_elem=[0,unknown,_ck_,0]; return push([0,-1,queue_elem],stack)} function set_size(state,ty) {var match=top_opt(state[1]); @@ -24299,25 +24781,25 @@ match$0=match[1], queue_elem=match$0[2], left_total=match$0[1], - _mu_=queue_elem[1]; + _ms_=queue_elem[1]; if(left_total < state[12])return initialize_scan_stack(state[1]); - var _mv_=queue_elem[2]; - if(typeof _mv_ !== "number") - switch(_mv_[0]) + var _mt_=queue_elem[2]; + if(typeof _mt_ !== "number") + switch(_mt_[0]) {case 3: var - _mx_=1 - ty, - _my_= - _mx_ - ?(queue_elem[1] = state[13] + _mu_ | 0,pop_opt(state[1]),0) - :_mx_; - return _my_; + _mv_=1 - ty, + _mw_= + _mv_ + ?(queue_elem[1] = state[13] + _ms_ | 0,pop_opt(state[1]),0) + :_mv_; + return _mw_; case 1: case 2: var - _mw_= - ty?(queue_elem[1] = state[13] + _mu_ | 0,pop_opt(state[1]),0):ty; - return _mw_ + _mu_= + ty?(queue_elem[1] = state[13] + _ms_ | 0,pop_opt(state[1]),0):ty; + return _mu_ } return 0} return 0} @@ -24331,37 +24813,37 @@ if(state[14] < state[15]) {var size=- state[13] | 0,elem=[0,size,[3,indent,br_ty],0]; return scan_push(state,0,elem)} - var _ms_=state[14] === state[15]?1:0; - if(_ms_) - {var _mt_=state[16]; - return enqueue_string_as(state,caml_ml_string_length(_mt_),_mt_)} - return _ms_} - function pp_close_box(state,param) - {var _mq_=1 < state[14]?1:0; + var _mq_=state[14] === state[15]?1:0; if(_mq_) + {var _mr_=state[16]; + return enqueue_string_as(state,caml_ml_string_length(_mr_),_mr_)} + return _mq_} + function pp_close_box(state,param) + {var _mo_=1 < state[14]?1:0; + if(_mo_) {if(state[14] < state[15]) {pp_enqueue(state,[0,size,1,0]);set_size(state,1);set_size(state,0)} state[14] = state[14] - 1 | 0; - var _mr_=0} + var _mp_=0} else - var _mr_=_mq_; - return _mr_} + var _mp_=_mo_; + return _mp_} function pp_open_stag(state,tag_name) {if(state[22]){push(tag_name,state[4]);caml_call1(state[26],tag_name)} - var _mp_=state[23]; - if(_mp_) + var _mn_=state[23]; + if(_mn_) {var token=[5,tag_name];return pp_enqueue(state,[0,size,token,0])} - return _mp_} + return _mn_} function pp_close_stag(state,param) {if(state[23])pp_enqueue(state,[0,size,5,0]); - var _mn_=state[22]; - if(_mn_) + var _ml_=state[22]; + if(_ml_) {var match=pop_opt(state[4]); if(match){var tag_name=match[1];return caml_call1(state[27],tag_name)} - var _mo_=0} + var _mm_=0} else - var _mo_=_mn_; - return _mo_} + var _mm_=_ml_; + return _mm_} function pp_open_tag(state,s){return pp_open_stag(state,[0,String_tag,s])} function pp_close_tag(state,param){return pp_close_stag(state,0)} function pp_set_print_tags(state,b){state[22] = b;return 0} @@ -24393,8 +24875,8 @@ state[9] = state[6]; return pp_open_box_gen(state,0,3)} function pp_flush_queue(state,b) - {var _mm_=state[4]; - iter$7(function(param){return pp_close_tag(state,0)},_mm_); + {var _mk_=state[4]; + iter$7(function(param){return pp_close_tag(state,0)},_mk_); for(;;) {if(1 < state[14]){pp_close_box(state,0);continue} state[13] = pp_infinity; @@ -24402,8 +24884,8 @@ if(b)pp_output_newline(state); return pp_rinit(state)}} function pp_print_as_size(state,size,s) - {var _ml_=state[14] < state[15]?1:0; - return _ml_?enqueue_string_as(state,size,s):_ml_} + {var _mj_=state[14] < state[15]?1:0; + return _mj_?enqueue_string_as(state,size,s):_mj_} function pp_print_as(state,isize,s) {return pp_print_as_size(state,isize,s)} function pp_print_string(state,s) @@ -24430,18 +24912,18 @@ function pp_print_flush(state,param) {pp_flush_queue(state,0);return caml_call1(state[18],0)} function pp_force_newline(state,param) - {var _mk_=state[14] < state[15]?1:0; - return _mk_?enqueue_advance(state,[0,size,3,0]):_mk_} + {var _mi_=state[14] < state[15]?1:0; + return _mi_?enqueue_advance(state,[0,size,3,0]):_mi_} function pp_print_if_newline(state,param) - {var _mj_=state[14] < state[15]?1:0; - return _mj_?enqueue_advance(state,[0,size,4,0]):_mj_} + {var _mh_=state[14] < state[15]?1:0; + return _mh_?enqueue_advance(state,[0,size,4,0]):_mh_} function pp_print_custom_break(state,fits,breaks) {var after=fits[3], width=fits[2], before=fits[1], - _mi_=state[14] < state[15]?1:0; - if(_mi_) + _mg_=state[14] < state[15]?1:0; + if(_mg_) {var size=- state[13] | 0, token=[1,fits,breaks], @@ -24453,7 +24935,7 @@ 0, elem=[0,size,token,length]; return scan_push(state,1,elem)} - return _mi_} + return _mg_} function pp_print_break(state,width,offset) {return pp_print_custom_break (state,[0,cst$75,width,cst$74],[0,cst$73,offset,cst$72])} @@ -24461,37 +24943,37 @@ function pp_print_cut(state,param){return pp_print_break(state,0,0)} function pp_open_tbox(state,param) {state[14] = state[14] + 1 | 0; - var _mh_=state[14] < state[15]?1:0; - if(_mh_) + var _mf_=state[14] < state[15]?1:0; + if(_mf_) {var elem=[0,size,[4,[0,[0,0]]],0];return enqueue_advance(state,elem)} - return _mh_} + return _mf_} function pp_close_tbox(state,param) - {var _me_=1 < state[14]?1:0; - if(_me_) - {var _mf_=state[14] < state[15]?1:0; - if(_mf_) + {var _mc_=1 < state[14]?1:0; + if(_mc_) + {var _md_=state[14] < state[15]?1:0; + if(_md_) {var elem=[0,size,2,0]; enqueue_advance(state,elem); state[14] = state[14] - 1 | 0; - var _mg_=0} + var _me_=0} else - var _mg_=_mf_} + var _me_=_md_} else - var _mg_=_me_; - return _mg_} + var _me_=_mc_; + return _me_} function pp_print_tbreak(state,width,offset) - {var _md_=state[14] < state[15]?1:0; - if(_md_) + {var _mb_=state[14] < state[15]?1:0; + if(_mb_) {var size=- state[13] | 0,elem=[0,size,[2,width,offset],width]; return scan_push(state,1,elem)} - return _md_} + return _mb_} function pp_print_tab(state,param){return pp_print_tbreak(state,0,0)} function pp_set_tab(state,param) - {var _mc_=state[14] < state[15]?1:0; - if(_mc_){var elem=[0,size,0,0];return enqueue_advance(state,elem)} - return _mc_} + {var _ma_=state[14] < state[15]?1:0; + if(_ma_){var elem=[0,size,0,0];return enqueue_advance(state,elem)} + return _ma_} function pp_set_max_boxes(state,n) - {var _ma_=1 < n?1:0,_mb_=_ma_?(state[15] = n,0):_ma_;return _mb_} + {var _l__=1 < n?1:0,_l$_=_l__?(state[15] = n,0):_l__;return _l$_} function pp_get_max_boxes(state,param){return state[15]} function pp_over_max_boxes(state,param) {return state[14] === state[15]?1:0} @@ -24499,20 +24981,20 @@ function pp_get_ellipsis_text(state,param){return state[16]} function pp_limit(n){return n < 1000000010?n:1000000009} function pp_set_max_indent(state,n$0) - {var _l$_=1 < n$0?1:0; - if(_l$_) - {var n$1=state[6] - n$0 | 0,_l__=1 <= n$1?1:0; - if(_l__) + {var _l9_=1 < n$0?1:0; + if(_l9_) + {var n$1=state[6] - n$0 | 0,_l8_=1 <= n$1?1:0; + if(_l8_) {var n=pp_limit(n$1); state[7] = n; state[8] = state[6] - state[7] | 0; return pp_rinit(state)} - return _l__} - return _l$_} + return _l8_} + return _l9_} function pp_get_max_indent(state,param){return state[8]} function pp_set_margin(state,n) - {var _l9_=1 <= n?1:0; - if(_l9_) + {var _l7_=1 <= n?1:0; + if(_l7_) {var n$0=pp_limit(n); state[6] = n$0; var @@ -24521,10 +25003,10 @@ ?state[8] :max$1(max$1(state[6] - state[7] | 0,state[6] / 2 | 0),1); return pp_set_max_indent(state,new_max_indent)} - return _l9_} + return _l7_} function validate_geometry(param) {var margin=param[2],max_indent=param[1]; - return 2 <= max_indent?margin <= max_indent?_cn_:_co_:_cp_} + return 2 <= max_indent?margin <= max_indent?_cl_:_cm_:_cn_} function check_geometry(geometry) {var match=validate_geometry(geometry);return 0 === match[0]?1:0} function pp_get_margin(state,param){return state[6]} @@ -24565,22 +25047,22 @@ function display_indent(state,n) {var n$0=n; for(;;) - {var _l8_=0 < n$0?1:0; - if(_l8_) + {var _l6_=0 < n$0?1:0; + if(_l6_) {if(80 < n$0) {caml_call3(state[17],blank_line,0,80); var n$1=n$0 - 80 | 0,n$0=n$1; continue} return caml_call3(state[17],blank_line,0,n$0)} - return _l8_}} + return _l6_}} function pp_set_formatter_out_channel(state,oc) {state[17] = - function(_l5_,_l6_,_l7_){return output_substring(oc,_l5_,_l6_,_l7_)}; + function(_l3_,_l4_,_l5_){return output_substring(oc,_l3_,_l4_,_l5_)}; state[18] = function(param){return caml_ml_flush(oc)}; - state[19] = function(_l4_){return display_newline(state,_l4_)}; - state[20] = function(_l3_){return display_indent(state,_l3_)}; - state[21] = function(_l2_){return display_indent(state,_l2_)}; + state[19] = function(_l2_){return display_newline(state,_l2_)}; + state[20] = function(_l1_){return display_indent(state,_l1_)}; + state[21] = function(_l0_){return display_indent(state,_l0_)}; return 0} function default_pp_mark_open_tag(param) {if(param[1] === String_tag) @@ -24590,21 +25072,21 @@ {if(param[1] === String_tag) {var s=param[2];return cat(cst$81,cat(s,cst$80))} return cst$82} - function default_pp_print_open_tag(_l1_){return 0} - function default_pp_print_close_tag(_l0_){return 0} + function default_pp_print_open_tag(_lZ_){return 0} + function default_pp_print_close_tag(_lY_){return 0} function pp_make_formatter(f,g,h,i,j) - {var pp_queue=create$1(0),sys_tok=[0,unknown,_cq_,0]; + {var pp_queue=create$1(0),sys_tok=[0,unknown,_co_,0]; add(sys_tok,pp_queue); var scan_stack=create$0(0); initialize_scan_stack(scan_stack); push([0,1,sys_tok],scan_stack); - var _lX_=create$0(0),_lY_=create$0(0),_lZ_=create$0(0); + var _lV_=create$0(0),_lW_=create$0(0),_lX_=create$0(0); return [0, scan_stack, create$0(0), - _lZ_, - _lY_, _lX_, + _lW_, + _lV_, 78, 10, 68, @@ -24632,27 +25114,27 @@ {return pp_make_formatter (out_funs[1],out_funs[2],out_funs[3],out_funs[4],out_funs[5])} function make_formatter(output,flush) - {function _lP_(_lW_){return 0} - function _lQ_(_lV_){return 0} + {function _lN_(_lU_){return 0} + function _lO_(_lT_){return 0} var ppf= - pp_make_formatter(output,flush,function(_lU_){return 0},_lQ_,_lP_); - ppf[19] = function(_lT_){return display_newline(ppf,_lT_)}; - ppf[20] = function(_lS_){return display_indent(ppf,_lS_)}; - ppf[21] = function(_lR_){return display_indent(ppf,_lR_)}; + pp_make_formatter(output,flush,function(_lS_){return 0},_lO_,_lN_); + ppf[19] = function(_lR_){return display_newline(ppf,_lR_)}; + ppf[20] = function(_lQ_){return display_indent(ppf,_lQ_)}; + ppf[21] = function(_lP_){return display_indent(ppf,_lP_)}; return ppf} function formatter_of_out_channel(oc) - {function _lL_(param){return caml_ml_flush(oc)} + {function _lJ_(param){return caml_ml_flush(oc)} return make_formatter - (function(_lM_,_lN_,_lO_) - {return output_substring(oc,_lM_,_lN_,_lO_)}, - _lL_)} + (function(_lK_,_lL_,_lM_) + {return output_substring(oc,_lK_,_lL_,_lM_)}, + _lJ_)} function formatter_of_buffer(b) - {function _lG_(_lK_){return 0} + {function _lE_(_lI_){return 0} return make_formatter - (function(_lH_,_lI_,_lJ_) - {return add_substring(b,_lH_,_lI_,_lJ_)}, - _lG_)} + (function(_lF_,_lG_,_lH_) + {return add_substring(b,_lF_,_lG_,_lH_)}, + _lE_)} var pp_buffer_size=512; function pp_make_buffer(param){return create$2(pp_buffer_size)} var @@ -24675,96 +25157,96 @@ {sob[1] = [0,item,sob[1]];return 0} function formatter_of_symbolic_output_b(sob) {function f(s,i,n){return add_symbolic_output_item(sob,[0,sub$0(s,i,n)])} - function g(_lF_){return add_symbolic_output_item(sob,0)} - function h(_lE_){return add_symbolic_output_item(sob,1)} + function g(_lD_){return add_symbolic_output_item(sob,0)} + function h(_lC_){return add_symbolic_output_item(sob,1)} function i(n){return add_symbolic_output_item(sob,[1,n])} function j(n){return add_symbolic_output_item(sob,[2,n])} return pp_make_formatter(f,g,h,i,j)} - function open_hbox(_lD_){return pp_open_hbox(std_formatter,_lD_)} - function open_vbox(_lC_){return pp_open_vbox(std_formatter,_lC_)} - function open_hvbox(_lB_){return pp_open_hvbox(std_formatter,_lB_)} - function open_hovbox(_lA_){return pp_open_hovbox(std_formatter,_lA_)} - function open_box(_lz_){return pp_open_box(std_formatter,_lz_)} - function close_box(_ly_){return pp_close_box(std_formatter,_ly_)} - function open_tag(_lx_){return pp_open_tag(std_formatter,_lx_)} - function close_tag(_lw_){return pp_close_tag(std_formatter,_lw_)} - function open_stag(_lv_){return pp_open_stag(std_formatter,_lv_)} - function close_stag(_lu_){return pp_close_stag(std_formatter,_lu_)} - function print_as(_ls_,_lt_){return pp_print_as(std_formatter,_ls_,_lt_)} - function print_string$0(_lr_){return pp_print_string(std_formatter,_lr_)} - function print_bytes$0(_lq_){return pp_print_bytes(std_formatter,_lq_)} - function print_int$0(_lp_){return pp_print_int(std_formatter,_lp_)} - function print_float$0(_lo_){return pp_print_float(std_formatter,_lo_)} - function print_char$0(_ln_){return pp_print_char(std_formatter,_ln_)} - function print_bool(_lm_){return pp_print_bool(std_formatter,_lm_)} - function print_break(_lk_,_ll_) - {return pp_print_break(std_formatter,_lk_,_ll_)} - function print_cut(_lj_){return pp_print_cut(std_formatter,_lj_)} - function print_space(_li_){return pp_print_space(std_formatter,_li_)} - function force_newline(_lh_){return pp_force_newline(std_formatter,_lh_)} - function print_flush(_lg_){return pp_print_flush(std_formatter,_lg_)} - function print_newline$0(_lf_) - {return pp_print_newline(std_formatter,_lf_)} - function print_if_newline(_le_) - {return pp_print_if_newline(std_formatter,_le_)} - function open_tbox(_ld_){return pp_open_tbox(std_formatter,_ld_)} - function close_tbox(_lc_){return pp_close_tbox(std_formatter,_lc_)} - function print_tbreak(_la_,_lb_) - {return pp_print_tbreak(std_formatter,_la_,_lb_)} - function set_tab(_k$_){return pp_set_tab(std_formatter,_k$_)} - function print_tab(_k__){return pp_print_tab(std_formatter,_k__)} - function set_margin(_k9_){return pp_set_margin(std_formatter,_k9_)} - function get_margin(_k8_){return std_formatter[6]} - function set_max_indent(_k7_) - {return pp_set_max_indent(std_formatter,_k7_)} - function get_max_indent(_k6_){return std_formatter[8]} - function set_geometry(_k4_,_k5_) - {return pp_set_geometry(std_formatter,_k4_,_k5_)} - function safe_set_geometry(_k2_,_k3_) - {return pp_safe_set_geometry(std_formatter,_k2_,_k3_)} - function get_geometry(_k1_){return pp_get_geometry(std_formatter,_k1_)} - function update_geometry(_k0_) - {return pp_update_geometry(std_formatter,_k0_)} - function set_max_boxes(_kZ_){return pp_set_max_boxes(std_formatter,_kZ_)} - function get_max_boxes(_kY_){return std_formatter[15]} - function over_max_boxes(_kX_) - {return pp_over_max_boxes(std_formatter,_kX_)} - function set_ellipsis_text(_kW_) - {return pp_set_ellipsis_text(std_formatter,_kW_)} - function get_ellipsis_text(_kV_){return std_formatter[16]} - function set_formatter_out_channel(_kU_) - {return pp_set_formatter_out_channel(std_formatter,_kU_)} - function set_formatter_out_functions(_kT_) - {return pp_set_formatter_out_functions(std_formatter,_kT_)} - function get_formatter_out_functions(_kS_) - {return pp_get_formatter_out_functions(std_formatter,_kS_)} - function set_formatter_output_functions(_kQ_,_kR_) - {return pp_set_formatter_output_functi(std_formatter,_kQ_,_kR_)} - function get_formatter_output_functions(_kP_) - {return pp_get_formatter_output_functi(std_formatter,_kP_)} - function set_formatter_stag_functions(_kO_) - {return pp_set_formatter_stag_function(std_formatter,_kO_)} - function get_formatter_stag_functions(_kN_) - {return pp_get_formatter_stag_function(std_formatter,_kN_)} - function set_print_tags(_kM_) - {return pp_set_print_tags(std_formatter,_kM_)} - function get_print_tags(_kL_){return std_formatter[22]} - function set_mark_tags(_kK_){return pp_set_mark_tags(std_formatter,_kK_)} - function get_mark_tags(_kJ_){return std_formatter[23]} - function set_tags(_kI_){return pp_set_tags(std_formatter,_kI_)} + function open_hbox(_lB_){return pp_open_hbox(std_formatter,_lB_)} + function open_vbox(_lA_){return pp_open_vbox(std_formatter,_lA_)} + function open_hvbox(_lz_){return pp_open_hvbox(std_formatter,_lz_)} + function open_hovbox(_ly_){return pp_open_hovbox(std_formatter,_ly_)} + function open_box(_lx_){return pp_open_box(std_formatter,_lx_)} + function close_box(_lw_){return pp_close_box(std_formatter,_lw_)} + function open_tag(_lv_){return pp_open_tag(std_formatter,_lv_)} + function close_tag(_lu_){return pp_close_tag(std_formatter,_lu_)} + function open_stag(_lt_){return pp_open_stag(std_formatter,_lt_)} + function close_stag(_ls_){return pp_close_stag(std_formatter,_ls_)} + function print_as(_lq_,_lr_){return pp_print_as(std_formatter,_lq_,_lr_)} + function print_string$0(_lp_){return pp_print_string(std_formatter,_lp_)} + function print_bytes$0(_lo_){return pp_print_bytes(std_formatter,_lo_)} + function print_int$0(_ln_){return pp_print_int(std_formatter,_ln_)} + function print_float$0(_lm_){return pp_print_float(std_formatter,_lm_)} + function print_char$0(_ll_){return pp_print_char(std_formatter,_ll_)} + function print_bool(_lk_){return pp_print_bool(std_formatter,_lk_)} + function print_break(_li_,_lj_) + {return pp_print_break(std_formatter,_li_,_lj_)} + function print_cut(_lh_){return pp_print_cut(std_formatter,_lh_)} + function print_space(_lg_){return pp_print_space(std_formatter,_lg_)} + function force_newline(_lf_){return pp_force_newline(std_formatter,_lf_)} + function print_flush(_le_){return pp_print_flush(std_formatter,_le_)} + function print_newline$0(_ld_) + {return pp_print_newline(std_formatter,_ld_)} + function print_if_newline(_lc_) + {return pp_print_if_newline(std_formatter,_lc_)} + function open_tbox(_lb_){return pp_open_tbox(std_formatter,_lb_)} + function close_tbox(_la_){return pp_close_tbox(std_formatter,_la_)} + function print_tbreak(_k__,_k$_) + {return pp_print_tbreak(std_formatter,_k__,_k$_)} + function set_tab(_k9_){return pp_set_tab(std_formatter,_k9_)} + function print_tab(_k8_){return pp_print_tab(std_formatter,_k8_)} + function set_margin(_k7_){return pp_set_margin(std_formatter,_k7_)} + function get_margin(_k6_){return std_formatter[6]} + function set_max_indent(_k5_) + {return pp_set_max_indent(std_formatter,_k5_)} + function get_max_indent(_k4_){return std_formatter[8]} + function set_geometry(_k2_,_k3_) + {return pp_set_geometry(std_formatter,_k2_,_k3_)} + function safe_set_geometry(_k0_,_k1_) + {return pp_safe_set_geometry(std_formatter,_k0_,_k1_)} + function get_geometry(_kZ_){return pp_get_geometry(std_formatter,_kZ_)} + function update_geometry(_kY_) + {return pp_update_geometry(std_formatter,_kY_)} + function set_max_boxes(_kX_){return pp_set_max_boxes(std_formatter,_kX_)} + function get_max_boxes(_kW_){return std_formatter[15]} + function over_max_boxes(_kV_) + {return pp_over_max_boxes(std_formatter,_kV_)} + function set_ellipsis_text(_kU_) + {return pp_set_ellipsis_text(std_formatter,_kU_)} + function get_ellipsis_text(_kT_){return std_formatter[16]} + function set_formatter_out_channel(_kS_) + {return pp_set_formatter_out_channel(std_formatter,_kS_)} + function set_formatter_out_functions(_kR_) + {return pp_set_formatter_out_functions(std_formatter,_kR_)} + function get_formatter_out_functions(_kQ_) + {return pp_get_formatter_out_functions(std_formatter,_kQ_)} + function set_formatter_output_functions(_kO_,_kP_) + {return pp_set_formatter_output_functi(std_formatter,_kO_,_kP_)} + function get_formatter_output_functions(_kN_) + {return pp_get_formatter_output_functi(std_formatter,_kN_)} + function set_formatter_stag_functions(_kM_) + {return pp_set_formatter_stag_function(std_formatter,_kM_)} + function get_formatter_stag_functions(_kL_) + {return pp_get_formatter_stag_function(std_formatter,_kL_)} + function set_print_tags(_kK_) + {return pp_set_print_tags(std_formatter,_kK_)} + function get_print_tags(_kJ_){return std_formatter[22]} + function set_mark_tags(_kI_){return pp_set_mark_tags(std_formatter,_kI_)} + function get_mark_tags(_kH_){return std_formatter[23]} + function set_tags(_kG_){return pp_set_tags(std_formatter,_kG_)} function pp_print_list(opt,pp_v,ppf,param) {var opt$0=opt,param$0=param; for(;;) {if(opt$0)var sth=opt$0[1],pp_sep=sth;else var pp_sep=pp_print_cut; if(param$0) - {var _kH_=param$0[1]; + {var _kF_=param$0[1]; if(param$0[2]) {var vs=param$0[2]; - caml_call2(pp_v,ppf,_kH_); + caml_call2(pp_v,ppf,_kF_); caml_call2(pp_sep,ppf,0); var opt$1=[0,pp_sep],opt$0=opt$1,param$0=vs; continue} - return caml_call2(pp_v,ppf,_kH_)} + return caml_call2(pp_v,ppf,_kF_)} return 0}} function pp_print_seq(opt,pp_v,ppf,seq$1) {if(opt)var sth=opt[1],pp_sep=sth;else var pp_sep=pp_print_cut; @@ -24798,13 +25280,13 @@ else if(32 === match){flush(0);pp_print_space(ppf,0)}else right[1]++; continue} - var _kG_=left[1] !== len?1:0; - return _kG_?flush(0):_kG_}} + var _kE_=left[1] !== len?1:0; + return _kE_?flush(0):_kE_}} function pp_print_option(opt,pp_v,ppf,param) {if(opt) var sth=opt[1],none=sth; else - var none=function(param,_kF_){return 0}; + var none=function(param,_kD_){return 0}; if(param){var v=param[1];return caml_call2(pp_v,ppf,v)} return caml_call2(none,ppf,0)} function pp_print_result(ok,error,ppf,param) @@ -24852,62 +25334,62 @@ output_acc$0(ppf,p); return output_formatting_lit(ppf,f); case 1: - var _kv_=acc[2],_kw_=acc[1]; - if(0 === _kv_[0]) - {var acc$0=_kv_[1]; - output_acc$0(ppf,_kw_); + var _kt_=acc[2],_ku_=acc[1]; + if(0 === _kt_[0]) + {var acc$0=_kt_[1]; + output_acc$0(ppf,_ku_); return pp_open_stag (ppf,[0,String_tag,compute_tag(output_acc$0,acc$0)])} - var acc$1=_kv_[1]; - output_acc$0(ppf,_kw_); + var acc$1=_kt_[1]; + output_acc$0(ppf,_ku_); var match=open_box_of_string(compute_tag(output_acc$0,acc$1)), bty=match[2], indent=match[1]; return pp_open_box_gen(ppf,indent,bty); case 2: - var _kx_=acc[1],switch$1=0; - if(typeof _kx_ !== "number" && 0 === _kx_[0]) - {var _ky_=_kx_[2],switch$2=0; - if(typeof _ky_ !== "number" && 1 === _ky_[0]) - {var s$0=acc[2],size=_ky_[2],p$1=_kx_[1]; + var _kv_=acc[1],switch$1=0; + if(typeof _kv_ !== "number" && 0 === _kv_[0]) + {var _kw_=_kv_[2],switch$2=0; + if(typeof _kw_ !== "number" && 1 === _kw_[0]) + {var s$0=acc[2],size=_kw_[2],p$1=_kv_[1]; switch$1 = 1; switch$2 = 1}} - if(! switch$1){var s=acc[2],p$0=_kx_;switch$0 = 2} + if(! switch$1){var s=acc[2],p$0=_kv_;switch$0 = 2} break; case 3: - var _kz_=acc[1],switch$3=0; - if(typeof _kz_ !== "number" && 0 === _kz_[0]) - {var _kA_=_kz_[2],switch$4=0; - if(typeof _kA_ !== "number" && 1 === _kA_[0]) - {var c$0=acc[2],size$0=_kA_[2],p$3=_kz_[1]; + var _kx_=acc[1],switch$3=0; + if(typeof _kx_ !== "number" && 0 === _kx_[0]) + {var _ky_=_kx_[2],switch$4=0; + if(typeof _ky_ !== "number" && 1 === _ky_[0]) + {var c$0=acc[2],size$0=_ky_[2],p$3=_kx_[1]; switch$0 = 1; switch$3 = 1; switch$4 = 1}} - if(! switch$3){var c=acc[2],p$2=_kz_;switch$0 = 3} + if(! switch$3){var c=acc[2],p$2=_kx_;switch$0 = 3} break; case 4: - var _kB_=acc[1],switch$5=0; - if(typeof _kB_ !== "number" && 0 === _kB_[0]) - {var _kC_=_kB_[2],switch$6=0; - if(typeof _kC_ !== "number" && 1 === _kC_[0]) - {var s$0=acc[2],size=_kC_[2],p$1=_kB_[1]; + var _kz_=acc[1],switch$5=0; + if(typeof _kz_ !== "number" && 0 === _kz_[0]) + {var _kA_=_kz_[2],switch$6=0; + if(typeof _kA_ !== "number" && 1 === _kA_[0]) + {var s$0=acc[2],size=_kA_[2],p$1=_kz_[1]; switch$5 = 1; switch$6 = 1}} - if(! switch$5){var s=acc[2],p$0=_kB_;switch$0 = 2} + if(! switch$5){var s=acc[2],p$0=_kz_;switch$0 = 2} break; case 5: - var _kD_=acc[1],switch$7=0; - if(typeof _kD_ === "number" || ! (0 === _kD_[0])) + var _kB_=acc[1],switch$7=0; + if(typeof _kB_ === "number" || ! (0 === _kB_[0])) switch$7 = 1; else - {var _kE_=_kD_[2],switch$8=0; - if(typeof _kE_ !== "number" && 1 === _kE_[0]) - {var c$0=acc[2],size$0=_kE_[2],p$3=_kD_[1]; + {var _kC_=_kB_[2],switch$8=0; + if(typeof _kC_ !== "number" && 1 === _kC_[0]) + {var c$0=acc[2],size$0=_kC_[2],p$3=_kB_[1]; switch$0 = 1; switch$8 = 1} if(! switch$8)switch$7 = 1} - if(switch$7){var c=acc[2],p$2=_kD_;switch$0 = 3} + if(switch$7){var c=acc[2],p$2=_kB_;switch$0 = 3} break; case 6: var f$0=acc[2],p$4=acc[1]; @@ -24937,73 +25419,73 @@ strput_acc$0(ppf,p); return output_formatting_lit(ppf,f); case 1: - var _kj_=acc[2],_kk_=acc[1]; - if(0 === _kj_[0]) - {var acc$0=_kj_[1]; - strput_acc$0(ppf,_kk_); + var _kh_=acc[2],_ki_=acc[1]; + if(0 === _kh_[0]) + {var acc$0=_kh_[1]; + strput_acc$0(ppf,_ki_); return pp_open_stag (ppf,[0,String_tag,compute_tag(strput_acc$0,acc$0)])} - var acc$1=_kj_[1]; - strput_acc$0(ppf,_kk_); + var acc$1=_kh_[1]; + strput_acc$0(ppf,_ki_); var match=open_box_of_string(compute_tag(strput_acc$0,acc$1)), bty=match[2], indent=match[1]; return pp_open_box_gen(ppf,indent,bty); case 2: - var _kl_=acc[1],switch$1=0; - if(typeof _kl_ !== "number" && 0 === _kl_[0]) - {var _km_=_kl_[2],switch$2=0; - if(typeof _km_ !== "number" && 1 === _km_[0]) - {var s$0=acc[2],size=_km_[2],p$1=_kl_[1]; + var _kj_=acc[1],switch$1=0; + if(typeof _kj_ !== "number" && 0 === _kj_[0]) + {var _kk_=_kj_[2],switch$2=0; + if(typeof _kk_ !== "number" && 1 === _kk_[0]) + {var s$0=acc[2],size=_kk_[2],p$1=_kj_[1]; switch$1 = 1; switch$2 = 1}} - if(! switch$1){var s=acc[2],p$0=_kl_;switch$0 = 2} + if(! switch$1){var s=acc[2],p$0=_kj_;switch$0 = 2} break; case 3: - var _kn_=acc[1],switch$3=0; - if(typeof _kn_ !== "number" && 0 === _kn_[0]) - {var _ko_=_kn_[2],switch$4=0; - if(typeof _ko_ !== "number" && 1 === _ko_[0]) - {var c$0=acc[2],size$0=_ko_[2],p$3=_kn_[1]; + var _kl_=acc[1],switch$3=0; + if(typeof _kl_ !== "number" && 0 === _kl_[0]) + {var _km_=_kl_[2],switch$4=0; + if(typeof _km_ !== "number" && 1 === _km_[0]) + {var c$0=acc[2],size$0=_km_[2],p$3=_kl_[1]; switch$0 = 1; switch$3 = 1; switch$4 = 1}} - if(! switch$3){var c=acc[2],p$2=_kn_;switch$0 = 3} + if(! switch$3){var c=acc[2],p$2=_kl_;switch$0 = 3} break; case 4: - var _kp_=acc[1],switch$5=0; - if(typeof _kp_ !== "number" && 0 === _kp_[0]) - {var _kq_=_kp_[2],switch$6=0; - if(typeof _kq_ !== "number" && 1 === _kq_[0]) - {var s$0=acc[2],size=_kq_[2],p$1=_kp_[1]; + var _kn_=acc[1],switch$5=0; + if(typeof _kn_ !== "number" && 0 === _kn_[0]) + {var _ko_=_kn_[2],switch$6=0; + if(typeof _ko_ !== "number" && 1 === _ko_[0]) + {var s$0=acc[2],size=_ko_[2],p$1=_kn_[1]; switch$5 = 1; switch$6 = 1}} - if(! switch$5){var s=acc[2],p$0=_kp_;switch$0 = 2} + if(! switch$5){var s=acc[2],p$0=_kn_;switch$0 = 2} break; case 5: - var _kr_=acc[1],switch$7=0; - if(typeof _kr_ === "number" || ! (0 === _kr_[0])) + var _kp_=acc[1],switch$7=0; + if(typeof _kp_ === "number" || ! (0 === _kp_[0])) switch$7 = 1; else - {var _ks_=_kr_[2],switch$8=0; - if(typeof _ks_ !== "number" && 1 === _ks_[0]) - {var c$0=acc[2],size$0=_ks_[2],p$3=_kr_[1]; + {var _kq_=_kp_[2],switch$8=0; + if(typeof _kq_ !== "number" && 1 === _kq_[0]) + {var c$0=acc[2],size$0=_kq_[2],p$3=_kp_[1]; switch$0 = 1; switch$8 = 1} if(! switch$8)switch$7 = 1} - if(switch$7){var c=acc[2],p$2=_kr_;switch$0 = 3} + if(switch$7){var c=acc[2],p$2=_kp_;switch$0 = 3} break; case 6: - var _kt_=acc[1]; - if(typeof _kt_ !== "number" && 0 === _kt_[0]) - {var _ku_=_kt_[2]; - if(typeof _ku_ !== "number" && 1 === _ku_[0]) - {var f$1=acc[2],size$1=_ku_[2],p$4=_kt_[1]; + var _kr_=acc[1]; + if(typeof _kr_ !== "number" && 0 === _kr_[0]) + {var _ks_=_kr_[2]; + if(typeof _ks_ !== "number" && 1 === _ks_[0]) + {var f$1=acc[2],size$1=_ks_[2],p$4=_kr_[1]; strput_acc$0(ppf,p$4); return pp_print_as_size(ppf,size$1,caml_call1(f$1,0))}} var f$0=acc[2]; - strput_acc$0(ppf,_kt_); + strput_acc$0(ppf,_kr_); return pp_print_string(ppf,caml_call1(f$0,0)); case 7: var p$5=acc[1];strput_acc$0(ppf,p$5);return pp_print_flush(ppf,0); @@ -25019,28 +25501,28 @@ case 2:strput_acc$0(ppf,p$0);return pp_print_string(ppf,s); default:strput_acc$0(ppf,p$2);return pp_print_char(ppf,c)}} function kfprintf$0(k,ppf,param) - {var fmt=param[1],_ki_=0; + {var fmt=param[1],_kg_=0; return make_printf (function(acc){output_acc$0(ppf,acc);return caml_call1(k,ppf)}, - _ki_, + _kg_, fmt)} function ikfprintf$0(k,ppf,param) {var fmt=param[1];return make_iprintf(k,ppf,fmt)} function ifprintf$0(ppf,param) - {var fmt=param[1],_kg_=0; - return make_iprintf(function(_kh_){return 0},_kg_,fmt)} + {var fmt=param[1],_ke_=0; + return make_iprintf(function(_kf_){return 0},_ke_,fmt)} function fprintf$0(ppf) - {function _kd_(_kf_){return 0} - return function(_ke_){return kfprintf$0(_kd_,ppf,_ke_)}} + {function _kb_(_kd_){return 0} + return function(_kc_){return kfprintf$0(_kb_,ppf,_kc_)}} function printf$0(fmt){return caml_call1(fprintf$0(std_formatter),fmt)} function eprintf$0(fmt){return caml_call1(fprintf$0(err_formatter),fmt)} function kdprintf(k,param) - {var fmt=param[1],_kc_=0; + {var fmt=param[1],_ka_=0; return make_printf (function(acc) {return caml_call1 (k,function(ppf){return output_acc$0(ppf,acc)})}, - _kc_, + _ka_, fmt)} function dprintf(fmt){return kdprintf(function(i){return i},fmt)} function kprintf(k,param) @@ -25067,10 +25549,10 @@ return 0} function pp_get_all_formatter_output_fu(state,param) {return [0,state[17],state[18],state[19],state[20]]} - function set_all_formatter_output_funct(_j__,_j$_,_ka_,_kb_) - {return pp_set_all_formatter_output_fu(std_formatter,_j__,_j$_,_ka_,_kb_)} - function get_all_formatter_output_funct(_j9_) - {return pp_get_all_formatter_output_fu(std_formatter,_j9_)} + function set_all_formatter_output_funct(_j8_,_j9_,_j__,_j$_) + {return pp_set_all_formatter_output_fu(std_formatter,_j8_,_j9_,_j__,_j$_)} + function get_all_formatter_output_funct(_j7_) + {return pp_get_all_formatter_output_fu(std_formatter,_j7_)} function bprintf$0(b,param) {var fmt=param[1],ppf=formatter_of_buffer(b); function k(acc){output_acc$0(ppf,acc);return pp_flush_queue(ppf,0)} @@ -25080,12 +25562,12 @@ function stringify(f,e,param) {if(param[1] === String_tag){var s=param[2];return caml_call1(f,s)} return e} - state[24] = function(_j8_){return stringify(mot,cst$84,_j8_)}; - state[25] = function(_j7_){return stringify(mct,cst$85,_j7_)}; - var _j3_=0; - state[26] = function(_j6_){return stringify(pot,_j3_,_j6_)}; - var _j4_=0; - state[27] = function(_j5_){return stringify(pct,_j4_,_j5_)}; + state[24] = function(_j6_){return stringify(mot,cst$84,_j6_)}; + state[25] = function(_j5_){return stringify(mct,cst$85,_j5_)}; + var _j1_=0; + state[26] = function(_j4_){return stringify(pot,_j1_,_j4_)}; + var _j2_=0; + state[27] = function(_j3_){return stringify(pct,_j2_,_j3_)}; return 0} function pp_get_formatter_tag_functions(fmt,param) {var funs=pp_get_formatter_stag_function(fmt,0); @@ -25094,10 +25576,10 @@ function print_open_tag(s){return caml_call1(funs[3],[0,String_tag,s])} function print_close_tag(s){return caml_call1(funs[4],[0,String_tag,s])} return [0,mark_open_tag,mark_close_tag,print_open_tag,print_close_tag]} - function set_formatter_tag_functions(_j2_) - {return pp_set_formatter_tag_functions(std_formatter,_j2_)} - function get_formatter_tag_functions(_j1_) - {return pp_get_formatter_tag_functions(std_formatter,_j1_)} + function set_formatter_tag_functions(_j0_) + {return pp_set_formatter_tag_functions(std_formatter,_j0_)} + function get_formatter_tag_functions(_jZ_) + {return pp_get_formatter_tag_functions(std_formatter,_jZ_)} var Stdlib_Format= [0, @@ -25265,23 +25747,23 @@ ib[4] = ib[4] + 1 | 0; if(10 === c)ib[5] = ib[5] + 1 | 0; return c} - catch(_j0_) - {_j0_ = caml_wrap_exception(_j0_); - if(_j0_ === End_of_file) + catch(_jY_) + {_jY_ = caml_wrap_exception(_jY_); + if(_jY_ === End_of_file) {ib[2] = null_char;ib[3] = 0;ib[1] = 1;return null_char} - throw _j0_}} + throw _jY_}} function peek_char(ib){return ib[3]?ib[2]:next_char(ib)} function checked_peek_char(ib) {var c=peek_char(ib);if(ib[1])throw End_of_file;return c} function end_of_input(ib){peek_char(ib);return ib[1]} function beginning_of_input(ib){return 0 === ib[4]?1:0} function name_of_input(ib) - {var _jZ_=ib[9]; - if(typeof _jZ_ === "number") - return 0 === _jZ_?cst_unnamed_function:cst_unnamed_character_string; + {var _jX_=ib[9]; + if(typeof _jX_ === "number") + return 0 === _jX_?cst_unnamed_function:cst_unnamed_character_string; else - {if(0 === _jZ_[0])return cst_unnamed_Stdlib_input_chann; - var fname=_jZ_[1]; + {if(0 === _jX_[0])return cst_unnamed_Stdlib_input_chann; + var fname=_jX_[1]; return fname}} function char_count(ib){return ib[3]?ib[4] - 1 | 0:ib[4]} function reset_token(ib){return reset(ib[8])} @@ -25315,8 +25797,8 @@ i[1]++; return c} return create$4(1,next)} - var _cr_=0; - function from_function$0(_jY_){return create$4(_cr_,_jY_)} + var _cp_=0; + function from_function$0(_jW_){return create$4(_cp_,_jW_)} var len=1024; function scan_close_at_end(ic) {caml_ml_close_channel(ic);throw End_of_file} @@ -25337,42 +25819,42 @@ {var ic=caml_call1(open_in,fname); return from_ic(scan_close_at_end,[1,fname,ic],ic)} return stdib} - function from_file(_jX_){return open_in_file(open_text$0,_jX_)} - function from_file_bin(_jW_){return open_in_file(open_bin$0,_jW_)} + function from_file(_jV_){return open_in_file(open_text$0,_jV_)} + function from_file_bin(_jU_){return open_in_file(open_bin$0,_jU_)} function from_channel$0(ic){return from_ic(scan_raise_at_end,[0,ic],ic)} function close_in(ib) - {var _jV_=ib[9]; - if(typeof _jV_ === "number") + {var _jT_=ib[9]; + if(typeof _jT_ === "number") return 0; else - {if(0 === _jV_[0]){var ic=_jV_[1];return caml_ml_close_channel(ic)} - var ic$0=_jV_[2]; + {if(0 === _jT_[0]){var ic=_jT_[1];return caml_ml_close_channel(ic)} + var ic$0=_jT_[2]; return caml_ml_close_channel(ic$0)}} var memo=[0,0]; function memo_from_ic(scan_close_ic,ic) {try - {var _jT_=assq(ic,memo[1]);return _jT_} - catch(_jU_) - {_jU_ = caml_wrap_exception(_jU_); - if(_jU_ === Not_found) + {var _jR_=assq(ic,memo[1]);return _jR_} + catch(_jS_) + {_jS_ = caml_wrap_exception(_jS_); + if(_jS_ === Not_found) {var ib=from_ic(scan_close_ic,[0,ic],ic); memo[1] = [0,[0,ic,ib],memo[1]]; return ib} - throw _jU_}} - function memo_from_channel(_jS_) - {return memo_from_ic(scan_raise_at_end,_jS_)} + throw _jS_}} + function memo_from_channel(_jQ_) + {return memo_from_ic(scan_raise_at_end,_jQ_)} var Scan_failure=[248,cst_Stdlib_Scanf_Scan_failure,caml_fresh_oo_id(0)]; function bad_input(s){throw [0,Scan_failure,s]} function bad_input_escape(c) - {return bad_input(caml_call1(sprintf(_cs_),c))} + {return bad_input(caml_call1(sprintf(_cq_),c))} function bad_token_length(message) - {return bad_input(caml_call1(sprintf(_ct_),message))} + {return bad_input(caml_call1(sprintf(_cr_),message))} function bad_float(param) {return bad_input(cst_no_dot_or_exponent_part_fo)} function bad_hex_float(param) {return bad_input(cst_not_a_valid_float_in_hexad)} function character_mismatch(c,ci) - {return bad_input(caml_call2(sprintf(_cv_),c,ci))} + {return bad_input(caml_call2(sprintf(_ct_),c,ci))} function check_this_char(ib,c) {var ci=checked_peek_char(ib); return ci === c?invalidate_current_char(ib):character_mismatch(c,ci)} @@ -25386,23 +25868,23 @@ :character_mismatch(10,ci)} if(32 === c$0) for(;;) - {var c=peek_char(ib),_jQ_=1 - ib[1]; - if(_jQ_) - {var _jR_=c - 9 | 0,switch$0=0; - if(4 < _jR_ >>> 0) - {if(23 === _jR_)switch$0 = 1} + {var c=peek_char(ib),_jO_=1 - ib[1]; + if(_jO_) + {var _jP_=c - 9 | 0,switch$0=0; + if(4 < _jP_ >>> 0) + {if(23 === _jP_)switch$0 = 1} else - if(1 < _jR_ - 2 >>> 0)switch$0 = 1; + if(1 < _jP_ - 2 >>> 0)switch$0 = 1; if(switch$0){invalidate_current_char(ib);continue} return 0} - return _jQ_} + return _jO_} return check_this_char(ib,c$0)} function token_char(ib){return caml_string_get(token_string(ib),0)} function token_bool(ib) {var s=token_string(ib); return caml_string_notequal(s,cst_false$3) ?caml_string_notequal(s,cst_true$3) - ?bad_input(caml_call1(sprintf(_cw_),s)) + ?bad_input(caml_call1(sprintf(_cu_),s)) :1 :0} function integer_conversion_of_char(param) @@ -25417,7 +25899,7 @@ case 0: case 32:return 5 } - throw [0,Assert_failure,_cx_]} + throw [0,Assert_failure,_cv_]} function token_int_literal(conv,ib) {switch(conv) {case 0:var tok=cat(cst_0b,token_string(ib));break; @@ -25446,7 +25928,7 @@ function scan_unsigned_decimal_int(width,ib) {if(0 === width)return bad_token_length(cst_decimal_digits); var c=checked_peek_char(ib); - if(9 < c - 48 >>> 0)return bad_input(caml_call1(sprintf(_cy_),c)); + if(9 < c - 48 >>> 0)return bad_input(caml_call1(sprintf(_cw_),c)); var width$0=store_char(width,ib,c); return scan_decimal_digit_star(width$0,ib)} function scan_digit_plus(basis,digitp,width$2,ib) @@ -25463,22 +25945,22 @@ if(95 === c) {var width$1=ignore_char(width,ib),width=width$1;continue} return width}} - return bad_input(caml_call2(sprintf(_cz_),c$0,basis))} + return bad_input(caml_call2(sprintf(_cx_),c$0,basis))} function is_binary_digit(param){return 1 < param - 48 >>> 0?0:1} - function scan_binary_int(_jO_,_jP_) - {return scan_digit_plus(cst_binary,is_binary_digit,_jO_,_jP_)} + function scan_binary_int(_jM_,_jN_) + {return scan_digit_plus(cst_binary,is_binary_digit,_jM_,_jN_)} function is_octal_digit(param){return 7 < param - 48 >>> 0?0:1} - function scan_octal_int(_jM_,_jN_) - {return scan_digit_plus(cst_octal,is_octal_digit,_jM_,_jN_)} + function scan_octal_int(_jK_,_jL_) + {return scan_digit_plus(cst_octal,is_octal_digit,_jK_,_jL_)} function is_hexa_digit(param) - {var _jL_=param - 48 | 0,switch$0=0; - if(22 < _jL_ >>> 0) - {if(! (5 < _jL_ - 49 >>> 0))switch$0 = 1} + {var _jJ_=param - 48 | 0,switch$0=0; + if(22 < _jJ_ >>> 0) + {if(! (5 < _jJ_ - 49 >>> 0))switch$0 = 1} else - if(6 < _jL_ - 10 >>> 0)switch$0 = 1; + if(6 < _jJ_ - 10 >>> 0)switch$0 = 1; return switch$0?1:0} - function scan_hexadecimal_int(_jJ_,_jK_) - {return scan_digit_plus(cst_hexadecimal,is_hexa_digit,_jJ_,_jK_)} + function scan_hexadecimal_int(_jH_,_jI_) + {return scan_digit_plus(cst_hexadecimal,is_hexa_digit,_jH_,_jI_)} function scan_sign(width,ib) {var c=checked_peek_char(ib),switcher=c - 43 | 0; if(! (2 < switcher >>> 0)) @@ -25557,27 +26039,27 @@ var len=caml_ml_string_length(str), width$0=[0,width], - _jG_=len - 1 | 0, - _jF_=0; - if(! (_jG_ < 0)) - {var i=_jF_; + _jE_=len - 1 | 0, + _jD_=0; + if(! (_jE_ < 0)) + {var i=_jD_; for(;;) - {var c=peek_char(ib),_jH_=lowercase(caml_string_get(str,i)); - if(lowercase(c) !== _jH_)caml_call1(error,0); + {var c=peek_char(ib),_jF_=lowercase(caml_string_get(str,i)); + if(lowercase(c) !== _jF_)caml_call1(error,0); if(0 === width$0[1])caml_call1(error,0); width$0[1] = store_char(width$0[1],ib,c); - var _jI_=i + 1 | 0; - if(_jG_ !== i){var i=_jI_;continue} + var _jG_=i + 1 | 0; + if(_jE_ !== i){var i=_jG_;continue} break}} return width$0[1]} function scan_hex_float(width,precision,ib) - {var _js_=0 === width?1:0,_jt_=_js_ || end_of_input(ib); - if(_jt_)bad_hex_float(0); + {var _jq_=0 === width?1:0,_jr_=_jq_ || end_of_input(ib); + if(_jr_)bad_hex_float(0); var width$0=scan_sign(width,ib), - _ju_=0 === width$0?1:0, - _jv_=_ju_ || end_of_input(ib); - if(_jv_)bad_hex_float(0); + _js_=0 === width$0?1:0, + _jt_=_js_ || end_of_input(ib); + if(_jt_)bad_hex_float(0); var c=peek_char(ib),switch$0=0; if(78 <= c) {var switcher=c - 79 | 0; @@ -25585,9 +26067,9 @@ {if(! (32 <= switcher)) {var width$1=store_char(width$0,ib,c), - _jw_=0 === width$1?1:0, - _jx_=_jw_ || end_of_input(ib); - if(_jx_)bad_hex_float(0); + _ju_=0 === width$1?1:0, + _jv_=_ju_ || end_of_input(ib); + if(_jv_)bad_hex_float(0); return check_case_insensitive_string (width$1,ib,bad_hex_float,cst_an)}} else @@ -25596,18 +26078,18 @@ {if(48 === c) {var width$3=store_char(width$0,ib,c), - _jA_=0 === width$3?1:0, - _jB_=_jA_ || end_of_input(ib); - if(_jB_)bad_hex_float(0); + _jy_=0 === width$3?1:0, + _jz_=_jy_ || end_of_input(ib); + if(_jz_)bad_hex_float(0); var width$4= check_case_insensitive_string(width$3,ib,bad_hex_float,cst_x$2); if(0 !== width$4 && ! end_of_input(ib)) - {var match=peek_char(ib),_jC_=match - 46 | 0,switch$1=0; - if(34 < _jC_ >>> 0) - {if(66 === _jC_)switch$1 = 1} + {var match=peek_char(ib),_jA_=match - 46 | 0,switch$1=0; + if(34 < _jA_ >>> 0) + {if(66 === _jA_)switch$1 = 1} else - if(32 < _jC_ - 1 >>> 0)switch$1 = 1; + if(32 < _jA_ - 1 >>> 0)switch$1 = 1; var width$5=switch$1?width$4:scan_hexadecimal_int(width$4,ib); if(0 !== width$5 && ! end_of_input(ib)) {var c$0=peek_char(ib); @@ -25637,9 +26119,9 @@ if(80 !== c$1 && 112 !== c$1)return width$8; var width$9=store_char(width$8,ib,c$1), - _jD_=0 === width$9?1:0, - _jE_=_jD_ || end_of_input(ib); - if(_jE_)bad_hex_float(0); + _jB_=0 === width$9?1:0, + _jC_=_jB_ || end_of_input(ib); + if(_jC_)bad_hex_float(0); return scan_optionally_signed_decimal(width$9,ib)} return width$8} return width$5} @@ -25648,20 +26130,20 @@ if(switch$0) {var width$2=store_char(width$0,ib,c), - _jy_=0 === width$2?1:0, - _jz_=_jy_ || end_of_input(ib); - if(_jz_)bad_hex_float(0); + _jw_=0 === width$2?1:0, + _jx_=_jw_ || end_of_input(ib); + if(_jx_)bad_hex_float(0); return check_case_insensitive_string (width$2,ib,bad_hex_float,cst_nfinity)} return bad_hex_float(0)} function scan_caml_float_rest(width,precision,ib) - {var _jo_=0 === width?1:0,_jp_=_jo_ || end_of_input(ib); - if(_jp_)bad_float(0); + {var _jm_=0 === width?1:0,_jn_=_jm_ || end_of_input(ib); + if(_jn_)bad_float(0); var width$0=scan_decimal_digit_star(width,ib), - _jq_=0 === width$0?1:0, - _jr_=_jq_ || end_of_input(ib); - if(_jr_)bad_float(0); + _jo_=0 === width$0?1:0, + _jp_=_jo_ || end_of_input(ib); + if(_jp_)bad_float(0); var c=peek_char(ib),switcher=c - 69 | 0; if(32 < switcher >>> 0) {if(-23 === switcher) @@ -25676,42 +26158,42 @@ if(30 < switcher - 1 >>> 0)return scan_exponent_part(width$0,ib); return bad_float(0)} function scan_caml_float(width,precision,ib) - {var _ja_=0 === width?1:0,_jb_=_ja_ || end_of_input(ib); - if(_jb_)bad_float(0); + {var _i__=0 === width?1:0,_i$_=_i__ || end_of_input(ib); + if(_i$_)bad_float(0); var width$0=scan_sign(width,ib), - _jc_=0 === width$0?1:0, - _jd_=_jc_ || end_of_input(ib); - if(_jd_)bad_float(0); + _ja_=0 === width$0?1:0, + _jb_=_ja_ || end_of_input(ib); + if(_jb_)bad_float(0); var c=peek_char(ib); if(49 <= c) {if(! (58 <= c)) {var width$1=store_char(width$0,ib,c), - _je_=0 === width$1?1:0, - _jf_=_je_ || end_of_input(ib); - if(_jf_)bad_float(0); + _jc_=0 === width$1?1:0, + _jd_=_jc_ || end_of_input(ib); + if(_jd_)bad_float(0); return scan_caml_float_rest(width$1,precision,ib)}} else if(48 <= c) {var width$2=store_char(width$0,ib,c), - _jg_=0 === width$2?1:0, - _jh_=_jg_ || end_of_input(ib); - if(_jh_)bad_float(0); + _je_=0 === width$2?1:0, + _jf_=_je_ || end_of_input(ib); + if(_jf_)bad_float(0); var c$0=peek_char(ib); if(88 !== c$0 && 120 !== c$0) return scan_caml_float_rest(width$2,precision,ib); var width$3=store_char(width$2,ib,c$0), - _ji_=0 === width$3?1:0, - _jj_=_ji_ || end_of_input(ib); - if(_jj_)bad_float(0); + _jg_=0 === width$3?1:0, + _jh_=_jg_ || end_of_input(ib); + if(_jh_)bad_float(0); var width$4=scan_hexadecimal_int(width$3,ib), - _jk_=0 === width$4?1:0, - _jl_=_jk_ || end_of_input(ib); - if(_jl_)bad_float(0); + _ji_=0 === width$4?1:0, + _jj_=_ji_ || end_of_input(ib); + if(_jj_)bad_float(0); var c$1=peek_char(ib),switcher=c$1 - 80 | 0,switch$0=0; if(32 < switcher >>> 0) if(-34 === switcher) @@ -25743,9 +26225,9 @@ if(80 !== c$2 && 112 !== c$2)return width$8; var width$9=store_char(width$8,ib,c$2), - _jm_=0 === width$9?1:0, - _jn_=_jm_ || end_of_input(ib); - if(_jn_)bad_hex_float(0); + _jk_=0 === width$9?1:0, + _jl_=_jk_ || end_of_input(ib); + if(_jl_)bad_hex_float(0); return scan_optionally_signed_decimal(width$9,ib)} return width$8} return bad_float(0)} @@ -25760,11 +26242,11 @@ if(c === c$0)return skip_char(width$0,ib); var width$1=store_char(width$0,ib,c),width$0=width$1; continue} - var _i$_=c - 9 | 0,switch$0=0; - if(4 < _i$_ >>> 0) - {if(23 === _i$_)switch$0 = 1} + var _i9_=c - 9 | 0,switch$0=0; + if(4 < _i9_ >>> 0) + {if(23 === _i9_)switch$0 = 1} else - if(1 < _i$_ - 2 >>> 0)switch$0 = 1; + if(1 < _i9_ - 2 >>> 0)switch$0 = 1; if(switch$0)return width$0; var width$2=store_char(width$0,ib,c),width$0=width$2; continue}} @@ -25775,11 +26257,11 @@ function check_next_char(message,width,ib) {if(0 === width)return bad_token_length(message); var c=peek_char(ib); - return ib[1]?bad_input(caml_call1(sprintf(_cu_),message)):c} - function check_next_char_for_char(_i9_,_i__) - {return check_next_char(cst_a_Char,_i9_,_i__)} - function check_next_char_for_string(_i7_,_i8_) - {return check_next_char(cst_a_String,_i7_,_i8_)} + return ib[1]?bad_input(caml_call1(sprintf(_cs_),message)):c} + function check_next_char_for_char(_i7_,_i8_) + {return check_next_char(cst_a_Char,_i7_,_i8_)} + function check_next_char_for_string(_i5_,_i6_) + {return check_next_char(cst_a_String,_i5_,_i6_)} function scan_backslash_char(width,ib) {var c0=check_next_char_for_char(width,ib),switch$0=0; if(40 <= c0) @@ -25791,22 +26273,22 @@ var get_digit= function(param) - {var c=next_char(ib),_i6_=c - 48 | 0,switch$0=0; - if(22 < _i6_ >>> 0) - {if(! (5 < _i6_ - 49 >>> 0))switch$0 = 1} + {var c=next_char(ib),_i4_=c - 48 | 0,switch$0=0; + if(22 < _i4_ >>> 0) + {if(! (5 < _i4_ - 49 >>> 0))switch$0 = 1} else - if(6 < _i6_ - 10 >>> 0)switch$0 = 1; + if(6 < _i4_ - 10 >>> 0)switch$0 = 1; return switch$0?c:bad_input_escape(c)}, c1=get_digit(0), c2=get_digit(0), - _i2_=hexadecimal_value_of_char(c2), - c$0=(16 * hexadecimal_value_of_char(c1) | 0) + _i2_ | 0, + _i0_=hexadecimal_value_of_char(c2), + c$0=(16 * hexadecimal_value_of_char(c1) | 0) + _i0_ | 0, switch$1=0; if(0 <= c$0 && ! (255 < c$0)) - {var _i4_=char_of_int(c$0);switch$1 = 1} + {var _i2_=char_of_int(c$0);switch$1 = 1} if(! switch$1) - var _i4_=bad_input(caml_call2(sprintf(_cB_),c1,c2)); - return store_char(width - 2 | 0,ib,_i4_); + var _i2_=bad_input(caml_call2(sprintf(_cz_),c1,c2)); + return store_char(width - 2 | 0,ib,_i2_); case 0: case 6: case 18: @@ -25829,10 +26311,10 @@ | 0, switch$2=0; - if(0 <= c && ! (255 < c)){var _i5_=char_of_int(c);switch$2 = 1} + if(0 <= c && ! (255 < c)){var _i3_=char_of_int(c);switch$2 = 1} if(! switch$2) - var _i5_=bad_input(caml_call3(sprintf(_cA_),c0,c1$0,c2$0)); - return store_char(width - 2 | 0,ib,_i5_)}} + var _i3_=bad_input(caml_call3(sprintf(_cy_),c0,c1$0,c2$0)); + return store_char(width - 2 | 0,ib,_i3_)}} else if(34 === c0 || 39 <= c0)switch$0 = 1; if(switch$0) @@ -25842,14 +26324,14 @@ switch$3 = 1; else switch(c0 - 110 | 0) - {case 0:var _i3_=10;break; - case 4:var _i3_=13;break; - case 6:var _i3_=9;break; + {case 0:var _i1_=10;break; + case 4:var _i1_=13;break; + case 6:var _i1_=9;break; default:switch$3 = 1} else - if(98 === c0)var _i3_=8;else switch$3 = 1; - if(switch$3)var _i3_=c0; - return store_char(width,ib,_i3_)} + if(98 === c0)var _i1_=8;else switch$3 = 1; + if(switch$3)var _i1_=c0; + return store_char(width,ib,_i1_)} return bad_input_escape(c0)} function scan_caml_char(width,ib) {function find_stop(width) @@ -25875,21 +26357,21 @@ width$1=ignore_char(width$0,ib), match=check_next_char_for_string(width$1,ib); if(10 === match) - {var _i0_=ignore_char(width$1,ib); + {var _iY_=ignore_char(width$1,ib); if(counter < 50) {var counter$0=counter + 1 | 0; - return skip_spaces(counter$0,_i0_)} - return caml_trampoline_return(skip_spaces,[0,_i0_])} + return skip_spaces(counter$0,_iY_)} + return caml_trampoline_return(skip_spaces,[0,_iY_])} if(13 === match) {var width$3=ignore_char(width$1,ib), match$0=check_next_char_for_string(width$3,ib); if(10 === match$0) - {var _i1_=ignore_char(width$3,ib); + {var _iZ_=ignore_char(width$3,ib); if(counter < 50) {var counter$1=counter + 1 | 0; - return skip_spaces(counter$1,_i1_)} - return caml_trampoline_return(skip_spaces,[0,_i1_])} + return skip_spaces(counter$1,_iZ_)} + return caml_trampoline_return(skip_spaces,[0,_iZ_])} var width$5=store_char(width$3,ib,13),width$0=width$5; continue} var width$4=scan_backslash_char(width$1,ib),width$0=width$4; @@ -25915,26 +26397,26 @@ {function scan_chars(i,stp) {var i$0=i; for(;;) - {var c=peek_char(ib),_iW_=0 < i$0?1:0; - if(_iW_) - {var _iX_=1 - ib[1]; - if(_iX_) - var _iY_=is_in_char_set(char_set,c),_iZ_=_iY_?c !== stp?1:0:_iY_; + {var c=peek_char(ib),_iU_=0 < i$0?1:0; + if(_iU_) + {var _iV_=1 - ib[1]; + if(_iV_) + var _iW_=is_in_char_set(char_set,c),_iX_=_iW_?c !== stp?1:0:_iW_; else - var _iZ_=_iX_} + var _iX_=_iV_} else - var _iZ_=_iW_; - if(_iZ_) + var _iX_=_iU_; + if(_iX_) {store_char(max_int,ib,c);var i$1=i$0 - 1 | 0,i$0=i$1;continue} - return _iZ_}} + return _iX_}} if(scan_indic) {var c=scan_indic[1]; scan_chars(width,c); - var _iV_=1 - ib[1]; - if(_iV_) + var _iT_=1 - ib[1]; + if(_iT_) {var ci=peek_char(ib); return c === ci?invalidate_current_char(ib):character_mismatch(c,ci)} - return _iV_} + return _iT_} return scan_chars(width,-1)} function scanf_bad_input(ib,x) {if(x[1] === Scan_failure) @@ -25942,14 +26424,14 @@ else {if(x[1] !== Failure)throw x;var s=x[2]} var i=char_count(ib); - return bad_input(caml_call2(sprintf(_cD_),i,s))} + return bad_input(caml_call2(sprintf(_cB_),i,s))} function get_counter(ib,counter) {switch(counter) {case 0:return ib[5];case 1:return char_count(ib);default:return ib[6]}} function width_of_pad_opt(pad_opt) {if(pad_opt){var width=pad_opt[1];return width}return max_int} function stopper_of_formatting_lit(fmting) - {if(6 === fmting)return _cE_; + {if(6 === fmting)return _cC_; var str=string_of_formatting_lit(fmting), stp=caml_string_get(str,1), @@ -25977,28 +26459,28 @@ case 12:var fmt$13=fmt$0[2],fmt$0=fmt$13;continue; case 13:var fmt$14=fmt$0[3],fmt$0=fmt$14;continue; case 14: - var rest=fmt$0[3],fmtty=fmt$0[2],_iT_=erase_rel(symm(fmtty)); + var rest=fmt$0[3],fmtty=fmt$0[2],_iR_=erase_rel(symm(fmtty)); if(counter < 50) {var counter$0=counter + 1 | 0; - return take_fmtty_format_readers$0(counter$0,k,_iT_,rest)} + return take_fmtty_format_readers$0(counter$0,k,_iR_,rest)} return caml_trampoline_return - (take_fmtty_format_readers$0,[0,k,_iT_,rest]); + (take_fmtty_format_readers$0,[0,k,_iR_,rest]); case 15:var fmt$15=fmt$0[1],fmt$0=fmt$15;continue; case 16:var fmt$16=fmt$0[1],fmt$0=fmt$16;continue; case 17:var fmt$17=fmt$0[2],fmt$0=fmt$17;continue; case 18: - var _iU_=fmt$0[1]; - if(0 === _iU_[0]) + var _iS_=fmt$0[1]; + if(0 === _iS_[0]) {var rest$0=fmt$0[2], - match=_iU_[1], + match=_iS_[1], fmt$18=match[1], fmt$19=concat_fmt(fmt$18,rest$0), fmt$0=fmt$19; continue} var rest$1=fmt$0[2], - match$0=_iU_[1], + match$0=_iS_[1], fmt$20=match$0[1], fmt$21=concat_fmt(fmt$20,rest$1), fmt$0=fmt$21; @@ -26093,6 +26575,32 @@ {return caml_trampoline(take_format_readers$0(0,k,fmt))} function take_fmtty_format_readers(k,fmtty,fmt) {return caml_trampoline(take_fmtty_format_readers$0(0,k,fmtty,fmt))} + function pad_prec_scanf(ib,fmt,readers,pad,prec,scan,token) + {if(typeof pad === "number") + {if(typeof prec === "number") + {if(prec)return invalid_arg(cst_scanf_bad_conversion); + caml_call3(scan,max_int,max_int,ib); + var x=caml_call1(token,ib); + return [0,x,make_scanf(ib,fmt,readers)]} + var p=prec[1]; + caml_call3(scan,max_int,p,ib); + var x$0=caml_call1(token,ib); + return [0,x$0,make_scanf(ib,fmt,readers)]} + else + {if(0 === pad[0]) + {if(pad[1]) + {var _iQ_=pad[2]; + if(typeof prec === "number") + {if(prec)return invalid_arg(cst_scanf_bad_conversion$0); + caml_call3(scan,_iQ_,max_int,ib); + var x$1=caml_call1(token,ib); + return [0,x$1,make_scanf(ib,fmt,readers)]} + var p$0=prec[1]; + caml_call3(scan,_iQ_,p$0,ib); + var x$2=caml_call1(token,ib); + return [0,x$2,make_scanf(ib,fmt,readers)]} + return invalid_arg(cst_scanf_bad_conversion$1)} + return invalid_arg(cst_scanf_bad_conversion$2)}} function make_scanf(ib,fmt,readers) {var fmt$0=fmt; for(;;) @@ -26111,13 +26619,13 @@ var c$0=token_char(ib); return [0,c$0,make_scanf(ib,rest$0,readers)]; case 2: - var _iG_=fmt$0[1],_iH_=fmt$0[2]; - if(typeof _iH_ !== "number") - switch(_iH_[0]) + var _iD_=fmt$0[1],_iE_=fmt$0[2]; + if(typeof _iE_ !== "number") + switch(_iE_[0]) {case 17: var - rest$2=_iH_[2], - fmting_lit=_iH_[1], + rest$2=_iE_[2], + fmting_lit=_iE_[1], match=stopper_of_formatting_lit(fmting_lit), str=match[2], stp=match[1], @@ -26126,35 +26634,35 @@ {return scan_string([0,stp],width,ib)}, str_rest=[11,str,rest$2]; return pad_prec_scanf - (ib,str_rest,readers,_iG_,0,scan$0,token_string); + (ib,str_rest,readers,_iD_,0,scan$0,token_string); case 18: - var _iI_=_iH_[1]; - if(0 === _iI_[0]) + var _iF_=_iE_[1]; + if(0 === _iF_[0]) {var - rest$3=_iH_[2], - match$0=_iI_[1], + rest$3=_iE_[2], + match$0=_iF_[1], fmt$1=match$0[1], scan$1= - function(width,param,ib){return scan_string(_cF_,width,ib)}; + function(width,param,ib){return scan_string(_cD_,width,ib)}; return pad_prec_scanf (ib, concat_fmt(fmt$1,rest$3), readers, - _iG_, + _iD_, 0, scan$1, token_string)} var - rest$4=_iH_[2], - match$1=_iI_[1], + rest$4=_iE_[2], + match$1=_iF_[1], fmt$2=match$1[1], scan$2= - function(width,param,ib){return scan_string(_cG_,width,ib)}; + function(width,param,ib){return scan_string(_cE_,width,ib)}; return pad_prec_scanf (ib, concat_fmt(fmt$2,rest$4), readers, - _iG_, + _iD_, 0, scan$2, token_string) @@ -26162,7 +26670,7 @@ var rest$1=fmt$0[2], scan=function(width,param,ib){return scan_string(0,width,ib)}; - return pad_prec_scanf(ib,rest$1,readers,_iG_,0,scan,token_string); + return pad_prec_scanf(ib,rest$1,readers,_iD_,0,scan,token_string); case 3: var rest$5=fmt$0[2], @@ -26272,13 +26780,13 @@ rest$13=fmt$0[2], pad$7=fmt$0[1], scan$8= - function(param,_iS_,ib) + function(param,_iP_,ib) {var c=checked_peek_char(ib), m= 102 === c ?5 - :116 === c?4:bad_input(caml_call1(sprintf(_cC_),c)); + :116 === c?4:bad_input(caml_call1(sprintf(_cA_),c)); return scan_string(0,m,ib)}; return pad_prec_scanf(ib,rest$13,readers,pad$7,0,scan$8,token_bool); case 10: @@ -26287,7 +26795,7 @@ return bad_input(cst_end_of_input_not_found); case 11: var rest$15=fmt$0[2],str$0=fmt$0[1]; - iter$4(function(_iR_){return check_char(ib,_iR_)},str$0); + iter$4(function(_iO_){return check_char(ib,_iO_)},str$0); var fmt$0=rest$15; continue; case 12: @@ -26300,7 +26808,7 @@ scan_caml_string(width_of_pad_opt(pad_opt),ib); var s=token_string(ib); try - {var _iJ_=format_of_string_fmtty(s,fmtty),fmt$3=_iJ_} + {var _iG_=format_of_string_fmtty(s,fmtty),fmt$3=_iG_} catch(exn) {exn = caml_wrap_exception(exn); if(exn[1] !== Failure)throw exn; @@ -26317,17 +26825,17 @@ match$3=fmt_ebb_of_string(0,s$0), fmt$7=match$3[1], fmt$8=type_format(fmt$7,erase_rel(symm(fmtty$0))), - _iL_=type_format(fmt$6,erase_rel(fmtty$0)), + _iI_=type_format(fmt$6,erase_rel(fmtty$0)), fmt$5=fmt$8, - fmt$4=_iL_} + fmt$4=_iI_} catch(exn) {exn = caml_wrap_exception(exn); if(exn[1] !== Failure)throw exn; var msg$0=exn[2], - _iK_=bad_input(msg$0), - fmt$5=_iK_[2], - fmt$4=_iK_[1]} + _iH_=bad_input(msg$0), + fmt$5=_iH_[2], + fmt$4=_iH_[1]} return [0, [0,fmt$4,s$0], make_scanf(ib,concat_fmt(fmt$5,rest$18),readers)]; @@ -26337,19 +26845,19 @@ var rest$19=fmt$0[2], formatting_lit=fmt$0[1], - _iM_=string_of_formatting_lit(formatting_lit); - iter$4(function(_iQ_){return check_char(ib,_iQ_)},_iM_); + _iJ_=string_of_formatting_lit(formatting_lit); + iter$4(function(_iN_){return check_char(ib,_iN_)},_iJ_); var fmt$0=rest$19; continue; case 18: - var _iN_=fmt$0[1]; - if(0 === _iN_[0]) - {var rest$20=fmt$0[2],match$4=_iN_[1],fmt$9=match$4[1]; + var _iK_=fmt$0[1]; + if(0 === _iK_[0]) + {var rest$20=fmt$0[2],match$4=_iK_[1],fmt$9=match$4[1]; check_char(ib,64); check_char(ib,123); var fmt$10=concat_fmt(fmt$9,rest$20),fmt$0=fmt$10; continue} - var rest$21=fmt$0[2],match$5=_iN_[1],fmt$11=match$5[1]; + var rest$21=fmt$0[2],match$5=_iK_[1],fmt$11=match$5[1]; check_char(ib,64); check_char(ib,91); var fmt$12=concat_fmt(fmt$11,rest$21),fmt$0=fmt$12; @@ -26364,23 +26872,23 @@ return [0,x,make_scanf(ib,fmt_rest,readers_rest)]} return invalid_arg(cst_scanf_missing_reader); case 20: - var _iO_=fmt$0[1],_iP_=fmt$0[3]; - if(typeof _iP_ !== "number" && 17 === _iP_[0]) + var _iL_=fmt$0[1],_iM_=fmt$0[3]; + if(typeof _iM_ !== "number" && 17 === _iM_[0]) {var - rest$23=_iP_[2], - fmting_lit$0=_iP_[1], + rest$23=_iM_[2], + fmting_lit$0=_iM_[1], char_set$0=fmt$0[2], match$6=stopper_of_formatting_lit(fmting_lit$0), str$1=match$6[2], stp$0=match$6[1], - width$0=width_of_pad_opt(_iO_); + width$0=width_of_pad_opt(_iL_); scan_chars_in_char_set(char_set$0,[0,stp$0],width$0,ib); var s$2=token_string(ib),str_rest$0=[11,str$1,rest$23]; return [0,s$2,make_scanf(ib,str_rest$0,readers)]} var rest$22=fmt$0[3], char_set=fmt$0[2], - width=width_of_pad_opt(_iO_); + width=width_of_pad_opt(_iL_); scan_chars_in_char_set(char_set,0,width,ib); var s$1=token_string(ib); return [0,s$1,make_scanf(ib,rest$22,readers)]; @@ -26401,34 +26909,8 @@ fmt$13=match$7[1], match$8=make_scanf(ib,fmt$13,readers); if(match$8){var arg_rest=match$8[2];return arg_rest} - throw [0,Assert_failure,_cH_]; + throw [0,Assert_failure,_cF_]; default:return invalid_arg(cst_scanf_bad_conversion_custo)}} - function pad_prec_scanf(ib,fmt,readers,pad,prec,scan,token) - {if(typeof pad === "number") - {if(typeof prec === "number") - {if(prec)return invalid_arg(cst_scanf_bad_conversion); - caml_call3(scan,max_int,max_int,ib); - var x=caml_call1(token,ib); - return [0,x,make_scanf(ib,fmt,readers)]} - var p=prec[1]; - caml_call3(scan,max_int,p,ib); - var x$0=caml_call1(token,ib); - return [0,x$0,make_scanf(ib,fmt,readers)]} - else - {if(0 === pad[0]) - {if(pad[1]) - {var _iF_=pad[2]; - if(typeof prec === "number") - {if(prec)return invalid_arg(cst_scanf_bad_conversion$0); - caml_call3(scan,_iF_,max_int,ib); - var x$1=caml_call1(token,ib); - return [0,x$1,make_scanf(ib,fmt,readers)]} - var p$0=prec[1]; - caml_call3(scan,_iF_,p$0,ib); - var x$2=caml_call1(token,ib); - return [0,x$2,make_scanf(ib,fmt,readers)]} - return invalid_arg(cst_scanf_bad_conversion$1)} - return invalid_arg(cst_scanf_bad_conversion$2)}} function kscanf(ib,ef,param) {var str=param[2],fmt=param[1]; function apply(f,args) @@ -26446,7 +26928,7 @@ function k(readers,f) {reset_token(ib); try - {var _iE_=[0,make_scanf(ib,fmt,readers)],_iD_=_iE_} + {var _iC_=[0,make_scanf(ib,fmt,readers)],_iB_=_iC_} catch(exc) {exc = caml_wrap_exception(exc); var switch$0=0; @@ -26465,14 +26947,14 @@ {if(exc[1] !== Invalid_argument)throw exc; var msg=exc[2], - _iC_= + _iA_= invalid_arg (cat(msg,cat(cst_in_format,cat(escaped$1(str),cst$88)))); switch$0 = 1} - if(! switch$0)var _iC_=[1,exc]; - var _iD_=_iC_} - if(0 === _iD_[0]){var args=_iD_[1];return apply(f,args)} - var exc=_iD_[1]; + if(! switch$0)var _iA_=[1,exc]; + var _iB_=_iA_} + if(0 === _iB_[0]){var args=_iB_[1];return apply(f,args)} + var exc=_iB_[1]; return caml_call2(ef,ib,exc)} return take_format_readers(k,fmt)} function bscanf(ib,fmt){return kscanf(ib,scanf_bad_input,fmt)} @@ -26484,7 +26966,7 @@ {scan_caml_string(max_int,ib); var str=token_string(ib); try - {var _iB_=format_of_string_format(str,format),fmt=_iB_} + {var _iz_=format_of_string_format(str,format),fmt=_iz_} catch(exn) {exn = caml_wrap_exception(exn); if(exn[1] !== Failure)throw exn; @@ -26493,11 +26975,11 @@ function sscanf_format(s,format,f) {return bscanf_format(from_string$1(s),format,f)} function format_from_string(s,fmt) - {function _iA_(x){return x} - return sscanf_format(cat(cst$90,cat(escaped$1(s),cst$89)),fmt,_iA_)} + {function _iy_(x){return x} + return sscanf_format(cat(cst$90,cat(escaped$1(s),cst$89)),fmt,_iy_)} function unescaped(s) - {function _iz_(x){return x} - return caml_call1(sscanf(cat(cst$92,cat(s,cst$91)),_cI_),_iz_)} + {function _ix_(x){return x} + return caml_call1(sscanf(cat(cst$92,cat(s,cst$91)),_cG_),_ix_)} function kfscanf(ic,ef,fmt){return kscanf(memo_from_channel(ic),ef,fmt)} function fscanf(ic,fmt) {return kscanf(memo_from_channel(ic),scanf_bad_input,fmt)} @@ -26540,14 +27022,14 @@ function copy$7(o){var o$0=o.slice();return caml_set_oo_id(o$0)} var params$0=[0,1,1,1,3,16],initial_object_size=2,dummy_item=0; function public_method_label(s) - {var accu=[0,0],_iw_=caml_ml_string_length(s) - 1 | 0,_iv_=0; - if(! (_iw_ < 0)) - {var i=_iv_; + {var accu=[0,0],_iu_=caml_ml_string_length(s) - 1 | 0,_it_=0; + if(! (_iu_ < 0)) + {var i=_it_; for(;;) - {var _ix_=caml_string_get(s,i); - accu[1] = (223 * accu[1] | 0) + _ix_ | 0; - var _iy_=i + 1 | 0; - if(_iw_ !== i){var i=_iy_;continue} + {var _iv_=caml_string_get(s,i); + accu[1] = (223 * accu[1] | 0) + _iv_ | 0; + var _iw_=i + 1 | 0; + if(_iu_ !== i){var i=_iw_;continue} break}} accu[1] = accu[1] & 2147483647; var tag=1073741823 < accu[1]?accu[1] + 2147483648 | 0:accu[1]; @@ -26569,30 +27051,30 @@ len=pub_labels.length - 1, methods=caml_make_vect((len * 2 | 0) + 2 | 0,dummy_met); caml_check_bound(methods,0)[1] = len; - var _ip_=((fit_size(len) * 32 | 0) / 8 | 0) - 1 | 0; - caml_check_bound(methods,1)[2] = _ip_; - var _ir_=len - 1 | 0,_iq_=0; - if(! (_ir_ < 0)) - {var i=_iq_; + var _in_=((fit_size(len) * 32 | 0) / 8 | 0) - 1 | 0; + caml_check_bound(methods,1)[2] = _in_; + var _ip_=len - 1 | 0,_io_=0; + if(! (_ip_ < 0)) + {var i=_io_; for(;;) {var - _it_=(i * 2 | 0) + 3 | 0, - _is_=caml_check_bound(pub_labels,i)[1 + i]; - caml_check_bound(methods,_it_)[1 + _it_] = _is_; - var _iu_=i + 1 | 0; - if(_ir_ !== i){var i=_iu_;continue} + _ir_=(i * 2 | 0) + 3 | 0, + _iq_=caml_check_bound(pub_labels,i)[1 + i]; + caml_check_bound(methods,_ir_)[1 + _ir_] = _iq_; + var _is_=i + 1 | 0; + if(_ip_ !== i){var i=_is_;continue} break}} return [0,initial_object_size,methods,Meths[1],Labs[1],0,0,Vars[1],0]} function resize$1(array,new_size) - {var old_size=array[2].length - 1,_in_=old_size < new_size?1:0; - if(_in_) + {var old_size=array[2].length - 1,_il_=old_size < new_size?1:0; + if(_il_) {var new_buck=caml_make_vect(new_size,dummy_met); blit$1(array[2],0,new_buck,0,old_size); array[2] = new_buck; - var _io_=0} + var _im_=0} else - var _io_=_in_; - return _io_} + var _im_=_il_; + return _im_} var method_count=[0,0],inst_var_count=[0,0]; function new_method(table) {var index=table[2].length - 1; @@ -26600,17 +27082,17 @@ return index} function get_method_label(table,name) {try - {var _il_=caml_call2(Meths[28],name,table[3]);return _il_} - catch(_im_) - {_im_ = caml_wrap_exception(_im_); - if(_im_ === Not_found) + {var _ij_=caml_call2(Meths[28],name,table[3]);return _ij_} + catch(_ik_) + {_ik_ = caml_wrap_exception(_ik_); + if(_ik_ === Not_found) {var label=new_method(table); table[3] = caml_call3(Meths[4],name,label,table[3]); table[4] = caml_call3(Labs[4],label,1,table[4]); return label} - throw _im_}} + throw _ik_}} function get_method_labels(table,names) - {return map$7(function(_ik_){return get_method_label(table,_ik_)},names)} + {return map$7(function(_ii_){return get_method_label(table,_ii_)},names)} function set_method(table,label,element) {method_count[1]++; return caml_call2(Labs[28],label,table[4]) @@ -26622,12 +27104,12 @@ :(table[6] = [0,[0,label,element],table[6]],0)} function get_method(table,label) {try - {var _ii_=assoc(label,table[6]);return _ii_} - catch(_ij_) - {_ij_ = caml_wrap_exception(_ij_); - if(_ij_ === Not_found) + {var _ig_=assoc(label,table[6]);return _ig_} + catch(_ih_) + {_ih_ = caml_wrap_exception(_ih_); + if(_ih_ === Not_found) return caml_check_bound(table[2],label)[1 + label]; - throw _ij_}} + throw _ih_}} function to_list$3(arr){return 0 === arr?0:to_list$1(arr)} function narrow(table,vars,virt_meths,concr_meths) {var @@ -26636,31 +27118,31 @@ concr_meths$0=to_list$3(concr_meths), virt_meth_labs= map$4 - (function(_ih_){return get_method_label(table,_ih_)},virt_meths$0), + (function(_if_){return get_method_label(table,_if_)},virt_meths$0), concr_meth_labs= map$4 - (function(_ig_){return get_method_label(table,_ig_)},concr_meths$0); + (function(_ie_){return get_method_label(table,_ie_)},concr_meths$0); table[5] = [0, [0,table[3],table[4],table[6],table[7],virt_meth_labs,vars$0], table[5]]; - var _h9_=Vars[1],_h__=table[7]; - function _h$_(lab,info,tvars) + var _h7_=Vars[1],_h8_=table[7]; + function _h9_(lab,info,tvars) {return mem(lab,vars$0)?caml_call3(Vars[4],lab,info,tvars):tvars} - table[7] = caml_call3(Vars[13],_h$_,_h__,_h9_); + table[7] = caml_call3(Vars[13],_h9_,_h8_,_h7_); var by_name=[0,Meths[1]],by_label=[0,Labs[1]]; iter2$0 (function(met,label) {by_name[1] = caml_call3(Meths[4],met,label,by_name[1]); - var _ic_=by_label[1]; + var _ia_=by_label[1]; try - {var _ie_=caml_call2(Labs[28],label,table[4]),_id_=_ie_} - catch(_if_) - {_if_ = caml_wrap_exception(_if_); - if(_if_ !== Not_found)throw _if_; - var _id_=1} - by_label[1] = caml_call3(Labs[4],label,_id_,_ic_); + {var _ic_=caml_call2(Labs[28],label,table[4]),_ib_=_ic_} + catch(_id_) + {_id_ = caml_wrap_exception(_id_); + if(_id_ !== Not_found)throw _id_; + var _ib_=1} + by_label[1] = caml_call3(Labs[4],label,_ib_,_ia_); return 0}, concr_meths$0, concr_meth_labs); @@ -26673,14 +27155,14 @@ virt_meth_labs); table[3] = by_name[1]; table[4] = by_label[1]; - var _ia_=0,_ib_=table[6]; + var _h__=0,_h$_=table[6]; table[6] = fold_right (function(met,hm) {var lab=met[1];return mem(lab,virt_meth_labs)?hm:[0,met,hm]}, - _ib_, - _ia_); + _h$_, + _h__); return 0} function widen(table) {var @@ -26696,34 +27178,34 @@ = fold_left$0 (function(s,v) - {var _h8_=caml_call2(Vars[28],v,table[7]); - return caml_call3(Vars[4],v,_h8_,s)}, + {var _h6_=caml_call2(Vars[28],v,table[7]); + return caml_call3(Vars[4],v,_h6_,s)}, saved_vars, vars); table[3] = by_name; table[4] = by_label; - var _h7_=table[6]; + var _h5_=table[6]; table[6] = fold_right (function(met,hm) {var lab=met[1];return mem(lab,virt_meths)?hm:[0,met,hm]}, - _h7_, + _h5_, saved_hidden_meths); return 0} function new_slot(table) {var index=table[1];table[1] = index + 1 | 0;return index} function new_variable(table,name) {try - {var _h5_=caml_call2(Vars[28],name,table[7]);return _h5_} - catch(_h6_) - {_h6_ = caml_wrap_exception(_h6_); - if(_h6_ === Not_found) + {var _h3_=caml_call2(Vars[28],name,table[7]);return _h3_} + catch(_h4_) + {_h4_ = caml_wrap_exception(_h4_); + if(_h4_ === Not_found) {var index=new_slot(table); if(caml_string_notequal(name,cst$93)) table[7] = caml_call3(Vars[4],name,index,table[7]); return index} - throw _h6_}} + throw _h4_}} function to_array(arr){return caml_equal(arr,0)?[0]:arr} function new_methods_variables(table,meths,vals) {var @@ -26731,39 +27213,39 @@ nmeths=meths$0.length - 1, nvals=vals.length - 1, res=caml_make_vect(nmeths + nvals | 0,0), - _hX_=nmeths - 1 | 0, - _hW_=0; - if(! (_hX_ < 0)) - {var i$0=_hW_; + _hV_=nmeths - 1 | 0, + _hU_=0; + if(! (_hV_ < 0)) + {var i$0=_hU_; for(;;) {var - _h3_= + _h1_= get_method_label(table,caml_check_bound(meths$0,i$0)[1 + i$0]); - caml_check_bound(res,i$0)[1 + i$0] = _h3_; - var _h4_=i$0 + 1 | 0; - if(_hX_ !== i$0){var i$0=_h4_;continue} + caml_check_bound(res,i$0)[1 + i$0] = _h1_; + var _h2_=i$0 + 1 | 0; + if(_hV_ !== i$0){var i$0=_h2_;continue} break}} - var _hZ_=nvals - 1 | 0,_hY_=0; - if(! (_hZ_ < 0)) - {var i=_hY_; + var _hX_=nvals - 1 | 0,_hW_=0; + if(! (_hX_ < 0)) + {var i=_hW_; for(;;) {var - _h1_=i + nmeths | 0, - _h0_=new_variable(table,caml_check_bound(vals,i)[1 + i]); - caml_check_bound(res,_h1_)[1 + _h1_] = _h0_; - var _h2_=i + 1 | 0; - if(_hZ_ !== i){var i=_h2_;continue} + _hZ_=i + nmeths | 0, + _hY_=new_variable(table,caml_check_bound(vals,i)[1 + i]); + caml_check_bound(res,_hZ_)[1 + _hZ_] = _hY_; + var _h0_=i + 1 | 0; + if(_hX_ !== i){var i=_h0_;continue} break}} return res} function get_variable(table,name) {try - {var _hU_=caml_call2(Vars[28],name,table[7]);return _hU_} - catch(_hV_) - {_hV_ = caml_wrap_exception(_hV_); - if(_hV_ === Not_found)throw [0,Assert_failure,_cJ_]; - throw _hV_}} + {var _hS_=caml_call2(Vars[28],name,table[7]);return _hS_} + catch(_hT_) + {_hT_ = caml_wrap_exception(_hT_); + if(_hT_ === Not_found)throw [0,Assert_failure,_cH_]; + throw _hT_}} function get_variables(table,names) - {return map$7(function(_hT_){return get_variable(table,_hT_)},names)} + {return map$7(function(_hR_){return get_variable(table,_hR_)},names)} function add_initializer(table,f){table[8] = [0,f,table[8]];return 0} function create_table(public_methods) {if(0 === public_methods)return new_table([0]); @@ -26790,20 +27272,20 @@ var init=top?caml_call2(super$0,cla,env):caml_call1(super$0,cla); widen(cla); var - _hO_=0, - _hP_=to_array(concr_meths), - _hQ_= + _hM_=0, + _hN_=to_array(concr_meths), + _hO_= [0, map$7 - (function(nm){return get_method(cla,get_method_label(cla,nm))},_hP_), - _hO_], - _hR_=to_array(vals); + (function(nm){return get_method(cla,get_method_label(cla,nm))},_hN_), + _hM_], + _hP_=to_array(vals); return caml_array_concat ([0, [0,init], [0, - map$7(function(_hS_){return get_variable(cla,_hS_)},_hR_), - _hQ_]])} + map$7(function(_hQ_){return get_variable(cla,_hQ_)},_hP_), + _hO_]])} function make_class(pub_meths,class_init) {var table=create_table(pub_meths),env_init=caml_call1(class_init,table); init_class(table); @@ -26836,8 +27318,8 @@ continue} return 0}} function run_initializers(obj,table) - {var inits=table[8],_hN_=0 !== inits?1:0; - return _hN_?iter_f(obj,inits):_hN_} + {var inits=table[8],_hL_=0 !== inits?1:0; + return _hL_?iter_f(obj,inits):_hL_} function run_initializers_opt(obj_0,obj,table) {if(obj_0)return obj; var inits=table[8]; @@ -26849,20 +27331,20 @@ run_initializers(obj,table); return obj} function get_data$0(param) - {if(param)return param[2];throw [0,Assert_failure,_cN_]} + {if(param)return param[2];throw [0,Assert_failure,_cL_]} function build_path(n,keys,tables) - {var res=[0,0,0,0],r=[0,res],_hJ_=0; + {var res=[0,0,0,0],r=[0,res],_hH_=0; if(! (n < 0)) - {var i=_hJ_; + {var i=_hH_; for(;;) - {var _hL_=r[1]; - r[1] = [0,caml_check_bound(keys,i)[1 + i],_hL_,0]; - var _hM_=i + 1 | 0; - if(n !== i){var i=_hM_;continue} + {var _hJ_=r[1]; + r[1] = [0,caml_check_bound(keys,i)[1 + i],_hJ_,0]; + var _hK_=i + 1 | 0; + if(n !== i){var i=_hK_;continue} break}} - var _hK_=r[1]; - if(tables){tables[2] = _hK_;return res} - throw [0,Assert_failure,_cK_]} + var _hI_=r[1]; + if(tables){tables[2] = _hI_;return res} + throw [0,Assert_failure,_cI_]} function lookup_tables(root,keys) {var tables$2=get_data$0(root); if(tables$2) @@ -26877,16 +27359,16 @@ {var tables$1=get_data$0(tables$0); if(tables$1) {var i$0=i - 1 | 0,i=i$0,tables=tables$1;continue a} - throw [0,Assert_failure,_cP_]} + throw [0,Assert_failure,_cN_]} if(tables$0) - {var _hI_=tables$0[3]; - if(_hI_){var tables$0=_hI_;continue} + {var _hG_=tables$0[3]; + if(_hG_){var tables$0=_hG_;continue} var v=[0,key,0,0]; if(tables$0) {tables$0[3] = v;return build_path(i - 1 | 0,keys,v)} - throw [0,Assert_failure,_cL_]} - throw [0,Assert_failure,_cO_]} - throw [0,Assert_failure,_cM_]}} + throw [0,Assert_failure,_cJ_]} + throw [0,Assert_failure,_cM_]} + throw [0,Assert_failure,_cK_]}} return tables}} return build_path(keys.length - 1 - 1 | 0,keys,root)} function new_cache(table) @@ -26907,13 +27389,13 @@ for(;;) {if(i[1] < len) {var - _hC_=i[1], - label=caml_check_bound(methods,_hC_)[1 + _hC_], + _hA_=i[1], + label=caml_check_bound(methods,_hA_)[1 + _hA_], next= function(param) {i[1]++; - var _hH_=i[1]; - return caml_check_bound(methods,_hH_)[1 + _hH_]}, + var _hF_=i[1]; + return caml_check_bound(methods,_hF_)[1 + _hF_]}, clo=next(0); if(typeof clo === "number") switch(clo) @@ -27102,8 +27584,8 @@ clo$0= function(n,m) {return function(obj) - {var _hF_=caml_call1(obj[1][1 + m],obj); - return caml_call2(obj[1][1 + n],obj,_hF_)}} + {var _hD_=caml_call1(obj[1][1 + m],obj); + return caml_call2(obj[1][1 + n],obj,_hD_)}} (n$15,m$1); break; case 20: @@ -27123,8 +27605,8 @@ clo$0= function(m,n) {return function(obj) - {var _hE_=obj[1 + n]; - return caml_call1(caml_get_public_method(_hE_,m,0),_hE_)}} + {var _hC_=obj[1 + n]; + return caml_call1(caml_get_public_method(_hC_,m,0),_hC_)}} (m$3,n$16); break; case 22: @@ -27134,8 +27616,8 @@ clo$0= function(m,e,n) {return function(obj) - {var _hD_=obj[1 + e][1 + n]; - return caml_call1(caml_get_public_method(_hD_,m,0),_hD_)}} + {var _hB_=obj[1 + e][1 + n]; + return caml_call1(caml_get_public_method(_hB_,m,0),_hB_)}} (m$4,e$4,n$17); break; default: @@ -27145,8 +27627,8 @@ clo$0= function(m,n) {return function(obj) - {var _hG_=caml_call1(obj[1][1 + n],obj); - return caml_call1(caml_get_public_method(_hG_,m,0),_hG_)}} + {var _hE_=caml_call1(obj[1][1 + n],obj); + return caml_call1(caml_get_public_method(_hE_,m,0),_hE_)}} (m$5,n$18)} else var clo$0=clo; @@ -27196,10 +27678,10 @@ {var length=comps$0.length - 1, modu=caml_obj_block(0,length), - _hy_=length - 1 | 0, - _hx_=0; - if(! (_hy_ < 0)) - {var i=_hx_; + _hw_=length - 1 | 0, + _hv_=0; + if(! (_hw_ < 0)) + {var i=_hv_; for(;;) {var shape=caml_check_bound(comps$0,i)[1 + i]; if(typeof shape === "number") @@ -27222,13 +27704,13 @@ (l, [246, function(l,i) - {return function(_hA_) + {return function(_hy_) {var l$0=modu[1 + i]; if(l === l$0)throw [0,Undefined_recursive_module,loc]; - var _hB_=caml_obj_tag(l$0); - return 250 === _hB_ + var _hz_=caml_obj_tag(l$0); + return 250 === _hz_ ?l$0[1] - :246 === _hB_?force_lazy_block(l$0):l$0}} + :246 === _hz_?force_lazy_block(l$0):l$0}} (l,i)]); var init=l; break; @@ -27239,8 +27721,8 @@ else var v=shape[1],init=v; modu[1 + i] = init; - var _hz_=i + 1 | 0; - if(_hy_ !== i){var i=_hz_;continue} + var _hx_=i + 1 | 0; + if(_hw_ !== i){var i=_hx_;continue} break}} return modu} function init_mod(loc,shape) @@ -27249,9 +27731,9 @@ return failwith(cst_CamlinternalMod_init_mod_n)} function update_mod_block(comps$0,o,n) {if(0 === caml_obj_tag(n) && comps$0.length - 1 <= n.length - 1) - {var _hv_=comps$0.length - 1 - 1 | 0,_hu_=0; - if(! (_hv_ < 0)) - {var i=_hu_; + {var _ht_=comps$0.length - 1 - 1 | 0,_hs_=0; + if(! (_ht_ < 0)) + {var i=_hs_; for(;;) {var n$0=n[1 + i],shape=caml_check_bound(comps$0,i)[1 + i]; if(typeof shape === "number") @@ -27261,22 +27743,22 @@ {var cl=o[1 + i],j=0; for(;;) {cl[1 + j] = n$0[1 + j]; - var _ht_=j + 1 | 0; - if(3 !== j){var j=_ht_;continue} + var _hr_=j + 1 | 0; + if(3 !== j){var j=_hr_;continue} break}} else switch$0 = 1; - if(switch$0)throw [0,Assert_failure,_cQ_]} + if(switch$0)throw [0,Assert_failure,_cO_]} else o[1 + i] = n$0; else if(0 === shape[0]) {var comps=shape[1];update_mod_block(comps,o[1 + i],n$0)} - var _hw_=i + 1 | 0; - if(_hv_ !== i){var i=_hw_;continue} + var _hu_=i + 1 | 0; + if(_ht_ !== i){var i=_hu_;continue} break}} return 0} - throw [0,Assert_failure,_cR_]} + throw [0,Assert_failure,_cP_]} function update_mod(shape,o,n) {if(typeof shape !== "number" && 0 === shape[0]) {var comps=shape[1];return update_mod_block(comps,o,n)} @@ -27308,147 +27790,76 @@ keywords); function ident_or_keyword(id) {try - {var _hr_=caml_call2(Stdlib_Hashtbl[6],kwd_table,id);return _hr_} - catch(_hs_) - {_hs_ = caml_wrap_exception(_hs_); - if(_hs_ === Not_found)return [1,id]; - throw _hs_}} - function keyword_or_error(c) - {var s=make$1(1,c); - try - {var _hp_=caml_call2(Stdlib_Hashtbl[6],kwd_table,s);return _hp_} + {var _hp_=caml_call2(Stdlib_Hashtbl[6],kwd_table,id);return _hp_} catch(_hq_) {_hq_ = caml_wrap_exception(_hq_); - if(_hq_ === Not_found)throw [0,Error,cat(cst_Illegal_character,s)]; + if(_hq_ === Not_found)return [1,id]; throw _hq_}} - function comment(strm) - {a: - for(;;) - {var match=peek$0(strm); - if(match) - {var switcher=match[1] - 40 | 0; - if(! (2 < switcher >>> 0)) - switch(switcher) - {case 0: - junk(strm); - var match$0=peek$0(strm); - if(match$0) - {if(42 === match$0[1]){junk(strm);comment(strm);continue} - junk(strm); - continue} - throw Failure$0; - case 1:break; - default: - junk(strm); - for(;;) - {var match$1=peek$0(strm); - if(match$1) - {var _ho_=match$1[1]; - if(41 === _ho_){junk(strm);return 0} - if(42 === _ho_){junk(strm);continue} - junk(strm); - continue a} - throw Failure$0}} - junk(strm); - continue} - throw Failure$0}} - function escape(strm) - {var match=peek$0(strm); - if(match) - {var _hl_=match[1]; - if(58 <= _hl_) - {var switcher=_hl_ - 110 | 0; - if(! (6 < switcher >>> 0)) - switch(switcher) - {case 0:junk(strm);return 10; - case 4:junk(strm);return 13; - case 6:junk(strm);return 9 - }} - else - if(48 <= _hl_) - {junk(strm); - var match$0=peek$0(strm); - if(match$0) - {var _hm_=match$0[1]; - if(! (9 < _hm_ - 48 >>> 0)) - {junk(strm); - var match$1=peek$0(strm); - if(match$1) - {var _hn_=match$1[1]; - if(! (9 < _hn_ - 48 >>> 0)) - {junk(strm); - return chr - ((((_hl_ - 48 | 0) * 100 | 0) - + - ((_hm_ - 48 | 0) * 10 | 0) - | - 0) - + - (_hn_ - 48 | 0) - | - 0)}} - throw [0,Error,cst$99]}} - throw [0,Error,cst$98]} - junk(strm); - return _hl_} - throw Failure$0} + function keyword_or_error(c) + {var s=make$1(1,c); + try + {var _hn_=caml_call2(Stdlib_Hashtbl[6],kwd_table,s);return _hn_} + catch(_ho_) + {_ho_ = caml_wrap_exception(_ho_); + if(_ho_ === Not_found)throw [0,Error,cat(cst_Illegal_character,s)]; + throw _ho_}} function end_exponent_part(strm) {for(;;) {var match=peek$0(strm); if(match) - {var _hk_=match[1]; - if(! (9 < _hk_ - 48 >>> 0)){junk(strm);store(_hk_);continue}} + {var _hm_=match[1]; + if(! (9 < _hm_ - 48 >>> 0)){junk(strm);store(_hm_);continue}} return [0,[3,caml_float_of_string(get_string(0))]]}} function exponent_part(strm) {var match=peek$0(strm); if(match) - {var _hj_=match[1],switch$0=0; - if(43 !== _hj_ && 45 !== _hj_)switch$0 = 1; + {var _hl_=match[1],switch$0=0; + if(43 !== _hl_ && 45 !== _hl_)switch$0 = 1; if(! switch$0) - {junk(strm);store(_hj_);return end_exponent_part(strm)}} + {junk(strm);store(_hl_);return end_exponent_part(strm)}} return end_exponent_part(strm)} function number(s) {for(;;) {var match=peek$0(s); if(match) - {var _hg_=match[1]; - if(58 <= _hg_) + {var _hi_=match[1]; + if(58 <= _hi_) {var switch$0=0; - if(69 === _hg_ || 101 === _hg_)switch$0 = 1; + if(69 === _hi_ || 101 === _hi_)switch$0 = 1; if(switch$0){junk(s);store(69);return exponent_part(s)}} else - {if(46 === _hg_) + {if(46 === _hi_) {junk(s); store(46); for(;;) {var match$0=peek$0(s); if(match$0) - {var _hh_=match$0[1],_hi_=_hh_ - 69 | 0; - if(32 < _hi_ >>> 0) - {if(! (9 < _hi_ + 21 >>> 0)){junk(s);store(_hh_);continue}} + {var _hj_=match$0[1],_hk_=_hj_ - 69 | 0; + if(32 < _hk_ >>> 0) + {if(! (9 < _hk_ + 21 >>> 0)){junk(s);store(_hj_);continue}} else - if(30 < _hi_ - 1 >>> 0) + if(30 < _hk_ - 1 >>> 0) {junk(s);store(69);return exponent_part(s)}} return [0,[3,caml_float_of_string(get_string(0))]]}} - if(48 <= _hg_){junk(s);store(_hg_);continue}}} + if(48 <= _hi_){junk(s);store(_hi_);continue}}} return [0,[2,caml_int_of_string(get_string(0))]]}} function ident2(strm) {for(;;) {var match=peek$0(strm); if(match) - {var _he_=match[1],switch$0=0; - if(94 <= _he_) - {var _hf_=_he_ - 95 | 0; - if(30 < _hf_ >>> 0) - {if(! (32 <= _hf_))switch$0 = 1} + {var _hg_=match[1],switch$0=0; + if(94 <= _hg_) + {var _hh_=_hg_ - 95 | 0; + if(30 < _hh_ >>> 0) + {if(! (32 <= _hh_))switch$0 = 1} else - if(29 === _hf_)switch$0 = 1} + if(29 === _hh_)switch$0 = 1} else - if(65 <= _he_) - {if(92 === _he_)switch$0 = 1} + if(65 <= _hg_) + {if(92 === _hg_)switch$0 = 1} else - if(33 <= _he_) - switch(_he_ - 33 | 0) + if(33 <= _hg_) + switch(_hg_ - 33 | 0) {case 0: case 2: case 3: @@ -27465,14 +27876,14 @@ case 30: case 31:switch$0 = 1;break } - if(switch$0){junk(strm);store(_he_);continue}} + if(switch$0){junk(strm);store(_hg_);continue}} return [0,ident_or_keyword(get_string(0))]}} function neg_number(s) {var match=peek$0(s); if(match) - {var _hd_=match[1]; - if(! (9 < _hd_ - 48 >>> 0)) - {junk(s);reset_buffer(0);store(45);store(_hd_);return number(s)}} + {var _hf_=match[1]; + if(! (9 < _hf_ - 48 >>> 0)) + {junk(s);reset_buffer(0);store(45);store(_hf_);return number(s)}} reset_buffer(0); store(45); return ident2(s)} @@ -27480,56 +27891,56 @@ {for(;;) {var match=peek$0(strm); if(match) - {var _hb_=match[1],switch$0=0; - if(91 <= _hb_) - {var _hc_=_hb_ - 95 | 0; - if(27 < _hc_ >>> 0) - {if(97 <= _hc_)switch$0 = 1} + {var _hd_=match[1],switch$0=0; + if(91 <= _hd_) + {var _he_=_hd_ - 95 | 0; + if(27 < _he_ >>> 0) + {if(97 <= _he_)switch$0 = 1} else - if(1 !== _hc_)switch$0 = 1} + if(1 !== _he_)switch$0 = 1} else - if(48 <= _hb_) - {if(6 < _hb_ - 58 >>> 0)switch$0 = 1} + if(48 <= _hd_) + {if(6 < _hd_ - 58 >>> 0)switch$0 = 1} else - if(39 === _hb_)switch$0 = 1; - if(switch$0){junk(strm);store(_hb_);continue}} + if(39 === _hd_)switch$0 = 1; + if(switch$0){junk(strm);store(_hd_);continue}} return [0,ident_or_keyword(get_string(0))]}} function next_token$0(counter,strm) {for(;;) {var match=peek$0(strm); if(match) - {var _g3_=match[1],switch$0=0; - if(124 <= _g3_) - {if(127 <= _g3_) - {if(192 <= _g3_)switch$0 = 1} + {var _g5_=match[1],switch$0=0; + if(124 <= _g5_) + {if(127 <= _g5_) + {if(192 <= _g5_)switch$0 = 1} else - if(125 !== _g3_)switch$0 = 2} + if(125 !== _g5_)switch$0 = 2} else - {var _g4_=_g3_ - 65 | 0; - if(57 < _g4_ >>> 0) - {if(! (58 <= _g4_)) - switch(_g4_ + 65 | 0) + {var _g6_=_g5_ - 65 | 0; + if(57 < _g6_ >>> 0) + {if(! (58 <= _g6_)) + switch(_g6_ + 65 | 0) {case 34: junk(strm); reset_buffer(0); for(;;) {var match$1=peek$0(strm); if(match$1) - {var _g6_=match$1[1]; - if(34 === _g6_){junk(strm);return [0,[4,get_string(0)]]} - if(92 === _g6_) + {var _g8_=match$1[1]; + if(34 === _g8_){junk(strm);return [0,[4,get_string(0)]]} + if(92 === _g8_) {junk(strm); try {var c$0=escape(strm)} - catch(_ha_) - {_ha_ = caml_wrap_exception(_ha_); - if(_ha_ === Failure$0)throw [0,Error,cst$96]; - throw _ha_; - var _g9_=_ha_} + catch(_hc_) + {_hc_ = caml_wrap_exception(_hc_); + if(_hc_ === Failure$0)throw [0,Error,cst$96]; + throw _hc_; + var _g$_=_hc_} store(c$0); continue} junk(strm); - store(_g6_); + store(_g8_); continue} throw Failure$0} case 39: @@ -27537,22 +27948,22 @@ try {var match$2=peek$0(strm); if(! match$2)throw Failure$0; - var _g7_=match$2[1]; - if(92 === _g7_) + var _g9_=match$2[1]; + if(92 === _g9_) {junk(strm); try - {var _g8_=escape(strm)} - catch(_g$_) - {_g$_ = caml_wrap_exception(_g$_); - if(_g$_ === Failure$0)throw [0,Error,cst$97]; - throw _g$_} - var c=_g8_} + {var _g__=escape(strm)} + catch(_hb_) + {_hb_ = caml_wrap_exception(_hb_); + if(_hb_ === Failure$0)throw [0,Error,cst$97]; + throw _hb_} + var c=_g__} else - {junk(strm);var c=_g7_}} - catch(_g__) - {_g__ = caml_wrap_exception(_g__); - if(_g__ === Failure$0)throw [0,Error,cst$94]; - throw _g__} + {junk(strm);var c=_g9_}} + catch(_ha_) + {_ha_ = caml_wrap_exception(_ha_); + if(_ha_ === Failure$0)throw [0,Error,cst$94]; + throw _ha_} var match$0=peek$0(strm); if(match$0 && 39 === match$0[1]) {junk(strm);return [0,[5,c]]} @@ -27580,7 +27991,7 @@ case 55: case 56: case 57: - junk(strm);reset_buffer(0);store(_g3_);return number(strm); + junk(strm);reset_buffer(0);store(_g5_);return number(strm); case 33: case 35: case 36: @@ -27597,18 +28008,18 @@ case 64:switch$0 = 2;break }} else - {var _g5_=_g4_ - 26 | 0; - if(5 < _g5_ >>> 0) + {var _g7_=_g6_ - 26 | 0; + if(5 < _g7_ >>> 0) switch$0 = 1; else - switch(_g5_) + switch(_g7_) {case 4:switch$0 = 1;break;case 1:case 3:switch$0 = 2;break}}} switch(switch$0) - {case 0:junk(strm);return [0,keyword_or_error(_g3_)]; + {case 0:junk(strm);return [0,keyword_or_error(_g5_)]; case 1: - junk(strm);reset_buffer(0);store(_g3_);return ident(strm); + junk(strm);reset_buffer(0);store(_g5_);return ident(strm); default: - junk(strm);reset_buffer(0);store(_g3_);return ident2(strm)}} + junk(strm);reset_buffer(0);store(_g5_);return ident2(strm)}} return 0}} function maybe_comment(counter,strm) {var match=peek$0(strm); @@ -27620,12 +28031,83 @@ return caml_trampoline_return(next_token$0,[0,strm])} return [0,keyword_or_error(40)]} function next_token(strm){return caml_trampoline(next_token$0(0,strm))} + function escape(strm) + {var match=peek$0(strm); + if(match) + {var _g2_=match[1]; + if(58 <= _g2_) + {var switcher=_g2_ - 110 | 0; + if(! (6 < switcher >>> 0)) + switch(switcher) + {case 0:junk(strm);return 10; + case 4:junk(strm);return 13; + case 6:junk(strm);return 9 + }} + else + if(48 <= _g2_) + {junk(strm); + var match$0=peek$0(strm); + if(match$0) + {var _g3_=match$0[1]; + if(! (9 < _g3_ - 48 >>> 0)) + {junk(strm); + var match$1=peek$0(strm); + if(match$1) + {var _g4_=match$1[1]; + if(! (9 < _g4_ - 48 >>> 0)) + {junk(strm); + return chr + ((((_g2_ - 48 | 0) * 100 | 0) + + + ((_g3_ - 48 | 0) * 10 | 0) + | + 0) + + + (_g4_ - 48 | 0) + | + 0)}} + throw [0,Error,cst$99]}} + throw [0,Error,cst$98]} + junk(strm); + return _g2_} + throw Failure$0} + function comment(strm) + {a: + for(;;) + {var match=peek$0(strm); + if(match) + {var switcher=match[1] - 40 | 0; + if(! (2 < switcher >>> 0)) + switch(switcher) + {case 0: + junk(strm); + var match$0=peek$0(strm); + if(match$0) + {if(42 === match$0[1]){junk(strm);comment(strm);continue} + junk(strm); + continue} + throw Failure$0; + case 1:break; + default: + junk(strm); + for(;;) + {var match$1=peek$0(strm); + if(match$1) + {var _g1_=match$1[1]; + if(41 === _g1_){junk(strm);return 0} + if(42 === _g1_){junk(strm);continue} + junk(strm); + continue a} + throw Failure$0}} + junk(strm); + continue} + throw Failure$0}} return function(input) {return from(function(count){return next_token(input)})}} var Stdlib_Genlex=[0,make_lexer]; caml_register_global(824,Stdlib_Genlex,"Stdlib__Genlex"); function MakeSeeded$0(H) - {var prng=[246,function(_g2_){return caml_call1(_ci_[2],0)}]; + {var prng=[246,function(_g0_){return caml_call1(_cg_[2],0)}]; function create(opt,initial_size) {if(opt) var sth=opt[1],random=sth; @@ -27637,21 +28119,21 @@ {var x$0=x * 2 | 0,x=x$0;continue} if(random) var - _g0_=caml_obj_tag(prng), - _g1_=250 === _g0_?prng[1]:246 === _g0_?force_lazy_block(prng):prng, - seed=caml_call1(_ci_[4],_g1_); + _gY_=caml_obj_tag(prng), + _gZ_=250 === _gY_?prng[1]:246 === _gY_?force_lazy_block(prng):prng, + seed=caml_call1(_cg_[4],_gZ_); else var seed=0; return [0,0,caml_make_vect(x,0),seed,x]}} function clear(h) {h[1] = 0; - var len=h[2].length - 1,_gY_=len - 1 | 0,_gX_=0; - if(! (_gY_ < 0)) - {var i=_gX_; + var len=h[2].length - 1,_gW_=len - 1 | 0,_gV_=0; + if(! (_gW_ < 0)) + {var i=_gV_; for(;;) {caml_check_bound(h[2],i)[1 + i] = 0; - var _gZ_=i + 1 | 0; - if(_gY_ !== i){var i=_gZ_;continue} + var _gX_=i + 1 | 0; + if(_gW_ !== i){var i=_gX_;continue} break}} return 0} function reset(h) @@ -27660,8 +28142,8 @@ ?clear(h) :(h[1] = 0,h[2] = caml_make_vect(h[4],0),0)} function copy(init) - {var _gU_=init[4],_gV_=init[3],_gW_=copy$1(init[2]); - return [0,init[1],_gW_,_gV_,_gU_]} + {var _gS_=init[4],_gT_=init[3],_gU_=copy$1(init[2]); + return [0,init[1],_gU_,_gT_,_gS_]} function key_index(h,hkey){return hkey & (h[2].length - 1 - 1 | 0)} function clean(h) {function do_bucket(param) @@ -27676,23 +28158,23 @@ var param$0=rest; continue} return 0}} - var d=h[2],_gR_=d.length - 1 - 1 | 0,_gQ_=0; - if(! (_gR_ < 0)) - {var i=_gQ_; + var d=h[2],_gP_=d.length - 1 - 1 | 0,_gO_=0; + if(! (_gP_ < 0)) + {var i=_gO_; for(;;) - {var _gS_=do_bucket(caml_check_bound(d,i)[1 + i]); - caml_check_bound(d,i)[1 + i] = _gS_; - var _gT_=i + 1 | 0; - if(_gR_ !== i){var i=_gT_;continue} + {var _gQ_=do_bucket(caml_check_bound(d,i)[1 + i]); + caml_check_bound(d,i)[1 + i] = _gQ_; + var _gR_=i + 1 | 0; + if(_gP_ !== i){var i=_gR_;continue} break}} return 0} function resize(h) {var odata=h[2],osize=odata.length - 1,nsize=osize * 2 | 0; clean(h); var - _gJ_=nsize < max_array_length?1:0, - _gK_=_gJ_?(osize >>> 1 | 0) <= h[1]?1:0:_gJ_; - if(_gK_) + _gH_=nsize < max_array_length?1:0, + _gI_=_gH_?(osize >>> 1 | 0) <= h[1]?1:0:_gH_; + if(_gI_) {var ndata=caml_make_vect(nsize,0); h[2] = ndata; var @@ -27703,23 +28185,23 @@ insert_bucket(rest); var nidx=key_index(h,hkey), - _gP_=[0,hkey,data,caml_check_bound(ndata,nidx)[1 + nidx]]; - caml_check_bound(ndata,nidx)[1 + nidx] = _gP_; + _gN_=[0,hkey,data,caml_check_bound(ndata,nidx)[1 + nidx]]; + caml_check_bound(ndata,nidx)[1 + nidx] = _gN_; return 0} return 0}, - _gM_=osize - 1 | 0, - _gL_=0; - if(! (_gM_ < 0)) - {var i=_gL_; + _gK_=osize - 1 | 0, + _gJ_=0; + if(! (_gK_ < 0)) + {var i=_gJ_; for(;;) {insert_bucket(caml_check_bound(odata,i)[1 + i]); - var _gO_=i + 1 | 0; - if(_gM_ !== i){var i=_gO_;continue} + var _gM_=i + 1 | 0; + if(_gK_ !== i){var i=_gM_;continue} break}} - var _gN_=0} + var _gL_=0} else - var _gN_=_gK_; - return _gN_} + var _gL_=_gI_; + return _gL_} function add(h,key,info) {var hkey=caml_call2(H[2],h[3],key), @@ -27728,8 +28210,8 @@ bucket=[0,hkey,container,caml_check_bound(h[2],i)[1 + i]]; caml_check_bound(h[2],i)[1 + i] = bucket; h[1] = h[1] + 1 | 0; - var _gI_=h[2].length - 1 << 1 < h[1]?1:0; - return _gI_?resize(h):_gI_} + var _gG_=h[2].length - 1 << 1 < h[1]?1:0; + return _gG_?resize(h):_gG_} function remove(h,key) {var hkey=caml_call2(H[2],h[3],key); function remove_bucket(param) @@ -27748,14 +28230,14 @@ return 0}} var i=key_index(h,hkey), - _gH_=remove_bucket(caml_check_bound(h[2],i)[1 + i]); - caml_check_bound(h[2],i)[1 + i] = _gH_; + _gF_=remove_bucket(caml_check_bound(h[2],i)[1 + i]); + caml_check_bound(h[2],i)[1 + i] = _gF_; return 0} function find(h,key) {var hkey=caml_call2(H[2],h[3],key), - _gG_=key_index(h,hkey), - param$1=caml_check_bound(h[2],_gG_)[1 + _gG_], + _gE_=key_index(h,hkey), + param$1=caml_check_bound(h[2],_gE_)[1 + _gE_], param=param$1; for(;;) {if(param) @@ -27776,8 +28258,8 @@ function find_opt(h,key) {var hkey=caml_call2(H[2],h[3],key), - _gF_=key_index(h,hkey), - param$1=caml_check_bound(h[2],_gF_)[1 + _gF_], + _gD_=key_index(h,hkey), + param$1=caml_check_bound(h[2],_gD_)[1 + _gD_], param=param$1; for(;;) {if(param) @@ -27816,8 +28298,8 @@ var param$1=param$0[3],param$0=param$1; continue} return 0}} - var _gE_=key_index(h,hkey); - return find_in_bucket(caml_check_bound(h[2],_gE_)[1 + _gE_])} + var _gC_=key_index(h,hkey); + return find_in_bucket(caml_check_bound(h[2],_gC_)[1 + _gC_])} function replace(h,key,info) {var hkey=caml_call2(H[2],h[3],key); function replace_bucket(param) @@ -27834,21 +28316,21 @@ throw Not_found}} var i=key_index(h,hkey),l=caml_check_bound(h[2],i)[1 + i]; try - {var _gC_=replace_bucket(l);return _gC_} - catch(_gD_) - {_gD_ = caml_wrap_exception(_gD_); - if(_gD_ === Not_found) + {var _gA_=replace_bucket(l);return _gA_} + catch(_gB_) + {_gB_ = caml_wrap_exception(_gB_); + if(_gB_ === Not_found) {var container=caml_call2(H[1],key,info); caml_check_bound(h[2],i)[1 + i] = [0,hkey,container,l]; h[1] = h[1] + 1 | 0; - var _gB_=h[2].length - 1 << 1 < h[1]?1:0; - return _gB_?resize(h):_gB_} - throw _gD_}} + var _gz_=h[2].length - 1 << 1 < h[1]?1:0; + return _gz_?resize(h):_gz_} + throw _gB_}} function mem(h,key) {var hkey=caml_call2(H[2],h[3],key), - _gA_=key_index(h,hkey), - param$1=caml_check_bound(h[2],_gA_)[1 + _gA_], + _gy_=key_index(h,hkey), + param$1=caml_check_bound(h[2],_gy_)[1 + _gy_], param=param$1; for(;;) {if(param) @@ -27861,9 +28343,9 @@ continue} return 0}} function iter$0(f,h) - {var d$0=h[2],_gy_=d$0.length - 1 - 1 | 0,_gx_=0; - if(! (_gy_ < 0)) - {var i=_gx_; + {var d$0=h[2],_gw_=d$0.length - 1 - 1 | 0,_gv_=0; + if(! (_gw_ < 0)) + {var i=_gv_; a: for(;;) {var param$0=caml_check_bound(d$0,i)[1 + i],param=param$0; @@ -27879,22 +28361,22 @@ {var d=match$0[1],k=match[1];caml_call2(f,k,d);switch$0 = 1} var param=rest; continue} - var _gz_=i + 1 | 0; - if(_gy_ !== i){var i=_gz_;continue a} + var _gx_=i + 1 | 0; + if(_gw_ !== i){var i=_gx_;continue a} break} break}} return 0} function fold(f,h,init) - {var d$0=h[2],accu$1=[0,init],_gu_=d$0.length - 1 - 1 | 0,_gt_=0; - if(! (_gu_ < 0)) - {var i=_gt_; + {var d$0=h[2],accu$1=[0,init],_gs_=d$0.length - 1 - 1 | 0,_gr_=0; + if(! (_gs_ < 0)) + {var i=_gr_; a: for(;;) {var - _gv_=accu$1[1], + _gt_=accu$1[1], b$0=caml_check_bound(d$0,i)[1 + i], b=b$0, - accu=_gv_; + accu=_gt_; for(;;) {if(b) {var @@ -27910,8 +28392,8 @@ var b=rest,accu=accu$0; continue} accu$1[1] = accu; - var _gw_=i + 1 | 0; - if(_gu_ !== i){var i=_gw_;continue a} + var _gu_=i + 1 | 0; + if(_gs_ !== i){var i=_gu_;continue a} break} break}} return accu$1[1]} @@ -27937,14 +28419,14 @@ var param$0=rest; continue} return 0}} - var d=h[2],_gq_=d.length - 1 - 1 | 0,_gp_=0; - if(! (_gq_ < 0)) - {var i=_gp_; + var d=h[2],_go_=d.length - 1 - 1 | 0,_gn_=0; + if(! (_go_ < 0)) + {var i=_gn_; for(;;) - {var _gr_=do_bucket(caml_check_bound(d,i)[1 + i]); - caml_check_bound(d,i)[1 + i] = _gr_; - var _gs_=i + 1 | 0; - if(_gq_ !== i){var i=_gs_;continue} + {var _gp_=do_bucket(caml_check_bound(d,i)[1 + i]); + caml_check_bound(d,i)[1 + i] = _gp_; + var _gq_=i + 1 | 0; + if(_go_ !== i){var i=_gq_;continue} break}} return 0} function length(h){return h[1]} @@ -27961,21 +28443,21 @@ return accu$0}} function stats(h) {var - _gl_=h[2], - _gm_=0, + _gj_=h[2], + _gk_=0, mbl= fold_left$3 - (function(m,b){return max$1(m,bucket_length(0,b))},_gm_,_gl_), + (function(m,b){return max$1(m,bucket_length(0,b))},_gk_,_gj_), histo=caml_make_vect(mbl + 1 | 0,0), - _gn_=h[2]; + _gl_=h[2]; iter$5 (function(b) {var l=bucket_length(0,b), - _go_=caml_check_bound(histo,l)[1 + l] + 1 | 0; - caml_check_bound(histo,l)[1 + l] = _go_; + _gm_=caml_check_bound(histo,l)[1 + l] + 1 | 0; + caml_check_bound(histo,l)[1 + l] = _gm_; return 0}, - _gn_); + _gl_); return [0,h[1],h[2].length - 1,mbl,histo]} function bucket_length_alive(accu,param) {var accu$0=accu,param$0=param; @@ -27990,21 +28472,21 @@ function stats_alive(h) {var size=[0,0], - _gh_=h[2], - _gi_=0, + _gf_=h[2], + _gg_=0, mbl= fold_left$3 - (function(m,b){return max$1(m,bucket_length_alive(0,b))},_gi_,_gh_), + (function(m,b){return max$1(m,bucket_length_alive(0,b))},_gg_,_gf_), histo=caml_make_vect(mbl + 1 | 0,0), - _gj_=h[2]; + _gh_=h[2]; iter$5 (function(b) {var l=bucket_length_alive(0,b); size[1] = size[1] + l | 0; - var _gk_=caml_check_bound(histo,l)[1 + l] + 1 | 0; - caml_check_bound(histo,l)[1 + l] = _gk_; + var _gi_=caml_check_bound(histo,l)[1 + l] + 1 | 0; + caml_check_bound(histo,l)[1 + l] = _gi_; return 0}, - _gj_); + _gh_); return [0,size[1],h[2].length - 1,mbl,histo]} function to_seq(tbl) {var tbl_data=tbl[2]; @@ -28021,7 +28503,7 @@ {var data=match$0[1],key=match[1]; return [0, [0,key,data], - function(_gg_){return aux(i$0,next,_gg_)}]} + function(_ge_){return aux(i$0,next,_ge_)}]} var buck$0=next; continue} if(i$0 === tbl_data.length - 1)return 0; @@ -28031,16 +28513,16 @@ i$0=i$1, buck$0=buck$1; continue}} - var _gd_=0,_ge_=0; - return function(_gf_){return aux(_ge_,_gd_,_gf_)}} + var _gb_=0,_gc_=0; + return function(_gd_){return aux(_gc_,_gb_,_gd_)}} function to_seq_keys(m) - {var _f$_=to_seq(m); - function _ga_(_gc_){return _gc_[1]} - return function(_gb_){return map$1(_ga_,_f$_,_gb_)}} + {var _f9_=to_seq(m); + function _f__(_ga_){return _ga_[1]} + return function(_f$_){return map$1(_f__,_f9_,_f$_)}} function to_seq_values(m) - {var _f7_=to_seq(m); - function _f8_(_f__){return _f__[2]} - return function(_f9_){return map$1(_f8_,_f7_,_f9_)}} + {var _f5_=to_seq(m); + function _f6_(_f8_){return _f8_[2]} + return function(_f7_){return map$1(_f6_,_f5_,_f7_)}} function add_seq(tbl,i) {return iter (function(param) @@ -28077,19 +28559,19 @@ of_seq, clean, stats_alive]} - function create$5(param){return caml_call1(_q_[1],1)} - function get_key$0(t){return caml_call2(_q_[3],t,0)} - function get_key_copy$0(t){return caml_call2(_q_[4],t,0)} - function set_key$0(t,k){return caml_call3(_q_[5],t,0,k)} - function unset_key$0(t){return caml_call2(_q_[6],t,0)} - function check_key$0(t){return caml_call2(_q_[7],t,0)} - function blit_key$0(t1,t2){return caml_call5(_q_[8],t1,0,t2,0,1)} - function get_data$1(t){return caml_call1(_q_[9],t)} - function get_data_copy(t){return caml_call1(_q_[10],t)} - function set_data(t,d){return caml_call2(_q_[11],t,d)} - function unset_data(t){return caml_call1(_q_[12],t)} - function check_data(t){return caml_call1(_q_[13],t)} - function blit_data(t1,t2){return caml_call2(_q_[14],t1,t2)} + function create$5(param){return caml_call1(_o_[1],1)} + function get_key$0(t){return caml_call2(_o_[3],t,0)} + function get_key_copy$0(t){return caml_call2(_o_[4],t,0)} + function set_key$0(t,k){return caml_call3(_o_[5],t,0,k)} + function unset_key$0(t){return caml_call2(_o_[6],t,0)} + function check_key$0(t){return caml_call2(_o_[7],t,0)} + function blit_key$0(t1,t2){return caml_call5(_o_[8],t1,0,t2,0,1)} + function get_data$1(t){return caml_call1(_o_[9],t)} + function get_data_copy(t){return caml_call1(_o_[10],t)} + function set_data(t,d){return caml_call2(_o_[11],t,d)} + function unset_data(t){return caml_call1(_o_[12],t)} + function check_data(t){return caml_call1(_o_[13],t)} + function blit_data(t1,t2){return caml_call2(_o_[14],t1,t2)} function make$4(key,data) {var eph=create$5(0);set_data(eph,data);set_key$0(eph,key);return eph} function query(eph,key) @@ -28142,8 +28624,8 @@ replace_seq=include[21], clean=include[23], stats_alive=include[24], - _f6_=include[1]; - function create(sz){return caml_call2(_f6_,_cS_,sz)} + _f4_=include[1]; + function create(sz){return caml_call2(_f4_,_cQ_,sz)} function of_seq(i) {var tbl=create(16);caml_call2(replace_seq,tbl,i);return tbl} return [0, @@ -28172,7 +28654,7 @@ clean, stats_alive]} function make$5(param){return [0,0]} - function add$1(b,k,d){var _f5_=b[1];b[1] = [0,make$4(k,d),_f5_];return 0} + function add$1(b,k,d){var _f3_=b[1];b[1] = [0,make$4(k,d),_f3_];return 0} function test_key(k,e) {var match=get_key$0(e); if(match){var x=match[1];if(x === k)return 1} @@ -28188,32 +28670,32 @@ return 0}} function find$2(b,k) {var - _f3_=b[1], - match=find_opt(function(_f4_){return test_key(k,_f4_)},_f3_); + _f1_=b[1], + match=find_opt(function(_f2_){return test_key(k,_f2_)},_f1_); if(match){var e=match[1];return get_data$1(e)} return 0} function length$7(b){return length$1(b[1])} function clear$3(b){b[1] = 0;return 0} - function create$6(param){return caml_call1(_q_[1],2)} - function get_key1(t){return caml_call2(_q_[3],t,0)} - function get_key1_copy(t){return caml_call2(_q_[4],t,0)} - function set_key1(t,k){return caml_call3(_q_[5],t,0,k)} - function unset_key1(t){return caml_call2(_q_[6],t,0)} - function check_key1(t){return caml_call2(_q_[7],t,0)} - function get_key2(t){return caml_call2(_q_[3],t,1)} - function get_key2_copy(t){return caml_call2(_q_[4],t,1)} - function set_key2(t,k){return caml_call3(_q_[5],t,1,k)} - function unset_key2(t){return caml_call2(_q_[6],t,1)} - function check_key2(t){return caml_call2(_q_[7],t,1)} - function blit_key1(t1,t2){return caml_call5(_q_[8],t1,0,t2,0,1)} - function blit_key2(t1,t2){return caml_call5(_q_[8],t1,1,t2,1,1)} - function blit_key12(t1,t2){return caml_call5(_q_[8],t1,0,t2,0,2)} - function get_data$2(t){return caml_call1(_q_[9],t)} - function get_data_copy$0(t){return caml_call1(_q_[10],t)} - function set_data$0(t,d){return caml_call2(_q_[11],t,d)} - function unset_data$0(t){return caml_call1(_q_[12],t)} - function check_data$0(t){return caml_call1(_q_[13],t)} - function blit_data$0(t1,t2){return caml_call2(_q_[14],t1,t2)} + function create$6(param){return caml_call1(_o_[1],2)} + function get_key1(t){return caml_call2(_o_[3],t,0)} + function get_key1_copy(t){return caml_call2(_o_[4],t,0)} + function set_key1(t,k){return caml_call3(_o_[5],t,0,k)} + function unset_key1(t){return caml_call2(_o_[6],t,0)} + function check_key1(t){return caml_call2(_o_[7],t,0)} + function get_key2(t){return caml_call2(_o_[3],t,1)} + function get_key2_copy(t){return caml_call2(_o_[4],t,1)} + function set_key2(t,k){return caml_call3(_o_[5],t,1,k)} + function unset_key2(t){return caml_call2(_o_[6],t,1)} + function check_key2(t){return caml_call2(_o_[7],t,1)} + function blit_key1(t1,t2){return caml_call5(_o_[8],t1,0,t2,0,1)} + function blit_key2(t1,t2){return caml_call5(_o_[8],t1,1,t2,1,1)} + function blit_key12(t1,t2){return caml_call5(_o_[8],t1,0,t2,0,2)} + function get_data$2(t){return caml_call1(_o_[9],t)} + function get_data_copy$0(t){return caml_call1(_o_[10],t)} + function set_data$0(t,d){return caml_call2(_o_[11],t,d)} + function unset_data$0(t){return caml_call1(_o_[12],t)} + function check_data$0(t){return caml_call1(_o_[13],t)} + function blit_data$0(t1,t2){return caml_call2(_o_[14],t1,t2)} function make$6(key1,key2,data) {var eph=create$6(0); set_data$0(eph,data); @@ -28242,8 +28724,8 @@ {var k2=param[2], k1=param[1], - _f2_=caml_call2(H2[2],seed,k2) * 65599 | 0; - return caml_call2(H1[2],seed,k1) + _f2_ | 0} + _f0_=caml_call2(H2[2],seed,k2) * 65599 | 0; + return caml_call2(H1[2],seed,k1) + _f0_ | 0} function equal(c,param) {var k2=param[2],k1=param[1],match=get_key1(c),match$0=get_key2(c); if(match && match$0) @@ -28263,16 +28745,16 @@ set_key2(c,k2); return set_data$0(c,d)} function check_key(c) - {var _f1_=check_key1(c);return _f1_?check_key2(c):_f1_} + {var _fZ_=check_key1(c);return _fZ_?check_key2(c):_fZ_} return MakeSeeded$0 ([0,create,hash,equal,get_data$2,get_key,set_key_data,check_key])} function Make$3(H1,H2) {var equal=H2[1]; function hash(seed,x){return caml_call1(H2[2],x)} - var equal$0=H1[1],_fZ_=[0,equal,hash]; + var equal$0=H1[1],_fX_=[0,equal,hash]; function hash$0(seed,x){return caml_call1(H1[2],x)} var - include=MakeSeeded$2([0,equal$0,hash$0],_fZ_), + include=MakeSeeded$2([0,equal$0,hash$0],_fX_), clear=include[2], reset=include[3], copy=include[4], @@ -28295,8 +28777,8 @@ replace_seq=include[21], clean=include[23], stats_alive=include[24], - _f0_=include[1]; - function create(sz){return caml_call2(_f0_,_cT_,sz)} + _fY_=include[1]; + function create(sz){return caml_call2(_fY_,_cR_,sz)} function of_seq(i) {var tbl=create(16);caml_call2(replace_seq,tbl,i);return tbl} return [0, @@ -28326,7 +28808,7 @@ stats_alive]} function make$7(param){return [0,0]} function add$2(b,k1,k2,d) - {var _fY_=b[1];b[1] = [0,make$6(k1,k2,d),_fY_];return 0} + {var _fW_=b[1];b[1] = [0,make$6(k1,k2,d),_fW_];return 0} function test_keys(k1,k2,e) {var match=get_key1(e),match$0=get_key2(e); if(match && match$0) @@ -28343,80 +28825,80 @@ return 0}} function find$3(b,k1,k2) {var - _fW_=b[1], - match=find_opt(function(_fX_){return test_keys(k1,k2,_fX_)},_fW_); + _fU_=b[1], + match=find_opt(function(_fV_){return test_keys(k1,k2,_fV_)},_fU_); if(match){var e=match[1];return get_data$2(e)} return 0} function length$8(b){return length$1(b[1])} function clear$4(b){b[1] = 0;return 0} - function create$7(n){return caml_call1(_q_[1],n)} - function length$9(k){return caml_call1(_q_[2],k)} - function get_key$1(t,n){return caml_call2(_q_[3],t,n)} - function get_key_copy$1(t,n){return caml_call2(_q_[4],t,n)} - function set_key$1(t,n,k){return caml_call3(_q_[5],t,n,k)} - function unset_key$1(t,n){return caml_call2(_q_[6],t,n)} - function check_key$1(t,n){return caml_call2(_q_[7],t,n)} + function create$7(n){return caml_call1(_o_[1],n)} + function length$9(k){return caml_call1(_o_[2],k)} + function get_key$1(t,n){return caml_call2(_o_[3],t,n)} + function get_key_copy$1(t,n){return caml_call2(_o_[4],t,n)} + function set_key$1(t,n,k){return caml_call3(_o_[5],t,n,k)} + function unset_key$1(t,n){return caml_call2(_o_[6],t,n)} + function check_key$1(t,n){return caml_call2(_o_[7],t,n)} function blit_key$1(t1,o1,t2,o2,l) - {return caml_call5(_q_[8],t1,o1,t2,o2,l)} - function get_data$3(t){return caml_call1(_q_[9],t)} - function get_data_copy$1(t){return caml_call1(_q_[10],t)} - function set_data$1(t,d){return caml_call2(_q_[11],t,d)} - function unset_data$1(t){return caml_call1(_q_[12],t)} - function check_data$1(t){return caml_call1(_q_[13],t)} - function blit_data$1(t1,t2){return caml_call2(_q_[14],t1,t2)} + {return caml_call5(_o_[8],t1,o1,t2,o2,l)} + function get_data$3(t){return caml_call1(_o_[9],t)} + function get_data_copy$1(t){return caml_call1(_o_[10],t)} + function set_data$1(t,d){return caml_call2(_o_[11],t,d)} + function unset_data$1(t){return caml_call1(_o_[12],t)} + function check_data$1(t){return caml_call1(_o_[13],t)} + function blit_data$1(t1,t2){return caml_call2(_o_[14],t1,t2)} function make$8(keys,data) {var l=keys.length - 1,eph=create$7(l); set_data$1(eph,data); - var _fU_=l - 1 | 0,_fT_=0; - if(! (_fU_ < 0)) - {var i=_fT_; + var _fS_=l - 1 | 0,_fR_=0; + if(! (_fS_ < 0)) + {var i=_fR_; for(;;) {set_key$1(eph,i,caml_check_bound(keys,i)[1 + i]); - var _fV_=i + 1 | 0; - if(_fU_ !== i){var i=_fV_;continue} + var _fT_=i + 1 | 0; + if(_fS_ !== i){var i=_fT_;continue} break}} return eph} function query$1(eph,keys) {var l=length$9(eph); try {if(l !== keys.length - 1)throw Exit; - var _fP_=l - 1 | 0,_fO_=0; - if(! (_fP_ < 0)) - {var i=_fO_; + var _fN_=l - 1 | 0,_fM_=0; + if(! (_fN_ < 0)) + {var i=_fM_; for(;;) {var match=get_key$1(eph,i); if(! match)throw Exit; var k=match[1]; if(k !== caml_check_bound(keys,i)[1 + i])throw Exit; - var _fR_=i + 1 | 0; - if(_fP_ !== i){var i=_fR_;continue} + var _fP_=i + 1 | 0; + if(_fN_ !== i){var i=_fP_;continue} break}} - var _fQ_=get_data$3(eph); - return _fQ_} - catch(_fS_) - {_fS_ = caml_wrap_exception(_fS_);if(_fS_ === Exit)return 0;throw _fS_}} + var _fO_=get_data$3(eph); + return _fO_} + catch(_fQ_) + {_fQ_ = caml_wrap_exception(_fQ_);if(_fQ_ === Exit)return 0;throw _fQ_}} function MakeSeeded$3(H) {function create(k,d) {var c=create$7(k.length - 1); set_data$1(c,d); - var _fM_=k.length - 1 - 1 | 0,_fL_=0; - if(! (_fM_ < 0)) - {var i=_fL_; + var _fK_=k.length - 1 - 1 | 0,_fJ_=0; + if(! (_fK_ < 0)) + {var i=_fJ_; for(;;) {set_key$1(c,i,caml_check_bound(k,i)[1 + i]); - var _fN_=i + 1 | 0; - if(_fM_ !== i){var i=_fN_;continue} + var _fL_=i + 1 | 0; + if(_fK_ !== i){var i=_fL_;continue} break}} return c} function hash(seed,k) - {var h=[0,0],_fH_=k.length - 1 - 1 | 0,_fG_=0; - if(! (_fH_ < 0)) - {var i=_fG_; + {var h=[0,0],_fF_=k.length - 1 - 1 | 0,_fE_=0; + if(! (_fF_ < 0)) + {var i=_fE_; for(;;) - {var _fI_=h[1],_fJ_=caml_check_bound(k,i)[1 + i]; - h[1] = (caml_call2(H[2],seed,_fJ_) * 65599 | 0) + _fI_ | 0; - var _fK_=i + 1 | 0; - if(_fH_ !== i){var i=_fK_;continue} + {var _fG_=h[1],_fH_=caml_check_bound(k,i)[1 + i]; + h[1] = (caml_call2(H[2],seed,_fH_) * 65599 | 0) + _fG_ | 0; + var _fI_=i + 1 | 0; + if(_fF_ !== i){var i=_fI_;continue} break}} return h[1]} function equal(c,k) @@ -28427,8 +28909,8 @@ {if(0 <= i) {var match=get_key$1(c,i); if(match) - {var ki=match[1],_fF_=caml_check_bound(k,i)[1 + i]; - if(caml_call2(H[1],_fF_,ki)){var i$0=i - 1 | 0,i=i$0;continue} + {var ki=match[1],_fD_=caml_check_bound(k,i)[1 + i]; + if(caml_call2(H[1],_fD_,ki)){var i$0=i - 1 | 0,i=i$0;continue} return 1} return 2} return 0}} @@ -28451,26 +28933,26 @@ return 0} function set_key_data(c,k,d) {unset_data$1(c); - var _fD_=k.length - 1 - 1 | 0,_fC_=0; - if(! (_fD_ < 0)) - {var i=_fC_; + var _fB_=k.length - 1 - 1 | 0,_fA_=0; + if(! (_fB_ < 0)) + {var i=_fA_; for(;;) {set_key$1(c,i,caml_check_bound(k,i)[1 + i]); - var _fE_=i + 1 | 0; - if(_fD_ !== i){var i=_fE_;continue} + var _fC_=i + 1 | 0; + if(_fB_ !== i){var i=_fC_;continue} break}} return set_data$1(c,d)} function check_key(c) {var i$1=length$9(c) - 1 | 0,i=i$1; for(;;) - {var _fz_=i < 0?1:0; - if(_fz_) - var _fA_=_fz_; + {var _fx_=i < 0?1:0; + if(_fx_) + var _fy_=_fx_; else - {var _fB_=check_key$1(c,i); - if(_fB_){var i$0=i - 1 | 0,i=i$0;continue} - var _fA_=_fB_} - return _fA_}} + {var _fz_=check_key$1(c,i); + if(_fz_){var i$0=i - 1 | 0,i=i$0;continue} + var _fy_=_fz_} + return _fy_}} return MakeSeeded$0 ([0,create,hash,equal,get_data$3,get_key,set_key_data,check_key])} function Make$4(H) @@ -28500,8 +28982,8 @@ replace_seq=include[21], clean=include[23], stats_alive=include[24], - _fy_=include[1]; - function create(sz){return caml_call2(_fy_,_cU_,sz)} + _fw_=include[1]; + function create(sz){return caml_call2(_fw_,_cS_,sz)} function of_seq(i) {var tbl=create(16);caml_call2(replace_seq,tbl,i);return tbl} return [0, @@ -28530,27 +29012,27 @@ clean, stats_alive]} function make$9(param){return [0,0]} - function add$3(b,k,d){var _fx_=b[1];b[1] = [0,make$8(k,d),_fx_];return 0} + function add$3(b,k,d){var _fv_=b[1];b[1] = [0,make$8(k,d),_fv_];return 0} function test_keys$0(k,e) {try {if(length$9(e) !== k.length - 1)throw Exit; - var _ft_=k.length - 1 - 1 | 0,_fs_=0; - if(! (_ft_ < 0)) - {var i=_fs_; + var _fr_=k.length - 1 - 1 | 0,_fq_=0; + if(! (_fr_ < 0)) + {var i=_fq_; for(;;) {var match=get_key$1(e,i),switch$0=0; if(match) {var x=match[1]; if(x === caml_check_bound(k,i)[1 + i]) - {var _fv_=i + 1 | 0; - if(_ft_ !== i){var i=_fv_;continue} + {var _ft_=i + 1 | 0; + if(_fr_ !== i){var i=_ft_;continue} switch$0 = 1}} if(! switch$0)throw Exit; break}} - var _fu_=1; - return _fu_} - catch(_fw_) - {_fw_ = caml_wrap_exception(_fw_);if(_fw_ === Exit)return 0;throw _fw_}} + var _fs_=1; + return _fs_} + catch(_fu_) + {_fu_ = caml_wrap_exception(_fu_);if(_fu_ === Exit)return 0;throw _fu_}} function remove$2(b,k) {var l=b[1],acc=0; for(;;) @@ -28562,8 +29044,8 @@ return 0}} function find$4(b,k) {var - _fq_=b[1], - match=find_opt(function(_fr_){return test_keys$0(k,_fr_)},_fq_); + _fo_=b[1], + match=find_opt(function(_fp_){return test_keys$0(k,_fp_)},_fo_); if(match){var e=match[1];return get_data$3(e)} return 0} function length$10(b){return length$1(b[1])} @@ -28636,9 +29118,9 @@ MakeSeeded$3, [0,make$9,add$3,remove$2,find$4,length$10,clear$5]], [0, - function(_fp_) + function(_fn_) {return MakeSeeded$0 - ([0,_fp_[3],_fp_[1],_fp_[2],_fp_[5],_fp_[4],_fp_[6],_fp_[7]])}]]; + ([0,_fn_[3],_fn_[1],_fn_[2],_fn_[5],_fn_[4],_fn_[6],_fn_[7]])}]]; caml_register_global(825,Stdlib_Ephemeron,"Stdlib__Ephemeron"); function generic_basename(is_dir_sep,current_dir_name,name) {if(caml_string_equal(name,cst$100))return current_dir_name; @@ -28679,24 +29161,24 @@ function is_dir_sep(s,i){return 47 === caml_string_get(s,i)?1:0} function is_relative(n) {var - _fn_=caml_ml_string_length(n) < 1?1:0, - _fo_=_fn_ || (47 !== caml_string_get(n,0)?1:0); - return _fo_} + _fl_=caml_ml_string_length(n) < 1?1:0, + _fm_=_fl_ || (47 !== caml_string_get(n,0)?1:0); + return _fm_} function is_implicit(n) - {var _fi_=is_relative(n); - if(_fi_) + {var _fg_=is_relative(n); + if(_fg_) {var - _fj_=caml_ml_string_length(n) < 2?1:0, - _fk_=_fj_ || caml_string_notequal(sub$0(n,0,2),cst$103); - if(_fk_) + _fh_=caml_ml_string_length(n) < 2?1:0, + _fi_=_fh_ || caml_string_notequal(sub$0(n,0,2),cst$103); + if(_fi_) var - _fl_=caml_ml_string_length(n) < 3?1:0, - _fm_=_fl_ || caml_string_notequal(sub$0(n,0,3),cst$102); + _fj_=caml_ml_string_length(n) < 3?1:0, + _fk_=_fj_ || caml_string_notequal(sub$0(n,0,3),cst$102); else - var _fm_=_fk_} + var _fk_=_fi_} else - var _fm_=_fi_; - return _fm_} + var _fk_=_fg_; + return _fk_} function check_suffix(name,suff){return ends_with$0(suff,name)} function chop_suffix_opt(suffix,filename) {var @@ -28709,24 +29191,24 @@ :0} return 0} try - {var _c3_=caml_sys_getenv(cst_TMPDIR),_cV_=_c3_} - catch(_fh_) - {_fh_ = caml_wrap_exception(_fh_); - if(_fh_ !== Not_found)throw _fh_; - var _cV_=cst_tmp} + {var _c1_=caml_sys_getenv(cst_TMPDIR),_cT_=_c1_} + catch(_ff_) + {_ff_ = caml_wrap_exception(_ff_); + if(_ff_ !== Not_found)throw _ff_; + var _cT_=cst_tmp} function quote(s) {var l=caml_ml_string_length(s),b=create$2(l + 20 | 0); add_char(b,39); - var _ff_=l - 1 | 0,_fe_=0; - if(! (_ff_ < 0)) - {var i=_fe_; + var _fd_=l - 1 | 0,_fc_=0; + if(! (_fd_ < 0)) + {var i=_fc_; for(;;) {if(39 === caml_string_get(s,i)) add_string(b,quotequote); else add_char(b,caml_string_get(s,i)); - var _fg_=i + 1 | 0; - if(_ff_ !== i){var i=_fg_;continue} + var _fe_=i + 1 | 0; + if(_fd_ !== i){var i=_fe_;continue} break}} add_char(b,39); return contents(b)} @@ -28734,25 +29216,25 @@ {if(stderr) var f=stderr[1], - _e__=caml_equal(stderr,stdout)?cst_2_1:cat(cst_2,quote(f)), - _e$_=_e__; + _e8_=caml_equal(stderr,stdout)?cst_2_1:cat(cst_2,quote(f)), + _e9_=_e8_; else - var _e$_=cst$109; + var _e9_=cst$109; if(stdout) - var f$0=stdout[1],_fa_=cat(cst$104,quote(f$0)); + var f$0=stdout[1],_e__=cat(cst$104,quote(f$0)); else - var _fa_=cst$108; - var _fb_=cat(_fa_,_e$_); + var _e__=cst$108; + var _e$_=cat(_e__,_e9_); if(stdin) - var f$1=stdin[1],_fc_=cat(cst$105,quote(f$1)); + var f$1=stdin[1],_fa_=cat(cst$105,quote(f$1)); else - var _fc_=cst$107; - var _fd_=cat(_fc_,_fb_); - return cat(concat$1(cst$106,map$4(quote,[0,cmd,args])),_fd_)} - function basename(_e9_) - {return generic_basename(is_dir_sep,current_dir_name,_e9_)} - function dirname(_e8_) - {return generic_dirname(is_dir_sep,current_dir_name,_e8_)} + var _fa_=cst$107; + var _fb_=cat(_fa_,_e$_); + return cat(concat$1(cst$106,map$4(quote,[0,cmd,args])),_fb_)} + function basename(_e7_) + {return generic_basename(is_dir_sep,current_dir_name,_e7_)} + function dirname(_e6_) + {return generic_dirname(is_dir_sep,current_dir_name,_e6_)} var Unix= [0, @@ -28765,76 +29247,76 @@ is_implicit, check_suffix, chop_suffix_opt, - _cV_, + _cT_, quote, quote_command, basename, dirname]; function is_dir_sep$0(s,i) - {var c=caml_string_get(s,i),_e5_=47 === c?1:0; - if(_e5_) - var _e6_=_e5_; + {var c=caml_string_get(s,i),_e3_=47 === c?1:0; + if(_e3_) + var _e4_=_e3_; else - var _e7_=92 === c?1:0,_e6_=_e7_ || (58 === c?1:0); - return _e6_} + var _e5_=92 === c?1:0,_e4_=_e5_ || (58 === c?1:0); + return _e4_} function is_relative$0(n) {var - _eZ_=caml_ml_string_length(n) < 1?1:0, - _e0_=_eZ_ || (47 !== caml_string_get(n,0)?1:0); - if(_e0_) + _eX_=caml_ml_string_length(n) < 1?1:0, + _eY_=_eX_ || (47 !== caml_string_get(n,0)?1:0); + if(_eY_) {var - _e1_=caml_ml_string_length(n) < 1?1:0, - _e2_=_e1_ || (92 !== caml_string_get(n,0)?1:0); - if(_e2_) + _eZ_=caml_ml_string_length(n) < 1?1:0, + _e0_=_eZ_ || (92 !== caml_string_get(n,0)?1:0); + if(_e0_) var - _e3_=caml_ml_string_length(n) < 2?1:0, - _e4_=_e3_ || (58 !== caml_string_get(n,1)?1:0); + _e1_=caml_ml_string_length(n) < 2?1:0, + _e2_=_e1_ || (58 !== caml_string_get(n,1)?1:0); else - var _e4_=_e2_} + var _e2_=_e0_} else - var _e4_=_e0_; - return _e4_} + var _e2_=_eY_; + return _e2_} function is_implicit$0(n) - {var _eQ_=is_relative$0(n); - if(_eQ_) + {var _eO_=is_relative$0(n); + if(_eO_) {var - _eR_=caml_ml_string_length(n) < 2?1:0, - _eS_=_eR_ || caml_string_notequal(sub$0(n,0,2),cst$113); - if(_eS_) + _eP_=caml_ml_string_length(n) < 2?1:0, + _eQ_=_eP_ || caml_string_notequal(sub$0(n,0,2),cst$113); + if(_eQ_) {var - _eT_=caml_ml_string_length(n) < 2?1:0, - _eU_=_eT_ || caml_string_notequal(sub$0(n,0,2),cst$112); - if(_eU_) + _eR_=caml_ml_string_length(n) < 2?1:0, + _eS_=_eR_ || caml_string_notequal(sub$0(n,0,2),cst$112); + if(_eS_) {var - _eV_=caml_ml_string_length(n) < 3?1:0, - _eW_=_eV_ || caml_string_notequal(sub$0(n,0,3),cst$111); - if(_eW_) + _eT_=caml_ml_string_length(n) < 3?1:0, + _eU_=_eT_ || caml_string_notequal(sub$0(n,0,3),cst$111); + if(_eU_) var - _eX_=caml_ml_string_length(n) < 3?1:0, - _eY_=_eX_ || caml_string_notequal(sub$0(n,0,3),cst$110); + _eV_=caml_ml_string_length(n) < 3?1:0, + _eW_=_eV_ || caml_string_notequal(sub$0(n,0,3),cst$110); else - var _eY_=_eW_} + var _eW_=_eU_} else - var _eY_=_eU_} + var _eW_=_eS_} else - var _eY_=_eS_} + var _eW_=_eQ_} else - var _eY_=_eQ_; - return _eY_} + var _eW_=_eO_; + return _eW_} function check_suffix$0(name,suff) - {var _eN_=caml_ml_string_length(suff) <= caml_ml_string_length(name)?1:0; - if(_eN_) + {var _eL_=caml_ml_string_length(suff) <= caml_ml_string_length(name)?1:0; + if(_eL_) var s= sub$0 (name, caml_ml_string_length(name) - caml_ml_string_length(suff) | 0, caml_ml_string_length(suff)), - _eO_=lowercase_ascii$1(suff), - _eP_=caml_string_equal(lowercase_ascii$1(s),_eO_); + _eM_=lowercase_ascii$1(suff), + _eN_=caml_string_equal(lowercase_ascii$1(s),_eM_); else - var _eP_=_eN_; - return _eP_} + var _eN_=_eL_; + return _eN_} function chop_suffix_opt$0(suffix,filename) {var len_s=caml_ml_string_length(suffix), @@ -28842,28 +29324,28 @@ if(len_s <= len_f) {var r=sub$0(filename,len_f - len_s | 0,len_s), - _eM_=lowercase_ascii$1(suffix); - return caml_string_equal(lowercase_ascii$1(r),_eM_) + _eK_=lowercase_ascii$1(suffix); + return caml_string_equal(lowercase_ascii$1(r),_eK_) ?[0,sub$0(filename,0,len_f - len_s | 0)] :0} return 0} try - {var _c2_=caml_sys_getenv(cst_TEMP),temp_dir_name=_c2_} - catch(_eL_) - {_eL_ = caml_wrap_exception(_eL_); - if(_eL_ !== Not_found)throw _eL_; + {var _c0_=caml_sys_getenv(cst_TEMP),temp_dir_name=_c0_} + catch(_eJ_) + {_eJ_ = caml_wrap_exception(_eJ_); + if(_eJ_ !== Not_found)throw _eJ_; var temp_dir_name=cst$114} function quote$0(s) {var l=caml_ml_string_length(s),b=create$2(l + 20 | 0); add_char(b,34); function add_bs(n) - {var _eJ_=1; + {var _eH_=1; if(! (n < 1)) - {var j=_eJ_; + {var j=_eH_; for(;;) {add_char(b,92); - var _eK_=j + 1 | 0; - if(n !== j){var j=_eK_;continue} + var _eI_=j + 1 | 0; + if(n !== j){var j=_eI_;continue} break}} return 0} function loop$0(counter,i) @@ -28872,17 +29354,17 @@ {if(i$0 === l)return add_char(b,34); var c=caml_string_get(s,i$0); if(34 === c) - {var _eH_=0; + {var _eF_=0; if(counter < 50) {var counter$1=counter + 1 | 0; - return loop_bs(counter$1,_eH_,i$0)} - return caml_trampoline_return(loop_bs,[0,_eH_,i$0])} + return loop_bs(counter$1,_eF_,i$0)} + return caml_trampoline_return(loop_bs,[0,_eF_,i$0])} if(92 === c) - {var _eI_=0; + {var _eG_=0; if(counter < 50) {var counter$0=counter + 1 | 0; - return loop_bs(counter$0,_eI_,i$0)} - return caml_trampoline_return(loop_bs,[0,_eI_,i$0])} + return loop_bs(counter$0,_eG_,i$0)} + return caml_trampoline_return(loop_bs,[0,_eG_,i$0])} add_char(b,c); var i$1=i$0 + 1 | 0,i$0=i$1; continue}} @@ -28894,10 +29376,10 @@ if(34 === match) {add_bs((2 * n$0 | 0) + 1 | 0); add_char(b,34); - var _eG_=i$0 + 1 | 0; + var _eE_=i$0 + 1 | 0; if(counter < 50) - {var counter$1=counter + 1 | 0;return loop$0(counter$1,_eG_)} - return caml_trampoline_return(loop$0,[0,_eG_])} + {var counter$1=counter + 1 | 0;return loop$0(counter$1,_eE_)} + return caml_trampoline_return(loop$0,[0,_eE_])} if(92 === match) {var i$1=i$0 + 1 | 0,n$1=n$0 + 1 | 0,n$0=n$1,i$0=i$1;continue} add_bs(n$0); @@ -28915,36 +29397,36 @@ {if(stderr) var f=stderr[1], - _ex_= + _ev_= caml_equal(stderr,stdout) ?cst_2_1$0 :cat(cst_2$0,quote_cmd_filename(f)), - _ey_=_ex_; + _ew_=_ev_; else - var _ey_=cst$125; - var _ez_=[0,_ey_,_cW_]; + var _ew_=cst$125; + var _ex_=[0,_ew_,_cU_]; if(stdout) - var f$0=stdout[1],_eA_=cat(cst$117,quote_cmd_filename(f$0)); + var f$0=stdout[1],_ey_=cat(cst$117,quote_cmd_filename(f$0)); else - var _eA_=cst$124; - var _eB_=[0,_eA_,_ez_]; + var _ey_=cst$124; + var _ez_=[0,_ey_,_ex_]; if(stdin) - var f$1=stdin[1],_eC_=cat(cst$118,quote_cmd_filename(f$1)); + var f$1=stdin[1],_eA_=cat(cst$118,quote_cmd_filename(f$1)); else - var _eC_=cst$123; + var _eA_=cst$123; var s=concat$1(cst$119,map$4(quote$0,args)), b=create$2(caml_ml_string_length(s) + 20 | 0), - _eD_=[0,_eC_,_eB_]; + _eB_=[0,_eA_,_ez_]; iter$4 (function(c) {var switch$0=0; if(62 <= c) - {var _eF_=c - 63 | 0; - if(60 < _eF_ >>> 0) - {if(! (62 <= _eF_))switch$0 = 1} + {var _eD_=c - 63 | 0; + if(60 < _eD_ >>> 0) + {if(! (62 <= _eD_))switch$0 = 1} else - if(31 === _eF_)switch$0 = 1} + if(31 === _eD_)switch$0 = 1} else if(42 <= c) {if(60 === c)switch$0 = 1} @@ -28954,22 +29436,22 @@ {case 2:case 3:case 6:break;default:switch$0 = 1} return switch$0?(add_char(b,94),add_char(b,c)):add_char(b,c)}, s); - var _eE_=[0,cst$120,[0,contents(b),_eD_]]; - return concat$1(cst$122,[0,cst$121,[0,quote_cmd_filename(cmd),_eE_]])} + var _eC_=[0,cst$120,[0,contents(b),_eB_]]; + return concat$1(cst$122,[0,cst$121,[0,quote_cmd_filename(cmd),_eC_]])} function drive_and_path(s) - {var _et_=2 <= caml_ml_string_length(s)?1:0; - if(_et_) + {var _er_=2 <= caml_ml_string_length(s)?1:0; + if(_er_) {var param=caml_string_get(s,0),switch$0=0; if(91 <= param) {if(! (25 < param - 97 >>> 0))switch$0 = 1} else if(65 <= param)switch$0 = 1; - var _eu_=switch$0?1:0,_ev_=_eu_?58 === caml_string_get(s,1)?1:0:_eu_} + var _es_=switch$0?1:0,_et_=_es_?58 === caml_string_get(s,1)?1:0:_es_} else - var _ev_=_et_; - if(_ev_) - {var _ew_=sub$0(s,2,caml_ml_string_length(s) - 2 | 0); - return [0,sub$0(s,0,2),_ew_]} + var _et_=_er_; + if(_et_) + {var _eu_=sub$0(s,2,caml_ml_string_length(s) - 2 | 0); + return [0,sub$0(s,0,2),_eu_]} return [0,cst$126,s]} function dirname$0(s) {var @@ -28998,10 +29480,10 @@ quote_command$0, basename$0, dirname$0]; - function basename$1(_es_) - {return generic_basename(is_dir_sep$0,current_dir_name$1,_es_)} - function dirname$1(_er_) - {return generic_dirname(is_dir_sep$0,current_dir_name$1,_er_)} + function basename$1(_eq_) + {return generic_basename(is_dir_sep$0,current_dir_name$1,_eq_)} + function dirname$1(_ep_) + {return generic_dirname(is_dir_sep$0,current_dir_name$1,_ep_)} var Cygwin= [0, @@ -29014,7 +29496,7 @@ is_implicit$0, check_suffix$0, chop_suffix_opt$0, - _cV_, + _cT_, quote, quote_command, basename$1, @@ -29075,14 +29557,14 @@ function remove_extension(name) {var l=extension_len(name); return 0 === l?name:sub$0(name,0,caml_ml_string_length(name) - l | 0)} - var prng$0=[246,function(_eq_){return caml_call1(_ci_[2],0)}]; + var prng$0=[246,function(_eo_){return caml_call1(_cg_[2],0)}]; function temp_file_name(temp_dir,prefix,suffix) {var - _eo_=caml_obj_tag(prng$0), - _ep_= - 250 === _eo_?prng$0[1]:246 === _eo_?force_lazy_block(prng$0):prng$0, - rnd=caml_call1(_ci_[4],_ep_) & 16777215; - return concat$4(temp_dir,caml_call3(sprintf(_cX_),prefix,rnd,suffix))} + _em_=caml_obj_tag(prng$0), + _en_= + 250 === _em_?prng$0[1]:246 === _em_?force_lazy_block(prng$0):prng$0, + rnd=caml_call1(_cg_[4],_en_) & 16777215; + return concat$4(temp_dir,caml_call3(sprintf(_cV_),prefix,rnd,suffix))} var current_temp_dir_name=[0,temp_dir_name$0]; function set_temp_dir_name(s){current_temp_dir_name[1] = s;return 0} function get_temp_dir_name(param){return current_temp_dir_name[1]} @@ -29096,7 +29578,7 @@ for(;;) {var name=temp_file_name(temp_dir,prefix,suffix); try - {runtime.caml_sys_close(caml_sys_open(name,_cY_,384));return name} + {runtime.caml_sys_close(caml_sys_open(name,_cW_,384));return name} catch(e) {e = caml_wrap_exception(e); if(e[1] === Sys_error) @@ -29105,11 +29587,11 @@ continue} throw e}}} return try_name(0)} - function open_temp_file(opt,_em_,_el_,prefix,suffix) - {if(opt)var sth=opt[1],mode=sth;else var mode=_cZ_; - if(_em_)var sth$0=_em_[1],perms=sth$0;else var perms=384; - if(_el_) - var sth$1=_el_[1],temp_dir=sth$1; + function open_temp_file(opt,_ek_,_ej_,prefix,suffix) + {if(opt)var sth=opt[1],mode=sth;else var mode=_cX_; + if(_ek_)var sth$0=_ek_[1],perms=sth$0;else var perms=384; + if(_ej_) + var sth$1=_ej_[1],temp_dir=sth$1; else var temp_dir=current_temp_dir_name[1]; function try_name(counter) @@ -29117,8 +29599,8 @@ for(;;) {var name=temp_file_name(temp_dir,prefix,suffix); try - {var _en_=[0,name,open_gen([0,1,[0,3,[0,5,mode]]],perms,name)]; - return _en_} + {var _el_=[0,name,open_gen([0,1,[0,3,[0,5,mode]]],perms,name)]; + return _el_} catch(e) {e = caml_wrap_exception(e); if(e[1] === Sys_error) @@ -29177,7 +29659,7 @@ function arg(x){return Math.atan2(x[2],x[1])} function polar(n,a){return [254,Math.cos(a) * n,Math.sin(a) * n]} function sqrt(x) - {if(x[1] == 0. && x[2] == 0.)return _c0_; + {if(x[1] == 0. && x[2] == 0.)return _cY_; var r=Math.abs(x[1]),i=Math.abs(x[2]); if(i <= r) var @@ -29193,7 +29675,7 @@ function exp(x) {var e=Math.exp(x[1]);return [254,e * Math.cos(x[2]),e * Math.sin(x[2])]} function log(x) - {var _ek_=Math.atan2(x[2],x[1]);return [254,Math.log(norm(x)),_ek_]} + {var _ei_=Math.atan2(x[2],x[1]);return [254,Math.log(norm(x)),_ei_]} function pow(x,y){return exp(mul(y,log(x)))} var Stdlib_Complex= @@ -29528,26 +30010,26 @@ function cloop(arr,idx,f,col,max) {if(col === idx.length - 1) return caml_ba_set_generic(arr,idx,caml_call1(f,idx)); - var _ei_=caml_check_bound(max,col)[1 + col] - 1 | 0,_eh_=0; - if(! (_ei_ < 0)) - {var j=_eh_; + var _eg_=caml_check_bound(max,col)[1 + col] - 1 | 0,_ef_=0; + if(! (_eg_ < 0)) + {var j=_ef_; for(;;) {caml_check_bound(idx,col)[1 + col] = j; cloop(arr,idx,f,col + 1 | 0,max); - var _ej_=j + 1 | 0; - if(_ei_ !== j){var j=_ej_;continue} + var _eh_=j + 1 | 0; + if(_eg_ !== j){var j=_eh_;continue} break}} return 0} function floop(arr,idx,f,col,max) {if(0 <= col) - {var _ef_=caml_check_bound(max,col)[1 + col],_ee_=1; - if(! (_ef_ < 1)) - {var j=_ee_; + {var _ed_=caml_check_bound(max,col)[1 + col],_ec_=1; + if(! (_ed_ < 1)) + {var j=_ec_; for(;;) {caml_check_bound(idx,col)[1 + col] = j; floop(arr,idx,f,col - 1 | 0,max); - var _eg_=j + 1 | 0; - if(_ef_ !== j){var j=_eg_;continue} + var _ee_=j + 1 | 0; + if(_ed_ !== j){var j=_ee_;continue} break}} return 0} return caml_ba_set_generic(arr,idx,caml_call1(f,idx))} @@ -29559,24 +30041,24 @@ ?(floop(arr,caml_make_vect(dlen,1),f,dlen - 1 | 0,dims),arr) :(cloop(arr,caml_make_vect(dlen,0),f,0,dims),arr)} function dims(a) - {var n=caml_ba_num_dims(a),d=caml_make_vect(n,0),_eb_=n - 1 | 0,_ea_=0; - if(! (_eb_ < 0)) - {var i=_ea_; + {var n=caml_ba_num_dims(a),d=caml_make_vect(n,0),_d$_=n - 1 | 0,_d__=0; + if(! (_d$_ < 0)) + {var i=_d__; for(;;) - {var _ec_=runtime.caml_ba_dim(a,i); - caml_check_bound(d,i)[1 + i] = _ec_; - var _ed_=i + 1 | 0; - if(_eb_ !== i){var i=_ed_;continue} + {var _ea_=runtime.caml_ba_dim(a,i); + caml_check_bound(d,i)[1 + i] = _ea_; + var _eb_=i + 1 | 0; + if(_d$_ !== i){var i=_eb_;continue} break}} return d} function size_in_bytes(arr) - {var _d$_=fold_left$3(caml_mul,1,dims(arr)); - return caml_mul(kind_size_in_bytes(caml_ba_kind(arr)),_d$_)} + {var _d9_=fold_left$3(caml_mul,1,dims(arr)); + return caml_mul(kind_size_in_bytes(caml_ba_kind(arr)),_d9_)} function create$8(kind,layout){return caml_ba_create(kind,layout,[0])} function get$3(arr){return runtime.caml_ba_get_generic(arr,[0])} function set$2(arr) - {var _d9_=[0]; - return function(_d__){return caml_ba_set_generic(arr,_d9_,_d__)}} + {var _d7_=[0]; + return function(_d8_){return caml_ba_set_generic(arr,_d7_,_d8_)}} function size_in_bytes$0(arr) {return kind_size_in_bytes(caml_ba_kind(arr))} function of_value(kind,layout,v) @@ -29584,87 +30066,87 @@ function create$9(kind,layout,dim) {return caml_ba_create(kind,layout,[0,dim])} function size_in_bytes$1(arr) - {var _d8_=caml_ba_dim_1(arr); - return caml_mul(kind_size_in_bytes(caml_ba_kind(arr)),_d8_)} + {var _d6_=caml_ba_dim_1(arr); + return caml_mul(kind_size_in_bytes(caml_ba_kind(arr)),_d6_)} function slice(a,n) {var match=runtime.caml_ba_layout(a); return match?caml_ba_slice(a,[0,n]):caml_ba_slice(a,[0,n])} function init$7(kind,layout,dim,f) {var arr=create$9(kind,layout,dim); if(layout) - {var _d6_=1; + {var _d4_=1; if(! (dim < 1)) - {var i$0=_d6_; + {var i$0=_d4_; for(;;) {caml_ba_set_1(arr,i$0,caml_call1(f,i$0)); - var _d7_=i$0 + 1 | 0; - if(dim !== i$0){var i$0=_d7_;continue} + var _d5_=i$0 + 1 | 0; + if(dim !== i$0){var i$0=_d5_;continue} break}} return arr} - var _d4_=dim - 1 | 0,_d3_=0; - if(! (_d4_ < 0)) - {var i=_d3_; + var _d2_=dim - 1 | 0,_d1_=0; + if(! (_d2_ < 0)) + {var i=_d1_; for(;;) {caml_ba_set_1(arr,i,caml_call1(f,i)); - var _d5_=i + 1 | 0; - if(_d4_ !== i){var i=_d5_;continue} + var _d3_=i + 1 | 0; + if(_d2_ !== i){var i=_d3_;continue} break}} return arr} function of_array(kind,layout,data) {var ba=create$9(kind,layout,data.length - 1), ofs=layout?1:0, - _d1_=data.length - 1 - 1 | 0, - _d0_=0; - if(! (_d1_ < 0)) - {var i=_d0_; + _dZ_=data.length - 1 - 1 | 0, + _dY_=0; + if(! (_dZ_ < 0)) + {var i=_dY_; for(;;) {caml_ba_set_1(ba,i + ofs | 0,caml_check_bound(data,i)[1 + i]); - var _d2_=i + 1 | 0; - if(_d1_ !== i){var i=_d2_;continue} + var _d0_=i + 1 | 0; + if(_dZ_ !== i){var i=_d0_;continue} break}} return ba} function create$10(kind,layout,dim1,dim2) {return caml_ba_create(kind,layout,[0,dim1,dim2])} function size_in_bytes$2(arr) - {var _dY_=caml_ba_dim_2(arr),_dZ_=caml_ba_dim_1(arr); + {var _dW_=caml_ba_dim_2(arr),_dX_=caml_ba_dim_1(arr); return caml_mul - (caml_mul(kind_size_in_bytes(caml_ba_kind(arr)),_dZ_),_dY_)} + (caml_mul(kind_size_in_bytes(caml_ba_kind(arr)),_dX_),_dW_)} function slice_left(a,n){return caml_ba_slice(a,[0,n])} function slice_right(a,n){return caml_ba_slice(a,[0,n])} function init$8(kind,layout,dim1,dim2,f) {var arr=create$10(kind,layout,dim1,dim2); if(layout) - {var _dU_=1; + {var _dS_=1; if(! (dim2 < 1)) - {var j$0=_dU_; + {var j$0=_dS_; for(;;) - {var _dV_=1; + {var _dT_=1; if(! (dim1 < 1)) - {var i$0=_dV_; + {var i$0=_dT_; for(;;) {caml_ba_set_2(arr,i$0,j$0,caml_call2(f,i$0,j$0)); - var _dX_=i$0 + 1 | 0; - if(dim1 !== i$0){var i$0=_dX_;continue} + var _dV_=i$0 + 1 | 0; + if(dim1 !== i$0){var i$0=_dV_;continue} break}} - var _dW_=j$0 + 1 | 0; - if(dim2 !== j$0){var j$0=_dW_;continue} + var _dU_=j$0 + 1 | 0; + if(dim2 !== j$0){var j$0=_dU_;continue} break}} return arr} - var _dP_=dim1 - 1 | 0,_dO_=0; - if(! (_dP_ < 0)) - {var i=_dO_; + var _dN_=dim1 - 1 | 0,_dM_=0; + if(! (_dN_ < 0)) + {var i=_dM_; for(;;) - {var _dR_=dim2 - 1 | 0,_dQ_=0; - if(! (_dR_ < 0)) - {var j=_dQ_; + {var _dP_=dim2 - 1 | 0,_dO_=0; + if(! (_dP_ < 0)) + {var j=_dO_; for(;;) {caml_ba_set_2(arr,i,j,caml_call2(f,i,j)); - var _dT_=j + 1 | 0; - if(_dR_ !== j){var j=_dT_;continue} + var _dR_=j + 1 | 0; + if(_dP_ !== j){var j=_dR_;continue} break}} - var _dS_=i + 1 | 0; - if(_dP_ !== i){var i=_dS_;continue} + var _dQ_=i + 1 | 0; + if(_dN_ !== i){var i=_dQ_;continue} break}} return arr} function of_array$0(kind,layout,data) @@ -29673,38 +30155,38 @@ dim2=0 === dim1?0:caml_check_bound(data,0)[1].length - 1, ba=create$10(kind,layout,dim1,dim2), ofs=layout?1:0, - _dJ_=dim1 - 1 | 0, - _dI_=0; - if(! (_dJ_ < 0)) - {var i=_dI_; + _dH_=dim1 - 1 | 0, + _dG_=0; + if(! (_dH_ < 0)) + {var i=_dG_; for(;;) {var row=caml_check_bound(data,i)[1 + i]; if(row.length - 1 !== dim2) invalid_arg(cst_Bigarray_Array2_of_array_n); - var _dL_=dim2 - 1 | 0,_dK_=0; - if(! (_dL_ < 0)) - {var j=_dK_; + var _dJ_=dim2 - 1 | 0,_dI_=0; + if(! (_dJ_ < 0)) + {var j=_dI_; for(;;) {caml_ba_set_2 (ba,i + ofs | 0,j + ofs | 0,caml_check_bound(row,j)[1 + j]); - var _dN_=j + 1 | 0; - if(_dL_ !== j){var j=_dN_;continue} + var _dL_=j + 1 | 0; + if(_dJ_ !== j){var j=_dL_;continue} break}} - var _dM_=i + 1 | 0; - if(_dJ_ !== i){var i=_dM_;continue} + var _dK_=i + 1 | 0; + if(_dH_ !== i){var i=_dK_;continue} break}} return ba} function create$11(kind,layout,dim1,dim2,dim3) {return caml_ba_create(kind,layout,[0,dim1,dim2,dim3])} function size_in_bytes$3(arr) {var - _dF_=runtime.caml_ba_dim_3(arr), - _dG_=caml_ba_dim_2(arr), - _dH_=caml_ba_dim_1(arr); + _dD_=runtime.caml_ba_dim_3(arr), + _dE_=caml_ba_dim_2(arr), + _dF_=caml_ba_dim_1(arr); return caml_mul (caml_mul - (caml_mul(kind_size_in_bytes(caml_ba_kind(arr)),_dH_),_dG_), - _dF_)} + (caml_mul(kind_size_in_bytes(caml_ba_kind(arr)),_dF_),_dE_), + _dD_)} function slice_left_1(a,n,m){return caml_ba_slice(a,[0,n,m])} function slice_right_1(a,n,m){return caml_ba_slice(a,[0,n,m])} function slice_left_2(a,n){return caml_ba_slice(a,[0,n])} @@ -29712,50 +30194,50 @@ function init$9(kind,layout,dim1,dim2,dim3,f) {var arr=create$11(kind,layout,dim1,dim2,dim3); if(layout) - {var _dz_=1; + {var _dx_=1; if(! (dim3 < 1)) - {var k$0=_dz_; + {var k$0=_dx_; for(;;) - {var _dA_=1; + {var _dy_=1; if(! (dim2 < 1)) - {var j$0=_dA_; + {var j$0=_dy_; for(;;) - {var _dC_=1; + {var _dA_=1; if(! (dim1 < 1)) - {var i$0=_dC_; + {var i$0=_dA_; for(;;) {caml_ba_set_3(arr,i$0,j$0,k$0,caml_call3(f,i$0,j$0,k$0)); - var _dE_=i$0 + 1 | 0; - if(dim1 !== i$0){var i$0=_dE_;continue} + var _dC_=i$0 + 1 | 0; + if(dim1 !== i$0){var i$0=_dC_;continue} break}} - var _dD_=j$0 + 1 | 0; - if(dim2 !== j$0){var j$0=_dD_;continue} + var _dB_=j$0 + 1 | 0; + if(dim2 !== j$0){var j$0=_dB_;continue} break}} - var _dB_=k$0 + 1 | 0; - if(dim3 !== k$0){var k$0=_dB_;continue} + var _dz_=k$0 + 1 | 0; + if(dim3 !== k$0){var k$0=_dz_;continue} break}} return arr} - var _dr_=dim1 - 1 | 0,_dq_=0; - if(! (_dr_ < 0)) - {var i=_dq_; + var _dp_=dim1 - 1 | 0,_do_=0; + if(! (_dp_ < 0)) + {var i=_do_; for(;;) - {var _dt_=dim2 - 1 | 0,_ds_=0; - if(! (_dt_ < 0)) - {var j=_ds_; + {var _dr_=dim2 - 1 | 0,_dq_=0; + if(! (_dr_ < 0)) + {var j=_dq_; for(;;) - {var _dw_=dim3 - 1 | 0,_dv_=0; - if(! (_dw_ < 0)) - {var k=_dv_; + {var _du_=dim3 - 1 | 0,_dt_=0; + if(! (_du_ < 0)) + {var k=_dt_; for(;;) {caml_ba_set_3(arr,i,j,k,caml_call3(f,i,j,k)); - var _dy_=k + 1 | 0; - if(_dw_ !== k){var k=_dy_;continue} + var _dw_=k + 1 | 0; + if(_du_ !== k){var k=_dw_;continue} break}} - var _dx_=j + 1 | 0; - if(_dt_ !== j){var j=_dx_;continue} + var _dv_=j + 1 | 0; + if(_dr_ !== j){var j=_dv_;continue} break}} - var _du_=i + 1 | 0; - if(_dr_ !== i){var i=_du_;continue} + var _ds_=i + 1 | 0; + if(_dp_ !== i){var i=_ds_;continue} break}} return arr} function of_array$1(kind,layout,data) @@ -29768,24 +30250,24 @@ :caml_check_bound(caml_check_bound(data,0)[1],0)[1].length - 1, ba=create$11(kind,layout,dim1,dim2,dim3), ofs=layout?1:0, - _di_=dim1 - 1 | 0, - _dh_=0; - if(! (_di_ < 0)) - {var i=_dh_; + _dg_=dim1 - 1 | 0, + _df_=0; + if(! (_dg_ < 0)) + {var i=_df_; for(;;) {var row=caml_check_bound(data,i)[1 + i]; if(row.length - 1 !== dim2) invalid_arg(cst_Bigarray_Array3_of_array_n); - var _dk_=dim2 - 1 | 0,_dj_=0; - if(! (_dk_ < 0)) - {var j=_dj_; + var _di_=dim2 - 1 | 0,_dh_=0; + if(! (_di_ < 0)) + {var j=_dh_; for(;;) {var col=caml_check_bound(row,j)[1 + j]; if(col.length - 1 !== dim3) invalid_arg(cst_Bigarray_Array3_of_array_n$0); - var _dn_=dim3 - 1 | 0,_dm_=0; - if(! (_dn_ < 0)) - {var k=_dm_; + var _dl_=dim3 - 1 | 0,_dk_=0; + if(! (_dl_ < 0)) + {var k=_dk_; for(;;) {caml_ba_set_3 (ba, @@ -29793,14 +30275,14 @@ j + ofs | 0, k + ofs | 0, caml_check_bound(col,k)[1 + k]); - var _dp_=k + 1 | 0; - if(_dn_ !== k){var k=_dp_;continue} + var _dn_=k + 1 | 0; + if(_dl_ !== k){var k=_dn_;continue} break}} - var _do_=j + 1 | 0; - if(_dk_ !== j){var j=_do_;continue} + var _dm_=j + 1 | 0; + if(_di_ !== j){var j=_dm_;continue} break}} - var _dl_=i + 1 | 0; - if(_di_ !== i){var i=_dl_;continue} + var _dj_=i + 1 | 0; + if(_dg_ !== i){var i=_dj_;continue} break}} return ba} function array0_of_genarray(a) @@ -29889,51 +30371,51 @@ caml_register_global(834,Stdlib_Bigarray,"Stdlib__Bigarray"); function with_open(openfun,s,f) {var ic=caml_call1(openfun,s); - function _dg_(param){return caml_call1(f,ic)} - return protect(function(param){return close_noerr$0(ic)},_dg_)} + function _de_(param){return caml_call1(f,ic)} + return protect(function(param){return close_noerr$0(ic)},_de_)} function with_open_bin(s,f){return with_open(open_bin$0,s,f)} function with_open_text(s,f){return with_open(open_text$0,s,f)} function with_open_gen(flags,perm,s,f) - {return with_open(function(_df_){return open_gen$0(flags,perm,_df_)},s,f)} + {return with_open(function(_dd_){return open_gen$0(flags,perm,_dd_)},s,f)} var seek=_m_[4],pos=_m_[5],length$11=_m_[6]; function input_char$0(ic) {try {var c=caml_ml_input_char(ic)} - catch(_de_) - {_de_ = caml_wrap_exception(_de_); - if(_de_ === End_of_file)return 0; - throw _de_} + catch(_dc_) + {_dc_ = caml_wrap_exception(_dc_); + if(_dc_ === End_of_file)return 0; + throw _dc_} return [0,c]} function input_byte$0(ic) {try {var n=caml_ml_input_char(ic)} - catch(_dd_) - {_dd_ = caml_wrap_exception(_dd_); - if(_dd_ === End_of_file)return 0; - throw _dd_} + catch(_db_) + {_db_ = caml_wrap_exception(_db_); + if(_db_ === End_of_file)return 0; + throw _db_} return [0,n]} function input_line$0(ic) {try {var s=input_line(ic)} - catch(_dc_) - {_dc_ = caml_wrap_exception(_dc_); - if(_dc_ === End_of_file)return 0; - throw _dc_} + catch(_da_) + {_da_ = caml_wrap_exception(_da_); + if(_da_ === End_of_file)return 0; + throw _da_} return [0,s]} function really_input$0(ic,buf,pos,len) {try - {really_input(ic,buf,pos,len);return _c1_} - catch(_db_) - {_db_ = caml_wrap_exception(_db_); - if(_db_ === End_of_file)return 0; - throw _db_}} + {really_input(ic,buf,pos,len);return _cZ_} + catch(_c$_) + {_c$_ = caml_wrap_exception(_c$_); + if(_c$_ === End_of_file)return 0; + throw _c$_}} function really_input_string$0(ic,len) {try {var s=really_input_string(ic,len)} - catch(_da_) - {_da_ = caml_wrap_exception(_da_); - if(_da_ === End_of_file)return 0; - throw _da_} + catch(_c__) + {_c__ = caml_wrap_exception(_c__); + if(_c__ === End_of_file)return 0; + throw _c__} return [0,s]} function read_upto(ic,buf,ofs,len) {var ofs$0=ofs,len$0=len; @@ -29970,12 +30452,12 @@ {var chunk_size=65536; try {var - _c8_=caml_ml_pos_in(ic), - _c9_=caml_ml_channel_size(ic) - _c8_ | 0, - initial_size=_c9_} - catch(_c$_) - {_c$_ = caml_wrap_exception(_c$_); - if(_c$_[1] !== Sys_error)throw _c$_; + _c6_=caml_ml_pos_in(ic), + _c7_=caml_ml_channel_size(ic) - _c6_ | 0, + initial_size=_c7_} + catch(_c9_) + {_c9_ = caml_wrap_exception(_c9_); + if(_c9_[1] !== Sys_error)throw _c9_; var initial_size=-1} var initial_size$0=0 <= initial_size?initial_size:chunk_size, @@ -29986,10 +30468,10 @@ if(nread < initial_size$1)return sub_string(buf,0,nread); try {var c=caml_ml_input_char(ic)} - catch(_c__) - {_c__ = caml_wrap_exception(_c__); - if(_c__ === End_of_file)return caml_string_of_bytes(buf); - throw _c__} + catch(_c8_) + {_c8_ = caml_wrap_exception(_c8_); + if(_c8_ === End_of_file)return caml_string_of_bytes(buf); + throw _c8_} function loop(buf,ofs) {var buf$0=buf,ofs$0=ofs; for(;;) @@ -30029,12 +30511,12 @@ caml_register_global(835,Stdlib_In_channel,"Stdlib__In_channel"); function with_open$0(openfun,s,f) {var oc=caml_call1(openfun,s); - function _c7_(param){return caml_call1(f,oc)} - return protect(function(param){return close_noerr(oc)},_c7_)} + function _c5_(param){return caml_call1(f,oc)} + return protect(function(param){return close_noerr(oc)},_c5_)} function with_open_bin$0(s,f){return with_open$0(open_bin,s,f)} function with_open_text$0(s,f){return with_open$0(open_text,s,f)} function with_open_gen$0(flags,perm,s,f) - {return with_open$0(function(_c6_){return open_gen(flags,perm,_c6_)},s,f)} + {return with_open$0(function(_c4_){return open_gen(flags,perm,_c4_)},s,f)} var seek$0=_m_[1], pos$0=_m_[2], @@ -30070,7 +30552,7 @@ (globalThis)); -//# 1 "../../.js/dates_calc/dates_calc.cma.js" +//# 1 "../../.js/default/dates_calc/dates_calc.cma.js" (function(globalThis) {"use strict"; var @@ -30338,7 +30820,7 @@ (globalThis)); -//# 1 "../../.js/zarith/zarith.cma.js" +//# 1 "../../.js/default/zarith/zarith.cma.js" (function(globalThis) {"use strict"; var @@ -31403,7 +31885,7 @@ (globalThis)); -//# 1 "../../.js/zarith_stubs_js/zarith_stubs_js.cma.js" +//# 1 "../../.js/default/zarith_stubs_js/zarith_stubs_js.cma.js" (function(globalThis) {"use strict"; var runtime=globalThis.jsoo_runtime,Zarith_stubs_js=[0]; @@ -31412,2521 +31894,7 @@ (globalThis)); -//# 1 "../../.js/easy-format/easy_format.cma.js" -(function(globalThis) - {"use strict"; - var - runtime=globalThis.jsoo_runtime, - caml_ml_string_length=runtime.caml_ml_string_length, - caml_string_of_jsbytes=runtime.caml_string_of_jsbytes, - caml_wrap_exception=runtime.caml_wrap_exception; - function caml_call1(f,a0) - {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])} - function caml_call2(f,a0,a1) - {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])} - function caml_call3(f,a0,a1,a2) - {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])} - function caml_call4(f,a0,a1,a2,a3) - {return f.length == 4 - ?f(a0,a1,a2,a3) - :runtime.caml_call_gen(f,[a0,a1,a2,a3])} - var - global_data=runtime.caml_get_global_data(), - cst$3=caml_string_of_jsbytes(" "), - cst$4=caml_string_of_jsbytes(" "), - cst$5=caml_string_of_jsbytes(" "), - cst$6=caml_string_of_jsbytes(" "), - cst$7=caml_string_of_jsbytes(" "), - cst$8=caml_string_of_jsbytes(" "), - cst$9=caml_string_of_jsbytes(" "), - cst$10=caml_string_of_jsbytes(" "), - cst$1=caml_string_of_jsbytes(""), - cst$2=caml_string_of_jsbytes(""), - cst=caml_string_of_jsbytes(""), - cst$0=caml_string_of_jsbytes(""), - atom=[0,0], - list=[0,1,1,0,1,1,1,1,-921200851,2,0,0,0,0,0], - label=[0,726666127,1,2,0], - list_true=[0,1,1,1,1,1,1,1,-921200851,2,0,0,0,0,0], - list_false=[0,0,0,0,0,0,0,0,-921200851,2,0,0,0,0,0], - label_true=[0,726666127,1,2,0], - label_false=[0,726666127,0,2,0], - Stdlib_Buffer=global_data.Stdlib__Buffer, - Stdlib_Format=global_data.Stdlib__Format, - Stdlib_List=global_data.Stdlib__List, - Stdlib_Printf=global_data.Stdlib__Printf, - Stdlib=global_data.Stdlib, - Stdlib_String=global_data.Stdlib__String, - Stdlib_Hashtbl=global_data.Stdlib__Hashtbl, - _a_=[0,[2,0,[2,0,0]],caml_string_of_jsbytes("%s%s")], - _b_=[0,[2,0,0],caml_string_of_jsbytes("%s")]; - function set_escape(fmt,escape) - {var - match=caml_call2(Stdlib_Format[98],fmt,0), - flush0=match[2], - print0=match[1], - tagf0=caml_call2(Stdlib_Format[106],fmt,0), - is_tag=[0,0]; - function mot(tag){is_tag[1] = 1;return caml_call1(tagf0[1],tag)} - function mct(tag){is_tag[1] = 1;return caml_call1(tagf0[2],tag)} - function print(s,p,n) - {return is_tag[1] - ?(caml_call3(print0,s,p,n),is_tag[1] = 0,0) - :caml_call4(escape,print0,s,p,n)} - var tagf=[0,mot,mct,tagf0[3],tagf0[4]]; - caml_call3(Stdlib_Format[96],fmt,print,flush0); - return caml_call2(Stdlib_Format[104],fmt,tagf)} - function define_styles(fmt,escape$0,l) - {if(0 !== l) - {caml_call2(Stdlib_Format[84],fmt,1); - var - _R_=2 * caml_call1(Stdlib_List[1],l) | 0, - tbl1=caml_call2(Stdlib_Hashtbl[1],0,_R_), - _S_=2 * caml_call1(Stdlib_List[1],l) | 0, - tbl2=caml_call2(Stdlib_Hashtbl[1],0,_S_), - _T_= - function(param) - {var style=param[2],style_name=param[1]; - caml_call3(Stdlib_Hashtbl[5],tbl1,style_name,style[1]); - return caml_call3(Stdlib_Hashtbl[5],tbl2,style_name,style[2])}; - caml_call2(Stdlib_List[17],_T_,l); - var - mark_open_tag= - function(param) - {if(param[1] === Stdlib_Format[79]) - {var style_name=param[2]; - try - {var _X_=caml_call2(Stdlib_Hashtbl[6],tbl1,style_name); - return _X_} - catch(_Y_) - {_Y_ = caml_wrap_exception(_Y_); - if(_Y_ === Stdlib[8])return cst; - throw _Y_}} - return cst$0}, - mark_close_tag= - function(param) - {if(param[1] === Stdlib_Format[79]) - {var style_name=param[2]; - try - {var _V_=caml_call2(Stdlib_Hashtbl[6],tbl2,style_name); - return _V_} - catch(_W_) - {_W_ = caml_wrap_exception(_W_); - if(_W_ === Stdlib[8])return cst$1; - throw _W_}} - return cst$2}, - _U_=caml_call2(Stdlib_Format[106],fmt,0), - tagf=[0,mark_open_tag,mark_close_tag,_U_[3],_U_[4]]; - caml_call2(Stdlib_Format[104],fmt,tagf)} - if(typeof escape$0 === "number")return 0; - if(258914209 <= escape$0[1]) - {var esc=escape$0[2];return set_escape(fmt,esc)} - var esc$0=escape$0[2]; - function escape(print,s,p,n) - {var s0=caml_call3(Stdlib_String[15],s,p,n),s1=caml_call1(esc$0,s0); - return caml_call3(print,s1,0,caml_ml_string_length(s1))} - return set_escape(fmt,escape)} - function pp_open_xbox(fmt,p,indent) - {var _Q_=p[8]; - if(451368025 <= _Q_) - {if(! (736550845 <= _Q_))return caml_call2(Stdlib_Format[7],fmt,indent)} - else - if(379096626 <= _Q_)return caml_call2(Stdlib_Format[5],fmt,0); - return caml_call2(Stdlib_Format[9],fmt,indent)} - function extra_box(p,l) - {var _M_=p[8]; - if(379096626 <= _M_) - var wrap=922275930 <= _M_?1:0; - else - var - _P_=function(param){return 0 === param[0]?1:0}, - wrap=caml_call2(Stdlib_List[32],_P_,l); - if(wrap) - {var _N_=function(fmt){return caml_call2(Stdlib_Format[3],fmt,0)}; - return [0, - function(fmt){return caml_call2(Stdlib_Format[11],fmt,0)}, - _N_]} - function _O_(param){return 0} - return [0,function(param){return 0},_O_]} - function open_tag(fmt,param) - {if(param) - {var s=param[1]; - return caml_call2(Stdlib_Format[80],fmt,[0,Stdlib_Format[79],s])} - return 0} - function close_tag(fmt,param) - {return param?caml_call2(Stdlib_Format[82],fmt,0):0} - function tag_string(fmt,o,s) - {if(o) - {var tag=o[1]; - caml_call2(Stdlib_Format[80],fmt,[0,Stdlib_Format[79],tag]); - caml_call2(Stdlib_Format[13],fmt,s); - return caml_call2(Stdlib_Format[82],fmt,0)} - return caml_call2(Stdlib_Format[13],fmt,s)} - function fprint_opt_label(fmt,param) - {if(param) - {var match=param[1],lp=match[2],lab=match[1]; - open_tag(fmt,lp[4]); - fprint_t(fmt,lab); - close_tag(fmt,lp[4]); - var _L_=lp[2]; - return _L_?caml_call2(Stdlib_Format[13],fmt,cst$5):_L_} - return 0} - function fprint_list_body_stick_left(fmt,p,sep,hd,tl) - {open_tag(fmt,p[12]); - fprint_t(fmt,hd); - function _K_(x) - {if(p[3])caml_call2(Stdlib_Format[13],fmt,cst$3); - tag_string(fmt,p[13],sep); - if(p[2]) - caml_call2(Stdlib_Format[27],fmt,0); - else - caml_call2(Stdlib_Format[29],fmt,0); - return fprint_t(fmt,x)} - caml_call2(Stdlib_List[17],_K_,tl); - return close_tag(fmt,p[12])} - function fprint_t(fmt,param) - {switch(param[0]) - {case 0:var p=param[2],s=param[1];return tag_string(fmt,p[1],s); - case 1: - var l=param[2],param$0=param[1],p$0=param$0[4]; - open_tag(fmt,p$0[10]); - if(p$0[7]) - fprint_list(fmt,0,param$0,l); - else - {var _C_=param$0[4],_D_=param$0[3],_E_=param$0[2],_F_=param$0[1]; - if(l) - {var tl=l[2],hd=l[1]; - tag_string(fmt,_C_[11],_F_); - if(_C_[1])caml_call2(Stdlib_Format[13],fmt,cst$8); - var _z_=_C_[8],indent=0; - if(379096626 === _z_) - caml_call2(Stdlib_Format[5],fmt,0); - else - if(736550845 <= _z_) - if(922275930 <= _z_) - caml_call2(Stdlib_Format[11],fmt,indent); - else - caml_call2(Stdlib_Format[9],fmt,indent); - else - if(-921200850 <= _z_) - caml_call2(Stdlib_Format[7],fmt,indent); - else - {var _A_=function(param){return 0 === param[0]?1:0}; - if(caml_call2(Stdlib_List[32],_A_,l)) - caml_call2(Stdlib_Format[11],fmt,indent); - else - caml_call2(Stdlib_Format[9],fmt,indent)} - if(_C_[4]) - fprint_list_body_stick_left(fmt,_C_,_E_,hd,tl); - else - {open_tag(fmt,_C_[12]); - fprint_t(fmt,hd); - var - _B_= - function(x) - {if(_C_[3]) - caml_call2(Stdlib_Format[27],fmt,0); - else - caml_call2(Stdlib_Format[29],fmt,0); - tag_string(fmt,_C_[13],_E_); - if(_C_[2])caml_call2(Stdlib_Format[13],fmt,cst$4); - return fprint_t(fmt,x)}; - caml_call2(Stdlib_List[17],_B_,tl); - close_tag(fmt,_C_[12])} - caml_call2(Stdlib_Format[3],fmt,0); - if(_C_[5])caml_call2(Stdlib_Format[13],fmt,cst$9); - tag_string(fmt,_C_[14],_D_)} - else - {tag_string(fmt,_C_[11],_F_); - var _G_=_C_[1],_H_=_G_ || _C_[5]; - if(_H_)caml_call2(Stdlib_Format[13],fmt,cst$10); - tag_string(fmt,_C_[14],_D_)}} - return close_tag(fmt,p$0[10]); - case 2: - var x=param[2],label=param[1],lp=label[2],lab=label[1]; - if(1 === x[0]) - {var - l$0=x[2], - match=x[1], - p$1=match[4], - cl=match[3], - sep=match[2], - op=match[1]; - if(p$1[6] && p$1[7]) - return fprint_list(fmt,[0,label],[0,op,sep,cl,p$1],l$0)} - var indent$0=lp[3]; - caml_call2(Stdlib_Format[9],fmt,0); - open_tag(fmt,lp[4]); - fprint_t(fmt,lab); - close_tag(fmt,lp[4]); - var _I_=lp[1]; - if(726666127 === _I_) - if(lp[2]) - caml_call3(Stdlib_Format[31],fmt,1,indent$0); - else - caml_call3(Stdlib_Format[31],fmt,0,indent$0); - else - if(744337004 <= _I_) - {if(lp[2])caml_call2(Stdlib_Format[23],fmt,32)} - else - {caml_call2(Stdlib_Format[34],fmt,0); - var _J_=caml_call2(Stdlib_String[1],indent$0,32); - caml_call2(Stdlib_Format[13],fmt,_J_)} - fprint_t(fmt,x); - return caml_call2(Stdlib_Format[3],fmt,0); - default:var f=param[1];return caml_call1(f,fmt)}} - function fprint_list(fmt,label,param,l) - {var _s_=param[4],_t_=param[3],_u_=param[1]; - if(l) - {var tl=l[2],hd=l[1]; - if(0 !== tl && ! _s_[4]) - {var - p$0=param[4], - cl$0=param[3], - sep$0=param[2], - op$0=param[1], - base_indent=p$0[9], - _x_=p$0[2]?1:0, - sep_indent=caml_ml_string_length(sep$0) + _x_ | 0, - indent$0=base_indent + sep_indent | 0; - pp_open_xbox(fmt,p$0,indent$0); - fprint_opt_label(fmt,label); - tag_string(fmt,p$0[11],op$0); - if(p$0[1]) - caml_call2(Stdlib_Format[27],fmt,0); - else - caml_call2(Stdlib_Format[29],fmt,0); - var - match$0=extra_box(p$0,l), - close_extra$0=match$0[2], - open_extra$0=match$0[1]; - caml_call1(open_extra$0,fmt); - fprint_t(fmt,hd); - var - _y_= - function(x) - {if(p$0[3]) - caml_call3(Stdlib_Format[31],fmt,1,- sep_indent | 0); - else - caml_call3(Stdlib_Format[31],fmt,0,- sep_indent | 0); - tag_string(fmt,p$0[13],sep$0); - if(p$0[2])caml_call2(Stdlib_Format[13],fmt,cst$7); - return fprint_t(fmt,x)}; - caml_call2(Stdlib_List[17],_y_,tl); - caml_call1(close_extra$0,fmt); - if(p$0[5]) - caml_call3(Stdlib_Format[31],fmt,1,- indent$0 | 0); - else - caml_call3(Stdlib_Format[31],fmt,0,- indent$0 | 0); - tag_string(fmt,p$0[14],cl$0); - return caml_call2(Stdlib_Format[3],fmt,0)} - var p=param[4],cl=param[3],sep=param[2],op=param[1],indent=p[9]; - pp_open_xbox(fmt,p,indent); - fprint_opt_label(fmt,label); - tag_string(fmt,p[11],op); - if(p[1]) - caml_call2(Stdlib_Format[27],fmt,0); - else - caml_call2(Stdlib_Format[29],fmt,0); - var match=extra_box(p,l),close_extra=match[2],open_extra=match[1]; - caml_call1(open_extra,fmt); - fprint_list_body_stick_left(fmt,p,sep,hd,tl); - caml_call1(close_extra,fmt); - if(p[5]) - caml_call3(Stdlib_Format[31],fmt,1,- indent | 0); - else - caml_call3(Stdlib_Format[31],fmt,0,- indent | 0); - tag_string(fmt,p[14],cl); - return caml_call2(Stdlib_Format[3],fmt,0)} - fprint_opt_label(fmt,label); - tag_string(fmt,_s_[11],_u_); - var _v_=_s_[1],_w_=_v_ || _s_[5]; - if(_w_)caml_call2(Stdlib_Format[13],fmt,cst$6); - return tag_string(fmt,_s_[14],_t_)} - function to_formatter(fmt,x) - {function init_acc(param) - {var switch$0=0; - switch(param[0]) - {case 1:if(451368025 === param[1][4][8])switch$0 = 1;break; - case 2:if(3884224 === param[1][2][1])switch$0 = 1;break - } - return switch$0?1:0} - function merge_acc(force_breaks1,force_breaks2) - {var force_breaks1$0=force_breaks1 || force_breaks2; - return force_breaks1$0} - function map_node(x,force_breaks) - {switch(x[0]) - {case 1: - var - _j_=x[1], - _k_=_j_[4], - _l_=_k_[8], - _m_=_j_[3], - _n_=_j_[2], - _o_=_j_[1]; - if(379096626 !== _l_) - {if(451368025 === _l_)return [0,x,1]; - if(610243080 === _l_)return [0,x,force_breaks]; - var children=x[2]; - if(force_breaks) - {var - p= - [0, - _k_[1], - _k_[2], - _k_[3], - _k_[4], - _k_[5], - _k_[6], - _k_[7], - 610243080, - _k_[9], - _k_[10], - _k_[11], - _k_[12], - _k_[13], - _k_[14]]; - return [0,[1,[0,_o_,_n_,_m_,p],children],1]} - return [0,x,0]} - break; - case 2: - var _p_=x[1],_q_=_p_[2],_r_=_p_[1]; - if(726666127 === _q_[1]) - {var b=x[2]; - if(force_breaks) - {var lp=[0,-76840209,_q_[2],_q_[3],_q_[4]]; - return [0,[2,[0,_r_,lp],b],1]} - return [0,x,0]} - break - } - return [0,x,force_breaks]} - function aux(x$0) - {switch(x$0[0]) - {case 0:var acc=init_acc(x$0);return map_node(x$0,acc); - case 1: - var - children=x$0[2], - param$1=x$0[1], - param$2=caml_call2(Stdlib_List[21],aux,children), - new_children=0, - accs=0, - param=param$2; - for(;;) - {if(param) - {var - param$0=param[2], - match=param[1], - y=match[2], - x=match[1], - ys=[0,y,accs], - xs=[0,x,new_children], - new_children=xs, - accs=ys, - param=param$0; - continue} - var - _i_=init_acc(x$0), - acc$0=caml_call3(Stdlib_List[25],merge_acc,_i_,accs); - return map_node([1,param$1,new_children],acc$0)} - case 2: - var - x2=x$0[2], - match$0=x$0[1], - param$3=match$0[2], - x1=match$0[1], - acc0=init_acc(x$0), - match$1=aux(x1), - acc1=match$1[2], - new_x1=match$1[1], - match$2=aux(x2), - acc2=match$2[2], - new_x2=match$2[1], - acc$1=merge_acc(merge_acc(acc0,acc1),acc2); - return map_node([2,[0,new_x1,param$3],new_x2],acc$1); - default:var acc$2=init_acc(x$0);return map_node(x$0,acc$2)}} - var match=aux(x),new_x=match[1]; - fprint_t(fmt,new_x); - return caml_call2(Stdlib_Format[38],fmt,0)} - function to_buffer(opt,_h_,buf,x) - {if(opt)var sth=opt[1],escape=sth;else var escape=870530776; - if(_h_)var sth$0=_h_[1],styles=sth$0;else var styles=0; - var fmt=caml_call1(Stdlib_Format[111],buf); - define_styles(fmt,escape,styles); - return to_formatter(fmt,x)} - function to_string(escape,styles,x) - {var buf=caml_call1(Stdlib_Buffer[1],500); - to_buffer(escape,styles,buf,x); - return caml_call1(Stdlib_Buffer[2],buf)} - function to_channel(opt,_g_,oc,x) - {if(opt)var sth=opt[1],escape=sth;else var escape=870530776; - if(_g_)var sth$0=_g_[1],styles=sth$0;else var styles=0; - var fmt=caml_call1(Stdlib_Format[108],oc); - define_styles(fmt,escape,styles); - return to_formatter(fmt,x)} - function to_stdout(escape,styles,x) - {return to_channel(escape,styles,Stdlib[39],x)} - function to_stderr(escape,styles,x) - {return to_channel(escape,styles,Stdlib[40],x)} - function fprint_t$0(buf,param) - {var param$0=param; - for(;;) - switch(param$0[0]) - {case 0:var s=param$0[1];return caml_call2(Stdlib_Buffer[16],buf,s); - case 1: - var - l=param$0[2], - param$1=param$0[1], - _c_=param$1[3], - _e_=param$1[1], - _d_=param$1[2]; - if(l) - {var tl=l[2],x$0=l[1]; - caml_call2(Stdlib_Buffer[16],buf,_e_); - fprint_t$0(buf,x$0); - var - _f_= - function(x) - {caml_call2(Stdlib_Buffer[16],buf,_d_); - return fprint_t$0(buf,x)}; - caml_call2(Stdlib_List[17],_f_,tl); - return caml_call2(Stdlib_Buffer[16],buf,_c_)} - return caml_call4(Stdlib_Printf[5],buf,_a_,_e_,_c_); - case 2: - var x=param$0[2],label=param$0[1],label$0=label[1]; - fprint_t$0(buf,label$0); - var param$0=x; - continue; - default: - var f=param$0[1],fmt=caml_call1(Stdlib_Format[111],buf); - caml_call1(f,fmt); - return caml_call2(Stdlib_Format[38],fmt,0)}} - function to_buffer$0(buf,x){return fprint_t$0(buf,x)} - function to_string$0(x) - {var buf=caml_call1(Stdlib_Buffer[1],500); - to_buffer$0(buf,x); - return caml_call1(Stdlib_Buffer[2],buf)} - function to_formatter$0(fmt,x) - {var s=to_string$0(x); - caml_call3(Stdlib_Format[129],fmt,_b_,s); - return caml_call2(Stdlib_Format[38],fmt,0)} - function to_channel$0(oc,x) - {var buf=caml_call1(Stdlib_Buffer[1],500); - to_buffer$0(buf,x); - return caml_call2(Stdlib_Buffer[10],oc,buf)} - function to_stdout$0(x){return to_channel$0(Stdlib[39],x)} - function to_stderr$0(x){return to_channel$0(Stdlib[40],x)} - var - Easy_format= - [0, - atom, - list, - label, - [0, - define_styles, - to_formatter, - to_buffer, - to_string, - to_channel, - to_stdout, - to_stderr], - [0, - to_buffer$0, - to_string$0, - to_channel$0, - to_stdout$0, - to_stderr$0, - to_formatter$0], - [0,list_true,label_true,list_false,label_false]]; - runtime.caml_register_global(28,Easy_format,"Easy_format"); - return} - (globalThis)); - - -//# 1 "../../.js/biniou/biniou.cma.js" -(function(globalThis) - {"use strict"; - var - runtime=globalThis.jsoo_runtime, - caml_bytes_get=runtime.caml_bytes_get, - caml_bytes_set=runtime.caml_bytes_set, - caml_bytes_unsafe_get=runtime.caml_bytes_unsafe_get, - caml_bytes_unsafe_set=runtime.caml_bytes_unsafe_set, - caml_check_bound=runtime.caml_check_bound, - caml_create_bytes=runtime.caml_create_bytes, - caml_fresh_oo_id=runtime.caml_fresh_oo_id, - caml_make_vect=runtime.caml_make_vect, - caml_ml_bytes_length=runtime.caml_ml_bytes_length, - caml_ml_string_length=runtime.caml_ml_string_length, - caml_obj_tag=runtime.caml_obj_tag, - caml_register_global=runtime.caml_register_global, - caml_string_get=runtime.caml_string_get, - caml_string_notequal=runtime.caml_string_notequal, - caml_string_of_jsbytes=runtime.caml_string_of_jsbytes, - caml_string_unsafe_get=runtime.caml_string_unsafe_get, - caml_sys_getenv=runtime.caml_sys_getenv, - caml_wrap_exception=runtime.caml_wrap_exception; - function caml_call1(f,a0) - {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])} - function caml_call2(f,a0,a1) - {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])} - function caml_call3(f,a0,a1,a2) - {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])} - function caml_call4(f,a0,a1,a2,a3) - {return f.length == 4 - ?f(a0,a1,a2,a3) - :runtime.caml_call_gen(f,[a0,a1,a2,a3])} - function caml_call5(f,a0,a1,a2,a3,a4) - {return f.length == 5 - ?f(a0,a1,a2,a3,a4) - :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])} - var - global_data=runtime.caml_get_global_data(), - cst_Bi_util_print_bits=caml_string_of_jsbytes("Bi_util.print_bits"), - cst_Bi_util_print_bits$0=caml_string_of_jsbytes("Bi_util.print_bits"), - cst_Bi_util_Error=caml_string_of_jsbytes("Bi_util.Error"), - cst_Corrupted_data_invalid_ref= - caml_string_of_jsbytes("Corrupted data (invalid reference)"), - cst_Bi_share_Rd_poly_create_ty= - caml_string_of_jsbytes - ("Bi_share.Rd_poly.create_type_id: exhausted available type_id's"), - cst_Bi_inbuf_refill_from_chann= - caml_string_of_jsbytes("Bi_inbuf.refill_from_channel"), - cst_Bi_inbuf_End_of_input=caml_string_of_jsbytes("Bi_inbuf.End_of_input"), - cst_Buf_extend_reached_Sys_max= - caml_string_of_jsbytes("Buf.extend: reached Sys.max_string_length"), - cst_Junk_input_after_end_of_vi= - caml_string_of_jsbytes("Junk input after end of vint"), - cst_Unterminated_vint_or_vint_= - caml_string_of_jsbytes - ("Unterminated vint or vint exceeding range of OCaml ints"), - cst_Vint_exceeding_range_of_OC= - caml_string_of_jsbytes("Vint exceeding range of OCaml ints"), - cst$0=caml_string_of_jsbytes(""), - cst_test_stream_dat=caml_string_of_jsbytes("test-stream.dat"), - cst_test_stream_dat$0=caml_string_of_jsbytes("test-stream.dat"), - cst=caml_string_of_jsbytes("\0\0\0\0"), - cst_Corrupted_stream_excessive= - caml_string_of_jsbytes("Corrupted stream: excessive chunk length"), - cst_Chunk_length_exceeds_suppo$0= - caml_string_of_jsbytes - ("Chunk length exceeds supported range on this platform"), - cst_Chunk_length_exceeds_suppo= - caml_string_of_jsbytes - ("Chunk length exceeds supported range on this platform"), - cst_Bi_stream=caml_string_of_jsbytes("Bi_stream: "), - cst_Bi_io_write_t_Malformed_Ta= - caml_string_of_jsbytes("Bi_io.write_t: Malformed `Table"), - cst_Corrupted_data_invalid_tag$0= - caml_string_of_jsbytes("Corrupted data (invalid tag)"), - cst_unit=caml_string_of_jsbytes("unit"), - cst$1=caml_string_of_jsbytes("]"), - cst$2=caml_string_of_jsbytes(","), - cst$3=caml_string_of_jsbytes("["), - cst$4=caml_string_of_jsbytes("[]"), - cst$5=caml_string_of_jsbytes("}"), - cst$6=caml_string_of_jsbytes(","), - cst$7=caml_string_of_jsbytes("{"), - cst_true=caml_string_of_jsbytes("true"), - cst_false=caml_string_of_jsbytes("false"), - cst$8=caml_string_of_jsbytes(")"), - cst$9=caml_string_of_jsbytes(","), - cst$10=caml_string_of_jsbytes("("), - cst$11=caml_string_of_jsbytes(":"), - cst$12=caml_string_of_jsbytes(">"), - cst$13=caml_string_of_jsbytes(""), - cst$14=caml_string_of_jsbytes("<"), - cst$15=caml_string_of_jsbytes(">"), - cst$16=caml_string_of_jsbytes("<"), - cst$17=caml_string_of_jsbytes("[]"), - cst$18=caml_string_of_jsbytes(""), - cst_Some=caml_string_of_jsbytes("Some"), - cst_None=caml_string_of_jsbytes("None"), - cst_Corrupted_data_invalid_tag= - caml_string_of_jsbytes("Corrupted data (invalid tag)"), - cst_Corrupted_data_string= - caml_string_of_jsbytes("Corrupted data (string)"), - cst_Corrupted_data_bool_value= - caml_string_of_jsbytes("Corrupted data (bool value)"), - cst_Corrupted_data_unit_value= - caml_string_of_jsbytes("Corrupted data (unit value)"), - s=caml_string_of_jsbytes("?\xf0\x06\x05\x04\x03\x02\x01"), - cst_Corrupted_data_invalid_num= - caml_string_of_jsbytes("Corrupted data (invalid numtag)"), - cst_Corrupted_data_invalid_fie= - caml_string_of_jsbytes("Corrupted data (invalid field hashtag)"), - cst_Cygwin=caml_string_of_jsbytes("Cygwin"), - cst_Unix=caml_string_of_jsbytes("Unix"), - cst_Win32=caml_string_of_jsbytes("Win32"), - cst_bdump_dict=caml_string_of_jsbytes("_bdump-dict"), - cst_HOMEPATH=caml_string_of_jsbytes("HOMEPATH"), - cst_bdump_dict$0=caml_string_of_jsbytes(".bdump-dict"), - cst_HOME=caml_string_of_jsbytes("HOME"), - cst_bdump_dict$1=caml_string_of_jsbytes(".bdump-dict"), - cst_HOME$0=caml_string_of_jsbytes("HOME"), - Stdlib=global_data.Stdlib, - Stdlib_Bytes=global_data.Stdlib__Bytes, - Stdlib_Char=global_data.Stdlib__Char, - Stdlib_Hashtbl=global_data.Stdlib__Hashtbl, - Stdlib_Sys=global_data.Stdlib__Sys, - Stdlib_String=global_data.Stdlib__String, - Stdlib_Printf=global_data.Stdlib__Printf, - Stdlib_List=global_data.Stdlib__List, - Stdlib_Array=global_data.Stdlib__Array, - Assert_failure=global_data.Assert_failure, - Stdlib_Stream=global_data.Stdlib__Stream, - Easy_format=global_data.Easy_format, - CamlinternalLazy=global_data.CamlinternalLazy, - Stdlib_Obj=global_data.Stdlib__Obj, - Stdlib_Printexc=global_data.Stdlib__Printexc, - Stdlib_Buffer=global_data.Stdlib__Buffer, - Stdlib_Filename=global_data.Stdlib__Filename, - Error=[248,cst_Bi_util_Error,caml_fresh_oo_id(0)], - _g_= - [0, - [11,caml_string_of_jsbytes("Corrupted stream: "),[1,0]], - caml_string_of_jsbytes("Corrupted stream: %C")], - _f_= - [0, - [11, - caml_string_of_jsbytes("Corrupted stream: excessive chunk length ("), - [4,3,0,0,[11,caml_string_of_jsbytes(" bytes)"),0]]], - caml_string_of_jsbytes - ("Corrupted stream: excessive chunk length (%i bytes)")], - _i_=[0,caml_string_of_jsbytes("src/bi_stream.ml"),131,22], - _j_=[0,2], - _h_=[0,caml_string_of_jsbytes("src/bi_stream.ml"),102,20], - _e_= - [0, - [11, - caml_string_of_jsbytes("unsupported word size ("), - [4,3,0,0,[12,41,0]]], - caml_string_of_jsbytes("unsupported word size (%i)")], - _d_= - [0, - [11, - caml_string_of_jsbytes("unsupported word size ("), - [4,3,0,0,[12,41,0]]], - caml_string_of_jsbytes("unsupported word size (%i)")], - _s_= - [0, - [11,caml_string_of_jsbytes("0x"),[4,6,[0,2,2],0,0]], - caml_string_of_jsbytes("0x%02x")], - _t_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _u_=[0,[12,35,[5,6,[0,2,8],0,0]],caml_string_of_jsbytes("#%08lx")], - _v_= - [0, - [11, - caml_string_of_jsbytes("shared"), - [4,3,0,0,[11,caml_string_of_jsbytes(" ->"),0]]], - caml_string_of_jsbytes("shared%i ->")], - _w_= - [0, - [11,caml_string_of_jsbytes("shared"),[4,3,0,0,0]], - caml_string_of_jsbytes("shared%i")], - _x_= - [0, - [11,caml_string_of_jsbytes("0x"),[7,6,[0,2,16],0,0]], - caml_string_of_jsbytes("0x%016Lx")], - _y_= - [0, - [11,caml_string_of_jsbytes("0x"),[5,6,[0,2,8],0,0]], - caml_string_of_jsbytes("0x%08lx")], - _z_= - [0, - [11,caml_string_of_jsbytes("0x"),[4,6,[0,2,4],0,0]], - caml_string_of_jsbytes("0x%04x")], - _A_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _B_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _D_=[0,[12,35,[5,6,[0,2,8],0,0]],caml_string_of_jsbytes("#%08lx")], - _C_=[0,[2,0,[12,58,0]],caml_string_of_jsbytes("%s:")], - _p_=[0,951901561,0], - _q_=[0,504440814,0], - _n_=[0,caml_string_of_jsbytes("src/bi_io.ml"),270,4], - _o_=[0,caml_string_of_jsbytes("src/bi_io.ml"),274,4], - _m_=[0,caml_string_of_jsbytes("src/bi_io.ml"),212,11], - _k_= - [0, - [11, - caml_string_of_jsbytes("Bi_io.make_unhash: "), - [3, - 0, - [11, - caml_string_of_jsbytes(" and "), - [3, - 0, - [11, - caml_string_of_jsbytes - (" have the same hash, please pick another name"), - 0]]]]], - caml_string_of_jsbytes - ("Bi_io.make_unhash: %S and %S have the same hash, please pick another name")], - _l_=[0,caml_string_of_jsbytes("src/bi_io.ml"),169,13], - _H_=[0,caml_string_of_jsbytes("src/bi_io.ml"),85,2], - _G_=[0,[2,0,[12,10,0]],caml_string_of_jsbytes("%s\n")], - _F_=[0,[2,0,[12,10,0]],caml_string_of_jsbytes("%s\n")], - _E_= - [0, - [11, - caml_string_of_jsbytes("Cannot load dictionary from "), - [3,0,[11,caml_string_of_jsbytes(": "),[2,0,[12,10,[10,0]]]]]], - caml_string_of_jsbytes("Cannot load dictionary from %S: %s\n%!")]; - function error(s){throw [0,Error,s]} - function string8_of_int(x) - {var s=caml_create_bytes(8),i=0; - for(;;) - {caml_bytes_set - (s, - 7 - i | 0, - caml_call1(Stdlib_Char[1],255 & (x >>> (8 * i | 0) | 0))); - var _c4_=i + 1 | 0; - if(7 !== i){var i=_c4_;continue} - return caml_call1(Stdlib_Bytes[6],s)}} - function string4_of_int(x) - {var s=caml_create_bytes(4),i=0; - for(;;) - {caml_bytes_set - (s, - 3 - i | 0, - caml_call1(Stdlib_Char[1],255 & (x >>> (8 * i | 0) | 0))); - var _c3_=i + 1 | 0; - if(3 !== i){var i=_c3_;continue} - return caml_call1(Stdlib_Bytes[6],s)}} - function print_bits(opt,len,s) - {if(opt)var sth=opt[1],pos=sth;else var pos=0; - var slen=caml_ml_string_length(s),_cT_=pos < 0?1:0; - if(_cT_) - var _cU_=_cT_; - else - var _c2_=0 < pos?1:0,_cU_=_c2_?slen <= pos?1:0:_c2_; - if(_cU_)caml_call1(Stdlib[1],cst_Bi_util_print_bits); - if(len) - var - len$0=len[1], - _cV_= - (slen - pos | 0) < len$0 - ?caml_call1(Stdlib[1],cst_Bi_util_print_bits$0) - :len$0, - len$1=_cV_; - else - var len$1=slen - pos | 0; - var r=caml_create_bytes(len$1 * 9 | 0),_cX_=len$1 - 1 | 0,_cW_=0; - if(! (_cX_ < 0)) - {var i=_cW_; - a: - for(;;) - {var k=i * 9 | 0,x=caml_string_get(s,pos + i | 0),j=0; - for(;;) - {var _c0_=0 === ((x >>> (7 - j | 0) | 0) & 1)?48:49; - caml_bytes_set(r,k + j | 0,_c0_); - var _c1_=j + 1 | 0; - if(7 !== j){var j=_c1_;continue} - var _cY_=0 === ((i + 1 | 0) % 8 | 0)?10:32; - caml_bytes_set(r,k + 8 | 0,_cY_); - var _cZ_=i + 1 | 0; - if(_cX_ !== i){var i=_cZ_;continue a} - break} - break}} - return caml_call1(Stdlib_Bytes[6],r)} - var c=[0,0],r=[0,-1]; - for(;;) - {if(0 === r[1]) - {var - int_size=c[1], - Bi_util= - [0,Error,error,string8_of_int,string4_of_int,print_bits,int_size]; - caml_register_global(101,Bi_util,"Bi_util"); - var - n=[0,0], - dummy_type_id=0, - create_type_id= - function(param) - {n[1]++; - return 0 <= n[1] - ?n[1] - :caml_call1(Stdlib[2],cst_Bi_share_Rd_poly_create_ty)}, - equal= - function(param,_cQ_) - {var - t2=_cQ_[2], - x2=_cQ_[1], - t1=param[2], - x1=param[1], - _cR_=x1 === x2?1:0, - _cS_=_cR_?t1 === t2?1:0:_cR_; - return _cS_}, - hash=Stdlib_Hashtbl[28], - H=caml_call1(Stdlib_Hashtbl[26],[0,equal,hash]), - create=H[1], - clear= - function(tbl) - {var _cP_=0 < caml_call1(H[15],tbl)?1:0; - return _cP_?caml_call1(H[2],tbl):_cP_}, - put= - function(tbl,k,pos) - {try - {var pos0=caml_call2(H[7],tbl,k),_cN_=pos - pos0 | 0;return _cN_} - catch(_cO_) - {_cO_ = caml_wrap_exception(_cO_); - if(_cO_ === Stdlib[8]){caml_call3(H[5],tbl,k,pos);return 0} - throw _cO_}}, - create$0=function(n){return caml_call2(Stdlib_Hashtbl[1],0,n)}, - clear$0=Stdlib_Hashtbl[2], - put$0= - function(tbl,pos,x){return caml_call3(Stdlib_Hashtbl[5],tbl,pos,x)}, - get= - function(tbl,pos) - {try - {var _cL_=caml_call2(Stdlib_Hashtbl[6],tbl,pos);return _cL_} - catch(_cM_) - {_cM_ = caml_wrap_exception(_cM_); - if(_cM_ === Stdlib[8]) - return error(cst_Corrupted_data_invalid_ref); - throw _cM_}}, - Rd=[0,create$0,clear$0,put$0,get], - _a_=[0,create,clear,put], - Bi_share=[0,dummy_type_id,create_type_id,_a_,Rd]; - caml_register_global(103,Bi_share,"Bi_share"); - var - End_of_input=[248,cst_Bi_inbuf_End_of_input,caml_fresh_oo_id(0)], - try_preread= - function(ib,n) - {return (ib[3] - ib[2] | 0) < n - ?(caml_call2(ib[6],ib,n), - caml_call2(Stdlib[16],ib[3] - ib[2] | 0,n)) - :n}, - read= - function(ib,n) - {var pos=ib[2]; - if(n <= (ib[3] - pos | 0)){ib[2] = pos + n | 0;return pos} - if(n <= try_preread(ib,n)) - {var pos$0=ib[2];ib[2] = ib[2] + n | 0;return pos$0} - throw End_of_input}, - read_char= - function(ib) - {var pos=ib[2]; - if(0 < (ib[3] - pos | 0)) - {var c=caml_bytes_unsafe_get(ib[1],pos); - ib[2] = pos + 1 | 0; - return c} - if(0 < try_preread(ib,1)) - {var pos$0=ib[2],c$0=caml_bytes_unsafe_get(ib[1],pos$0); - ib[2] = pos$0 + 1 | 0; - return c$0} - throw End_of_input}, - peek= - function(ib) - {var pos=ib[2]; - if(0 < (ib[3] - pos | 0))return caml_bytes_unsafe_get(ib[1],pos); - if(0 < try_preread(ib,1)) - return caml_bytes_unsafe_get(ib[1],ib[2]); - throw End_of_input}, - from_bytes= - function(opt,_cJ_,s) - {if(opt)var sth=opt[1],pos=sth;else var pos=0; - if(_cJ_)var sth$0=_cJ_[1],shrlen=sth$0;else var shrlen=16; - var _cK_=caml_call1(Rd[1],shrlen); - return [0, - s, - pos, - caml_ml_bytes_length(s), - - pos | 0, - caml_ml_bytes_length(s), - function(ib,n){return 0}, - _cK_]}, - from_string= - function(pos,shrlen,s) - {return from_bytes(pos,shrlen,caml_call1(Stdlib_Bytes[5],s))}, - from_channel= - function(opt,_cF_,ic) - {if(opt)var sth=opt[1],len=sth;else var len=4096; - if(_cF_)var sth$0=_cF_[1],shrlen=sth$0;else var shrlen=16; - var _cG_=caml_call1(Rd[1],shrlen); - return [0, - caml_create_bytes(len), - 0, - 0, - 0, - len, - function(ib,n$0) - {if(ib[5] < n$0) - return caml_call1(Stdlib[1],cst_Bi_inbuf_refill_from_chann); - var pos$1=ib[3] - ib[2] | 0,_cH_=pos$1 < n$0?1:0; - if(_cH_) - {var s=ib[1]; - caml_call5(Stdlib_Bytes[11],s,ib[2],s,0,pos$1); - var len$1=n$0 - pos$1 | 0,pos=pos$1,len=len$1,accu=0; - for(;;) - {var n=caml_call4(Stdlib[84],ic,s,pos,len); - if(n < len && 0 < n) - {var - accu$0=accu + n | 0, - len$0=len - n | 0, - pos$0=pos + n | 0, - pos=pos$0, - len=len$0, - accu=accu$0; - continue} - var really_read=accu + n | 0; - ib[4] = ib[4] + ib[2] | 0; - ib[2] = 0; - ib[3] = pos$1 + really_read | 0; - var _cI_=0; - break}} - else - var _cI_=_cH_; - return _cI_}, - _cG_]}, - Bi_inbuf= - [0, - End_of_input, - try_preread, - read, - read_char, - peek, - from_string, - from_bytes, - from_channel]; - caml_register_global(104,Bi_inbuf,"Bi_inbuf"); - var - really_extend= - function(b,n) - {var - slen0=b[2], - reqlen=b[3] + n | 0, - x=caml_call2(Stdlib[17],reqlen,2 * slen0 | 0), - slen= - x <= Stdlib_Sys[12] - ?x - :Stdlib_Sys[12] < reqlen - ?caml_call1(Stdlib[1],cst_Buf_extend_reached_Sys_max) - :Stdlib_Sys[12], - s=caml_create_bytes(slen); - caml_call5(Stdlib_Bytes[11],b[1],0,s,0,b[3]); - b[1] = s; - b[2] = slen; - return 0}, - flush_to_output= - function(abstract_output,b,n) - {var _cD_=b[3]; - caml_call3 - (abstract_output,caml_call1(Stdlib_Bytes[6],b[1]),0,_cD_); - b[4] = b[4] + b[3] | 0; - b[3] = 0; - var _cE_=b[2] < n?1:0; - return _cE_?really_extend(b,n):_cE_}, - flush_to_channel= - function(oc) - {var _cA_=caml_call1(Stdlib[69],oc); - return function(_cB_,_cC_){return flush_to_output(_cA_,_cB_,_cC_)}}, - create$1= - function(opt,_cz_,n) - {if(opt) - var sth=opt[1],make_room=sth; - else - var make_room=really_extend; - if(_cz_)var sth$0=_cz_[1],shrlen=sth$0;else var shrlen=16; - return [0, - caml_create_bytes(n), - n, - 0, - 0, - n, - make_room, - caml_call1(_a_[1],shrlen), - shrlen]}, - create_channel_writer= - function(opt,shrlen,oc) - {if(opt)var sth=opt[1],len=sth;else var len=4096; - return create$1([0,flush_to_channel(oc)],shrlen,len)}, - flush_output_writer=function(b){return caml_call2(b[6],b,0)}, - create_output_writer= - function(opt,shrlen,out) - {if(opt)var sth=opt[1],len=sth;else var len=4096; - var - _cw_= - caml_call1(runtime.caml_get_public_method(out,209784577,1),out); - return create$1 - ([0, - function(_cx_,_cy_){return flush_to_output(_cw_,_cx_,_cy_)}], - shrlen, - len)}, - extend= - function(b,n) - {var _cv_=b[2] < (b[3] + n | 0)?1:0; - return _cv_?caml_call2(b[6],b,n):_cv_}, - alloc= - function(b,n) - {extend(b,n);var pos=b[3];b[3] = pos + n | 0;return pos}, - add_sub= - function(blit,b,s,pos,len) - {extend(b,len); - caml_call5(blit,s,pos,b[1],b[3],len); - b[3] = b[3] + len | 0; - return 0}, - _b_=Stdlib_String[48], - add_substring= - function(_cr_,_cs_,_ct_,_cu_) - {return add_sub(_b_,_cr_,_cs_,_ct_,_cu_)}, - _c_=Stdlib_Bytes[11], - add_subbytes= - function(_cn_,_co_,_cp_,_cq_) - {return add_sub(_c_,_cn_,_co_,_cp_,_cq_)}, - add_string= - function(b,s){return add_substring(b,s,0,caml_ml_string_length(s))}, - add_bytes= - function(b,s){return add_subbytes(b,s,0,caml_ml_bytes_length(s))}, - add_char= - function(b,c){var pos=alloc(b,1);return caml_bytes_set(b[1],pos,c)}, - unsafe_add_char= - function(b,c) - {var len=b[3]; - caml_bytes_set(b[1],len,c); - b[3] = len + 1 | 0; - return 0}, - add_char2= - function(b,c1,c2) - {var pos=alloc(b,2),s=b[1]; - caml_bytes_unsafe_set(s,pos,c1); - caml_bytes_unsafe_set(s,pos + 1 | 0,c2); - return 0}, - add_char4= - function(b,c1,c2,c3,c4) - {var pos=alloc(b,4),s=b[1]; - caml_bytes_unsafe_set(s,pos,c1); - caml_bytes_unsafe_set(s,pos + 1 | 0,c2); - caml_bytes_unsafe_set(s,pos + 2 | 0,c3); - caml_bytes_unsafe_set(s,pos + 3 | 0,c4); - return 0}, - clear$1=function(b){b[4] = 0;b[3] = 0;return caml_call1(_a_[2],b[7])}, - reset= - function(b) - {if(caml_ml_bytes_length(b[1]) !== b[5]) - b[1] = caml_create_bytes(b[5]); - b[4] = 0; - b[3] = 0; - b[7] = caml_call1(_a_[1],b[8]); - return 0}, - contents=function(b){return caml_call3(Stdlib_Bytes[8],b[1],0,b[3])}, - Bi_outbuf= - [0, - really_extend, - flush_to_channel, - create$1, - contents, - create_channel_writer, - flush_output_writer, - create_output_writer, - flush_output_writer, - extend, - alloc, - add_bytes, - add_subbytes, - add_string, - add_substring, - add_char, - add_char2, - add_char4, - unsafe_add_char, - clear$1, - reset]; - caml_register_global(107,Bi_outbuf,"Bi_outbuf"); - if(0 === (int_size % 7 | 0)) - var m=int_size / 7 | 0,max_highest_byte=127,max_vint_bytes=m; - else - var - m$0=(int_size / 7 | 0) + 1 | 0, - h=(1 << (int_size % 7 | 0)) - 1 | 0, - max_highest_byte=h, - max_vint_bytes=m$0; - var - check_highest_byte= - function(x) - {var _cm_=max_highest_byte < x?1:0; - return _cm_?error(cst_Vint_exceeding_range_of_OC):_cm_}, - unsigned_of_signed= - function(i){return 0 <= i?i << 1:(-1 - i | 0) << 1 | 1}, - write_untagged_uvint= - function(buf,i) - {extend(buf,max_vint_bytes); - var x=[0,i]; - for(;;) - {if(0 === (x[1] >>> 7 | 0)) - return unsafe_add_char(buf,caml_call1(Stdlib_Char[1],x[1])); - var byte$0=128 | x[1] & 127; - unsafe_add_char(buf,caml_call1(Stdlib_Char[1],byte$0)); - x[1] = x[1] >>> 7 | 0; - continue}}, - write_untagged_svint= - function(buf,i) - {return write_untagged_uvint(buf,unsigned_of_signed(i))}, - uvint_of_uint= - function(buf,i) - {if(buf)var b=buf[1],buffer=b;else var buffer=create$1(0,0,10); - clear$1(buffer); - write_untagged_uvint(buffer,i); - return contents(buffer)}, - svint_of_int= - function(buf,i){return uvint_of_uint(buf,unsigned_of_signed(i))}, - read_untagged_uvint= - function(ib) - {var - avail=try_preread(ib,max_vint_bytes), - s=ib[1], - pos=ib[2], - x=[0,0]; - try - {var _cj_=avail - 1 | 0,_ci_=0; - if(! (_cj_ < 0)) - {var i=_ci_; - for(;;) - {var b=caml_bytes_get(s,pos + i | 0); - x[1] = (b & 127) << (7 * i | 0) | x[1]; - if(b < 128) - {ib[2] = (pos + i | 0) + 1 | 0; - if((i + 1 | 0) === max_vint_bytes)check_highest_byte(b); - throw Stdlib[3]} - var _ck_=i + 1 | 0; - if(_cj_ !== i){var i=_ck_;continue} - break}} - error(cst_Unterminated_vint_or_vint_)} - catch(_cl_) - {_cl_ = caml_wrap_exception(_cl_); - if(_cl_ !== Stdlib[3])throw _cl_} - return x[1]}, - read_untagged_svint= - function(ib) - {var i=read_untagged_uvint(ib); - return 0 === (i & 1)?i >>> 1 | 0:-1 - (i >>> 1 | 0) | 0}, - check_end_of_input= - function(ib) - {var _ch_=0 < try_preread(ib,1)?1:0; - return _ch_?error(cst_Junk_input_after_end_of_vi):_ch_}, - uint_of_uvint= - function(s) - {var ib=from_string(0,0,s),x=read_untagged_uvint(ib); - check_end_of_input(ib); - return x}, - int_of_svint= - function(s) - {var ib=from_string(0,0,s),x=read_untagged_svint(ib); - check_end_of_input(ib); - return x}, - Bi_vint= - [0, - uvint_of_uint, - svint_of_int, - uint_of_uvint, - int_of_svint, - write_untagged_uvint, - write_untagged_svint, - read_untagged_uvint, - read_untagged_svint]; - caml_register_global(110,Bi_vint,"Bi_vint"); - var - error$0= - function(s) - {var _cg_=caml_call2(Stdlib[28],cst_Bi_stream,s); - return caml_call1(Stdlib[2],_cg_)}, - read_stream= - function(of_string,ic) - {function _b__(i$2) - {var c=caml_call1(Stdlib[82],ic); - if(1 === c) - {var _ca_=Stdlib_Sys[9]; - if(32 === _ca_) - {var i$0=1; - for(;;) - {if(0 !== caml_call1(Stdlib[87],ic)) - error$0(cst_Chunk_length_exceeds_suppo$0); - var _cd_=i$0 + 1 | 0; - if(4 !== i$0){var i$0=_cd_;continue} - var n=[0,0],i=1; - for(;;) - {var _cb_=caml_call1(Stdlib[87],ic); - n[1] = n[1] << 8 | _cb_; - var _cc_=i + 1 | 0; - if(4 !== i){var i=_cc_;continue} - if(n[1] < 0)error$0(cst_Chunk_length_exceeds_suppo); - var len=n[1]; - break} - break}} - else - if(64 === _ca_) - {var n$0=[0,0],i$1=1; - for(;;) - {var _ce_=caml_call1(Stdlib[87],ic); - n$0[1] = n$0[1] << 8 | _ce_; - var _cf_=i$1 + 1 | 0; - if(8 !== i$1){var i$1=_cf_;continue} - if(n$0[1] < 0)error$0(cst_Corrupted_stream_excessive); - var len=n$0[1]; - break}} - else - var len=error$0(caml_call2(Stdlib_Printf[4],_d_,_ca_)); - if(Stdlib_Sys[12] < len) - error$0(caml_call2(Stdlib_Printf[4],_f_,len)); - var s=caml_create_bytes(len); - caml_call4(Stdlib[85],ic,s,0,len); - return [0,caml_call1(of_string,caml_call1(Stdlib_Bytes[6],s))]} - return c?error$0(caml_call2(Stdlib_Printf[4],_g_,c)):0} - var st=caml_call1(Stdlib_Stream[3],_b__),a=[0,[0]],pos=[0,0]; - function next(i) - {for(;;) - {if(a[1].length - 1 <= pos[1]) - {var match=caml_call1(Stdlib_Stream[11],st); - if(match) - {var a$0=match[1]; - caml_call1(Stdlib_Stream[12],st); - a[1] = a$0; - pos[1] = 0; - continue} - return 0} - var _b$_=pos[1],x=caml_check_bound(a[1],_b$_)[1 + _b$_]; - pos[1]++; - return [0,x]}} - return caml_call1(Stdlib_Stream[3],next)}, - write_stream= - function(opt,to_string,oc,st) - {if(opt)var sth=opt[1],chunk_len=sth;else var chunk_len=1024; - var n=[0,0],acc=[0,0]; - function flush_chunk(param) - {var _b9_=acc[1]; - if(_b9_) - {var - tl=_b9_[2], - x=_b9_[1], - r=[0,tl], - len=caml_call1(Stdlib_List[1],_b9_), - a=caml_make_vect(len,x), - _b6_=len - 2 | 0; - if(! (_b6_ < 0)) - {var i$1=_b6_; - for(;;) - {var _b7_=r[1]; - if(! _b7_)throw [0,Assert_failure,_h_]; - var tl$0=_b7_[2],hd=_b7_[1]; - caml_check_bound(a,i$1)[1 + i$1] = hd; - r[1] = tl$0; - var _b8_=i$1 - 1 | 0; - if(0 !== i$1){var i$1=_b8_;continue} - break}} - var a$0=a} - else - var a$0=[0]; - acc[1] = 0; - n[1] = 0; - var s=caml_call1(to_string,a$0); - caml_call2(Stdlib[65],oc,1); - var n$2=caml_ml_string_length(s),_b1_=Stdlib_Sys[9]; - if(32 === _b1_) - {caml_call2(Stdlib[66],oc,cst); - var n$0=[0,n$2],i=1; - for(;;) - {var _b2_=caml_call1(Stdlib[29],n$0[1] >>> 24 | 0); - caml_call2(Stdlib[65],oc,_b2_); - n$0[1] = n$0[1] << 8; - var _b3_=i + 1 | 0; - if(4 !== i){var i=_b3_;continue} - break}} - else - if(64 === _b1_) - {var n$1=[0,n$2],i$0=1; - for(;;) - {var _b4_=caml_call1(Stdlib[29],n$1[1] >>> 56 | 0); - caml_call2(Stdlib[65],oc,_b4_); - n$1[1] = n$1[1] << 8; - var _b5_=i$0 + 1 | 0; - if(8 !== i$0){var i$0=_b5_;continue} - break}} - else - error$0(caml_call2(Stdlib_Printf[4],_e_,_b1_)); - return caml_call2(Stdlib[66],oc,s)} - function _bZ_(x) - {n[1]++; - acc[1] = [0,x,acc[1]]; - var _b0_=chunk_len <= n[1]?1:0; - return _b0_?flush_chunk(0):_b0_} - caml_call2(Stdlib_Stream[8],_bZ_,st); - if(0 < n[1])flush_chunk(0); - return caml_call2(Stdlib[65],oc,0)}, - test= - function(l) - {function _bT_(x) - {if(0 <= x && ! (9 < x))return 0;throw [0,Assert_failure,_i_]} - caml_call2(Stdlib_List[17],_bT_,l); - function to_string(a) - {var - _bX_=caml_call1(Stdlib_Array[11],a), - _bY_=caml_call2(Stdlib_List[19],Stdlib[33],_bX_); - return caml_call2(Stdlib_String[6],cst$0,_bY_)} - function of_string(s) - {function _bV_(i) - {var _bW_=caml_string_get(s,i); - return runtime.caml_int_of_string - (caml_call2(Stdlib_String[1],1,_bW_))} - return caml_call2(Stdlib_Array[2],caml_ml_string_length(s),_bV_)} - var - st=caml_call1(Stdlib_Stream[4],l), - oc=caml_call1(Stdlib[60],cst_test_stream_dat); - write_stream(_j_,to_string,oc,st); - caml_call1(Stdlib[76],oc); - var - ic=caml_call1(Stdlib[79],cst_test_stream_dat$0), - st$0=read_stream(of_string,ic), - l$0=[0,0]; - function _bU_(i){l$0[1] = [0,i,l$0[1]];return 0} - caml_call2(Stdlib_Stream[8],_bU_,st$0); - caml_call1(Stdlib[93],ic); - return runtime.caml_equal(l,caml_call1(Stdlib_List[9],l$0[1]))}, - Bi_stream=[0,read_stream,write_stream,test]; - caml_register_global(114,Bi_stream,"Bi_stream"); - var - bool_tag=0, - int8_tag=1, - int16_tag=2, - int32_tag=3, - int64_tag=4, - float32_tag=11, - float64_tag=12, - uvint_tag=16, - svint_tag=17, - string_tag=18, - array_tag=19, - tuple_tag=20, - record_tag=21, - num_variant_tag=22, - variant_tag=23, - unit_tag=24, - table_tag=25, - shared_tag=26, - make_signed=function(x){return 1073741823 < x?x + 2147483648 | 0:x}, - hash_name= - function(s) - {var accu=[0,0],_bQ_=caml_ml_string_length(s) - 1 | 0,_bP_=0; - if(! (_bQ_ < 0)) - {var i=_bP_; - for(;;) - {var _bR_=caml_string_get(s,i); - accu[1] = (223 * accu[1] | 0) + _bR_ | 0; - var _bS_=i + 1 | 0; - if(_bQ_ !== i){var i=_bS_;continue} - break}} - accu[1] = accu[1] & 2147483647; - return make_signed(accu[1])}, - n$0=int_size - 31 | 0; - if(0 <= n$0) - {var - write_hashtag= - function(ob,h$0,has_arg) - {var h=h$0 << n$0 >>> n$0 | 0,pos=alloc(ob,4),s=ob[1]; - caml_bytes_unsafe_set - (s,pos + 3 | 0,caml_call1(Stdlib_Char[1],h & 255)); - var h$1=h >>> 8 | 0; - caml_bytes_unsafe_set - (s,pos + 2 | 0,caml_call1(Stdlib_Char[1],h$1 & 255)); - var h$2=h$1 >>> 8 | 0; - caml_bytes_unsafe_set - (s,pos + 1 | 0,caml_call1(Stdlib_Char[1],h$2 & 255)); - var h$3=h$2 >>> 8 | 0,_bO_=has_arg?h$3 | 128:h$3; - caml_bytes_unsafe_set(s,pos,caml_call1(Stdlib_Char[1],_bO_)); - return 0}, - string_of_hashtag= - function(h,has_arg) - {var ob=create$1(0,0,4); - write_hashtag(ob,h,has_arg); - return contents(ob)}, - read_hashtag= - function(ib,cont) - {var - i=read(ib,4), - s=ib[1], - x0=caml_bytes_get(s,i), - has_arg=128 <= x0?1:0, - x1=(x0 & 127) << 24, - x2=caml_bytes_get(s,i + 1 | 0) << 16, - x3=caml_bytes_get(s,i + 2 | 0) << 8, - x4=caml_bytes_get(s,i + 3 | 0), - h=make_signed(x1 | x2 | x3 | x4); - return caml_call3(cont,ib,h,has_arg)}, - read_field_hashtag= - function(ib) - {var i=read(ib,4),s=ib[1],x0=caml_bytes_unsafe_get(s,i); - if(x0 < 128)error(cst_Corrupted_data_invalid_fie); - var - x1=(x0 & 127) << 24, - x2=caml_bytes_unsafe_get(s,i + 1 | 0) << 16, - x3=caml_bytes_unsafe_get(s,i + 2 | 0) << 8, - x4=caml_bytes_unsafe_get(s,i + 3 | 0); - return make_signed(x1 | x2 | x3 | x4)}, - write_numtag= - function(ob,i,has_arg) - {var _bM_=i < 0?1:0,_bN_=_bM_ || (127 < i?1:0); - if(_bN_)error(cst_Corrupted_data_invalid_num); - var x=has_arg?i | 128:i; - return add_char(ob,caml_call1(Stdlib_Char[1],x))}, - read_numtag= - function(ib,cont) - {var i=read(ib,1),x=caml_bytes_get(ib[1],i),has_arg=128 <= x?1:0; - return caml_call3(cont,ib,x & 127,has_arg)}, - make_unhash= - function(l) - {var - _bE_=4 * caml_call1(Stdlib_List[1],l) | 0, - tbl=caml_call2(Stdlib_Hashtbl[1],0,_bE_); - function _bF_(s) - {var h=hash_name(s); - try - {var match=caml_call2(Stdlib_Hashtbl[6],tbl,h); - if(match) - {var s$0=match[1],_bI_=caml_string_notequal(s,s$0); - if(_bI_) - var - _bJ_=caml_call3(Stdlib_Printf[4],_k_,s,s$0), - _bK_=caml_call1(Stdlib[2],_bJ_); - else - var _bK_=_bI_; - return _bK_} - throw [0,Assert_failure,_l_]} - catch(_bL_) - {_bL_ = caml_wrap_exception(_bL_); - if(_bL_ === Stdlib[8]) - return caml_call3(Stdlib_Hashtbl[5],tbl,h,[0,s]); - throw _bL_}} - caml_call2(Stdlib_List[17],_bF_,l); - return function(h) - {try - {var _bG_=caml_call2(Stdlib_Hashtbl[6],tbl,h);return _bG_} - catch(_bH_) - {_bH_ = caml_wrap_exception(_bH_); - if(_bH_ === Stdlib[8])return 0; - throw _bH_}}}, - write_tag= - function(ob,x){return add_char(ob,caml_call1(Stdlib_Char[1],x))}, - write_untagged_unit=function(ob,param){return add_char(ob,0)}, - write_untagged_bool= - function(ob,x){var _bD_=x?1:0;return add_char(ob,_bD_)}, - write_untagged_char=function(ob,x){return add_char(ob,x)}, - write_untagged_int8= - function(ob,x){return add_char(ob,caml_call1(Stdlib_Char[1],x))}, - write_untagged_int16= - function(ob,x) - {add_char(ob,caml_call1(Stdlib_Char[1],x >>> 8 | 0)); - return add_char(ob,caml_call1(Stdlib_Char[1],x & 255))}, - write_untagged_int32= - function(ob,low) - {var high=low >>> 16 | 0; - add_char(ob,caml_call1(Stdlib_Char[1],high >>> 8 | 0)); - add_char(ob,caml_call1(Stdlib_Char[1],high & 255)); - add_char(ob,caml_call1(Stdlib_Char[1],(low >>> 8 | 0) & 255)); - return add_char(ob,caml_call1(Stdlib_Char[1],low & 255))}, - write_untagged_float32= - function(ob,x) - {return write_untagged_int32 - (ob,runtime.caml_int32_bits_of_float(x))}, - float_endianness= - [246, - function(_bC_) - {var match=caml_string_unsafe_get(1.,0); - if(63 === match)return 3305632; - if(match)throw [0,Assert_failure,_m_]; - return 624392470}], - read_untagged_float64= - function(ib) - {var - i=read(ib,8), - s=ib[1], - x=runtime.caml_obj_block(Stdlib_Obj[14],8), - _by_=caml_obj_tag(float_endianness), - _bz_= - 250 === _by_ - ?float_endianness[1] - :246 === _by_ - ?caml_call1(CamlinternalLazy[2],float_endianness) - :float_endianness; - if(624392470 <= _bz_) - {var j=0; - for(;;) - {caml_bytes_unsafe_set - (x,7 - j | 0,caml_bytes_unsafe_get(s,i + j | 0)); - var _bA_=j + 1 | 0; - if(7 !== j){var j=_bA_;continue} - break}} - else - {var j$0=0; - for(;;) - {caml_bytes_unsafe_set - (x,j$0,caml_bytes_unsafe_get(s,i + j$0 | 0)); - var _bB_=j$0 + 1 | 0; - if(7 !== j$0){var j$0=_bB_;continue} - break}} - return x}, - write_untagged_float64= - function(ob,x) - {var - i=alloc(ob,8), - s=ob[1], - _bu_=caml_obj_tag(float_endianness), - _bv_= - 250 === _bu_ - ?float_endianness[1] - :246 === _bu_ - ?caml_call1(CamlinternalLazy[2],float_endianness) - :float_endianness; - if(624392470 <= _bv_) - {var j=0; - for(;;) - {caml_bytes_unsafe_set - (s,i + j | 0,caml_string_unsafe_get(x,7 - j | 0)); - var _bw_=j + 1 | 0; - if(7 !== j){var j=_bw_;continue} - return 0}} - var j$0=0; - for(;;) - {caml_bytes_unsafe_set - (s,i + j$0 | 0,caml_string_unsafe_get(x,j$0)); - var _bx_=j$0 + 1 | 0; - if(7 !== j$0){var j$0=_bx_;continue} - return 0}}, - write_untagged_int64= - function(ob,x) - {return write_untagged_float64 - (ob,runtime.caml_int64_float_of_bits(x))}, - safety_test= - function(param) - {var - y=read_untagged_float64(from_string(0,0,s)), - x=1.00146962706651288; - if(1.00146962706651288 != y)throw [0,Assert_failure,_n_]; - var ob=create$1(0,0,8); - write_untagged_float64(ob,x); - var _bt_=caml_string_notequal(contents(ob),s); - if(_bt_)throw [0,Assert_failure,_o_]; - return _bt_}, - write_untagged_string= - function(ob,s) - {write_untagged_uvint(ob,caml_ml_string_length(s)); - return add_string(ob,s)}, - write_unit= - function(ob,param) - {write_tag(ob,unit_tag);return write_untagged_unit(ob,0)}, - write_bool= - function(ob,x) - {write_tag(ob,bool_tag);return write_untagged_bool(ob,x)}, - write_char= - function(ob,x) - {write_tag(ob,int8_tag);return write_untagged_char(ob,x)}, - write_int8= - function(ob,x) - {write_tag(ob,int8_tag);return write_untagged_int8(ob,x)}, - write_int16= - function(ob,x) - {write_tag(ob,int16_tag);return write_untagged_int16(ob,x)}, - write_int32= - function(ob,x) - {write_tag(ob,int32_tag);return write_untagged_int32(ob,x)}, - write_int64= - function(ob,x) - {write_tag(ob,int64_tag);return write_untagged_int64(ob,x)}, - write_float32= - function(ob,x) - {write_tag(ob,float32_tag);return write_untagged_float32(ob,x)}, - write_float64= - function(ob,x) - {write_tag(ob,float64_tag);return write_untagged_float64(ob,x)}, - write_string= - function(ob,x) - {write_tag(ob,string_tag);return write_untagged_string(ob,x)}, - write_uvint= - function(ob,x) - {write_tag(ob,uvint_tag);return write_untagged_uvint(ob,x)}, - write_svint= - function(ob,x) - {write_tag(ob,svint_tag);return write_untagged_svint(ob,x)}, - write_t= - function(ob,tagged,x) - {var tagged$0=tagged,x$0=x; - for(;;) - {if(typeof x$0 === "number") - {if(tagged$0)write_tag(ob,unit_tag); - return write_untagged_unit(ob,0)} - var _a__=x$0[1]; - if(708012133 <= _a__) - {if(847309489 <= _a__) - {if(928626971 === _a__) - {var x$1=x$0[2]; - if(tagged$0)write_tag(ob,float32_tag); - return write_untagged_float32(ob,x$1)} - if(951901561 <= _a__) - {if(1063160078 <= _a__) - {var x$2=x$0[2]; - if(tagged$0)write_tag(ob,uvint_tag); - return write_untagged_uvint(ob,x$2)} - var o=x$0[2]; - if(tagged$0)write_tag(ob,array_tag); - if(o) - {var - match=o[1], - a=match[2], - node_tag=match[1], - len=a.length - 1; - write_untagged_uvint(ob,len); - var _a$_=0 < len?1:0; - if(_a$_) - {write_tag(ob,node_tag); - var - _ba_=0, - _bb_=function(_bs_){return write_t(ob,_ba_,_bs_)}; - return caml_call2(Stdlib_Array[13],_bb_,a)} - return _a$_} - return write_untagged_uvint(ob,0)} - if(928627642 <= _a__) - {var x$3=x$0[2]; - if(tagged$0)write_tag(ob,float64_tag); - return write_untagged_float64(ob,x$3)} - var a$0=x$0[2]; - if(tagged$0)write_tag(ob,record_tag); - write_untagged_uvint(ob,a$0.length - 1); - var - _bc_= - function(param) - {var x=param[3],h=param[2]; - write_hashtag(ob,h,1); - return write_t(ob,1,x)}; - return caml_call2(Stdlib_Array[13],_bc_,a$0)} - if(737456202 <= _a__) - {if(815034505 <= _a__) - {var x$4=x$0[2]; - if(tagged$0)write_tag(ob,int8_tag); - return write_untagged_char(ob,x$4)} - var x$5=x$0[2]; - if(tagged$0)write_tag(ob,bool_tag); - return write_untagged_bool(ob,x$5)} - if(726928360 <= _a__) - {var a$1=x$0[2]; - if(tagged$0)write_tag(ob,tuple_tag); - write_untagged_uvint(ob,a$1.length - 1); - var - _bd_=1, - _be_=function(_br_){return write_t(ob,_bd_,_br_)}; - return caml_call2(Stdlib_Array[13],_be_,a$1)} - var match$0=x$0[2],x$6=match$0[3],h=match$0[2]; - if(tagged$0)write_tag(ob,variant_tag); - write_hashtag(ob,h,0 !== x$6?1:0); - if(x$6){var x$7=x$6[1],tagged$0=1,x$0=x$7;continue} - return 0} - if(-775957819 <= _a__) - {if(412180492 <= _a__) - {if(504440814 <= _a__) - {var o$0=x$0[2]; - if(tagged$0)write_tag(ob,table_tag); - if(o$0) - {var - match$1=o$0[1], - a$2=match$1[2], - fields=match$1[1], - row_num=a$2.length - 1; - write_untagged_uvint(ob,row_num); - var _bf_=0 < row_num?1:0; - if(_bf_) - {var col_num=fields.length - 1; - write_untagged_uvint(ob,col_num); - var - _bg_= - function(param) - {var tag=param[3],h=param[2]; - write_hashtag(ob,h,1); - return write_tag(ob,tag)}; - caml_call2(Stdlib_Array[13],_bg_,fields); - var _bh_=0 < row_num?1:0; - if(_bh_) - {var _bj_=row_num - 1 | 0,_bi_=0; - if(! (_bj_ < 0)) - {var i=_bi_; - for(;;) - {var ai=caml_check_bound(a$2,i)[1 + i]; - if(ai.length - 1 !== col_num) - caml_call1(Stdlib[1],cst_Bi_io_write_t_Malformed_Ta); - var _bn_=col_num - 1 | 0,_bm_=0; - if(! (_bn_ < 0)) - {var j=_bm_; - for(;;) - {write_t(ob,0,caml_check_bound(ai,j)[1 + j]); - var _bp_=j + 1 | 0; - if(_bn_ !== j){var j=_bp_;continue} - break}} - var _bo_=i + 1 | 0; - if(_bj_ !== i){var i=_bo_;continue} - break}} - var _bk_=0} - else - var _bk_=_bh_; - var _bl_=_bk_} - else - var _bl_=_bf_; - return _bl_} - return write_untagged_uvint(ob,0)} - var x$8=x$0[2]; - if(tagged$0)write_tag(ob,svint_tag); - return write_untagged_svint(ob,x$8)} - if(221365804 <= _a__) - {var match$2=x$0[2],x$9=match$2[2],i$0=match$2[1]; - if(tagged$0)write_tag(ob,num_variant_tag); - write_numtag(ob,i$0,0 !== x$9?1:0); - if(x$9){var x$10=x$9[1],tagged$0=1,x$0=x$10;continue} - return 0} - var x$11=x$0[2]; - if(tagged$0)write_tag(ob,shared_tag); - var - offset= - caml_call3 - (_a_[3],ob[7],[0,x$11,dummy_type_id],ob[4] + ob[3] | 0); - write_untagged_uvint(ob,offset); - var _bq_=0 === offset?1:0; - if(_bq_){var tagged$0=1,x$0=x$11;continue} - return _bq_} - if(-783416530 <= _a__) - {if(-783415859 <= _a__) - {var x$12=x$0[2]; - if(tagged$0)write_tag(ob,int64_tag); - return write_untagged_int64(ob,x$12)} - var x$13=x$0[2]; - if(tagged$0)write_tag(ob,int32_tag); - return write_untagged_int32(ob,x$13)} - if(-783416972 <= _a__) - {var x$14=x$0[2]; - if(tagged$0)write_tag(ob,int16_tag); - return write_untagged_int16(ob,x$14)} - var s=x$0[2]; - if(tagged$0)write_tag(ob,string_tag); - return write_untagged_string(ob,s)}}, - write_tree=function(ob,x){return write_t(ob,1,x)}, - string_of_tree= - function(x) - {var ob=create$1(0,0,1000);write_tree(ob,x);return contents(ob)}, - tag_of_tree= - function(x) - {if(typeof x === "number")return unit_tag; - var _a9_=x[1]; - return 708012133 <= _a9_ - ?847309489 <= _a9_ - ?928626971 === _a9_ - ?float32_tag - :951901561 <= _a9_ - ?1063160078 <= _a9_?uvint_tag:array_tag - :928627642 <= _a9_?float64_tag:record_tag - :737456202 <= _a9_ - ?815034505 <= _a9_?int8_tag:bool_tag - :726928360 <= _a9_?tuple_tag:variant_tag - :-775957819 <= _a9_ - ?412180492 <= _a9_ - ?504440814 <= _a9_?table_tag:svint_tag - :221365804 <= _a9_?num_variant_tag:shared_tag - :-783416530 <= _a9_ - ?-783415859 <= _a9_?int64_tag:int32_tag - :-783416972 <= _a9_?int16_tag:string_tag}, - read_tag=function(ib){return read_char(ib)}, - read_untagged_unit= - function(ib) - {var match=read_char(ib); - return match?error(cst_Corrupted_data_unit_value):0}, - read_untagged_bool= - function(ib) - {var match=read_char(ib); - return 1 === match - ?1 - :match?error(cst_Corrupted_data_bool_value):0}, - read_untagged_char=function(ib){return read_char(ib)}, - read_untagged_int8=function(ib){return read_char(ib)}, - read_untagged_int16= - function(ib) - {var i=read(ib,2),s=ib[1],_a8_=caml_bytes_get(s,i + 1 | 0); - return caml_bytes_get(s,i) << 8 | _a8_}, - read_untagged_int32= - function(ib) - {var - i=read(ib,4), - s=ib[1], - _a6_=caml_bytes_get(s,i + 1 | 0), - x1=caml_bytes_get(s,i) << 8 | _a6_, - _a7_=caml_bytes_get(s,i + 3 | 0), - x2=caml_bytes_get(s,i + 2 | 0) << 8 | _a7_; - return x1 << 16 | x2}, - read_untagged_float32= - function(ib) - {return runtime.caml_int32_float_of_bits(read_untagged_int32(ib))}, - read_untagged_int64= - function(ib) - {return runtime.caml_int64_bits_of_float - (read_untagged_float64(ib))}, - read_untagged_string= - function(ib) - {var - len=read_untagged_uvint(ib), - str=caml_create_bytes(len), - pos=[0,0], - rem=[0,len]; - for(;;) - {if(0 < rem[1]) - {var bytes_read=try_preread(ib,rem[1]); - if(0 === bytes_read) - error(cst_Corrupted_data_string); - else - {caml_call5 - (Stdlib_Bytes[11],ib[1],ib[2],str,pos[1],bytes_read); - ib[2] = ib[2] + bytes_read | 0; - pos[1] = pos[1] + bytes_read | 0; - rem[1] = rem[1] - bytes_read | 0} - continue} - return caml_call1(Stdlib_Bytes[6],str)}}, - read_unit=function(ib){read_untagged_unit(ib);return 948106916}, - read_bool=function(ib){return [0,737456202,read_untagged_bool(ib)]}, - read_int8=function(ib){return [0,815034505,read_untagged_char(ib)]}, - read_int16= - function(ib){return [0,-783416972,read_untagged_int16(ib)]}, - read_int32= - function(ib){return [0,-783416530,read_untagged_int32(ib)]}, - read_int64= - function(ib){return [0,-783415859,read_untagged_int64(ib)]}, - read_float32= - function(ib){return [0,928626971,read_untagged_float32(ib)]}, - read_float64= - function(ib){return [0,928627642,read_untagged_float64(ib)]}, - read_uvint= - function(ib){return [0,1063160078,read_untagged_uvint(ib)]}, - read_svint= - function(ib){return [0,412180492,read_untagged_svint(ib)]}, - read_string= - function(ib){return [0,-976970511,read_untagged_string(ib)]}, - read_tree= - function(opt,ib) - {if(opt)var sth=opt[1],unhash=sth;else var unhash=make_unhash(0); - function read_array(ib) - {var len=read_untagged_uvint(ib); - if(0 === len)return _p_; - var tag=read_tag(ib),read=reader_of_tag(tag); - function _a5_(param){return caml_call1(read,ib)} - return [0, - 951901561, - [0,[0,tag,caml_call2(Stdlib_Array[2],len,_a5_)]]]} - function reader_of_tag(param) - {if(! (26 < param >>> 0)) - switch(param) - {case 0:return read_bool; - case 1:return read_int8; - case 2:return read_int16; - case 3:return read_int32; - case 4:return read_int64; - case 11:return read_float32; - case 12:return read_float64; - case 16:return read_uvint; - case 17:return read_svint; - case 18:return read_string; - case 19:return read_array; - case 20:return read_tuple; - case 21:return read_record; - case 22:return read_num_variant; - case 23:return read_variant; - case 24:return read_unit; - case 25:return read_table; - case 26:return read_shared - } - return error(cst_Corrupted_data_invalid_tag)} - function read_tree(ib) - {return caml_call1(reader_of_tag(read_tag(ib)),ib)} - function read_tuple(ib) - {var len=read_untagged_uvint(ib); - function _a4_(param){return read_tree(ib)} - return [0,726928360,caml_call2(Stdlib_Array[2],len,_a4_)]} - function read_record(ib) - {var len=read_untagged_uvint(ib); - function _a3_(param) - {var - h=read_field_hashtag(ib), - name=caml_call1(unhash,h), - x=read_tree(ib); - return [0,name,h,x]} - return [0,847309489,caml_call2(Stdlib_Array[2],len,_a3_)]} - function read_num_variant_cont(ib,i,has_arg) - {var x=has_arg?[0,read_tree(ib)]:0; - return [0,221365804,[0,i,x]]} - function read_num_variant(ib) - {return read_numtag(ib,read_num_variant_cont)} - function read_variant_cont(ib,h,has_arg) - {var name=caml_call1(unhash,h),x=has_arg?[0,read_tree(ib)]:0; - return [0,708012133,[0,name,h,x]]} - function read_variant(ib) - {return read_hashtag(ib,read_variant_cont)} - function read_table(ib) - {var row_num=read_untagged_uvint(ib); - if(0 === row_num)return _q_; - var col_num=read_untagged_uvint(ib); - function _aZ_(param) - {var - h=read_field_hashtag(ib), - name=caml_call1(unhash,h), - tag=read_tag(ib); - return [0,name,h,tag]} - var fields=caml_call2(Stdlib_Array[2],col_num,_aZ_); - function _a0_(param) - {var tag=param[3];return reader_of_tag(tag)} - var readers=caml_call2(Stdlib_Array[15],_a0_,fields); - function _a1_(param) - {function _a2_(j) - {return caml_call1(caml_check_bound(readers,j)[1 + j],ib)} - return caml_call2(Stdlib_Array[2],col_num,_a2_)} - var a=caml_call2(Stdlib_Array[2],row_num,_a1_); - return [0,504440814,[0,[0,fields,a]]]} - function read_shared(ib) - {var pos=ib[4] + ib[2] | 0,offset=read_untagged_uvint(ib); - if(0 === offset) - {var r=[]; - runtime.caml_update_dummy(r,[0,-775957819,r]); - caml_call3(Rd[3],ib[7],[0,pos,dummy_type_id],r); - var x=read_tree(ib); - r[2] = x; - return r} - return caml_call2 - (Rd[4],ib[7],[0,pos - offset | 0,dummy_type_id])} - return read_tree(ib)}, - tree_of_string= - function(unhash,s){return read_tree(unhash,from_string(0,0,s))}, - skip_bytes=function(ib,n){read(ib,n);return 0}, - skip_unit=function(ib){return skip_bytes(ib,1)}, - skip_bool=function(ib){return skip_bytes(ib,1)}, - skip_int8=function(ib){return skip_bytes(ib,1)}, - skip_int16=function(ib){return skip_bytes(ib,2)}, - skip_int32=function(ib){return skip_bytes(ib,4)}, - skip_int64=function(ib){return skip_bytes(ib,8)}, - skip_float32=function(ib){return skip_bytes(ib,4)}, - skip_float64=function(ib){return skip_bytes(ib,8)}, - skip_uvint=function(ib){read_untagged_uvint(ib);return 0}, - skip_svint=function(ib){read_untagged_svint(ib);return 0}, - skip_string= - function(ib) - {var len=read_untagged_uvint(ib);return skip_bytes(ib,len)}, - skipper_of_tag= - function(param) - {if(! (25 < param >>> 0)) - switch(param) - {case 0:return skip_bool; - case 1:return skip_int8; - case 2:return skip_int16; - case 3:return skip_int32; - case 4:return skip_int64; - case 11:return skip_float32; - case 12:return skip_float64; - case 16:return skip_uvint; - case 17:return skip_svint; - case 18:return skip_string; - case 19:return skip_array; - case 20:return skip_tuple; - case 21:return skip_record; - case 22:return skip_num_variant; - case 23:return skip_variant; - case 24:return skip_unit; - case 25:return skip_table - } - return error(cst_Corrupted_data_invalid_tag$0)}, - skip_array= - function(ib) - {var len=read_untagged_uvint(ib); - if(0 === len)return 0; - var tag=read_tag(ib),read=skipper_of_tag(tag),_aX_=1; - if(! (len < 1)) - {var i=_aX_; - for(;;) - {caml_call1(read,ib); - var _aY_=i + 1 | 0; - if(len !== i){var i=_aY_;continue} - break}} - return 0}, - skip= - function(ib){return caml_call1(skipper_of_tag(read_tag(ib)),ib)}, - skip_tuple= - function(ib) - {var len=read_untagged_uvint(ib),_aV_=1; - if(! (len < 1)) - {var i=_aV_; - for(;;) - {skip(ib); - var _aW_=i + 1 | 0; - if(len !== i){var i=_aW_;continue} - break}} - return 0}, - skip_record= - function(ib) - {var len=read_untagged_uvint(ib),_aT_=1; - if(! (len < 1)) - {var i=_aT_; - for(;;) - {read_field_hashtag(ib); - skip(ib); - var _aU_=i + 1 | 0; - if(len !== i){var i=_aU_;continue} - break}} - return 0}, - skip_num_variant_cont= - function(ib,i,has_arg){return has_arg?skip(ib):has_arg}, - skip_num_variant= - function(ib){return read_numtag(ib,skip_num_variant_cont)}, - skip_variant_cont= - function(ib,h,has_arg){return has_arg?skip(ib):has_arg}, - skip_variant= - function(ib){return read_hashtag(ib,skip_variant_cont)}, - skip_table= - function(ib) - {var row_num=read_untagged_uvint(ib); - if(0 === row_num)return 0; - var col_num=read_untagged_uvint(ib); - function _aO_(param) - {read_field_hashtag(ib);return skipper_of_tag(read_tag(ib))} - var readers=caml_call2(Stdlib_Array[2],col_num,_aO_),_aP_=1; - if(! (row_num < 1)) - {var i=_aP_; - for(;;) - {var _aQ_=1; - if(! (col_num < 1)) - {var j=_aQ_; - for(;;) - {caml_call1(caml_check_bound(readers,j)[1 + j],ib); - var _aS_=j + 1 | 0; - if(col_num !== j){var j=_aS_;continue} - break}} - var _aR_=i + 1 | 0; - if(row_num !== i){var i=_aR_;continue} - break}} - return 0}, - array=Easy_format[2], - record=Easy_format[2], - _r_=Easy_format[2], - tuple= - [0, - 0, - _r_[2], - _r_[3], - _r_[4], - 0, - _r_[6], - 0, - _r_[8], - _r_[9], - _r_[10], - _r_[11], - _r_[12], - _r_[13], - _r_[14]], - map= - function(f,a) - {var len=a.length - 1; - if(0 === len) - var _aN_=[0]; - else - {var - r=caml_make_vect(len,caml_call1(f,a[1])), - _aL_=len - 1 | 0, - _aK_=1; - if(! (_aL_ < 1)) - {var i=_aK_; - for(;;) - {r[1 + i] = caml_call1(f,a[1 + i]); - var _aM_=i + 1 | 0; - if(_aL_ !== i){var i=_aM_;continue} - break}} - var _aN_=r} - return caml_call1(Stdlib_Array[11],_aN_)}, - format= - function(shared,x) - {var x$0=x; - for(;;) - {if(typeof x$0 === "number")return [0,cst_unit,Easy_format[1]]; - var _ad_=x$0[1]; - if(708012133 <= _ad_) - {if(847309489 <= _ad_) - {if(928626971 === _ad_) - {var x$1=x$0[2],_ae_=Easy_format[1]; - return [0,caml_call1(Stdlib[35],x$1),_ae_]} - if(951901561 <= _ad_) - {if(1063160078 <= _ad_) - {var x$2=x$0[2],_af_=Easy_format[1]; - return [0,caml_call1(Stdlib[33],x$2),_af_]} - var _ag_=x$0[2]; - if(_ag_) - {var match=_ag_[1],a=match[2]; - return [1, - [0,cst$3,cst$2,cst$1,array], - map(function(_aJ_){return format(shared,_aJ_)},a)]} - return [0,cst$4,Easy_format[1]]} - if(928627642 <= _ad_) - {var x$3=x$0[2],_ah_=Easy_format[1]; - return [0,caml_call1(Stdlib[35],x$3),_ah_]} - var a$0=x$0[2]; - return [1, - [0,cst$7,cst$6,cst$5,record], - map - (function(param) - {var x=param[3],h=param[2],o=param[1]; - if(o) - var s=o[1],s$0=caml_call2(Stdlib_Printf[4],_B_,s); - else - var s$0=caml_call2(Stdlib_Printf[4],_D_,h); - var - _aG_=format(shared,x), - _aH_=Easy_format[3], - _aI_=Easy_format[1]; - return [2, - [0,[0,caml_call2(Stdlib_Printf[4],_C_,s$0),_aI_],_aH_], - _aG_]}, - a$0)]} - if(737456202 <= _ad_) - {if(815034505 <= _ad_) - {var x$4=x$0[2],_ai_=Easy_format[1]; - return [0,caml_call2(Stdlib_Printf[4],_s_,x$4),_ai_]} - var - x$5=x$0[2], - _aj_=Easy_format[1], - _ak_=x$5?cst_true:cst_false; - return [0,_ak_,_aj_]} - if(726928360 <= _ad_) - {var a$1=x$0[2]; - return [1, - [0,cst$10,cst$9,cst$8,tuple], - map(function(_aF_){return format(shared,_aF_)},a$1)]} - var - match$0=x$0[2], - o=match$0[3], - h=match$0[2], - opt_name=match$0[1]; - if(opt_name) - var s=opt_name[1],name=caml_call2(Stdlib_Printf[4],_t_,s); - else - var name=caml_call2(Stdlib_Printf[4],_u_,h); - if(o) - {var - x$6=o[1], - _al_=format(shared,x$6), - _am_=Easy_format[3], - _an_=Easy_format[1]; - return [1, - [0,cst$14,cst$13,cst$12,tuple], - [0, - [2, - [0,[0,caml_call2(Stdlib[28],name,cst$11),_an_],_am_], - _al_], - 0]]} - var - _ao_=Easy_format[1], - _ap_=caml_call2(Stdlib[28],name,cst$15); - return [0,caml_call2(Stdlib[28],cst$16,_ap_),_ao_]} - if(-775957819 <= _ad_) - {if(412180492 <= _ad_) - {if(504440814 <= _ad_) - {var _aq_=x$0[2]; - if(_aq_) - {var - match$1=_aq_[1], - aa=match$1[2], - header=match$1[1], - _ar_= - function(header) - {return function(a) - {function _aE_(i,x) - {var - match=caml_check_bound(header,i)[1 + i], - h=match[2], - s=match[1]; - return [0,s,h,x]} - return [0,847309489,caml_call2(Stdlib_Array[16],_aE_,a)]}} - (header), - x$7= - [0, - 951901561, - [0,[0,record_tag,caml_call2(Stdlib_Array[15],_ar_,aa)]]], - x$0=x$7; - continue} - return [0,cst$17,Easy_format[1]]} - var x$8=x$0[2],_as_=Easy_format[1]; - return [0,caml_call1(Stdlib[33],x$8),_as_]} - if(221365804 <= _ad_) - {var - match$2=x$0[2], - o$0=match$2[2], - i=match$2[1], - suffix=0 === i?cst$18:caml_call1(Stdlib[33],i); - if(o$0) - {var - x$9=o$0[1], - _at_=Easy_format[1], - cons=[0,caml_call2(Stdlib[28],cst_Some,suffix),_at_], - _au_=format(shared,x$9); - return [2,[0,cons,Easy_format[3]],_au_]} - var _av_=Easy_format[1]; - return [0,caml_call2(Stdlib[28],cst_None,suffix),_av_]} - var x$10=x$0[2],p=shared[2],tbl=shared[1]; - p[1]++; - var - pos=p[1], - offset=caml_call3(_a_[3],tbl,[0,x$10,dummy_type_id],pos); - if(0 === offset) - {var - _aw_=format(shared,x$10), - _ax_=Easy_format[3], - _ay_=Easy_format[1]; - return [2, - [0,[0,caml_call2(Stdlib_Printf[4],_v_,pos),_ay_],_ax_], - _aw_]} - var _az_=Easy_format[1]; - return [0, - caml_call2(Stdlib_Printf[4],_w_,pos - offset | 0), - _az_]} - if(-783416530 <= _ad_) - {if(-783415859 <= _ad_) - {var x$11=x$0[2],_aA_=Easy_format[1]; - return [0,caml_call2(Stdlib_Printf[4],_x_,x$11),_aA_]} - var x$12=x$0[2],_aB_=Easy_format[1]; - return [0,caml_call2(Stdlib_Printf[4],_y_,x$12),_aB_]} - if(-783416972 <= _ad_) - {var x$13=x$0[2],_aC_=Easy_format[1]; - return [0,caml_call2(Stdlib_Printf[4],_z_,x$13),_aC_]} - var s$0=x$0[2],_aD_=Easy_format[1]; - return [0,caml_call2(Stdlib_Printf[4],_A_,s$0),_aD_]}}, - init=function(param){return [0,caml_call1(_a_[1],512),[0,0]]}, - view_of_tree= - function(t) - {var _ac_=format(init(0),t); - return caml_call3(Easy_format[4][4],0,0,_ac_)}, - print_view_of_tree= - function(t) - {var _ab_=format(init(0),t); - return caml_call3(Easy_format[4][6],0,0,_ab_)}, - output_view_of_tree= - function(oc,t) - {var _aa_=format(init(0),t); - return caml_call4(Easy_format[4][5],0,0,oc,_aa_)}, - view= - function(unhash,s){return view_of_tree(tree_of_string(unhash,s))}, - print_view= - function(unhash,s) - {return print_view_of_tree(tree_of_string(unhash,s))}, - output_view= - function(unhash,oc,s) - {return output_view_of_tree(oc,tree_of_string(unhash,s))}, - Bi_io= - [0, - bool_tag, - int8_tag, - int16_tag, - int32_tag, - int64_tag, - float32_tag, - float64_tag, - uvint_tag, - svint_tag, - string_tag, - array_tag, - tuple_tag, - record_tag, - num_variant_tag, - variant_tag, - unit_tag, - table_tag, - shared_tag, - write_tag, - read_tag, - hash_name, - write_hashtag, - string_of_hashtag, - read_hashtag, - read_field_hashtag, - make_unhash, - write_numtag, - read_numtag, - write_untagged_unit, - write_untagged_bool, - write_untagged_char, - write_untagged_int8, - write_untagged_int16, - write_untagged_int32, - write_untagged_int64, - write_untagged_float32, - write_untagged_float64, - write_untagged_string, - write_untagged_uvint, - write_untagged_svint, - write_unit, - write_bool, - write_char, - write_int8, - write_int16, - write_int32, - write_int64, - write_float32, - write_float64, - write_string, - write_uvint, - write_svint, - read_untagged_unit, - read_untagged_bool, - read_untagged_char, - read_untagged_int8, - read_untagged_int16, - read_untagged_int32, - read_untagged_int64, - read_untagged_float32, - read_untagged_float64, - read_untagged_string, - read_untagged_uvint, - read_untagged_svint, - skip, - write_tree, - string_of_tree, - read_tree, - tree_of_string, - tag_of_tree, - view_of_tree, - view, - print_view_of_tree, - print_view, - output_view_of_tree, - output_view, - safety_test]; - caml_register_global(118,Bi_io,"Bi_io"); - var - split= - function(s) - {var - acc=[0,0], - stop=[0,caml_ml_string_length(s)], - _Y_=stop[1] - 1 | 0; - if(! (_Y_ < 0)) - {var i=_Y_; - for(;;) - {if(44 === caml_string_get(s,i)) - {var start=i + 1 | 0,___=acc[1]; - acc[1] - = - [0, - caml_call3(Stdlib_String[15],s,start,stop[1] - start | 0), - ___]; - stop[1] = i} - var _$_=i - 1 | 0; - if(0 !== i){var i=_$_;continue} - break}} - var _Z_=acc[1]; - return [0,caml_call3(Stdlib_String[15],s,0,stop[1]),_Z_]}, - load_lines= - function(accu,s) - {var ic=caml_call1(Stdlib[79],s),l=[0,accu]; - try - {for(;;) - {var _W_=caml_call1(Stdlib_List[9],l[1]); - l[1] = [0,caml_call1(Stdlib[83],ic),_W_]; - continue}} - catch(_X_) - {_X_ = caml_wrap_exception(_X_); - if(_X_ === Stdlib[12]){caml_call1(Stdlib[93],ic);return l[1]} - throw _X_}}, - load= - function(ic) - {var buf=caml_call1(Stdlib_Buffer[1],1000); - try - {for(;;) - {var _U_=caml_call1(Stdlib[82],ic); - caml_call2(Stdlib_Buffer[12],buf,_U_); - continue}} - catch(_V_) - {_V_ = caml_wrap_exception(_V_); - if(_V_ === Stdlib[12])return caml_call1(Stdlib_Buffer[2],buf); - throw _V_}}, - symbol=Stdlib_Filename[4], - default_dict_path= - function(param) - {try - {var - _R_=Stdlib_Sys[4], - _S_= - caml_string_notequal(_R_,cst_Cygwin) - ?caml_string_notequal(_R_,cst_Unix) - ?caml_string_notequal(_R_,cst_Win32) - ?0 - :[0, - caml_call2 - (symbol,caml_sys_getenv(cst_HOMEPATH),cst_bdump_dict)] - :[0, - caml_call2 - (symbol,caml_sys_getenv(cst_HOME),cst_bdump_dict$0)] - :[0, - caml_call2 - (symbol,caml_sys_getenv(cst_HOME$0),cst_bdump_dict$1)]; - return _S_} - catch(_T_) - {_T_ = caml_wrap_exception(_T_); - if(_T_ === Stdlib[8])return 0; - throw _T_}}, - load_dictionary= - function(dic_file,accu) - {if(dic_file) - {var fn=dic_file[1]; - if(runtime.caml_sys_file_exists(fn)) - try - {var _Q_=load_lines(accu,fn);return _Q_} - catch(e) - {e = caml_wrap_exception(e); - var - _O_=caml_call1(Stdlib_Printexc[1],e), - _P_=caml_call3(Stdlib_Printf[4],_E_,fn,_O_); - return caml_call1(Stdlib[2],_P_)} - return accu} - return accu}, - write_uniq= - function(oc,a) - {var _J_=0 < a.length - 1?1:0; - if(_J_) - {var _K_=caml_check_bound(a,0)[1]; - caml_call3(Stdlib_Printf[1],oc,_F_,_K_); - var - _L_=caml_check_bound(a,0)[1], - _M_= - function(last,x) - {if(caml_string_notequal(last,x)) - caml_call3(Stdlib_Printf[1],oc,_G_,x); - return x}; - caml_call3(Stdlib_Array[17],_M_,_L_,a); - var _N_=0} - else - var _N_=_J_; - return _N_}, - save_dictionary= - function(dic_file,l) - {if(dic_file) - {var fn=dic_file[1],a=caml_call1(Stdlib_Array[12],l); - caml_call2(Stdlib_Array[32],Stdlib_String[9],a); - var - oc=caml_call1(Stdlib[60],fn), - finally$0=function(param){return caml_call1(Stdlib[77],oc)}; - try - {write_uniq(oc,a);var _I_=finally$0(0);return _I_} - catch(e){e = caml_wrap_exception(e);finally$0(0);throw e}} - return 0}, - Bi_dump= - [0, - split, - load_lines, - load, - symbol, - default_dict_path, - load_dictionary, - write_uniq, - save_dictionary]; - caml_register_global(122,Bi_dump,"Bi_dump"); - return} - throw [0,Assert_failure,_H_]} - r[1] = r[1] >>> 1 | 0; - c[1]++; - continue}} - (globalThis)); - - -//# 1 "../../.js/yojson/yojson.cma.js" +//# 1 "../../.js/default/yojson/yojson.cma.js" (function(globalThis) {"use strict"; var @@ -33939,12 +31907,12 @@ caml_equal=runtime.caml_equal, caml_float_of_string=runtime.caml_float_of_string, caml_fresh_oo_id=runtime.caml_fresh_oo_id, + caml_get_public_method=runtime.caml_get_public_method, caml_int64_of_string=runtime.caml_int64_of_string, caml_int_of_string=runtime.caml_int_of_string, caml_lex_engine=runtime.caml_lex_engine, caml_make_vect=runtime.caml_make_vect, caml_ml_string_length=runtime.caml_ml_string_length, - caml_register_global=runtime.caml_register_global, caml_string_equal=runtime.caml_string_equal, caml_string_get=runtime.caml_string_get, caml_string_notequal=runtime.caml_string_notequal, @@ -33968,39 +31936,13 @@ :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])} var global_data=runtime.caml_get_global_data(), - cst_Cannot_convert_heterogenou= - caml_string_of_jsbytes("Cannot convert heterogenous array to biniou"), - cst_Cannot_convert_big_int_to_= - caml_string_of_jsbytes("Cannot convert big int to biniou"), - cst_Cannot_convert_hashed_fiel= - caml_string_of_jsbytes("Cannot convert hashed field name to JSON"), - cst_Cannot_convert_uvint_to_JS= - caml_string_of_jsbytes("Cannot convert uvint to JSON"), - cst_Cannot_convert_int8_to_JSO= - caml_string_of_jsbytes("Cannot convert int8 to JSON"), - cst_Cannot_convert_hashed_vari= - caml_string_of_jsbytes("Cannot convert hashed variant name to JSON"), - cst_Cannot_convert_num_variant= - caml_string_of_jsbytes("Cannot convert num_variant to JSON"), - cst_Cannot_convert_shared_node= - caml_string_of_jsbytes("Cannot convert shared node to JSON"), - cst_Cannot_convert_int64_to_JS= - caml_string_of_jsbytes("Cannot convert int64 to JSON"), - cst_Cannot_convert_int32_to_JS= - caml_string_of_jsbytes("Cannot convert int32 to JSON"), - cst_Cannot_convert_int16_to_JS= - caml_string_of_jsbytes("Cannot convert int16 to JSON"), - cst_Malformed_biniou_table= - caml_string_of_jsbytes("Malformed biniou table"), - cst_Cannot_convert_hashed_fiel$0= - caml_string_of_jsbytes("Cannot convert hashed field name to JSON"), cst_Null=caml_string_of_jsbytes("`Null"), cst_Some=caml_string_of_jsbytes("(Some "), - cst$1=caml_string_of_jsbytes(")"), + cst$10=caml_string_of_jsbytes(")"), cst_None=caml_string_of_jsbytes("None"), cst_Null$2=caml_string_of_jsbytes("`Null"), cst_Some$1=caml_string_of_jsbytes("(Some "), - cst$33=caml_string_of_jsbytes(")"), + cst$77=caml_string_of_jsbytes(")"), cst_None$1=caml_string_of_jsbytes("None"), cst_Unexpected_end_of_input$92= caml_string_of_jsbytes("Unexpected end of input"), @@ -34079,9 +32021,9 @@ caml_string_of_jsbytes("Expected int64 but found"), cst_Unexpected_end_of_input$107= caml_string_of_jsbytes("Unexpected end of input"), - cst_Infinity$21=caml_string_of_jsbytes("-Infinity"), - cst_Infinity$22=caml_string_of_jsbytes("Infinity"), - cst_NaN$10=caml_string_of_jsbytes("NaN"), + cst_Infinity$15=caml_string_of_jsbytes("-Infinity"), + cst_Infinity$16=caml_string_of_jsbytes("Infinity"), + cst_NaN$7=caml_string_of_jsbytes("NaN"), cst_Expected_a_number_but_foun$1= caml_string_of_jsbytes ("Expected a number but found a string that doesn't even represent a number"), @@ -34184,7 +32126,7 @@ caml_string_of_jsbytes("Expected string or identifier but found"), cst_Unexpected_end_of_input$130= caml_string_of_jsbytes("Unexpected end of input"), - cst$34=caml_string_of_jsbytes("/*"), + cst$78=caml_string_of_jsbytes("/*"), cst_Unexpected_end_of_input$131= caml_string_of_jsbytes("Unexpected end of input"), cst_Invalid_token$14=caml_string_of_jsbytes("Invalid token"), @@ -34200,7 +32142,7 @@ caml_string_of_jsbytes("Expected string or identifier but found"), cst_Unexpected_end_of_input$134= caml_string_of_jsbytes("Unexpected end of input"), - cst$35=caml_string_of_jsbytes("/*"), + cst$79=caml_string_of_jsbytes("/*"), cst_Expected_or_but_found$42= caml_string_of_jsbytes("Expected ',' or '}' but found"), cst_Unexpected_end_of_input$135= @@ -34221,7 +32163,7 @@ caml_string_of_jsbytes("Expected '>' but found"), cst_Unexpected_end_of_input$139= caml_string_of_jsbytes("Unexpected end of input"), - cst$36=caml_string_of_jsbytes("*/"), + cst$80=caml_string_of_jsbytes("*/"), cst_Unterminated_comment$4=caml_string_of_jsbytes("Unterminated comment"), stream$1=[0,1], cst_Blank_input_data$4=caml_string_of_jsbytes("Blank input data"), @@ -34230,22 +32172,37 @@ caml_string_of_jsbytes("Junk after end of JSON value:"), cst_Int8_overflow$1=caml_string_of_jsbytes("Int8 overflow"), cst_Line$1=caml_string_of_jsbytes("Line"), - cst_Root_is_not_an_object_or_a$3= - caml_string_of_jsbytes("Root is not an object or array"), - cst_true$3=caml_string_of_jsbytes("true"), - cst_false$3=caml_string_of_jsbytes("false"), - cst_null$5=caml_string_of_jsbytes("null"), + cst_null$8=caml_string_of_jsbytes("null"), + cst$70=caml_string_of_jsbytes(","), + cst$71=caml_string_of_jsbytes("{}"), + cst$72=caml_string_of_jsbytes(","), + cst$73=caml_string_of_jsbytes(","), + cst$74=caml_string_of_jsbytes("[]"), + cst$75=caml_string_of_jsbytes("()"), + cst$76=caml_string_of_jsbytes(","), + cst$69=caml_string_of_jsbytes("\n"), + cst$68=caml_string_of_jsbytes("\n"), + cst$67=caml_string_of_jsbytes("\n"), + cst$66=caml_string_of_jsbytes("\n"), + cst$65=caml_string_of_jsbytes("\n"), + cst$64=caml_string_of_jsbytes(""), + cst$63=caml_string_of_jsbytes(""), + cst$62=caml_string_of_jsbytes(""), + cst$61=caml_string_of_jsbytes(""), + cst_true$2=caml_string_of_jsbytes("true"), + cst_false$2=caml_string_of_jsbytes("false"), + cst_null$7=caml_string_of_jsbytes("null"), cst_b$2=caml_string_of_jsbytes("\\b"), cst_t$2=caml_string_of_jsbytes("\\t"), cst_n$2=caml_string_of_jsbytes("\\n"), cst_f$2=caml_string_of_jsbytes("\\f"), cst_r$2=caml_string_of_jsbytes("\\r"), - cst$32=caml_string_of_jsbytes('\\"'), - cst$31=caml_string_of_jsbytes("\\\\"), + cst$60=caml_string_of_jsbytes('\\"'), + cst$59=caml_string_of_jsbytes("\\\\"), cst_u00$2=caml_string_of_jsbytes("\\u00"), cst_Null$1=caml_string_of_jsbytes("`Null"), cst_Some$0=caml_string_of_jsbytes("(Some "), - cst$27=caml_string_of_jsbytes(")"), + cst$55=caml_string_of_jsbytes(")"), cst_None$0=caml_string_of_jsbytes("None"), cst_Unexpected_end_of_input$44= caml_string_of_jsbytes("Unexpected end of input"), @@ -34324,9 +32281,9 @@ caml_string_of_jsbytes("Expected int64 but found"), cst_Unexpected_end_of_input$59= caml_string_of_jsbytes("Unexpected end of input"), - cst_Infinity$19=caml_string_of_jsbytes("-Infinity"), - cst_Infinity$20=caml_string_of_jsbytes("Infinity"), - cst_NaN$9=caml_string_of_jsbytes("NaN"), + cst_Infinity$13=caml_string_of_jsbytes("-Infinity"), + cst_Infinity$14=caml_string_of_jsbytes("Infinity"), + cst_NaN$6=caml_string_of_jsbytes("NaN"), cst_Expected_a_number_but_foun$0= caml_string_of_jsbytes ("Expected a number but found a string that doesn't even represent a number"), @@ -34429,7 +32386,7 @@ caml_string_of_jsbytes("Expected string or identifier but found"), cst_Unexpected_end_of_input$82= caml_string_of_jsbytes("Unexpected end of input"), - cst$28=caml_string_of_jsbytes("/*"), + cst$56=caml_string_of_jsbytes("/*"), cst_Unexpected_end_of_input$83= caml_string_of_jsbytes("Unexpected end of input"), cst_Invalid_token$11=caml_string_of_jsbytes("Invalid token"), @@ -34445,7 +32402,7 @@ caml_string_of_jsbytes("Expected string or identifier but found"), cst_Unexpected_end_of_input$86= caml_string_of_jsbytes("Unexpected end of input"), - cst$29=caml_string_of_jsbytes("/*"), + cst$57=caml_string_of_jsbytes("/*"), cst_Expected_or_but_found$26= caml_string_of_jsbytes("Expected ',' or '}' but found"), cst_Unexpected_end_of_input$87= @@ -34466,7 +32423,7 @@ caml_string_of_jsbytes("Expected '>' but found"), cst_Unexpected_end_of_input$91= caml_string_of_jsbytes("Unexpected end of input"), - cst$30=caml_string_of_jsbytes("*/"), + cst$58=caml_string_of_jsbytes("*/"), cst_Unterminated_comment$2=caml_string_of_jsbytes("Unterminated comment"), cst_Expected_two_objects_check$0= caml_string_of_jsbytes("Expected two objects, check inputs"), @@ -34497,7 +32454,7 @@ cst_Can_t_get_index$0=caml_string_of_jsbytes("Can't get index "), cst_of_non_object_type$0=caml_string_of_jsbytes("' of non-object type "), cst_Can_t_get_member$0=caml_string_of_jsbytes("Can't get member '"), - cst_null$4=caml_string_of_jsbytes("null"), + cst_null$6=caml_string_of_jsbytes("null"), cst_object$0=caml_string_of_jsbytes("object"), cst_array$0=caml_string_of_jsbytes("array"), cst_bool$0=caml_string_of_jsbytes("bool"), @@ -34514,50 +32471,54 @@ caml_string_of_jsbytes("Junk after end of JSON value:"), cst_Int8_overflow$0=caml_string_of_jsbytes("Int8 overflow"), cst_Line$0=caml_string_of_jsbytes("Line"), - cst_Root_is_not_an_object_or_a$2= - caml_string_of_jsbytes("Root is not an object or array"), - cst_NaN_value_not_allowed_in_s$7= - caml_string_of_jsbytes("NaN value not allowed in standard JSON"), - cst_Infinity_value_not_allowed$15= - caml_string_of_jsbytes("Infinity value not allowed in standard JSON"), - cst_Infinity_value_not_allowed$16= - caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"), - cst_NaN_value_not_allowed_in_s$6= + cst_null$5=caml_string_of_jsbytes("null"), + cst$50=caml_string_of_jsbytes(","), + cst$51=caml_string_of_jsbytes("{}"), + cst$52=caml_string_of_jsbytes(","), + cst$53=caml_string_of_jsbytes(","), + cst$54=caml_string_of_jsbytes("[]"), + cst$48=caml_string_of_jsbytes("()"), + cst$49=caml_string_of_jsbytes(","), + cst$47=caml_string_of_jsbytes("\n"), + cst$46=caml_string_of_jsbytes("\n"), + cst$45=caml_string_of_jsbytes("\n"), + cst$44=caml_string_of_jsbytes("\n"), + cst$43=caml_string_of_jsbytes("\n"), + cst$42=caml_string_of_jsbytes(""), + cst$41=caml_string_of_jsbytes(""), + cst$40=caml_string_of_jsbytes(""), + cst$39=caml_string_of_jsbytes(""), + cst_NaN_value_not_allowed_in_s$4= caml_string_of_jsbytes("NaN value not allowed in standard JSON"), - cst_0$13=caml_string_of_jsbytes(".0"), - cst_Infinity_value_not_allowed$13= + cst_Infinity_value_not_allowed$9= caml_string_of_jsbytes("Infinity value not allowed in standard JSON"), - cst_Infinity_value_not_allowed$14= + cst_Infinity_value_not_allowed$10= caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"), - cst_NaN_value_not_allowed_in_s$5= + cst_NaN_value_not_allowed_in_s$3= caml_string_of_jsbytes("NaN value not allowed in standard JSON"), - cst_0$12=caml_string_of_jsbytes(".0"), - cst_Infinity_value_not_allowed$11= + cst_0$7=caml_string_of_jsbytes(".0"), + cst_Infinity_value_not_allowed$7= caml_string_of_jsbytes("Infinity value not allowed in standard JSON"), - cst_Infinity_value_not_allowed$12= + cst_Infinity_value_not_allowed$8= caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"), - cst_NaN$8=caml_string_of_jsbytes("NaN"), - cst_Infinity$17=caml_string_of_jsbytes("Infinity"), - cst_Infinity$18=caml_string_of_jsbytes("-Infinity"), - cst_0$11=caml_string_of_jsbytes(".0"), - cst_NaN$7=caml_string_of_jsbytes("NaN"), - cst_0$10=caml_string_of_jsbytes(".0"), - cst_Infinity$15=caml_string_of_jsbytes("Infinity"), - cst_Infinity$16=caml_string_of_jsbytes("-Infinity"), - cst_NaN$6=caml_string_of_jsbytes("NaN"), - cst_0$9=caml_string_of_jsbytes(".0"), - cst_Infinity$13=caml_string_of_jsbytes("Infinity"), - cst_Infinity$14=caml_string_of_jsbytes("-Infinity"), - cst_true$2=caml_string_of_jsbytes("true"), - cst_false$2=caml_string_of_jsbytes("false"), - cst_null$3=caml_string_of_jsbytes("null"), + cst_NaN$5=caml_string_of_jsbytes("NaN"), + cst_Infinity$11=caml_string_of_jsbytes("Infinity"), + cst_Infinity$12=caml_string_of_jsbytes("-Infinity"), + cst_0$6=caml_string_of_jsbytes(".0"), + cst_NaN$4=caml_string_of_jsbytes("NaN"), + cst_0$5=caml_string_of_jsbytes(".0"), + cst_Infinity$9=caml_string_of_jsbytes("Infinity"), + cst_Infinity$10=caml_string_of_jsbytes("-Infinity"), + cst_true$1=caml_string_of_jsbytes("true"), + cst_false$1=caml_string_of_jsbytes("false"), + cst_null$4=caml_string_of_jsbytes("null"), cst_b$1=caml_string_of_jsbytes("\\b"), cst_t$1=caml_string_of_jsbytes("\\t"), cst_n$1=caml_string_of_jsbytes("\\n"), cst_f$1=caml_string_of_jsbytes("\\f"), cst_r$1=caml_string_of_jsbytes("\\r"), - cst$26=caml_string_of_jsbytes('\\"'), - cst$25=caml_string_of_jsbytes("\\\\"), + cst$38=caml_string_of_jsbytes('\\"'), + cst$37=caml_string_of_jsbytes("\\\\"), cst_u00$1=caml_string_of_jsbytes("\\u00"), cst_Null$0=caml_string_of_jsbytes("`Null"), cst_Invalid_token=caml_string_of_jsbytes("Invalid token"), @@ -34636,9 +32597,9 @@ caml_string_of_jsbytes("Expected int64 but found"), cst_Unexpected_end_of_input$14= caml_string_of_jsbytes("Unexpected end of input"), - cst_Infinity$11=caml_string_of_jsbytes("-Infinity"), - cst_Infinity$12=caml_string_of_jsbytes("Infinity"), - cst_NaN$5=caml_string_of_jsbytes("NaN"), + cst_Infinity$7=caml_string_of_jsbytes("-Infinity"), + cst_Infinity$8=caml_string_of_jsbytes("Infinity"), + cst_NaN$3=caml_string_of_jsbytes("NaN"), cst_Expected_a_number_but_foun= caml_string_of_jsbytes ("Expected a number but found a string that doesn't even represent a number"), @@ -34739,7 +32700,7 @@ caml_string_of_jsbytes("Unexpected end of input"), cst_Invalid_token$6=caml_string_of_jsbytes("Invalid token"), cst_Invalid_token$7=caml_string_of_jsbytes("Invalid token"), - cst$22=caml_string_of_jsbytes("/*"), + cst$34=caml_string_of_jsbytes("/*"), cst_Unexpected_end_of_input$38= caml_string_of_jsbytes("Unexpected end of input"), cst_Invalid_token$8=caml_string_of_jsbytes("Invalid token"), @@ -34751,7 +32712,7 @@ caml_string_of_jsbytes("Expected string or identifier but found"), cst_Unexpected_end_of_input$40= caml_string_of_jsbytes("Unexpected end of input"), - cst$23=caml_string_of_jsbytes("/*"), + cst$35=caml_string_of_jsbytes("/*"), cst_Expected_or_but_found$11= caml_string_of_jsbytes("Expected ',' or '}' but found"), cst_Unexpected_end_of_input$41= @@ -34764,7 +32725,7 @@ caml_string_of_jsbytes("Expected ':' but found"), cst_Unexpected_end_of_input$43= caml_string_of_jsbytes("Unexpected end of input"), - cst$24=caml_string_of_jsbytes("*/"), + cst$36=caml_string_of_jsbytes("*/"), cst_Unterminated_comment$0=caml_string_of_jsbytes("Unterminated comment"), cst_Expected_two_objects_check= caml_string_of_jsbytes("Expected two objects, check inputs"), @@ -34795,7 +32756,7 @@ cst_Can_t_get_index=caml_string_of_jsbytes("Can't get index "), cst_of_non_object_type=caml_string_of_jsbytes("' of non-object type "), cst_Can_t_get_member=caml_string_of_jsbytes("Can't get member '"), - cst_null$2=caml_string_of_jsbytes("null"), + cst_null$3=caml_string_of_jsbytes("null"), cst_object=caml_string_of_jsbytes("object"), cst_array=caml_string_of_jsbytes("array"), cst_bool=caml_string_of_jsbytes("bool"), @@ -34814,105 +32775,87 @@ cst_Int_overflow$0=caml_string_of_jsbytes("Int overflow"), cst_Int_overflow=caml_string_of_jsbytes("Int overflow"), cst_Line=caml_string_of_jsbytes("Line"), - cst_Root_is_not_an_object_or_a$1= - caml_string_of_jsbytes("Root is not an object or array"), - cst_NaN_value_not_allowed_in_s$4= - caml_string_of_jsbytes("NaN value not allowed in standard JSON"), - cst_Infinity_value_not_allowed$9= - caml_string_of_jsbytes("Infinity value not allowed in standard JSON"), - cst_Infinity_value_not_allowed$10= - caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"), - cst_NaN_value_not_allowed_in_s$3= - caml_string_of_jsbytes("NaN value not allowed in standard JSON"), - cst_0$8=caml_string_of_jsbytes(".0"), - cst_Infinity_value_not_allowed$7= - caml_string_of_jsbytes("Infinity value not allowed in standard JSON"), - cst_Infinity_value_not_allowed$8= - caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"), + cst_null$2=caml_string_of_jsbytes("null"), + cst$29=caml_string_of_jsbytes(","), + cst$30=caml_string_of_jsbytes("{}"), + cst$31=caml_string_of_jsbytes(","), + cst$32=caml_string_of_jsbytes(","), + cst$33=caml_string_of_jsbytes("[]"), + cst$28=caml_string_of_jsbytes("\n"), + cst$27=caml_string_of_jsbytes("\n"), + cst$26=caml_string_of_jsbytes("\n"), + cst$25=caml_string_of_jsbytes("\n"), + cst$24=caml_string_of_jsbytes("\n"), + cst$23=caml_string_of_jsbytes(""), + cst$22=caml_string_of_jsbytes(""), + cst$21=caml_string_of_jsbytes(""), + cst$20=caml_string_of_jsbytes(""), cst_NaN_value_not_allowed_in_s$2= caml_string_of_jsbytes("NaN value not allowed in standard JSON"), - cst_0$7=caml_string_of_jsbytes(".0"), cst_Infinity_value_not_allowed$5= caml_string_of_jsbytes("Infinity value not allowed in standard JSON"), cst_Infinity_value_not_allowed$6= caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"), - cst_NaN$4=caml_string_of_jsbytes("NaN"), - cst_Infinity$9=caml_string_of_jsbytes("Infinity"), - cst_Infinity$10=caml_string_of_jsbytes("-Infinity"), - cst_0$6=caml_string_of_jsbytes(".0"), - cst_NaN$3=caml_string_of_jsbytes("NaN"), - cst_0$5=caml_string_of_jsbytes(".0"), - cst_Infinity$7=caml_string_of_jsbytes("Infinity"), - cst_Infinity$8=caml_string_of_jsbytes("-Infinity"), - cst_NaN$2=caml_string_of_jsbytes("NaN"), + cst_NaN_value_not_allowed_in_s$1= + caml_string_of_jsbytes("NaN value not allowed in standard JSON"), cst_0$4=caml_string_of_jsbytes(".0"), + cst_Infinity_value_not_allowed$3= + caml_string_of_jsbytes("Infinity value not allowed in standard JSON"), + cst_Infinity_value_not_allowed$4= + caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"), + cst_NaN$2=caml_string_of_jsbytes("NaN"), cst_Infinity$5=caml_string_of_jsbytes("Infinity"), cst_Infinity$6=caml_string_of_jsbytes("-Infinity"), - cst_true$1=caml_string_of_jsbytes("true"), - cst_false$1=caml_string_of_jsbytes("false"), + cst_0$3=caml_string_of_jsbytes(".0"), + cst_NaN$1=caml_string_of_jsbytes("NaN"), + cst_0$2=caml_string_of_jsbytes(".0"), + cst_Infinity$3=caml_string_of_jsbytes("Infinity"), + cst_Infinity$4=caml_string_of_jsbytes("-Infinity"), + cst_true$0=caml_string_of_jsbytes("true"), + cst_false$0=caml_string_of_jsbytes("false"), cst_null$1=caml_string_of_jsbytes("null"), cst_b$0=caml_string_of_jsbytes("\\b"), cst_t$0=caml_string_of_jsbytes("\\t"), cst_n$0=caml_string_of_jsbytes("\\n"), cst_f$0=caml_string_of_jsbytes("\\f"), cst_r$0=caml_string_of_jsbytes("\\r"), - cst$21=caml_string_of_jsbytes('\\"'), - cst$20=caml_string_of_jsbytes("\\\\"), + cst$19=caml_string_of_jsbytes('\\"'), + cst$18=caml_string_of_jsbytes("\\\\"), cst_u00$0=caml_string_of_jsbytes("\\u00"), cst_null$0=caml_string_of_jsbytes("null"), - cst$2=caml_string_of_jsbytes("}"), - cst$3=caml_string_of_jsbytes(","), - cst$4=caml_string_of_jsbytes("{"), - cst$5=caml_string_of_jsbytes("{}"), - cst$6=caml_string_of_jsbytes("]"), - cst$7=caml_string_of_jsbytes(","), - cst$8=caml_string_of_jsbytes("["), - cst$9=caml_string_of_jsbytes("[]"), - cst$10=caml_string_of_jsbytes("()"), - cst$11=caml_string_of_jsbytes(")"), - cst$12=caml_string_of_jsbytes(","), - cst$13=caml_string_of_jsbytes("("), - cst_true$0=caml_string_of_jsbytes("true"), - cst_false$0=caml_string_of_jsbytes("false"), - cst$14=caml_string_of_jsbytes(":"), - cst$15=caml_string_of_jsbytes("<"), - cst$16=caml_string_of_jsbytes(">"), - cst$17=caml_string_of_jsbytes(""), - cst$18=caml_string_of_jsbytes(">"), - cst$19=caml_string_of_jsbytes("<"), - cst_Root_is_not_an_object_or_a$0= - caml_string_of_jsbytes - ("Root is not an object or array as requested by the JSON standard"), - cst_Root_is_not_an_object_or_a= - caml_string_of_jsbytes("Root is not an object or array"), - cst_NaN_value_not_allowed_in_s$1= - caml_string_of_jsbytes("NaN value not allowed in standard JSON"), - cst_Infinity_value_not_allowed$3= - caml_string_of_jsbytes("Infinity value not allowed in standard JSON"), - cst_Infinity_value_not_allowed$4= - caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"), + cst$11=caml_string_of_jsbytes(","), + cst$12=caml_string_of_jsbytes("{}"), + cst$13=caml_string_of_jsbytes(","), + cst$14=caml_string_of_jsbytes(","), + cst$15=caml_string_of_jsbytes("[]"), + cst$16=caml_string_of_jsbytes("()"), + cst$17=caml_string_of_jsbytes(","), + cst$9=caml_string_of_jsbytes("\n"), + cst$8=caml_string_of_jsbytes("\n"), + cst$7=caml_string_of_jsbytes("\n"), + cst$6=caml_string_of_jsbytes("\n"), + cst$5=caml_string_of_jsbytes("\n"), + cst$4=caml_string_of_jsbytes(""), + cst$3=caml_string_of_jsbytes(""), + cst$2=caml_string_of_jsbytes(""), + cst$1=caml_string_of_jsbytes(""), cst_NaN_value_not_allowed_in_s$0= caml_string_of_jsbytes("NaN value not allowed in standard JSON"), - cst_0$3=caml_string_of_jsbytes(".0"), cst_Infinity_value_not_allowed$1= caml_string_of_jsbytes("Infinity value not allowed in standard JSON"), cst_Infinity_value_not_allowed$2= caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"), cst_NaN_value_not_allowed_in_s= caml_string_of_jsbytes("NaN value not allowed in standard JSON"), - cst_0$2=caml_string_of_jsbytes(".0"), + cst_0$1=caml_string_of_jsbytes(".0"), cst_Infinity_value_not_allowed= caml_string_of_jsbytes("Infinity value not allowed in standard JSON"), cst_Infinity_value_not_allowed$0= caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"), - cst_NaN$1=caml_string_of_jsbytes("NaN"), - cst_Infinity$3=caml_string_of_jsbytes("Infinity"), - cst_Infinity$4=caml_string_of_jsbytes("-Infinity"), - cst_0$1=caml_string_of_jsbytes(".0"), cst_NaN$0=caml_string_of_jsbytes("NaN"), - cst_0$0=caml_string_of_jsbytes(".0"), cst_Infinity$1=caml_string_of_jsbytes("Infinity"), cst_Infinity$2=caml_string_of_jsbytes("-Infinity"), + cst_0$0=caml_string_of_jsbytes(".0"), cst_NaN=caml_string_of_jsbytes("NaN"), cst_0=caml_string_of_jsbytes(".0"), cst_Infinity=caml_string_of_jsbytes("Infinity"), @@ -34928,7 +32871,7 @@ cst$0=caml_string_of_jsbytes('\\"'), cst=caml_string_of_jsbytes("\\\\"), cst_u00=caml_string_of_jsbytes("\\u00"), - version=caml_string_of_jsbytes("1.7.0"), + version=caml_string_of_jsbytes("2.0.2"), cst_Yojson_Json_error=caml_string_of_jsbytes("Yojson.Json_error"), cst_Yojson_End_of_array=caml_string_of_jsbytes("Yojson.End_of_array"), cst_Yojson_End_of_object=caml_string_of_jsbytes("Yojson.End_of_object"), @@ -35005,46 +32948,41 @@ caml_string_of_jsbytes(""), caml_string_of_jsbytes("")], cst_Yojson_Raw_Finally=caml_string_of_jsbytes("Yojson.Raw.Finally"), - Bi_io=global_data.Bi_io, - Stdlib_Array=global_data.Stdlib__Array, Stdlib=global_data.Stdlib, - Bi_outbuf=global_data.Bi_outbuf, + Stdlib_Buffer=global_data.Stdlib__Buffer, Stdlib_String=global_data.Stdlib__String, Stdlib_List=global_data.Stdlib__List, Stdlib_Format=global_data.Stdlib__Format, Assert_failure=global_data.Assert_failure, Stdlib_Bytes=global_data.Stdlib__Bytes, - Stdlib_Stream=global_data.Stdlib__Stream, Stdlib_Printf=global_data.Stdlib__Printf, - Easy_format=global_data.Easy_format, + Stdlib_Seq=global_data.Stdlib__Seq, Stdlib_Char=global_data.Stdlib__Char, Stdlib_Lexing=global_data.Stdlib__Lexing, - _a_=[0,951901561,0], - _b_=[0,848054398,0], - _c_=[0,848054398,0], - ___= + Json_error=[248,cst_Yojson_Json_error,caml_fresh_oo_id(0)], + _V_= [0, [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(";@ ")], - _S_= + _N_= [0, [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(";@ ")], - _G_= + _B_= [0, [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(";@ ")], - _H_= + _C_= [0, [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]], caml_string_of_jsbytes("(@[")], - _I_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _J_= + _D_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _E_= [0, [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(",@ ")], - _K_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _E_= + _F_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _z_= [0, [11, caml_string_of_jsbytes("`Assoc ("), @@ -35055,7 +32993,7 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Assoc (@[")], - _F_= + _A_= [0, [18, [1, @@ -35064,12 +33002,12 @@ caml_string_of_jsbytes("<2>")]], [12,91,0]], caml_string_of_jsbytes("@[<2>[")], - _L_= + _G_= [0, [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]], caml_string_of_jsbytes("@,]@]")], - _M_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _N_= + _H_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _I_= [0, [11, caml_string_of_jsbytes("`Floatlit ("), @@ -35080,9 +33018,9 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Floatlit (@[")], - _O_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _P_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _Q_= + _J_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _K_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _L_= [0, [11, caml_string_of_jsbytes("`List ("), @@ -35093,7 +33031,7 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`List (@[")], - _R_= + _M_= [0, [18, [1, @@ -35102,12 +33040,12 @@ caml_string_of_jsbytes("<2>")]], [12,91,0]], caml_string_of_jsbytes("@[<2>[")], - _T_= + _O_= [0, [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]], caml_string_of_jsbytes("@,]@]")], - _U_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _V_= + _P_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _Q_= [0, [11, caml_string_of_jsbytes("`Bool ("), @@ -35118,9 +33056,9 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Bool (@[")], - _W_=[0,[9,0,0],caml_string_of_jsbytes("%B")], - _X_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _Y_= + _R_=[0,[9,0,0],caml_string_of_jsbytes("%B")], + _S_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _T_= [0, [11, caml_string_of_jsbytes("`Tuple ("), @@ -35131,7 +33069,7 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Tuple (@[")], - _Z_= + _U_= [0, [18, [1, @@ -35140,12 +33078,12 @@ caml_string_of_jsbytes("<2>")]], [12,91,0]], caml_string_of_jsbytes("@[<2>[")], - _$_= + _W_= [0, [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]], caml_string_of_jsbytes("@,]@]")], - _aa_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _ab_= + _X_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _Y_= [0, [11, caml_string_of_jsbytes("`Variant ("), @@ -35156,18 +33094,18 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Variant (@[")], - _ac_= + _Z_= [0, [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]], caml_string_of_jsbytes("(@[")], - _ad_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _ae_= + ___=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _$_= [0, [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(",@ ")], - _af_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _ag_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _ak_= + _aa_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _ab_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _af_= [0, [11, caml_string_of_jsbytes("`Float ("), @@ -35178,9 +33116,9 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Float (@[")], - _al_=[0,[8,[0,0,5],0,0,0],caml_string_of_jsbytes("%F")], - _am_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _an_= + _ag_=[0,[8,[0,0,5],0,0,0],caml_string_of_jsbytes("%F")], + _ah_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _ai_= [0, [11, caml_string_of_jsbytes("`Int ("), @@ -35191,9 +33129,9 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Int (@[")], - _ao_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")], - _ap_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _aq_= + _aj_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")], + _ak_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _al_= [0, [11, caml_string_of_jsbytes("`Stringlit ("), @@ -35204,9 +33142,9 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Stringlit (@[")], - _ar_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _as_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _at_= + _am_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _an_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _ao_= [0, [11, caml_string_of_jsbytes("`String ("), @@ -35217,9 +33155,9 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`String (@[")], - _au_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _av_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _ah_= + _ap_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _aq_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _ac_= [0, [11, caml_string_of_jsbytes("`Intlit ("), @@ -35230,31 +33168,31 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Intlit (@[")], - _ai_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _aj_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _de_= + _ad_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _ae_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _d2_= [0, [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(";@ ")], - _c8_= + _dU_= [0, [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(";@ ")], - _cW_= + _dI_= [0, [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(";@ ")], - _cX_= + _dJ_= [0, [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]], caml_string_of_jsbytes("(@[")], - _cY_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _cZ_= + _dK_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _dL_= [0, [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(",@ ")], - _c0_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _cU_= + _dM_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _dG_= [0, [11, caml_string_of_jsbytes("`Assoc ("), @@ -35265,7 +33203,7 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Assoc (@[")], - _cV_= + _dH_= [0, [18, [1, @@ -35274,12 +33212,12 @@ caml_string_of_jsbytes("<2>")]], [12,91,0]], caml_string_of_jsbytes("@[<2>[")], - _c1_= + _dN_= [0, [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]], caml_string_of_jsbytes("@,]@]")], - _c2_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _c3_= + _dO_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _dP_= [0, [11, caml_string_of_jsbytes("`Floatlit ("), @@ -35290,9 +33228,9 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Floatlit (@[")], - _c4_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _c5_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _c6_= + _dQ_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _dR_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _dS_= [0, [11, caml_string_of_jsbytes("`List ("), @@ -35303,7 +33241,7 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`List (@[")], - _c7_= + _dT_= [0, [18, [1, @@ -35312,12 +33250,12 @@ caml_string_of_jsbytes("<2>")]], [12,91,0]], caml_string_of_jsbytes("@[<2>[")], - _c9_= + _dV_= [0, [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]], caml_string_of_jsbytes("@,]@]")], - _c__=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _c$_= + _dW_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _dX_= [0, [11, caml_string_of_jsbytes("`Bool ("), @@ -35328,9 +33266,9 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Bool (@[")], - _da_=[0,[9,0,0],caml_string_of_jsbytes("%B")], - _db_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _dc_= + _dY_=[0,[9,0,0],caml_string_of_jsbytes("%B")], + _dZ_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _d0_= [0, [11, caml_string_of_jsbytes("`Tuple ("), @@ -35341,7 +33279,7 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Tuple (@[")], - _dd_= + _d1_= [0, [18, [1, @@ -35350,12 +33288,12 @@ caml_string_of_jsbytes("<2>")]], [12,91,0]], caml_string_of_jsbytes("@[<2>[")], - _df_= + _d3_= [0, [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]], caml_string_of_jsbytes("@,]@]")], - _dg_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _dh_= + _d4_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _d5_= [0, [11, caml_string_of_jsbytes("`Variant ("), @@ -35366,18 +33304,18 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Variant (@[")], - _di_= + _d6_= [0, [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]], caml_string_of_jsbytes("(@[")], - _dj_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _dk_= + _d7_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _d8_= [0, [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(",@ ")], - _dl_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _dm_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _dn_= + _d9_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _d__=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _d$_= [0, [11, caml_string_of_jsbytes("`Stringlit ("), @@ -35388,9 +33326,9 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Stringlit (@[")], - _do_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _dp_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _dq_= + _ea_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _eb_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _ec_= [0, [11, caml_string_of_jsbytes("`Intlit ("), @@ -35401,37 +33339,37 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Intlit (@[")], - _dr_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _ds_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _dE_=[0,737456202,1], - _dF_=[0,737456202,0], - _dG_=[0,928231259,caml_string_of_jsbytes("NaN")], - _dH_=[0,928231259,caml_string_of_jsbytes("Infinity")], - _dI_=[0,928231259,caml_string_of_jsbytes("-Infinity")], - _dB_= + _ed_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _ee_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _eq_=[0,737456202,1], + _er_=[0,737456202,0], + _es_=[0,928231259,caml_string_of_jsbytes("NaN")], + _et_=[0,928231259,caml_string_of_jsbytes("Infinity")], + _eu_=[0,928231259,caml_string_of_jsbytes("-Infinity")], + _en_= [0, [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[2,0,[12,39,0]]]]], caml_string_of_jsbytes("%s '%s%s'")], - _dA_=[0,caml_string_of_jsbytes("lib/read.mll"),72,32], - _dz_= + _em_=[0,caml_string_of_jsbytes("lib/read.mll"),72,32], + _el_= [0, [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[12,39,0]]]], caml_string_of_jsbytes("%s '%s'")], - _dv_= + _eh_= [0, [11, caml_string_of_jsbytes("File "), [2,0,[11,caml_string_of_jsbytes(", line"),0]]], caml_string_of_jsbytes("File %s, line")], - _dw_= + _ei_= [0, [11,caml_string_of_jsbytes("byte "),[4,3,0,0,0]], caml_string_of_jsbytes("byte %i")], - _dy_= + _ek_= [0, [11,caml_string_of_jsbytes("bytes "),[4,3,0,0,[12,45,[4,3,0,0,0]]]], caml_string_of_jsbytes("bytes %i-%i")], - _dx_= + _ej_= [0, [2, 0, @@ -35445,9 +33383,119 @@ caml_string_of_jsbytes(", "), [2,0,[11,caml_string_of_jsbytes(":\n"),[2,0,0]]]]]]], caml_string_of_jsbytes("%s %i, %s:\n%s")], - _du_=[0,caml_string_of_jsbytes("lib/read.mll"),44,13], - _dt_=[0,[15,0],caml_string_of_jsbytes("%a")], - _cR_= + _eg_=[0,caml_string_of_jsbytes("lib/read.mll"),44,13], + _ef_=[0,[15,0],caml_string_of_jsbytes("%a")], + _dq_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0], + caml_string_of_jsbytes("@[")], + _dr_= + [0, + [12, + 123, + [17, + [0,caml_string_of_jsbytes("@;<1 0>"),1,0], + [15,[17,[0,caml_string_of_jsbytes("@;<1 -2>"),1,-2],[12,125,0]]]]], + caml_string_of_jsbytes("{@;<1 0>%a@;<1 -2>}")], + _ds_=[0,[17,0,0],caml_string_of_jsbytes("@]")], + _dt_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0], + caml_string_of_jsbytes("@[")], + _du_= + [0, + [12, + 91, + [17, + [0,caml_string_of_jsbytes("@;<1 0>"),1,0], + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [15, + [17,0,[17,[0,caml_string_of_jsbytes("@;<1 -2>"),1,-2],[12,93,0]]]]]]], + caml_string_of_jsbytes("[@;<1 0>@[%a@]@;<1 -2>]")], + _dw_= + [0, + [12, + 91, + [17, + [0,caml_string_of_jsbytes("@;<1 0>"),1,0], + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [15, + [17,0,[17,[0,caml_string_of_jsbytes("@;<1 -2>"),1,-2],[12,93,0]]]]]]], + caml_string_of_jsbytes("[@;<1 0>@[%a@]@;<1 -2>]")], + _dv_=[0,[17,0,0],caml_string_of_jsbytes("@]")], + _dx_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0], + caml_string_of_jsbytes("@[")], + _dy_= + [0, + [12, + 40, + [17, + [0,caml_string_of_jsbytes("@,"),0,0], + [15,[17,[0,caml_string_of_jsbytes("@;<0 -2>"),0,-2],[12,41,0]]]]], + caml_string_of_jsbytes("(@,%a@;<0 -2>)")], + _dz_=[0,[17,0,0],caml_string_of_jsbytes("@]")], + _dA_= + [0, + [12, + 60, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [2,0,[11,caml_string_of_jsbytes(": "),[15,[17,0,[12,62,0]]]]]]], + caml_string_of_jsbytes("<@[%s: %a@]>")], + _dB_=[0,[12,60,[2,0,[12,62,0]]],caml_string_of_jsbytes("<%s>")], + _dC_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [2,0,[11,caml_string_of_jsbytes(": "),[15,[17,0,0]]]]], + caml_string_of_jsbytes("@[%s: %a@]")], + _dF_=[0,[15,[17,2,0]],caml_string_of_jsbytes("%a@?")], + _dE_=[0,[15,0],caml_string_of_jsbytes("%a")], + _dD_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [15,[17,0,0]]], + caml_string_of_jsbytes("@[%a@]")], + _dp_= + [0, + [2,0,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], + caml_string_of_jsbytes("%s@ ")], + _dm_= [0, [11, caml_string_of_jsbytes("src="), @@ -35461,29 +33509,29 @@ 0, [11,caml_string_of_jsbytes(" len="),[4,3,0,0,[12,10,[10,0]]]]]]]], caml_string_of_jsbytes("src=%S start=%i len=%i\n%!")], - _b4_= + _cz_= [0, [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(";@ ")], - _cg_= + _cN_= [0, [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(";@ ")], - _b9_= + _cE_= [0, [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(";@ ")], - _b__= + _cF_= [0, [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]], caml_string_of_jsbytes("(@[")], - _b$_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _ca_= + _cG_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _cH_= [0, [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(",@ ")], - _cb_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _b7_= + _cI_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _cC_= [0, [11, caml_string_of_jsbytes("`Assoc ("), @@ -35494,7 +33542,7 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Assoc (@[")], - _b8_= + _cD_= [0, [18, [1, @@ -35503,12 +33551,12 @@ caml_string_of_jsbytes("<2>")]], [12,91,0]], caml_string_of_jsbytes("@[<2>[")], - _cc_= + _cJ_= [0, [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]], caml_string_of_jsbytes("@,]@]")], - _cd_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _ce_= + _cK_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _cL_= [0, [11, caml_string_of_jsbytes("`List ("), @@ -35519,7 +33567,7 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`List (@[")], - _cf_= + _cM_= [0, [18, [1, @@ -35528,12 +33576,12 @@ caml_string_of_jsbytes("<2>")]], [12,91,0]], caml_string_of_jsbytes("@[<2>[")], - _ch_= + _cO_= [0, [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]], caml_string_of_jsbytes("@,]@]")], - _ci_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _cj_= + _cP_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _cQ_= [0, [11, caml_string_of_jsbytes("`Bool ("), @@ -35544,9 +33592,9 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Bool (@[")], - _ck_=[0,[9,0,0],caml_string_of_jsbytes("%B")], - _cl_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _cm_= + _cR_=[0,[9,0,0],caml_string_of_jsbytes("%B")], + _cS_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _cT_= [0, [11, caml_string_of_jsbytes("`Variant ("), @@ -35557,18 +33605,18 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Variant (@[")], - _cn_= + _cU_= [0, [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]], caml_string_of_jsbytes("(@[")], - _co_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _cp_= + _cV_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _cW_= [0, [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(",@ ")], - _cq_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _cr_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _b2_= + _cX_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _cY_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _cx_= [0, [11, caml_string_of_jsbytes("`Tuple ("), @@ -35579,7 +33627,7 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Tuple (@[")], - _b3_= + _cy_= [0, [18, [1, @@ -35588,12 +33636,12 @@ caml_string_of_jsbytes("<2>")]], [12,91,0]], caml_string_of_jsbytes("@[<2>[")], - _b5_= + _cA_= [0, [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]], caml_string_of_jsbytes("@,]@]")], - _b6_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _cs_= + _cB_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _cZ_= [0, [11, caml_string_of_jsbytes("`Float ("), @@ -35604,9 +33652,9 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Float (@[")], - _ct_=[0,[8,[0,0,5],0,0,0],caml_string_of_jsbytes("%F")], - _cu_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _cv_= + _c0_=[0,[8,[0,0,5],0,0,0],caml_string_of_jsbytes("%F")], + _c1_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _c2_= [0, [11, caml_string_of_jsbytes("`Int ("), @@ -35617,9 +33665,9 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Int (@[")], - _cw_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")], - _cx_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _cy_= + _c3_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")], + _c4_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _c5_= [0, [11, caml_string_of_jsbytes("`Intlit ("), @@ -35630,9 +33678,9 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Intlit (@[")], - _cz_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _cA_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _cB_= + _c6_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _c7_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _c8_= [0, [11, caml_string_of_jsbytes("`String ("), @@ -35643,34 +33691,34 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`String (@[")], - _cC_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _cD_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _cP_=[0,737456202,1], - _cQ_=[0,737456202,0], - _cM_= + _c9_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _c__=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _dk_=[0,737456202,1], + _dl_=[0,737456202,0], + _dh_= [0, [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[2,0,[12,39,0]]]]], caml_string_of_jsbytes("%s '%s%s'")], - _cL_=[0,caml_string_of_jsbytes("lib/read.mll"),72,32], - _cK_= + _dg_=[0,caml_string_of_jsbytes("lib/read.mll"),72,32], + _df_= [0, [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[12,39,0]]]], caml_string_of_jsbytes("%s '%s'")], - _cG_= + _db_= [0, [11, caml_string_of_jsbytes("File "), [2,0,[11,caml_string_of_jsbytes(", line"),0]]], caml_string_of_jsbytes("File %s, line")], - _cH_= + _dc_= [0, [11,caml_string_of_jsbytes("byte "),[4,3,0,0,0]], caml_string_of_jsbytes("byte %i")], - _cJ_= + _de_= [0, [11,caml_string_of_jsbytes("bytes "),[4,3,0,0,[12,45,[4,3,0,0,0]]]], caml_string_of_jsbytes("bytes %i-%i")], - _cI_= + _dd_= [0, [2, 0, @@ -35684,32 +33732,140 @@ caml_string_of_jsbytes(", "), [2,0,[11,caml_string_of_jsbytes(":\n"),[2,0,0]]]]]]], caml_string_of_jsbytes("%s %i, %s:\n%s")], - _cF_=[0,caml_string_of_jsbytes("lib/read.mll"),44,13], - _cE_=[0,[15,0],caml_string_of_jsbytes("%a")], - _b0_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], - _b1_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], + _da_=[0,caml_string_of_jsbytes("lib/read.mll"),44,13], + _c$_=[0,[15,0],caml_string_of_jsbytes("%a")], + _ck_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0], + caml_string_of_jsbytes("@[")], + _cl_= + [0, + [12, + 123, + [17, + [0,caml_string_of_jsbytes("@;<1 0>"),1,0], + [15,[17,[0,caml_string_of_jsbytes("@;<1 -2>"),1,-2],[12,125,0]]]]], + caml_string_of_jsbytes("{@;<1 0>%a@;<1 -2>}")], + _cm_=[0,[17,0,0],caml_string_of_jsbytes("@]")], + _cn_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0], + caml_string_of_jsbytes("@[")], + _co_= + [0, + [12, + 91, + [17, + [0,caml_string_of_jsbytes("@;<1 0>"),1,0], + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [15, + [17,0,[17,[0,caml_string_of_jsbytes("@;<1 -2>"),1,-2],[12,93,0]]]]]]], + caml_string_of_jsbytes("[@;<1 0>@[%a@]@;<1 -2>]")], + _cq_= + [0, + [12, + 91, + [17, + [0,caml_string_of_jsbytes("@;<1 0>"),1,0], + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [15, + [17,0,[17,[0,caml_string_of_jsbytes("@;<1 -2>"),1,-2],[12,93,0]]]]]]], + caml_string_of_jsbytes("[@;<1 0>@[%a@]@;<1 -2>]")], + _cp_=[0,[17,0,0],caml_string_of_jsbytes("@]")], + _cr_= + [0, + [12, + 60, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [2,0,[11,caml_string_of_jsbytes(": "),[15,[17,0,[12,62,0]]]]]]], + caml_string_of_jsbytes("<@[%s: %a@]>")], + _cs_=[0,[12,60,[2,0,[12,62,0]]],caml_string_of_jsbytes("<%s>")], + _ch_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0], + caml_string_of_jsbytes("@[")], + _ci_= + [0, + [12, + 40, + [17, + [0,caml_string_of_jsbytes("@,"),0,0], + [15,[17,[0,caml_string_of_jsbytes("@;<0 -2>"),0,-2],[12,41,0]]]]], + caml_string_of_jsbytes("(@,%a@;<0 -2>)")], + _cj_=[0,[17,0,0],caml_string_of_jsbytes("@]")], + _ct_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [2,0,[11,caml_string_of_jsbytes(": "),[15,[17,0,0]]]]], + caml_string_of_jsbytes("@[%s: %a@]")], + _cw_=[0,[15,[17,2,0]],caml_string_of_jsbytes("%a@?")], + _cv_=[0,[15,0],caml_string_of_jsbytes("%a")], + _cu_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [15,[17,0,0]]], + caml_string_of_jsbytes("@[%a@]")], + _cg_= + [0, + [2,0,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], + caml_string_of_jsbytes("%s@ ")], + _ce_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], + _cf_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], _bZ_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], - _bI_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], - _bJ_=[0,[8,[0,0,3],0,[0,1],0],caml_string_of_jsbytes("%.1g")], - _bK_=[0,[8,[0,0,3],0,[0,2],0],caml_string_of_jsbytes("%.2g")], - _bL_=[0,[8,[0,0,3],0,[0,3],0],caml_string_of_jsbytes("%.3g")], - _bM_=[0,[8,[0,0,3],0,[0,4],0],caml_string_of_jsbytes("%.4g")], - _bN_=[0,[8,[0,0,3],0,[0,5],0],caml_string_of_jsbytes("%.5g")], - _bO_=[0,[8,[0,0,3],0,[0,6],0],caml_string_of_jsbytes("%.6g")], - _bP_=[0,[8,[0,0,3],0,[0,7],0],caml_string_of_jsbytes("%.7g")], - _bQ_=[0,[8,[0,0,3],0,[0,8],0],caml_string_of_jsbytes("%.8g")], - _bR_=[0,[8,[0,0,3],0,[0,9],0],caml_string_of_jsbytes("%.9g")], - _bS_=[0,[8,[0,0,3],0,[0,10],0],caml_string_of_jsbytes("%.10g")], - _bT_=[0,[8,[0,0,3],0,[0,11],0],caml_string_of_jsbytes("%.11g")], - _bU_=[0,[8,[0,0,3],0,[0,12],0],caml_string_of_jsbytes("%.12g")], - _bV_=[0,[8,[0,0,3],0,[0,13],0],caml_string_of_jsbytes("%.13g")], - _bW_=[0,[8,[0,0,3],0,[0,14],0],caml_string_of_jsbytes("%.14g")], - _bX_=[0,[8,[0,0,3],0,[0,15],0],caml_string_of_jsbytes("%.15g")], - _bY_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], - _bG_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], - _bH_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], - _bF_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], - _bC_= + _b0_=[0,[8,[0,0,3],0,[0,1],0],caml_string_of_jsbytes("%.1g")], + _b1_=[0,[8,[0,0,3],0,[0,2],0],caml_string_of_jsbytes("%.2g")], + _b2_=[0,[8,[0,0,3],0,[0,3],0],caml_string_of_jsbytes("%.3g")], + _b3_=[0,[8,[0,0,3],0,[0,4],0],caml_string_of_jsbytes("%.4g")], + _b4_=[0,[8,[0,0,3],0,[0,5],0],caml_string_of_jsbytes("%.5g")], + _b5_=[0,[8,[0,0,3],0,[0,6],0],caml_string_of_jsbytes("%.6g")], + _b6_=[0,[8,[0,0,3],0,[0,7],0],caml_string_of_jsbytes("%.7g")], + _b7_=[0,[8,[0,0,3],0,[0,8],0],caml_string_of_jsbytes("%.8g")], + _b8_=[0,[8,[0,0,3],0,[0,9],0],caml_string_of_jsbytes("%.9g")], + _b9_=[0,[8,[0,0,3],0,[0,10],0],caml_string_of_jsbytes("%.10g")], + _b__=[0,[8,[0,0,3],0,[0,11],0],caml_string_of_jsbytes("%.11g")], + _b$_=[0,[8,[0,0,3],0,[0,12],0],caml_string_of_jsbytes("%.12g")], + _ca_=[0,[8,[0,0,3],0,[0,13],0],caml_string_of_jsbytes("%.13g")], + _cb_=[0,[8,[0,0,3],0,[0,14],0],caml_string_of_jsbytes("%.14g")], + _cc_=[0,[8,[0,0,3],0,[0,15],0],caml_string_of_jsbytes("%.15g")], + _cd_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], + _bX_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], + _bY_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], + _bU_= [0, [11, caml_string_of_jsbytes("src="), @@ -35723,25 +33879,25 @@ 0, [11,caml_string_of_jsbytes(" len="),[4,3,0,0,[12,10,[10,0]]]]]]]], caml_string_of_jsbytes("src=%S start=%i len=%i\n%!")], - _ba_= + _bs_= [0, [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(";@ ")], - _a3_= + _bj_= [0, [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(";@ ")], - _a4_= + _bk_= [0, [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]], caml_string_of_jsbytes("(@[")], - _a5_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _a6_= + _bl_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _bm_= [0, [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], caml_string_of_jsbytes(",@ ")], - _a7_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _a1_= + _bn_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _bh_= [0, [11, caml_string_of_jsbytes("`Assoc ("), @@ -35752,7 +33908,7 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Assoc (@[")], - _a2_= + _bi_= [0, [18, [1, @@ -35761,12 +33917,12 @@ caml_string_of_jsbytes("<2>")]], [12,91,0]], caml_string_of_jsbytes("@[<2>[")], - _a8_= + _bo_= [0, [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]], caml_string_of_jsbytes("@,]@]")], - _a9_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _a__= + _bp_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _bq_= [0, [11, caml_string_of_jsbytes("`List ("), @@ -35777,7 +33933,7 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`List (@[")], - _a$_= + _br_= [0, [18, [1, @@ -35786,12 +33942,12 @@ caml_string_of_jsbytes("<2>")]], [12,91,0]], caml_string_of_jsbytes("@[<2>[")], - _bb_= + _bt_= [0, [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]], caml_string_of_jsbytes("@,]@]")], - _bc_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _bd_= + _bu_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _bv_= [0, [11, caml_string_of_jsbytes("`Bool ("), @@ -35802,9 +33958,9 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Bool (@[")], - _be_=[0,[9,0,0],caml_string_of_jsbytes("%B")], - _bf_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _bg_= + _bw_=[0,[9,0,0],caml_string_of_jsbytes("%B")], + _bx_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _by_= [0, [11, caml_string_of_jsbytes("`Float ("), @@ -35815,9 +33971,9 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Float (@[")], - _bh_=[0,[8,[0,0,5],0,0,0],caml_string_of_jsbytes("%F")], - _bi_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _bj_= + _bz_=[0,[8,[0,0,5],0,0,0],caml_string_of_jsbytes("%F")], + _bA_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _bB_= [0, [11, caml_string_of_jsbytes("`Int ("), @@ -35828,9 +33984,9 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`Int (@[")], - _bk_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")], - _bl_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _bm_= + _bC_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")], + _bD_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _bE_= [0, [11, caml_string_of_jsbytes("`String ("), @@ -35841,34 +33997,34 @@ caml_string_of_jsbytes("")]], 0]], caml_string_of_jsbytes("`String (@[")], - _bn_=[0,[3,0,0],caml_string_of_jsbytes("%S")], - _bo_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], - _bA_=[0,737456202,1], - _bB_=[0,737456202,0], - _bx_= + _bF_=[0,[3,0,0],caml_string_of_jsbytes("%S")], + _bG_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")], + _bS_=[0,737456202,1], + _bT_=[0,737456202,0], + _bP_= [0, [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[2,0,[12,39,0]]]]], caml_string_of_jsbytes("%s '%s%s'")], - _bw_=[0,caml_string_of_jsbytes("lib/read.mll"),72,32], - _bv_= + _bO_=[0,caml_string_of_jsbytes("lib/read.mll"),72,32], + _bN_= [0, [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[12,39,0]]]], caml_string_of_jsbytes("%s '%s'")], - _br_= + _bJ_= [0, [11, caml_string_of_jsbytes("File "), [2,0,[11,caml_string_of_jsbytes(", line"),0]]], caml_string_of_jsbytes("File %s, line")], - _bs_= + _bK_= [0, [11,caml_string_of_jsbytes("byte "),[4,3,0,0,0]], caml_string_of_jsbytes("byte %i")], - _bu_= + _bM_= [0, [11,caml_string_of_jsbytes("bytes "),[4,3,0,0,[12,45,[4,3,0,0,0]]]], caml_string_of_jsbytes("bytes %i-%i")], - _bt_= + _bL_= [0, [2, 0, @@ -35882,32 +34038,110 @@ caml_string_of_jsbytes(", "), [2,0,[11,caml_string_of_jsbytes(":\n"),[2,0,0]]]]]]], caml_string_of_jsbytes("%s %i, %s:\n%s")], - _bq_=[0,caml_string_of_jsbytes("lib/read.mll"),44,13], - _bp_=[0,[15,0],caml_string_of_jsbytes("%a")], - _aZ_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], - _a0_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], - _aY_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], - _aH_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], - _aI_=[0,[8,[0,0,3],0,[0,1],0],caml_string_of_jsbytes("%.1g")], - _aJ_=[0,[8,[0,0,3],0,[0,2],0],caml_string_of_jsbytes("%.2g")], - _aK_=[0,[8,[0,0,3],0,[0,3],0],caml_string_of_jsbytes("%.3g")], - _aL_=[0,[8,[0,0,3],0,[0,4],0],caml_string_of_jsbytes("%.4g")], - _aM_=[0,[8,[0,0,3],0,[0,5],0],caml_string_of_jsbytes("%.5g")], - _aN_=[0,[8,[0,0,3],0,[0,6],0],caml_string_of_jsbytes("%.6g")], - _aO_=[0,[8,[0,0,3],0,[0,7],0],caml_string_of_jsbytes("%.7g")], - _aP_=[0,[8,[0,0,3],0,[0,8],0],caml_string_of_jsbytes("%.8g")], - _aQ_=[0,[8,[0,0,3],0,[0,9],0],caml_string_of_jsbytes("%.9g")], - _aR_=[0,[8,[0,0,3],0,[0,10],0],caml_string_of_jsbytes("%.10g")], - _aS_=[0,[8,[0,0,3],0,[0,11],0],caml_string_of_jsbytes("%.11g")], - _aT_=[0,[8,[0,0,3],0,[0,12],0],caml_string_of_jsbytes("%.12g")], - _aU_=[0,[8,[0,0,3],0,[0,13],0],caml_string_of_jsbytes("%.13g")], - _aV_=[0,[8,[0,0,3],0,[0,14],0],caml_string_of_jsbytes("%.14g")], - _aW_=[0,[8,[0,0,3],0,[0,15],0],caml_string_of_jsbytes("%.15g")], - _aX_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], - _aF_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], - _aG_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], - _aE_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], - _aB_= + _bI_=[0,caml_string_of_jsbytes("lib/read.mll"),44,13], + _bH_=[0,[15,0],caml_string_of_jsbytes("%a")], + _a8_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0], + caml_string_of_jsbytes("@[")], + _a9_= + [0, + [12, + 123, + [17, + [0,caml_string_of_jsbytes("@;<1 0>"),1,0], + [15,[17,[0,caml_string_of_jsbytes("@;<1 -2>"),1,-2],[12,125,0]]]]], + caml_string_of_jsbytes("{@;<1 0>%a@;<1 -2>}")], + _a__=[0,[17,0,0],caml_string_of_jsbytes("@]")], + _a$_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0], + caml_string_of_jsbytes("@[")], + _ba_= + [0, + [12, + 91, + [17, + [0,caml_string_of_jsbytes("@;<1 0>"),1,0], + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [15, + [17,0,[17,[0,caml_string_of_jsbytes("@;<1 -2>"),1,-2],[12,93,0]]]]]]], + caml_string_of_jsbytes("[@;<1 0>@[%a@]@;<1 -2>]")], + _bc_= + [0, + [12, + 91, + [17, + [0,caml_string_of_jsbytes("@;<1 0>"),1,0], + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [15, + [17,0,[17,[0,caml_string_of_jsbytes("@;<1 -2>"),1,-2],[12,93,0]]]]]]], + caml_string_of_jsbytes("[@;<1 0>@[%a@]@;<1 -2>]")], + _bb_=[0,[17,0,0],caml_string_of_jsbytes("@]")], + _bd_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [2,0,[11,caml_string_of_jsbytes(": "),[15,[17,0,0]]]]], + caml_string_of_jsbytes("@[%s: %a@]")], + _bg_=[0,[15,[17,2,0]],caml_string_of_jsbytes("%a@?")], + _bf_=[0,[15,0],caml_string_of_jsbytes("%a")], + _be_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [15,[17,0,0]]], + caml_string_of_jsbytes("@[%a@]")], + _a7_= + [0, + [2,0,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], + caml_string_of_jsbytes("%s@ ")], + _a5_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], + _a6_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], + _aO_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], + _aP_=[0,[8,[0,0,3],0,[0,1],0],caml_string_of_jsbytes("%.1g")], + _aQ_=[0,[8,[0,0,3],0,[0,2],0],caml_string_of_jsbytes("%.2g")], + _aR_=[0,[8,[0,0,3],0,[0,3],0],caml_string_of_jsbytes("%.3g")], + _aS_=[0,[8,[0,0,3],0,[0,4],0],caml_string_of_jsbytes("%.4g")], + _aT_=[0,[8,[0,0,3],0,[0,5],0],caml_string_of_jsbytes("%.5g")], + _aU_=[0,[8,[0,0,3],0,[0,6],0],caml_string_of_jsbytes("%.6g")], + _aV_=[0,[8,[0,0,3],0,[0,7],0],caml_string_of_jsbytes("%.7g")], + _aW_=[0,[8,[0,0,3],0,[0,8],0],caml_string_of_jsbytes("%.8g")], + _aX_=[0,[8,[0,0,3],0,[0,9],0],caml_string_of_jsbytes("%.9g")], + _aY_=[0,[8,[0,0,3],0,[0,10],0],caml_string_of_jsbytes("%.10g")], + _aZ_=[0,[8,[0,0,3],0,[0,11],0],caml_string_of_jsbytes("%.11g")], + _a0_=[0,[8,[0,0,3],0,[0,12],0],caml_string_of_jsbytes("%.12g")], + _a1_=[0,[8,[0,0,3],0,[0,13],0],caml_string_of_jsbytes("%.13g")], + _a2_=[0,[8,[0,0,3],0,[0,14],0],caml_string_of_jsbytes("%.14g")], + _a3_=[0,[8,[0,0,3],0,[0,15],0],caml_string_of_jsbytes("%.15g")], + _a4_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], + _aM_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], + _aN_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], + _aJ_= [0, [11, caml_string_of_jsbytes("src="), @@ -35921,32 +34155,139 @@ 0, [11,caml_string_of_jsbytes(" len="),[4,3,0,0,[12,10,[10,0]]]]]]]], caml_string_of_jsbytes("src=%S start=%i len=%i\n%!")], - _aA_=[0,[2,0,[12,58,0]],caml_string_of_jsbytes("%s:")], - _aw_=[0,[15,0],caml_string_of_jsbytes("%a")], - _C_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], - _D_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], - _B_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], - _k_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], - _l_=[0,[8,[0,0,3],0,[0,1],0],caml_string_of_jsbytes("%.1g")], - _m_=[0,[8,[0,0,3],0,[0,2],0],caml_string_of_jsbytes("%.2g")], - _n_=[0,[8,[0,0,3],0,[0,3],0],caml_string_of_jsbytes("%.3g")], - _o_=[0,[8,[0,0,3],0,[0,4],0],caml_string_of_jsbytes("%.4g")], - _p_=[0,[8,[0,0,3],0,[0,5],0],caml_string_of_jsbytes("%.5g")], - _q_=[0,[8,[0,0,3],0,[0,6],0],caml_string_of_jsbytes("%.6g")], - _r_=[0,[8,[0,0,3],0,[0,7],0],caml_string_of_jsbytes("%.7g")], - _s_=[0,[8,[0,0,3],0,[0,8],0],caml_string_of_jsbytes("%.8g")], - _t_=[0,[8,[0,0,3],0,[0,9],0],caml_string_of_jsbytes("%.9g")], - _u_=[0,[8,[0,0,3],0,[0,10],0],caml_string_of_jsbytes("%.10g")], - _v_=[0,[8,[0,0,3],0,[0,11],0],caml_string_of_jsbytes("%.11g")], - _w_=[0,[8,[0,0,3],0,[0,12],0],caml_string_of_jsbytes("%.12g")], - _x_=[0,[8,[0,0,3],0,[0,13],0],caml_string_of_jsbytes("%.13g")], - _y_=[0,[8,[0,0,3],0,[0,14],0],caml_string_of_jsbytes("%.14g")], - _z_=[0,[8,[0,0,3],0,[0,15],0],caml_string_of_jsbytes("%.15g")], - _A_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], - _i_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], - _j_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], - _h_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], - _e_= + _at_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0], + caml_string_of_jsbytes("@[")], + _au_= + [0, + [12, + 123, + [17, + [0,caml_string_of_jsbytes("@;<1 0>"),1,0], + [15,[17,[0,caml_string_of_jsbytes("@;<1 -2>"),1,-2],[12,125,0]]]]], + caml_string_of_jsbytes("{@;<1 0>%a@;<1 -2>}")], + _av_=[0,[17,0,0],caml_string_of_jsbytes("@]")], + _aw_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0], + caml_string_of_jsbytes("@[")], + _ax_= + [0, + [12, + 91, + [17, + [0,caml_string_of_jsbytes("@;<1 0>"),1,0], + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [15, + [17,0,[17,[0,caml_string_of_jsbytes("@;<1 -2>"),1,-2],[12,93,0]]]]]]], + caml_string_of_jsbytes("[@;<1 0>@[%a@]@;<1 -2>]")], + _az_= + [0, + [12, + 91, + [17, + [0,caml_string_of_jsbytes("@;<1 0>"),1,0], + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [15, + [17,0,[17,[0,caml_string_of_jsbytes("@;<1 -2>"),1,-2],[12,93,0]]]]]]], + caml_string_of_jsbytes("[@;<1 0>@[%a@]@;<1 -2>]")], + _ay_=[0,[17,0,0],caml_string_of_jsbytes("@]")], + _aA_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + 0], + caml_string_of_jsbytes("@[")], + _aB_= + [0, + [12, + 40, + [17, + [0,caml_string_of_jsbytes("@,"),0,0], + [15,[17,[0,caml_string_of_jsbytes("@;<0 -2>"),0,-2],[12,41,0]]]]], + caml_string_of_jsbytes("(@,%a@;<0 -2>)")], + _aC_=[0,[17,0,0],caml_string_of_jsbytes("@]")], + _aD_= + [0, + [12, + 60, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [2,0,[11,caml_string_of_jsbytes(": "),[15,[17,0,[12,62,0]]]]]]], + caml_string_of_jsbytes("<@[%s: %a@]>")], + _aE_=[0,[12,60,[2,0,[12,62,0]]],caml_string_of_jsbytes("<%s>")], + _aF_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [2,0,[11,caml_string_of_jsbytes(": "),[15,[17,0,0]]]]], + caml_string_of_jsbytes("@[%s: %a@]")], + _aI_=[0,[15,[17,2,0]],caml_string_of_jsbytes("%a@?")], + _aH_=[0,[15,0],caml_string_of_jsbytes("%a")], + _aG_= + [0, + [18, + [1, + [0, + [11,caml_string_of_jsbytes(""),0], + caml_string_of_jsbytes("")]], + [15,[17,0,0]]], + caml_string_of_jsbytes("@[%a@]")], + _as_= + [0, + [2,0,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]], + caml_string_of_jsbytes("%s@ ")], + _ar_=[0,[15,0],caml_string_of_jsbytes("%a")], + _x_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], + _y_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], + _g_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], + _h_=[0,[8,[0,0,3],0,[0,1],0],caml_string_of_jsbytes("%.1g")], + _i_=[0,[8,[0,0,3],0,[0,2],0],caml_string_of_jsbytes("%.2g")], + _j_=[0,[8,[0,0,3],0,[0,3],0],caml_string_of_jsbytes("%.3g")], + _k_=[0,[8,[0,0,3],0,[0,4],0],caml_string_of_jsbytes("%.4g")], + _l_=[0,[8,[0,0,3],0,[0,5],0],caml_string_of_jsbytes("%.5g")], + _m_=[0,[8,[0,0,3],0,[0,6],0],caml_string_of_jsbytes("%.6g")], + _n_=[0,[8,[0,0,3],0,[0,7],0],caml_string_of_jsbytes("%.7g")], + _o_=[0,[8,[0,0,3],0,[0,8],0],caml_string_of_jsbytes("%.8g")], + _p_=[0,[8,[0,0,3],0,[0,9],0],caml_string_of_jsbytes("%.9g")], + _q_=[0,[8,[0,0,3],0,[0,10],0],caml_string_of_jsbytes("%.10g")], + _r_=[0,[8,[0,0,3],0,[0,11],0],caml_string_of_jsbytes("%.11g")], + _s_=[0,[8,[0,0,3],0,[0,12],0],caml_string_of_jsbytes("%.12g")], + _t_=[0,[8,[0,0,3],0,[0,13],0],caml_string_of_jsbytes("%.13g")], + _u_=[0,[8,[0,0,3],0,[0,14],0],caml_string_of_jsbytes("%.14g")], + _v_=[0,[8,[0,0,3],0,[0,15],0],caml_string_of_jsbytes("%.15g")], + _w_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], + _e_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")], + _f_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")], + _b_= [0, [11, caml_string_of_jsbytes("src="), @@ -35960,157 +34301,7 @@ 0, [11,caml_string_of_jsbytes(" len="),[4,3,0,0,[12,10,[10,0]]]]]]]], caml_string_of_jsbytes("src=%S start=%i len=%i\n%!")], - _d_=[0,caml_string_of_jsbytes("common.ml"),57,4]; - function biniou_of_json(param) - {if(typeof param === "number")return 948106916; - var _li_=param[1]; - if(708012133 <= _li_) - {if(726928360 === _li_) - {var l=param[2],_lj_=caml_call1(Stdlib_Array[12],l); - return [0, - 726928360, - caml_call2(Stdlib_Array[15],biniou_of_json,_lj_)]} - if(848054398 <= _li_) - {if(963043957 <= _li_) - {var - l$0=param[2], - _lk_=caml_call1(Stdlib_Array[12],l$0), - _ll_= - function(param) - {var x=param[2],s=param[1],_lu_=biniou_of_json(x); - return [0,[0,s],caml_call1(Bi_io[21],s),_lu_]}, - a=caml_call2(Stdlib_Array[15],_ll_,_lk_); - return [0,847309489,a]} - var l$1=param[2]; - if(l$1) - {var - _lm_=caml_call1(Stdlib_Array[12],l$1), - a$0=caml_call2(Stdlib_Array[15],biniou_of_json,_lm_), - _ln_=caml_check_bound(a$0,0)[1], - tag=caml_call1(Bi_io[70],_ln_); - try - {var _lp_=a$0.length - 1 - 1 | 0,_lo_=1; - if(! (_lp_ < 1)) - {var i=_lo_; - for(;;) - {var _lr_=caml_check_bound(a$0,i)[1 + i]; - if(caml_call1(Bi_io[70],_lr_) !== tag)throw Stdlib[3]; - var _ls_=i + 1 | 0; - if(_lp_ !== i){var i=_ls_;continue} - break}} - var _lq_=[0,951901561,[0,[0,tag,a$0]]]; - return _lq_} - catch(_lt_) - {_lt_ = caml_wrap_exception(_lt_); - if(_lt_ === Stdlib[3]) - return caml_call1(Stdlib[2],cst_Cannot_convert_heterogenou); - throw _lt_}} - return _a_} - if(737456202 <= _li_){var b=param[2];return [0,737456202,b]} - var match=param[2],o=match[2],s=match[1]; - if(o)var x=o[1],o$0=[0,biniou_of_json(x)];else var o$0=0; - return [0,708012133,[0,[0,s],caml_call1(Bi_io[21],s),o$0]]} - if(3654863 <= _li_) - {if(365180284 <= _li_){var f=param[2];return [0,928627642,f]} - var i$0=param[2]; - return [0,412180492,i$0]} - if(-752863768 <= _li_) - return caml_call1(Stdlib[2],cst_Cannot_convert_big_int_to_); - var s$0=param[2]; - return [0,-976970511,s$0]} - function json_of_biniou(x) - {if(typeof x === "number")return 870828711; - var _k3_=x[1]; - if(708012133 <= _k3_) - {if(847309489 <= _k3_) - {if(951901561 <= _k3_) - {if(1063160078 <= _k3_) - return caml_call1(Stdlib[2],cst_Cannot_convert_uvint_to_JS); - var _k4_=x[2]; - if(_k4_) - {var - match=_k4_[1], - a=match[2], - _k5_=caml_call2(Stdlib_Array[15],json_of_biniou,a); - return [0,848054398,caml_call1(Stdlib_Array[11],_k5_)]} - return _b_} - if(928626971 <= _k3_){var f=x[2];return [0,365180284,f]} - var - a$0=x[2], - _k6_= - function(param) - {var _lh_=param[1]; - if(_lh_) - {var x=param[3],s=_lh_[1];return [0,s,json_of_biniou(x)]} - return caml_call1(Stdlib[2],cst_Cannot_convert_hashed_fiel)}, - _k7_=caml_call2(Stdlib_Array[15],_k6_,a$0); - return [0,963043957,caml_call1(Stdlib_Array[11],_k7_)]} - if(737456202 <= _k3_) - {if(815034505 <= _k3_) - return caml_call1(Stdlib[2],cst_Cannot_convert_int8_to_JSO); - var b=x[2]; - return [0,737456202,b]} - if(726928360 <= _k3_) - {var a$1=x[2],_k8_=caml_call2(Stdlib_Array[15],json_of_biniou,a$1); - return [0,726928360,caml_call1(Stdlib_Array[11],_k8_)]} - var _k9_=x[2],_k__=_k9_[1]; - if(_k__) - {var _k$_=_k9_[3],_la_=_k__[1]; - if(_k$_) - {var x$0=_k$_[1]; - return [0,708012133,[0,_la_,[0,json_of_biniou(x$0)]]]} - return [0,708012133,[0,_la_,0]]} - return caml_call1(Stdlib[2],cst_Cannot_convert_hashed_vari)} - if(-775957819 <= _k3_) - {if(412180492 <= _k3_) - {if(504440814 <= _k3_) - {var _lb_=x[2]; - if(_lb_) - {var - match$0=_lb_[1], - rows=match$0[2], - header=match$0[1], - _lc_= - function(a) - {var n=header.length - 1; - if(a.length - 1 !== n) - caml_call1(Stdlib[2],cst_Malformed_biniou_table); - var l=[0,0],_le_=n - 1 | 0; - if(! (_le_ < 0)) - {var i=_le_; - for(;;) - {var - match=caml_check_bound(header,i)[1 + i], - o=match[1], - x=caml_check_bound(a,i)[1 + i]; - if(o) - {var s=o[1],_lf_=l[1]; - l[1] = [0,[0,s,json_of_biniou(x)],_lf_]} - else - caml_call1(Stdlib[2],cst_Cannot_convert_hashed_fiel$0); - var _lg_=i - 1 | 0; - if(0 !== i){var i=_lg_;continue} - break}} - return [0,963043957,l[1]]}, - _ld_=caml_call2(Stdlib_Array[15],_lc_,rows); - return [0,848054398,caml_call1(Stdlib_Array[11],_ld_)]} - return _c_} - var i=x[2]; - return [0,3654863,i]} - return 221365804 <= _k3_ - ?caml_call1(Stdlib[2],cst_Cannot_convert_num_variant) - :caml_call1(Stdlib[2],cst_Cannot_convert_shared_node)} - if(-783416530 <= _k3_) - return -783415859 <= _k3_ - ?caml_call1(Stdlib[2],cst_Cannot_convert_int64_to_JS) - :caml_call1(Stdlib[2],cst_Cannot_convert_int32_to_JS); - if(-783416972 <= _k3_) - return caml_call1(Stdlib[2],cst_Cannot_convert_int16_to_JS); - var s=x[2]; - return [0,-976970511,s]} - var Yojson_biniou=[0,biniou_of_json,json_of_biniou]; - caml_register_global(1022,Yojson_biniou,"Yojson_biniou"); - var Json_error=[248,cst_Yojson_Json_error,caml_fresh_oo_id(0)]; + _a_=[0,caml_string_of_jsbytes("common.ml"),57,4]; function json_error(s){throw [0,Json_error,s]} var End_of_array=[248,cst_Yojson_End_of_array,caml_fresh_oo_id(0)], @@ -36118,7 +34309,7 @@ End_of_tuple=[248,cst_Yojson_End_of_tuple,caml_fresh_oo_id(0)], End_of_input=[248,cst_Yojson_End_of_input,caml_fresh_oo_id(0)]; function utf8_of_code(buf,x) - {var add=Bi_outbuf[15]; + {var add=Stdlib_Buffer[12]; function maxbits(n,x){return 0 === (x >>> n | 0)?1:0} if(maxbits(7,x))return caml_call2(add,buf,caml_call1(Stdlib_Char[1],x)); if(maxbits(11,x)) @@ -36161,61 +34352,55 @@ caml_call2 (add,buf,caml_call1(Stdlib_Char[1],128 | (x >>> 6 | 0) & 63)); return caml_call2(add,buf,caml_call1(Stdlib_Char[1],128 | x & 63))} - throw [0,Assert_failure,_d_]} + throw [0,Assert_failure,_a_]} function utf8_of_surrogate_pair(buf,i,j) {var high10=i - 55296 | 0,low10=j - 56320 | 0; return utf8_of_code(buf,65536 + (high10 << 10 | low10) | 0)} - function is_object_or_array(x) - {if(typeof x !== "number") - {var _k2_=x[1],switch$0=0; - if(848054398 === _k2_ || 963043957 === _k2_)switch$0 = 1; - if(switch$0)return 1} - return 0} var Lexer_state=[0]; function init_lexer(buf,fname,opt,param) {if(opt)var sth=opt[1],lnum=sth;else var lnum=1; if(buf) var buf$0=buf[1],buf$1=buf$0; else - var buf$1=caml_call3(Bi_outbuf[3],0,0,256); + var buf$1=caml_call1(Stdlib_Buffer[1],256); return [0,buf$1,lnum,0,fname]} function hex(n) - {var _k1_=10 <= n?n + 87 | 0:n + 48 | 0; - return caml_call1(Stdlib_Char[1],_k1_)} + {var _pl_=10 <= n?n + 87 | 0:n + 48 | 0; + return caml_call1(Stdlib_Char[1],_pl_)} function write_special(src,start,stop,ob,str) - {caml_call4(Bi_outbuf[14],ob,src,start[1],stop - start[1] | 0); - caml_call2(Bi_outbuf[13],ob,str); + {caml_call4(Stdlib_Buffer[18],ob,src,start[1],stop - start[1] | 0); + caml_call2(Stdlib_Buffer[16],ob,str); start[1] = stop + 1 | 0; return 0} function finish_string(src,start,ob) {try {var - _k0_= + _pk_= caml_call4 - (Bi_outbuf[14], + (Stdlib_Buffer[18], ob, src, start[1], caml_ml_string_length(src) - start[1] | 0); - return _k0_} + return _pk_} catch(exc) {exc = caml_wrap_exception(exc); caml_call4 (Stdlib_Printf[3], - _e_, + _b_, src, start[1], caml_ml_string_length(src) - start[1] | 0); throw exc}} function write_string(ob,s) - {caml_call2(Bi_outbuf[15],ob,34); - var start=[0,0],_kY_=caml_ml_string_length(s) - 1 | 0,_kX_=0; - if(! (_kY_ < 0)) - {var i$0=_kX_; + {caml_call2(Stdlib_Buffer[12],ob,34); + var start=[0,0],_pi_=caml_ml_string_length(s) - 1 | 0,_ph_=0; + if(! (_pi_ < 0)) + {var i=_ph_; for(;;) - {var c=caml_string_get(s,i$0); + {var c=caml_string_get(s,i); if(92 === c) - write_special(s,start,i$0,ob,cst); + write_special(s,start,i,ob,cst); else {var switch$0=0; if(35 <= c) @@ -36224,12 +34409,12 @@ if(8 <= c) {var switch$1=0; switch(c - 8 | 0) - {case 0:write_special(s,start,i$0,ob,cst_b);break; - case 1:write_special(s,start,i$0,ob,cst_t);break; - case 2:write_special(s,start,i$0,ob,cst_n);break; - case 4:write_special(s,start,i$0,ob,cst_f);break; - case 5:write_special(s,start,i$0,ob,cst_r);break; - case 26:write_special(s,start,i$0,ob,cst$0);break; + {case 0:write_special(s,start,i,ob,cst_b);break; + case 1:write_special(s,start,i,ob,cst_t);break; + case 2:write_special(s,start,i,ob,cst_n);break; + case 4:write_special(s,start,i,ob,cst_f);break; + case 5:write_special(s,start,i,ob,cst_r);break; + case 26:write_special(s,start,i,ob,cst$0);break; case 24: case 25:switch$0 = 2;switch$1 = 1;break; default:switch$0 = 1;switch$1 = 1}} @@ -36238,52 +34423,52 @@ switch(switch$0) {case 2:break; case 1: - caml_call4(Bi_outbuf[14],ob,s,start[1],i$0 - start[1] | 0); - var i=caml_call2(Bi_outbuf[10],ob,6),dst=ob[1]; - caml_call5(Stdlib_Bytes[12],cst_u00,0,dst,i,4); - caml_bytes_set(dst,i + 4 | 0,hex(c >>> 4 | 0)); - caml_bytes_set(dst,i + 5 | 0,hex(c & 15)); - start[1] = i$0 + 1 | 0; + caml_call4(Stdlib_Buffer[18],ob,s,start[1],i - start[1] | 0); + caml_call2(Stdlib_Buffer[16],ob,cst_u00); + var _pf_=hex(c >>> 4 | 0); + caml_call2(Stdlib_Buffer[12],ob,_pf_); + var _pg_=hex(c & 15); + caml_call2(Stdlib_Buffer[12],ob,_pg_); + start[1] = i + 1 | 0; break }} - var _kZ_=i$0 + 1 | 0; - if(_kY_ !== i$0){var i$0=_kZ_;continue} + var _pj_=i + 1 | 0; + if(_pi_ !== i){var i=_pj_;continue} break}} finish_string(s,start,ob); - return caml_call2(Bi_outbuf[15],ob,34)} + return caml_call2(Stdlib_Buffer[12],ob,34)} function json_string_of_string(s) - {var ob=caml_call3(Bi_outbuf[3],0,0,10); + {var ob=caml_call1(Stdlib_Buffer[1],10); write_string(ob,s); - return caml_call1(Bi_outbuf[4],ob)} + return caml_call1(Stdlib_Buffer[2],ob)} function write_null(ob,param) - {return caml_call2(Bi_outbuf[13],ob,cst_null)} + {return caml_call2(Stdlib_Buffer[16],ob,cst_null)} function write_bool(ob,x) - {var _kW_=x?cst_true:cst_false;return caml_call2(Bi_outbuf[13],ob,_kW_)} + {var _pe_=x?cst_true:cst_false; + return caml_call2(Stdlib_Buffer[16],ob,_pe_)} var - _f_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[20])), - _g_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[19])), - max_digits=caml_call2(Stdlib[17],_g_,_f_); - function write_digits(s,pos,x) - {if(0 === x)return pos; + _c_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[20])), + _d_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[19])); + caml_call2(Stdlib[17],_d_,_c_); + function write_digits(s,x) + {if(0 === x)return 0; + var d=x % 10 | 0; + write_digits(s,x / 10 | 0); var - d=x % 10 | 0, - pos$0=write_digits(s,pos,x / 10 | 0), - n=caml_call1(Stdlib[18],d); - caml_bytes_set(s,pos$0,caml_call1(Stdlib_Char[1],n + 48 | 0)); - return pos$0 + 1 | 0} + n=caml_call1(Stdlib[18],d), + _pd_=caml_call1(Stdlib_Char[1],n + 48 | 0); + return caml_call2(Stdlib_Buffer[12],s,_pd_)} function write_int(ob,x) - {caml_call2(Bi_outbuf[9],ob,max_digits); - if(0 < x){ob[3] = write_digits(ob[1],ob[3],x);return 0} - if(0 <= x)return caml_call2(Bi_outbuf[15],ob,48); - var s=ob[1],pos=ob[3]; - caml_bytes_set(s,pos,45); - ob[3] = write_digits(s,pos + 1 | 0,x); - return 0} + {return 0 < x + ?write_digits(ob,x) + :0 <= x + ?caml_call2(Stdlib_Buffer[12],ob,48) + :(caml_call2(Stdlib_Buffer[12],ob,45),write_digits(ob,x))} function float_needs_period(s) {try - {var _kS_=caml_ml_string_length(s) - 1 | 0,_kR_=0; - if(! (_kS_ < 0)) - {var i=_kR_; + {var _o$_=caml_ml_string_length(s) - 1 | 0,_o__=0; + if(! (_o$_ < 0)) + {var i=_o__; for(;;) {var match=caml_string_get(s,i),switch$0=0; if(48 <= match) @@ -36291,116 +34476,92 @@ else if(45 === match)switch$0 = 1; if(! switch$0)throw Stdlib[3]; - var _kU_=i + 1 | 0; - if(_kS_ !== i){var i=_kU_;continue} + var _pb_=i + 1 | 0; + if(_o$_ !== i){var i=_pb_;continue} break}} - var _kT_=1; - return _kT_} - catch(_kV_) - {_kV_ = caml_wrap_exception(_kV_); - if(_kV_ === Stdlib[3])return 0; - throw _kV_}} - function write_float_fast(ob,x) - {var match=caml_classify_float(x); - if(3 === match) - {var _kP_=0. < x?cst_Infinity:cst_Infinity$0; - return caml_call2(Bi_outbuf[13],ob,_kP_)} - if(4 <= match)return caml_call2(Bi_outbuf[13],ob,cst_NaN); - var s=caml_call2(Stdlib_Printf[4],_h_,x); - caml_call2(Bi_outbuf[13],ob,s); - var _kQ_=float_needs_period(s); - return _kQ_?caml_call2(Bi_outbuf[13],ob,cst_0):_kQ_} + var _pa_=1; + return _pa_} + catch(_pc_) + {_pc_ = caml_wrap_exception(_pc_); + if(_pc_ === Stdlib[3])return 0; + throw _pc_}} function write_float(ob,x) {var match=caml_classify_float(x); if(3 === match) - {var _kN_=0. < x?cst_Infinity$1:cst_Infinity$2; - return caml_call2(Bi_outbuf[13],ob,_kN_)} - if(4 <= match)return caml_call2(Bi_outbuf[13],ob,cst_NaN$0); + {var _o8_=0. < x?cst_Infinity:cst_Infinity$0; + return caml_call2(Stdlib_Buffer[16],ob,_o8_)} + if(4 <= match)return caml_call2(Stdlib_Buffer[16],ob,cst_NaN); var - s1=caml_call2(Stdlib_Printf[4],_i_,x), - s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_Printf[4],_j_,x); - caml_call2(Bi_outbuf[13],ob,s); - var _kO_=float_needs_period(s); - return _kO_?caml_call2(Bi_outbuf[13],ob,cst_0$0):_kO_} + s1=caml_call2(Stdlib_Printf[4],_e_,x), + s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_Printf[4],_f_,x); + caml_call2(Stdlib_Buffer[16],ob,s); + var _o9_=float_needs_period(s); + return _o9_?caml_call2(Stdlib_Buffer[16],ob,cst_0):_o9_} function write_normal_float_prec(significant_figures,ob,x) {var switcher=significant_figures - 1 | 0; if(15 < switcher >>> 0) - var s=caml_call2(Stdlib_Printf[4],_k_,x); + var s=caml_call2(Stdlib_Printf[4],_g_,x); else switch(switcher) - {case 0:var s=caml_call2(Stdlib_Printf[4],_l_,x);break; - case 1:var s=caml_call2(Stdlib_Printf[4],_m_,x);break; - case 2:var s=caml_call2(Stdlib_Printf[4],_n_,x);break; - case 3:var s=caml_call2(Stdlib_Printf[4],_o_,x);break; - case 4:var s=caml_call2(Stdlib_Printf[4],_p_,x);break; - case 5:var s=caml_call2(Stdlib_Printf[4],_q_,x);break; - case 6:var s=caml_call2(Stdlib_Printf[4],_r_,x);break; - case 7:var s=caml_call2(Stdlib_Printf[4],_s_,x);break; - case 8:var s=caml_call2(Stdlib_Printf[4],_t_,x);break; - case 9:var s=caml_call2(Stdlib_Printf[4],_u_,x);break; - case 10:var s=caml_call2(Stdlib_Printf[4],_v_,x);break; - case 11:var s=caml_call2(Stdlib_Printf[4],_w_,x);break; - case 12:var s=caml_call2(Stdlib_Printf[4],_x_,x);break; - case 13:var s=caml_call2(Stdlib_Printf[4],_y_,x);break; - case 14:var s=caml_call2(Stdlib_Printf[4],_z_,x);break; - default:var s=caml_call2(Stdlib_Printf[4],_A_,x)} - caml_call2(Bi_outbuf[13],ob,s); - var _kM_=float_needs_period(s); - return _kM_?caml_call2(Bi_outbuf[13],ob,cst_0$1):_kM_} + {case 0:var s=caml_call2(Stdlib_Printf[4],_h_,x);break; + case 1:var s=caml_call2(Stdlib_Printf[4],_i_,x);break; + case 2:var s=caml_call2(Stdlib_Printf[4],_j_,x);break; + case 3:var s=caml_call2(Stdlib_Printf[4],_k_,x);break; + case 4:var s=caml_call2(Stdlib_Printf[4],_l_,x);break; + case 5:var s=caml_call2(Stdlib_Printf[4],_m_,x);break; + case 6:var s=caml_call2(Stdlib_Printf[4],_n_,x);break; + case 7:var s=caml_call2(Stdlib_Printf[4],_o_,x);break; + case 8:var s=caml_call2(Stdlib_Printf[4],_p_,x);break; + case 9:var s=caml_call2(Stdlib_Printf[4],_q_,x);break; + case 10:var s=caml_call2(Stdlib_Printf[4],_r_,x);break; + case 11:var s=caml_call2(Stdlib_Printf[4],_s_,x);break; + case 12:var s=caml_call2(Stdlib_Printf[4],_t_,x);break; + case 13:var s=caml_call2(Stdlib_Printf[4],_u_,x);break; + case 14:var s=caml_call2(Stdlib_Printf[4],_v_,x);break; + default:var s=caml_call2(Stdlib_Printf[4],_w_,x)} + caml_call2(Stdlib_Buffer[16],ob,s); + var _o7_=float_needs_period(s); + return _o7_?caml_call2(Stdlib_Buffer[16],ob,cst_0$0):_o7_} function write_float_prec(significant_figures,ob,x) {var match=caml_classify_float(x); if(3 === match) - {var _kL_=0. < x?cst_Infinity$3:cst_Infinity$4; - return caml_call2(Bi_outbuf[13],ob,_kL_)} + {var _o6_=0. < x?cst_Infinity$1:cst_Infinity$2; + return caml_call2(Stdlib_Buffer[16],ob,_o6_)} return 4 <= match - ?caml_call2(Bi_outbuf[13],ob,cst_NaN$1) + ?caml_call2(Stdlib_Buffer[16],ob,cst_NaN$0) :write_normal_float_prec(significant_figures,ob,x)} - function write_std_float_fast(ob,x) + function write_std_float(ob,x) {var match=caml_classify_float(x); if(3 === match) {var - _kJ_= + _o4_= 0. < x ?cst_Infinity_value_not_allowed :cst_Infinity_value_not_allowed$0; - return json_error(_kJ_)} + return json_error(_o4_)} if(4 <= match)return json_error(cst_NaN_value_not_allowed_in_s); - var s=caml_call2(Stdlib_Printf[4],_B_,x); - caml_call2(Bi_outbuf[13],ob,s); - var _kK_=float_needs_period(s); - return _kK_?caml_call2(Bi_outbuf[13],ob,cst_0$2):_kK_} - function write_std_float(ob,x) - {var match=caml_classify_float(x); - if(3 === match) - {var - _kH_= - 0. < x - ?cst_Infinity_value_not_allowed$1 - :cst_Infinity_value_not_allowed$2; - return json_error(_kH_)} - if(4 <= match)return json_error(cst_NaN_value_not_allowed_in_s$0); var - s1=caml_call2(Stdlib_Printf[4],_C_,x), - s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_Printf[4],_D_,x); - caml_call2(Bi_outbuf[13],ob,s); - var _kI_=float_needs_period(s); - return _kI_?caml_call2(Bi_outbuf[13],ob,cst_0$3):_kI_} + s1=caml_call2(Stdlib_Printf[4],_x_,x), + s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_Printf[4],_y_,x); + caml_call2(Stdlib_Buffer[16],ob,s); + var _o5_=float_needs_period(s); + return _o5_?caml_call2(Stdlib_Buffer[16],ob,cst_0$1):_o5_} function write_std_float_prec(significant_figures,ob,x) {var match=caml_classify_float(x); if(3 === match) {var - _kG_= + _o3_= 0. < x - ?cst_Infinity_value_not_allowed$3 - :cst_Infinity_value_not_allowed$4; - return json_error(_kG_)} + ?cst_Infinity_value_not_allowed$1 + :cst_Infinity_value_not_allowed$2; + return json_error(_o3_)} return 4 <= match - ?json_error(cst_NaN_value_not_allowed_in_s$1) + ?json_error(cst_NaN_value_not_allowed_in_s$0) :write_normal_float_prec(significant_figures,ob,x)} var - write_intlit=Bi_outbuf[13], - write_floatlit=Bi_outbuf[13], - write_stringlit=Bi_outbuf[13]; + write_intlit=Stdlib_Buffer[16], + write_floatlit=Stdlib_Buffer[16], + write_stringlit=Stdlib_Buffer[16]; function iter2(f_elt,f_sep,x,param$0) {if(param$0) {var l$0=param$0[2],y$0=param$0[1]; @@ -36415,349 +34576,370 @@ continue} return 0}} return 0} - function f_sep(ob){return caml_call2(Bi_outbuf[15],ob,44)} + function f_sep(ob){return caml_call2(Stdlib_Buffer[12],ob,44)} + function write_variant(ob,s,o) + {caml_call2(Stdlib_Buffer[12],ob,60); + write_string(ob,s); + if(o){var x=o[1];caml_call2(Stdlib_Buffer[12],ob,58);write_t(ob,x)} + return caml_call2(Stdlib_Buffer[12],ob,62)} function write_tuple(ob,l) - {caml_call2(Bi_outbuf[15],ob,40); + {caml_call2(Stdlib_Buffer[12],ob,40); iter2(write_t,f_sep,ob,l); - return caml_call2(Bi_outbuf[15],ob,41)} + return caml_call2(Stdlib_Buffer[12],ob,41)} function write_list(ob,l) - {caml_call2(Bi_outbuf[15],ob,91); + {caml_call2(Stdlib_Buffer[12],ob,91); iter2(write_t,f_sep,ob,l); - return caml_call2(Bi_outbuf[15],ob,93)} + return caml_call2(Stdlib_Buffer[12],ob,93)} + function write_assoc(ob,l) + {function f_elt(ob,param) + {var x=param[2],s=param[1]; + write_string(ob,s); + caml_call2(Stdlib_Buffer[12],ob,58); + return write_t(ob,x)} + caml_call2(Stdlib_Buffer[12],ob,123); + iter2(f_elt,f_sep,ob,l); + return caml_call2(Stdlib_Buffer[12],ob,125)} function write_t(ob,x) {if(typeof x === "number")return write_null(ob,0); - var _kF_=x[1]; - if(708012133 <= _kF_) - {if(737456202 <= _kF_) - {if(928231259 <= _kF_) - {if(963043957 <= _kF_){var l=x[2];return write_assoc(ob,l)} + var _o2_=x[1]; + if(708012133 <= _o2_) + {if(737456202 <= _o2_) + {if(928231259 <= _o2_) + {if(963043957 <= _o2_){var l=x[2];return write_assoc(ob,l)} var s=x[2]; - return caml_call2(Bi_outbuf[13],ob,s)} - if(848054398 <= _kF_){var l$0=x[2];return write_list(ob,l$0)} + return caml_call2(Stdlib_Buffer[16],ob,s)} + if(848054398 <= _o2_){var l$0=x[2];return write_list(ob,l$0)} var b=x[2]; return write_bool(ob,b)} - if(726928360 <= _kF_){var l$1=x[2];return write_tuple(ob,l$1)} + if(726928360 <= _o2_){var l$1=x[2];return write_tuple(ob,l$1)} var match=x[2],o=match[2],s$0=match[1]; return write_variant(ob,s$0,o)} - if(-752863768 === _kF_) - {var s$1=x[2];return caml_call2(Bi_outbuf[13],ob,s$1)} - if(3654863 <= _kF_) - {if(365180284 <= _kF_){var f=x[2];return write_float(ob,f)} + if(-752863768 === _o2_) + {var s$1=x[2];return caml_call2(Stdlib_Buffer[16],ob,s$1)} + if(3654863 <= _o2_) + {if(365180284 <= _o2_){var f=x[2];return write_float(ob,f)} var i=x[2]; return write_int(ob,i)} - if(-375152890 <= _kF_) - {var s$2=x[2];return caml_call2(Bi_outbuf[13],ob,s$2)} + if(-375152890 <= _o2_) + {var s$2=x[2];return caml_call2(Stdlib_Buffer[16],ob,s$2)} var s$3=x[2]; return write_string(ob,s$3)} - function write_assoc(ob,l) - {function f_elt(ob,param) - {var x=param[2],s=param[1]; + function write_std_variant(ob,s,o) + {if(o) + {var x=o[1]; + caml_call2(Stdlib_Buffer[12],ob,91); write_string(ob,s); - caml_call2(Bi_outbuf[15],ob,58); - return write_t(ob,x)} - caml_call2(Bi_outbuf[15],ob,123); - iter2(f_elt,f_sep,ob,l); - return caml_call2(Bi_outbuf[15],ob,125)} - function write_variant(ob,s,o) - {caml_call2(Bi_outbuf[15],ob,60); - write_string(ob,s); - if(o){var x=o[1];caml_call2(Bi_outbuf[15],ob,58);write_t(ob,x)} - return caml_call2(Bi_outbuf[15],ob,62)} + caml_call2(Stdlib_Buffer[12],ob,44); + write_std_json(ob,x); + return caml_call2(Stdlib_Buffer[12],ob,93)} + return write_string(ob,s)} function write_std_tuple(ob,l) - {caml_call2(Bi_outbuf[15],ob,91); + {caml_call2(Stdlib_Buffer[12],ob,91); iter2(write_std_json,f_sep,ob,l); - return caml_call2(Bi_outbuf[15],ob,93)} + return caml_call2(Stdlib_Buffer[12],ob,93)} function write_std_json(ob,x) {if(typeof x === "number")return write_null(ob,0); - var _kE_=x[1]; - if(708012133 <= _kE_) - {if(737456202 <= _kE_) - {if(928231259 <= _kE_) - {if(963043957 <= _kE_) + var _o1_=x[1]; + if(708012133 <= _o1_) + {if(737456202 <= _o1_) + {if(928231259 <= _o1_) + {if(963043957 <= _o1_) {var l=x[2], f_elt= function(ob,param) {var x=param[2],s=param[1]; write_string(ob,s); - caml_call2(Bi_outbuf[15],ob,58); + caml_call2(Stdlib_Buffer[12],ob,58); return write_std_json(ob,x)}; - caml_call2(Bi_outbuf[15],ob,123); + caml_call2(Stdlib_Buffer[12],ob,123); iter2(f_elt,f_sep,ob,l); - return caml_call2(Bi_outbuf[15],ob,125)} + return caml_call2(Stdlib_Buffer[12],ob,125)} var s=x[2]; - return caml_call2(Bi_outbuf[13],ob,s)} - if(848054398 <= _kE_) + return caml_call2(Stdlib_Buffer[16],ob,s)} + if(848054398 <= _o1_) {var l$0=x[2]; - caml_call2(Bi_outbuf[15],ob,91); + caml_call2(Stdlib_Buffer[12],ob,91); iter2(write_std_json,f_sep,ob,l$0); - return caml_call2(Bi_outbuf[15],ob,93)} + return caml_call2(Stdlib_Buffer[12],ob,93)} var b=x[2]; return write_bool(ob,b)} - if(726928360 <= _kE_){var l$1=x[2];return write_std_tuple(ob,l$1)} + if(726928360 <= _o1_){var l$1=x[2];return write_std_tuple(ob,l$1)} var match=x[2],o=match[2],s$0=match[1]; return write_std_variant(ob,s$0,o)} - if(-752863768 === _kE_) - {var s$1=x[2];return caml_call2(Bi_outbuf[13],ob,s$1)} - if(3654863 <= _kE_) - {if(365180284 <= _kE_){var f=x[2];return write_std_float(ob,f)} + if(-752863768 === _o1_) + {var s$1=x[2];return caml_call2(Stdlib_Buffer[16],ob,s$1)} + if(3654863 <= _o1_) + {if(365180284 <= _o1_){var f=x[2];return write_std_float(ob,f)} var i=x[2]; return write_int(ob,i)} - if(-375152890 <= _kE_) - {var s$2=x[2];return caml_call2(Bi_outbuf[13],ob,s$2)} + if(-375152890 <= _o1_) + {var s$2=x[2];return caml_call2(Stdlib_Buffer[16],ob,s$2)} var s$3=x[2]; return write_string(ob,s$3)} - function write_std_variant(ob,s,o) - {if(o) - {var x=o[1]; - caml_call2(Bi_outbuf[15],ob,91); - write_string(ob,s); - caml_call2(Bi_outbuf[15],ob,44); - write_std_json(ob,x); - return caml_call2(Bi_outbuf[15],ob,93)} - return write_string(ob,s)} - function to_outbuf(opt,ob,x) - {if(opt)var sth=opt[1],std=sth;else var std=0; - return std - ?is_object_or_array(x) - ?write_std_json(ob,x) - :json_error(cst_Root_is_not_an_object_or_a) - :write_t(ob,x)} - function to_string(buf,opt,std,x) + function to_buffer(opt,_o0_,ob,x) + {if(opt)var sth=opt[1],suf=sth;else var suf=cst$1; + if(_o0_)var sth$0=_o0_[1],std=sth$0;else var std=0; + if(std)write_std_json(ob,x);else write_t(ob,x); + return caml_call2(Stdlib_Buffer[16],ob,suf)} + function to_string(buf,opt,_oZ_,std,x) {if(opt)var sth=opt[1],len=sth;else var len=256; + if(_oZ_)var sth$0=_oZ_[1],suf=sth$0;else var suf=cst$2; if(buf) - {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob} + {var ob=buf[1];caml_call1(Stdlib_Buffer[8],ob);var ob$0=ob} else - var ob$0=caml_call3(Bi_outbuf[3],0,0,len); - to_outbuf(std,ob$0,x); - var s=caml_call1(Bi_outbuf[4],ob$0); - caml_call1(Bi_outbuf[19],ob$0); + var ob$0=caml_call1(Stdlib_Buffer[1],len); + to_buffer([0,suf],std,ob$0,x); + var s=caml_call1(Stdlib_Buffer[2],ob$0); + caml_call1(Stdlib_Buffer[8],ob$0); return s} - function to_channel(buf,len,std,oc,x) - {if(buf) - var ob=buf[1],ob$0=ob; + function to_channel(buf,opt,_oY_,std,oc,x) + {if(opt)var sth=opt[1],len=sth;else var len=4096; + if(_oY_)var sth$0=_oY_[1],suf=sth$0;else var suf=cst$3; + if(buf) + {var ob=buf[1];caml_call1(Stdlib_Buffer[8],ob);var ob$0=ob} else - var ob$0=caml_call3(Bi_outbuf[5],len,0,oc); - to_outbuf(std,ob$0,x); - return caml_call1(Bi_outbuf[6],ob$0)} - function to_output(buf,len,std,out,x) - {if(buf) - var ob=buf[1],ob$0=ob; + var ob$0=caml_call1(Stdlib_Buffer[1],len); + to_buffer([0,suf],std,ob$0,x); + caml_call2(Stdlib_Buffer[10],oc,ob$0); + return caml_call1(Stdlib_Buffer[8],ob$0)} + function to_output(buf,opt,_oW_,std,out,x) + {if(opt)var sth=opt[1],len=sth;else var len=4096; + if(_oW_)var sth$0=_oW_[1],suf=sth$0;else var suf=cst$4; + if(buf) + {var ob=buf[1];caml_call1(Stdlib_Buffer[8],ob);var ob$0=ob} else - var ob$0=caml_call3(Bi_outbuf[7],len,0,out); - to_outbuf(std,ob$0,x); - return caml_call1(Bi_outbuf[8],ob$0)} - function to_file(len,std,file,x) - {var oc=caml_call1(Stdlib[60],file); + var ob$0=caml_call1(Stdlib_Buffer[1],len); + to_buffer([0,suf],std,ob$0,x); + var _oX_=caml_call1(Stdlib_Buffer[7],ob$0); + caml_call4 + (caml_get_public_method(out,209784577,1), + out, + caml_call1(Stdlib_Buffer[2],ob$0), + 0, + _oX_); + return caml_call1(Stdlib_Buffer[8],ob$0)} + function to_file(len,std,opt,file,x) + {if(opt)var sth=opt[1],suf=sth;else var suf=cst$5; + var oc=caml_call1(Stdlib[60],file); try - {to_channel(0,len,std,oc,x); - var _kD_=caml_call1(Stdlib[76],oc); - return _kD_} + {to_channel(0,len,[0,suf],std,oc,x); + var _oV_=caml_call1(Stdlib[76],oc); + return _oV_} catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}} - function stream_to_outbuf(std,ob,st) - {function _kB_(_kC_){return to_outbuf(std,ob,_kC_)} - return caml_call2(Stdlib_Stream[8],_kB_,st)} - function stream_to_string(buf,opt,std,st) + function seq_to_buffer(opt,std,ob,st) + {if(opt)var sth=opt[1],suf=sth;else var suf=cst$6; + var _oS_=[0,suf]; + function _oT_(_oU_){return to_buffer(_oS_,std,ob,_oU_)} + return caml_call2(Stdlib_Seq[4],_oT_,st)} + function seq_to_string(buf,opt,_oR_,std,st) {if(opt)var sth=opt[1],len=sth;else var len=256; + if(_oR_)var sth$0=_oR_[1],suf=sth$0;else var suf=cst$7; if(buf) - {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob} + {var ob=buf[1];caml_call1(Stdlib_Buffer[8],ob);var ob$0=ob} else - var ob$0=caml_call3(Bi_outbuf[3],0,0,len); - stream_to_outbuf(std,ob$0,st); - var s=caml_call1(Bi_outbuf[4],ob$0); - caml_call1(Bi_outbuf[19],ob$0); + var ob$0=caml_call1(Stdlib_Buffer[1],len); + seq_to_buffer([0,suf],std,ob$0,st); + var s=caml_call1(Stdlib_Buffer[2],ob$0); + caml_call1(Stdlib_Buffer[8],ob$0); return s} - function stream_to_channel(buf,len,std,oc,st) - {if(buf) - var ob=buf[1],ob$0=ob; + function seq_to_channel(buf,opt,_oP_,std,oc,seq) + {if(opt)var sth=opt[1],len=sth;else var len=2096; + if(_oP_)var sth$0=_oP_[1],suf=sth$0;else var suf=cst$8; + if(buf) + {var ob=buf[1];caml_call1(Stdlib_Buffer[8],ob);var ob$0=ob} else - var ob$0=caml_call3(Bi_outbuf[5],len,0,oc); - stream_to_outbuf(std,ob$0,st); - return caml_call1(Bi_outbuf[6],ob$0)} - function stream_to_file(len,std,file,st) - {var oc=caml_call1(Stdlib[60],file); + var ob$0=caml_call1(Stdlib_Buffer[1],len); + function _oQ_(json) + {to_buffer([0,suf],std,ob$0,json); + caml_call2(Stdlib_Buffer[10],oc,ob$0); + return caml_call1(Stdlib_Buffer[8],ob$0)} + return caml_call2(Stdlib_Seq[4],_oQ_,seq)} + function seq_to_file(len,opt,std,file,st) + {if(opt)var sth=opt[1],suf=sth;else var suf=cst$9; + var oc=caml_call1(Stdlib[60],file); try - {stream_to_channel(0,len,std,oc,st); - var _kA_=caml_call1(Stdlib[76],oc); - return _kA_} + {seq_to_channel(0,len,[0,suf],std,oc,st); + var _oO_=caml_call1(Stdlib[76],oc); + return _oO_} catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}} function sort(x) {if(typeof x !== "number") - {var _kr_=x[1]; - if(726928361 <= _kr_) - {if(848054398 === _kr_) - {var l=x[2],_ks_=caml_call2(Stdlib_List[21],sort,l); - return [0,848054398,caml_call1(Stdlib_List[9],_ks_)]} - if(963043957 === _kr_) + {var _oF_=x[1]; + if(726928361 <= _oF_) + {if(848054398 === _oF_) + {var l=x[2],_oG_=caml_call2(Stdlib_List[21],sort,l); + return [0,848054398,caml_call1(Stdlib_List[9],_oG_)]} + if(963043957 === _oF_) {var l$0=x[2], - _kt_= + _oH_= function(param){var v=param[2],k=param[1];return [0,k,sort(v)]}, - _ku_=caml_call2(Stdlib_List[21],_kt_,l$0), - l$1=caml_call1(Stdlib_List[9],_ku_), - _kv_= - function(param,_kz_) - {var b=_kz_[1],a=param[1]; + _oI_=caml_call2(Stdlib_List[21],_oH_,l$0), + l$1=caml_call1(Stdlib_List[9],_oI_), + _oJ_= + function(param,_oN_) + {var b=_oN_[1],a=param[1]; return caml_call2(Stdlib_String[9],a,b)}; - return [0,963043957,caml_call2(Stdlib_List[57],_kv_,l$1)]}} + return [0,963043957,caml_call2(Stdlib_List[57],_oJ_,l$1)]}} else - if(708012133 === _kr_) - {var _kw_=x[2],_kx_=_kw_[2]; - if(_kx_) - {var v=_kx_[1],k=_kw_[1],v$0=sort(v); + if(708012133 === _oF_) + {var _oK_=x[2],_oL_=_oK_[2]; + if(_oL_) + {var v=_oL_[1],k=_oK_[1],v$0=sort(v); return v === v$0?x:[0,708012133,[0,k,[0,v$0]]]}} else - if(726928360 <= _kr_) - {var l$2=x[2],_ky_=caml_call2(Stdlib_List[21],sort,l$2); - return [0,726928360,caml_call1(Stdlib_List[9],_ky_)]}} + if(726928360 <= _oF_) + {var l$2=x[2],_oM_=caml_call2(Stdlib_List[21],sort,l$2); + return [0,726928360,caml_call1(Stdlib_List[9],_oM_)]}} return x} function pp(fmt,param) {if(typeof param === "number") return caml_call2(Stdlib_Format[13],fmt,cst_Null); - var _kk_=param[1]; - if(708012133 <= _kk_) - {if(737456202 <= _kk_) - {if(928231259 <= _kk_) - {if(963043957 <= _kk_) + var _oy_=param[1]; + if(708012133 <= _oy_) + {if(737456202 <= _oy_) + {if(928231259 <= _oy_) + {if(963043957 <= _oy_) {var xs=param[2]; - caml_call2(Stdlib_Format[129],fmt,_E_); - caml_call2(Stdlib_Format[129],fmt,_F_); + caml_call2(Stdlib_Format[129],fmt,_z_); + caml_call2(Stdlib_Format[129],fmt,_A_); var - _kl_=0, - _km_= + _oz_=0, + _oA_= function(sep,param) {var value=param[2],key=param[1]; - if(sep)caml_call2(Stdlib_Format[129],fmt,_G_); - caml_call2(Stdlib_Format[129],fmt,_H_); - caml_call3(Stdlib_Format[129],fmt,_I_,key); - caml_call2(Stdlib_Format[129],fmt,_J_); + if(sep)caml_call2(Stdlib_Format[129],fmt,_B_); + caml_call2(Stdlib_Format[129],fmt,_C_); + caml_call3(Stdlib_Format[129],fmt,_D_,key); + caml_call2(Stdlib_Format[129],fmt,_E_); pp(fmt,value); - caml_call2(Stdlib_Format[129],fmt,_K_); + caml_call2(Stdlib_Format[129],fmt,_F_); return 1}; - caml_call3(Stdlib_List[25],_km_,_kl_,xs); - caml_call2(Stdlib_Format[129],fmt,_L_); - return caml_call2(Stdlib_Format[129],fmt,_M_)} + caml_call3(Stdlib_List[25],_oA_,_oz_,xs); + caml_call2(Stdlib_Format[129],fmt,_G_); + return caml_call2(Stdlib_Format[129],fmt,_H_)} var x=param[2]; - caml_call2(Stdlib_Format[129],fmt,_N_); - caml_call3(Stdlib_Format[129],fmt,_O_,x); - return caml_call2(Stdlib_Format[129],fmt,_P_)} - if(848054398 <= _kk_) + caml_call2(Stdlib_Format[129],fmt,_I_); + caml_call3(Stdlib_Format[129],fmt,_J_,x); + return caml_call2(Stdlib_Format[129],fmt,_K_)} + if(848054398 <= _oy_) {var xs$0=param[2]; - caml_call2(Stdlib_Format[129],fmt,_Q_); - caml_call2(Stdlib_Format[129],fmt,_R_); + caml_call2(Stdlib_Format[129],fmt,_L_); + caml_call2(Stdlib_Format[129],fmt,_M_); var - _kn_=0, - _ko_= + _oB_=0, + _oC_= function(sep,x) - {if(sep)caml_call2(Stdlib_Format[129],fmt,_S_); + {if(sep)caml_call2(Stdlib_Format[129],fmt,_N_); pp(fmt,x); return 1}; - caml_call3(Stdlib_List[25],_ko_,_kn_,xs$0); - caml_call2(Stdlib_Format[129],fmt,_T_); - return caml_call2(Stdlib_Format[129],fmt,_U_)} + caml_call3(Stdlib_List[25],_oC_,_oB_,xs$0); + caml_call2(Stdlib_Format[129],fmt,_O_); + return caml_call2(Stdlib_Format[129],fmt,_P_)} var x$0=param[2]; - caml_call2(Stdlib_Format[129],fmt,_V_); - caml_call3(Stdlib_Format[129],fmt,_W_,x$0); - return caml_call2(Stdlib_Format[129],fmt,_X_)} - if(726928360 <= _kk_) + caml_call2(Stdlib_Format[129],fmt,_Q_); + caml_call3(Stdlib_Format[129],fmt,_R_,x$0); + return caml_call2(Stdlib_Format[129],fmt,_S_)} + if(726928360 <= _oy_) {var tup=param[2]; - caml_call2(Stdlib_Format[129],fmt,_Y_); - caml_call2(Stdlib_Format[129],fmt,_Z_); + caml_call2(Stdlib_Format[129],fmt,_T_); + caml_call2(Stdlib_Format[129],fmt,_U_); var - _kp_=0, - _kq_= + _oD_=0, + _oE_= function(sep,e) - {if(sep)caml_call2(Stdlib_Format[129],fmt,___); + {if(sep)caml_call2(Stdlib_Format[129],fmt,_V_); pp(fmt,e); return 1}; - caml_call3(Stdlib_List[25],_kq_,_kp_,tup); - caml_call2(Stdlib_Format[129],fmt,_$_); - return caml_call2(Stdlib_Format[129],fmt,_aa_)} + caml_call3(Stdlib_List[25],_oE_,_oD_,tup); + caml_call2(Stdlib_Format[129],fmt,_W_); + return caml_call2(Stdlib_Format[129],fmt,_X_)} var match=param[2],value=match[2],name=match[1]; - caml_call2(Stdlib_Format[129],fmt,_ab_); - caml_call2(Stdlib_Format[129],fmt,_ac_); - caml_call3(Stdlib_Format[129],fmt,_ad_,name); - caml_call2(Stdlib_Format[129],fmt,_ae_); + caml_call2(Stdlib_Format[129],fmt,_Y_); + caml_call2(Stdlib_Format[129],fmt,_Z_); + caml_call3(Stdlib_Format[129],fmt,___,name); + caml_call2(Stdlib_Format[129],fmt,_$_); if(value) {var x$1=value[1]; caml_call2(Stdlib_Format[13],fmt,cst_Some); pp(fmt,x$1); - caml_call2(Stdlib_Format[13],fmt,cst$1)} + caml_call2(Stdlib_Format[13],fmt,cst$10)} else caml_call2(Stdlib_Format[13],fmt,cst_None); - caml_call2(Stdlib_Format[129],fmt,_af_); - return caml_call2(Stdlib_Format[129],fmt,_ag_)} - if(-752863768 === _kk_) + caml_call2(Stdlib_Format[129],fmt,_aa_); + return caml_call2(Stdlib_Format[129],fmt,_ab_)} + if(-752863768 === _oy_) {var x$2=param[2]; - caml_call2(Stdlib_Format[129],fmt,_ah_); - caml_call3(Stdlib_Format[129],fmt,_ai_,x$2); - return caml_call2(Stdlib_Format[129],fmt,_aj_)} - if(3654863 <= _kk_) - {if(365180284 <= _kk_) + caml_call2(Stdlib_Format[129],fmt,_ac_); + caml_call3(Stdlib_Format[129],fmt,_ad_,x$2); + return caml_call2(Stdlib_Format[129],fmt,_ae_)} + if(3654863 <= _oy_) + {if(365180284 <= _oy_) {var x$3=param[2]; - caml_call2(Stdlib_Format[129],fmt,_ak_); - caml_call3(Stdlib_Format[129],fmt,_al_,x$3); - return caml_call2(Stdlib_Format[129],fmt,_am_)} + caml_call2(Stdlib_Format[129],fmt,_af_); + caml_call3(Stdlib_Format[129],fmt,_ag_,x$3); + return caml_call2(Stdlib_Format[129],fmt,_ah_)} var x$4=param[2]; - caml_call2(Stdlib_Format[129],fmt,_an_); - caml_call3(Stdlib_Format[129],fmt,_ao_,x$4); - return caml_call2(Stdlib_Format[129],fmt,_ap_)} - if(-375152890 <= _kk_) + caml_call2(Stdlib_Format[129],fmt,_ai_); + caml_call3(Stdlib_Format[129],fmt,_aj_,x$4); + return caml_call2(Stdlib_Format[129],fmt,_ak_)} + if(-375152890 <= _oy_) {var x$5=param[2]; - caml_call2(Stdlib_Format[129],fmt,_aq_); - caml_call3(Stdlib_Format[129],fmt,_ar_,x$5); - return caml_call2(Stdlib_Format[129],fmt,_as_)} + caml_call2(Stdlib_Format[129],fmt,_al_); + caml_call3(Stdlib_Format[129],fmt,_am_,x$5); + return caml_call2(Stdlib_Format[129],fmt,_an_)} var x$6=param[2]; - caml_call2(Stdlib_Format[129],fmt,_at_); - caml_call3(Stdlib_Format[129],fmt,_au_,x$6); - return caml_call2(Stdlib_Format[129],fmt,_av_)} - function show(x){return caml_call3(Stdlib_Format[133],_aw_,pp,x)} + caml_call2(Stdlib_Format[129],fmt,_ao_); + caml_call3(Stdlib_Format[129],fmt,_ap_,x$6); + return caml_call2(Stdlib_Format[129],fmt,_aq_)} + function show(x){return caml_call3(Stdlib_Format[133],_ar_,pp,x)} function equal(a,b) {var a$0=a,b$0=b; for(;;) {if(typeof a$0 === "number") {if(870828711 === a$0 && 870828711 === b$0)return 1} else - {var _kd_=a$0[1]; - if(708012133 <= _kd_) + {var _or_=a$0[1]; + if(708012133 <= _or_) {var switch$0=0; - if(848054398 <= _kd_) - {if(928231259 === _kd_) + if(848054398 <= _or_) + {if(928231259 === _or_) {if(typeof b$0 !== "number" && 928231259 === b$0[1]) {var b$1=b$0[2],a$1=a$0[2];return caml_equal(a$1,b$1)}} else - if(963043957 === _kd_) + if(963043957 === _or_) {if(typeof b$0 !== "number" && 963043957 === b$0[1]) {var ys=b$0[2], xs=a$0[2], compare_keys= - function(param,_kj_) - {var key=_kj_[1],key$0=param[1]; + function(param,_ox_) + {var key=_ox_[1],key$0=param[1]; return caml_call2(Stdlib_String[9],key$0,key)}, xs$0=caml_call2(Stdlib_List[57],compare_keys,xs), ys$0=caml_call2(Stdlib_List[57],compare_keys,ys); try {var - _ke_= - function(param,_ki_) + _os_= + function(param,_ow_) {var - value=_ki_[2], - key=_ki_[1], + value=_ow_[2], + key=_ow_[1], value$0=param[2], key$0=param[1], match=caml_string_equal(key$0,key); return match?equal(value$0,value):0}, - result=caml_call3(Stdlib_List[34],_ke_,xs$0,ys$0); + result=caml_call3(Stdlib_List[34],_os_,xs$0,ys$0); return result} - catch(_kh_) - {_kh_ = caml_wrap_exception(_kh_); - if(_kh_[1] === Stdlib[6])return 0; - throw _kh_}}} + catch(_ov_) + {_ov_ = caml_wrap_exception(_ov_); + if(_ov_[1] === Stdlib[6])return 0; + throw _ov_}}} else if (! - (848054399 <= _kd_) + (848054399 <= _or_) && typeof b$0 !== @@ -36768,17 +34950,17 @@ b$0[1]) {var ys$1=b$0[2],xs$1=a$0[2];switch$0 = 1}} else - if(726928360 === _kd_) + if(726928360 === _or_) {if(typeof b$0 !== "number" && 726928360 === b$0[1]) {var ys$1=b$0[2],xs$1=a$0[2];switch$0 = 1}} else - if(737456202 === _kd_) + if(737456202 === _or_) {if(typeof b$0 !== "number" && 737456202 === b$0[1]) {var b$2=b$0[2],a$2=a$0[2];return caml_equal(a$2,b$2)}} else if (! - (708012134 <= _kd_) + (708012134 <= _or_) && typeof b$0 !== @@ -36788,9 +34970,9 @@ === b$0[1]) {var - _kf_=b$0[2], - value=_kf_[2], - name=_kf_[1], + _ot_=b$0[2], + value=_ot_[2], + name=_ot_[1], match=a$0[2], value$0=match[2], name$0=match[1], @@ -36807,23 +34989,23 @@ try {var result$0=caml_call3(Stdlib_List[34],equal,xs$1,ys$1); return result$0} - catch(_kg_) - {_kg_ = caml_wrap_exception(_kg_); - if(_kg_[1] === Stdlib[6])return 0; - throw _kg_}} + catch(_ou_) + {_ou_ = caml_wrap_exception(_ou_); + if(_ou_[1] === Stdlib[6])return 0; + throw _ou_}} else - if(-375152890 <= _kd_) - {if(3654863 === _kd_) + if(-375152890 <= _or_) + {if(3654863 === _or_) {if(typeof b$0 !== "number" && 3654863 === b$0[1]) {var b$4=b$0[2],a$4=a$0[2];return caml_equal(a$4,b$4)}} else - if(365180284 === _kd_) + if(365180284 === _or_) {if(typeof b$0 !== "number" && 365180284 === b$0[1]) {var b$5=b$0[2],a$5=a$0[2];return caml_equal(a$5,b$5)}} else if (! - (-375152889 <= _kd_) + (-375152889 <= _or_) && typeof b$0 !== @@ -36834,14 +35016,14 @@ b$0[1]) {var b$6=b$0[2],a$6=a$0[2];return caml_equal(a$6,b$6)}} else - if(-976970511 === _kd_) + if(-976970511 === _or_) {if(typeof b$0 !== "number" && -976970511 === b$0[1]) {var b$7=b$0[2],a$7=a$0[2];return caml_equal(a$7,b$7)}} else if (-752863768 === - _kd_ + _or_ && typeof b$0 !== @@ -36852,180 +35034,175 @@ b$0[1]) {var b$8=b$0[2],a$8=a$0[2];return caml_equal(a$8,b$8)}} return 0}} - var - array=Easy_format[2], - record=Easy_format[2], - _ax_=Easy_format[2], - tuple= - [0, - 0, - _ax_[2], - _ax_[3], - _ax_[4], - 0, - _ax_[6], - 0, - _ax_[8], - _ax_[9], - _ax_[10], - _ax_[11], - _ax_[12], - _ax_[13], - _ax_[14]], - _ay_=Easy_format[2], - variant= - [0, - _ay_[1], - _ay_[2], - _ay_[3], - _ay_[4], - 0, - _ay_[6], - _ay_[7], - _ay_[8], - _ay_[9], - _ay_[10], - _ay_[11], - _ay_[12], - _ay_[13], - _ay_[14]]; - function _az_(std,x) + function pp_list(sep,ppx,out,l) + {function pp_sep(out,param) + {return caml_call3(Stdlib_Format[129],out,_as_,sep)} + return caml_call4(Stdlib_Format[123],[0,pp_sep],ppx,out,l)} + function is_atom(x) + {if(typeof x !== "number") + {var _oq_=x[1],switch$0=0; + if(737456202 <= _oq_) + {if(848054398 === _oq_) + {if(x[2])switch$0 = 1} + else + if(963043957 <= _oq_ && x[2])switch$0 = 1} + else + if(708012133 === _oq_) + {if(x[2][2])switch$0 = 1} + else + if(726928360 <= _oq_ && x[2])switch$0 = 1; + if(switch$0)return 0} + return 1} + function format(inside_box,std,out,x) {var x$0=x; for(;;) - {if(typeof x$0 === "number")return [0,cst_null$0,Easy_format[1]]; - var _jT_=x$0[1]; - if(726928360 <= _jT_) - {if(737456202 === _jT_) - {var - x$1=x$0[2], - _jU_=Easy_format[1], - _jV_=x$1?cst_true$0:cst_false$0; - return [0,_jV_,_jU_]} - if(! (928231259 <= _jT_)) - {if(848054398 <= _jT_) - {var _jY_=x$0[2]; - if(_jY_) - {var _jZ_=function(_kc_){return _az_(std,_kc_)}; - return [1, - [0,cst$8,cst$7,cst$6,array], - caml_call2(Stdlib_List[19],_jZ_,_jY_)]} - return [0,cst$9,Easy_format[1]]} - var l=x$0[2]; - if(std){var x$2=[0,848054398,l],x$0=x$2;continue} - if(0 === l)return [0,cst$10,Easy_format[1]]; - var _j0_=function(_kb_){return _az_(std,_kb_)}; - return [1, - [0,cst$13,cst$12,cst$11,tuple], - caml_call2(Stdlib_List[19],_j0_,l)]} - if(963043957 <= _jT_) - {var _jW_=x$0[2]; - if(_jW_) - {var - _jX_= - function(param) + {if(typeof x$0 === "number") + return caml_call2(Stdlib_Format[13],out,cst_null$0); + var _nJ_=x$0[1]; + if(708012133 <= _nJ_) + {if(737456202 <= _nJ_) + {if(928231259 <= _nJ_) + {if(963043957 <= _nJ_) + {var _nK_=x$0[2]; + if(_nK_) + {if(1 - inside_box)caml_call2(Stdlib_Format[129],out,_at_); + var + _nL_= + function(out,param) + {var x=param[2],name=param[1],_ol_=1; + function _om_(_oo_,_op_){return format(_ol_,std,_oo_,_op_)} + var _on_=json_string_of_string(name); + return caml_call5(Stdlib_Format[129],out,_aF_,_on_,_om_,x)}, + _nM_= + function(_oj_,_ok_){return pp_list(cst$11,_nL_,_oj_,_ok_)}; + caml_call4(Stdlib_Format[129],out,_au_,_nM_,_nK_); + var _nN_=1 - inside_box; + return _nN_?caml_call2(Stdlib_Format[129],out,_av_):_nN_} + return caml_call2(Stdlib_Format[13],out,cst$12)} + var s=x$0[2]; + return caml_call2(Stdlib_Format[13],out,s)} + if(848054398 <= _nJ_) + {var _nO_=x$0[2]; + if(_nO_) + {if(1 - inside_box)caml_call2(Stdlib_Format[129],out,_aw_); + if(caml_call2(Stdlib_List[32],is_atom,_nO_)) {var - x=param[2], - name=param[1], - _j$_=json_string_of_string(name), - s=caml_call2(Stdlib_Printf[4],_aA_,_j$_), - _ka_=_az_(std,x); - return [2,[0,[0,s,Easy_format[1]],Easy_format[3]],_ka_]}; - return [1, - [0,cst$4,cst$3,cst$2,record], - caml_call2(Stdlib_List[19],_jX_,_jW_)]} - return [0,cst$5,Easy_format[1]]}} - else - {if(3654863 === _jT_) - {var x$3=x$0[2],_j1_=Easy_format[1]; - return [0,caml_call1(Stdlib[33],x$3),_j1_]} - if(365180284 <= _jT_) - {if(708012133 <= _jT_) - {var _j2_=x$0[2],_j3_=_j2_[2],_j4_=_j2_[1]; - if(_j3_) - {var x$4=_j3_[1]; - if(std) + _nP_=0, + _nQ_=function(_od_,_oe_){return format(_nP_,std,_od_,_oe_)}, + _nR_= + function(_ob_,_oc_){return pp_list(cst$13,_nQ_,_ob_,_oc_)}; + caml_call4(Stdlib_Format[129],out,_ax_,_nR_,_nO_)} + else {var - x$5=[0,848054398,[0,[0,-976970511,_j4_],[0,x$4,0]]], - x$0=x$5; - continue} - var - _j5_=json_string_of_string(_j4_), - _j6_=caml_call2(Stdlib[28],_j5_,cst$14), - op=caml_call2(Stdlib[28],cst$15,_j6_); - return [1,[0,op,cst$17,cst$16,variant],[0,_az_(std,x$4),0]]} - if(std){var x$6=[0,-976970511,_j4_],x$0=x$6;continue} - var - _j7_=Easy_format[1], - _j8_=json_string_of_string(_j4_), - _j9_=caml_call2(Stdlib[28],_j8_,cst$18); - return [0,caml_call2(Stdlib[28],cst$19,_j9_),_j7_]} - var x$7=x$0[2]; + _nT_=0, + _nU_=function(_oh_,_oi_){return format(_nT_,std,_oh_,_oi_)}, + _nV_= + function(_of_,_og_){return pp_list(cst$14,_nU_,_of_,_og_)}; + caml_call4(Stdlib_Format[129],out,_az_,_nV_,_nO_)} + var _nS_=1 - inside_box; + return _nS_?caml_call2(Stdlib_Format[129],out,_ay_):_nS_} + return caml_call2(Stdlib_Format[13],out,cst$15)} + var x$1=x$0[2]; + return caml_call2(Stdlib_Format[25],out,x$1)} + if(726928360 <= _nJ_) + {var l=x$0[2]; + if(std){var x$2=[0,848054398,l],x$0=x$2;continue} + if(0 === l)return caml_call2(Stdlib_Format[13],out,cst$16); + if(1 - inside_box)caml_call2(Stdlib_Format[129],out,_aA_); + var + _nW_=0, + _nX_=function(_n$_,_oa_){return format(_nW_,std,_n$_,_oa_)}, + _nY_=function(_n9_,_n__){return pp_list(cst$17,_nX_,_n9_,_n__)}; + caml_call4(Stdlib_Format[129],out,_aB_,_nY_,l); + var _nZ_=1 - inside_box; + return _nZ_?caml_call2(Stdlib_Format[129],out,_aC_):_nZ_} + var _n0_=x$0[2],_n1_=_n0_[2],_n2_=_n0_[1]; + if(_n1_) + {var x$3=_n1_[1]; + if(std) + {var + representation=[0,-976970511,_n2_], + x$4=[0,848054398,[0,representation,[0,x$3,0]]], + x$0=x$4; + continue} + var + op=json_string_of_string(_n2_), + _n3_=1, + _n4_=function(_n7_,_n8_){return format(_n3_,std,_n7_,_n8_)}; + return caml_call5(Stdlib_Format[129],out,_aD_,op,_n4_,x$3)} + if(std){var x$5=[0,-976970511,_n2_],x$0=x$5;continue} + var _n5_=json_string_of_string(_n2_); + return caml_call3(Stdlib_Format[129],out,_aE_,_n5_)} + if(-752863768 === _nJ_) + {var s$0=x$0[2];return caml_call2(Stdlib_Format[13],out,s$0)} + if(3654863 <= _nJ_) + {if(365180284 <= _nJ_) + {var x$6=x$0[2]; if(std) - {var ob$0=caml_call3(Bi_outbuf[3],0,0,20); - write_std_float(ob$0,x$7); - var s$0=caml_call1(Bi_outbuf[4],ob$0)} + {var ob$0=caml_call1(Stdlib_Buffer[1],20); + write_std_float(ob$0,x$6); + var s$1=caml_call1(Stdlib_Buffer[2],ob$0)} else - {var ob=caml_call3(Bi_outbuf[3],0,0,20); - write_float(ob,x$7); - var s$0=caml_call1(Bi_outbuf[4],ob)} - return [0,s$0,Easy_format[1]]} - if(! (-752863768 <= _jT_)) - {var s$1=x$0[2],_j__=Easy_format[1]; - return [0,json_string_of_string(s$1),_j__]}} - var s=x$0[2]; - return [0,s,Easy_format[1]]}} - function format(opt,x) + {var ob=caml_call1(Stdlib_Buffer[1],20); + write_float(ob,x$6); + var s$1=caml_call1(Stdlib_Buffer[2],ob)} + return caml_call2(Stdlib_Format[13],out,s$1)} + var x$7=x$0[2],_nI_=caml_call1(Stdlib[33],x$7); + return caml_call2(Stdlib_Format[13],out,_nI_)} + if(-375152890 <= _nJ_) + {var s$2=x$0[2];return caml_call2(Stdlib_Format[13],out,s$2)} + var s$3=x$0[2],_n6_=json_string_of_string(s$3); + return caml_call2(Stdlib_Format[13],out,_n6_)}} + function pp$0(opt,out,x) {if(opt)var sth=opt[1],std=sth;else var std=0; - if(std && ! is_object_or_array(x)) - return json_error(cst_Root_is_not_an_object_or_a$0); - return _az_(std,x)} - function to_string$0(std,x) - {var _jS_=format(std,x);return caml_call3(Easy_format[4][4],0,0,_jS_)} - function to_channel$0(std,oc,x) - {var _jR_=format(std,x);return caml_call4(Easy_format[4][5],0,0,oc,_jR_)} - function pretty_format(std,x){return format(std,x)} - function pretty_print(std,out,x) - {var _jQ_=pretty_format(std,x); - return caml_call2(Easy_format[4][2],out,_jQ_)} - function pretty_to_string(std,x){return to_string$0(std,x)} - function pretty_to_channel(std,oc,x){return to_channel$0(std,oc,x)} + var _nE_=1; + function _nF_(_nG_,_nH_){return format(_nE_,std,_nG_,_nH_)} + return caml_call4(Stdlib_Format[129],out,_aG_,_nF_,x)} + function pretty_print(std,out,x){return pp$0(std,out,x)} + function pretty_to_string(std,x) + {function _nB_(_nC_,_nD_){return pp$0(std,_nC_,_nD_)} + return caml_call3(Stdlib_Format[133],_aH_,_nB_,x)} + function pretty_to_channel(std,oc,x) + {var fmt=caml_call1(Stdlib_Format[108],oc); + function _ny_(_nz_,_nA_){return pp$0(std,_nz_,_nA_)} + return caml_call4(Stdlib_Format[129],fmt,_aI_,_ny_,x)} function hex$0(n) - {var _jP_=10 <= n?n + 87 | 0:n + 48 | 0; - return caml_call1(Stdlib_Char[1],_jP_)} + {var _nx_=10 <= n?n + 87 | 0:n + 48 | 0; + return caml_call1(Stdlib_Char[1],_nx_)} function write_special$0(src,start,stop,ob,str) - {caml_call4(Bi_outbuf[14],ob,src,start[1],stop - start[1] | 0); - caml_call2(Bi_outbuf[13],ob,str); + {caml_call4(Stdlib_Buffer[18],ob,src,start[1],stop - start[1] | 0); + caml_call2(Stdlib_Buffer[16],ob,str); start[1] = stop + 1 | 0; return 0} function finish_string$0(src,start,ob) {try {var - _jO_= + _nw_= caml_call4 - (Bi_outbuf[14], + (Stdlib_Buffer[18], ob, src, start[1], caml_ml_string_length(src) - start[1] | 0); - return _jO_} + return _nw_} catch(exc) {exc = caml_wrap_exception(exc); caml_call4 (Stdlib_Printf[3], - _aB_, + _aJ_, src, start[1], caml_ml_string_length(src) - start[1] | 0); throw exc}} function write_string$0(ob,s) - {caml_call2(Bi_outbuf[15],ob,34); - var start=[0,0],_jM_=caml_ml_string_length(s) - 1 | 0,_jL_=0; - if(! (_jM_ < 0)) - {var i$0=_jL_; + {caml_call2(Stdlib_Buffer[12],ob,34); + var start=[0,0],_nu_=caml_ml_string_length(s) - 1 | 0,_nt_=0; + if(! (_nu_ < 0)) + {var i=_nt_; for(;;) - {var c=caml_string_get(s,i$0); + {var c=caml_string_get(s,i); if(92 === c) - write_special$0(s,start,i$0,ob,cst$20); + write_special$0(s,start,i,ob,cst$18); else {var switch$0=0; if(35 <= c) @@ -37034,12 +35211,12 @@ if(8 <= c) {var switch$1=0; switch(c - 8 | 0) - {case 0:write_special$0(s,start,i$0,ob,cst_b$0);break; - case 1:write_special$0(s,start,i$0,ob,cst_t$0);break; - case 2:write_special$0(s,start,i$0,ob,cst_n$0);break; - case 4:write_special$0(s,start,i$0,ob,cst_f$0);break; - case 5:write_special$0(s,start,i$0,ob,cst_r$0);break; - case 26:write_special$0(s,start,i$0,ob,cst$21);break; + {case 0:write_special$0(s,start,i,ob,cst_b$0);break; + case 1:write_special$0(s,start,i,ob,cst_t$0);break; + case 2:write_special$0(s,start,i,ob,cst_n$0);break; + case 4:write_special$0(s,start,i,ob,cst_f$0);break; + case 5:write_special$0(s,start,i,ob,cst_r$0);break; + case 26:write_special$0(s,start,i,ob,cst$19);break; case 24: case 25:switch$0 = 2;switch$1 = 1;break; default:switch$0 = 1;switch$1 = 1}} @@ -37048,49 +35225,52 @@ switch(switch$0) {case 2:break; case 1: - caml_call4(Bi_outbuf[14],ob,s,start[1],i$0 - start[1] | 0); - var i=caml_call2(Bi_outbuf[10],ob,6),dst=ob[1]; - caml_call5(Stdlib_Bytes[12],cst_u00$0,0,dst,i,4); - caml_bytes_set(dst,i + 4 | 0,hex$0(c >>> 4 | 0)); - caml_bytes_set(dst,i + 5 | 0,hex$0(c & 15)); - start[1] = i$0 + 1 | 0; + caml_call4(Stdlib_Buffer[18],ob,s,start[1],i - start[1] | 0); + caml_call2(Stdlib_Buffer[16],ob,cst_u00$0); + var _nr_=hex$0(c >>> 4 | 0); + caml_call2(Stdlib_Buffer[12],ob,_nr_); + var _ns_=hex$0(c & 15); + caml_call2(Stdlib_Buffer[12],ob,_ns_); + start[1] = i + 1 | 0; break }} - var _jN_=i$0 + 1 | 0; - if(_jM_ !== i$0){var i$0=_jN_;continue} + var _nv_=i + 1 | 0; + if(_nu_ !== i){var i=_nv_;continue} break}} finish_string$0(s,start,ob); - return caml_call2(Bi_outbuf[15],ob,34)} + return caml_call2(Stdlib_Buffer[12],ob,34)} + function json_string_of_string$0(s) + {var ob=caml_call1(Stdlib_Buffer[1],10); + write_string$0(ob,s); + return caml_call1(Stdlib_Buffer[2],ob)} function write_null$0(ob,param) - {return caml_call2(Bi_outbuf[13],ob,cst_null$1)} + {return caml_call2(Stdlib_Buffer[16],ob,cst_null$1)} function write_bool$0(ob,x) - {var _jK_=x?cst_true$1:cst_false$1; - return caml_call2(Bi_outbuf[13],ob,_jK_)} + {var _nq_=x?cst_true$0:cst_false$0; + return caml_call2(Stdlib_Buffer[16],ob,_nq_)} var - _aC_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[20])), - _aD_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[19])), - max_digits$0=caml_call2(Stdlib[17],_aD_,_aC_); - function write_digits$0(s,pos,x) - {if(0 === x)return pos; + _aK_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[20])), + _aL_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[19])); + caml_call2(Stdlib[17],_aL_,_aK_); + function write_digits$0(s,x) + {if(0 === x)return 0; + var d=x % 10 | 0; + write_digits$0(s,x / 10 | 0); var - d=x % 10 | 0, - pos$0=write_digits$0(s,pos,x / 10 | 0), - n=caml_call1(Stdlib[18],d); - caml_bytes_set(s,pos$0,caml_call1(Stdlib_Char[1],n + 48 | 0)); - return pos$0 + 1 | 0} + n=caml_call1(Stdlib[18],d), + _np_=caml_call1(Stdlib_Char[1],n + 48 | 0); + return caml_call2(Stdlib_Buffer[12],s,_np_)} function write_int$0(ob,x) - {caml_call2(Bi_outbuf[9],ob,max_digits$0); - if(0 < x){ob[3] = write_digits$0(ob[1],ob[3],x);return 0} - if(0 <= x)return caml_call2(Bi_outbuf[15],ob,48); - var s=ob[1],pos=ob[3]; - caml_bytes_set(s,pos,45); - ob[3] = write_digits$0(s,pos + 1 | 0,x); - return 0} + {return 0 < x + ?write_digits$0(ob,x) + :0 <= x + ?caml_call2(Stdlib_Buffer[12],ob,48) + :(caml_call2(Stdlib_Buffer[12],ob,45),write_digits$0(ob,x))} function float_needs_period$0(s) {try - {var _jG_=caml_ml_string_length(s) - 1 | 0,_jF_=0; - if(! (_jG_ < 0)) - {var i=_jF_; + {var _nl_=caml_ml_string_length(s) - 1 | 0,_nk_=0; + if(! (_nl_ < 0)) + {var i=_nk_; for(;;) {var match=caml_string_get(s,i),switch$0=0; if(48 <= match) @@ -37098,111 +35278,87 @@ else if(45 === match)switch$0 = 1; if(! switch$0)throw Stdlib[3]; - var _jI_=i + 1 | 0; - if(_jG_ !== i){var i=_jI_;continue} + var _nn_=i + 1 | 0; + if(_nl_ !== i){var i=_nn_;continue} break}} - var _jH_=1; - return _jH_} - catch(_jJ_) - {_jJ_ = caml_wrap_exception(_jJ_); - if(_jJ_ === Stdlib[3])return 0; - throw _jJ_}} - function write_float_fast$0(ob,x) - {var match=caml_classify_float(x); - if(3 === match) - {var _jD_=0. < x?cst_Infinity$5:cst_Infinity$6; - return caml_call2(Bi_outbuf[13],ob,_jD_)} - if(4 <= match)return caml_call2(Bi_outbuf[13],ob,cst_NaN$2); - var s=caml_call2(Stdlib_Printf[4],_aE_,x); - caml_call2(Bi_outbuf[13],ob,s); - var _jE_=float_needs_period$0(s); - return _jE_?caml_call2(Bi_outbuf[13],ob,cst_0$4):_jE_} + var _nm_=1; + return _nm_} + catch(_no_) + {_no_ = caml_wrap_exception(_no_); + if(_no_ === Stdlib[3])return 0; + throw _no_}} function write_float$0(ob,x) {var match=caml_classify_float(x); if(3 === match) - {var _jB_=0. < x?cst_Infinity$7:cst_Infinity$8; - return caml_call2(Bi_outbuf[13],ob,_jB_)} - if(4 <= match)return caml_call2(Bi_outbuf[13],ob,cst_NaN$3); + {var _ni_=0. < x?cst_Infinity$3:cst_Infinity$4; + return caml_call2(Stdlib_Buffer[16],ob,_ni_)} + if(4 <= match)return caml_call2(Stdlib_Buffer[16],ob,cst_NaN$1); var - s1=caml_call2(Stdlib_Printf[4],_aF_,x), - s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_Printf[4],_aG_,x); - caml_call2(Bi_outbuf[13],ob,s); - var _jC_=float_needs_period$0(s); - return _jC_?caml_call2(Bi_outbuf[13],ob,cst_0$5):_jC_} + s1=caml_call2(Stdlib_Printf[4],_aM_,x), + s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_Printf[4],_aN_,x); + caml_call2(Stdlib_Buffer[16],ob,s); + var _nj_=float_needs_period$0(s); + return _nj_?caml_call2(Stdlib_Buffer[16],ob,cst_0$2):_nj_} function write_normal_float_prec$0(significant_figures,ob,x) {var switcher=significant_figures - 1 | 0; if(15 < switcher >>> 0) - var s=caml_call2(Stdlib_Printf[4],_aH_,x); + var s=caml_call2(Stdlib_Printf[4],_aO_,x); else switch(switcher) - {case 0:var s=caml_call2(Stdlib_Printf[4],_aI_,x);break; - case 1:var s=caml_call2(Stdlib_Printf[4],_aJ_,x);break; - case 2:var s=caml_call2(Stdlib_Printf[4],_aK_,x);break; - case 3:var s=caml_call2(Stdlib_Printf[4],_aL_,x);break; - case 4:var s=caml_call2(Stdlib_Printf[4],_aM_,x);break; - case 5:var s=caml_call2(Stdlib_Printf[4],_aN_,x);break; - case 6:var s=caml_call2(Stdlib_Printf[4],_aO_,x);break; - case 7:var s=caml_call2(Stdlib_Printf[4],_aP_,x);break; - case 8:var s=caml_call2(Stdlib_Printf[4],_aQ_,x);break; - case 9:var s=caml_call2(Stdlib_Printf[4],_aR_,x);break; - case 10:var s=caml_call2(Stdlib_Printf[4],_aS_,x);break; - case 11:var s=caml_call2(Stdlib_Printf[4],_aT_,x);break; - case 12:var s=caml_call2(Stdlib_Printf[4],_aU_,x);break; - case 13:var s=caml_call2(Stdlib_Printf[4],_aV_,x);break; - case 14:var s=caml_call2(Stdlib_Printf[4],_aW_,x);break; - default:var s=caml_call2(Stdlib_Printf[4],_aX_,x)} - caml_call2(Bi_outbuf[13],ob,s); - var _jA_=float_needs_period$0(s); - return _jA_?caml_call2(Bi_outbuf[13],ob,cst_0$6):_jA_} + {case 0:var s=caml_call2(Stdlib_Printf[4],_aP_,x);break; + case 1:var s=caml_call2(Stdlib_Printf[4],_aQ_,x);break; + case 2:var s=caml_call2(Stdlib_Printf[4],_aR_,x);break; + case 3:var s=caml_call2(Stdlib_Printf[4],_aS_,x);break; + case 4:var s=caml_call2(Stdlib_Printf[4],_aT_,x);break; + case 5:var s=caml_call2(Stdlib_Printf[4],_aU_,x);break; + case 6:var s=caml_call2(Stdlib_Printf[4],_aV_,x);break; + case 7:var s=caml_call2(Stdlib_Printf[4],_aW_,x);break; + case 8:var s=caml_call2(Stdlib_Printf[4],_aX_,x);break; + case 9:var s=caml_call2(Stdlib_Printf[4],_aY_,x);break; + case 10:var s=caml_call2(Stdlib_Printf[4],_aZ_,x);break; + case 11:var s=caml_call2(Stdlib_Printf[4],_a0_,x);break; + case 12:var s=caml_call2(Stdlib_Printf[4],_a1_,x);break; + case 13:var s=caml_call2(Stdlib_Printf[4],_a2_,x);break; + case 14:var s=caml_call2(Stdlib_Printf[4],_a3_,x);break; + default:var s=caml_call2(Stdlib_Printf[4],_a4_,x)} + caml_call2(Stdlib_Buffer[16],ob,s); + var _nh_=float_needs_period$0(s); + return _nh_?caml_call2(Stdlib_Buffer[16],ob,cst_0$3):_nh_} function write_float_prec$0(significant_figures,ob,x) {var match=caml_classify_float(x); if(3 === match) - {var _jz_=0. < x?cst_Infinity$9:cst_Infinity$10; - return caml_call2(Bi_outbuf[13],ob,_jz_)} + {var _ng_=0. < x?cst_Infinity$5:cst_Infinity$6; + return caml_call2(Stdlib_Buffer[16],ob,_ng_)} return 4 <= match - ?caml_call2(Bi_outbuf[13],ob,cst_NaN$4) + ?caml_call2(Stdlib_Buffer[16],ob,cst_NaN$2) :write_normal_float_prec$0(significant_figures,ob,x)} - function write_std_float_fast$0(ob,x) - {var match=caml_classify_float(x); - if(3 === match) - {var - _jx_= - 0. < x - ?cst_Infinity_value_not_allowed$5 - :cst_Infinity_value_not_allowed$6; - return json_error(_jx_)} - if(4 <= match)return json_error(cst_NaN_value_not_allowed_in_s$2); - var s=caml_call2(Stdlib_Printf[4],_aY_,x); - caml_call2(Bi_outbuf[13],ob,s); - var _jy_=float_needs_period$0(s); - return _jy_?caml_call2(Bi_outbuf[13],ob,cst_0$7):_jy_} function write_std_float$0(ob,x) {var match=caml_classify_float(x); if(3 === match) {var - _jv_= + _ne_= 0. < x - ?cst_Infinity_value_not_allowed$7 - :cst_Infinity_value_not_allowed$8; - return json_error(_jv_)} - if(4 <= match)return json_error(cst_NaN_value_not_allowed_in_s$3); + ?cst_Infinity_value_not_allowed$3 + :cst_Infinity_value_not_allowed$4; + return json_error(_ne_)} + if(4 <= match)return json_error(cst_NaN_value_not_allowed_in_s$1); var - s1=caml_call2(Stdlib_Printf[4],_aZ_,x), - s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_Printf[4],_a0_,x); - caml_call2(Bi_outbuf[13],ob,s); - var _jw_=float_needs_period$0(s); - return _jw_?caml_call2(Bi_outbuf[13],ob,cst_0$8):_jw_} + s1=caml_call2(Stdlib_Printf[4],_a5_,x), + s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_Printf[4],_a6_,x); + caml_call2(Stdlib_Buffer[16],ob,s); + var _nf_=float_needs_period$0(s); + return _nf_?caml_call2(Stdlib_Buffer[16],ob,cst_0$4):_nf_} function write_std_float_prec$0(significant_figures,ob,x) {var match=caml_classify_float(x); if(3 === match) {var - _ju_= + _nd_= 0. < x - ?cst_Infinity_value_not_allowed$9 - :cst_Infinity_value_not_allowed$10; - return json_error(_ju_)} + ?cst_Infinity_value_not_allowed$5 + :cst_Infinity_value_not_allowed$6; + return json_error(_nd_)} return 4 <= match - ?json_error(cst_NaN_value_not_allowed_in_s$4) + ?json_error(cst_NaN_value_not_allowed_in_s$2) :write_normal_float_prec$0(significant_figures,ob,x)} function iter2$0(f_elt,f_sep,x,param$0) {if(param$0) @@ -37218,227 +35374,333 @@ continue} return 0}} return 0} - function f_sep$0(ob){return caml_call2(Bi_outbuf[15],ob,44)} + function f_sep$0(ob){return caml_call2(Stdlib_Buffer[12],ob,44)} function write_list$0(ob,l) - {caml_call2(Bi_outbuf[15],ob,91); + {caml_call2(Stdlib_Buffer[12],ob,91); iter2$0(write_t$0,f_sep$0,ob,l); - return caml_call2(Bi_outbuf[15],ob,93)} + return caml_call2(Stdlib_Buffer[12],ob,93)} + function write_assoc$0(ob,l) + {function f_elt(ob,param) + {var x=param[2],s=param[1]; + write_string$0(ob,s); + caml_call2(Stdlib_Buffer[12],ob,58); + return write_t$0(ob,x)} + caml_call2(Stdlib_Buffer[12],ob,123); + iter2$0(f_elt,f_sep$0,ob,l); + return caml_call2(Stdlib_Buffer[12],ob,125)} function write_t$0(ob,x) {if(typeof x === "number")return write_null$0(ob,0); - var _jt_=x[1]; - if(365180284 <= _jt_) - {if(848054398 <= _jt_) - {if(963043957 <= _jt_){var l=x[2];return write_assoc$0(ob,l)} + var _nc_=x[1]; + if(365180284 <= _nc_) + {if(848054398 <= _nc_) + {if(963043957 <= _nc_){var l=x[2];return write_assoc$0(ob,l)} var l$0=x[2]; return write_list$0(ob,l$0)} - if(737456202 <= _jt_){var b=x[2];return write_bool$0(ob,b)} + if(737456202 <= _nc_){var b=x[2];return write_bool$0(ob,b)} var f=x[2]; return write_float$0(ob,f)} - if(3654863 <= _jt_){var i=x[2];return write_int$0(ob,i)} + if(3654863 <= _nc_){var i=x[2];return write_int$0(ob,i)} var s=x[2]; return write_string$0(ob,s)} - function write_assoc$0(ob,l) - {function f_elt(ob,param) - {var x=param[2],s=param[1]; - write_string$0(ob,s); - caml_call2(Bi_outbuf[15],ob,58); - return write_t$0(ob,x)} - caml_call2(Bi_outbuf[15],ob,123); - iter2$0(f_elt,f_sep$0,ob,l); - return caml_call2(Bi_outbuf[15],ob,125)} function write_std_json$0(ob,x) {if(typeof x === "number")return write_null$0(ob,0); - var _js_=x[1]; - if(365180284 <= _js_) - {if(848054398 <= _js_) - {if(963043957 <= _js_) + var _nb_=x[1]; + if(365180284 <= _nb_) + {if(848054398 <= _nb_) + {if(963043957 <= _nb_) {var l=x[2], f_elt= function(ob,param) {var x=param[2],s=param[1]; write_string$0(ob,s); - caml_call2(Bi_outbuf[15],ob,58); + caml_call2(Stdlib_Buffer[12],ob,58); return write_std_json$0(ob,x)}; - caml_call2(Bi_outbuf[15],ob,123); + caml_call2(Stdlib_Buffer[12],ob,123); iter2$0(f_elt,f_sep$0,ob,l); - return caml_call2(Bi_outbuf[15],ob,125)} + return caml_call2(Stdlib_Buffer[12],ob,125)} var l$0=x[2]; - caml_call2(Bi_outbuf[15],ob,91); + caml_call2(Stdlib_Buffer[12],ob,91); iter2$0(write_std_json$0,f_sep$0,ob,l$0); - return caml_call2(Bi_outbuf[15],ob,93)} - if(737456202 <= _js_){var b=x[2];return write_bool$0(ob,b)} + return caml_call2(Stdlib_Buffer[12],ob,93)} + if(737456202 <= _nb_){var b=x[2];return write_bool$0(ob,b)} var f=x[2]; return write_std_float$0(ob,f)} - if(3654863 <= _js_){var i=x[2];return write_int$0(ob,i)} + if(3654863 <= _nb_){var i=x[2];return write_int$0(ob,i)} var s=x[2]; return write_string$0(ob,s)} - function to_outbuf$0(opt,ob,x) - {if(opt)var sth=opt[1],std=sth;else var std=0; - return std - ?is_object_or_array(x) - ?write_std_json$0(ob,x) - :json_error(cst_Root_is_not_an_object_or_a$1) - :write_t$0(ob,x)} - function to_string$1(buf,opt,std,x) + function to_buffer$0(opt,_na_,ob,x) + {if(opt)var sth=opt[1],suf=sth;else var suf=cst$20; + if(_na_)var sth$0=_na_[1],std=sth$0;else var std=0; + if(std)write_std_json$0(ob,x);else write_t$0(ob,x); + return caml_call2(Stdlib_Buffer[16],ob,suf)} + function to_string$0(buf,opt,_m$_,std,x) {if(opt)var sth=opt[1],len=sth;else var len=256; + if(_m$_)var sth$0=_m$_[1],suf=sth$0;else var suf=cst$21; if(buf) - {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob} + {var ob=buf[1];caml_call1(Stdlib_Buffer[8],ob);var ob$0=ob} else - var ob$0=caml_call3(Bi_outbuf[3],0,0,len); - to_outbuf$0(std,ob$0,x); - var s=caml_call1(Bi_outbuf[4],ob$0); - caml_call1(Bi_outbuf[19],ob$0); + var ob$0=caml_call1(Stdlib_Buffer[1],len); + to_buffer$0([0,suf],std,ob$0,x); + var s=caml_call1(Stdlib_Buffer[2],ob$0); + caml_call1(Stdlib_Buffer[8],ob$0); return s} - function to_channel$1(buf,len,std,oc,x) - {if(buf) - var ob=buf[1],ob$0=ob; + function to_channel$0(buf,opt,_m__,std,oc,x) + {if(opt)var sth=opt[1],len=sth;else var len=4096; + if(_m__)var sth$0=_m__[1],suf=sth$0;else var suf=cst$22; + if(buf) + {var ob=buf[1];caml_call1(Stdlib_Buffer[8],ob);var ob$0=ob} else - var ob$0=caml_call3(Bi_outbuf[5],len,0,oc); - to_outbuf$0(std,ob$0,x); - return caml_call1(Bi_outbuf[6],ob$0)} - function to_output$0(buf,len,std,out,x) - {if(buf) - var ob=buf[1],ob$0=ob; + var ob$0=caml_call1(Stdlib_Buffer[1],len); + to_buffer$0([0,suf],std,ob$0,x); + caml_call2(Stdlib_Buffer[10],oc,ob$0); + return caml_call1(Stdlib_Buffer[8],ob$0)} + function to_output$0(buf,opt,_m8_,std,out,x) + {if(opt)var sth=opt[1],len=sth;else var len=4096; + if(_m8_)var sth$0=_m8_[1],suf=sth$0;else var suf=cst$23; + if(buf) + {var ob=buf[1];caml_call1(Stdlib_Buffer[8],ob);var ob$0=ob} else - var ob$0=caml_call3(Bi_outbuf[7],len,0,out); - to_outbuf$0(std,ob$0,x); - return caml_call1(Bi_outbuf[8],ob$0)} - function to_file$0(len,std,file,x) - {var oc=caml_call1(Stdlib[60],file); + var ob$0=caml_call1(Stdlib_Buffer[1],len); + to_buffer$0([0,suf],std,ob$0,x); + var _m9_=caml_call1(Stdlib_Buffer[7],ob$0); + caml_call4 + (caml_get_public_method(out,209784577,2), + out, + caml_call1(Stdlib_Buffer[2],ob$0), + 0, + _m9_); + return caml_call1(Stdlib_Buffer[8],ob$0)} + function to_file$0(len,std,opt,file,x) + {if(opt)var sth=opt[1],suf=sth;else var suf=cst$24; + var oc=caml_call1(Stdlib[60],file); try - {to_channel$1(0,len,std,oc,x); - var _jr_=caml_call1(Stdlib[76],oc); - return _jr_} + {to_channel$0(0,len,[0,suf],std,oc,x); + var _m7_=caml_call1(Stdlib[76],oc); + return _m7_} catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}} - function stream_to_outbuf$0(std,ob,st) - {function _jp_(_jq_){return to_outbuf$0(std,ob,_jq_)} - return caml_call2(Stdlib_Stream[8],_jp_,st)} - function stream_to_string$0(buf,opt,std,st) + function seq_to_buffer$0(opt,std,ob,st) + {if(opt)var sth=opt[1],suf=sth;else var suf=cst$25; + var _m4_=[0,suf]; + function _m5_(_m6_){return to_buffer$0(_m4_,std,ob,_m6_)} + return caml_call2(Stdlib_Seq[4],_m5_,st)} + function seq_to_string$0(buf,opt,_m3_,std,st) {if(opt)var sth=opt[1],len=sth;else var len=256; + if(_m3_)var sth$0=_m3_[1],suf=sth$0;else var suf=cst$26; if(buf) - {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob} + {var ob=buf[1];caml_call1(Stdlib_Buffer[8],ob);var ob$0=ob} else - var ob$0=caml_call3(Bi_outbuf[3],0,0,len); - stream_to_outbuf$0(std,ob$0,st); - var s=caml_call1(Bi_outbuf[4],ob$0); - caml_call1(Bi_outbuf[19],ob$0); + var ob$0=caml_call1(Stdlib_Buffer[1],len); + seq_to_buffer$0([0,suf],std,ob$0,st); + var s=caml_call1(Stdlib_Buffer[2],ob$0); + caml_call1(Stdlib_Buffer[8],ob$0); return s} - function stream_to_channel$0(buf,len,std,oc,st) - {if(buf) - var ob=buf[1],ob$0=ob; + function seq_to_channel$0(buf,opt,_m1_,std,oc,seq) + {if(opt)var sth=opt[1],len=sth;else var len=2096; + if(_m1_)var sth$0=_m1_[1],suf=sth$0;else var suf=cst$27; + if(buf) + {var ob=buf[1];caml_call1(Stdlib_Buffer[8],ob);var ob$0=ob} else - var ob$0=caml_call3(Bi_outbuf[5],len,0,oc); - stream_to_outbuf$0(std,ob$0,st); - return caml_call1(Bi_outbuf[6],ob$0)} - function stream_to_file$0(len,std,file,st) - {var oc=caml_call1(Stdlib[60],file); + var ob$0=caml_call1(Stdlib_Buffer[1],len); + function _m2_(json) + {to_buffer$0([0,suf],std,ob$0,json); + caml_call2(Stdlib_Buffer[10],oc,ob$0); + return caml_call1(Stdlib_Buffer[8],ob$0)} + return caml_call2(Stdlib_Seq[4],_m2_,seq)} + function seq_to_file$0(len,opt,std,file,st) + {if(opt)var sth=opt[1],suf=sth;else var suf=cst$28; + var oc=caml_call1(Stdlib[60],file); try - {stream_to_channel$0(0,len,std,oc,st); - var _jo_=caml_call1(Stdlib[76],oc); - return _jo_} + {seq_to_channel$0(0,len,[0,suf],std,oc,st); + var _m0_=caml_call1(Stdlib[76],oc); + return _m0_} catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}} function sort$0(x) {if(typeof x !== "number") - {var _ji_=x[1]; - if(848054398 === _ji_) - {var l=x[2],_jj_=caml_call2(Stdlib_List[21],sort$0,l); - return [0,848054398,caml_call1(Stdlib_List[9],_jj_)]} - if(963043957 === _ji_) + {var _mU_=x[1]; + if(848054398 === _mU_) + {var l=x[2],_mV_=caml_call2(Stdlib_List[21],sort$0,l); + return [0,848054398,caml_call1(Stdlib_List[9],_mV_)]} + if(963043957 === _mU_) {var l$0=x[2], - _jk_= + _mW_= function(param){var v=param[2],k=param[1];return [0,k,sort$0(v)]}, - _jl_=caml_call2(Stdlib_List[21],_jk_,l$0), - l$1=caml_call1(Stdlib_List[9],_jl_), - _jm_= - function(param,_jn_) - {var b=_jn_[1],a=param[1]; + _mX_=caml_call2(Stdlib_List[21],_mW_,l$0), + l$1=caml_call1(Stdlib_List[9],_mX_), + _mY_= + function(param,_mZ_) + {var b=_mZ_[1],a=param[1]; return caml_call2(Stdlib_String[9],a,b)}; - return [0,963043957,caml_call2(Stdlib_List[57],_jm_,l$1)]}} + return [0,963043957,caml_call2(Stdlib_List[57],_mY_,l$1)]}} return x} - function pp$0(fmt,param) + function pp_list$0(sep,ppx,out,l) + {function pp_sep(out,param) + {return caml_call3(Stdlib_Format[129],out,_a7_,sep)} + return caml_call4(Stdlib_Format[123],[0,pp_sep],ppx,out,l)} + function is_atom$0(x) + {if(typeof x !== "number") + {var _mT_=x[1],switch$0=0; + if(737456202 <= _mT_) + {if(848054398 === _mT_) + {if(x[2])switch$0 = 1} + else + if(963043957 <= _mT_ && x[2])switch$0 = 1} + else + if(708012133 === _mT_) + {if(x[2][2])switch$0 = 1} + else + if(726928360 <= _mT_ && x[2])switch$0 = 1; + if(switch$0)return 0} + return 1} + function format$0(inside_box,std,out,x) + {if(typeof x === "number") + return caml_call2(Stdlib_Format[13],out,cst_null$2); + var _mq_=x[1]; + if(365180284 <= _mq_) + {if(848054398 <= _mq_) + {if(963043957 <= _mq_) + {var _mr_=x[2]; + if(_mr_) + {if(1 - inside_box)caml_call2(Stdlib_Format[129],out,_a8_); + var + _ms_= + function(out,param) + {var x=param[2],name=param[1],_mO_=1; + function _mP_(_mR_,_mS_) + {return format$0(_mO_,std,_mR_,_mS_)} + var _mQ_=json_string_of_string$0(name); + return caml_call5(Stdlib_Format[129],out,_bd_,_mQ_,_mP_,x)}, + _mt_= + function(_mM_,_mN_){return pp_list$0(cst$29,_ms_,_mM_,_mN_)}; + caml_call4(Stdlib_Format[129],out,_a9_,_mt_,_mr_); + var _mu_=1 - inside_box; + return _mu_?caml_call2(Stdlib_Format[129],out,_a__):_mu_} + return caml_call2(Stdlib_Format[13],out,cst$30)} + var _mv_=x[2]; + if(_mv_) + {if(1 - inside_box)caml_call2(Stdlib_Format[129],out,_a$_); + if(caml_call2(Stdlib_List[32],is_atom$0,_mv_)) + {var + _mw_=0, + _mx_=function(_mG_,_mH_){return format$0(_mw_,std,_mG_,_mH_)}, + _my_= + function(_mE_,_mF_){return pp_list$0(cst$31,_mx_,_mE_,_mF_)}; + caml_call4(Stdlib_Format[129],out,_ba_,_my_,_mv_)} + else + {var + _mA_=0, + _mB_=function(_mK_,_mL_){return format$0(_mA_,std,_mK_,_mL_)}, + _mC_= + function(_mI_,_mJ_){return pp_list$0(cst$32,_mB_,_mI_,_mJ_)}; + caml_call4(Stdlib_Format[129],out,_bc_,_mC_,_mv_)} + var _mz_=1 - inside_box; + return _mz_?caml_call2(Stdlib_Format[129],out,_bb_):_mz_} + return caml_call2(Stdlib_Format[13],out,cst$33)} + if(737456202 <= _mq_) + {var x$0=x[2];return caml_call2(Stdlib_Format[25],out,x$0)} + var x$1=x[2]; + if(std) + {var ob$0=caml_call1(Stdlib_Buffer[1],20); + write_std_float$0(ob$0,x$1); + var s=caml_call1(Stdlib_Buffer[2],ob$0)} + else + {var ob=caml_call1(Stdlib_Buffer[1],20); + write_float$0(ob,x$1); + var s=caml_call1(Stdlib_Buffer[2],ob)} + return caml_call2(Stdlib_Format[13],out,s)} + if(3654863 <= _mq_) + {var x$2=x[2],_mp_=caml_call1(Stdlib[33],x$2); + return caml_call2(Stdlib_Format[13],out,_mp_)} + var s$0=x[2],_mD_=json_string_of_string$0(s$0); + return caml_call2(Stdlib_Format[13],out,_mD_)} + function pp$1(opt,out,x) + {if(opt)var sth=opt[1],std=sth;else var std=0; + var _ml_=1; + function _mm_(_mn_,_mo_){return format$0(_ml_,std,_mn_,_mo_)} + return caml_call4(Stdlib_Format[129],out,_be_,_mm_,x)} + function pp$2(fmt,param) {if(typeof param === "number") return caml_call2(Stdlib_Format[13],fmt,cst_Null$0); - var _jd_=param[1]; - if(365180284 <= _jd_) - {if(848054398 <= _jd_) - {if(963043957 <= _jd_) + var _mg_=param[1]; + if(365180284 <= _mg_) + {if(848054398 <= _mg_) + {if(963043957 <= _mg_) {var xs=param[2]; - caml_call2(Stdlib_Format[129],fmt,_a1_); - caml_call2(Stdlib_Format[129],fmt,_a2_); + caml_call2(Stdlib_Format[129],fmt,_bh_); + caml_call2(Stdlib_Format[129],fmt,_bi_); var - _je_=0, - _jf_= + _mh_=0, + _mi_= function(sep,param) {var value=param[2],key=param[1]; - if(sep)caml_call2(Stdlib_Format[129],fmt,_a3_); - caml_call2(Stdlib_Format[129],fmt,_a4_); - caml_call3(Stdlib_Format[129],fmt,_a5_,key); - caml_call2(Stdlib_Format[129],fmt,_a6_); - pp$0(fmt,value); - caml_call2(Stdlib_Format[129],fmt,_a7_); + if(sep)caml_call2(Stdlib_Format[129],fmt,_bj_); + caml_call2(Stdlib_Format[129],fmt,_bk_); + caml_call3(Stdlib_Format[129],fmt,_bl_,key); + caml_call2(Stdlib_Format[129],fmt,_bm_); + pp$2(fmt,value); + caml_call2(Stdlib_Format[129],fmt,_bn_); return 1}; - caml_call3(Stdlib_List[25],_jf_,_je_,xs); - caml_call2(Stdlib_Format[129],fmt,_a8_); - return caml_call2(Stdlib_Format[129],fmt,_a9_)} + caml_call3(Stdlib_List[25],_mi_,_mh_,xs); + caml_call2(Stdlib_Format[129],fmt,_bo_); + return caml_call2(Stdlib_Format[129],fmt,_bp_)} var xs$0=param[2]; - caml_call2(Stdlib_Format[129],fmt,_a__); - caml_call2(Stdlib_Format[129],fmt,_a$_); + caml_call2(Stdlib_Format[129],fmt,_bq_); + caml_call2(Stdlib_Format[129],fmt,_br_); var - _jg_=0, - _jh_= + _mj_=0, + _mk_= function(sep,x) - {if(sep)caml_call2(Stdlib_Format[129],fmt,_ba_); - pp$0(fmt,x); + {if(sep)caml_call2(Stdlib_Format[129],fmt,_bs_); + pp$2(fmt,x); return 1}; - caml_call3(Stdlib_List[25],_jh_,_jg_,xs$0); - caml_call2(Stdlib_Format[129],fmt,_bb_); - return caml_call2(Stdlib_Format[129],fmt,_bc_)} - if(737456202 <= _jd_) + caml_call3(Stdlib_List[25],_mk_,_mj_,xs$0); + caml_call2(Stdlib_Format[129],fmt,_bt_); + return caml_call2(Stdlib_Format[129],fmt,_bu_)} + if(737456202 <= _mg_) {var x=param[2]; - caml_call2(Stdlib_Format[129],fmt,_bd_); - caml_call3(Stdlib_Format[129],fmt,_be_,x); - return caml_call2(Stdlib_Format[129],fmt,_bf_)} + caml_call2(Stdlib_Format[129],fmt,_bv_); + caml_call3(Stdlib_Format[129],fmt,_bw_,x); + return caml_call2(Stdlib_Format[129],fmt,_bx_)} var x$0=param[2]; - caml_call2(Stdlib_Format[129],fmt,_bg_); - caml_call3(Stdlib_Format[129],fmt,_bh_,x$0); - return caml_call2(Stdlib_Format[129],fmt,_bi_)} - if(3654863 <= _jd_) + caml_call2(Stdlib_Format[129],fmt,_by_); + caml_call3(Stdlib_Format[129],fmt,_bz_,x$0); + return caml_call2(Stdlib_Format[129],fmt,_bA_)} + if(3654863 <= _mg_) {var x$1=param[2]; - caml_call2(Stdlib_Format[129],fmt,_bj_); - caml_call3(Stdlib_Format[129],fmt,_bk_,x$1); - return caml_call2(Stdlib_Format[129],fmt,_bl_)} + caml_call2(Stdlib_Format[129],fmt,_bB_); + caml_call3(Stdlib_Format[129],fmt,_bC_,x$1); + return caml_call2(Stdlib_Format[129],fmt,_bD_)} var x$2=param[2]; - caml_call2(Stdlib_Format[129],fmt,_bm_); - caml_call3(Stdlib_Format[129],fmt,_bn_,x$2); - return caml_call2(Stdlib_Format[129],fmt,_bo_)} - function show$0(x){return caml_call3(Stdlib_Format[133],_bp_,pp$0,x)} + caml_call2(Stdlib_Format[129],fmt,_bE_); + caml_call3(Stdlib_Format[129],fmt,_bF_,x$2); + return caml_call2(Stdlib_Format[129],fmt,_bG_)} + function show$0(x){return caml_call3(Stdlib_Format[133],_bH_,pp$2,x)} function equal$0(a,b) {if(typeof a === "number") {if(870828711 === a && 870828711 === b)return 1} else - {var _i9_=a[1]; - if(365180285 <= _i9_) - {if(737456202 === _i9_) + {var _ma_=a[1]; + if(365180285 <= _ma_) + {if(737456202 === _ma_) {if(typeof b !== "number" && 737456202 === b[1]) {var b$0=b[2],a$0=a[2];return caml_equal(a$0,b$0)}} else - if(848054398 === _i9_) + if(848054398 === _ma_) {if(typeof b !== "number" && 848054398 === b[1]) {var ys=b[2],xs=a[2]; try {var result=caml_call3(Stdlib_List[34],equal$0,xs,ys); return result} - catch(_i$_) - {_i$_ = caml_wrap_exception(_i$_); - if(_i$_[1] === Stdlib[6])return 0; - throw _i$_}}} + catch(_mc_) + {_mc_ = caml_wrap_exception(_mc_); + if(_mc_[1] === Stdlib[6])return 0; + throw _mc_}}} else if (963043957 === - _i9_ + _ma_ && typeof b !== @@ -37451,47 +35713,49 @@ ys$0=b[2], xs$0=a[2], compare_keys= - function(param,_jc_) - {var key=_jc_[1],key$0=param[1]; + function(param,_mf_) + {var key=_mf_[1],key$0=param[1]; return caml_call2(Stdlib_String[9],key$0,key)}, xs$1=caml_call2(Stdlib_List[57],compare_keys,xs$0), ys$1=caml_call2(Stdlib_List[57],compare_keys,ys$0); try {var - _i__= - function(param,_jb_) + _mb_= + function(param,_me_) {var - value=_jb_[2], - key=_jb_[1], + value=_me_[2], + key=_me_[1], value$0=param[2], key$0=param[1], match=caml_string_equal(key$0,key); return match?equal$0(value$0,value):0}, - result$0=caml_call3(Stdlib_List[34],_i__,xs$1,ys$1); + result$0=caml_call3(Stdlib_List[34],_mb_,xs$1,ys$1); return result$0} - catch(_ja_) - {_ja_ = caml_wrap_exception(_ja_); - if(_ja_[1] === Stdlib[6])return 0; - throw _ja_}}} + catch(_md_) + {_md_ = caml_wrap_exception(_md_); + if(_md_[1] === Stdlib[6])return 0; + throw _md_}}} else - if(-976970511 === _i9_) + if(-976970511 === _ma_) {if(typeof b !== "number" && -976970511 === b[1]) {var b$1=b[2],a$1=a[2];return caml_equal(a$1,b$1)}} else - if(3654863 === _i9_) + if(3654863 === _ma_) {if(typeof b !== "number" && 3654863 === b[1]) {var b$2=b[2],a$2=a[2];return caml_equal(a$2,b$2)}} else if - (365180284 <= _i9_ && typeof b !== "number" && 365180284 === b[1]) + (365180284 <= _ma_ && typeof b !== "number" && 365180284 === b[1]) {var b$3=b[2],a$3=a[2];return caml_equal(a$3,b$3)}} return 0} - function pretty_format$0(std,x){return format(std,x)} - function pretty_print$0(std,out,x) - {var _i8_=pretty_format$0(std,x); - return caml_call2(Easy_format[4][2],out,_i8_)} - function pretty_to_string$0(std,x){return to_string$0(std,x)} - function pretty_to_channel$0(std,oc,x){return to_channel$0(std,oc,x)} + function pretty_print$0(std,out,x){return pp$1(std,out,x)} + function pretty_to_string$0(std,x) + {function _l9_(_l__,_l$_){return pp$1(std,_l__,_l$_)} + return caml_call3(Stdlib_Format[133],_bf_,_l9_,x)} + function pretty_to_channel$0(std,oc,x) + {var fmt=caml_call1(Stdlib_Format[108],oc); + function _l6_(_l7_,_l8_){return pp$1(std,_l7_,_l8_)} + return caml_call4(Stdlib_Format[129],fmt,_bg_,_l6_,x)} var from_channel=Stdlib_Lexing[2], from_string=Stdlib_Lexing[3], @@ -37506,43 +35770,43 @@ if(! (71 <= c))return (c - 65 | 0) + 10 | 0} else if(! (9 < c - 48 >>> 0))return c - 48 | 0; - throw [0,Assert_failure,_bq_]} + throw [0,Assert_failure,_bI_]} function custom_error(descr,v,lexbuf) {var offs=lexbuf[4] - 1 | 0, bol=v[3], pos1=((offs + lexbuf[5] | 0) - bol | 0) - 1 | 0, pos2=caml_call2(Stdlib[17],pos1,(offs + lexbuf[6] | 0) - bol | 0), - _i7_=v[4]; - if(_i7_) - var s=_i7_[1],file_line=caml_call2(Stdlib_Printf[4],_br_,s); + _l5_=v[4]; + if(_l5_) + var s=_l5_[1],file_line=caml_call2(Stdlib_Printf[4],_bJ_,s); else var file_line=cst_Line; var bytes= pos1 === pos2 - ?caml_call2(Stdlib_Printf[4],_bs_,pos1 + 1 | 0) - :caml_call3(Stdlib_Printf[4],_bu_,pos1 + 1 | 0,pos2 + 1 | 0), - msg=caml_call5(Stdlib_Printf[4],_bt_,file_line,v[2],bytes,descr); + ?caml_call2(Stdlib_Printf[4],_bK_,pos1 + 1 | 0) + :caml_call3(Stdlib_Printf[4],_bM_,pos1 + 1 | 0,pos2 + 1 | 0), + msg=caml_call5(Stdlib_Printf[4],_bL_,file_line,v[2],bytes,descr); return json_error(msg)} function lexer_error(descr,v,lexbuf) - {var _i6_=caml_call1(lexeme,lexbuf); + {var _l4_=caml_call1(lexeme,lexbuf); return custom_error - (caml_call3(Stdlib_Printf[4],_bv_,descr,_i6_),v,lexbuf)} - var read_junk=[0,function(param){throw [0,Assert_failure,_bw_]}]; + (caml_call3(Stdlib_Printf[4],_bN_,descr,_l4_),v,lexbuf)} + var read_junk=[0,function(param){throw [0,Assert_failure,_bO_]}]; function long_error(descr,v,lexbuf) {var junk=caml_call1(lexeme,lexbuf), extra_junk=caml_call1(read_junk[1],lexbuf); return custom_error - (caml_call4(Stdlib_Printf[4],_bx_,descr,junk,extra_junk), + (caml_call4(Stdlib_Printf[4],_bP_,descr,junk,extra_junk), v, lexbuf)} var - _by_=0 === (Stdlib[20] % 10 | 0)?0:1, - min10=(Stdlib[20] / 10 | 0) - _by_ | 0, - _bz_=0 === (Stdlib[19] % 10 | 0)?0:1, - max10=(Stdlib[19] / 10 | 0) + _bz_ | 0, + _bQ_=0 === (Stdlib[20] % 10 | 0)?0:1, + min10=(Stdlib[20] / 10 | 0) - _bQ_ | 0, + _bR_=0 === (Stdlib[19] % 10 | 0)?0:1, + max10=(Stdlib[19] / 10 | 0) + _bR_ | 0, Int_overflow=[248,cst_Yojson_Basic_Int_overflow,caml_fresh_oo_id(0)]; function extract_positive_int(lexbuf) {var @@ -37550,15 +35814,15 @@ stop=lexbuf[6], s=lexbuf[2], n=[0,0], - _i3_=stop - 1 | 0; - if(! (_i3_ < start)) + _l1_=stop - 1 | 0; + if(! (_l1_ < start)) {var i=start; for(;;) {if(max10 <= n[1])throw Int_overflow; - var _i4_=caml_bytes_get(s,i) - 48 | 0; - n[1] = (10 * n[1] | 0) + _i4_ | 0; - var _i5_=i + 1 | 0; - if(_i3_ !== i){var i=_i5_;continue} + var _l2_=caml_bytes_get(s,i) - 48 | 0; + n[1] = (10 * n[1] | 0) + _l2_ | 0; + var _l3_=i + 1 | 0; + if(_l1_ !== i){var i=_l3_;continue} break}} if(0 <= n[1])return n[1]; throw Int_overflow} @@ -37568,15 +35832,15 @@ stop=lexbuf[6], s=lexbuf[2], n=[0,0], - _i0_=stop - 1 | 0; - if(! (_i0_ < start)) + _lY_=stop - 1 | 0; + if(! (_lY_ < start)) {var i=start; for(;;) {if(n[1] <= min10)throw Int_overflow; - var _i1_=caml_bytes_get(s,i) - 48 | 0; - n[1] = (10 * n[1] | 0) - _i1_ | 0; - var _i2_=i + 1 | 0; - if(_i0_ !== i){var i=_i2_;continue} + var _lZ_=caml_bytes_get(s,i) - 48 | 0; + n[1] = (10 * n[1] | 0) - _lZ_ | 0; + var _l0_=i + 1 | 0; + if(_lY_ !== i){var i=_l0_;continue} break}} if(0 < n[1])throw Int_overflow; return n[1]} @@ -37584,209 +35848,13 @@ {v[2] = v[2] + 1 | 0;v[3] = lexbuf[4] + lexbuf[6] | 0;return 0} function add_lexeme(buf,lexbuf) {var len=lexbuf[6] - lexbuf[5] | 0; - return caml_call4(Bi_outbuf[12],buf,lexbuf[2],lexbuf[5],len)} - function read_colon(v,lexbuf) - {var ocaml_lex_state=297; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error(cst_Expected_but_found$8,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$28,v,lexbuf)}}} - function read_object_sep(v,lexbuf) - {var ocaml_lex_state=292; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:throw End_of_object; - case 2:return long_error(cst_Expected_or_but_found$8,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$27,v,lexbuf)}}} - function read_object_end(lexbuf) - {var ocaml_lex_state=290; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0)throw End_of_object; - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function read_array_sep(v,lexbuf) - {var ocaml_lex_state=257; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:throw End_of_array; - case 2:return long_error(cst_Expected_or_but_found$1,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$21,v,lexbuf)}}} - function read_array_end(lexbuf) - {var ocaml_lex_state=255; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0)throw End_of_array; - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function finish_escaped_char(v,lexbuf) - {var ocaml_lex_state=68; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(8 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0: - var c=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5]); - return caml_call2(Bi_outbuf[15],v[1],c); - case 1:return caml_call2(Bi_outbuf[15],v[1],8); - case 2:return caml_call2(Bi_outbuf[15],v[1],12); - case 3:return caml_call2(Bi_outbuf[15],v[1],10); - case 4:return caml_call2(Bi_outbuf[15],v[1],13); - case 5:return caml_call2(Bi_outbuf[15],v[1],9); - case 6: - var - a=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 1 | 0), - b=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 2 | 0), - c$0=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 3 | 0), - d=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 4 | 0), - _iU_=hex$1(d), - _iV_=hex$1(c$0) << 4, - _iW_=hex$1(b) << 8, - x=hex$1(a) << 12 | _iW_ | _iV_ | _iU_; - if(55296 <= x && ! (56319 < x)) - {var ocaml_lex_state$1=82; - for(;;) - {var - ocaml_lex_state$2= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$1,lexbuf); - if(2 < ocaml_lex_state$2 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$1=ocaml_lex_state$2; - continue} - switch(ocaml_lex_state$2) - {case 0: - var - a$0=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 2 | 0), - b$0=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 3 | 0), - c$1=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 4 | 0), - d$0=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 5 | 0), - _iX_=hex$1(d$0), - _iY_=hex$1(c$1) << 4, - _iZ_=hex$1(b$0) << 8, - y=hex$1(a$0) << 12 | _iZ_ | _iY_ | _iX_; - if(56320 <= y && ! (57343 < y)) - return utf8_of_surrogate_pair(v[1],x,y); - return long_error(cst_Invalid_low_surrogate_for_,v,lexbuf); - case 1: - return long_error(cst_Missing_escape_sequence_re,v,lexbuf); - default: - return custom_error(cst_Unexpected_end_of_input$3,v,lexbuf)}}} - return utf8_of_code(v[1],x); - case 7:return long_error(cst_Invalid_escape_sequence,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$2,v,lexbuf)}}} - function finish_string$1(v,lexbuf) - {a: - for(;;) - {var ocaml_lex_state=58; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return caml_call1(Bi_outbuf[4],v[1]); - case 1:finish_escaped_char(v,lexbuf);continue a; - case 2:add_lexeme(v[1],lexbuf);continue a; - default: - return custom_error(cst_Unexpected_end_of_input$0,v,lexbuf)}}}} - function read_ident(v,lexbuf) - {var ocaml_lex_state=237; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0: - caml_call1(Bi_outbuf[19],v[1]);return finish_string$1(v,lexbuf); - case 1: - var s=caml_call3(sub_lexeme,lexbuf,lexbuf[5],lexbuf[6]);return s; - case 2:return long_error(cst_Expected_string_or_identif,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$17,v,lexbuf)}}} - function finish_comment(v,lexbuf) - {a: - for(;;) - {var ocaml_lex_state=125; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error(cst_Unterminated_comment,v,lexbuf); - case 2:newline(v,lexbuf);continue a; - default:continue a}}}} - function read_space(v,lexbuf) - {a: - for(;;) - {var ocaml_lex_state=133; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(4 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:newline(v,lexbuf);continue a; - case 1:finish_comment(v,lexbuf);continue a; - case 2:newline(v,lexbuf);continue a; - case 3:continue a; - default:return 0}}}} + return caml_call4(Stdlib_Buffer[19],buf,lexbuf[2],lexbuf[5],len)} function read_json$2(counter,v,lexbuf) - {var _iT_=0; + {var _lX_=0; if(counter < 50) {var counter$0=counter + 1 | 0; - return ocaml_lex_read_json_rec(counter$0,v,lexbuf,_iT_)} - return caml_trampoline_return(ocaml_lex_read_json_rec,[0,v,lexbuf,_iT_])} + return ocaml_lex_read_json_rec(counter$0,v,lexbuf,_lX_)} + return caml_trampoline_return(ocaml_lex_read_json_rec,[0,v,lexbuf,_lX_])} function ocaml_lex_read_json_rec(counter,v,lexbuf,ocaml_lex_state) {var ocaml_lex_state$0=ocaml_lex_state; for(;;) @@ -37798,31 +35866,31 @@ var ocaml_lex_state$0=ocaml_lex_state$1; continue} switch(ocaml_lex_state$1) - {case 0:return _bA_; - case 1:return _bB_; + {case 0:return _bS_; + case 1:return _bT_; case 2:return 870828711; case 3:return [0,365180284,Stdlib[24]]; case 4:return [0,365180284,Stdlib[22]]; case 5:return [0,365180284,Stdlib[23]]; case 6: - caml_call1(Bi_outbuf[19],v[1]); + caml_call1(Stdlib_Buffer[8],v[1]); return [0,-976970511,finish_string$1(v,lexbuf)]; case 7: try - {var _iJ_=[0,3654863,extract_positive_int(lexbuf)];return _iJ_} - catch(_iS_) - {_iS_ = caml_wrap_exception(_iS_); - if(_iS_ === Int_overflow) + {var _lN_=[0,3654863,extract_positive_int(lexbuf)];return _lN_} + catch(_lW_) + {_lW_ = caml_wrap_exception(_lW_); + if(_lW_ === Int_overflow) return lexer_error(cst_Int_overflow,v,lexbuf); - throw _iS_} + throw _lW_} case 8: try - {var _iK_=[0,3654863,extract_negative_int(lexbuf)];return _iK_} - catch(_iR_) - {_iR_ = caml_wrap_exception(_iR_); - if(_iR_ === Int_overflow) + {var _lO_=[0,3654863,extract_negative_int(lexbuf)];return _lO_} + catch(_lV_) + {_lV_ = caml_wrap_exception(_lV_); + if(_lV_ === Int_overflow) return lexer_error(cst_Int_overflow$0,v,lexbuf); - throw _iR_} + throw _lV_} case 9: return [0, 365180284, @@ -37836,8 +35904,8 @@ read_space(v,lexbuf); read_colon(v,lexbuf); read_space(v,lexbuf); - var _iL_=acc[1]; - acc[1] = [0,[0,field_name,read_json(v,lexbuf)],_iL_]; + var _lP_=acc[1]; + acc[1] = [0,[0,field_name,read_json(v,lexbuf)],_lP_]; for(;;) {read_space(v,lexbuf); read_object_sep(v,lexbuf); @@ -37846,33 +35914,33 @@ read_space(v,lexbuf); read_colon(v,lexbuf); read_space(v,lexbuf); - var _iM_=acc[1]; - acc[1] = [0,[0,field_name$0,read_json(v,lexbuf)],_iM_]; + var _lQ_=acc[1]; + acc[1] = [0,[0,field_name$0,read_json(v,lexbuf)],_lQ_]; continue}} - catch(_iQ_) - {_iQ_ = caml_wrap_exception(_iQ_); - if(_iQ_ === End_of_object) + catch(_lU_) + {_lU_ = caml_wrap_exception(_lU_); + if(_lU_ === End_of_object) return [0,963043957,caml_call1(Stdlib_List[9],acc[1])]; - throw _iQ_} + throw _lU_} case 11: var acc$0=[0,0]; try {read_space(v,lexbuf); read_array_end(lexbuf); - var _iN_=acc$0[1]; - acc$0[1] = [0,read_json(v,lexbuf),_iN_]; + var _lR_=acc$0[1]; + acc$0[1] = [0,read_json(v,lexbuf),_lR_]; for(;;) {read_space(v,lexbuf); read_array_sep(v,lexbuf); read_space(v,lexbuf); - var _iO_=acc$0[1]; - acc$0[1] = [0,read_json(v,lexbuf),_iO_]; + var _lS_=acc$0[1]; + acc$0[1] = [0,read_json(v,lexbuf),_lS_]; continue}} - catch(_iP_) - {_iP_ = caml_wrap_exception(_iP_); - if(_iP_ === End_of_array) + catch(_lT_) + {_lT_ = caml_wrap_exception(_lT_); + if(_lT_ === End_of_array) return [0,848054398,caml_call1(Stdlib_List[9],acc$0[1])]; - throw _iP_} + throw _lT_} case 12:return long_error(cst_Invalid_token,v,lexbuf); case 13:return long_error(cst_Invalid_token$0,v,lexbuf); case 14: @@ -37901,6 +35969,24 @@ default:return long_error(cst_Invalid_token$1,v,lexbuf)}}} function read_json(v,lexbuf) {return caml_trampoline(read_json$2(0,v,lexbuf))} + function finish_string$1(v,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=58; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return caml_call1(Stdlib_Buffer[2],v[1]); + case 1:finish_escaped_char(v,lexbuf);continue a; + case 2:add_lexeme(v[1],lexbuf);continue a; + default: + return custom_error(cst_Unexpected_end_of_input$0,v,lexbuf)}}}} function map_string(v,f,lexbuf) {a: for(;;) @@ -37915,32 +36001,74 @@ continue} switch(ocaml_lex_state$0) {case 0: - var b=v[1],_iI_=b[3]; - return caml_call3(f,caml_call1(Stdlib_Bytes[6],b[1]),0,_iI_); + var b=v[1],_lM_=caml_call1(Stdlib_Buffer[7],b); + return caml_call3(f,caml_call1(Stdlib_Buffer[2],b),0,_lM_); case 1:finish_escaped_char(v,lexbuf);continue a; case 2:add_lexeme(v[1],lexbuf);continue a; default: return custom_error(cst_Unexpected_end_of_input$1,v,lexbuf)}}}} - function finish_stringlit(v,lexbuf) - {var ocaml_lex_state=91; + function finish_escaped_char(v,lexbuf) + {var ocaml_lex_state=68; for(;;) {var ocaml_lex_state$0= caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) + if(8 < ocaml_lex_state$0 >>> 0) {caml_call1(lexbuf[1],lexbuf); var ocaml_lex_state=ocaml_lex_state$0; continue} switch(ocaml_lex_state$0) {case 0: - var len=lexbuf[6] - lexbuf[5] | 0,s=caml_create_bytes(len + 1 | 0); - caml_bytes_set(s,0,34); - caml_call5(Stdlib_Bytes[11],lexbuf[2],lexbuf[5],s,1,len); - return caml_call1(Stdlib_Bytes[6],s); - case 1:return long_error(cst_Invalid_string_literal,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$4,v,lexbuf)}}} - function read_gt(v,lexbuf) - {var ocaml_lex_state=111; + var c=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5]); + return caml_call2(Stdlib_Buffer[12],v[1],c); + case 1:return caml_call2(Stdlib_Buffer[12],v[1],8); + case 2:return caml_call2(Stdlib_Buffer[12],v[1],12); + case 3:return caml_call2(Stdlib_Buffer[12],v[1],10); + case 4:return caml_call2(Stdlib_Buffer[12],v[1],13); + case 5:return caml_call2(Stdlib_Buffer[12],v[1],9); + case 6: + var + a=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 1 | 0), + b=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 2 | 0), + c$0=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 3 | 0), + d=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 4 | 0), + _lG_=hex$1(d), + _lH_=hex$1(c$0) << 4, + _lI_=hex$1(b) << 8, + x=hex$1(a) << 12 | _lI_ | _lH_ | _lG_; + if(55296 <= x && ! (56319 < x)) + {var ocaml_lex_state$1=82; + for(;;) + {var + ocaml_lex_state$2= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$1,lexbuf); + if(2 < ocaml_lex_state$2 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$1=ocaml_lex_state$2; + continue} + switch(ocaml_lex_state$2) + {case 0: + var + a$0=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 2 | 0), + b$0=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 3 | 0), + c$1=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 4 | 0), + d$0=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 5 | 0), + _lJ_=hex$1(d$0), + _lK_=hex$1(c$1) << 4, + _lL_=hex$1(b$0) << 8, + y=hex$1(a$0) << 12 | _lL_ | _lK_ | _lJ_; + if(56320 <= y && ! (57343 < y)) + return utf8_of_surrogate_pair(v[1],x,y); + return long_error(cst_Invalid_low_surrogate_for_,v,lexbuf); + case 1: + return long_error(cst_Missing_escape_sequence_re,v,lexbuf); + default: + return custom_error(cst_Unexpected_end_of_input$3,v,lexbuf)}}} + return utf8_of_code(v[1],x); + case 7:return long_error(cst_Invalid_escape_sequence,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$2,v,lexbuf)}}} + function finish_stringlit(v,lexbuf) + {var ocaml_lex_state=91; for(;;) {var ocaml_lex_state$0= @@ -37950,9 +36078,13 @@ var ocaml_lex_state=ocaml_lex_state$0; continue} switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error(cst_Expected_but_found$0,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$7,v,lexbuf)}}} + {case 0: + var len=lexbuf[6] - lexbuf[5] | 0,s=caml_create_bytes(len + 1 | 0); + caml_bytes_set(s,0,34); + caml_call5(Stdlib_Bytes[11],lexbuf[2],lexbuf[5],s,1,len); + return caml_call1(Stdlib_Bytes[6],s); + case 1:return long_error(cst_Invalid_string_literal,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$4,v,lexbuf)}}} function finish_variant(v,lexbuf) {var ocaml_lex_state=102; for(;;) @@ -37986,6 +36118,20 @@ {case 0:return 0; case 1:return long_error(cst_Expected_but_found,v,lexbuf); default:return custom_error(cst_Unexpected_end_of_input$6,v,lexbuf)}}} + function read_gt(v,lexbuf) + {var ocaml_lex_state=111; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error(cst_Expected_but_found$0,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$7,v,lexbuf)}}} function read_comma(v,lexbuf) {var ocaml_lex_state=115; for(;;) @@ -38012,10 +36158,27 @@ continue} switch(ocaml_lex_state$0) {case 0:return -154522342; - case 1:caml_call1(Bi_outbuf[19],v[1]);return -589953938; + case 1:caml_call1(Stdlib_Buffer[8],v[1]);return -589953938; case 2:return -124528282; case 3:return long_error(cst_Expected_or_but_found$0,v,lexbuf); default:return custom_error(cst_Unexpected_end_of_input$9,v,lexbuf)}}} + function finish_comment(v,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=125; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error(cst_Unterminated_comment,v,lexbuf); + case 2:newline(v,lexbuf);continue a; + default:continue a}}}} function read_eof(lexbuf) {var ocaml_lex_state=131; for(;;) @@ -38027,6 +36190,24 @@ caml_call1(lexbuf[1],lexbuf); var ocaml_lex_state=ocaml_lex_state$0; continue}} + function read_space(v,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=133; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(4 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:newline(v,lexbuf);continue a; + case 1:finish_comment(v,lexbuf);continue a; + case 2:newline(v,lexbuf);continue a; + case 3:continue a; + default:return 0}}}} function read_null(v,lexbuf) {var ocaml_lex_state=140; for(;;) @@ -38082,26 +36263,26 @@ switch(ocaml_lex_state$1) {case 0: try - {var _iC_=extract_positive_int(lexbuf);return _iC_} - catch(_iH_) - {_iH_ = caml_wrap_exception(_iH_); - if(_iH_ === Int_overflow) + {var _lA_=extract_positive_int(lexbuf);return _lA_} + catch(_lF_) + {_lF_ = caml_wrap_exception(_lF_); + if(_lF_ === Int_overflow) return lexer_error(cst_Int_overflow$1,v,lexbuf); - throw _iH_} + throw _lF_} case 1: try - {var _iD_=extract_negative_int(lexbuf);return _iD_} - catch(_iG_) - {_iG_ = caml_wrap_exception(_iG_); - if(_iG_ === Int_overflow) + {var _lB_=extract_negative_int(lexbuf);return _lB_} + catch(_lE_) + {_lE_ = caml_wrap_exception(_lE_); + if(_lE_ === Int_overflow) return lexer_error(cst_Int_overflow$2,v,lexbuf); - throw _iG_} + throw _lE_} case 2: - caml_call1(Bi_outbuf[19],v[1]); + caml_call1(Stdlib_Buffer[8],v[1]); var s=finish_string$1(v,lexbuf); try - {var _iE_=caml_int_of_string(s);return _iE_} - catch(_iF_) + {var _lC_=caml_int_of_string(s);return _lC_} + catch(_lD_) {return custom_error(cst_Expected_an_integer_but_fo,v,lexbuf)} case 3:return long_error(cst_Expected_integer_but_found,v,lexbuf); default:return custom_error(cst_Unexpected_end_of_input$12,v,lexbuf)}}} @@ -38119,15 +36300,15 @@ switch(ocaml_lex_state$1) {case 0: try - {var _iy_=caml_int_of_string(caml_call1(lexeme,lexbuf)); - return _iy_} - catch(_iB_){return lexer_error(cst_Int32_overflow,v,lexbuf)} + {var _lw_=caml_int_of_string(caml_call1(lexeme,lexbuf)); + return _lw_} + catch(_lz_){return lexer_error(cst_Int32_overflow,v,lexbuf)} case 1: - caml_call1(Bi_outbuf[19],v[1]); + caml_call1(Stdlib_Buffer[8],v[1]); var s=finish_string$1(v,lexbuf); try - {var _iz_=caml_int_of_string(s);return _iz_} - catch(_iA_) + {var _lx_=caml_int_of_string(s);return _lx_} + catch(_ly_) {return custom_error(cst_Expected_an_int32_but_foun,v,lexbuf)} case 2:return long_error(cst_Expected_int32_but_found,v,lexbuf); default:return custom_error(cst_Unexpected_end_of_input$13,v,lexbuf)}}} @@ -38146,15 +36327,15 @@ switch(ocaml_lex_state$1) {case 0: try - {var _iu_=caml_int64_of_string(caml_call1(lexeme,lexbuf)); - return _iu_} - catch(_ix_){return lexer_error(cst_Int32_overflow$0,v,lexbuf)} + {var _ls_=caml_int64_of_string(caml_call1(lexeme,lexbuf)); + return _ls_} + catch(_lv_){return lexer_error(cst_Int32_overflow$0,v,lexbuf)} case 1: - caml_call1(Bi_outbuf[19],v[1]); + caml_call1(Stdlib_Buffer[8],v[1]); var s=finish_string$1(v,lexbuf); try - {var _iv_=caml_int64_of_string(s);return _iv_} - catch(_iw_) + {var _lt_=caml_int64_of_string(s);return _lt_} + catch(_lu_) {return custom_error(cst_Expected_an_int64_but_foun,v,lexbuf)} case 2:return long_error(cst_Expected_int64_but_found,v,lexbuf); default:return custom_error(cst_Unexpected_end_of_input$14,v,lexbuf)}}} @@ -38176,14 +36357,14 @@ case 2:return Stdlib[23]; case 3:return caml_float_of_string(caml_call1(lexeme,lexbuf)); case 4: - caml_call1(Bi_outbuf[19],v[1]); + caml_call1(Stdlib_Buffer[8],v[1]); var s=finish_string$1(v,lexbuf); try - {var _is_=caml_float_of_string(s);return _is_} - catch(_it_) - {return caml_string_notequal(s,cst_Infinity$11) - ?caml_string_notequal(s,cst_Infinity$12) - ?caml_string_notequal(s,cst_NaN$5) + {var _lq_=caml_float_of_string(s);return _lq_} + catch(_lr_) + {return caml_string_notequal(s,cst_Infinity$7) + ?caml_string_notequal(s,cst_Infinity$8) + ?caml_string_notequal(s,cst_NaN$3) ?custom_error(cst_Expected_a_number_but_foun,v,lexbuf) :Stdlib[24] :Stdlib[22] @@ -38204,9 +36385,26 @@ continue} switch(ocaml_lex_state$0) {case 0: - caml_call1(Bi_outbuf[19],v[1]);return finish_string$1(v,lexbuf); + caml_call1(Stdlib_Buffer[8],v[1]);return finish_string$1(v,lexbuf); case 1:return long_error(cst_Expected_but_found$2,v,lexbuf); default:return custom_error(cst_Unexpected_end_of_input$16,v,lexbuf)}}} + function read_ident(v,lexbuf) + {var ocaml_lex_state=237; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0: + caml_call1(Stdlib_Buffer[8],v[1]);return finish_string$1(v,lexbuf); + case 1: + var s=caml_call3(sub_lexeme,lexbuf,lexbuf[5],lexbuf[6]);return s; + case 2:return long_error(cst_Expected_string_or_identif,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$17,v,lexbuf)}}} function map_ident(v,f,lexbuf) {var ocaml_lex_state=242; for(;;) @@ -38218,10 +36416,15 @@ var ocaml_lex_state=ocaml_lex_state$0; continue} switch(ocaml_lex_state$0) - {case 0:caml_call1(Bi_outbuf[19],v[1]);return map_string(v,f,lexbuf); + {case 0: + caml_call1(Stdlib_Buffer[8],v[1]);return map_string(v,f,lexbuf); case 1: - var len=lexbuf[6] - lexbuf[5] | 0,_ir_=lexbuf[5]; - return caml_call3(f,caml_call1(Stdlib_Bytes[6],lexbuf[2]),_ir_,len); + var len=lexbuf[6] - lexbuf[5] | 0; + return caml_call3 + (f, + caml_call3(Stdlib_Bytes[8],lexbuf[2],lexbuf[5],len), + 0, + len); case 2:return long_error(cst_Expected_string_or_identif$0,v,lexbuf); default:return custom_error(cst_Unexpected_end_of_input$18,v,lexbuf)}}} function ocaml_lex_read_sequence_rec @@ -38248,10 +36451,10 @@ read_space(v,lexbuf); acc[1] = caml_call3(read_cell,acc[1],v,lexbuf); continue}} - catch(_iq_) - {_iq_ = caml_wrap_exception(_iq_); - if(_iq_ === End_of_array)return acc[1]; - throw _iq_} + catch(_lp_) + {_lp_ = caml_wrap_exception(_lp_); + if(_lp_ === End_of_array)return acc[1]; + throw _lp_} case 1:return long_error(cst_Expected_but_found$3,v,lexbuf); default:return custom_error(cst_Unexpected_end_of_input$19,v,lexbuf)}}} function read_sequence(read_cell,init_acc,v,lexbuf) @@ -38272,23 +36475,49 @@ try {read_space(v,lexbuf); read_array_end(lexbuf); - var _in_=acc[1]; - acc[1] = [0,caml_call2(read_cell,v,lexbuf),_in_]; + var _lm_=acc[1]; + acc[1] = [0,caml_call2(read_cell,v,lexbuf),_lm_]; for(;;) {read_space(v,lexbuf); read_array_sep(v,lexbuf); read_space(v,lexbuf); - var _io_=acc[1]; - acc[1] = [0,caml_call2(read_cell,v,lexbuf),_io_]; + var _ln_=acc[1]; + acc[1] = [0,caml_call2(read_cell,v,lexbuf),_ln_]; continue}} - catch(_ip_) - {_ip_ = caml_wrap_exception(_ip_); - if(_ip_ === End_of_array)return acc[1]; - throw _ip_} + catch(_lo_) + {_lo_ = caml_wrap_exception(_lo_); + if(_lo_ === End_of_array)return acc[1]; + throw _lo_} case 1:return long_error(cst_Expected_but_found$4,v,lexbuf); default:return custom_error(cst_Unexpected_end_of_input$20,v,lexbuf)}}} function read_list_rev(read_cell,v,lexbuf) {return ocaml_lex_read_list_rev_rec(read_cell,v,lexbuf,251)} + function read_array_end(lexbuf) + {var ocaml_lex_state=255; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0)throw End_of_array; + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function read_array_sep(v,lexbuf) + {var ocaml_lex_state=257; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:throw End_of_array; + case 2:return long_error(cst_Expected_or_but_found$1,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$21,v,lexbuf)}}} function read_tuple(read_cell,init_acc,v,lexbuf) {var ocaml_lex_state=262; for(;;) @@ -38399,10 +36628,10 @@ read_space(v,lexbuf); acc[1] = caml_call4(read_field,acc[1],field_name$0,v,lexbuf); continue}} - catch(_im_) - {_im_ = caml_wrap_exception(_im_); - if(_im_ === End_of_object)return acc[1]; - throw _im_} + catch(_ll_) + {_ll_ = caml_wrap_exception(_ll_); + if(_ll_ === End_of_object)return acc[1]; + throw _ll_} case 1:return long_error(cst_Expected_but_found$6,v,lexbuf); default:return custom_error(cst_Unexpected_end_of_input$25,v,lexbuf)}}} function read_abstract_fields(read_key,read_field,init_acc,v,lexbuf) @@ -38422,6 +36651,46 @@ {case 0:return 0; case 1:return long_error(cst_Expected_but_found$7,v,lexbuf); default:return custom_error(cst_Unexpected_end_of_input$26,v,lexbuf)}}} + function read_object_end(lexbuf) + {var ocaml_lex_state=290; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0)throw End_of_object; + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function read_object_sep(v,lexbuf) + {var ocaml_lex_state=292; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:throw End_of_object; + case 2:return long_error(cst_Expected_or_but_found$8,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$27,v,lexbuf)}}} + function read_colon(v,lexbuf) + {var ocaml_lex_state=297; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error(cst_Expected_but_found$8,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$28,v,lexbuf)}}} function start_any_tuple(v,lexbuf) {var ocaml_lex_state=301; for(;;) @@ -38507,27 +36776,12 @@ {case 0:return 0; case 1:return long_error(cst_Invalid_string_literal$0,v,lexbuf); default:return custom_error(cst_Unexpected_end_of_input$35,v,lexbuf)}}} - function skip_ident(v,lexbuf) - {var ocaml_lex_state=394; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return finish_skip_stringlit(v,lexbuf); - case 1:return 0; - case 2:return long_error(cst_Expected_string_or_identif$1,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$37,v,lexbuf)}}} function skip_json$2(counter,v,lexbuf) - {var _il_=322; + {var _lk_=322; if(counter < 50) {var counter$0=counter + 1 | 0; - return ocaml_lex_skip_json_rec(counter$0,v,lexbuf,_il_)} - return caml_trampoline_return(ocaml_lex_skip_json_rec,[0,v,lexbuf,_il_])} + return ocaml_lex_skip_json_rec(counter$0,v,lexbuf,_lk_)} + return caml_trampoline_return(ocaml_lex_skip_json_rec,[0,v,lexbuf,_lk_])} function ocaml_lex_skip_json_rec(counter,v,lexbuf,ocaml_lex_state) {var ocaml_lex_state$0=ocaml_lex_state; for(;;) @@ -38567,10 +36821,10 @@ read_space(v,lexbuf); skip_json(v,lexbuf); continue}} - catch(_ik_) - {_ik_ = caml_wrap_exception(_ik_); - if(_ik_ === End_of_object)return 0; - throw _ik_} + catch(_lj_) + {_lj_ = caml_wrap_exception(_lj_); + if(_lj_ === End_of_object)return 0; + throw _lj_} case 10: try {read_space(v,lexbuf); @@ -38582,10 +36836,10 @@ read_space(v,lexbuf); skip_json(v,lexbuf); continue}} - catch(_ij_) - {_ij_ = caml_wrap_exception(_ij_); - if(_ij_ === End_of_array)return 0; - throw _ij_} + catch(_li_) + {_li_ = caml_wrap_exception(_li_); + if(_li_ === End_of_array)return 0; + throw _li_} case 11:return long_error(cst_Invalid_token$3,v,lexbuf); case 12:return long_error(cst_Invalid_token$4,v,lexbuf); case 13: @@ -38631,67 +36885,8 @@ case 1:return 0; case 2:return long_error(cst_Expected_or_but_found$10,v,lexbuf); default:return custom_error(cst_Unexpected_end_of_input$36,v,lexbuf)}}} - function finish_buffer_comment(v,lexbuf) - {a: - for(;;) - {var ocaml_lex_state=507; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return caml_call2(Bi_outbuf[13],v[1],cst$24); - case 1:return long_error(cst_Unterminated_comment$0,v,lexbuf); - case 2: - caml_call2(Bi_outbuf[15],v[1],10);newline(v,lexbuf);continue a; - default:add_lexeme(v[1],lexbuf);continue a}}}} - function buffer_colon(v,lexbuf) - {var ocaml_lex_state=499; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return caml_call2(Bi_outbuf[15],v[1],58); - case 1:return long_error(cst_Expected_but_found$13,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$43,v,lexbuf)}}} - function buffer_array_sep(v,lexbuf) - {var ocaml_lex_state=487; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return caml_call2(Bi_outbuf[15],v[1],44); - case 1:caml_call2(Bi_outbuf[15],v[1],93);throw End_of_array; - case 2:return long_error(cst_Expected_or_but_found$12,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$42,v,lexbuf)}}} - function buffer_array_end(v,lexbuf) - {var ocaml_lex_state=485; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0) - {caml_call2(Bi_outbuf[15],v[1],93);throw End_of_array} - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function buffer_object_sep(v,lexbuf) - {var ocaml_lex_state=480; + function skip_ident(v,lexbuf) + {var ocaml_lex_state=394; for(;;) {var ocaml_lex_state$0= @@ -38701,44 +36896,10 @@ var ocaml_lex_state=ocaml_lex_state$0; continue} switch(ocaml_lex_state$0) - {case 0:return caml_call2(Bi_outbuf[15],v[1],44); - case 1:caml_call2(Bi_outbuf[15],v[1],125);throw End_of_object; - case 2:return long_error(cst_Expected_or_but_found$11,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$41,v,lexbuf)}}} - function buffer_object_end(v,lexbuf) - {var ocaml_lex_state=478; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0) - {caml_call2(Bi_outbuf[15],v[1],125);throw End_of_object} - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function buffer_space(v,lexbuf) - {a: - for(;;) - {var ocaml_lex_state=471; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(4 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:add_lexeme(v[1],lexbuf);newline(v,lexbuf);continue a; - case 1: - caml_call2(Bi_outbuf[13],v[1],cst$23); - finish_buffer_comment(v,lexbuf); - continue a; - case 2: - caml_call2(Bi_outbuf[15],v[1],10);newline(v,lexbuf);continue a; - case 3:add_lexeme(v[1],lexbuf);continue a; - default:return 0}}}} + {case 0:return finish_skip_stringlit(v,lexbuf); + case 1:return 0; + case 2:return long_error(cst_Expected_string_or_identif$1,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$37,v,lexbuf)}}} function finish_buffer_stringlit(v,lexbuf) {var ocaml_lex_state=450; for(;;) @@ -38751,31 +36912,17 @@ continue} switch(ocaml_lex_state$0) {case 0: - caml_call2(Bi_outbuf[15],v[1],34);return add_lexeme(v[1],lexbuf); + caml_call2(Stdlib_Buffer[12],v[1],34); + return add_lexeme(v[1],lexbuf); case 1:return long_error(cst_Invalid_string_literal$1,v,lexbuf); default:return custom_error(cst_Unexpected_end_of_input$39,v,lexbuf)}}} - function buffer_ident(v,lexbuf) - {var ocaml_lex_state=466; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return finish_buffer_stringlit(v,lexbuf); - case 1:return add_lexeme(v[1],lexbuf); - case 2:return long_error(cst_Expected_string_or_identif$2,v,lexbuf); - default:return custom_error(cst_Unexpected_end_of_input$40,v,lexbuf)}}} function buffer_json$2(counter,v,lexbuf) - {var _ii_=399; + {var _lh_=399; if(counter < 50) {var counter$0=counter + 1 | 0; - return ocaml_lex_buffer_json_rec(counter$0,v,lexbuf,_ii_)} + return ocaml_lex_buffer_json_rec(counter$0,v,lexbuf,_lh_)} return caml_trampoline_return - (ocaml_lex_buffer_json_rec,[0,v,lexbuf,_ii_])} + (ocaml_lex_buffer_json_rec,[0,v,lexbuf,_lh_])} function ocaml_lex_buffer_json_rec(counter,v,lexbuf,ocaml_lex_state) {var ocaml_lex_state$0=ocaml_lex_state; for(;;) @@ -38791,7 +36938,7 @@ case 1:return finish_buffer_stringlit(v,lexbuf); case 2: try - {caml_call2(Bi_outbuf[15],v[1],123); + {caml_call2(Stdlib_Buffer[12],v[1],123); buffer_space(v,lexbuf); buffer_object_end(v,lexbuf); buffer_ident(v,lexbuf); @@ -38809,13 +36956,13 @@ buffer_space(v,lexbuf); buffer_json(v,lexbuf); continue}} - catch(_ih_) - {_ih_ = caml_wrap_exception(_ih_); - if(_ih_ === End_of_object)return 0; - throw _ih_} + catch(_lg_) + {_lg_ = caml_wrap_exception(_lg_); + if(_lg_ === End_of_object)return 0; + throw _lg_} case 3: try - {caml_call2(Bi_outbuf[15],v[1],91); + {caml_call2(Stdlib_Buffer[12],v[1],91); buffer_space(v,lexbuf); buffer_array_end(v,lexbuf); buffer_json(v,lexbuf); @@ -38825,10 +36972,10 @@ buffer_space(v,lexbuf); buffer_json(v,lexbuf); continue}} - catch(_ig_) - {_ig_ = caml_wrap_exception(_ig_); - if(_ig_ === End_of_array)return 0; - throw _ig_} + catch(_lf_) + {_lf_ = caml_wrap_exception(_lf_); + if(_lf_ === End_of_array)return 0; + throw _lf_} case 4:return long_error(cst_Invalid_token$6,v,lexbuf); case 5:return long_error(cst_Invalid_token$7,v,lexbuf); case 6: @@ -38838,14 +36985,14 @@ return buffer_json$2(counter$0,v,lexbuf)} return caml_trampoline_return(buffer_json$2,[0,v,lexbuf]); case 7: - caml_call2(Bi_outbuf[13],v[1],cst$22); + caml_call2(Stdlib_Buffer[16],v[1],cst$34); finish_buffer_comment(v,lexbuf); if(counter < 50) {var counter$1=counter + 1 | 0; return buffer_json$2(counter$1,v,lexbuf)} return caml_trampoline_return(buffer_json$2,[0,v,lexbuf]); case 8: - caml_call2(Bi_outbuf[15],v[1],10); + caml_call2(Stdlib_Buffer[12],v[1],10); newline(v,lexbuf); if(counter < 50) {var counter$2=counter + 1 | 0; @@ -38862,6 +37009,133 @@ default:return long_error(cst_Invalid_token$8,v,lexbuf)}}} function buffer_json(v,lexbuf) {return caml_trampoline(buffer_json$2(0,v,lexbuf))} + function buffer_ident(v,lexbuf) + {var ocaml_lex_state=466; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return finish_buffer_stringlit(v,lexbuf); + case 1:return add_lexeme(v[1],lexbuf); + case 2:return long_error(cst_Expected_string_or_identif$2,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$40,v,lexbuf)}}} + function buffer_space(v,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=471; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(4 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:add_lexeme(v[1],lexbuf);newline(v,lexbuf);continue a; + case 1: + caml_call2(Stdlib_Buffer[16],v[1],cst$35); + finish_buffer_comment(v,lexbuf); + continue a; + case 2: + caml_call2(Stdlib_Buffer[12],v[1],10); + newline(v,lexbuf); + continue a; + case 3:add_lexeme(v[1],lexbuf);continue a; + default:return 0}}}} + function buffer_object_end(v,lexbuf) + {var ocaml_lex_state=478; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0) + {caml_call2(Stdlib_Buffer[12],v[1],125);throw End_of_object} + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function buffer_object_sep(v,lexbuf) + {var ocaml_lex_state=480; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Stdlib_Buffer[12],v[1],44); + case 1:caml_call2(Stdlib_Buffer[12],v[1],125);throw End_of_object; + case 2:return long_error(cst_Expected_or_but_found$11,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$41,v,lexbuf)}}} + function buffer_array_end(v,lexbuf) + {var ocaml_lex_state=485; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0) + {caml_call2(Stdlib_Buffer[12],v[1],93);throw End_of_array} + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function buffer_array_sep(v,lexbuf) + {var ocaml_lex_state=487; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Stdlib_Buffer[12],v[1],44); + case 1:caml_call2(Stdlib_Buffer[12],v[1],93);throw End_of_array; + case 2:return long_error(cst_Expected_or_but_found$12,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$42,v,lexbuf)}}} + function buffer_colon(v,lexbuf) + {var ocaml_lex_state=499; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Stdlib_Buffer[12],v[1],58); + case 1:return long_error(cst_Expected_but_found$13,v,lexbuf); + default:return custom_error(cst_Unexpected_end_of_input$43,v,lexbuf)}}} + function finish_buffer_comment(v,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=507; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Stdlib_Buffer[16],v[1],cst$36); + case 1:return long_error(cst_Unterminated_comment$0,v,lexbuf); + case 2: + caml_call2(Stdlib_Buffer[12],v[1],10); + newline(v,lexbuf); + continue a; + default:add_lexeme(v[1],lexbuf);continue a}}}} function junk(lexbuf) {var ocaml_lex_state=513; for(;;) @@ -38878,8 +37152,8 @@ if(0 <= n && ! (255 < n))return caml_call1(Stdlib[29],n); return lexer_error(cst_Int8_overflow,v,lexbuf)} function read_list(read_cell,v,lexbuf) - {var _if_=read_list_rev(read_cell,v,lexbuf); - return caml_call1(Stdlib_List[9],_if_)} + {var _le_=read_list_rev(read_cell,v,lexbuf); + return caml_call1(Stdlib_List[9],_le_)} function read_array(read_cell,v,lexbuf) {var l=read_list_rev(read_cell,v,lexbuf); if(l) @@ -38889,21 +37163,21 @@ len=caml_call1(Stdlib_List[1],l), a=caml_make_vect(len,x), r=[0,tl], - _ic_=len - 2 | 0; - if(! (_ic_ < 0)) - {var i=_ic_; + _lb_=len - 2 | 0; + if(! (_lb_ < 0)) + {var i=_lb_; for(;;) - {var _id_=caml_call1(Stdlib_List[5],r[1]); - caml_check_bound(a,i)[1 + i] = _id_; + {var _lc_=caml_call1(Stdlib_List[5],r[1]); + caml_check_bound(a,i)[1 + i] = _lc_; r[1] = caml_call1(Stdlib_List[6],r[1]); - var _ie_=i - 1 | 0; - if(0 !== i){var i=_ie_;continue} + var _ld_=i - 1 | 0; + if(0 !== i){var i=_ld_;continue} break}} return a} return [0]} function read_fields(read_field,init_acc,v) - {return function(_ib_) - {return read_abstract_fields(read_ident,read_field,init_acc,v,_ib_)}} + {return function(_la_) + {return read_abstract_fields(read_ident,read_field,init_acc,v,_la_)}} function from_lexbuf(v,opt,lexbuf) {if(opt)var sth=opt[1],stream=sth;else var stream=0; read_space(v,lexbuf); @@ -38919,23 +37193,23 @@ {var lexbuf=caml_call2(from_string,0,s), v=init_lexer(buf,fname,lnum,0), - _h$_=from_lexbuf(v,0,lexbuf); - return _h$_} - catch(_ia_) - {_ia_ = caml_wrap_exception(_ia_); - if(_ia_ === End_of_input)return json_error(cst_Blank_input_data); - throw _ia_}} + _k__=from_lexbuf(v,0,lexbuf); + return _k__} + catch(_k$_) + {_k$_ = caml_wrap_exception(_k$_); + if(_k$_ === End_of_input)return json_error(cst_Blank_input_data); + throw _k$_}} function from_channel$0(buf,fname,lnum,ic) {try {var lexbuf=caml_call2(from_channel,0,ic), v=init_lexer(buf,fname,lnum,0), - _h9_=from_lexbuf(v,0,lexbuf); - return _h9_} - catch(_h__) - {_h__ = caml_wrap_exception(_h__); - if(_h__ === End_of_input)return json_error(cst_Blank_input_data$0); - throw _h__}} + _k8_=from_lexbuf(v,0,lexbuf); + return _k8_} + catch(_k9_) + {_k9_ = caml_wrap_exception(_k9_); + if(_k9_ === End_of_input)return json_error(cst_Blank_input_data$0); + throw _k9_}} function from_file(buf,fname,lnum,file) {var ic=caml_call1(Stdlib[79],file); try @@ -38944,11 +37218,11 @@ return x} catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[94],ic);throw e}} var Finally=[248,cst_Yojson_Basic_Finally,caml_fresh_oo_id(0)]; - function stream_from_lexbuf(v,opt,lexbuf) + function seq_from_lexbuf(v,opt,lexbuf) {if(opt)var sth=opt[1],fin=sth;else var fin=function(param){return 0}; - function f(i) + function f(param) {try - {var _h8_=[0,from_lexbuf(v,stream,lexbuf)];return _h8_} + {var _k7_=[0,from_lexbuf(v,stream,lexbuf),f];return _k7_} catch(e) {e = caml_wrap_exception(e); if(e === End_of_input){caml_call1(fin,0);return 0} @@ -38957,77 +37231,80 @@ catch(fin_e) {fin_e = caml_wrap_exception(fin_e);throw [0,Finally,e,fin_e]} throw e}} - return caml_call1(Stdlib_Stream[3],f)} - function stream_from_string(buf,fname,lnum,s) + return f} + function seq_from_string(buf,fname,lnum,s) {var v=init_lexer(buf,fname,lnum,0); - return stream_from_lexbuf(v,0,caml_call2(from_string,0,s))} - function stream_from_channel(buf,fin,fname,lnum,ic) + return seq_from_lexbuf(v,0,caml_call2(from_string,0,s))} + function seq_from_channel(buf,fin,fname,lnum,ic) {var lexbuf=caml_call2(from_channel,0,ic),v=init_lexer(buf,fname,lnum,0); - return stream_from_lexbuf(v,fin,lexbuf)} - function stream_from_file(buf,fname,lnum,file) + return seq_from_lexbuf(v,fin,lexbuf)} + function seq_from_file(buf,fname,lnum,file) {var ic=caml_call1(Stdlib[79],file); function fin(param){return caml_call1(Stdlib[93],ic)} var fname$0=fname || [0,file], lexbuf=caml_call2(from_channel,0,ic), v=init_lexer(buf,fname$0,lnum,0); - return stream_from_lexbuf(v,[0,fin],lexbuf)} - function linestream_from_channel(buf,opt,fname,_h6_,ic) + return seq_from_lexbuf(v,[0,fin],lexbuf)} + function lineseq_from_channel(buf,opt,fname,_kZ_,ic) {if(opt)var sth=opt[1],fin=sth;else var fin=function(param){return 0}; - if(_h6_)var sth$0=_h6_[1],lnum0=sth$0;else var lnum0=1; - var buf$0=buf || [0,caml_call3(Bi_outbuf[3],0,0,256)]; - function f(i) + if(_kZ_)var sth$0=_kZ_[1],lnum0=sth$0;else var lnum0=1; + var buf$0=buf || [0,caml_call1(Stdlib_Buffer[1],256)]; + function f(lnum,param) {try {var line=caml_call1(Stdlib[83],ic), - lnum=lnum0 + i | 0, - _h7_=[0,[0,826371656,from_string$0(buf$0,fname,[0,lnum],line)]]; - return _h7_} + _k2_=lnum + 1 | 0, + _k3_=function(_k6_){return f(_k2_,_k6_)}, + _k4_= + [0,[0,826371656,from_string$0(buf$0,fname,[0,lnum],line)],_k3_]; + return _k4_} catch(e) {e = caml_wrap_exception(e); - return e === Stdlib[12]?(caml_call1(fin,0),0):[0,[0,3458171,e]]}} - return caml_call1(Stdlib_Stream[3],f)} - function linestream_from_file(buf,fname,lnum,file) + if(e === Stdlib[12]){caml_call1(fin,0);return 0} + var _k1_=lnum + 1 | 0; + return [0,[0,3458171,e],function(_k5_){return f(_k1_,_k5_)}]}} + return function(_k0_){return f(lnum0,_k0_)}} + function lineseq_from_file(buf,fname,lnum,file) {var ic=caml_call1(Stdlib[79],file); function fin(param){return caml_call1(Stdlib[93],ic)} var fname$0=fname || [0,file]; - return linestream_from_channel(buf,[0,fin],fname$0,lnum,ic)} + return lineseq_from_channel(buf,[0,fin],fname$0,lnum,ic)} function prettify(std,s) {return pretty_to_string$0(std,from_string$0(0,0,0,s))} - function compact(std,s){return to_string$1(0,0,0,from_string$0(0,0,0,s))} - function validate_json(path,value){return 0} + function compact(std,s) + {return to_string$0(0,0,0,0,from_string$0(0,0,0,s))} var Type_error=[248,cst_Yojson_Basic_Util_Type_err,caml_fresh_oo_id(0)]; function typerr(msg,js) {if(typeof js === "number") - var _h5_=cst_null$2; + var _kY_=cst_null$3; else var - _h4_=js[1], - _h5_= - 708012133 <= _h4_ - ?726928360 === _h4_ + _kX_=js[1], + _kY_= + 708012133 <= _kX_ + ?726928360 === _kX_ ?cst_tuple - :848054398 <= _h4_ - ?963043957 <= _h4_?cst_object:cst_array - :737456202 <= _h4_?cst_bool:cst_variant - :3654863 <= _h4_ - ?365180284 <= _h4_?cst_float:cst_int - :-752863768 <= _h4_?cst_intlit:cst_string; - throw [0,Type_error,caml_call2(Stdlib[28],msg,_h5_),js]} + :848054398 <= _kX_ + ?963043957 <= _kX_?cst_object:cst_array + :737456202 <= _kX_?cst_bool:cst_variant + :3654863 <= _kX_ + ?365180284 <= _kX_?cst_float:cst_int + :-752863768 <= _kX_?cst_intlit:cst_string; + throw [0,Type_error,caml_call2(Stdlib[28],msg,_kY_),js]} var Undefined=[248,cst_Yojson_Basic_Util_Undefine,caml_fresh_oo_id(0)]; - function symbol(_h3_,_h2_){return caml_call1(_h2_,_h3_)} function assoc(name,obj) {try - {var _h0_=caml_call2(Stdlib_List[46],name,obj);return _h0_} - catch(_h1_) - {_h1_ = caml_wrap_exception(_h1_); - if(_h1_ === Stdlib[8])return 870828711; - throw _h1_}} + {var _kV_=caml_call2(Stdlib_List[46],name,obj);return _kV_} + catch(_kW_) + {_kW_ = caml_wrap_exception(_kW_); + if(_kW_ === Stdlib[8])return 870828711; + throw _kW_}} function member(name,js) {if(typeof js !== "number" && 963043957 === js[1]) {var obj=js[2];return assoc(name,obj)} - var _hZ_=caml_call2(Stdlib[28],name,cst_of_non_object_type); - return typerr(caml_call2(Stdlib[28],cst_Can_t_get_member,_hZ_),js)} + var _kU_=caml_call2(Stdlib[28],name,cst_of_non_object_type); + return typerr(caml_call2(Stdlib[28],cst_Can_t_get_member,_kU_),js)} function index(i,js) {if(typeof js !== "number" && 848054398 === js[1]) {var @@ -39037,13 +37314,13 @@ if(0 <= wrapped_index && ! (len <= wrapped_index)) return caml_call2(Stdlib_List[7],l,wrapped_index); var - _hX_=caml_call1(Stdlib[33],i), - _hY_=caml_call2(Stdlib[28],_hX_,cst_out_of_bounds); - throw [0,Undefined,caml_call2(Stdlib[28],cst_Index,_hY_),js]} + _kS_=caml_call1(Stdlib[33],i), + _kT_=caml_call2(Stdlib[28],_kS_,cst_out_of_bounds); + throw [0,Undefined,caml_call2(Stdlib[28],cst_Index,_kT_),js]} var - _hV_=caml_call1(Stdlib[33],i), - _hW_=caml_call2(Stdlib[28],_hV_,cst_of_non_array_type); - return typerr(caml_call2(Stdlib[28],cst_Can_t_get_index,_hW_),js)} + _kQ_=caml_call1(Stdlib[33],i), + _kR_=caml_call2(Stdlib[28],_kQ_,cst_of_non_array_type); + return typerr(caml_call2(Stdlib[28],cst_Can_t_get_index,_kR_),js)} function map(f,js) {if(typeof js !== "number" && 848054398 === js[1]) {var l=js[2];return [0,848054398,caml_call2(Stdlib_List[19],f,l)]} @@ -39064,17 +37341,17 @@ return typerr(cst_Expected_bool_or_null_got,js)} function to_number(js) {if(typeof js !== "number") - {var _hU_=js[1]; - if(3654863 === _hU_){var i=js[2];return i} - if(365180284 === _hU_){var f=js[2];return f}} + {var _kP_=js[1]; + if(3654863 === _kP_){var i=js[2];return i} + if(365180284 === _kP_){var f=js[2];return f}} return typerr(cst_Expected_number_got,js)} function to_number_option(js) {if(typeof js === "number") {if(870828711 === js)return 0} else - {var _hT_=js[1]; - if(3654863 === _hT_){var i=js[2];return [0,i]} - if(365180284 === _hT_){var f=js[2];return [0,f]}} + {var _kO_=js[1]; + if(3654863 === _kO_){var i=js[2];return [0,i]} + if(365180284 === _kO_){var f=js[2];return [0,f]}} return typerr(cst_Expected_number_or_null_go,js)} function to_float(js) {if(typeof js !== "number" && 365180284 === js[1]){var f=js[2];return f} @@ -39097,7 +37374,7 @@ function to_list(js) {if(typeof js !== "number" && 848054398 === js[1]){var l=js[2];return l} return typerr(cst_Expected_array_got,js)} - function to_string$2(js) + function to_string$1(js) {if(typeof js !== "number" && -976970511 === js[1]){var s=js[2];return s} return typerr(cst_Expected_string_got,js)} function to_string_option(js) @@ -39140,8 +37417,8 @@ {if(typeof param !== "number" && 848054398 === param[1]) {var l=param[2]; try - {var _hR_=[0,caml_call2(Stdlib_List[7],l,i)];return _hR_} - catch(_hS_){return 0}} + {var _kM_=[0,caml_call2(Stdlib_List[7],l,i)];return _kM_} + catch(_kN_){return 0}} return 0}, l)} function filter_list(l) @@ -39157,8 +37434,8 @@ {if(typeof param !== "number" && 963043957 === param[1]) {var l=param[2]; try - {var _hP_=[0,caml_call2(Stdlib_List[46],k,l)];return _hP_} - catch(_hQ_){return 0}} + {var _kK_=[0,caml_call2(Stdlib_List[46],k,l)];return _kK_} + catch(_kL_){return 0}} return 0}, l)} function filter_assoc(l) @@ -39193,9 +37470,9 @@ {return filter_map (function(param) {if(typeof param !== "number") - {var _hO_=param[1]; - if(3654863 === _hO_){var x=param[2];return [0,x]} - if(365180284 === _hO_){var x$0=param[2];return [0,x$0]}} + {var _kJ_=param[1]; + if(3654863 === _kJ_){var x=param[2];return [0,x]} + if(365180284 === _kJ_){var x$0=param[2];return [0,x$0]}} return 0}, l)} function filter_string(l) @@ -39206,13 +37483,13 @@ return 0}, l)} function keys(o) - {function _hM_(param){var key=param[1];return key} - var _hN_=caml_call1(Stdlib_List[19],_hM_); - return symbol(to_assoc(o),_hN_)} + {var _kH_=to_assoc(o); + function _kI_(param){var key=param[1];return key} + return caml_call1(caml_call1(Stdlib_List[19],_kI_),_kH_)} function values(o) - {function _hK_(param){var value=param[2];return value} - var _hL_=caml_call1(Stdlib_List[19],_hK_); - return symbol(to_assoc(o),_hL_)} + {var _kF_=to_assoc(o); + function _kG_(param){var value=param[2];return value} + return caml_call1(caml_call1(Stdlib_List[19],_kG_),_kF_)} function combine(first,second) {if (typeof first @@ -39235,65 +37512,65 @@ throw [0,Stdlib[6],cst_Expected_two_objects_check]} function to_basic(x) {if(typeof x !== "number") - {var _hD_=x[1]; - if(726928360 <= _hD_) - {if(737456202 !== _hD_) - {if(963043957 <= _hD_) + {var _ky_=x[1]; + if(726928360 <= _ky_) + {if(737456202 !== _ky_) + {if(963043957 <= _ky_) {var l=x[2], - _hE_= + _kz_= function(param) {var v=param[2],k=param[1];return [0,k,to_basic(v)]}, - _hF_=caml_call2(Stdlib_List[21],_hE_,l); - return [0,963043957,caml_call1(Stdlib_List[9],_hF_)]} - var l$0=x[2],_hG_=caml_call2(Stdlib_List[21],to_basic,l$0); - return [0,848054398,caml_call1(Stdlib_List[9],_hG_)]}} + _kA_=caml_call2(Stdlib_List[21],_kz_,l); + return [0,963043957,caml_call1(Stdlib_List[9],_kA_)]} + var l$0=x[2],_kB_=caml_call2(Stdlib_List[21],to_basic,l$0); + return [0,848054398,caml_call1(Stdlib_List[9],_kB_)]}} else - {if(-752863768 === _hD_){var s=x[2];return [0,-976970511,s]} - if(708012133 <= _hD_) - {var _hH_=x[2],_hI_=_hH_[2],_hJ_=_hH_[1]; - if(_hI_) - {var v=_hI_[1]; - return [0,848054398,[0,[0,-976970511,_hJ_],[0,to_basic(v),0]]]} - return [0,-976970511,_hJ_]}}} + {if(-752863768 === _ky_){var s=x[2];return [0,-976970511,s]} + if(708012133 <= _ky_) + {var _kC_=x[2],_kD_=_kC_[2],_kE_=_kC_[1]; + if(_kD_) + {var v=_kD_[1]; + return [0,848054398,[0,[0,-976970511,_kE_],[0,to_basic(v),0]]]} + return [0,-976970511,_kE_]}}} return x} function hex$2(n) - {var _hC_=10 <= n?n + 87 | 0:n + 48 | 0; - return caml_call1(Stdlib_Char[1],_hC_)} + {var _kx_=10 <= n?n + 87 | 0:n + 48 | 0; + return caml_call1(Stdlib_Char[1],_kx_)} function write_special$1(src,start,stop,ob,str) - {caml_call4(Bi_outbuf[14],ob,src,start[1],stop - start[1] | 0); - caml_call2(Bi_outbuf[13],ob,str); + {caml_call4(Stdlib_Buffer[18],ob,src,start[1],stop - start[1] | 0); + caml_call2(Stdlib_Buffer[16],ob,str); start[1] = stop + 1 | 0; return 0} function finish_string$2(src,start,ob) {try {var - _hB_= + _kw_= caml_call4 - (Bi_outbuf[14], + (Stdlib_Buffer[18], ob, src, start[1], caml_ml_string_length(src) - start[1] | 0); - return _hB_} + return _kw_} catch(exc) {exc = caml_wrap_exception(exc); caml_call4 (Stdlib_Printf[3], - _bC_, + _bU_, src, start[1], caml_ml_string_length(src) - start[1] | 0); throw exc}} function write_string$1(ob,s) - {caml_call2(Bi_outbuf[15],ob,34); - var start=[0,0],_hz_=caml_ml_string_length(s) - 1 | 0,_hy_=0; - if(! (_hz_ < 0)) - {var i$0=_hy_; + {caml_call2(Stdlib_Buffer[12],ob,34); + var start=[0,0],_ku_=caml_ml_string_length(s) - 1 | 0,_kt_=0; + if(! (_ku_ < 0)) + {var i=_kt_; for(;;) - {var c=caml_string_get(s,i$0); + {var c=caml_string_get(s,i); if(92 === c) - write_special$1(s,start,i$0,ob,cst$25); + write_special$1(s,start,i,ob,cst$37); else {var switch$0=0; if(35 <= c) @@ -39302,12 +37579,12 @@ if(8 <= c) {var switch$1=0; switch(c - 8 | 0) - {case 0:write_special$1(s,start,i$0,ob,cst_b$1);break; - case 1:write_special$1(s,start,i$0,ob,cst_t$1);break; - case 2:write_special$1(s,start,i$0,ob,cst_n$1);break; - case 4:write_special$1(s,start,i$0,ob,cst_f$1);break; - case 5:write_special$1(s,start,i$0,ob,cst_r$1);break; - case 26:write_special$1(s,start,i$0,ob,cst$26);break; + {case 0:write_special$1(s,start,i,ob,cst_b$1);break; + case 1:write_special$1(s,start,i,ob,cst_t$1);break; + case 2:write_special$1(s,start,i,ob,cst_n$1);break; + case 4:write_special$1(s,start,i,ob,cst_f$1);break; + case 5:write_special$1(s,start,i,ob,cst_r$1);break; + case 26:write_special$1(s,start,i,ob,cst$38);break; case 24: case 25:switch$0 = 2;switch$1 = 1;break; default:switch$0 = 1;switch$1 = 1}} @@ -39316,49 +37593,52 @@ switch(switch$0) {case 2:break; case 1: - caml_call4(Bi_outbuf[14],ob,s,start[1],i$0 - start[1] | 0); - var i=caml_call2(Bi_outbuf[10],ob,6),dst=ob[1]; - caml_call5(Stdlib_Bytes[12],cst_u00$1,0,dst,i,4); - caml_bytes_set(dst,i + 4 | 0,hex$2(c >>> 4 | 0)); - caml_bytes_set(dst,i + 5 | 0,hex$2(c & 15)); - start[1] = i$0 + 1 | 0; + caml_call4(Stdlib_Buffer[18],ob,s,start[1],i - start[1] | 0); + caml_call2(Stdlib_Buffer[16],ob,cst_u00$1); + var _kr_=hex$2(c >>> 4 | 0); + caml_call2(Stdlib_Buffer[12],ob,_kr_); + var _ks_=hex$2(c & 15); + caml_call2(Stdlib_Buffer[12],ob,_ks_); + start[1] = i + 1 | 0; break }} - var _hA_=i$0 + 1 | 0; - if(_hz_ !== i$0){var i$0=_hA_;continue} + var _kv_=i + 1 | 0; + if(_ku_ !== i){var i=_kv_;continue} break}} finish_string$2(s,start,ob); - return caml_call2(Bi_outbuf[15],ob,34)} + return caml_call2(Stdlib_Buffer[12],ob,34)} + function json_string_of_string$1(s) + {var ob=caml_call1(Stdlib_Buffer[1],10); + write_string$1(ob,s); + return caml_call1(Stdlib_Buffer[2],ob)} function write_null$1(ob,param) - {return caml_call2(Bi_outbuf[13],ob,cst_null$3)} + {return caml_call2(Stdlib_Buffer[16],ob,cst_null$4)} function write_bool$1(ob,x) - {var _hx_=x?cst_true$2:cst_false$2; - return caml_call2(Bi_outbuf[13],ob,_hx_)} + {var _kq_=x?cst_true$1:cst_false$1; + return caml_call2(Stdlib_Buffer[16],ob,_kq_)} var - _bD_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[20])), - _bE_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[19])), - max_digits$1=caml_call2(Stdlib[17],_bE_,_bD_); - function write_digits$1(s,pos,x) - {if(0 === x)return pos; + _bV_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[20])), + _bW_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[19])); + caml_call2(Stdlib[17],_bW_,_bV_); + function write_digits$1(s,x) + {if(0 === x)return 0; + var d=x % 10 | 0; + write_digits$1(s,x / 10 | 0); var - d=x % 10 | 0, - pos$0=write_digits$1(s,pos,x / 10 | 0), - n=caml_call1(Stdlib[18],d); - caml_bytes_set(s,pos$0,caml_call1(Stdlib_Char[1],n + 48 | 0)); - return pos$0 + 1 | 0} + n=caml_call1(Stdlib[18],d), + _kp_=caml_call1(Stdlib_Char[1],n + 48 | 0); + return caml_call2(Stdlib_Buffer[12],s,_kp_)} function write_int$1(ob,x) - {caml_call2(Bi_outbuf[9],ob,max_digits$1); - if(0 < x){ob[3] = write_digits$1(ob[1],ob[3],x);return 0} - if(0 <= x)return caml_call2(Bi_outbuf[15],ob,48); - var s=ob[1],pos=ob[3]; - caml_bytes_set(s,pos,45); - ob[3] = write_digits$1(s,pos + 1 | 0,x); - return 0} + {return 0 < x + ?write_digits$1(ob,x) + :0 <= x + ?caml_call2(Stdlib_Buffer[12],ob,48) + :(caml_call2(Stdlib_Buffer[12],ob,45),write_digits$1(ob,x))} function float_needs_period$1(s) {try - {var _ht_=caml_ml_string_length(s) - 1 | 0,_hs_=0; - if(! (_ht_ < 0)) - {var i=_hs_; + {var _kl_=caml_ml_string_length(s) - 1 | 0,_kk_=0; + if(! (_kl_ < 0)) + {var i=_kk_; for(;;) {var match=caml_string_get(s,i),switch$0=0; if(48 <= match) @@ -39366,113 +37646,89 @@ else if(45 === match)switch$0 = 1; if(! switch$0)throw Stdlib[3]; - var _hv_=i + 1 | 0; - if(_ht_ !== i){var i=_hv_;continue} + var _kn_=i + 1 | 0; + if(_kl_ !== i){var i=_kn_;continue} break}} - var _hu_=1; - return _hu_} - catch(_hw_) - {_hw_ = caml_wrap_exception(_hw_); - if(_hw_ === Stdlib[3])return 0; - throw _hw_}} - function write_float_fast$1(ob,x) - {var match=caml_classify_float(x); - if(3 === match) - {var _hq_=0. < x?cst_Infinity$13:cst_Infinity$14; - return caml_call2(Bi_outbuf[13],ob,_hq_)} - if(4 <= match)return caml_call2(Bi_outbuf[13],ob,cst_NaN$6); - var s=caml_call2(Stdlib_Printf[4],_bF_,x); - caml_call2(Bi_outbuf[13],ob,s); - var _hr_=float_needs_period$1(s); - return _hr_?caml_call2(Bi_outbuf[13],ob,cst_0$9):_hr_} + var _km_=1; + return _km_} + catch(_ko_) + {_ko_ = caml_wrap_exception(_ko_); + if(_ko_ === Stdlib[3])return 0; + throw _ko_}} function write_float$1(ob,x) {var match=caml_classify_float(x); if(3 === match) - {var _ho_=0. < x?cst_Infinity$15:cst_Infinity$16; - return caml_call2(Bi_outbuf[13],ob,_ho_)} - if(4 <= match)return caml_call2(Bi_outbuf[13],ob,cst_NaN$7); + {var _ki_=0. < x?cst_Infinity$9:cst_Infinity$10; + return caml_call2(Stdlib_Buffer[16],ob,_ki_)} + if(4 <= match)return caml_call2(Stdlib_Buffer[16],ob,cst_NaN$4); var - s1=caml_call2(Stdlib_Printf[4],_bG_,x), - s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_Printf[4],_bH_,x); - caml_call2(Bi_outbuf[13],ob,s); - var _hp_=float_needs_period$1(s); - return _hp_?caml_call2(Bi_outbuf[13],ob,cst_0$10):_hp_} + s1=caml_call2(Stdlib_Printf[4],_bX_,x), + s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_Printf[4],_bY_,x); + caml_call2(Stdlib_Buffer[16],ob,s); + var _kj_=float_needs_period$1(s); + return _kj_?caml_call2(Stdlib_Buffer[16],ob,cst_0$5):_kj_} function write_normal_float_prec$1(significant_figures,ob,x) {var switcher=significant_figures - 1 | 0; if(15 < switcher >>> 0) - var s=caml_call2(Stdlib_Printf[4],_bI_,x); + var s=caml_call2(Stdlib_Printf[4],_bZ_,x); else switch(switcher) - {case 0:var s=caml_call2(Stdlib_Printf[4],_bJ_,x);break; - case 1:var s=caml_call2(Stdlib_Printf[4],_bK_,x);break; - case 2:var s=caml_call2(Stdlib_Printf[4],_bL_,x);break; - case 3:var s=caml_call2(Stdlib_Printf[4],_bM_,x);break; - case 4:var s=caml_call2(Stdlib_Printf[4],_bN_,x);break; - case 5:var s=caml_call2(Stdlib_Printf[4],_bO_,x);break; - case 6:var s=caml_call2(Stdlib_Printf[4],_bP_,x);break; - case 7:var s=caml_call2(Stdlib_Printf[4],_bQ_,x);break; - case 8:var s=caml_call2(Stdlib_Printf[4],_bR_,x);break; - case 9:var s=caml_call2(Stdlib_Printf[4],_bS_,x);break; - case 10:var s=caml_call2(Stdlib_Printf[4],_bT_,x);break; - case 11:var s=caml_call2(Stdlib_Printf[4],_bU_,x);break; - case 12:var s=caml_call2(Stdlib_Printf[4],_bV_,x);break; - case 13:var s=caml_call2(Stdlib_Printf[4],_bW_,x);break; - case 14:var s=caml_call2(Stdlib_Printf[4],_bX_,x);break; - default:var s=caml_call2(Stdlib_Printf[4],_bY_,x)} - caml_call2(Bi_outbuf[13],ob,s); - var _hn_=float_needs_period$1(s); - return _hn_?caml_call2(Bi_outbuf[13],ob,cst_0$11):_hn_} + {case 0:var s=caml_call2(Stdlib_Printf[4],_b0_,x);break; + case 1:var s=caml_call2(Stdlib_Printf[4],_b1_,x);break; + case 2:var s=caml_call2(Stdlib_Printf[4],_b2_,x);break; + case 3:var s=caml_call2(Stdlib_Printf[4],_b3_,x);break; + case 4:var s=caml_call2(Stdlib_Printf[4],_b4_,x);break; + case 5:var s=caml_call2(Stdlib_Printf[4],_b5_,x);break; + case 6:var s=caml_call2(Stdlib_Printf[4],_b6_,x);break; + case 7:var s=caml_call2(Stdlib_Printf[4],_b7_,x);break; + case 8:var s=caml_call2(Stdlib_Printf[4],_b8_,x);break; + case 9:var s=caml_call2(Stdlib_Printf[4],_b9_,x);break; + case 10:var s=caml_call2(Stdlib_Printf[4],_b__,x);break; + case 11:var s=caml_call2(Stdlib_Printf[4],_b$_,x);break; + case 12:var s=caml_call2(Stdlib_Printf[4],_ca_,x);break; + case 13:var s=caml_call2(Stdlib_Printf[4],_cb_,x);break; + case 14:var s=caml_call2(Stdlib_Printf[4],_cc_,x);break; + default:var s=caml_call2(Stdlib_Printf[4],_cd_,x)} + caml_call2(Stdlib_Buffer[16],ob,s); + var _kh_=float_needs_period$1(s); + return _kh_?caml_call2(Stdlib_Buffer[16],ob,cst_0$6):_kh_} function write_float_prec$1(significant_figures,ob,x) {var match=caml_classify_float(x); if(3 === match) - {var _hm_=0. < x?cst_Infinity$17:cst_Infinity$18; - return caml_call2(Bi_outbuf[13],ob,_hm_)} + {var _kg_=0. < x?cst_Infinity$11:cst_Infinity$12; + return caml_call2(Stdlib_Buffer[16],ob,_kg_)} return 4 <= match - ?caml_call2(Bi_outbuf[13],ob,cst_NaN$8) + ?caml_call2(Stdlib_Buffer[16],ob,cst_NaN$5) :write_normal_float_prec$1(significant_figures,ob,x)} - function write_std_float_fast$1(ob,x) - {var match=caml_classify_float(x); - if(3 === match) - {var - _hk_= - 0. < x - ?cst_Infinity_value_not_allowed$11 - :cst_Infinity_value_not_allowed$12; - return json_error(_hk_)} - if(4 <= match)return json_error(cst_NaN_value_not_allowed_in_s$5); - var s=caml_call2(Stdlib_Printf[4],_bZ_,x); - caml_call2(Bi_outbuf[13],ob,s); - var _hl_=float_needs_period$1(s); - return _hl_?caml_call2(Bi_outbuf[13],ob,cst_0$12):_hl_} function write_std_float$1(ob,x) {var match=caml_classify_float(x); if(3 === match) {var - _hi_= + _ke_= 0. < x - ?cst_Infinity_value_not_allowed$13 - :cst_Infinity_value_not_allowed$14; - return json_error(_hi_)} - if(4 <= match)return json_error(cst_NaN_value_not_allowed_in_s$6); + ?cst_Infinity_value_not_allowed$7 + :cst_Infinity_value_not_allowed$8; + return json_error(_ke_)} + if(4 <= match)return json_error(cst_NaN_value_not_allowed_in_s$3); var - s1=caml_call2(Stdlib_Printf[4],_b0_,x), - s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_Printf[4],_b1_,x); - caml_call2(Bi_outbuf[13],ob,s); - var _hj_=float_needs_period$1(s); - return _hj_?caml_call2(Bi_outbuf[13],ob,cst_0$13):_hj_} + s1=caml_call2(Stdlib_Printf[4],_ce_,x), + s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_Printf[4],_cf_,x); + caml_call2(Stdlib_Buffer[16],ob,s); + var _kf_=float_needs_period$1(s); + return _kf_?caml_call2(Stdlib_Buffer[16],ob,cst_0$7):_kf_} function write_std_float_prec$1(significant_figures,ob,x) {var match=caml_classify_float(x); if(3 === match) {var - _hh_= + _kd_= 0. < x - ?cst_Infinity_value_not_allowed$15 - :cst_Infinity_value_not_allowed$16; - return json_error(_hh_)} + ?cst_Infinity_value_not_allowed$9 + :cst_Infinity_value_not_allowed$10; + return json_error(_kd_)} return 4 <= match - ?json_error(cst_NaN_value_not_allowed_in_s$7) + ?json_error(cst_NaN_value_not_allowed_in_s$4) :write_normal_float_prec$1(significant_figures,ob,x)} - var write_intlit$0=Bi_outbuf[13]; + var write_intlit$0=Stdlib_Buffer[16]; function iter2$1(f_elt,f_sep,x,param$0) {if(param$0) {var l$0=param$0[2],y$0=param$0[1]; @@ -39487,300 +37743,440 @@ continue} return 0}} return 0} - function f_sep$1(ob){return caml_call2(Bi_outbuf[15],ob,44)} + function f_sep$1(ob){return caml_call2(Stdlib_Buffer[12],ob,44)} + function write_variant$0(ob,s,o) + {caml_call2(Stdlib_Buffer[12],ob,60); + write_string$1(ob,s); + if(o){var x=o[1];caml_call2(Stdlib_Buffer[12],ob,58);write_t$1(ob,x)} + return caml_call2(Stdlib_Buffer[12],ob,62)} function write_tuple$0(ob,l) - {caml_call2(Bi_outbuf[15],ob,40); + {caml_call2(Stdlib_Buffer[12],ob,40); iter2$1(write_t$1,f_sep$1,ob,l); - return caml_call2(Bi_outbuf[15],ob,41)} + return caml_call2(Stdlib_Buffer[12],ob,41)} function write_list$1(ob,l) - {caml_call2(Bi_outbuf[15],ob,91); + {caml_call2(Stdlib_Buffer[12],ob,91); iter2$1(write_t$1,f_sep$1,ob,l); - return caml_call2(Bi_outbuf[15],ob,93)} + return caml_call2(Stdlib_Buffer[12],ob,93)} + function write_assoc$1(ob,l) + {function f_elt(ob,param) + {var x=param[2],s=param[1]; + write_string$1(ob,s); + caml_call2(Stdlib_Buffer[12],ob,58); + return write_t$1(ob,x)} + caml_call2(Stdlib_Buffer[12],ob,123); + iter2$1(f_elt,f_sep$1,ob,l); + return caml_call2(Stdlib_Buffer[12],ob,125)} function write_t$1(ob,x) {if(typeof x === "number")return write_null$1(ob,0); - var _hg_=x[1]; - if(708012133 <= _hg_) - {if(726928360 === _hg_){var l=x[2];return write_tuple$0(ob,l)} - if(848054398 <= _hg_) - {if(963043957 <= _hg_){var l$0=x[2];return write_assoc$1(ob,l$0)} + var _kc_=x[1]; + if(708012133 <= _kc_) + {if(726928360 === _kc_){var l=x[2];return write_tuple$0(ob,l)} + if(848054398 <= _kc_) + {if(963043957 <= _kc_){var l$0=x[2];return write_assoc$1(ob,l$0)} var l$1=x[2]; return write_list$1(ob,l$1)} - if(737456202 <= _hg_){var b=x[2];return write_bool$1(ob,b)} + if(737456202 <= _kc_){var b=x[2];return write_bool$1(ob,b)} var match=x[2],o=match[2],s=match[1]; return write_variant$0(ob,s,o)} - if(3654863 <= _hg_) - {if(365180284 <= _hg_){var f=x[2];return write_float$1(ob,f)} + if(3654863 <= _kc_) + {if(365180284 <= _kc_){var f=x[2];return write_float$1(ob,f)} var i=x[2]; return write_int$1(ob,i)} - if(-752863768 <= _hg_) - {var s$0=x[2];return caml_call2(Bi_outbuf[13],ob,s$0)} + if(-752863768 <= _kc_) + {var s$0=x[2];return caml_call2(Stdlib_Buffer[16],ob,s$0)} var s$1=x[2]; return write_string$1(ob,s$1)} - function write_assoc$1(ob,l) - {function f_elt(ob,param) - {var x=param[2],s=param[1]; + function write_std_variant$0(ob,s,o) + {if(o) + {var x=o[1]; + caml_call2(Stdlib_Buffer[12],ob,91); write_string$1(ob,s); - caml_call2(Bi_outbuf[15],ob,58); - return write_t$1(ob,x)} - caml_call2(Bi_outbuf[15],ob,123); - iter2$1(f_elt,f_sep$1,ob,l); - return caml_call2(Bi_outbuf[15],ob,125)} - function write_variant$0(ob,s,o) - {caml_call2(Bi_outbuf[15],ob,60); - write_string$1(ob,s); - if(o){var x=o[1];caml_call2(Bi_outbuf[15],ob,58);write_t$1(ob,x)} - return caml_call2(Bi_outbuf[15],ob,62)} + caml_call2(Stdlib_Buffer[12],ob,44); + write_std_json$1(ob,x); + return caml_call2(Stdlib_Buffer[12],ob,93)} + return write_string$1(ob,s)} function write_std_tuple$0(ob,l) - {caml_call2(Bi_outbuf[15],ob,91); + {caml_call2(Stdlib_Buffer[12],ob,91); iter2$1(write_std_json$1,f_sep$1,ob,l); - return caml_call2(Bi_outbuf[15],ob,93)} + return caml_call2(Stdlib_Buffer[12],ob,93)} function write_std_json$1(ob,x) {if(typeof x === "number")return write_null$1(ob,0); - var _hf_=x[1]; - if(708012133 <= _hf_) - {if(726928360 === _hf_){var l=x[2];return write_std_tuple$0(ob,l)} - if(848054398 <= _hf_) - {if(963043957 <= _hf_) + var _kb_=x[1]; + if(708012133 <= _kb_) + {if(726928360 === _kb_){var l=x[2];return write_std_tuple$0(ob,l)} + if(848054398 <= _kb_) + {if(963043957 <= _kb_) {var l$0=x[2], f_elt= function(ob,param) {var x=param[2],s=param[1]; write_string$1(ob,s); - caml_call2(Bi_outbuf[15],ob,58); + caml_call2(Stdlib_Buffer[12],ob,58); return write_std_json$1(ob,x)}; - caml_call2(Bi_outbuf[15],ob,123); + caml_call2(Stdlib_Buffer[12],ob,123); iter2$1(f_elt,f_sep$1,ob,l$0); - return caml_call2(Bi_outbuf[15],ob,125)} + return caml_call2(Stdlib_Buffer[12],ob,125)} var l$1=x[2]; - caml_call2(Bi_outbuf[15],ob,91); + caml_call2(Stdlib_Buffer[12],ob,91); iter2$1(write_std_json$1,f_sep$1,ob,l$1); - return caml_call2(Bi_outbuf[15],ob,93)} - if(737456202 <= _hf_){var b=x[2];return write_bool$1(ob,b)} + return caml_call2(Stdlib_Buffer[12],ob,93)} + if(737456202 <= _kb_){var b=x[2];return write_bool$1(ob,b)} var match=x[2],o=match[2],s=match[1]; return write_std_variant$0(ob,s,o)} - if(3654863 <= _hf_) - {if(365180284 <= _hf_){var f=x[2];return write_std_float$1(ob,f)} + if(3654863 <= _kb_) + {if(365180284 <= _kb_){var f=x[2];return write_std_float$1(ob,f)} var i=x[2]; return write_int$1(ob,i)} - if(-752863768 <= _hf_) - {var s$0=x[2];return caml_call2(Bi_outbuf[13],ob,s$0)} + if(-752863768 <= _kb_) + {var s$0=x[2];return caml_call2(Stdlib_Buffer[16],ob,s$0)} var s$1=x[2]; return write_string$1(ob,s$1)} - function write_std_variant$0(ob,s,o) - {if(o) - {var x=o[1]; - caml_call2(Bi_outbuf[15],ob,91); - write_string$1(ob,s); - caml_call2(Bi_outbuf[15],ob,44); - write_std_json$1(ob,x); - return caml_call2(Bi_outbuf[15],ob,93)} - return write_string$1(ob,s)} - function to_outbuf$1(opt,ob,x) - {if(opt)var sth=opt[1],std=sth;else var std=0; - return std - ?is_object_or_array(x) - ?write_std_json$1(ob,x) - :json_error(cst_Root_is_not_an_object_or_a$2) - :write_t$1(ob,x)} - function to_string$3(buf,opt,std,x) + function to_buffer$1(opt,_ka_,ob,x) + {if(opt)var sth=opt[1],suf=sth;else var suf=cst$39; + if(_ka_)var sth$0=_ka_[1],std=sth$0;else var std=0; + if(std)write_std_json$1(ob,x);else write_t$1(ob,x); + return caml_call2(Stdlib_Buffer[16],ob,suf)} + function to_string$2(buf,opt,_j$_,std,x) {if(opt)var sth=opt[1],len=sth;else var len=256; + if(_j$_)var sth$0=_j$_[1],suf=sth$0;else var suf=cst$40; if(buf) - {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob} + {var ob=buf[1];caml_call1(Stdlib_Buffer[8],ob);var ob$0=ob} else - var ob$0=caml_call3(Bi_outbuf[3],0,0,len); - to_outbuf$1(std,ob$0,x); - var s=caml_call1(Bi_outbuf[4],ob$0); - caml_call1(Bi_outbuf[19],ob$0); + var ob$0=caml_call1(Stdlib_Buffer[1],len); + to_buffer$1([0,suf],std,ob$0,x); + var s=caml_call1(Stdlib_Buffer[2],ob$0); + caml_call1(Stdlib_Buffer[8],ob$0); return s} - function to_channel$2(buf,len,std,oc,x) - {if(buf) - var ob=buf[1],ob$0=ob; + function to_channel$1(buf,opt,_j__,std,oc,x) + {if(opt)var sth=opt[1],len=sth;else var len=4096; + if(_j__)var sth$0=_j__[1],suf=sth$0;else var suf=cst$41; + if(buf) + {var ob=buf[1];caml_call1(Stdlib_Buffer[8],ob);var ob$0=ob} else - var ob$0=caml_call3(Bi_outbuf[5],len,0,oc); - to_outbuf$1(std,ob$0,x); - return caml_call1(Bi_outbuf[6],ob$0)} - function to_output$1(buf,len,std,out,x) - {if(buf) - var ob=buf[1],ob$0=ob; + var ob$0=caml_call1(Stdlib_Buffer[1],len); + to_buffer$1([0,suf],std,ob$0,x); + caml_call2(Stdlib_Buffer[10],oc,ob$0); + return caml_call1(Stdlib_Buffer[8],ob$0)} + function to_output$1(buf,opt,_j8_,std,out,x) + {if(opt)var sth=opt[1],len=sth;else var len=4096; + if(_j8_)var sth$0=_j8_[1],suf=sth$0;else var suf=cst$42; + if(buf) + {var ob=buf[1];caml_call1(Stdlib_Buffer[8],ob);var ob$0=ob} else - var ob$0=caml_call3(Bi_outbuf[7],len,0,out); - to_outbuf$1(std,ob$0,x); - return caml_call1(Bi_outbuf[8],ob$0)} - function to_file$1(len,std,file,x) - {var oc=caml_call1(Stdlib[60],file); + var ob$0=caml_call1(Stdlib_Buffer[1],len); + to_buffer$1([0,suf],std,ob$0,x); + var _j9_=caml_call1(Stdlib_Buffer[7],ob$0); + caml_call4 + (caml_get_public_method(out,209784577,3), + out, + caml_call1(Stdlib_Buffer[2],ob$0), + 0, + _j9_); + return caml_call1(Stdlib_Buffer[8],ob$0)} + function to_file$1(len,std,opt,file,x) + {if(opt)var sth=opt[1],suf=sth;else var suf=cst$43; + var oc=caml_call1(Stdlib[60],file); try - {to_channel$2(0,len,std,oc,x); - var _he_=caml_call1(Stdlib[76],oc); - return _he_} + {to_channel$1(0,len,[0,suf],std,oc,x); + var _j7_=caml_call1(Stdlib[76],oc); + return _j7_} catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}} - function stream_to_outbuf$1(std,ob,st) - {function _hc_(_hd_){return to_outbuf$1(std,ob,_hd_)} - return caml_call2(Stdlib_Stream[8],_hc_,st)} - function stream_to_string$1(buf,opt,std,st) + function seq_to_buffer$1(opt,std,ob,st) + {if(opt)var sth=opt[1],suf=sth;else var suf=cst$44; + var _j4_=[0,suf]; + function _j5_(_j6_){return to_buffer$1(_j4_,std,ob,_j6_)} + return caml_call2(Stdlib_Seq[4],_j5_,st)} + function seq_to_string$1(buf,opt,_j3_,std,st) {if(opt)var sth=opt[1],len=sth;else var len=256; + if(_j3_)var sth$0=_j3_[1],suf=sth$0;else var suf=cst$45; if(buf) - {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob} + {var ob=buf[1];caml_call1(Stdlib_Buffer[8],ob);var ob$0=ob} else - var ob$0=caml_call3(Bi_outbuf[3],0,0,len); - stream_to_outbuf$1(std,ob$0,st); - var s=caml_call1(Bi_outbuf[4],ob$0); - caml_call1(Bi_outbuf[19],ob$0); + var ob$0=caml_call1(Stdlib_Buffer[1],len); + seq_to_buffer$1([0,suf],std,ob$0,st); + var s=caml_call1(Stdlib_Buffer[2],ob$0); + caml_call1(Stdlib_Buffer[8],ob$0); return s} - function stream_to_channel$1(buf,len,std,oc,st) - {if(buf) - var ob=buf[1],ob$0=ob; + function seq_to_channel$1(buf,opt,_j1_,std,oc,seq) + {if(opt)var sth=opt[1],len=sth;else var len=2096; + if(_j1_)var sth$0=_j1_[1],suf=sth$0;else var suf=cst$46; + if(buf) + {var ob=buf[1];caml_call1(Stdlib_Buffer[8],ob);var ob$0=ob} else - var ob$0=caml_call3(Bi_outbuf[5],len,0,oc); - stream_to_outbuf$1(std,ob$0,st); - return caml_call1(Bi_outbuf[6],ob$0)} - function stream_to_file$1(len,std,file,st) - {var oc=caml_call1(Stdlib[60],file); + var ob$0=caml_call1(Stdlib_Buffer[1],len); + function _j2_(json) + {to_buffer$1([0,suf],std,ob$0,json); + caml_call2(Stdlib_Buffer[10],oc,ob$0); + return caml_call1(Stdlib_Buffer[8],ob$0)} + return caml_call2(Stdlib_Seq[4],_j2_,seq)} + function seq_to_file$1(len,opt,std,file,st) + {if(opt)var sth=opt[1],suf=sth;else var suf=cst$47; + var oc=caml_call1(Stdlib[60],file); try - {stream_to_channel$1(0,len,std,oc,st); - var _hb_=caml_call1(Stdlib[76],oc); - return _hb_} + {seq_to_channel$1(0,len,[0,suf],std,oc,st); + var _j0_=caml_call1(Stdlib[76],oc); + return _j0_} catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}} function sort$1(x) {if(typeof x !== "number") - {var _g4_=x[1]; - if(726928361 <= _g4_) - {if(848054398 === _g4_) - {var l=x[2],_g5_=caml_call2(Stdlib_List[21],sort$1,l); - return [0,848054398,caml_call1(Stdlib_List[9],_g5_)]} - if(963043957 === _g4_) + {var _jR_=x[1]; + if(726928361 <= _jR_) + {if(848054398 === _jR_) + {var l=x[2],_jS_=caml_call2(Stdlib_List[21],sort$1,l); + return [0,848054398,caml_call1(Stdlib_List[9],_jS_)]} + if(963043957 === _jR_) {var l$0=x[2], - _g6_= + _jT_= function(param) {var v=param[2],k=param[1];return [0,k,sort$1(v)]}, - _g7_=caml_call2(Stdlib_List[21],_g6_,l$0), - l$1=caml_call1(Stdlib_List[9],_g7_), - _g8_= - function(param,_ha_) - {var b=_ha_[1],a=param[1]; + _jU_=caml_call2(Stdlib_List[21],_jT_,l$0), + l$1=caml_call1(Stdlib_List[9],_jU_), + _jV_= + function(param,_jZ_) + {var b=_jZ_[1],a=param[1]; return caml_call2(Stdlib_String[9],a,b)}; - return [0,963043957,caml_call2(Stdlib_List[57],_g8_,l$1)]}} + return [0,963043957,caml_call2(Stdlib_List[57],_jV_,l$1)]}} else - if(708012133 === _g4_) - {var _g9_=x[2],_g__=_g9_[2]; - if(_g__) - {var v=_g__[1],k=_g9_[1],v$0=sort$1(v); + if(708012133 === _jR_) + {var _jW_=x[2],_jX_=_jW_[2]; + if(_jX_) + {var v=_jX_[1],k=_jW_[1],v$0=sort$1(v); return v === v$0?x:[0,708012133,[0,k,[0,v$0]]]}} else - if(726928360 <= _g4_) - {var l$2=x[2],_g$_=caml_call2(Stdlib_List[21],sort$1,l$2); - return [0,726928360,caml_call1(Stdlib_List[9],_g$_)]}} + if(726928360 <= _jR_) + {var l$2=x[2],_jY_=caml_call2(Stdlib_List[21],sort$1,l$2); + return [0,726928360,caml_call1(Stdlib_List[9],_jY_)]}} return x} - function pp$1(fmt,param) + function pp_list$1(sep,ppx,out,l) + {function pp_sep(out,param) + {return caml_call3(Stdlib_Format[129],out,_cg_,sep)} + return caml_call4(Stdlib_Format[123],[0,pp_sep],ppx,out,l)} + function is_atom$1(x) + {if(typeof x !== "number") + {var _jQ_=x[1],switch$0=0; + if(737456202 <= _jQ_) + {if(848054398 === _jQ_) + {if(x[2])switch$0 = 1} + else + if(963043957 <= _jQ_ && x[2])switch$0 = 1} + else + if(708012133 === _jQ_) + {if(x[2][2])switch$0 = 1} + else + if(726928360 <= _jQ_ && x[2])switch$0 = 1; + if(switch$0)return 0} + return 1} + function format$1(inside_box,std,out,x) + {var x$0=x; + for(;;) + {if(typeof x$0 === "number") + return caml_call2(Stdlib_Format[13],out,cst_null$5); + var _i9_=x$0[1]; + if(708012133 <= _i9_) + {if(726928360 === _i9_) + {var l=x$0[2]; + if(std){var x$1=[0,848054398,l],x$0=x$1;continue} + if(0 === l)return caml_call2(Stdlib_Format[13],out,cst$48); + if(1 - inside_box)caml_call2(Stdlib_Format[129],out,_ch_); + var + _i__=0, + _i$_=function(_jO_,_jP_){return format$1(_i__,std,_jO_,_jP_)}, + _ja_=function(_jM_,_jN_){return pp_list$1(cst$49,_i$_,_jM_,_jN_)}; + caml_call4(Stdlib_Format[129],out,_ci_,_ja_,l); + var _jb_=1 - inside_box; + return _jb_?caml_call2(Stdlib_Format[129],out,_cj_):_jb_} + if(848054398 <= _i9_) + {if(963043957 <= _i9_) + {var _jc_=x$0[2]; + if(_jc_) + {if(1 - inside_box)caml_call2(Stdlib_Format[129],out,_ck_); + var + _jd_= + function(out,param) + {var x=param[2],name=param[1],_jH_=1; + function _jI_(_jK_,_jL_) + {return format$1(_jH_,std,_jK_,_jL_)} + var _jJ_=json_string_of_string$1(name); + return caml_call5(Stdlib_Format[129],out,_ct_,_jJ_,_jI_,x)}, + _je_= + function(_jF_,_jG_){return pp_list$1(cst$50,_jd_,_jF_,_jG_)}; + caml_call4(Stdlib_Format[129],out,_cl_,_je_,_jc_); + var _jf_=1 - inside_box; + return _jf_?caml_call2(Stdlib_Format[129],out,_cm_):_jf_} + return caml_call2(Stdlib_Format[13],out,cst$51)} + var _jg_=x$0[2]; + if(_jg_) + {if(1 - inside_box)caml_call2(Stdlib_Format[129],out,_cn_); + if(caml_call2(Stdlib_List[32],is_atom$1,_jg_)) + {var + _jh_=0, + _ji_=function(_jz_,_jA_){return format$1(_jh_,std,_jz_,_jA_)}, + _jj_= + function(_jx_,_jy_){return pp_list$1(cst$52,_ji_,_jx_,_jy_)}; + caml_call4(Stdlib_Format[129],out,_co_,_jj_,_jg_)} + else + {var + _jl_=0, + _jm_=function(_jD_,_jE_){return format$1(_jl_,std,_jD_,_jE_)}, + _jn_= + function(_jB_,_jC_){return pp_list$1(cst$53,_jm_,_jB_,_jC_)}; + caml_call4(Stdlib_Format[129],out,_cq_,_jn_,_jg_)} + var _jk_=1 - inside_box; + return _jk_?caml_call2(Stdlib_Format[129],out,_cp_):_jk_} + return caml_call2(Stdlib_Format[13],out,cst$54)} + if(737456202 <= _i9_) + {var x$2=x$0[2];return caml_call2(Stdlib_Format[25],out,x$2)} + var _jo_=x$0[2],_jp_=_jo_[2],_jq_=_jo_[1]; + if(_jp_) + {var x$3=_jp_[1]; + if(std) + {var + representation=[0,-976970511,_jq_], + x$4=[0,848054398,[0,representation,[0,x$3,0]]], + x$0=x$4; + continue} + var + op=json_string_of_string$1(_jq_), + _jr_=1, + _js_=function(_jv_,_jw_){return format$1(_jr_,std,_jv_,_jw_)}; + return caml_call5(Stdlib_Format[129],out,_cr_,op,_js_,x$3)} + if(std){var x$5=[0,-976970511,_jq_],x$0=x$5;continue} + var _jt_=json_string_of_string$1(_jq_); + return caml_call3(Stdlib_Format[129],out,_cs_,_jt_)} + if(3654863 <= _i9_) + {if(365180284 <= _i9_) + {var x$6=x$0[2]; + if(std) + {var ob$0=caml_call1(Stdlib_Buffer[1],20); + write_std_float$1(ob$0,x$6); + var s=caml_call1(Stdlib_Buffer[2],ob$0)} + else + {var ob=caml_call1(Stdlib_Buffer[1],20); + write_float$1(ob,x$6); + var s=caml_call1(Stdlib_Buffer[2],ob)} + return caml_call2(Stdlib_Format[13],out,s)} + var x$7=x$0[2],_i8_=caml_call1(Stdlib[33],x$7); + return caml_call2(Stdlib_Format[13],out,_i8_)} + if(-752863768 <= _i9_) + {var s$0=x$0[2];return caml_call2(Stdlib_Format[13],out,s$0)} + var s$1=x$0[2],_ju_=json_string_of_string$1(s$1); + return caml_call2(Stdlib_Format[13],out,_ju_)}} + function pp$3(opt,out,x) + {if(opt)var sth=opt[1],std=sth;else var std=0; + var _i4_=1; + function _i5_(_i6_,_i7_){return format$1(_i4_,std,_i6_,_i7_)} + return caml_call4(Stdlib_Format[129],out,_cu_,_i5_,x)} + function pp$4(fmt,param) {if(typeof param === "number") return caml_call2(Stdlib_Format[13],fmt,cst_Null$1); - var _gX_=param[1]; - if(708012133 <= _gX_) - {if(726928360 === _gX_) + var _iX_=param[1]; + if(708012133 <= _iX_) + {if(726928360 === _iX_) {var tup=param[2]; - caml_call2(Stdlib_Format[129],fmt,_b2_); - caml_call2(Stdlib_Format[129],fmt,_b3_); + caml_call2(Stdlib_Format[129],fmt,_cx_); + caml_call2(Stdlib_Format[129],fmt,_cy_); var - _gY_=0, - _gZ_= + _iY_=0, + _iZ_= function(sep,e) - {if(sep)caml_call2(Stdlib_Format[129],fmt,_b4_); - pp$1(fmt,e); + {if(sep)caml_call2(Stdlib_Format[129],fmt,_cz_); + pp$4(fmt,e); return 1}; - caml_call3(Stdlib_List[25],_gZ_,_gY_,tup); - caml_call2(Stdlib_Format[129],fmt,_b5_); - return caml_call2(Stdlib_Format[129],fmt,_b6_)} - if(848054398 <= _gX_) - {if(963043957 <= _gX_) + caml_call3(Stdlib_List[25],_iZ_,_iY_,tup); + caml_call2(Stdlib_Format[129],fmt,_cA_); + return caml_call2(Stdlib_Format[129],fmt,_cB_)} + if(848054398 <= _iX_) + {if(963043957 <= _iX_) {var xs=param[2]; - caml_call2(Stdlib_Format[129],fmt,_b7_); - caml_call2(Stdlib_Format[129],fmt,_b8_); + caml_call2(Stdlib_Format[129],fmt,_cC_); + caml_call2(Stdlib_Format[129],fmt,_cD_); var - _g0_=0, - _g1_= + _i0_=0, + _i1_= function(sep,param) {var value=param[2],key=param[1]; - if(sep)caml_call2(Stdlib_Format[129],fmt,_b9_); - caml_call2(Stdlib_Format[129],fmt,_b__); - caml_call3(Stdlib_Format[129],fmt,_b$_,key); - caml_call2(Stdlib_Format[129],fmt,_ca_); - pp$1(fmt,value); - caml_call2(Stdlib_Format[129],fmt,_cb_); + if(sep)caml_call2(Stdlib_Format[129],fmt,_cE_); + caml_call2(Stdlib_Format[129],fmt,_cF_); + caml_call3(Stdlib_Format[129],fmt,_cG_,key); + caml_call2(Stdlib_Format[129],fmt,_cH_); + pp$4(fmt,value); + caml_call2(Stdlib_Format[129],fmt,_cI_); return 1}; - caml_call3(Stdlib_List[25],_g1_,_g0_,xs); - caml_call2(Stdlib_Format[129],fmt,_cc_); - return caml_call2(Stdlib_Format[129],fmt,_cd_)} + caml_call3(Stdlib_List[25],_i1_,_i0_,xs); + caml_call2(Stdlib_Format[129],fmt,_cJ_); + return caml_call2(Stdlib_Format[129],fmt,_cK_)} var xs$0=param[2]; - caml_call2(Stdlib_Format[129],fmt,_ce_); - caml_call2(Stdlib_Format[129],fmt,_cf_); + caml_call2(Stdlib_Format[129],fmt,_cL_); + caml_call2(Stdlib_Format[129],fmt,_cM_); var - _g2_=0, - _g3_= + _i2_=0, + _i3_= function(sep,x) - {if(sep)caml_call2(Stdlib_Format[129],fmt,_cg_); - pp$1(fmt,x); + {if(sep)caml_call2(Stdlib_Format[129],fmt,_cN_); + pp$4(fmt,x); return 1}; - caml_call3(Stdlib_List[25],_g3_,_g2_,xs$0); - caml_call2(Stdlib_Format[129],fmt,_ch_); - return caml_call2(Stdlib_Format[129],fmt,_ci_)} - if(737456202 <= _gX_) + caml_call3(Stdlib_List[25],_i3_,_i2_,xs$0); + caml_call2(Stdlib_Format[129],fmt,_cO_); + return caml_call2(Stdlib_Format[129],fmt,_cP_)} + if(737456202 <= _iX_) {var x=param[2]; - caml_call2(Stdlib_Format[129],fmt,_cj_); - caml_call3(Stdlib_Format[129],fmt,_ck_,x); - return caml_call2(Stdlib_Format[129],fmt,_cl_)} + caml_call2(Stdlib_Format[129],fmt,_cQ_); + caml_call3(Stdlib_Format[129],fmt,_cR_,x); + return caml_call2(Stdlib_Format[129],fmt,_cS_)} var match=param[2],value=match[2],name=match[1]; - caml_call2(Stdlib_Format[129],fmt,_cm_); - caml_call2(Stdlib_Format[129],fmt,_cn_); - caml_call3(Stdlib_Format[129],fmt,_co_,name); - caml_call2(Stdlib_Format[129],fmt,_cp_); + caml_call2(Stdlib_Format[129],fmt,_cT_); + caml_call2(Stdlib_Format[129],fmt,_cU_); + caml_call3(Stdlib_Format[129],fmt,_cV_,name); + caml_call2(Stdlib_Format[129],fmt,_cW_); if(value) {var x$0=value[1]; caml_call2(Stdlib_Format[13],fmt,cst_Some$0); - pp$1(fmt,x$0); - caml_call2(Stdlib_Format[13],fmt,cst$27)} + pp$4(fmt,x$0); + caml_call2(Stdlib_Format[13],fmt,cst$55)} else caml_call2(Stdlib_Format[13],fmt,cst_None$0); - caml_call2(Stdlib_Format[129],fmt,_cq_); - return caml_call2(Stdlib_Format[129],fmt,_cr_)} - if(3654863 <= _gX_) - {if(365180284 <= _gX_) + caml_call2(Stdlib_Format[129],fmt,_cX_); + return caml_call2(Stdlib_Format[129],fmt,_cY_)} + if(3654863 <= _iX_) + {if(365180284 <= _iX_) {var x$1=param[2]; - caml_call2(Stdlib_Format[129],fmt,_cs_); - caml_call3(Stdlib_Format[129],fmt,_ct_,x$1); - return caml_call2(Stdlib_Format[129],fmt,_cu_)} + caml_call2(Stdlib_Format[129],fmt,_cZ_); + caml_call3(Stdlib_Format[129],fmt,_c0_,x$1); + return caml_call2(Stdlib_Format[129],fmt,_c1_)} var x$2=param[2]; - caml_call2(Stdlib_Format[129],fmt,_cv_); - caml_call3(Stdlib_Format[129],fmt,_cw_,x$2); - return caml_call2(Stdlib_Format[129],fmt,_cx_)} - if(-752863768 <= _gX_) + caml_call2(Stdlib_Format[129],fmt,_c2_); + caml_call3(Stdlib_Format[129],fmt,_c3_,x$2); + return caml_call2(Stdlib_Format[129],fmt,_c4_)} + if(-752863768 <= _iX_) {var x$3=param[2]; - caml_call2(Stdlib_Format[129],fmt,_cy_); - caml_call3(Stdlib_Format[129],fmt,_cz_,x$3); - return caml_call2(Stdlib_Format[129],fmt,_cA_)} + caml_call2(Stdlib_Format[129],fmt,_c5_); + caml_call3(Stdlib_Format[129],fmt,_c6_,x$3); + return caml_call2(Stdlib_Format[129],fmt,_c7_)} var x$4=param[2]; - caml_call2(Stdlib_Format[129],fmt,_cB_); - caml_call3(Stdlib_Format[129],fmt,_cC_,x$4); - return caml_call2(Stdlib_Format[129],fmt,_cD_)} - function show$1(x){return caml_call3(Stdlib_Format[133],_cE_,pp$1,x)} + caml_call2(Stdlib_Format[129],fmt,_c8_); + caml_call3(Stdlib_Format[129],fmt,_c9_,x$4); + return caml_call2(Stdlib_Format[129],fmt,_c__)} + function show$1(x){return caml_call3(Stdlib_Format[133],_c$_,pp$4,x)} function equal$1(a,b) {var a$0=a,b$0=b; for(;;) {if(typeof a$0 === "number") {if(870828711 === a$0 && 870828711 === b$0)return 1} else - {var _gQ_=a$0[1]; - if(708012133 <= _gQ_) + {var _iQ_=a$0[1]; + if(708012133 <= _iQ_) {var switch$0=0; - if(737456203 <= _gQ_) - {if(848054398 === _gQ_) + if(737456203 <= _iQ_) + {if(848054398 === _iQ_) {if(typeof b$0 !== "number" && 848054398 === b$0[1]) {var ys=b$0[2],xs=a$0[2];switch$0 = 1}} else if (963043957 === - _gQ_ + _iQ_ && typeof b$0 !== @@ -39793,38 +38189,38 @@ ys$0=b$0[2], xs$0=a$0[2], compare_keys= - function(param,_gW_) - {var key=_gW_[1],key$0=param[1]; + function(param,_iW_) + {var key=_iW_[1],key$0=param[1]; return caml_call2(Stdlib_String[9],key$0,key)}, xs$1=caml_call2(Stdlib_List[57],compare_keys,xs$0), ys$1=caml_call2(Stdlib_List[57],compare_keys,ys$0); try {var - _gR_= - function(param,_gV_) + _iR_= + function(param,_iV_) {var - value=_gV_[2], - key=_gV_[1], + value=_iV_[2], + key=_iV_[1], value$0=param[2], key$0=param[1], match=caml_string_equal(key$0,key); return match?equal$1(value$0,value):0}, - result$0=caml_call3(Stdlib_List[34],_gR_,xs$1,ys$1); + result$0=caml_call3(Stdlib_List[34],_iR_,xs$1,ys$1); return result$0} - catch(_gU_) - {_gU_ = caml_wrap_exception(_gU_); - if(_gU_[1] === Stdlib[6])return 0; - throw _gU_}}} + catch(_iU_) + {_iU_ = caml_wrap_exception(_iU_); + if(_iU_[1] === Stdlib[6])return 0; + throw _iU_}}} else - if(726928360 === _gQ_) + if(726928360 === _iQ_) {if(typeof b$0 !== "number" && 726928360 === b$0[1]) {var ys=b$0[2],xs=a$0[2];switch$0 = 1}} else - if(708012134 <= _gQ_) + if(708012134 <= _iQ_) {if (737456202 <= - _gQ_ + _iQ_ && typeof b$0 !== @@ -39837,9 +38233,9 @@ else if(typeof b$0 !== "number" && 708012133 === b$0[1]) {var - _gS_=b$0[2], - value=_gS_[2], - name=_gS_[1], + _iS_=b$0[2], + value=_iS_[2], + name=_iS_[1], match=a$0[2], value$0=match[2], name$0=match[1], @@ -39856,20 +38252,20 @@ try {var result=caml_call3(Stdlib_List[34],equal$1,xs,ys); return result} - catch(_gT_) - {_gT_ = caml_wrap_exception(_gT_); - if(_gT_[1] === Stdlib[6])return 0; - throw _gT_}} + catch(_iT_) + {_iT_ = caml_wrap_exception(_iT_); + if(_iT_[1] === Stdlib[6])return 0; + throw _iT_}} else - if(-752863767 <= _gQ_) - {if(3654863 === _gQ_) + if(-752863767 <= _iQ_) + {if(3654863 === _iQ_) {if(typeof b$0 !== "number" && 3654863 === b$0[1]) {var b$3=b$0[2],a$3=a$0[2];return caml_equal(a$3,b$3)}} else if (365180284 === - _gQ_ + _iQ_ && typeof b$0 !== @@ -39880,14 +38276,14 @@ b$0[1]) {var b$4=b$0[2],a$4=a$0[2];return caml_equal(a$4,b$4)}} else - if(-976970511 === _gQ_) + if(-976970511 === _iQ_) {if(typeof b$0 !== "number" && -976970511 === b$0[1]) {var b$5=b$0[2],a$5=a$0[2];return caml_equal(a$5,b$5)}} else if (-752863768 <= - _gQ_ + _iQ_ && typeof b$0 !== @@ -39898,12 +38294,14 @@ b$0[1]) {var b$6=b$0[2],a$6=a$0[2];return caml_equal(a$6,b$6)}} return 0}} - function pretty_format$1(std,x){return format(std,x)} - function pretty_print$1(std,out,x) - {var _gP_=pretty_format$1(std,x); - return caml_call2(Easy_format[4][2],out,_gP_)} - function pretty_to_string$1(std,x){return to_string$0(std,x)} - function pretty_to_channel$1(std,oc,x){return to_channel$0(std,oc,x)} + function pretty_print$1(std,out,x){return pp$3(std,out,x)} + function pretty_to_string$1(std,x) + {function _iN_(_iO_,_iP_){return pp$3(std,_iO_,_iP_)} + return caml_call3(Stdlib_Format[133],_cv_,_iN_,x)} + function pretty_to_channel$1(std,oc,x) + {var fmt=caml_call1(Stdlib_Format[108],oc); + function _iK_(_iL_,_iM_){return pp$3(std,_iL_,_iM_)} + return caml_call4(Stdlib_Format[129],fmt,_cw_,_iK_,x)} var from_channel$1=Stdlib_Lexing[2], from_string$1=Stdlib_Lexing[3], @@ -39918,43 +38316,43 @@ if(! (71 <= c))return (c - 65 | 0) + 10 | 0} else if(! (9 < c - 48 >>> 0))return c - 48 | 0; - throw [0,Assert_failure,_cF_]} + throw [0,Assert_failure,_da_]} function custom_error$0(descr,v,lexbuf) {var offs=lexbuf[4] - 1 | 0, bol=v[3], pos1=((offs + lexbuf[5] | 0) - bol | 0) - 1 | 0, pos2=caml_call2(Stdlib[17],pos1,(offs + lexbuf[6] | 0) - bol | 0), - _gO_=v[4]; - if(_gO_) - var s=_gO_[1],file_line=caml_call2(Stdlib_Printf[4],_cG_,s); + _iJ_=v[4]; + if(_iJ_) + var s=_iJ_[1],file_line=caml_call2(Stdlib_Printf[4],_db_,s); else var file_line=cst_Line$0; var bytes= pos1 === pos2 - ?caml_call2(Stdlib_Printf[4],_cH_,pos1 + 1 | 0) - :caml_call3(Stdlib_Printf[4],_cJ_,pos1 + 1 | 0,pos2 + 1 | 0), - msg=caml_call5(Stdlib_Printf[4],_cI_,file_line,v[2],bytes,descr); + ?caml_call2(Stdlib_Printf[4],_dc_,pos1 + 1 | 0) + :caml_call3(Stdlib_Printf[4],_de_,pos1 + 1 | 0,pos2 + 1 | 0), + msg=caml_call5(Stdlib_Printf[4],_dd_,file_line,v[2],bytes,descr); return json_error(msg)} function lexer_error$0(descr,v,lexbuf) - {var _gN_=caml_call1(lexeme$0,lexbuf); + {var _iI_=caml_call1(lexeme$0,lexbuf); return custom_error$0 - (caml_call3(Stdlib_Printf[4],_cK_,descr,_gN_),v,lexbuf)} - var read_junk$0=[0,function(param){throw [0,Assert_failure,_cL_]}]; + (caml_call3(Stdlib_Printf[4],_df_,descr,_iI_),v,lexbuf)} + var read_junk$0=[0,function(param){throw [0,Assert_failure,_dg_]}]; function long_error$0(descr,v,lexbuf) {var junk=caml_call1(lexeme$0,lexbuf), extra_junk=caml_call1(read_junk$0[1],lexbuf); return custom_error$0 - (caml_call4(Stdlib_Printf[4],_cM_,descr,junk,extra_junk), + (caml_call4(Stdlib_Printf[4],_dh_,descr,junk,extra_junk), v, lexbuf)} var - _cN_=0 === (Stdlib[20] % 10 | 0)?0:1, - min10$0=(Stdlib[20] / 10 | 0) - _cN_ | 0, - _cO_=0 === (Stdlib[19] % 10 | 0)?0:1, - max10$0=(Stdlib[19] / 10 | 0) + _cO_ | 0, + _di_=0 === (Stdlib[20] % 10 | 0)?0:1, + min10$0=(Stdlib[20] / 10 | 0) - _di_ | 0, + _dj_=0 === (Stdlib[19] % 10 | 0)?0:1, + max10$0=(Stdlib[19] / 10 | 0) + _dj_ | 0, Int_overflow$0=[248,cst_Yojson_Safe_Int_overflow,caml_fresh_oo_id(0)]; function extract_positive_int$0(lexbuf) {var @@ -39962,15 +38360,15 @@ stop=lexbuf[6], s=lexbuf[2], n=[0,0], - _gK_=stop - 1 | 0; - if(! (_gK_ < start)) + _iF_=stop - 1 | 0; + if(! (_iF_ < start)) {var i=start; for(;;) {if(max10$0 <= n[1])throw Int_overflow$0; - var _gL_=caml_bytes_get(s,i) - 48 | 0; - n[1] = (10 * n[1] | 0) + _gL_ | 0; - var _gM_=i + 1 | 0; - if(_gK_ !== i){var i=_gM_;continue} + var _iG_=caml_bytes_get(s,i) - 48 | 0; + n[1] = (10 * n[1] | 0) + _iG_ | 0; + var _iH_=i + 1 | 0; + if(_iF_ !== i){var i=_iH_;continue} break}} if(0 <= n[1])return n[1]; throw Int_overflow$0} @@ -39980,15 +38378,15 @@ stop=lexbuf[6], s=lexbuf[2], n=[0,0], - _gH_=stop - 1 | 0; - if(! (_gH_ < start)) + _iC_=stop - 1 | 0; + if(! (_iC_ < start)) {var i=start; for(;;) {if(n[1] <= min10$0)throw Int_overflow$0; - var _gI_=caml_bytes_get(s,i) - 48 | 0; - n[1] = (10 * n[1] | 0) - _gI_ | 0; - var _gJ_=i + 1 | 0; - if(_gH_ !== i){var i=_gJ_;continue} + var _iD_=caml_bytes_get(s,i) - 48 | 0; + n[1] = (10 * n[1] | 0) - _iD_ | 0; + var _iE_=i + 1 | 0; + if(_iC_ !== i){var i=_iE_;continue} break}} if(0 < n[1])throw Int_overflow$0; return n[1]} @@ -39996,261 +38394,14 @@ {v[2] = v[2] + 1 | 0;v[3] = lexbuf[4] + lexbuf[6] | 0;return 0} function add_lexeme$0(buf,lexbuf) {var len=lexbuf[6] - lexbuf[5] | 0; - return caml_call4(Bi_outbuf[12],buf,lexbuf[2],lexbuf[5],len)} - function read_colon$0(v,lexbuf) - {var ocaml_lex_state=297; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error$0(cst_Expected_but_found$23,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$73,v,lexbuf)}}} - function read_object_sep$0(v,lexbuf) - {var ocaml_lex_state=292; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:throw End_of_object; - case 2:return long_error$0(cst_Expected_or_but_found$22,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$72,v,lexbuf)}}} - function read_object_end$0(lexbuf) - {var ocaml_lex_state=290; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0)throw End_of_object; - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function read_tuple_sep$0(v,lexbuf) - {var ocaml_lex_state=271; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:throw End_of_tuple; - case 2:return long_error$0(cst_Expected_or_but_found$18,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$68,v,lexbuf)}}} - function read_tuple_end$0(lexbuf) - {var ocaml_lex_state=266; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0)throw End_of_tuple; - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function read_array_sep$0(v,lexbuf) - {var ocaml_lex_state=257; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:throw End_of_array; - case 2:return long_error$0(cst_Expected_or_but_found$15,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$66,v,lexbuf)}}} - function read_array_end$0(lexbuf) - {var ocaml_lex_state=255; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0)throw End_of_array; - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function finish_escaped_char$0(v,lexbuf) - {var ocaml_lex_state=68; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(8 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0: - var c=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5]); - return caml_call2(Bi_outbuf[15],v[1],c); - case 1:return caml_call2(Bi_outbuf[15],v[1],8); - case 2:return caml_call2(Bi_outbuf[15],v[1],12); - case 3:return caml_call2(Bi_outbuf[15],v[1],10); - case 4:return caml_call2(Bi_outbuf[15],v[1],13); - case 5:return caml_call2(Bi_outbuf[15],v[1],9); - case 6: - var - a=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 1 | 0), - b=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 2 | 0), - c$0=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 3 | 0), - d=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 4 | 0), - _gB_=hex$3(d), - _gC_=hex$3(c$0) << 4, - _gD_=hex$3(b) << 8, - x=hex$3(a) << 12 | _gD_ | _gC_ | _gB_; - if(55296 <= x && ! (56319 < x)) - {var ocaml_lex_state$1=82; - for(;;) - {var - ocaml_lex_state$2= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$1,lexbuf); - if(2 < ocaml_lex_state$2 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$1=ocaml_lex_state$2; - continue} - switch(ocaml_lex_state$2) - {case 0: - var - a$0=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 2 | 0), - b$0=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 3 | 0), - c$1=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 4 | 0), - d$0=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 5 | 0), - _gE_=hex$3(d$0), - _gF_=hex$3(c$1) << 4, - _gG_=hex$3(b$0) << 8, - y=hex$3(a$0) << 12 | _gG_ | _gF_ | _gE_; - if(56320 <= y && ! (57343 < y)) - return utf8_of_surrogate_pair(v[1],x,y); - return long_error$0 - (cst_Invalid_low_surrogate_for_$0,v,lexbuf); - case 1: - return long_error$0 - (cst_Missing_escape_sequence_re$0,v,lexbuf); - default: - return custom_error$0 - (cst_Unexpected_end_of_input$48,v,lexbuf)}}} - return utf8_of_code(v[1],x); - case 7:return long_error$0(cst_Invalid_escape_sequence$0,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$47,v,lexbuf)}}} - function finish_string$3(v,lexbuf) - {a: - for(;;) - {var ocaml_lex_state=58; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return caml_call1(Bi_outbuf[4],v[1]); - case 1:finish_escaped_char$0(v,lexbuf);continue a; - case 2:add_lexeme$0(v[1],lexbuf);continue a; - default: - return custom_error$0(cst_Unexpected_end_of_input$45,v,lexbuf)}}}} - function read_ident$0(v,lexbuf) - {var ocaml_lex_state=237; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0: - caml_call1(Bi_outbuf[19],v[1]);return finish_string$3(v,lexbuf); - case 1: - var s=caml_call3(sub_lexeme$0,lexbuf,lexbuf[5],lexbuf[6]);return s; - case 2: - return long_error$0(cst_Expected_string_or_identif$3,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$62,v,lexbuf)}}} - function finish_comment$0(v,lexbuf) - {a: - for(;;) - {var ocaml_lex_state=125; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error$0(cst_Unterminated_comment$1,v,lexbuf); - case 2:newline$0(v,lexbuf);continue a; - default:continue a}}}} - function read_space$0(v,lexbuf) - {a: - for(;;) - {var ocaml_lex_state=133; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(4 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:newline$0(v,lexbuf);continue a; - case 1:finish_comment$0(v,lexbuf);continue a; - case 2:newline$0(v,lexbuf);continue a; - case 3:continue a; - default:return 0}}}} - function read_gt$0(v,lexbuf) - {var ocaml_lex_state=111; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error$0(cst_Expected_but_found$15,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$52,v,lexbuf)}}} + return caml_call4(Stdlib_Buffer[19],buf,lexbuf[2],lexbuf[5],len)} function read_json$3(counter,v,lexbuf) - {var _gA_=0; + {var _iB_=0; if(counter < 50) {var counter$0=counter + 1 | 0; - return ocaml_lex_read_json_rec$0(counter$0,v,lexbuf,_gA_)} + return ocaml_lex_read_json_rec$0(counter$0,v,lexbuf,_iB_)} return caml_trampoline_return - (ocaml_lex_read_json_rec$0,[0,v,lexbuf,_gA_])} + (ocaml_lex_read_json_rec$0,[0,v,lexbuf,_iB_])} function ocaml_lex_read_json_rec$0(counter,v,lexbuf,ocaml_lex_state) {var ocaml_lex_state$0=ocaml_lex_state; for(;;) @@ -40262,31 +38413,31 @@ var ocaml_lex_state$0=ocaml_lex_state$1; continue} switch(ocaml_lex_state$1) - {case 0:return _cP_; - case 1:return _cQ_; + {case 0:return _dk_; + case 1:return _dl_; case 2:return 870828711; case 3:return [0,365180284,Stdlib[24]]; case 4:return [0,365180284,Stdlib[22]]; case 5:return [0,365180284,Stdlib[23]]; case 6: - caml_call1(Bi_outbuf[19],v[1]); + caml_call1(Stdlib_Buffer[8],v[1]); return [0,-976970511,finish_string$3(v,lexbuf)]; case 7: try - {var _gn_=[0,3654863,extract_positive_int$0(lexbuf)];return _gn_} - catch(_gz_) - {_gz_ = caml_wrap_exception(_gz_); - if(_gz_ === Int_overflow$0) + {var _io_=[0,3654863,extract_positive_int$0(lexbuf)];return _io_} + catch(_iA_) + {_iA_ = caml_wrap_exception(_iA_); + if(_iA_ === Int_overflow$0) return [0,-752863768,caml_call1(lexeme$0,lexbuf)]; - throw _gz_} + throw _iA_} case 8: try - {var _go_=[0,3654863,extract_negative_int$0(lexbuf)];return _go_} - catch(_gy_) - {_gy_ = caml_wrap_exception(_gy_); - if(_gy_ === Int_overflow$0) + {var _ip_=[0,3654863,extract_negative_int$0(lexbuf)];return _ip_} + catch(_iz_) + {_iz_ = caml_wrap_exception(_iz_); + if(_iz_ === Int_overflow$0) return [0,-752863768,caml_call1(lexeme$0,lexbuf)]; - throw _gy_} + throw _iz_} case 9: return [0, 365180284, @@ -40300,8 +38451,8 @@ read_space$0(v,lexbuf); read_colon$0(v,lexbuf); read_space$0(v,lexbuf); - var _gp_=acc[1]; - acc[1] = [0,[0,field_name,read_json$0(v,lexbuf)],_gp_]; + var _iq_=acc[1]; + acc[1] = [0,[0,field_name,read_json$0(v,lexbuf)],_iq_]; for(;;) {read_space$0(v,lexbuf); read_object_sep$0(v,lexbuf); @@ -40310,52 +38461,52 @@ read_space$0(v,lexbuf); read_colon$0(v,lexbuf); read_space$0(v,lexbuf); - var _gq_=acc[1]; - acc[1] = [0,[0,field_name$0,read_json$0(v,lexbuf)],_gq_]; + var _ir_=acc[1]; + acc[1] = [0,[0,field_name$0,read_json$0(v,lexbuf)],_ir_]; continue}} - catch(_gx_) - {_gx_ = caml_wrap_exception(_gx_); - if(_gx_ === End_of_object) + catch(_iy_) + {_iy_ = caml_wrap_exception(_iy_); + if(_iy_ === End_of_object) return [0,963043957,caml_call1(Stdlib_List[9],acc[1])]; - throw _gx_} + throw _iy_} case 11: var acc$0=[0,0]; try {read_space$0(v,lexbuf); read_array_end$0(lexbuf); - var _gr_=acc$0[1]; - acc$0[1] = [0,read_json$0(v,lexbuf),_gr_]; + var _is_=acc$0[1]; + acc$0[1] = [0,read_json$0(v,lexbuf),_is_]; for(;;) {read_space$0(v,lexbuf); read_array_sep$0(v,lexbuf); read_space$0(v,lexbuf); - var _gs_=acc$0[1]; - acc$0[1] = [0,read_json$0(v,lexbuf),_gs_]; + var _it_=acc$0[1]; + acc$0[1] = [0,read_json$0(v,lexbuf),_it_]; continue}} - catch(_gw_) - {_gw_ = caml_wrap_exception(_gw_); - if(_gw_ === End_of_array) + catch(_ix_) + {_ix_ = caml_wrap_exception(_ix_); + if(_ix_ === End_of_array) return [0,848054398,caml_call1(Stdlib_List[9],acc$0[1])]; - throw _gw_} + throw _ix_} case 12: var acc$1=[0,0]; try {read_space$0(v,lexbuf); read_tuple_end$0(lexbuf); - var _gt_=acc$1[1]; - acc$1[1] = [0,read_json$0(v,lexbuf),_gt_]; + var _iu_=acc$1[1]; + acc$1[1] = [0,read_json$0(v,lexbuf),_iu_]; for(;;) {read_space$0(v,lexbuf); read_tuple_sep$0(v,lexbuf); read_space$0(v,lexbuf); - var _gu_=acc$1[1]; - acc$1[1] = [0,read_json$0(v,lexbuf),_gu_]; + var _iv_=acc$1[1]; + acc$1[1] = [0,read_json$0(v,lexbuf),_iv_]; continue}} - catch(_gv_) - {_gv_ = caml_wrap_exception(_gv_); - if(_gv_ === End_of_tuple) + catch(_iw_) + {_iw_ = caml_wrap_exception(_iw_); + if(_iw_ === End_of_tuple) return [0,726928360,caml_call1(Stdlib_List[9],acc$1[1])]; - throw _gv_} + throw _iw_} case 13: read_space$0(v,lexbuf); var cons=read_ident$0(v,lexbuf); @@ -40386,28 +38537,26 @@ case 18: return custom_error$0(cst_Unexpected_end_of_input$44,v,lexbuf); default:return long_error$0(cst_Invalid_token$9,v,lexbuf)}}} - function finish_variant$0(v,lexbuf) - {var ocaml_lex_state=102; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0: - var x=read_json$0(v,lexbuf); - read_space$0(v,lexbuf); - read_gt$0(v,lexbuf); - return [0,x]; - case 1:return 0; - case 2:return long_error$0(cst_Expected_or_but_found$13,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$50,v,lexbuf)}}} function read_json$0(v,lexbuf) {return caml_trampoline(read_json$3(0,v,lexbuf))} + function finish_string$3(v,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=58; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return caml_call1(Stdlib_Buffer[2],v[1]); + case 1:finish_escaped_char$0(v,lexbuf);continue a; + case 2:add_lexeme$0(v[1],lexbuf);continue a; + default: + return custom_error$0(cst_Unexpected_end_of_input$45,v,lexbuf)}}}} function map_string$0(v,f,lexbuf) {a: for(;;) @@ -40422,12 +38571,76 @@ continue} switch(ocaml_lex_state$0) {case 0: - var b=v[1],_gm_=b[3]; - return caml_call3(f,caml_call1(Stdlib_Bytes[6],b[1]),0,_gm_); + var b=v[1],_in_=caml_call1(Stdlib_Buffer[7],b); + return caml_call3(f,caml_call1(Stdlib_Buffer[2],b),0,_in_); case 1:finish_escaped_char$0(v,lexbuf);continue a; case 2:add_lexeme$0(v[1],lexbuf);continue a; default: return custom_error$0(cst_Unexpected_end_of_input$46,v,lexbuf)}}}} + function finish_escaped_char$0(v,lexbuf) + {var ocaml_lex_state=68; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(8 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0: + var c=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5]); + return caml_call2(Stdlib_Buffer[12],v[1],c); + case 1:return caml_call2(Stdlib_Buffer[12],v[1],8); + case 2:return caml_call2(Stdlib_Buffer[12],v[1],12); + case 3:return caml_call2(Stdlib_Buffer[12],v[1],10); + case 4:return caml_call2(Stdlib_Buffer[12],v[1],13); + case 5:return caml_call2(Stdlib_Buffer[12],v[1],9); + case 6: + var + a=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 1 | 0), + b=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 2 | 0), + c$0=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 3 | 0), + d=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 4 | 0), + _ih_=hex$3(d), + _ii_=hex$3(c$0) << 4, + _ij_=hex$3(b) << 8, + x=hex$3(a) << 12 | _ij_ | _ii_ | _ih_; + if(55296 <= x && ! (56319 < x)) + {var ocaml_lex_state$1=82; + for(;;) + {var + ocaml_lex_state$2= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$1,lexbuf); + if(2 < ocaml_lex_state$2 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$1=ocaml_lex_state$2; + continue} + switch(ocaml_lex_state$2) + {case 0: + var + a$0=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 2 | 0), + b$0=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 3 | 0), + c$1=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 4 | 0), + d$0=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 5 | 0), + _ik_=hex$3(d$0), + _il_=hex$3(c$1) << 4, + _im_=hex$3(b$0) << 8, + y=hex$3(a$0) << 12 | _im_ | _il_ | _ik_; + if(56320 <= y && ! (57343 < y)) + return utf8_of_surrogate_pair(v[1],x,y); + return long_error$0 + (cst_Invalid_low_surrogate_for_$0,v,lexbuf); + case 1: + return long_error$0 + (cst_Missing_escape_sequence_re$0,v,lexbuf); + default: + return custom_error$0 + (cst_Unexpected_end_of_input$48,v,lexbuf)}}} + return utf8_of_code(v[1],x); + case 7:return long_error$0(cst_Invalid_escape_sequence$0,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$47,v,lexbuf)}}} function finish_stringlit$0(v,lexbuf) {var ocaml_lex_state=91; for(;;) @@ -40447,6 +38660,26 @@ case 1:return long_error$0(cst_Invalid_string_literal$2,v,lexbuf); default: return custom_error$0(cst_Unexpected_end_of_input$49,v,lexbuf)}}} + function finish_variant$0(v,lexbuf) + {var ocaml_lex_state=102; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0: + var x=read_json$0(v,lexbuf); + read_space$0(v,lexbuf); + read_gt$0(v,lexbuf); + return [0,x]; + case 1:return 0; + case 2:return long_error$0(cst_Expected_or_but_found$13,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$50,v,lexbuf)}}} function read_lt$0(v,lexbuf) {var ocaml_lex_state=107; for(;;) @@ -40459,9 +38692,24 @@ continue} switch(ocaml_lex_state$0) {case 0:return 0; - case 1:return long_error$0(cst_Expected_but_found$14,v,lexbuf); + case 1:return long_error$0(cst_Expected_but_found$14,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$51,v,lexbuf)}}} + function read_gt$0(v,lexbuf) + {var ocaml_lex_state=111; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error$0(cst_Expected_but_found$15,v,lexbuf); default: - return custom_error$0(cst_Unexpected_end_of_input$51,v,lexbuf)}}} + return custom_error$0(cst_Unexpected_end_of_input$52,v,lexbuf)}}} function read_comma$0(v,lexbuf) {var ocaml_lex_state=115; for(;;) @@ -40489,11 +38737,28 @@ continue} switch(ocaml_lex_state$0) {case 0:return -154522342; - case 1:caml_call1(Bi_outbuf[19],v[1]);return -589953938; + case 1:caml_call1(Stdlib_Buffer[8],v[1]);return -589953938; case 2:return -124528282; case 3:return long_error$0(cst_Expected_or_but_found$14,v,lexbuf); default: return custom_error$0(cst_Unexpected_end_of_input$54,v,lexbuf)}}} + function finish_comment$0(v,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=125; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error$0(cst_Unterminated_comment$1,v,lexbuf); + case 2:newline$0(v,lexbuf);continue a; + default:continue a}}}} function read_eof$0(lexbuf) {var ocaml_lex_state=131; for(;;) @@ -40505,6 +38770,24 @@ caml_call1(lexbuf[1],lexbuf); var ocaml_lex_state=ocaml_lex_state$0; continue}} + function read_space$0(v,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=133; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(4 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:newline$0(v,lexbuf);continue a; + case 1:finish_comment$0(v,lexbuf);continue a; + case 2:newline$0(v,lexbuf);continue a; + case 3:continue a; + default:return 0}}}} function read_null$0(v,lexbuf) {var ocaml_lex_state=140; for(;;) @@ -40563,26 +38846,26 @@ switch(ocaml_lex_state$1) {case 0: try - {var _gg_=extract_positive_int$0(lexbuf);return _gg_} - catch(_gl_) - {_gl_ = caml_wrap_exception(_gl_); - if(_gl_ === Int_overflow$0) + {var _ib_=extract_positive_int$0(lexbuf);return _ib_} + catch(_ig_) + {_ig_ = caml_wrap_exception(_ig_); + if(_ig_ === Int_overflow$0) return lexer_error$0(cst_Int_overflow$3,v,lexbuf); - throw _gl_} + throw _ig_} case 1: try - {var _gh_=extract_negative_int$0(lexbuf);return _gh_} - catch(_gk_) - {_gk_ = caml_wrap_exception(_gk_); - if(_gk_ === Int_overflow$0) + {var _ic_=extract_negative_int$0(lexbuf);return _ic_} + catch(_if_) + {_if_ = caml_wrap_exception(_if_); + if(_if_ === Int_overflow$0) return lexer_error$0(cst_Int_overflow$4,v,lexbuf); - throw _gk_} + throw _if_} case 2: - caml_call1(Bi_outbuf[19],v[1]); + caml_call1(Stdlib_Buffer[8],v[1]); var s=finish_string$3(v,lexbuf); try - {var _gi_=caml_int_of_string(s);return _gi_} - catch(_gj_) + {var _id_=caml_int_of_string(s);return _id_} + catch(_ie_) {return custom_error$0(cst_Expected_an_integer_but_fo$0,v,lexbuf)} case 3: return long_error$0(cst_Expected_integer_but_found$0,v,lexbuf); @@ -40603,15 +38886,15 @@ switch(ocaml_lex_state$1) {case 0: try - {var _gc_=caml_int_of_string(caml_call1(lexeme$0,lexbuf)); - return _gc_} - catch(_gf_){return lexer_error$0(cst_Int32_overflow$1,v,lexbuf)} + {var _h9_=caml_int_of_string(caml_call1(lexeme$0,lexbuf)); + return _h9_} + catch(_ia_){return lexer_error$0(cst_Int32_overflow$1,v,lexbuf)} case 1: - caml_call1(Bi_outbuf[19],v[1]); + caml_call1(Stdlib_Buffer[8],v[1]); var s=finish_string$3(v,lexbuf); try - {var _gd_=caml_int_of_string(s);return _gd_} - catch(_ge_) + {var _h__=caml_int_of_string(s);return _h__} + catch(_h$_) {return custom_error$0(cst_Expected_an_int32_but_foun$0,v,lexbuf)} case 2:return long_error$0(cst_Expected_int32_but_found$0,v,lexbuf); default: @@ -40631,15 +38914,15 @@ switch(ocaml_lex_state$1) {case 0: try - {var _f__=caml_int64_of_string(caml_call1(lexeme$0,lexbuf)); - return _f__} - catch(_gb_){return lexer_error$0(cst_Int32_overflow$2,v,lexbuf)} + {var _h5_=caml_int64_of_string(caml_call1(lexeme$0,lexbuf)); + return _h5_} + catch(_h8_){return lexer_error$0(cst_Int32_overflow$2,v,lexbuf)} case 1: - caml_call1(Bi_outbuf[19],v[1]); + caml_call1(Stdlib_Buffer[8],v[1]); var s=finish_string$3(v,lexbuf); try - {var _f$_=caml_int64_of_string(s);return _f$_} - catch(_ga_) + {var _h6_=caml_int64_of_string(s);return _h6_} + catch(_h7_) {return custom_error$0(cst_Expected_an_int64_but_foun$0,v,lexbuf)} case 2:return long_error$0(cst_Expected_int64_but_found$0,v,lexbuf); default: @@ -40662,14 +38945,14 @@ case 2:return Stdlib[23]; case 3:return caml_float_of_string(caml_call1(lexeme$0,lexbuf)); case 4: - caml_call1(Bi_outbuf[19],v[1]); + caml_call1(Stdlib_Buffer[8],v[1]); var s=finish_string$3(v,lexbuf); try - {var _f8_=caml_float_of_string(s);return _f8_} - catch(_f9_) - {return caml_string_notequal(s,cst_Infinity$19) - ?caml_string_notequal(s,cst_Infinity$20) - ?caml_string_notequal(s,cst_NaN$9) + {var _h3_=caml_float_of_string(s);return _h3_} + catch(_h4_) + {return caml_string_notequal(s,cst_Infinity$13) + ?caml_string_notequal(s,cst_Infinity$14) + ?caml_string_notequal(s,cst_NaN$6) ?custom_error$0(cst_Expected_a_number_but_foun$0,v,lexbuf) :Stdlib[24] :Stdlib[22] @@ -40692,10 +38975,29 @@ continue} switch(ocaml_lex_state$0) {case 0: - caml_call1(Bi_outbuf[19],v[1]);return finish_string$3(v,lexbuf); + caml_call1(Stdlib_Buffer[8],v[1]);return finish_string$3(v,lexbuf); case 1:return long_error$0(cst_Expected_but_found$17,v,lexbuf); default: return custom_error$0(cst_Unexpected_end_of_input$61,v,lexbuf)}}} + function read_ident$0(v,lexbuf) + {var ocaml_lex_state=237; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0: + caml_call1(Stdlib_Buffer[8],v[1]);return finish_string$3(v,lexbuf); + case 1: + var s=caml_call3(sub_lexeme$0,lexbuf,lexbuf[5],lexbuf[6]);return s; + case 2: + return long_error$0(cst_Expected_string_or_identif$3,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$62,v,lexbuf)}}} function map_ident$0(v,f,lexbuf) {var ocaml_lex_state=242; for(;;) @@ -40708,10 +39010,14 @@ continue} switch(ocaml_lex_state$0) {case 0: - caml_call1(Bi_outbuf[19],v[1]);return map_string$0(v,f,lexbuf); + caml_call1(Stdlib_Buffer[8],v[1]);return map_string$0(v,f,lexbuf); case 1: - var len=lexbuf[6] - lexbuf[5] | 0,_f7_=lexbuf[5]; - return caml_call3(f,caml_call1(Stdlib_Bytes[6],lexbuf[2]),_f7_,len); + var len=lexbuf[6] - lexbuf[5] | 0; + return caml_call3 + (f, + caml_call3(Stdlib_Bytes[8],lexbuf[2],lexbuf[5],len), + 0, + len); case 2: return long_error$0(cst_Expected_string_or_identif$4,v,lexbuf); default: @@ -40740,10 +39046,10 @@ read_space$0(v,lexbuf); acc[1] = caml_call3(read_cell,acc[1],v,lexbuf); continue}} - catch(_f6_) - {_f6_ = caml_wrap_exception(_f6_); - if(_f6_ === End_of_array)return acc[1]; - throw _f6_} + catch(_h2_) + {_h2_ = caml_wrap_exception(_h2_); + if(_h2_ === End_of_array)return acc[1]; + throw _h2_} case 1:return long_error$0(cst_Expected_but_found$18,v,lexbuf); default: return custom_error$0(cst_Unexpected_end_of_input$64,v,lexbuf)}}} @@ -40765,24 +39071,51 @@ try {read_space$0(v,lexbuf); read_array_end$0(lexbuf); - var _f3_=acc[1]; - acc[1] = [0,caml_call2(read_cell,v,lexbuf),_f3_]; + var _hZ_=acc[1]; + acc[1] = [0,caml_call2(read_cell,v,lexbuf),_hZ_]; for(;;) {read_space$0(v,lexbuf); read_array_sep$0(v,lexbuf); read_space$0(v,lexbuf); - var _f4_=acc[1]; - acc[1] = [0,caml_call2(read_cell,v,lexbuf),_f4_]; + var _h0_=acc[1]; + acc[1] = [0,caml_call2(read_cell,v,lexbuf),_h0_]; continue}} - catch(_f5_) - {_f5_ = caml_wrap_exception(_f5_); - if(_f5_ === End_of_array)return acc[1]; - throw _f5_} + catch(_h1_) + {_h1_ = caml_wrap_exception(_h1_); + if(_h1_ === End_of_array)return acc[1]; + throw _h1_} case 1:return long_error$0(cst_Expected_but_found$19,v,lexbuf); default: return custom_error$0(cst_Unexpected_end_of_input$65,v,lexbuf)}}} function read_list_rev$0(read_cell,v,lexbuf) {return ocaml_lex_read_list_rev_rec$0(read_cell,v,lexbuf,251)} + function read_array_end$0(lexbuf) + {var ocaml_lex_state=255; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0)throw End_of_array; + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function read_array_sep$0(v,lexbuf) + {var ocaml_lex_state=257; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:throw End_of_array; + case 2:return long_error$0(cst_Expected_or_but_found$15,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$66,v,lexbuf)}}} function ocaml_lex_read_tuple_rec (read_cell,init_acc,v,lexbuf,ocaml_lex_state) {var ocaml_lex_state$0=ocaml_lex_state; @@ -40809,15 +39142,26 @@ acc[1] = caml_call4(read_cell,pos[1],acc[1],v,lexbuf); pos[1]++; continue}} - catch(_f2_) - {_f2_ = caml_wrap_exception(_f2_); - if(_f2_ === End_of_tuple)return acc[1]; - throw _f2_} + catch(_hY_) + {_hY_ = caml_wrap_exception(_hY_); + if(_hY_ === End_of_tuple)return acc[1]; + throw _hY_} case 1:return long_error$0(cst_Expected_but_found$20,v,lexbuf); default: return custom_error$0(cst_Unexpected_end_of_input$67,v,lexbuf)}}} function read_tuple$0(read_cell,init_acc,v,lexbuf) {return ocaml_lex_read_tuple_rec(read_cell,init_acc,v,lexbuf,262)} + function read_tuple_end$0(lexbuf) + {var ocaml_lex_state=266; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0)throw End_of_tuple; + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} function read_tuple_end2$0(v,std,lexbuf) {var ocaml_lex_state=268; for(;;) @@ -40836,6 +39180,22 @@ if(std)throw End_of_tuple; return long_error$0(cst_Expected_or_but_found$17,v,lexbuf); default:return 0}}} + function read_tuple_sep$0(v,lexbuf) + {var ocaml_lex_state=271; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:throw End_of_tuple; + case 2:return long_error$0(cst_Expected_or_but_found$18,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$68,v,lexbuf)}}} function read_tuple_sep2$0(v,std,lexbuf) {var ocaml_lex_state=276; for(;;) @@ -40889,10 +39249,10 @@ read_space$0(v,lexbuf); acc[1] = caml_call4(read_field,acc[1],field_name$0,v,lexbuf); continue}} - catch(_f1_) - {_f1_ = caml_wrap_exception(_f1_); - if(_f1_ === End_of_object)return acc[1]; - throw _f1_} + catch(_hX_) + {_hX_ = caml_wrap_exception(_hX_); + if(_hX_ === End_of_object)return acc[1]; + throw _hX_} case 1:return long_error$0(cst_Expected_but_found$21,v,lexbuf); default: return custom_error$0(cst_Unexpected_end_of_input$70,v,lexbuf)}}} @@ -40914,6 +39274,48 @@ case 1:return long_error$0(cst_Expected_but_found$22,v,lexbuf); default: return custom_error$0(cst_Unexpected_end_of_input$71,v,lexbuf)}}} + function read_object_end$0(lexbuf) + {var ocaml_lex_state=290; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0)throw End_of_object; + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function read_object_sep$0(v,lexbuf) + {var ocaml_lex_state=292; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:throw End_of_object; + case 2:return long_error$0(cst_Expected_or_but_found$22,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$72,v,lexbuf)}}} + function read_colon$0(v,lexbuf) + {var ocaml_lex_state=297; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error$0(cst_Expected_but_found$23,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$73,v,lexbuf)}}} function start_any_tuple$0(v,lexbuf) {var ocaml_lex_state=301; for(;;) @@ -40990,45 +39392,47 @@ case 1:return long_error$0(cst_Expected_but_found$27,v,lexbuf); default: return custom_error$0(cst_Unexpected_end_of_input$78,v,lexbuf)}}} - function finish_skip_stringlit$0(v,lexbuf) - {var ocaml_lex_state=378; + function finish_skip_variant$0(v,lexbuf) + {var ocaml_lex_state=389; for(;;) {var ocaml_lex_state$0= caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) + if(3 < ocaml_lex_state$0 >>> 0) {caml_call1(lexbuf[1],lexbuf); var ocaml_lex_state=ocaml_lex_state$0; continue} switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error$0(cst_Invalid_string_literal$3,v,lexbuf); + {case 0: + skip_json$0(v,lexbuf); + read_space$0(v,lexbuf); + return read_gt$0(v,lexbuf); + case 1:return 0; + case 2:return long_error$0(cst_Expected_or_but_found$24,v,lexbuf); default: - return custom_error$0(cst_Unexpected_end_of_input$80,v,lexbuf)}}} - function skip_ident$0(v,lexbuf) - {var ocaml_lex_state=394; + return custom_error$0(cst_Unexpected_end_of_input$81,v,lexbuf)}}} + function finish_skip_stringlit$0(v,lexbuf) + {var ocaml_lex_state=378; for(;;) {var ocaml_lex_state$0= caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) + if(2 < ocaml_lex_state$0 >>> 0) {caml_call1(lexbuf[1],lexbuf); var ocaml_lex_state=ocaml_lex_state$0; continue} switch(ocaml_lex_state$0) - {case 0:return finish_skip_stringlit$0(v,lexbuf); - case 1:return 0; - case 2: - return long_error$0(cst_Expected_string_or_identif$5,v,lexbuf); + {case 0:return 0; + case 1:return long_error$0(cst_Invalid_string_literal$3,v,lexbuf); default: - return custom_error$0(cst_Unexpected_end_of_input$82,v,lexbuf)}}} + return custom_error$0(cst_Unexpected_end_of_input$80,v,lexbuf)}}} function skip_json$3(counter,v,lexbuf) - {var _f0_=322; + {var _hW_=322; if(counter < 50) {var counter$0=counter + 1 | 0; - return ocaml_lex_skip_json_rec$0(counter$0,v,lexbuf,_f0_)} + return ocaml_lex_skip_json_rec$0(counter$0,v,lexbuf,_hW_)} return caml_trampoline_return - (ocaml_lex_skip_json_rec$0,[0,v,lexbuf,_f0_])} + (ocaml_lex_skip_json_rec$0,[0,v,lexbuf,_hW_])} function ocaml_lex_skip_json_rec$0(counter,v,lexbuf,ocaml_lex_state) {var ocaml_lex_state$0=ocaml_lex_state; for(;;) @@ -41068,10 +39472,10 @@ read_space$0(v,lexbuf); skip_json$0(v,lexbuf); continue}} - catch(_fZ_) - {_fZ_ = caml_wrap_exception(_fZ_); - if(_fZ_ === End_of_object)return 0; - throw _fZ_} + catch(_hV_) + {_hV_ = caml_wrap_exception(_hV_); + if(_hV_ === End_of_object)return 0; + throw _hV_} case 10: try {read_space$0(v,lexbuf); @@ -41083,10 +39487,10 @@ read_space$0(v,lexbuf); skip_json$0(v,lexbuf); continue}} - catch(_fY_) - {_fY_ = caml_wrap_exception(_fY_); - if(_fY_ === End_of_array)return 0; - throw _fY_} + catch(_hU_) + {_hU_ = caml_wrap_exception(_hU_); + if(_hU_ === End_of_array)return 0; + throw _hU_} case 11: try {read_space$0(v,lexbuf); @@ -41098,10 +39502,10 @@ read_space$0(v,lexbuf); skip_json$0(v,lexbuf); continue}} - catch(_fX_) - {_fX_ = caml_wrap_exception(_fX_); - if(_fX_ === End_of_tuple)return 0; - throw _fX_} + catch(_hT_) + {_hT_ = caml_wrap_exception(_hT_); + if(_hT_ === End_of_tuple)return 0; + throw _hT_} case 12: read_space$0(v,lexbuf); skip_ident$0(v,lexbuf); @@ -41134,8 +39538,8 @@ default:return long_error$0(cst_Invalid_token$10,v,lexbuf)}}} function skip_json$0(v,lexbuf) {return caml_trampoline(skip_json$3(0,v,lexbuf))} - function finish_skip_variant$0(v,lexbuf) - {var ocaml_lex_state=389; + function skip_ident$0(v,lexbuf) + {var ocaml_lex_state=394; for(;;) {var ocaml_lex_state$0= @@ -41145,105 +39549,14 @@ var ocaml_lex_state=ocaml_lex_state$0; continue} switch(ocaml_lex_state$0) - {case 0: - skip_json$0(v,lexbuf); - read_space$0(v,lexbuf); - return read_gt$0(v,lexbuf); + {case 0:return finish_skip_stringlit$0(v,lexbuf); case 1:return 0; - case 2:return long_error$0(cst_Expected_or_but_found$24,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$81,v,lexbuf)}}} - function finish_buffer_comment$0(v,lexbuf) - {a: - for(;;) - {var ocaml_lex_state=507; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return caml_call2(Bi_outbuf[13],v[1],cst$30); - case 1:return long_error$0(cst_Unterminated_comment$2,v,lexbuf); - case 2: - caml_call2(Bi_outbuf[15],v[1],10);newline$0(v,lexbuf);continue a; - default:add_lexeme$0(v[1],lexbuf);continue a}}}} - function buffer_colon$0(v,lexbuf) - {var ocaml_lex_state=499; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return caml_call2(Bi_outbuf[15],v[1],58); - case 1:return long_error$0(cst_Expected_but_found$28,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$90,v,lexbuf)}}} - function buffer_tuple_sep(v,lexbuf) - {var ocaml_lex_state=494; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return caml_call2(Bi_outbuf[15],v[1],44); - case 1:caml_call2(Bi_outbuf[15],v[1],41);throw End_of_tuple; - case 2:return long_error$0(cst_Expected_or_but_found$28,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$89,v,lexbuf)}}} - function buffer_tuple_end(v,lexbuf) - {var ocaml_lex_state=492; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0) - {caml_call2(Bi_outbuf[15],v[1],41);throw End_of_tuple} - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function buffer_array_sep$0(v,lexbuf) - {var ocaml_lex_state=487; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return caml_call2(Bi_outbuf[15],v[1],44); - case 1:caml_call2(Bi_outbuf[15],v[1],93);throw End_of_array; - case 2:return long_error$0(cst_Expected_or_but_found$27,v,lexbuf); + case 2: + return long_error$0(cst_Expected_string_or_identif$5,v,lexbuf); default: - return custom_error$0(cst_Unexpected_end_of_input$88,v,lexbuf)}}} - function buffer_array_end$0(v,lexbuf) - {var ocaml_lex_state=485; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0) - {caml_call2(Bi_outbuf[15],v[1],93);throw End_of_array} - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function buffer_object_sep$0(v,lexbuf) - {var ocaml_lex_state=480; + return custom_error$0(cst_Unexpected_end_of_input$82,v,lexbuf)}}} + function finish_buffer_variant(v,lexbuf) + {var ocaml_lex_state=461; for(;;) {var ocaml_lex_state$0= @@ -41253,45 +39566,28 @@ var ocaml_lex_state=ocaml_lex_state$0; continue} switch(ocaml_lex_state$0) - {case 0:return caml_call2(Bi_outbuf[15],v[1],44); - case 1:caml_call2(Bi_outbuf[15],v[1],125);throw End_of_object; - case 2:return long_error$0(cst_Expected_or_but_found$26,v,lexbuf); + {case 0: + caml_call2(Stdlib_Buffer[12],v[1],58); + buffer_json$0(v,lexbuf); + buffer_space$0(v,lexbuf); + var ocaml_lex_state$1=503; + for(;;) + {var + ocaml_lex_state$2= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$1,lexbuf); + if(2 < ocaml_lex_state$2 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$1=ocaml_lex_state$2; + continue} + switch(ocaml_lex_state$2) + {case 0:return caml_call2(Stdlib_Buffer[12],v[1],62); + case 1:return long_error$0(cst_Expected_but_found$29,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$91,v,lexbuf)}} + case 1:return caml_call2(Stdlib_Buffer[12],v[1],62); + case 2:return long_error$0(cst_Expected_or_but_found$25,v,lexbuf); default: - return custom_error$0(cst_Unexpected_end_of_input$87,v,lexbuf)}}} - function buffer_object_end$0(v,lexbuf) - {var ocaml_lex_state=478; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0) - {caml_call2(Bi_outbuf[15],v[1],125);throw End_of_object} - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function buffer_space$0(v,lexbuf) - {a: - for(;;) - {var ocaml_lex_state=471; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(4 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:add_lexeme$0(v[1],lexbuf);newline$0(v,lexbuf);continue a; - case 1: - caml_call2(Bi_outbuf[13],v[1],cst$29); - finish_buffer_comment$0(v,lexbuf); - continue a; - case 2: - caml_call2(Bi_outbuf[15],v[1],10);newline$0(v,lexbuf);continue a; - case 3:add_lexeme$0(v[1],lexbuf);continue a; - default:return 0}}}} + return custom_error$0(cst_Unexpected_end_of_input$85,v,lexbuf)}}} function finish_buffer_stringlit$0(v,lexbuf) {var ocaml_lex_state=450; for(;;) @@ -41304,34 +39600,18 @@ continue} switch(ocaml_lex_state$0) {case 0: - caml_call2(Bi_outbuf[15],v[1],34);return add_lexeme$0(v[1],lexbuf); + caml_call2(Stdlib_Buffer[12],v[1],34); + return add_lexeme$0(v[1],lexbuf); case 1:return long_error$0(cst_Invalid_string_literal$4,v,lexbuf); default: return custom_error$0(cst_Unexpected_end_of_input$84,v,lexbuf)}}} - function buffer_ident$0(v,lexbuf) - {var ocaml_lex_state=466; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return finish_buffer_stringlit$0(v,lexbuf); - case 1:return add_lexeme$0(v[1],lexbuf); - case 2: - return long_error$0(cst_Expected_string_or_identif$6,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$86,v,lexbuf)}}} function buffer_json$3(counter,v,lexbuf) - {var _fW_=399; + {var _hS_=399; if(counter < 50) {var counter$0=counter + 1 | 0; - return ocaml_lex_buffer_json_rec$0(counter$0,v,lexbuf,_fW_)} + return ocaml_lex_buffer_json_rec$0(counter$0,v,lexbuf,_hS_)} return caml_trampoline_return - (ocaml_lex_buffer_json_rec$0,[0,v,lexbuf,_fW_])} + (ocaml_lex_buffer_json_rec$0,[0,v,lexbuf,_hS_])} function ocaml_lex_buffer_json_rec$0(counter,v,lexbuf,ocaml_lex_state) {var ocaml_lex_state$0=ocaml_lex_state; for(;;) @@ -41347,7 +39627,7 @@ case 1:return finish_buffer_stringlit$0(v,lexbuf); case 2: try - {caml_call2(Bi_outbuf[15],v[1],123); + {caml_call2(Stdlib_Buffer[12],v[1],123); buffer_space$0(v,lexbuf); buffer_object_end$0(v,lexbuf); buffer_ident$0(v,lexbuf); @@ -41365,13 +39645,13 @@ buffer_space$0(v,lexbuf); buffer_json$0(v,lexbuf); continue}} - catch(_fV_) - {_fV_ = caml_wrap_exception(_fV_); - if(_fV_ === End_of_object)return 0; - throw _fV_} + catch(_hR_) + {_hR_ = caml_wrap_exception(_hR_); + if(_hR_ === End_of_object)return 0; + throw _hR_} case 3: try - {caml_call2(Bi_outbuf[15],v[1],91); + {caml_call2(Stdlib_Buffer[12],v[1],91); buffer_space$0(v,lexbuf); buffer_array_end$0(v,lexbuf); buffer_json$0(v,lexbuf); @@ -41381,13 +39661,13 @@ buffer_space$0(v,lexbuf); buffer_json$0(v,lexbuf); continue}} - catch(_fU_) - {_fU_ = caml_wrap_exception(_fU_); - if(_fU_ === End_of_array)return 0; - throw _fU_} + catch(_hQ_) + {_hQ_ = caml_wrap_exception(_hQ_); + if(_hQ_ === End_of_array)return 0; + throw _hQ_} case 4: try - {caml_call2(Bi_outbuf[15],v[1],40); + {caml_call2(Stdlib_Buffer[12],v[1],40); buffer_space$0(v,lexbuf); buffer_tuple_end(v,lexbuf); buffer_json$0(v,lexbuf); @@ -41397,12 +39677,12 @@ buffer_space$0(v,lexbuf); buffer_json$0(v,lexbuf); continue}} - catch(_fT_) - {_fT_ = caml_wrap_exception(_fT_); - if(_fT_ === End_of_tuple)return 0; - throw _fT_} + catch(_hP_) + {_hP_ = caml_wrap_exception(_hP_); + if(_hP_ === End_of_tuple)return 0; + throw _hP_} case 5: - caml_call2(Bi_outbuf[15],v[1],60); + caml_call2(Stdlib_Buffer[12],v[1],60); buffer_space$0(v,lexbuf); buffer_ident$0(v,lexbuf); buffer_space$0(v,lexbuf); @@ -41414,14 +39694,14 @@ return buffer_json$3(counter$0,v,lexbuf)} return caml_trampoline_return(buffer_json$3,[0,v,lexbuf]); case 7: - caml_call2(Bi_outbuf[13],v[1],cst$28); + caml_call2(Stdlib_Buffer[16],v[1],cst$56); finish_buffer_comment$0(v,lexbuf); if(counter < 50) {var counter$1=counter + 1 | 0; return buffer_json$3(counter$1,v,lexbuf)} return caml_trampoline_return(buffer_json$3,[0,v,lexbuf]); case 8: - caml_call2(Bi_outbuf[15],v[1],10); + caml_call2(Stdlib_Buffer[12],v[1],10); newline$0(v,lexbuf); if(counter < 50) {var counter$2=counter + 1 | 0; @@ -41438,8 +39718,8 @@ default:return long_error$0(cst_Invalid_token$11,v,lexbuf)}}} function buffer_json$0(v,lexbuf) {return caml_trampoline(buffer_json$3(0,v,lexbuf))} - function finish_buffer_variant(v,lexbuf) - {var ocaml_lex_state=461; + function buffer_ident$0(v,lexbuf) + {var ocaml_lex_state=466; for(;;) {var ocaml_lex_state$0= @@ -41449,28 +39729,155 @@ var ocaml_lex_state=ocaml_lex_state$0; continue} switch(ocaml_lex_state$0) - {case 0: - caml_call2(Bi_outbuf[15],v[1],58); - buffer_json$0(v,lexbuf); - buffer_space$0(v,lexbuf); - var ocaml_lex_state$1=503; - for(;;) - {var - ocaml_lex_state$2= - caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$1,lexbuf); - if(2 < ocaml_lex_state$2 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$1=ocaml_lex_state$2; - continue} - switch(ocaml_lex_state$2) - {case 0:return caml_call2(Bi_outbuf[15],v[1],62); - case 1:return long_error$0(cst_Expected_but_found$29,v,lexbuf); - default: - return custom_error$0(cst_Unexpected_end_of_input$91,v,lexbuf)}} - case 1:return caml_call2(Bi_outbuf[15],v[1],62); - case 2:return long_error$0(cst_Expected_or_but_found$25,v,lexbuf); + {case 0:return finish_buffer_stringlit$0(v,lexbuf); + case 1:return add_lexeme$0(v[1],lexbuf); + case 2: + return long_error$0(cst_Expected_string_or_identif$6,v,lexbuf); default: - return custom_error$0(cst_Unexpected_end_of_input$85,v,lexbuf)}}} + return custom_error$0(cst_Unexpected_end_of_input$86,v,lexbuf)}}} + function buffer_space$0(v,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=471; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(4 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:add_lexeme$0(v[1],lexbuf);newline$0(v,lexbuf);continue a; + case 1: + caml_call2(Stdlib_Buffer[16],v[1],cst$57); + finish_buffer_comment$0(v,lexbuf); + continue a; + case 2: + caml_call2(Stdlib_Buffer[12],v[1],10); + newline$0(v,lexbuf); + continue a; + case 3:add_lexeme$0(v[1],lexbuf);continue a; + default:return 0}}}} + function buffer_object_end$0(v,lexbuf) + {var ocaml_lex_state=478; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0) + {caml_call2(Stdlib_Buffer[12],v[1],125);throw End_of_object} + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function buffer_object_sep$0(v,lexbuf) + {var ocaml_lex_state=480; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Stdlib_Buffer[12],v[1],44); + case 1:caml_call2(Stdlib_Buffer[12],v[1],125);throw End_of_object; + case 2:return long_error$0(cst_Expected_or_but_found$26,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$87,v,lexbuf)}}} + function buffer_array_end$0(v,lexbuf) + {var ocaml_lex_state=485; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0) + {caml_call2(Stdlib_Buffer[12],v[1],93);throw End_of_array} + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function buffer_array_sep$0(v,lexbuf) + {var ocaml_lex_state=487; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Stdlib_Buffer[12],v[1],44); + case 1:caml_call2(Stdlib_Buffer[12],v[1],93);throw End_of_array; + case 2:return long_error$0(cst_Expected_or_but_found$27,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$88,v,lexbuf)}}} + function buffer_tuple_end(v,lexbuf) + {var ocaml_lex_state=492; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0) + {caml_call2(Stdlib_Buffer[12],v[1],41);throw End_of_tuple} + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function buffer_tuple_sep(v,lexbuf) + {var ocaml_lex_state=494; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Stdlib_Buffer[12],v[1],44); + case 1:caml_call2(Stdlib_Buffer[12],v[1],41);throw End_of_tuple; + case 2:return long_error$0(cst_Expected_or_but_found$28,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$89,v,lexbuf)}}} + function buffer_colon$0(v,lexbuf) + {var ocaml_lex_state=499; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Stdlib_Buffer[12],v[1],58); + case 1:return long_error$0(cst_Expected_but_found$28,v,lexbuf); + default: + return custom_error$0(cst_Unexpected_end_of_input$90,v,lexbuf)}}} + function finish_buffer_comment$0(v,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=507; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Stdlib_Buffer[16],v[1],cst$58); + case 1:return long_error$0(cst_Unterminated_comment$2,v,lexbuf); + case 2: + caml_call2(Stdlib_Buffer[12],v[1],10); + newline$0(v,lexbuf); + continue a; + default:add_lexeme$0(v[1],lexbuf);continue a}}}} function junk$0(lexbuf) {var ocaml_lex_state=513; for(;;) @@ -41487,8 +39894,8 @@ if(0 <= n && ! (255 < n))return caml_call1(Stdlib[29],n); return lexer_error$0(cst_Int8_overflow$0,v,lexbuf)} function read_list$0(read_cell,v,lexbuf) - {var _fS_=read_list_rev$0(read_cell,v,lexbuf); - return caml_call1(Stdlib_List[9],_fS_)} + {var _hO_=read_list_rev$0(read_cell,v,lexbuf); + return caml_call1(Stdlib_List[9],_hO_)} function read_array$0(read_cell,v,lexbuf) {var l=read_list_rev$0(read_cell,v,lexbuf); if(l) @@ -41498,21 +39905,21 @@ len=caml_call1(Stdlib_List[1],l), a=caml_make_vect(len,x), r=[0,tl], - _fP_=len - 2 | 0; - if(! (_fP_ < 0)) - {var i=_fP_; + _hL_=len - 2 | 0; + if(! (_hL_ < 0)) + {var i=_hL_; for(;;) - {var _fQ_=caml_call1(Stdlib_List[5],r[1]); - caml_check_bound(a,i)[1 + i] = _fQ_; + {var _hM_=caml_call1(Stdlib_List[5],r[1]); + caml_check_bound(a,i)[1 + i] = _hM_; r[1] = caml_call1(Stdlib_List[6],r[1]); - var _fR_=i - 1 | 0; - if(0 !== i){var i=_fR_;continue} + var _hN_=i - 1 | 0; + if(0 !== i){var i=_hN_;continue} break}} return a} return [0]} function read_fields$0(read_field,init_acc,v) - {return function(_fO_) - {return read_abstract_fields$0(read_ident$0,read_field,init_acc,v,_fO_)}} + {return function(_hK_) + {return read_abstract_fields$0(read_ident$0,read_field,init_acc,v,_hK_)}} function from_lexbuf$0(v,opt,lexbuf) {if(opt)var sth=opt[1],stream=sth;else var stream=0; read_space$0(v,lexbuf); @@ -41528,23 +39935,23 @@ {var lexbuf=caml_call2(from_string$1,0,s), v=init_lexer(buf,fname,lnum,0), - _fM_=from_lexbuf$0(v,0,lexbuf); - return _fM_} - catch(_fN_) - {_fN_ = caml_wrap_exception(_fN_); - if(_fN_ === End_of_input)return json_error(cst_Blank_input_data$1); - throw _fN_}} + _hI_=from_lexbuf$0(v,0,lexbuf); + return _hI_} + catch(_hJ_) + {_hJ_ = caml_wrap_exception(_hJ_); + if(_hJ_ === End_of_input)return json_error(cst_Blank_input_data$1); + throw _hJ_}} function from_channel$2(buf,fname,lnum,ic) {try {var lexbuf=caml_call2(from_channel$1,0,ic), v=init_lexer(buf,fname,lnum,0), - _fK_=from_lexbuf$0(v,0,lexbuf); - return _fK_} - catch(_fL_) - {_fL_ = caml_wrap_exception(_fL_); - if(_fL_ === End_of_input)return json_error(cst_Blank_input_data$2); - throw _fL_}} + _hG_=from_lexbuf$0(v,0,lexbuf); + return _hG_} + catch(_hH_) + {_hH_ = caml_wrap_exception(_hH_); + if(_hH_ === End_of_input)return json_error(cst_Blank_input_data$2); + throw _hH_}} function from_file$0(buf,fname,lnum,file) {var ic=caml_call1(Stdlib[79],file); try @@ -41553,11 +39960,11 @@ return x} catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[94],ic);throw e}} var Finally$0=[248,cst_Yojson_Safe_Finally,caml_fresh_oo_id(0)]; - function stream_from_lexbuf$0(v,opt,lexbuf) + function seq_from_lexbuf$0(v,opt,lexbuf) {if(opt)var sth=opt[1],fin=sth;else var fin=function(param){return 0}; - function f(i) + function f(param) {try - {var _fJ_=[0,from_lexbuf$0(v,stream$0,lexbuf)];return _fJ_} + {var _hF_=[0,from_lexbuf$0(v,stream$0,lexbuf),f];return _hF_} catch(e) {e = caml_wrap_exception(e); if(e === End_of_input){caml_call1(fin,0);return 0} @@ -41566,80 +39973,82 @@ catch(fin_e) {fin_e = caml_wrap_exception(fin_e);throw [0,Finally$0,e,fin_e]} throw e}} - return caml_call1(Stdlib_Stream[3],f)} - function stream_from_string$0(buf,fname,lnum,s) + return f} + function seq_from_string$0(buf,fname,lnum,s) {var v=init_lexer(buf,fname,lnum,0); - return stream_from_lexbuf$0(v,0,caml_call2(from_string$1,0,s))} - function stream_from_channel$0(buf,fin,fname,lnum,ic) + return seq_from_lexbuf$0(v,0,caml_call2(from_string$1,0,s))} + function seq_from_channel$0(buf,fin,fname,lnum,ic) {var lexbuf=caml_call2(from_channel$1,0,ic), v=init_lexer(buf,fname,lnum,0); - return stream_from_lexbuf$0(v,fin,lexbuf)} - function stream_from_file$0(buf,fname,lnum,file) + return seq_from_lexbuf$0(v,fin,lexbuf)} + function seq_from_file$0(buf,fname,lnum,file) {var ic=caml_call1(Stdlib[79],file); function fin(param){return caml_call1(Stdlib[93],ic)} var fname$0=fname || [0,file], lexbuf=caml_call2(from_channel$1,0,ic), v=init_lexer(buf,fname$0,lnum,0); - return stream_from_lexbuf$0(v,[0,fin],lexbuf)} - function linestream_from_channel$0(buf,opt,fname,_fH_,ic) + return seq_from_lexbuf$0(v,[0,fin],lexbuf)} + function lineseq_from_channel$0(buf,opt,fname,_hx_,ic) {if(opt)var sth=opt[1],fin=sth;else var fin=function(param){return 0}; - if(_fH_)var sth$0=_fH_[1],lnum0=sth$0;else var lnum0=1; - var buf$0=buf || [0,caml_call3(Bi_outbuf[3],0,0,256)]; - function f(i) + if(_hx_)var sth$0=_hx_[1],lnum0=sth$0;else var lnum0=1; + var buf$0=buf || [0,caml_call1(Stdlib_Buffer[1],256)]; + function f(lnum,param) {try {var line=caml_call1(Stdlib[83],ic), - lnum=lnum0 + i | 0, - _fI_=[0,[0,826371656,from_string$2(buf$0,fname,[0,lnum],line)]]; - return _fI_} + _hA_=lnum + 1 | 0, + _hB_=function(_hE_){return f(_hA_,_hE_)}, + _hC_= + [0,[0,826371656,from_string$2(buf$0,fname,[0,lnum],line)],_hB_]; + return _hC_} catch(e) {e = caml_wrap_exception(e); - return e === Stdlib[12]?(caml_call1(fin,0),0):[0,[0,3458171,e]]}} - return caml_call1(Stdlib_Stream[3],f)} - function linestream_from_file$0(buf,fname,lnum,file) + if(e === Stdlib[12]){caml_call1(fin,0);return 0} + var _hz_=lnum + 1 | 0; + return [0,[0,3458171,e],function(_hD_){return f(_hz_,_hD_)}]}} + return function(_hy_){return f(lnum0,_hy_)}} + function lineseq_from_file$0(buf,fname,lnum,file) {var ic=caml_call1(Stdlib[79],file); function fin(param){return caml_call1(Stdlib[93],ic)} var fname$0=fname || [0,file]; - return linestream_from_channel$0(buf,[0,fin],fname$0,lnum,ic)} + return lineseq_from_channel$0(buf,[0,fin],fname$0,lnum,ic)} function prettify$0(std,s) {return pretty_to_string$1(std,from_string$2(0,0,0,s))} function compact$0(std,s) - {return to_string$3(0,0,0,from_string$2(0,0,0,s))} - function validate_json$0(path,value){return 0} + {return to_string$2(0,0,0,0,from_string$2(0,0,0,s))} var Type_error$0=[248,cst_Yojson_Safe_Util_Type_erro,caml_fresh_oo_id(0)]; function typerr$0(msg,js) {if(typeof js === "number") - var _fG_=cst_null$4; + var _hw_=cst_null$6; else var - _fF_=js[1], - _fG_= - 708012133 <= _fF_ - ?726928360 === _fF_ + _hv_=js[1], + _hw_= + 708012133 <= _hv_ + ?726928360 === _hv_ ?cst_tuple$0 - :848054398 <= _fF_ - ?963043957 <= _fF_?cst_object$0:cst_array$0 - :737456202 <= _fF_?cst_bool$0:cst_variant$0 - :3654863 <= _fF_ - ?365180284 <= _fF_?cst_float$0:cst_int$0 - :-752863768 <= _fF_?cst_intlit$0:cst_string$0; - throw [0,Type_error$0,caml_call2(Stdlib[28],msg,_fG_),js]} + :848054398 <= _hv_ + ?963043957 <= _hv_?cst_object$0:cst_array$0 + :737456202 <= _hv_?cst_bool$0:cst_variant$0 + :3654863 <= _hv_ + ?365180284 <= _hv_?cst_float$0:cst_int$0 + :-752863768 <= _hv_?cst_intlit$0:cst_string$0; + throw [0,Type_error$0,caml_call2(Stdlib[28],msg,_hw_),js]} var Undefined$0=[248,cst_Yojson_Safe_Util_Undefined,caml_fresh_oo_id(0)]; - function symbol$0(_fE_,_fD_){return caml_call1(_fD_,_fE_)} function assoc$0(name,obj) {try - {var _fB_=caml_call2(Stdlib_List[46],name,obj);return _fB_} - catch(_fC_) - {_fC_ = caml_wrap_exception(_fC_); - if(_fC_ === Stdlib[8])return 870828711; - throw _fC_}} + {var _ht_=caml_call2(Stdlib_List[46],name,obj);return _ht_} + catch(_hu_) + {_hu_ = caml_wrap_exception(_hu_); + if(_hu_ === Stdlib[8])return 870828711; + throw _hu_}} function member$0(name,js) {if(typeof js !== "number" && 963043957 === js[1]) {var obj=js[2];return assoc$0(name,obj)} - var _fA_=caml_call2(Stdlib[28],name,cst_of_non_object_type$0); - return typerr$0(caml_call2(Stdlib[28],cst_Can_t_get_member$0,_fA_),js)} + var _hs_=caml_call2(Stdlib[28],name,cst_of_non_object_type$0); + return typerr$0(caml_call2(Stdlib[28],cst_Can_t_get_member$0,_hs_),js)} function index$0(i,js) {if(typeof js !== "number" && 848054398 === js[1]) {var @@ -41649,13 +40058,13 @@ if(0 <= wrapped_index && ! (len <= wrapped_index)) return caml_call2(Stdlib_List[7],l,wrapped_index); var - _fy_=caml_call1(Stdlib[33],i), - _fz_=caml_call2(Stdlib[28],_fy_,cst_out_of_bounds$0); - throw [0,Undefined$0,caml_call2(Stdlib[28],cst_Index$0,_fz_),js]} + _hq_=caml_call1(Stdlib[33],i), + _hr_=caml_call2(Stdlib[28],_hq_,cst_out_of_bounds$0); + throw [0,Undefined$0,caml_call2(Stdlib[28],cst_Index$0,_hr_),js]} var - _fw_=caml_call1(Stdlib[33],i), - _fx_=caml_call2(Stdlib[28],_fw_,cst_of_non_array_type$0); - return typerr$0(caml_call2(Stdlib[28],cst_Can_t_get_index$0,_fx_),js)} + _ho_=caml_call1(Stdlib[33],i), + _hp_=caml_call2(Stdlib[28],_ho_,cst_of_non_array_type$0); + return typerr$0(caml_call2(Stdlib[28],cst_Can_t_get_index$0,_hp_),js)} function map$0(f,js) {if(typeof js !== "number" && 848054398 === js[1]) {var l=js[2];return [0,848054398,caml_call2(Stdlib_List[19],f,l)]} @@ -41676,17 +40085,17 @@ return typerr$0(cst_Expected_bool_or_null_got$0,js)} function to_number$0(js) {if(typeof js !== "number") - {var _fv_=js[1]; - if(3654863 === _fv_){var i=js[2];return i} - if(365180284 === _fv_){var f=js[2];return f}} + {var _hn_=js[1]; + if(3654863 === _hn_){var i=js[2];return i} + if(365180284 === _hn_){var f=js[2];return f}} return typerr$0(cst_Expected_number_got$0,js)} function to_number_option$0(js) {if(typeof js === "number") {if(870828711 === js)return 0} else - {var _fu_=js[1]; - if(3654863 === _fu_){var i=js[2];return [0,i]} - if(365180284 === _fu_){var f=js[2];return [0,f]}} + {var _hm_=js[1]; + if(3654863 === _hm_){var i=js[2];return [0,i]} + if(365180284 === _hm_){var f=js[2];return [0,f]}} return typerr$0(cst_Expected_number_or_null_go$0,js)} function to_float$0(js) {if(typeof js !== "number" && 365180284 === js[1]){var f=js[2];return f} @@ -41709,7 +40118,7 @@ function to_list$0(js) {if(typeof js !== "number" && 848054398 === js[1]){var l=js[2];return l} return typerr$0(cst_Expected_array_got$0,js)} - function to_string$4(js) + function to_string$3(js) {if(typeof js !== "number" && -976970511 === js[1]){var s=js[2];return s} return typerr$0(cst_Expected_string_got$0,js)} function to_string_option$0(js) @@ -41752,8 +40161,8 @@ {if(typeof param !== "number" && 848054398 === param[1]) {var l=param[2]; try - {var _fs_=[0,caml_call2(Stdlib_List[7],l,i)];return _fs_} - catch(_ft_){return 0}} + {var _hk_=[0,caml_call2(Stdlib_List[7],l,i)];return _hk_} + catch(_hl_){return 0}} return 0}, l)} function filter_list$0(l) @@ -41769,8 +40178,8 @@ {if(typeof param !== "number" && 963043957 === param[1]) {var l=param[2]; try - {var _fq_=[0,caml_call2(Stdlib_List[46],k,l)];return _fq_} - catch(_fr_){return 0}} + {var _hi_=[0,caml_call2(Stdlib_List[46],k,l)];return _hi_} + catch(_hj_){return 0}} return 0}, l)} function filter_assoc$0(l) @@ -41805,9 +40214,9 @@ {return filter_map$0 (function(param) {if(typeof param !== "number") - {var _fp_=param[1]; - if(3654863 === _fp_){var x=param[2];return [0,x]} - if(365180284 === _fp_){var x$0=param[2];return [0,x$0]}} + {var _hh_=param[1]; + if(3654863 === _hh_){var x=param[2];return [0,x]} + if(365180284 === _hh_){var x$0=param[2];return [0,x$0]}} return 0}, l)} function filter_string$0(l) @@ -41818,13 +40227,13 @@ return 0}, l)} function keys$0(o) - {function _fn_(param){var key=param[1];return key} - var _fo_=caml_call1(Stdlib_List[19],_fn_); - return symbol$0(to_assoc$0(o),_fo_)} + {var _hf_=to_assoc$0(o); + function _hg_(param){var key=param[1];return key} + return caml_call1(caml_call1(Stdlib_List[19],_hg_),_hf_)} function values$0(o) - {function _fl_(param){var value=param[2];return value} - var _fm_=caml_call1(Stdlib_List[19],_fl_); - return symbol$0(to_assoc$0(o),_fm_)} + {var _hd_=to_assoc$0(o); + function _he_(param){var value=param[2];return value} + return caml_call1(caml_call1(Stdlib_List[19],_he_),_hd_)} function combine$0(first,second) {if (typeof first @@ -41846,42 +40255,42 @@ return [0,963043957,caml_call2(Stdlib[37],a,b)]} throw [0,Stdlib[6],cst_Expected_two_objects_check$0]} function hex$4(n) - {var _fk_=10 <= n?n + 87 | 0:n + 48 | 0; - return caml_call1(Stdlib_Char[1],_fk_)} + {var _hc_=10 <= n?n + 87 | 0:n + 48 | 0; + return caml_call1(Stdlib_Char[1],_hc_)} function write_special$2(src,start,stop,ob,str) - {caml_call4(Bi_outbuf[14],ob,src,start[1],stop - start[1] | 0); - caml_call2(Bi_outbuf[13],ob,str); + {caml_call4(Stdlib_Buffer[18],ob,src,start[1],stop - start[1] | 0); + caml_call2(Stdlib_Buffer[16],ob,str); start[1] = stop + 1 | 0; return 0} function finish_string$4(src,start,ob) {try {var - _fj_= + _hb_= caml_call4 - (Bi_outbuf[14], + (Stdlib_Buffer[18], ob, src, start[1], caml_ml_string_length(src) - start[1] | 0); - return _fj_} + return _hb_} catch(exc) {exc = caml_wrap_exception(exc); caml_call4 (Stdlib_Printf[3], - _cR_, + _dm_, src, start[1], caml_ml_string_length(src) - start[1] | 0); throw exc}} function write_string$2(ob,s) - {caml_call2(Bi_outbuf[15],ob,34); - var start=[0,0],_fh_=caml_ml_string_length(s) - 1 | 0,_fg_=0; - if(! (_fh_ < 0)) - {var i$0=_fg_; + {caml_call2(Stdlib_Buffer[12],ob,34); + var start=[0,0],_g$_=caml_ml_string_length(s) - 1 | 0,_g__=0; + if(! (_g$_ < 0)) + {var i=_g__; for(;;) - {var c=caml_string_get(s,i$0); + {var c=caml_string_get(s,i); if(92 === c) - write_special$2(s,start,i$0,ob,cst$31); + write_special$2(s,start,i,ob,cst$59); else {var switch$0=0; if(35 <= c) @@ -41890,12 +40299,12 @@ if(8 <= c) {var switch$1=0; switch(c - 8 | 0) - {case 0:write_special$2(s,start,i$0,ob,cst_b$2);break; - case 1:write_special$2(s,start,i$0,ob,cst_t$2);break; - case 2:write_special$2(s,start,i$0,ob,cst_n$2);break; - case 4:write_special$2(s,start,i$0,ob,cst_f$2);break; - case 5:write_special$2(s,start,i$0,ob,cst_r$2);break; - case 26:write_special$2(s,start,i$0,ob,cst$32);break; + {case 0:write_special$2(s,start,i,ob,cst_b$2);break; + case 1:write_special$2(s,start,i,ob,cst_t$2);break; + case 2:write_special$2(s,start,i,ob,cst_n$2);break; + case 4:write_special$2(s,start,i,ob,cst_f$2);break; + case 5:write_special$2(s,start,i,ob,cst_r$2);break; + case 26:write_special$2(s,start,i,ob,cst$60);break; case 24: case 25:switch$0 = 2;switch$1 = 1;break; default:switch$0 = 1;switch$1 = 1}} @@ -41904,32 +40313,37 @@ switch(switch$0) {case 2:break; case 1: - caml_call4(Bi_outbuf[14],ob,s,start[1],i$0 - start[1] | 0); - var i=caml_call2(Bi_outbuf[10],ob,6),dst=ob[1]; - caml_call5(Stdlib_Bytes[12],cst_u00$2,0,dst,i,4); - caml_bytes_set(dst,i + 4 | 0,hex$4(c >>> 4 | 0)); - caml_bytes_set(dst,i + 5 | 0,hex$4(c & 15)); - start[1] = i$0 + 1 | 0; + caml_call4(Stdlib_Buffer[18],ob,s,start[1],i - start[1] | 0); + caml_call2(Stdlib_Buffer[16],ob,cst_u00$2); + var _g8_=hex$4(c >>> 4 | 0); + caml_call2(Stdlib_Buffer[12],ob,_g8_); + var _g9_=hex$4(c & 15); + caml_call2(Stdlib_Buffer[12],ob,_g9_); + start[1] = i + 1 | 0; break }} - var _fi_=i$0 + 1 | 0; - if(_fh_ !== i$0){var i$0=_fi_;continue} + var _ha_=i + 1 | 0; + if(_g$_ !== i){var i=_ha_;continue} break}} finish_string$4(s,start,ob); - return caml_call2(Bi_outbuf[15],ob,34)} + return caml_call2(Stdlib_Buffer[12],ob,34)} + function json_string_of_string$2(s) + {var ob=caml_call1(Stdlib_Buffer[1],10); + write_string$2(ob,s); + return caml_call1(Stdlib_Buffer[2],ob)} function write_null$2(ob,param) - {return caml_call2(Bi_outbuf[13],ob,cst_null$5)} + {return caml_call2(Stdlib_Buffer[16],ob,cst_null$7)} function write_bool$2(ob,x) - {var _ff_=x?cst_true$3:cst_false$3; - return caml_call2(Bi_outbuf[13],ob,_ff_)} + {var _g7_=x?cst_true$2:cst_false$2; + return caml_call2(Stdlib_Buffer[16],ob,_g7_)} var - _cS_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[20])), - _cT_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[19])); - caml_call2(Stdlib[17],_cT_,_cS_); + _dn_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[20])), + _do_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[19])); + caml_call2(Stdlib[17],_do_,_dn_); var - write_intlit$1=Bi_outbuf[13], - write_floatlit$0=Bi_outbuf[13], - write_stringlit$0=Bi_outbuf[13]; + write_intlit$1=Stdlib_Buffer[16], + write_floatlit$0=Stdlib_Buffer[16], + write_stringlit$0=Stdlib_Buffer[16]; function iter2$2(f_elt,f_sep,x,param$0) {if(param$0) {var l$0=param$0[2],y$0=param$0[1]; @@ -41944,294 +40358,424 @@ continue} return 0}} return 0} - function f_sep$2(ob){return caml_call2(Bi_outbuf[15],ob,44)} + function f_sep$2(ob){return caml_call2(Stdlib_Buffer[12],ob,44)} + function write_variant$1(ob,s,o) + {caml_call2(Stdlib_Buffer[12],ob,60); + write_string$2(ob,s); + if(o){var x=o[1];caml_call2(Stdlib_Buffer[12],ob,58);write_t$2(ob,x)} + return caml_call2(Stdlib_Buffer[12],ob,62)} function write_tuple$1(ob,l) - {caml_call2(Bi_outbuf[15],ob,40); + {caml_call2(Stdlib_Buffer[12],ob,40); iter2$2(write_t$2,f_sep$2,ob,l); - return caml_call2(Bi_outbuf[15],ob,41)} + return caml_call2(Stdlib_Buffer[12],ob,41)} function write_list$2(ob,l) - {caml_call2(Bi_outbuf[15],ob,91); + {caml_call2(Stdlib_Buffer[12],ob,91); iter2$2(write_t$2,f_sep$2,ob,l); - return caml_call2(Bi_outbuf[15],ob,93)} + return caml_call2(Stdlib_Buffer[12],ob,93)} + function write_assoc$2(ob,l) + {function f_elt(ob,param) + {var x=param[2],s=param[1]; + write_string$2(ob,s); + caml_call2(Stdlib_Buffer[12],ob,58); + return write_t$2(ob,x)} + caml_call2(Stdlib_Buffer[12],ob,123); + iter2$2(f_elt,f_sep$2,ob,l); + return caml_call2(Stdlib_Buffer[12],ob,125)} function write_t$2(ob,x) {if(typeof x === "number")return write_null$2(ob,0); - var _fe_=x[1]; - if(737456202 <= _fe_) - {if(928231259 <= _fe_) - {if(963043957 <= _fe_){var l=x[2];return write_assoc$2(ob,l)} + var _g6_=x[1]; + if(737456202 <= _g6_) + {if(928231259 <= _g6_) + {if(963043957 <= _g6_){var l=x[2];return write_assoc$2(ob,l)} var s=x[2]; - return caml_call2(Bi_outbuf[13],ob,s)} - if(848054398 <= _fe_){var l$0=x[2];return write_list$2(ob,l$0)} + return caml_call2(Stdlib_Buffer[16],ob,s)} + if(848054398 <= _g6_){var l$0=x[2];return write_list$2(ob,l$0)} var b=x[2]; return write_bool$2(ob,b)} - if(708012133 <= _fe_) - {if(726928360 <= _fe_){var l$1=x[2];return write_tuple$1(ob,l$1)} + if(708012133 <= _g6_) + {if(726928360 <= _g6_){var l$1=x[2];return write_tuple$1(ob,l$1)} var match=x[2],o=match[2],s$0=match[1]; return write_variant$1(ob,s$0,o)} - if(-375152890 <= _fe_) - {var s$1=x[2];return caml_call2(Bi_outbuf[13],ob,s$1)} + if(-375152890 <= _g6_) + {var s$1=x[2];return caml_call2(Stdlib_Buffer[16],ob,s$1)} var s$2=x[2]; - return caml_call2(Bi_outbuf[13],ob,s$2)} - function write_assoc$2(ob,l) - {function f_elt(ob,param) - {var x=param[2],s=param[1]; + return caml_call2(Stdlib_Buffer[16],ob,s$2)} + function write_std_variant$1(ob,s,o) + {if(o) + {var x=o[1]; + caml_call2(Stdlib_Buffer[12],ob,91); write_string$2(ob,s); - caml_call2(Bi_outbuf[15],ob,58); - return write_t$2(ob,x)} - caml_call2(Bi_outbuf[15],ob,123); - iter2$2(f_elt,f_sep$2,ob,l); - return caml_call2(Bi_outbuf[15],ob,125)} - function write_variant$1(ob,s,o) - {caml_call2(Bi_outbuf[15],ob,60); - write_string$2(ob,s); - if(o){var x=o[1];caml_call2(Bi_outbuf[15],ob,58);write_t$2(ob,x)} - return caml_call2(Bi_outbuf[15],ob,62)} + caml_call2(Stdlib_Buffer[12],ob,44); + write_std_json$2(ob,x); + return caml_call2(Stdlib_Buffer[12],ob,93)} + return write_string$2(ob,s)} function write_std_tuple$1(ob,l) - {caml_call2(Bi_outbuf[15],ob,91); + {caml_call2(Stdlib_Buffer[12],ob,91); iter2$2(write_std_json$2,f_sep$2,ob,l); - return caml_call2(Bi_outbuf[15],ob,93)} + return caml_call2(Stdlib_Buffer[12],ob,93)} function write_std_json$2(ob,x) {if(typeof x === "number")return write_null$2(ob,0); - var _fd_=x[1]; - if(737456202 <= _fd_) - {if(928231259 <= _fd_) - {if(963043957 <= _fd_) + var _g5_=x[1]; + if(737456202 <= _g5_) + {if(928231259 <= _g5_) + {if(963043957 <= _g5_) {var l=x[2], f_elt= function(ob,param) {var x=param[2],s=param[1]; write_string$2(ob,s); - caml_call2(Bi_outbuf[15],ob,58); + caml_call2(Stdlib_Buffer[12],ob,58); return write_std_json$2(ob,x)}; - caml_call2(Bi_outbuf[15],ob,123); + caml_call2(Stdlib_Buffer[12],ob,123); iter2$2(f_elt,f_sep$2,ob,l); - return caml_call2(Bi_outbuf[15],ob,125)} + return caml_call2(Stdlib_Buffer[12],ob,125)} var s=x[2]; - return caml_call2(Bi_outbuf[13],ob,s)} - if(848054398 <= _fd_) + return caml_call2(Stdlib_Buffer[16],ob,s)} + if(848054398 <= _g5_) {var l$0=x[2]; - caml_call2(Bi_outbuf[15],ob,91); + caml_call2(Stdlib_Buffer[12],ob,91); iter2$2(write_std_json$2,f_sep$2,ob,l$0); - return caml_call2(Bi_outbuf[15],ob,93)} + return caml_call2(Stdlib_Buffer[12],ob,93)} var b=x[2]; return write_bool$2(ob,b)} - if(708012133 <= _fd_) - {if(726928360 <= _fd_){var l$1=x[2];return write_std_tuple$1(ob,l$1)} + if(708012133 <= _g5_) + {if(726928360 <= _g5_){var l$1=x[2];return write_std_tuple$1(ob,l$1)} var match=x[2],o=match[2],s$0=match[1]; return write_std_variant$1(ob,s$0,o)} - if(-375152890 <= _fd_) - {var s$1=x[2];return caml_call2(Bi_outbuf[13],ob,s$1)} + if(-375152890 <= _g5_) + {var s$1=x[2];return caml_call2(Stdlib_Buffer[16],ob,s$1)} var s$2=x[2]; - return caml_call2(Bi_outbuf[13],ob,s$2)} - function write_std_variant$1(ob,s,o) - {if(o) - {var x=o[1]; - caml_call2(Bi_outbuf[15],ob,91); - write_string$2(ob,s); - caml_call2(Bi_outbuf[15],ob,44); - write_std_json$2(ob,x); - return caml_call2(Bi_outbuf[15],ob,93)} - return write_string$2(ob,s)} - function to_outbuf$2(opt,ob,x) - {if(opt)var sth=opt[1],std=sth;else var std=0; - return std - ?is_object_or_array(x) - ?write_std_json$2(ob,x) - :json_error(cst_Root_is_not_an_object_or_a$3) - :write_t$2(ob,x)} - function to_string$5(buf,opt,std,x) + return caml_call2(Stdlib_Buffer[16],ob,s$2)} + function to_buffer$2(opt,_g4_,ob,x) + {if(opt)var sth=opt[1],suf=sth;else var suf=cst$61; + if(_g4_)var sth$0=_g4_[1],std=sth$0;else var std=0; + if(std)write_std_json$2(ob,x);else write_t$2(ob,x); + return caml_call2(Stdlib_Buffer[16],ob,suf)} + function to_string$4(buf,opt,_g3_,std,x) {if(opt)var sth=opt[1],len=sth;else var len=256; + if(_g3_)var sth$0=_g3_[1],suf=sth$0;else var suf=cst$62; if(buf) - {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob} + {var ob=buf[1];caml_call1(Stdlib_Buffer[8],ob);var ob$0=ob} else - var ob$0=caml_call3(Bi_outbuf[3],0,0,len); - to_outbuf$2(std,ob$0,x); - var s=caml_call1(Bi_outbuf[4],ob$0); - caml_call1(Bi_outbuf[19],ob$0); + var ob$0=caml_call1(Stdlib_Buffer[1],len); + to_buffer$2([0,suf],std,ob$0,x); + var s=caml_call1(Stdlib_Buffer[2],ob$0); + caml_call1(Stdlib_Buffer[8],ob$0); return s} - function to_channel$3(buf,len,std,oc,x) - {if(buf) - var ob=buf[1],ob$0=ob; + function to_channel$2(buf,opt,_g2_,std,oc,x) + {if(opt)var sth=opt[1],len=sth;else var len=4096; + if(_g2_)var sth$0=_g2_[1],suf=sth$0;else var suf=cst$63; + if(buf) + {var ob=buf[1];caml_call1(Stdlib_Buffer[8],ob);var ob$0=ob} else - var ob$0=caml_call3(Bi_outbuf[5],len,0,oc); - to_outbuf$2(std,ob$0,x); - return caml_call1(Bi_outbuf[6],ob$0)} - function to_output$2(buf,len,std,out,x) - {if(buf) - var ob=buf[1],ob$0=ob; + var ob$0=caml_call1(Stdlib_Buffer[1],len); + to_buffer$2([0,suf],std,ob$0,x); + caml_call2(Stdlib_Buffer[10],oc,ob$0); + return caml_call1(Stdlib_Buffer[8],ob$0)} + function to_output$2(buf,opt,_g0_,std,out,x) + {if(opt)var sth=opt[1],len=sth;else var len=4096; + if(_g0_)var sth$0=_g0_[1],suf=sth$0;else var suf=cst$64; + if(buf) + {var ob=buf[1];caml_call1(Stdlib_Buffer[8],ob);var ob$0=ob} else - var ob$0=caml_call3(Bi_outbuf[7],len,0,out); - to_outbuf$2(std,ob$0,x); - return caml_call1(Bi_outbuf[8],ob$0)} - function to_file$2(len,std,file,x) - {var oc=caml_call1(Stdlib[60],file); + var ob$0=caml_call1(Stdlib_Buffer[1],len); + to_buffer$2([0,suf],std,ob$0,x); + var _g1_=caml_call1(Stdlib_Buffer[7],ob$0); + caml_call4 + (caml_get_public_method(out,209784577,4), + out, + caml_call1(Stdlib_Buffer[2],ob$0), + 0, + _g1_); + return caml_call1(Stdlib_Buffer[8],ob$0)} + function to_file$2(len,std,opt,file,x) + {if(opt)var sth=opt[1],suf=sth;else var suf=cst$65; + var oc=caml_call1(Stdlib[60],file); try - {to_channel$3(0,len,std,oc,x); - var _fc_=caml_call1(Stdlib[76],oc); - return _fc_} + {to_channel$2(0,len,[0,suf],std,oc,x); + var _gZ_=caml_call1(Stdlib[76],oc); + return _gZ_} catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}} - function stream_to_outbuf$2(std,ob,st) - {function _fa_(_fb_){return to_outbuf$2(std,ob,_fb_)} - return caml_call2(Stdlib_Stream[8],_fa_,st)} - function stream_to_string$2(buf,opt,std,st) + function seq_to_buffer$2(opt,std,ob,st) + {if(opt)var sth=opt[1],suf=sth;else var suf=cst$66; + var _gW_=[0,suf]; + function _gX_(_gY_){return to_buffer$2(_gW_,std,ob,_gY_)} + return caml_call2(Stdlib_Seq[4],_gX_,st)} + function seq_to_string$2(buf,opt,_gV_,std,st) {if(opt)var sth=opt[1],len=sth;else var len=256; + if(_gV_)var sth$0=_gV_[1],suf=sth$0;else var suf=cst$67; if(buf) - {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob} + {var ob=buf[1];caml_call1(Stdlib_Buffer[8],ob);var ob$0=ob} else - var ob$0=caml_call3(Bi_outbuf[3],0,0,len); - stream_to_outbuf$2(std,ob$0,st); - var s=caml_call1(Bi_outbuf[4],ob$0); - caml_call1(Bi_outbuf[19],ob$0); + var ob$0=caml_call1(Stdlib_Buffer[1],len); + seq_to_buffer$2([0,suf],std,ob$0,st); + var s=caml_call1(Stdlib_Buffer[2],ob$0); + caml_call1(Stdlib_Buffer[8],ob$0); return s} - function stream_to_channel$2(buf,len,std,oc,st) - {if(buf) - var ob=buf[1],ob$0=ob; + function seq_to_channel$2(buf,opt,_gT_,std,oc,seq) + {if(opt)var sth=opt[1],len=sth;else var len=2096; + if(_gT_)var sth$0=_gT_[1],suf=sth$0;else var suf=cst$68; + if(buf) + {var ob=buf[1];caml_call1(Stdlib_Buffer[8],ob);var ob$0=ob} else - var ob$0=caml_call3(Bi_outbuf[5],len,0,oc); - stream_to_outbuf$2(std,ob$0,st); - return caml_call1(Bi_outbuf[6],ob$0)} - function stream_to_file$2(len,std,file,st) - {var oc=caml_call1(Stdlib[60],file); + var ob$0=caml_call1(Stdlib_Buffer[1],len); + function _gU_(json) + {to_buffer$2([0,suf],std,ob$0,json); + caml_call2(Stdlib_Buffer[10],oc,ob$0); + return caml_call1(Stdlib_Buffer[8],ob$0)} + return caml_call2(Stdlib_Seq[4],_gU_,seq)} + function seq_to_file$2(len,opt,std,file,st) + {if(opt)var sth=opt[1],suf=sth;else var suf=cst$69; + var oc=caml_call1(Stdlib[60],file); try - {stream_to_channel$2(0,len,std,oc,st); - var _e$_=caml_call1(Stdlib[76],oc); - return _e$_} + {seq_to_channel$2(0,len,[0,suf],std,oc,st); + var _gS_=caml_call1(Stdlib[76],oc); + return _gS_} catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}} function sort$2(x) {if(typeof x !== "number") - {var _e2_=x[1]; - if(726928361 <= _e2_) - {if(848054398 === _e2_) - {var l=x[2],_e3_=caml_call2(Stdlib_List[21],sort$2,l); - return [0,848054398,caml_call1(Stdlib_List[9],_e3_)]} - if(963043957 === _e2_) + {var _gJ_=x[1]; + if(726928361 <= _gJ_) + {if(848054398 === _gJ_) + {var l=x[2],_gK_=caml_call2(Stdlib_List[21],sort$2,l); + return [0,848054398,caml_call1(Stdlib_List[9],_gK_)]} + if(963043957 === _gJ_) {var l$0=x[2], - _e4_= + _gL_= function(param) {var v=param[2],k=param[1];return [0,k,sort$2(v)]}, - _e5_=caml_call2(Stdlib_List[21],_e4_,l$0), - l$1=caml_call1(Stdlib_List[9],_e5_), - _e6_= - function(param,_e__) - {var b=_e__[1],a=param[1]; + _gM_=caml_call2(Stdlib_List[21],_gL_,l$0), + l$1=caml_call1(Stdlib_List[9],_gM_), + _gN_= + function(param,_gR_) + {var b=_gR_[1],a=param[1]; return caml_call2(Stdlib_String[9],a,b)}; - return [0,963043957,caml_call2(Stdlib_List[57],_e6_,l$1)]}} + return [0,963043957,caml_call2(Stdlib_List[57],_gN_,l$1)]}} else - if(708012133 === _e2_) - {var _e7_=x[2],_e8_=_e7_[2]; - if(_e8_) - {var v=_e8_[1],k=_e7_[1],v$0=sort$2(v); + if(708012133 === _gJ_) + {var _gO_=x[2],_gP_=_gO_[2]; + if(_gP_) + {var v=_gP_[1],k=_gO_[1],v$0=sort$2(v); return v === v$0?x:[0,708012133,[0,k,[0,v$0]]]}} else - if(726928360 <= _e2_) - {var l$2=x[2],_e9_=caml_call2(Stdlib_List[21],sort$2,l$2); - return [0,726928360,caml_call1(Stdlib_List[9],_e9_)]}} + if(726928360 <= _gJ_) + {var l$2=x[2],_gQ_=caml_call2(Stdlib_List[21],sort$2,l$2); + return [0,726928360,caml_call1(Stdlib_List[9],_gQ_)]}} return x} - function pp$2(fmt,param) + function pp_list$2(sep,ppx,out,l) + {function pp_sep(out,param) + {return caml_call3(Stdlib_Format[129],out,_dp_,sep)} + return caml_call4(Stdlib_Format[123],[0,pp_sep],ppx,out,l)} + function is_atom$2(x) + {if(typeof x !== "number") + {var _gI_=x[1],switch$0=0; + if(737456202 <= _gI_) + {if(848054398 === _gI_) + {if(x[2])switch$0 = 1} + else + if(963043957 <= _gI_ && x[2])switch$0 = 1} + else + if(708012133 === _gI_) + {if(x[2][2])switch$0 = 1} + else + if(726928360 <= _gI_ && x[2])switch$0 = 1; + if(switch$0)return 0} + return 1} + function format$2(inside_box,std,out,x) + {var x$0=x; + for(;;) + {if(typeof x$0 === "number") + return caml_call2(Stdlib_Format[13],out,cst_null$8); + var _f2_=x$0[1]; + if(737456202 <= _f2_) + {if(928231259 <= _f2_) + {if(963043957 <= _f2_) + {var _f3_=x$0[2]; + if(_f3_) + {if(1 - inside_box)caml_call2(Stdlib_Format[129],out,_dq_); + var + _f4_= + function(out,param) + {var x=param[2],name=param[1],_gD_=1; + function _gE_(_gG_,_gH_) + {return format$2(_gD_,std,_gG_,_gH_)} + var _gF_=json_string_of_string$2(name); + return caml_call5(Stdlib_Format[129],out,_dC_,_gF_,_gE_,x)}, + _f5_= + function(_gB_,_gC_){return pp_list$2(cst$70,_f4_,_gB_,_gC_)}; + caml_call4(Stdlib_Format[129],out,_dr_,_f5_,_f3_); + var _f6_=1 - inside_box; + return _f6_?caml_call2(Stdlib_Format[129],out,_ds_):_f6_} + return caml_call2(Stdlib_Format[13],out,cst$71)} + var s=x$0[2]; + return caml_call2(Stdlib_Format[13],out,s)} + if(848054398 <= _f2_) + {var _f7_=x$0[2]; + if(_f7_) + {if(1 - inside_box)caml_call2(Stdlib_Format[129],out,_dt_); + if(caml_call2(Stdlib_List[32],is_atom$2,_f7_)) + {var + _f8_=0, + _f9_=function(_gv_,_gw_){return format$2(_f8_,std,_gv_,_gw_)}, + _f__= + function(_gt_,_gu_){return pp_list$2(cst$72,_f9_,_gt_,_gu_)}; + caml_call4(Stdlib_Format[129],out,_du_,_f__,_f7_)} + else + {var + _ga_=0, + _gb_=function(_gz_,_gA_){return format$2(_ga_,std,_gz_,_gA_)}, + _gc_= + function(_gx_,_gy_){return pp_list$2(cst$73,_gb_,_gx_,_gy_)}; + caml_call4(Stdlib_Format[129],out,_dw_,_gc_,_f7_)} + var _f$_=1 - inside_box; + return _f$_?caml_call2(Stdlib_Format[129],out,_dv_):_f$_} + return caml_call2(Stdlib_Format[13],out,cst$74)} + var x$1=x$0[2]; + return caml_call2(Stdlib_Format[25],out,x$1)} + if(708012133 <= _f2_) + {if(726928360 <= _f2_) + {var l=x$0[2]; + if(std){var x$2=[0,848054398,l],x$0=x$2;continue} + if(0 === l)return caml_call2(Stdlib_Format[13],out,cst$75); + if(1 - inside_box)caml_call2(Stdlib_Format[129],out,_dx_); + var + _gd_=0, + _ge_=function(_gr_,_gs_){return format$2(_gd_,std,_gr_,_gs_)}, + _gf_=function(_gp_,_gq_){return pp_list$2(cst$76,_ge_,_gp_,_gq_)}; + caml_call4(Stdlib_Format[129],out,_dy_,_gf_,l); + var _gg_=1 - inside_box; + return _gg_?caml_call2(Stdlib_Format[129],out,_dz_):_gg_} + var _gh_=x$0[2],_gi_=_gh_[2],_gj_=_gh_[1]; + if(_gi_) + {var x$3=_gi_[1]; + if(std) + {var + representation=[0,-375152890,_gj_], + x$4=[0,848054398,[0,representation,[0,x$3,0]]], + x$0=x$4; + continue} + var + op=json_string_of_string$2(_gj_), + _gk_=1, + _gl_=function(_gn_,_go_){return format$2(_gk_,std,_gn_,_go_)}; + return caml_call5(Stdlib_Format[129],out,_dA_,op,_gl_,x$3)} + if(std){var x$5=[0,-375152890,_gj_],x$0=x$5;continue} + var _gm_=json_string_of_string$2(_gj_); + return caml_call3(Stdlib_Format[129],out,_dB_,_gm_)} + if(-375152890 <= _f2_) + {var s$0=x$0[2];return caml_call2(Stdlib_Format[13],out,s$0)} + var s$1=x$0[2]; + return caml_call2(Stdlib_Format[13],out,s$1)}} + function pp$5(opt,out,x) + {if(opt)var sth=opt[1],std=sth;else var std=0; + var _fY_=1; + function _fZ_(_f0_,_f1_){return format$2(_fY_,std,_f0_,_f1_)} + return caml_call4(Stdlib_Format[129],out,_dD_,_fZ_,x)} + function pp$6(fmt,param) {if(typeof param === "number") return caml_call2(Stdlib_Format[13],fmt,cst_Null$2); - var _eV_=param[1]; - if(737456202 <= _eV_) - {if(928231259 <= _eV_) - {if(963043957 <= _eV_) + var _fR_=param[1]; + if(737456202 <= _fR_) + {if(928231259 <= _fR_) + {if(963043957 <= _fR_) {var xs=param[2]; - caml_call2(Stdlib_Format[129],fmt,_cU_); - caml_call2(Stdlib_Format[129],fmt,_cV_); + caml_call2(Stdlib_Format[129],fmt,_dG_); + caml_call2(Stdlib_Format[129],fmt,_dH_); var - _eW_=0, - _eX_= + _fS_=0, + _fT_= function(sep,param) {var value=param[2],key=param[1]; - if(sep)caml_call2(Stdlib_Format[129],fmt,_cW_); - caml_call2(Stdlib_Format[129],fmt,_cX_); - caml_call3(Stdlib_Format[129],fmt,_cY_,key); - caml_call2(Stdlib_Format[129],fmt,_cZ_); - pp$2(fmt,value); - caml_call2(Stdlib_Format[129],fmt,_c0_); + if(sep)caml_call2(Stdlib_Format[129],fmt,_dI_); + caml_call2(Stdlib_Format[129],fmt,_dJ_); + caml_call3(Stdlib_Format[129],fmt,_dK_,key); + caml_call2(Stdlib_Format[129],fmt,_dL_); + pp$6(fmt,value); + caml_call2(Stdlib_Format[129],fmt,_dM_); return 1}; - caml_call3(Stdlib_List[25],_eX_,_eW_,xs); - caml_call2(Stdlib_Format[129],fmt,_c1_); - return caml_call2(Stdlib_Format[129],fmt,_c2_)} + caml_call3(Stdlib_List[25],_fT_,_fS_,xs); + caml_call2(Stdlib_Format[129],fmt,_dN_); + return caml_call2(Stdlib_Format[129],fmt,_dO_)} var x=param[2]; - caml_call2(Stdlib_Format[129],fmt,_c3_); - caml_call3(Stdlib_Format[129],fmt,_c4_,x); - return caml_call2(Stdlib_Format[129],fmt,_c5_)} - if(848054398 <= _eV_) + caml_call2(Stdlib_Format[129],fmt,_dP_); + caml_call3(Stdlib_Format[129],fmt,_dQ_,x); + return caml_call2(Stdlib_Format[129],fmt,_dR_)} + if(848054398 <= _fR_) {var xs$0=param[2]; - caml_call2(Stdlib_Format[129],fmt,_c6_); - caml_call2(Stdlib_Format[129],fmt,_c7_); + caml_call2(Stdlib_Format[129],fmt,_dS_); + caml_call2(Stdlib_Format[129],fmt,_dT_); var - _eY_=0, - _eZ_= + _fU_=0, + _fV_= function(sep,x) - {if(sep)caml_call2(Stdlib_Format[129],fmt,_c8_); - pp$2(fmt,x); + {if(sep)caml_call2(Stdlib_Format[129],fmt,_dU_); + pp$6(fmt,x); return 1}; - caml_call3(Stdlib_List[25],_eZ_,_eY_,xs$0); - caml_call2(Stdlib_Format[129],fmt,_c9_); - return caml_call2(Stdlib_Format[129],fmt,_c__)} + caml_call3(Stdlib_List[25],_fV_,_fU_,xs$0); + caml_call2(Stdlib_Format[129],fmt,_dV_); + return caml_call2(Stdlib_Format[129],fmt,_dW_)} var x$0=param[2]; - caml_call2(Stdlib_Format[129],fmt,_c$_); - caml_call3(Stdlib_Format[129],fmt,_da_,x$0); - return caml_call2(Stdlib_Format[129],fmt,_db_)} - if(708012133 <= _eV_) - {if(726928360 <= _eV_) + caml_call2(Stdlib_Format[129],fmt,_dX_); + caml_call3(Stdlib_Format[129],fmt,_dY_,x$0); + return caml_call2(Stdlib_Format[129],fmt,_dZ_)} + if(708012133 <= _fR_) + {if(726928360 <= _fR_) {var tup=param[2]; - caml_call2(Stdlib_Format[129],fmt,_dc_); - caml_call2(Stdlib_Format[129],fmt,_dd_); + caml_call2(Stdlib_Format[129],fmt,_d0_); + caml_call2(Stdlib_Format[129],fmt,_d1_); var - _e0_=0, - _e1_= + _fW_=0, + _fX_= function(sep,e) - {if(sep)caml_call2(Stdlib_Format[129],fmt,_de_); - pp$2(fmt,e); + {if(sep)caml_call2(Stdlib_Format[129],fmt,_d2_); + pp$6(fmt,e); return 1}; - caml_call3(Stdlib_List[25],_e1_,_e0_,tup); - caml_call2(Stdlib_Format[129],fmt,_df_); - return caml_call2(Stdlib_Format[129],fmt,_dg_)} + caml_call3(Stdlib_List[25],_fX_,_fW_,tup); + caml_call2(Stdlib_Format[129],fmt,_d3_); + return caml_call2(Stdlib_Format[129],fmt,_d4_)} var match=param[2],value=match[2],name=match[1]; - caml_call2(Stdlib_Format[129],fmt,_dh_); - caml_call2(Stdlib_Format[129],fmt,_di_); - caml_call3(Stdlib_Format[129],fmt,_dj_,name); - caml_call2(Stdlib_Format[129],fmt,_dk_); + caml_call2(Stdlib_Format[129],fmt,_d5_); + caml_call2(Stdlib_Format[129],fmt,_d6_); + caml_call3(Stdlib_Format[129],fmt,_d7_,name); + caml_call2(Stdlib_Format[129],fmt,_d8_); if(value) {var x$1=value[1]; caml_call2(Stdlib_Format[13],fmt,cst_Some$1); - pp$2(fmt,x$1); - caml_call2(Stdlib_Format[13],fmt,cst$33)} + pp$6(fmt,x$1); + caml_call2(Stdlib_Format[13],fmt,cst$77)} else caml_call2(Stdlib_Format[13],fmt,cst_None$1); - caml_call2(Stdlib_Format[129],fmt,_dl_); - return caml_call2(Stdlib_Format[129],fmt,_dm_)} - if(-375152890 <= _eV_) + caml_call2(Stdlib_Format[129],fmt,_d9_); + return caml_call2(Stdlib_Format[129],fmt,_d__)} + if(-375152890 <= _fR_) {var x$2=param[2]; - caml_call2(Stdlib_Format[129],fmt,_dn_); - caml_call3(Stdlib_Format[129],fmt,_do_,x$2); - return caml_call2(Stdlib_Format[129],fmt,_dp_)} + caml_call2(Stdlib_Format[129],fmt,_d$_); + caml_call3(Stdlib_Format[129],fmt,_ea_,x$2); + return caml_call2(Stdlib_Format[129],fmt,_eb_)} var x$3=param[2]; - caml_call2(Stdlib_Format[129],fmt,_dq_); - caml_call3(Stdlib_Format[129],fmt,_dr_,x$3); - return caml_call2(Stdlib_Format[129],fmt,_ds_)} - function show$2(x){return caml_call3(Stdlib_Format[133],_dt_,pp$2,x)} + caml_call2(Stdlib_Format[129],fmt,_ec_); + caml_call3(Stdlib_Format[129],fmt,_ed_,x$3); + return caml_call2(Stdlib_Format[129],fmt,_ee_)} + function show$2(x){return caml_call3(Stdlib_Format[133],_ef_,pp$6,x)} function equal$2(a,b) {var a$0=a,b$0=b; for(;;) {if(typeof a$0 === "number") {if(870828711 === a$0 && 870828711 === b$0)return 1} else - {var _eO_=a$0[1],switch$0=0; - if(726928361 <= _eO_) - {if(848054399 <= _eO_) - {if(928231259 === _eO_) + {var _fK_=a$0[1],switch$0=0; + if(726928361 <= _fK_) + {if(848054399 <= _fK_) + {if(928231259 === _fK_) {if(typeof b$0 !== "number" && 928231259 === b$0[1]) {var b$1=b$0[2],a$1=a$0[2];return caml_equal(a$1,b$1)}} else if (963043957 === - _eO_ + _fK_ && typeof b$0 !== @@ -42244,37 +40788,37 @@ ys=b$0[2], xs=a$0[2], compare_keys= - function(param,_eU_) - {var key=_eU_[1],key$0=param[1]; + function(param,_fQ_) + {var key=_fQ_[1],key$0=param[1]; return caml_call2(Stdlib_String[9],key$0,key)}, xs$0=caml_call2(Stdlib_List[57],compare_keys,xs), ys$0=caml_call2(Stdlib_List[57],compare_keys,ys); try {var - _eP_= - function(param,_eT_) + _fL_= + function(param,_fP_) {var - value=_eT_[2], - key=_eT_[1], + value=_fP_[2], + key=_fP_[1], value$0=param[2], key$0=param[1], match=caml_string_equal(key$0,key); return match?equal$2(value$0,value):0}, - result=caml_call3(Stdlib_List[34],_eP_,xs$0,ys$0); + result=caml_call3(Stdlib_List[34],_fL_,xs$0,ys$0); return result} - catch(_eS_) - {_eS_ = caml_wrap_exception(_eS_); - if(_eS_[1] === Stdlib[6])return 0; - throw _eS_}}} + catch(_fO_) + {_fO_ = caml_wrap_exception(_fO_); + if(_fO_[1] === Stdlib[6])return 0; + throw _fO_}}} else - if(737456202 === _eO_) + if(737456202 === _fK_) {if(typeof b$0 !== "number" && 737456202 === b$0[1]) {var b$2=b$0[2],a$2=a$0[2];return caml_equal(a$2,b$2)}} else if (848054398 <= - _eO_ + _fK_ && typeof b$0 !== @@ -42285,13 +40829,13 @@ b$0[1]) {var ys$1=b$0[2],xs$1=a$0[2];switch$0 = 1}} else - if(-375152889 <= _eO_) - {if(708012133 === _eO_) + if(-375152889 <= _fK_) + {if(708012133 === _fK_) {if(typeof b$0 !== "number" && 708012133 === b$0[1]) {var - _eQ_=b$0[2], - value=_eQ_[2], - name=_eQ_[1], + _fM_=b$0[2], + value=_fM_[2], + name=_fM_[1], match=a$0[2], value$0=match[2], name$0=match[1], @@ -42308,7 +40852,7 @@ if (726928360 <= - _eO_ + _fK_ && typeof b$0 !== @@ -42319,14 +40863,14 @@ b$0[1]) {var ys$1=b$0[2],xs$1=a$0[2];switch$0 = 1}} else - if(-752863768 === _eO_) + if(-752863768 === _fK_) {if(typeof b$0 !== "number" && -752863768 === b$0[1]) {var b$4=b$0[2],a$4=a$0[2];return caml_equal(a$4,b$4)}} else if (-375152890 <= - _eO_ + _fK_ && typeof b$0 !== @@ -42340,17 +40884,19 @@ try {var result$0=caml_call3(Stdlib_List[34],equal$2,xs$1,ys$1); return result$0} - catch(_eR_) - {_eR_ = caml_wrap_exception(_eR_); - if(_eR_[1] === Stdlib[6])return 0; - throw _eR_}} + catch(_fN_) + {_fN_ = caml_wrap_exception(_fN_); + if(_fN_[1] === Stdlib[6])return 0; + throw _fN_}} return 0}} - function pretty_format$2(std,x){return format(std,x)} - function pretty_print$2(std,out,x) - {var _eN_=pretty_format$2(std,x); - return caml_call2(Easy_format[4][2],out,_eN_)} - function pretty_to_string$2(std,x){return to_string$0(std,x)} - function pretty_to_channel$2(std,oc,x){return to_channel$0(std,oc,x)} + function pretty_print$2(std,out,x){return pp$5(std,out,x)} + function pretty_to_string$2(std,x) + {function _fH_(_fI_,_fJ_){return pp$5(std,_fI_,_fJ_)} + return caml_call3(Stdlib_Format[133],_dE_,_fH_,x)} + function pretty_to_channel$2(std,oc,x) + {var fmt=caml_call1(Stdlib_Format[108],oc); + function _fE_(_fF_,_fG_){return pp$5(std,_fF_,_fG_)} + return caml_call4(Stdlib_Format[129],fmt,_dF_,_fE_,x)} var from_channel$3=Stdlib_Lexing[2], from_string$3=Stdlib_Lexing[3], @@ -42365,43 +40911,43 @@ if(! (71 <= c))return (c - 65 | 0) + 10 | 0} else if(! (9 < c - 48 >>> 0))return c - 48 | 0; - throw [0,Assert_failure,_du_]} + throw [0,Assert_failure,_eg_]} function custom_error$1(descr,v,lexbuf) {var offs=lexbuf[4] - 1 | 0, bol=v[3], pos1=((offs + lexbuf[5] | 0) - bol | 0) - 1 | 0, pos2=caml_call2(Stdlib[17],pos1,(offs + lexbuf[6] | 0) - bol | 0), - _eM_=v[4]; - if(_eM_) - var s=_eM_[1],file_line=caml_call2(Stdlib_Printf[4],_dv_,s); + _fD_=v[4]; + if(_fD_) + var s=_fD_[1],file_line=caml_call2(Stdlib_Printf[4],_eh_,s); else var file_line=cst_Line$1; var bytes= pos1 === pos2 - ?caml_call2(Stdlib_Printf[4],_dw_,pos1 + 1 | 0) - :caml_call3(Stdlib_Printf[4],_dy_,pos1 + 1 | 0,pos2 + 1 | 0), - msg=caml_call5(Stdlib_Printf[4],_dx_,file_line,v[2],bytes,descr); + ?caml_call2(Stdlib_Printf[4],_ei_,pos1 + 1 | 0) + :caml_call3(Stdlib_Printf[4],_ek_,pos1 + 1 | 0,pos2 + 1 | 0), + msg=caml_call5(Stdlib_Printf[4],_ej_,file_line,v[2],bytes,descr); return json_error(msg)} function lexer_error$1(descr,v,lexbuf) - {var _eL_=caml_call1(lexeme$1,lexbuf); + {var _fC_=caml_call1(lexeme$1,lexbuf); return custom_error$1 - (caml_call3(Stdlib_Printf[4],_dz_,descr,_eL_),v,lexbuf)} - var read_junk$1=[0,function(param){throw [0,Assert_failure,_dA_]}]; + (caml_call3(Stdlib_Printf[4],_el_,descr,_fC_),v,lexbuf)} + var read_junk$1=[0,function(param){throw [0,Assert_failure,_em_]}]; function long_error$1(descr,v,lexbuf) {var junk=caml_call1(lexeme$1,lexbuf), extra_junk=caml_call1(read_junk$1[1],lexbuf); return custom_error$1 - (caml_call4(Stdlib_Printf[4],_dB_,descr,junk,extra_junk), + (caml_call4(Stdlib_Printf[4],_en_,descr,junk,extra_junk), v, lexbuf)} var - _dC_=0 === (Stdlib[20] % 10 | 0)?0:1, - min10$1=(Stdlib[20] / 10 | 0) - _dC_ | 0, - _dD_=0 === (Stdlib[19] % 10 | 0)?0:1, - max10$1=(Stdlib[19] / 10 | 0) + _dD_ | 0, + _eo_=0 === (Stdlib[20] % 10 | 0)?0:1, + min10$1=(Stdlib[20] / 10 | 0) - _eo_ | 0, + _ep_=0 === (Stdlib[19] % 10 | 0)?0:1, + max10$1=(Stdlib[19] / 10 | 0) + _ep_ | 0, Int_overflow$1=[248,cst_Yojson_Raw_Int_overflow,caml_fresh_oo_id(0)]; function extract_positive_int$1(lexbuf) {var @@ -42409,15 +40955,15 @@ stop=lexbuf[6], s=lexbuf[2], n=[0,0], - _eI_=stop - 1 | 0; - if(! (_eI_ < start)) + _fz_=stop - 1 | 0; + if(! (_fz_ < start)) {var i=start; for(;;) {if(max10$1 <= n[1])throw Int_overflow$1; - var _eJ_=caml_bytes_get(s,i) - 48 | 0; - n[1] = (10 * n[1] | 0) + _eJ_ | 0; - var _eK_=i + 1 | 0; - if(_eI_ !== i){var i=_eK_;continue} + var _fA_=caml_bytes_get(s,i) - 48 | 0; + n[1] = (10 * n[1] | 0) + _fA_ | 0; + var _fB_=i + 1 | 0; + if(_fz_ !== i){var i=_fB_;continue} break}} if(0 <= n[1])return n[1]; throw Int_overflow$1} @@ -42429,15 +40975,15 @@ stop=lexbuf[6], s=lexbuf[2], n=[0,0], - _eF_=stop - 1 | 0; - if(! (_eF_ < start)) + _fw_=stop - 1 | 0; + if(! (_fw_ < start)) {var i=start; for(;;) {if(n[1] <= min10$1)throw Int_overflow$1; - var _eG_=caml_bytes_get(s,i) - 48 | 0; - n[1] = (10 * n[1] | 0) - _eG_ | 0; - var _eH_=i + 1 | 0; - if(_eF_ !== i){var i=_eH_;continue} + var _fx_=caml_bytes_get(s,i) - 48 | 0; + n[1] = (10 * n[1] | 0) - _fx_ | 0; + var _fy_=i + 1 | 0; + if(_fw_ !== i){var i=_fy_;continue} break}} if(0 < n[1])throw Int_overflow$1; return n[1]} @@ -42447,103 +40993,170 @@ {v[2] = v[2] + 1 | 0;v[3] = lexbuf[4] + lexbuf[6] | 0;return 0} function add_lexeme$1(buf,lexbuf) {var len=lexbuf[6] - lexbuf[5] | 0; - return caml_call4(Bi_outbuf[12],buf,lexbuf[2],lexbuf[5],len)} - function read_colon$1(v,lexbuf) - {var ocaml_lex_state=297; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error$1(cst_Expected_but_found$39,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$121,v,lexbuf)}}} - function read_object_sep$1(v,lexbuf) - {var ocaml_lex_state=292; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:throw End_of_object; - case 2:return long_error$1(cst_Expected_or_but_found$38,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$120,v,lexbuf)}}} - function read_object_end$1(lexbuf) - {var ocaml_lex_state=290; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0)throw End_of_object; - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function read_tuple_sep$1(v,lexbuf) - {var ocaml_lex_state=271; + return caml_call4(Stdlib_Buffer[19],buf,lexbuf[2],lexbuf[5],len)} + function read_json$4(counter,v,lexbuf) + {var _fv_=0; + if(counter < 50) + {var counter$0=counter + 1 | 0; + return ocaml_lex_read_json_rec$1(counter$0,v,lexbuf,_fv_)} + return caml_trampoline_return + (ocaml_lex_read_json_rec$1,[0,v,lexbuf,_fv_])} + function ocaml_lex_read_json_rec$1(counter,v,lexbuf,ocaml_lex_state) + {var ocaml_lex_state$0=ocaml_lex_state; for(;;) {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) + ocaml_lex_state$1= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf); + if(19 < ocaml_lex_state$1 >>> 0) {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; + var ocaml_lex_state$0=ocaml_lex_state$1; continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:throw End_of_tuple; - case 2:return long_error$1(cst_Expected_or_but_found$34,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$116,v,lexbuf)}}} - function read_tuple_end$1(lexbuf) - {var ocaml_lex_state=266; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0)throw End_of_tuple; - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function read_array_sep$1(v,lexbuf) - {var ocaml_lex_state=257; + switch(ocaml_lex_state$1) + {case 0:return _eq_; + case 1:return _er_; + case 2:return 870828711; + case 3:return _es_; + case 4:return _et_; + case 5:return _eu_; + case 6:return [0,-375152890,finish_stringlit$1(v,lexbuf)]; + case 7:return make_positive_int(v,lexbuf); + case 8:return make_negative_int(v,lexbuf); + case 9:return [0,928231259,caml_call1(lexeme$1,lexbuf)]; + case 10: + var acc=[0,0]; + try + {read_space$1(v,lexbuf); + read_object_end$1(lexbuf); + var field_name=read_ident$1(v,lexbuf); + read_space$1(v,lexbuf); + read_colon$1(v,lexbuf); + read_space$1(v,lexbuf); + var _fm_=acc[1]; + acc[1] = [0,[0,field_name,read_json$1(v,lexbuf)],_fm_]; + for(;;) + {read_space$1(v,lexbuf); + read_object_sep$1(v,lexbuf); + read_space$1(v,lexbuf); + var field_name$0=read_ident$1(v,lexbuf); + read_space$1(v,lexbuf); + read_colon$1(v,lexbuf); + read_space$1(v,lexbuf); + var _fn_=acc[1]; + acc[1] = [0,[0,field_name$0,read_json$1(v,lexbuf)],_fn_]; + continue}} + catch(_fu_) + {_fu_ = caml_wrap_exception(_fu_); + if(_fu_ === End_of_object) + return [0,963043957,caml_call1(Stdlib_List[9],acc[1])]; + throw _fu_} + case 11: + var acc$0=[0,0]; + try + {read_space$1(v,lexbuf); + read_array_end$1(lexbuf); + var _fo_=acc$0[1]; + acc$0[1] = [0,read_json$1(v,lexbuf),_fo_]; + for(;;) + {read_space$1(v,lexbuf); + read_array_sep$1(v,lexbuf); + read_space$1(v,lexbuf); + var _fp_=acc$0[1]; + acc$0[1] = [0,read_json$1(v,lexbuf),_fp_]; + continue}} + catch(_ft_) + {_ft_ = caml_wrap_exception(_ft_); + if(_ft_ === End_of_array) + return [0,848054398,caml_call1(Stdlib_List[9],acc$0[1])]; + throw _ft_} + case 12: + var acc$1=[0,0]; + try + {read_space$1(v,lexbuf); + read_tuple_end$1(lexbuf); + var _fq_=acc$1[1]; + acc$1[1] = [0,read_json$1(v,lexbuf),_fq_]; + for(;;) + {read_space$1(v,lexbuf); + read_tuple_sep$1(v,lexbuf); + read_space$1(v,lexbuf); + var _fr_=acc$1[1]; + acc$1[1] = [0,read_json$1(v,lexbuf),_fr_]; + continue}} + catch(_fs_) + {_fs_ = caml_wrap_exception(_fs_); + if(_fs_ === End_of_tuple) + return [0,726928360,caml_call1(Stdlib_List[9],acc$1[1])]; + throw _fs_} + case 13: + read_space$1(v,lexbuf); + var cons=read_ident$1(v,lexbuf); + read_space$1(v,lexbuf); + return [0,708012133,[0,cons,finish_variant$1(v,lexbuf)]]; + case 14: + if(counter < 50) + {var counter$0=counter + 1 | 0; + return read_json$4(counter$0,v,lexbuf)} + return caml_trampoline_return(read_json$4,[0,v,lexbuf]); + case 15: + finish_comment$1(v,lexbuf); + if(counter < 50) + {var counter$1=counter + 1 | 0; + return read_json$4(counter$1,v,lexbuf)} + return caml_trampoline_return(read_json$4,[0,v,lexbuf]); + case 16: + newline$1(v,lexbuf); + if(counter < 50) + {var counter$2=counter + 1 | 0; + return read_json$4(counter$2,v,lexbuf)} + return caml_trampoline_return(read_json$4,[0,v,lexbuf]); + case 17: + if(counter < 50) + {var counter$3=counter + 1 | 0; + return read_json$4(counter$3,v,lexbuf)} + return caml_trampoline_return(read_json$4,[0,v,lexbuf]); + case 18: + return custom_error$1(cst_Unexpected_end_of_input$92,v,lexbuf); + default:return long_error$1(cst_Invalid_token$12,v,lexbuf)}}} + function read_json$1(v,lexbuf) + {return caml_trampoline(read_json$4(0,v,lexbuf))} + function finish_string$5(v,lexbuf) + {a: for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:throw End_of_array; - case 2:return long_error$1(cst_Expected_or_but_found$31,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$114,v,lexbuf)}}} - function read_array_end$1(lexbuf) - {var ocaml_lex_state=255; + {var ocaml_lex_state=58; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return caml_call1(Stdlib_Buffer[2],v[1]); + case 1:finish_escaped_char$1(v,lexbuf);continue a; + case 2:add_lexeme$1(v[1],lexbuf);continue a; + default: + return custom_error$1(cst_Unexpected_end_of_input$93,v,lexbuf)}}}} + function map_string$1(v,f,lexbuf) + {a: for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0)throw End_of_array; - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} + {var ocaml_lex_state=63; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0: + var b=v[1],_fl_=caml_call1(Stdlib_Buffer[7],b); + return caml_call3(f,caml_call1(Stdlib_Buffer[2],b),0,_fl_); + case 1:finish_escaped_char$1(v,lexbuf);continue a; + case 2:add_lexeme$1(v[1],lexbuf);continue a; + default: + return custom_error$1(cst_Unexpected_end_of_input$94,v,lexbuf)}}}} function finish_escaped_char$1(v,lexbuf) {var ocaml_lex_state=68; for(;;) @@ -42557,22 +41170,22 @@ switch(ocaml_lex_state$0) {case 0: var c=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5]); - return caml_call2(Bi_outbuf[15],v[1],c); - case 1:return caml_call2(Bi_outbuf[15],v[1],8); - case 2:return caml_call2(Bi_outbuf[15],v[1],12); - case 3:return caml_call2(Bi_outbuf[15],v[1],10); - case 4:return caml_call2(Bi_outbuf[15],v[1],13); - case 5:return caml_call2(Bi_outbuf[15],v[1],9); + return caml_call2(Stdlib_Buffer[12],v[1],c); + case 1:return caml_call2(Stdlib_Buffer[12],v[1],8); + case 2:return caml_call2(Stdlib_Buffer[12],v[1],12); + case 3:return caml_call2(Stdlib_Buffer[12],v[1],10); + case 4:return caml_call2(Stdlib_Buffer[12],v[1],13); + case 5:return caml_call2(Stdlib_Buffer[12],v[1],9); case 6: var a=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 1 | 0), b=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 2 | 0), c$0=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 3 | 0), d=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 4 | 0), - _ez_=hex$5(d), - _eA_=hex$5(c$0) << 4, - _eB_=hex$5(b) << 8, - x=hex$5(a) << 12 | _eB_ | _eA_ | _ez_; + _ff_=hex$5(d), + _fg_=hex$5(c$0) << 4, + _fh_=hex$5(b) << 8, + x=hex$5(a) << 12 | _fh_ | _fg_ | _ff_; if(55296 <= x && ! (56319 < x)) {var ocaml_lex_state$1=82; for(;;) @@ -42590,10 +41203,10 @@ b$0=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 3 | 0), c$1=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 4 | 0), d$0=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 5 | 0), - _eC_=hex$5(d$0), - _eD_=hex$5(c$1) << 4, - _eE_=hex$5(b$0) << 8, - y=hex$5(a$0) << 12 | _eE_ | _eD_ | _eC_; + _fi_=hex$5(d$0), + _fj_=hex$5(c$1) << 4, + _fk_=hex$5(b$0) << 8, + y=hex$5(a$0) << 12 | _fk_ | _fj_ | _fi_; if(56320 <= y && ! (57343 < y)) return utf8_of_surrogate_pair(v[1],x,y); return long_error$1 @@ -42608,93 +41221,6 @@ case 7:return long_error$1(cst_Invalid_escape_sequence$1,v,lexbuf); default: return custom_error$1(cst_Unexpected_end_of_input$95,v,lexbuf)}}} - function finish_string$5(v,lexbuf) - {a: - for(;;) - {var ocaml_lex_state=58; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return caml_call1(Bi_outbuf[4],v[1]); - case 1:finish_escaped_char$1(v,lexbuf);continue a; - case 2:add_lexeme$1(v[1],lexbuf);continue a; - default: - return custom_error$1(cst_Unexpected_end_of_input$93,v,lexbuf)}}}} - function read_ident$1(v,lexbuf) - {var ocaml_lex_state=237; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0: - caml_call1(Bi_outbuf[19],v[1]);return finish_string$5(v,lexbuf); - case 1: - var s=caml_call3(sub_lexeme$1,lexbuf,lexbuf[5],lexbuf[6]);return s; - case 2: - return long_error$1(cst_Expected_string_or_identif$7,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$110,v,lexbuf)}}} - function finish_comment$1(v,lexbuf) - {a: - for(;;) - {var ocaml_lex_state=125; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error$1(cst_Unterminated_comment$3,v,lexbuf); - case 2:newline$1(v,lexbuf);continue a; - default:continue a}}}} - function read_space$1(v,lexbuf) - {a: - for(;;) - {var ocaml_lex_state=133; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(4 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:newline$1(v,lexbuf);continue a; - case 1:finish_comment$1(v,lexbuf);continue a; - case 2:newline$1(v,lexbuf);continue a; - case 3:continue a; - default:return 0}}}} - function read_gt$1(v,lexbuf) - {var ocaml_lex_state=111; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error$1(cst_Expected_but_found$31,v,lexbuf); - default: - return custom_error$1(cst_Unexpected_end_of_input$100,v,lexbuf)}}} function finish_stringlit$1(v,lexbuf) {var ocaml_lex_state=91; for(;;) @@ -42714,129 +41240,6 @@ case 1:return long_error$1(cst_Invalid_string_literal$5,v,lexbuf); default: return custom_error$1(cst_Unexpected_end_of_input$97,v,lexbuf)}}} - function read_json$4(counter,v,lexbuf) - {var _ey_=0; - if(counter < 50) - {var counter$0=counter + 1 | 0; - return ocaml_lex_read_json_rec$1(counter$0,v,lexbuf,_ey_)} - return caml_trampoline_return - (ocaml_lex_read_json_rec$1,[0,v,lexbuf,_ey_])} - function ocaml_lex_read_json_rec$1(counter,v,lexbuf,ocaml_lex_state) - {var ocaml_lex_state$0=ocaml_lex_state; - for(;;) - {var - ocaml_lex_state$1= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf); - if(19 < ocaml_lex_state$1 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$0=ocaml_lex_state$1; - continue} - switch(ocaml_lex_state$1) - {case 0:return _dE_; - case 1:return _dF_; - case 2:return 870828711; - case 3:return _dG_; - case 4:return _dH_; - case 5:return _dI_; - case 6:return [0,-375152890,finish_stringlit$1(v,lexbuf)]; - case 7:return make_positive_int(v,lexbuf); - case 8:return make_negative_int(v,lexbuf); - case 9:return [0,928231259,caml_call1(lexeme$1,lexbuf)]; - case 10: - var acc=[0,0]; - try - {read_space$1(v,lexbuf); - read_object_end$1(lexbuf); - var field_name=read_ident$1(v,lexbuf); - read_space$1(v,lexbuf); - read_colon$1(v,lexbuf); - read_space$1(v,lexbuf); - var _ep_=acc[1]; - acc[1] = [0,[0,field_name,read_json$1(v,lexbuf)],_ep_]; - for(;;) - {read_space$1(v,lexbuf); - read_object_sep$1(v,lexbuf); - read_space$1(v,lexbuf); - var field_name$0=read_ident$1(v,lexbuf); - read_space$1(v,lexbuf); - read_colon$1(v,lexbuf); - read_space$1(v,lexbuf); - var _eq_=acc[1]; - acc[1] = [0,[0,field_name$0,read_json$1(v,lexbuf)],_eq_]; - continue}} - catch(_ex_) - {_ex_ = caml_wrap_exception(_ex_); - if(_ex_ === End_of_object) - return [0,963043957,caml_call1(Stdlib_List[9],acc[1])]; - throw _ex_} - case 11: - var acc$0=[0,0]; - try - {read_space$1(v,lexbuf); - read_array_end$1(lexbuf); - var _er_=acc$0[1]; - acc$0[1] = [0,read_json$1(v,lexbuf),_er_]; - for(;;) - {read_space$1(v,lexbuf); - read_array_sep$1(v,lexbuf); - read_space$1(v,lexbuf); - var _es_=acc$0[1]; - acc$0[1] = [0,read_json$1(v,lexbuf),_es_]; - continue}} - catch(_ew_) - {_ew_ = caml_wrap_exception(_ew_); - if(_ew_ === End_of_array) - return [0,848054398,caml_call1(Stdlib_List[9],acc$0[1])]; - throw _ew_} - case 12: - var acc$1=[0,0]; - try - {read_space$1(v,lexbuf); - read_tuple_end$1(lexbuf); - var _et_=acc$1[1]; - acc$1[1] = [0,read_json$1(v,lexbuf),_et_]; - for(;;) - {read_space$1(v,lexbuf); - read_tuple_sep$1(v,lexbuf); - read_space$1(v,lexbuf); - var _eu_=acc$1[1]; - acc$1[1] = [0,read_json$1(v,lexbuf),_eu_]; - continue}} - catch(_ev_) - {_ev_ = caml_wrap_exception(_ev_); - if(_ev_ === End_of_tuple) - return [0,726928360,caml_call1(Stdlib_List[9],acc$1[1])]; - throw _ev_} - case 13: - read_space$1(v,lexbuf); - var cons=read_ident$1(v,lexbuf); - read_space$1(v,lexbuf); - return [0,708012133,[0,cons,finish_variant$1(v,lexbuf)]]; - case 14: - if(counter < 50) - {var counter$0=counter + 1 | 0; - return read_json$4(counter$0,v,lexbuf)} - return caml_trampoline_return(read_json$4,[0,v,lexbuf]); - case 15: - finish_comment$1(v,lexbuf); - if(counter < 50) - {var counter$1=counter + 1 | 0; - return read_json$4(counter$1,v,lexbuf)} - return caml_trampoline_return(read_json$4,[0,v,lexbuf]); - case 16: - newline$1(v,lexbuf); - if(counter < 50) - {var counter$2=counter + 1 | 0; - return read_json$4(counter$2,v,lexbuf)} - return caml_trampoline_return(read_json$4,[0,v,lexbuf]); - case 17: - if(counter < 50) - {var counter$3=counter + 1 | 0; - return read_json$4(counter$3,v,lexbuf)} - return caml_trampoline_return(read_json$4,[0,v,lexbuf]); - case 18: - return custom_error$1(cst_Unexpected_end_of_input$92,v,lexbuf); - default:return long_error$1(cst_Invalid_token$12,v,lexbuf)}}} function finish_variant$1(v,lexbuf) {var ocaml_lex_state=102; for(;;) @@ -42857,28 +41260,6 @@ case 2:return long_error$1(cst_Expected_or_but_found$29,v,lexbuf); default: return custom_error$1(cst_Unexpected_end_of_input$98,v,lexbuf)}}} - function read_json$1(v,lexbuf) - {return caml_trampoline(read_json$4(0,v,lexbuf))} - function map_string$1(v,f,lexbuf) - {a: - for(;;) - {var ocaml_lex_state=63; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0: - var b=v[1],_eo_=b[3]; - return caml_call3(f,caml_call1(Stdlib_Bytes[6],b[1]),0,_eo_); - case 1:finish_escaped_char$1(v,lexbuf);continue a; - case 2:add_lexeme$1(v[1],lexbuf);continue a; - default: - return custom_error$1(cst_Unexpected_end_of_input$94,v,lexbuf)}}}} function read_lt$1(v,lexbuf) {var ocaml_lex_state=107; for(;;) @@ -42894,6 +41275,21 @@ case 1:return long_error$1(cst_Expected_but_found$30,v,lexbuf); default: return custom_error$1(cst_Unexpected_end_of_input$99,v,lexbuf)}}} + function read_gt$1(v,lexbuf) + {var ocaml_lex_state=111; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error$1(cst_Expected_but_found$31,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$100,v,lexbuf)}}} function read_comma$1(v,lexbuf) {var ocaml_lex_state=115; for(;;) @@ -42921,11 +41317,28 @@ continue} switch(ocaml_lex_state$0) {case 0:return -154522342; - case 1:caml_call1(Bi_outbuf[19],v[1]);return -589953938; + case 1:caml_call1(Stdlib_Buffer[8],v[1]);return -589953938; case 2:return -124528282; case 3:return long_error$1(cst_Expected_or_but_found$30,v,lexbuf); default: return custom_error$1(cst_Unexpected_end_of_input$102,v,lexbuf)}}} + function finish_comment$1(v,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=125; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error$1(cst_Unterminated_comment$3,v,lexbuf); + case 2:newline$1(v,lexbuf);continue a; + default:continue a}}}} function read_eof$1(lexbuf) {var ocaml_lex_state=131; for(;;) @@ -42937,6 +41350,24 @@ caml_call1(lexbuf[1],lexbuf); var ocaml_lex_state=ocaml_lex_state$0; continue}} + function read_space$1(v,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=133; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(4 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:newline$1(v,lexbuf);continue a; + case 1:finish_comment$1(v,lexbuf);continue a; + case 2:newline$1(v,lexbuf);continue a; + case 3:continue a; + default:return 0}}}} function read_null$1(v,lexbuf) {var ocaml_lex_state=140; for(;;) @@ -42995,26 +41426,26 @@ switch(ocaml_lex_state$1) {case 0: try - {var _ei_=extract_positive_int$1(lexbuf);return _ei_} - catch(_en_) - {_en_ = caml_wrap_exception(_en_); - if(_en_ === Int_overflow$1) + {var _e$_=extract_positive_int$1(lexbuf);return _e$_} + catch(_fe_) + {_fe_ = caml_wrap_exception(_fe_); + if(_fe_ === Int_overflow$1) return lexer_error$1(cst_Int_overflow$5,v,lexbuf); - throw _en_} + throw _fe_} case 1: try - {var _ej_=extract_negative_int$1(lexbuf);return _ej_} - catch(_em_) - {_em_ = caml_wrap_exception(_em_); - if(_em_ === Int_overflow$1) + {var _fa_=extract_negative_int$1(lexbuf);return _fa_} + catch(_fd_) + {_fd_ = caml_wrap_exception(_fd_); + if(_fd_ === Int_overflow$1) return lexer_error$1(cst_Int_overflow$6,v,lexbuf); - throw _em_} + throw _fd_} case 2: - caml_call1(Bi_outbuf[19],v[1]); + caml_call1(Stdlib_Buffer[8],v[1]); var s=finish_string$5(v,lexbuf); try - {var _ek_=caml_int_of_string(s);return _ek_} - catch(_el_) + {var _fb_=caml_int_of_string(s);return _fb_} + catch(_fc_) {return custom_error$1(cst_Expected_an_integer_but_fo$1,v,lexbuf)} case 3: return long_error$1(cst_Expected_integer_but_found$1,v,lexbuf); @@ -43035,15 +41466,15 @@ switch(ocaml_lex_state$1) {case 0: try - {var _ee_=caml_int_of_string(caml_call1(lexeme$1,lexbuf)); - return _ee_} - catch(_eh_){return lexer_error$1(cst_Int32_overflow$3,v,lexbuf)} + {var _e7_=caml_int_of_string(caml_call1(lexeme$1,lexbuf)); + return _e7_} + catch(_e__){return lexer_error$1(cst_Int32_overflow$3,v,lexbuf)} case 1: - caml_call1(Bi_outbuf[19],v[1]); + caml_call1(Stdlib_Buffer[8],v[1]); var s=finish_string$5(v,lexbuf); try - {var _ef_=caml_int_of_string(s);return _ef_} - catch(_eg_) + {var _e8_=caml_int_of_string(s);return _e8_} + catch(_e9_) {return custom_error$1(cst_Expected_an_int32_but_foun$1,v,lexbuf)} case 2:return long_error$1(cst_Expected_int32_but_found$1,v,lexbuf); default: @@ -43063,15 +41494,15 @@ switch(ocaml_lex_state$1) {case 0: try - {var _ea_=caml_int64_of_string(caml_call1(lexeme$1,lexbuf)); - return _ea_} - catch(_ed_){return lexer_error$1(cst_Int32_overflow$4,v,lexbuf)} + {var _e3_=caml_int64_of_string(caml_call1(lexeme$1,lexbuf)); + return _e3_} + catch(_e6_){return lexer_error$1(cst_Int32_overflow$4,v,lexbuf)} case 1: - caml_call1(Bi_outbuf[19],v[1]); + caml_call1(Stdlib_Buffer[8],v[1]); var s=finish_string$5(v,lexbuf); try - {var _eb_=caml_int64_of_string(s);return _eb_} - catch(_ec_) + {var _e4_=caml_int64_of_string(s);return _e4_} + catch(_e5_) {return custom_error$1(cst_Expected_an_int64_but_foun$1,v,lexbuf)} case 2:return long_error$1(cst_Expected_int64_but_found$1,v,lexbuf); default: @@ -43094,14 +41525,14 @@ case 2:return Stdlib[23]; case 3:return caml_float_of_string(caml_call1(lexeme$1,lexbuf)); case 4: - caml_call1(Bi_outbuf[19],v[1]); + caml_call1(Stdlib_Buffer[8],v[1]); var s=finish_string$5(v,lexbuf); try - {var _d__=caml_float_of_string(s);return _d__} - catch(_d$_) - {return caml_string_notequal(s,cst_Infinity$21) - ?caml_string_notequal(s,cst_Infinity$22) - ?caml_string_notequal(s,cst_NaN$10) + {var _e1_=caml_float_of_string(s);return _e1_} + catch(_e2_) + {return caml_string_notequal(s,cst_Infinity$15) + ?caml_string_notequal(s,cst_Infinity$16) + ?caml_string_notequal(s,cst_NaN$7) ?custom_error$1(cst_Expected_a_number_but_foun$1,v,lexbuf) :Stdlib[24] :Stdlib[22] @@ -43124,10 +41555,29 @@ continue} switch(ocaml_lex_state$0) {case 0: - caml_call1(Bi_outbuf[19],v[1]);return finish_string$5(v,lexbuf); + caml_call1(Stdlib_Buffer[8],v[1]);return finish_string$5(v,lexbuf); case 1:return long_error$1(cst_Expected_but_found$33,v,lexbuf); default: return custom_error$1(cst_Unexpected_end_of_input$109,v,lexbuf)}}} + function read_ident$1(v,lexbuf) + {var ocaml_lex_state=237; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0: + caml_call1(Stdlib_Buffer[8],v[1]);return finish_string$5(v,lexbuf); + case 1: + var s=caml_call3(sub_lexeme$1,lexbuf,lexbuf[5],lexbuf[6]);return s; + case 2: + return long_error$1(cst_Expected_string_or_identif$7,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$110,v,lexbuf)}}} function map_ident$1(v,f,lexbuf) {var ocaml_lex_state=242; for(;;) @@ -43140,10 +41590,14 @@ continue} switch(ocaml_lex_state$0) {case 0: - caml_call1(Bi_outbuf[19],v[1]);return map_string$1(v,f,lexbuf); + caml_call1(Stdlib_Buffer[8],v[1]);return map_string$1(v,f,lexbuf); case 1: - var len=lexbuf[6] - lexbuf[5] | 0,_d9_=lexbuf[5]; - return caml_call3(f,caml_call1(Stdlib_Bytes[6],lexbuf[2]),_d9_,len); + var len=lexbuf[6] - lexbuf[5] | 0; + return caml_call3 + (f, + caml_call3(Stdlib_Bytes[8],lexbuf[2],lexbuf[5],len), + 0, + len); case 2: return long_error$1(cst_Expected_string_or_identif$8,v,lexbuf); default: @@ -43172,10 +41626,10 @@ read_space$1(v,lexbuf); acc[1] = caml_call3(read_cell,acc[1],v,lexbuf); continue}} - catch(_d8_) - {_d8_ = caml_wrap_exception(_d8_); - if(_d8_ === End_of_array)return acc[1]; - throw _d8_} + catch(_e0_) + {_e0_ = caml_wrap_exception(_e0_); + if(_e0_ === End_of_array)return acc[1]; + throw _e0_} case 1:return long_error$1(cst_Expected_but_found$34,v,lexbuf); default: return custom_error$1(cst_Unexpected_end_of_input$112,v,lexbuf)}}} @@ -43197,24 +41651,51 @@ try {read_space$1(v,lexbuf); read_array_end$1(lexbuf); - var _d5_=acc[1]; - acc[1] = [0,caml_call2(read_cell,v,lexbuf),_d5_]; + var _eX_=acc[1]; + acc[1] = [0,caml_call2(read_cell,v,lexbuf),_eX_]; for(;;) {read_space$1(v,lexbuf); read_array_sep$1(v,lexbuf); read_space$1(v,lexbuf); - var _d6_=acc[1]; - acc[1] = [0,caml_call2(read_cell,v,lexbuf),_d6_]; + var _eY_=acc[1]; + acc[1] = [0,caml_call2(read_cell,v,lexbuf),_eY_]; continue}} - catch(_d7_) - {_d7_ = caml_wrap_exception(_d7_); - if(_d7_ === End_of_array)return acc[1]; - throw _d7_} + catch(_eZ_) + {_eZ_ = caml_wrap_exception(_eZ_); + if(_eZ_ === End_of_array)return acc[1]; + throw _eZ_} case 1:return long_error$1(cst_Expected_but_found$35,v,lexbuf); default: return custom_error$1(cst_Unexpected_end_of_input$113,v,lexbuf)}}} function read_list_rev$1(read_cell,v,lexbuf) {return ocaml_lex_read_list_rev_rec$1(read_cell,v,lexbuf,251)} + function read_array_end$1(lexbuf) + {var ocaml_lex_state=255; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0)throw End_of_array; + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function read_array_sep$1(v,lexbuf) + {var ocaml_lex_state=257; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:throw End_of_array; + case 2:return long_error$1(cst_Expected_or_but_found$31,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$114,v,lexbuf)}}} function ocaml_lex_read_tuple_rec$0 (read_cell,init_acc,v,lexbuf,ocaml_lex_state) {var ocaml_lex_state$0=ocaml_lex_state; @@ -43241,15 +41722,26 @@ acc[1] = caml_call4(read_cell,pos[1],acc[1],v,lexbuf); pos[1]++; continue}} - catch(_d4_) - {_d4_ = caml_wrap_exception(_d4_); - if(_d4_ === End_of_tuple)return acc[1]; - throw _d4_} + catch(_eW_) + {_eW_ = caml_wrap_exception(_eW_); + if(_eW_ === End_of_tuple)return acc[1]; + throw _eW_} case 1:return long_error$1(cst_Expected_but_found$36,v,lexbuf); default: return custom_error$1(cst_Unexpected_end_of_input$115,v,lexbuf)}}} function read_tuple$1(read_cell,init_acc,v,lexbuf) {return ocaml_lex_read_tuple_rec$0(read_cell,init_acc,v,lexbuf,262)} + function read_tuple_end$1(lexbuf) + {var ocaml_lex_state=266; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0)throw End_of_tuple; + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} function read_tuple_end2$1(v,std,lexbuf) {var ocaml_lex_state=268; for(;;) @@ -43268,6 +41760,22 @@ if(std)throw End_of_tuple; return long_error$1(cst_Expected_or_but_found$33,v,lexbuf); default:return 0}}} + function read_tuple_sep$1(v,lexbuf) + {var ocaml_lex_state=271; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:throw End_of_tuple; + case 2:return long_error$1(cst_Expected_or_but_found$34,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$116,v,lexbuf)}}} function read_tuple_sep2$1(v,std,lexbuf) {var ocaml_lex_state=276; for(;;) @@ -43321,10 +41829,10 @@ read_space$1(v,lexbuf); acc[1] = caml_call4(read_field,acc[1],field_name$0,v,lexbuf); continue}} - catch(_d3_) - {_d3_ = caml_wrap_exception(_d3_); - if(_d3_ === End_of_object)return acc[1]; - throw _d3_} + catch(_eV_) + {_eV_ = caml_wrap_exception(_eV_); + if(_eV_ === End_of_object)return acc[1]; + throw _eV_} case 1:return long_error$1(cst_Expected_but_found$37,v,lexbuf); default: return custom_error$1(cst_Unexpected_end_of_input$118,v,lexbuf)}}} @@ -43346,6 +41854,48 @@ case 1:return long_error$1(cst_Expected_but_found$38,v,lexbuf); default: return custom_error$1(cst_Unexpected_end_of_input$119,v,lexbuf)}}} + function read_object_end$1(lexbuf) + {var ocaml_lex_state=290; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0)throw End_of_object; + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function read_object_sep$1(v,lexbuf) + {var ocaml_lex_state=292; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:throw End_of_object; + case 2:return long_error$1(cst_Expected_or_but_found$38,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$120,v,lexbuf)}}} + function read_colon$1(v,lexbuf) + {var ocaml_lex_state=297; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(2 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return 0; + case 1:return long_error$1(cst_Expected_but_found$39,v,lexbuf); + default: + return custom_error$1(cst_Unexpected_end_of_input$121,v,lexbuf)}}} function start_any_tuple$1(v,lexbuf) {var ocaml_lex_state=301; for(;;) @@ -43422,45 +41972,47 @@ case 1:return long_error$1(cst_Expected_but_found$43,v,lexbuf); default: return custom_error$1(cst_Unexpected_end_of_input$126,v,lexbuf)}}} - function finish_skip_stringlit$1(v,lexbuf) - {var ocaml_lex_state=378; + function finish_skip_variant$1(v,lexbuf) + {var ocaml_lex_state=389; for(;;) {var ocaml_lex_state$0= caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) + if(3 < ocaml_lex_state$0 >>> 0) {caml_call1(lexbuf[1],lexbuf); var ocaml_lex_state=ocaml_lex_state$0; continue} switch(ocaml_lex_state$0) - {case 0:return 0; - case 1:return long_error$1(cst_Invalid_string_literal$6,v,lexbuf); + {case 0: + skip_json$1(v,lexbuf); + read_space$1(v,lexbuf); + return read_gt$1(v,lexbuf); + case 1:return 0; + case 2:return long_error$1(cst_Expected_or_but_found$40,v,lexbuf); default: - return custom_error$1(cst_Unexpected_end_of_input$128,v,lexbuf)}}} - function skip_ident$1(v,lexbuf) - {var ocaml_lex_state=394; + return custom_error$1(cst_Unexpected_end_of_input$129,v,lexbuf)}}} + function finish_skip_stringlit$1(v,lexbuf) + {var ocaml_lex_state=378; for(;;) {var ocaml_lex_state$0= caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) + if(2 < ocaml_lex_state$0 >>> 0) {caml_call1(lexbuf[1],lexbuf); var ocaml_lex_state=ocaml_lex_state$0; continue} switch(ocaml_lex_state$0) - {case 0:return finish_skip_stringlit$1(v,lexbuf); - case 1:return 0; - case 2: - return long_error$1(cst_Expected_string_or_identif$9,v,lexbuf); + {case 0:return 0; + case 1:return long_error$1(cst_Invalid_string_literal$6,v,lexbuf); default: - return custom_error$1(cst_Unexpected_end_of_input$130,v,lexbuf)}}} + return custom_error$1(cst_Unexpected_end_of_input$128,v,lexbuf)}}} function skip_json$4(counter,v,lexbuf) - {var _d2_=322; + {var _eU_=322; if(counter < 50) {var counter$0=counter + 1 | 0; - return ocaml_lex_skip_json_rec$1(counter$0,v,lexbuf,_d2_)} + return ocaml_lex_skip_json_rec$1(counter$0,v,lexbuf,_eU_)} return caml_trampoline_return - (ocaml_lex_skip_json_rec$1,[0,v,lexbuf,_d2_])} + (ocaml_lex_skip_json_rec$1,[0,v,lexbuf,_eU_])} function ocaml_lex_skip_json_rec$1(counter,v,lexbuf,ocaml_lex_state) {var ocaml_lex_state$0=ocaml_lex_state; for(;;) @@ -43500,10 +42052,10 @@ read_space$1(v,lexbuf); skip_json$1(v,lexbuf); continue}} - catch(_d1_) - {_d1_ = caml_wrap_exception(_d1_); - if(_d1_ === End_of_object)return 0; - throw _d1_} + catch(_eT_) + {_eT_ = caml_wrap_exception(_eT_); + if(_eT_ === End_of_object)return 0; + throw _eT_} case 10: try {read_space$1(v,lexbuf); @@ -43515,10 +42067,10 @@ read_space$1(v,lexbuf); skip_json$1(v,lexbuf); continue}} - catch(_d0_) - {_d0_ = caml_wrap_exception(_d0_); - if(_d0_ === End_of_array)return 0; - throw _d0_} + catch(_eS_) + {_eS_ = caml_wrap_exception(_eS_); + if(_eS_ === End_of_array)return 0; + throw _eS_} case 11: try {read_space$1(v,lexbuf); @@ -43530,10 +42082,10 @@ read_space$1(v,lexbuf); skip_json$1(v,lexbuf); continue}} - catch(_dZ_) - {_dZ_ = caml_wrap_exception(_dZ_); - if(_dZ_ === End_of_tuple)return 0; - throw _dZ_} + catch(_eR_) + {_eR_ = caml_wrap_exception(_eR_); + if(_eR_ === End_of_tuple)return 0; + throw _eR_} case 12: read_space$1(v,lexbuf); skip_ident$1(v,lexbuf); @@ -43566,8 +42118,8 @@ default:return long_error$1(cst_Invalid_token$13,v,lexbuf)}}} function skip_json$1(v,lexbuf) {return caml_trampoline(skip_json$4(0,v,lexbuf))} - function finish_skip_variant$1(v,lexbuf) - {var ocaml_lex_state=389; + function skip_ident$1(v,lexbuf) + {var ocaml_lex_state=394; for(;;) {var ocaml_lex_state$0= @@ -43577,77 +42129,178 @@ var ocaml_lex_state=ocaml_lex_state$0; continue} switch(ocaml_lex_state$0) - {case 0: - skip_json$1(v,lexbuf); - read_space$1(v,lexbuf); - return read_gt$1(v,lexbuf); + {case 0:return finish_skip_stringlit$1(v,lexbuf); case 1:return 0; - case 2:return long_error$1(cst_Expected_or_but_found$40,v,lexbuf); + case 2: + return long_error$1(cst_Expected_string_or_identif$9,v,lexbuf); default: - return custom_error$1(cst_Unexpected_end_of_input$129,v,lexbuf)}}} - function finish_buffer_comment$1(v,lexbuf) - {a: - for(;;) - {var ocaml_lex_state=507; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:return caml_call2(Bi_outbuf[13],v[1],cst$36); - case 1:return long_error$1(cst_Unterminated_comment$4,v,lexbuf); - case 2: - caml_call2(Bi_outbuf[15],v[1],10);newline$1(v,lexbuf);continue a; - default:add_lexeme$1(v[1],lexbuf);continue a}}}} - function buffer_colon$1(v,lexbuf) - {var ocaml_lex_state=499; + return custom_error$1(cst_Unexpected_end_of_input$130,v,lexbuf)}}} + function finish_buffer_variant$0(v,lexbuf) + {var ocaml_lex_state=461; for(;;) {var ocaml_lex_state$0= caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) + if(3 < ocaml_lex_state$0 >>> 0) {caml_call1(lexbuf[1],lexbuf); var ocaml_lex_state=ocaml_lex_state$0; continue} switch(ocaml_lex_state$0) - {case 0:return caml_call2(Bi_outbuf[15],v[1],58); - case 1:return long_error$1(cst_Expected_but_found$44,v,lexbuf); + {case 0: + caml_call2(Stdlib_Buffer[12],v[1],58); + buffer_json$1(v,lexbuf); + buffer_space$1(v,lexbuf); + var ocaml_lex_state$1=503; + for(;;) + {var + ocaml_lex_state$2= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$1,lexbuf); + if(2 < ocaml_lex_state$2 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$1=ocaml_lex_state$2; + continue} + switch(ocaml_lex_state$2) + {case 0:return caml_call2(Stdlib_Buffer[12],v[1],62); + case 1:return long_error$1(cst_Expected_but_found$45,v,lexbuf); + default: + return custom_error$1 + (cst_Unexpected_end_of_input$139,v,lexbuf)}} + case 1:return caml_call2(Stdlib_Buffer[12],v[1],62); + case 2:return long_error$1(cst_Expected_or_but_found$41,v,lexbuf); default: - return custom_error$1(cst_Unexpected_end_of_input$138,v,lexbuf)}}} - function buffer_tuple_sep$0(v,lexbuf) - {var ocaml_lex_state=494; + return custom_error$1(cst_Unexpected_end_of_input$133,v,lexbuf)}}} + function finish_buffer_stringlit$1(v,lexbuf) + {var ocaml_lex_state=450; for(;;) {var ocaml_lex_state$0= caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) + if(2 < ocaml_lex_state$0 >>> 0) {caml_call1(lexbuf[1],lexbuf); var ocaml_lex_state=ocaml_lex_state$0; continue} switch(ocaml_lex_state$0) - {case 0:return caml_call2(Bi_outbuf[15],v[1],44); - case 1:caml_call2(Bi_outbuf[15],v[1],41);throw End_of_tuple; - case 2:return long_error$1(cst_Expected_or_but_found$44,v,lexbuf); + {case 0: + caml_call2(Stdlib_Buffer[12],v[1],34); + return add_lexeme$1(v[1],lexbuf); + case 1:return long_error$1(cst_Invalid_string_literal$7,v,lexbuf); default: - return custom_error$1(cst_Unexpected_end_of_input$137,v,lexbuf)}}} - function buffer_tuple_end$0(v,lexbuf) - {var ocaml_lex_state=492; + return custom_error$1(cst_Unexpected_end_of_input$132,v,lexbuf)}}} + function buffer_json$4(counter,v,lexbuf) + {var _eQ_=399; + if(counter < 50) + {var counter$0=counter + 1 | 0; + return ocaml_lex_buffer_json_rec$1(counter$0,v,lexbuf,_eQ_)} + return caml_trampoline_return + (ocaml_lex_buffer_json_rec$1,[0,v,lexbuf,_eQ_])} + function ocaml_lex_buffer_json_rec$1(counter,v,lexbuf,ocaml_lex_state) + {var ocaml_lex_state$0=ocaml_lex_state; for(;;) {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(0 === ocaml_lex_state$0) - {caml_call2(Bi_outbuf[15],v[1],41);throw End_of_tuple} - if(1 === ocaml_lex_state$0)return 0; - caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue}} - function buffer_array_sep$1(v,lexbuf) - {var ocaml_lex_state=487; + ocaml_lex_state$1= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf); + if(11 < ocaml_lex_state$1 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state$0=ocaml_lex_state$1; + continue} + switch(ocaml_lex_state$1) + {case 0:return add_lexeme$1(v[1],lexbuf); + case 1:return finish_buffer_stringlit$1(v,lexbuf); + case 2: + try + {caml_call2(Stdlib_Buffer[12],v[1],123); + buffer_space$1(v,lexbuf); + buffer_object_end$1(v,lexbuf); + buffer_ident$1(v,lexbuf); + buffer_space$1(v,lexbuf); + buffer_colon$1(v,lexbuf); + buffer_space$1(v,lexbuf); + buffer_json$1(v,lexbuf); + for(;;) + {buffer_space$1(v,lexbuf); + buffer_object_sep$1(v,lexbuf); + buffer_space$1(v,lexbuf); + buffer_ident$1(v,lexbuf); + buffer_space$1(v,lexbuf); + buffer_colon$1(v,lexbuf); + buffer_space$1(v,lexbuf); + buffer_json$1(v,lexbuf); + continue}} + catch(_eP_) + {_eP_ = caml_wrap_exception(_eP_); + if(_eP_ === End_of_object)return 0; + throw _eP_} + case 3: + try + {caml_call2(Stdlib_Buffer[12],v[1],91); + buffer_space$1(v,lexbuf); + buffer_array_end$1(v,lexbuf); + buffer_json$1(v,lexbuf); + for(;;) + {buffer_space$1(v,lexbuf); + buffer_array_sep$1(v,lexbuf); + buffer_space$1(v,lexbuf); + buffer_json$1(v,lexbuf); + continue}} + catch(_eO_) + {_eO_ = caml_wrap_exception(_eO_); + if(_eO_ === End_of_array)return 0; + throw _eO_} + case 4: + try + {caml_call2(Stdlib_Buffer[12],v[1],40); + buffer_space$1(v,lexbuf); + buffer_tuple_end$0(v,lexbuf); + buffer_json$1(v,lexbuf); + for(;;) + {buffer_space$1(v,lexbuf); + buffer_tuple_sep$0(v,lexbuf); + buffer_space$1(v,lexbuf); + buffer_json$1(v,lexbuf); + continue}} + catch(_eN_) + {_eN_ = caml_wrap_exception(_eN_); + if(_eN_ === End_of_tuple)return 0; + throw _eN_} + case 5: + caml_call2(Stdlib_Buffer[12],v[1],60); + buffer_space$1(v,lexbuf); + buffer_ident$1(v,lexbuf); + buffer_space$1(v,lexbuf); + return finish_buffer_variant$0(v,lexbuf); + case 6: + add_lexeme$1(v[1],lexbuf); + if(counter < 50) + {var counter$0=counter + 1 | 0; + return buffer_json$4(counter$0,v,lexbuf)} + return caml_trampoline_return(buffer_json$4,[0,v,lexbuf]); + case 7: + caml_call2(Stdlib_Buffer[16],v[1],cst$78); + finish_buffer_comment$1(v,lexbuf); + if(counter < 50) + {var counter$1=counter + 1 | 0; + return buffer_json$4(counter$1,v,lexbuf)} + return caml_trampoline_return(buffer_json$4,[0,v,lexbuf]); + case 8: + caml_call2(Stdlib_Buffer[12],v[1],10); + newline$1(v,lexbuf); + if(counter < 50) + {var counter$2=counter + 1 | 0; + return buffer_json$4(counter$2,v,lexbuf)} + return caml_trampoline_return(buffer_json$4,[0,v,lexbuf]); + case 9: + add_lexeme$1(v[1],lexbuf); + if(counter < 50) + {var counter$3=counter + 1 | 0; + return buffer_json$4(counter$3,v,lexbuf)} + return caml_trampoline_return(buffer_json$4,[0,v,lexbuf]); + case 10: + return custom_error$1(cst_Unexpected_end_of_input$131,v,lexbuf); + default:return long_error$1(cst_Invalid_token$14,v,lexbuf)}}} + function buffer_json$1(v,lexbuf) + {return caml_trampoline(buffer_json$4(0,v,lexbuf))} + function buffer_ident$1(v,lexbuf) + {var ocaml_lex_state=466; for(;;) {var ocaml_lex_state$0= @@ -43657,19 +42310,44 @@ var ocaml_lex_state=ocaml_lex_state$0; continue} switch(ocaml_lex_state$0) - {case 0:return caml_call2(Bi_outbuf[15],v[1],44); - case 1:caml_call2(Bi_outbuf[15],v[1],93);throw End_of_array; - case 2:return long_error$1(cst_Expected_or_but_found$43,v,lexbuf); + {case 0:return finish_buffer_stringlit$1(v,lexbuf); + case 1:return add_lexeme$1(v[1],lexbuf); + case 2: + return long_error$1(cst_Expected_string_or_identif$10,v,lexbuf); default: - return custom_error$1(cst_Unexpected_end_of_input$136,v,lexbuf)}}} - function buffer_array_end$1(v,lexbuf) - {var ocaml_lex_state=485; + return custom_error$1(cst_Unexpected_end_of_input$134,v,lexbuf)}}} + function buffer_space$1(v,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=471; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(4 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:add_lexeme$1(v[1],lexbuf);newline$1(v,lexbuf);continue a; + case 1: + caml_call2(Stdlib_Buffer[16],v[1],cst$79); + finish_buffer_comment$1(v,lexbuf); + continue a; + case 2: + caml_call2(Stdlib_Buffer[12],v[1],10); + newline$1(v,lexbuf); + continue a; + case 3:add_lexeme$1(v[1],lexbuf);continue a; + default:return 0}}}} + function buffer_object_end$1(v,lexbuf) + {var ocaml_lex_state=478; for(;;) {var ocaml_lex_state$0= caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); if(0 === ocaml_lex_state$0) - {caml_call2(Bi_outbuf[15],v[1],93);throw End_of_array} + {caml_call2(Stdlib_Buffer[12],v[1],125);throw End_of_object} if(1 === ocaml_lex_state$0)return 0; caml_call1(lexbuf[1],lexbuf); var ocaml_lex_state=ocaml_lex_state$0; @@ -43685,63 +42363,53 @@ var ocaml_lex_state=ocaml_lex_state$0; continue} switch(ocaml_lex_state$0) - {case 0:return caml_call2(Bi_outbuf[15],v[1],44); - case 1:caml_call2(Bi_outbuf[15],v[1],125);throw End_of_object; + {case 0:return caml_call2(Stdlib_Buffer[12],v[1],44); + case 1:caml_call2(Stdlib_Buffer[12],v[1],125);throw End_of_object; case 2:return long_error$1(cst_Expected_or_but_found$42,v,lexbuf); default: return custom_error$1(cst_Unexpected_end_of_input$135,v,lexbuf)}}} - function buffer_object_end$1(v,lexbuf) - {var ocaml_lex_state=478; + function buffer_array_end$1(v,lexbuf) + {var ocaml_lex_state=485; for(;;) {var ocaml_lex_state$0= caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); if(0 === ocaml_lex_state$0) - {caml_call2(Bi_outbuf[15],v[1],125);throw End_of_object} + {caml_call2(Stdlib_Buffer[12],v[1],93);throw End_of_array} if(1 === ocaml_lex_state$0)return 0; caml_call1(lexbuf[1],lexbuf); var ocaml_lex_state=ocaml_lex_state$0; continue}} - function buffer_space$1(v,lexbuf) - {a: - for(;;) - {var ocaml_lex_state=471; - for(;;) - {var - ocaml_lex_state$0= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(4 < ocaml_lex_state$0 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state=ocaml_lex_state$0; - continue} - switch(ocaml_lex_state$0) - {case 0:add_lexeme$1(v[1],lexbuf);newline$1(v,lexbuf);continue a; - case 1: - caml_call2(Bi_outbuf[13],v[1],cst$35); - finish_buffer_comment$1(v,lexbuf); - continue a; - case 2: - caml_call2(Bi_outbuf[15],v[1],10);newline$1(v,lexbuf);continue a; - case 3:add_lexeme$1(v[1],lexbuf);continue a; - default:return 0}}}} - function finish_buffer_stringlit$1(v,lexbuf) - {var ocaml_lex_state=450; + function buffer_array_sep$1(v,lexbuf) + {var ocaml_lex_state=487; for(;;) {var ocaml_lex_state$0= caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(2 < ocaml_lex_state$0 >>> 0) + if(3 < ocaml_lex_state$0 >>> 0) {caml_call1(lexbuf[1],lexbuf); var ocaml_lex_state=ocaml_lex_state$0; continue} switch(ocaml_lex_state$0) - {case 0: - caml_call2(Bi_outbuf[15],v[1],34);return add_lexeme$1(v[1],lexbuf); - case 1:return long_error$1(cst_Invalid_string_literal$7,v,lexbuf); + {case 0:return caml_call2(Stdlib_Buffer[12],v[1],44); + case 1:caml_call2(Stdlib_Buffer[12],v[1],93);throw End_of_array; + case 2:return long_error$1(cst_Expected_or_but_found$43,v,lexbuf); default: - return custom_error$1(cst_Unexpected_end_of_input$132,v,lexbuf)}}} - function buffer_ident$1(v,lexbuf) - {var ocaml_lex_state=466; + return custom_error$1(cst_Unexpected_end_of_input$136,v,lexbuf)}}} + function buffer_tuple_end$0(v,lexbuf) + {var ocaml_lex_state=492; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(0 === ocaml_lex_state$0) + {caml_call2(Stdlib_Buffer[12],v[1],41);throw End_of_tuple} + if(1 === ocaml_lex_state$0)return 0; + caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue}} + function buffer_tuple_sep$0(v,lexbuf) + {var ocaml_lex_state=494; for(;;) {var ocaml_lex_state$0= @@ -43751,159 +42419,46 @@ var ocaml_lex_state=ocaml_lex_state$0; continue} switch(ocaml_lex_state$0) - {case 0:return finish_buffer_stringlit$1(v,lexbuf); - case 1:return add_lexeme$1(v[1],lexbuf); - case 2: - return long_error$1(cst_Expected_string_or_identif$10,v,lexbuf); + {case 0:return caml_call2(Stdlib_Buffer[12],v[1],44); + case 1:caml_call2(Stdlib_Buffer[12],v[1],41);throw End_of_tuple; + case 2:return long_error$1(cst_Expected_or_but_found$44,v,lexbuf); default: - return custom_error$1(cst_Unexpected_end_of_input$134,v,lexbuf)}}} - function buffer_json$4(counter,v,lexbuf) - {var _dY_=399; - if(counter < 50) - {var counter$0=counter + 1 | 0; - return ocaml_lex_buffer_json_rec$1(counter$0,v,lexbuf,_dY_)} - return caml_trampoline_return - (ocaml_lex_buffer_json_rec$1,[0,v,lexbuf,_dY_])} - function ocaml_lex_buffer_json_rec$1(counter,v,lexbuf,ocaml_lex_state) - {var ocaml_lex_state$0=ocaml_lex_state; - for(;;) - {var - ocaml_lex_state$1= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf); - if(11 < ocaml_lex_state$1 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$0=ocaml_lex_state$1; - continue} - switch(ocaml_lex_state$1) - {case 0:return add_lexeme$1(v[1],lexbuf); - case 1:return finish_buffer_stringlit$1(v,lexbuf); - case 2: - try - {caml_call2(Bi_outbuf[15],v[1],123); - buffer_space$1(v,lexbuf); - buffer_object_end$1(v,lexbuf); - buffer_ident$1(v,lexbuf); - buffer_space$1(v,lexbuf); - buffer_colon$1(v,lexbuf); - buffer_space$1(v,lexbuf); - buffer_json$1(v,lexbuf); - for(;;) - {buffer_space$1(v,lexbuf); - buffer_object_sep$1(v,lexbuf); - buffer_space$1(v,lexbuf); - buffer_ident$1(v,lexbuf); - buffer_space$1(v,lexbuf); - buffer_colon$1(v,lexbuf); - buffer_space$1(v,lexbuf); - buffer_json$1(v,lexbuf); - continue}} - catch(_dX_) - {_dX_ = caml_wrap_exception(_dX_); - if(_dX_ === End_of_object)return 0; - throw _dX_} - case 3: - try - {caml_call2(Bi_outbuf[15],v[1],91); - buffer_space$1(v,lexbuf); - buffer_array_end$1(v,lexbuf); - buffer_json$1(v,lexbuf); - for(;;) - {buffer_space$1(v,lexbuf); - buffer_array_sep$1(v,lexbuf); - buffer_space$1(v,lexbuf); - buffer_json$1(v,lexbuf); - continue}} - catch(_dW_) - {_dW_ = caml_wrap_exception(_dW_); - if(_dW_ === End_of_array)return 0; - throw _dW_} - case 4: - try - {caml_call2(Bi_outbuf[15],v[1],40); - buffer_space$1(v,lexbuf); - buffer_tuple_end$0(v,lexbuf); - buffer_json$1(v,lexbuf); - for(;;) - {buffer_space$1(v,lexbuf); - buffer_tuple_sep$0(v,lexbuf); - buffer_space$1(v,lexbuf); - buffer_json$1(v,lexbuf); - continue}} - catch(_dV_) - {_dV_ = caml_wrap_exception(_dV_); - if(_dV_ === End_of_tuple)return 0; - throw _dV_} - case 5: - caml_call2(Bi_outbuf[15],v[1],60); - buffer_space$1(v,lexbuf); - buffer_ident$1(v,lexbuf); - buffer_space$1(v,lexbuf); - return finish_buffer_variant$0(v,lexbuf); - case 6: - add_lexeme$1(v[1],lexbuf); - if(counter < 50) - {var counter$0=counter + 1 | 0; - return buffer_json$4(counter$0,v,lexbuf)} - return caml_trampoline_return(buffer_json$4,[0,v,lexbuf]); - case 7: - caml_call2(Bi_outbuf[13],v[1],cst$34); - finish_buffer_comment$1(v,lexbuf); - if(counter < 50) - {var counter$1=counter + 1 | 0; - return buffer_json$4(counter$1,v,lexbuf)} - return caml_trampoline_return(buffer_json$4,[0,v,lexbuf]); - case 8: - caml_call2(Bi_outbuf[15],v[1],10); - newline$1(v,lexbuf); - if(counter < 50) - {var counter$2=counter + 1 | 0; - return buffer_json$4(counter$2,v,lexbuf)} - return caml_trampoline_return(buffer_json$4,[0,v,lexbuf]); - case 9: - add_lexeme$1(v[1],lexbuf); - if(counter < 50) - {var counter$3=counter + 1 | 0; - return buffer_json$4(counter$3,v,lexbuf)} - return caml_trampoline_return(buffer_json$4,[0,v,lexbuf]); - case 10: - return custom_error$1(cst_Unexpected_end_of_input$131,v,lexbuf); - default:return long_error$1(cst_Invalid_token$14,v,lexbuf)}}} - function buffer_json$1(v,lexbuf) - {return caml_trampoline(buffer_json$4(0,v,lexbuf))} - function finish_buffer_variant$0(v,lexbuf) - {var ocaml_lex_state=461; + return custom_error$1(cst_Unexpected_end_of_input$137,v,lexbuf)}}} + function buffer_colon$1(v,lexbuf) + {var ocaml_lex_state=499; for(;;) {var ocaml_lex_state$0= caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); - if(3 < ocaml_lex_state$0 >>> 0) + if(2 < ocaml_lex_state$0 >>> 0) {caml_call1(lexbuf[1],lexbuf); var ocaml_lex_state=ocaml_lex_state$0; continue} switch(ocaml_lex_state$0) - {case 0: - caml_call2(Bi_outbuf[15],v[1],58); - buffer_json$1(v,lexbuf); - buffer_space$1(v,lexbuf); - var ocaml_lex_state$1=503; - for(;;) - {var - ocaml_lex_state$2= - caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$1,lexbuf); - if(2 < ocaml_lex_state$2 >>> 0) - {caml_call1(lexbuf[1],lexbuf); - var ocaml_lex_state$1=ocaml_lex_state$2; - continue} - switch(ocaml_lex_state$2) - {case 0:return caml_call2(Bi_outbuf[15],v[1],62); - case 1:return long_error$1(cst_Expected_but_found$45,v,lexbuf); - default: - return custom_error$1 - (cst_Unexpected_end_of_input$139,v,lexbuf)}} - case 1:return caml_call2(Bi_outbuf[15],v[1],62); - case 2:return long_error$1(cst_Expected_or_but_found$41,v,lexbuf); + {case 0:return caml_call2(Stdlib_Buffer[12],v[1],58); + case 1:return long_error$1(cst_Expected_but_found$44,v,lexbuf); default: - return custom_error$1(cst_Unexpected_end_of_input$133,v,lexbuf)}}} + return custom_error$1(cst_Unexpected_end_of_input$138,v,lexbuf)}}} + function finish_buffer_comment$1(v,lexbuf) + {a: + for(;;) + {var ocaml_lex_state=507; + for(;;) + {var + ocaml_lex_state$0= + caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf); + if(3 < ocaml_lex_state$0 >>> 0) + {caml_call1(lexbuf[1],lexbuf); + var ocaml_lex_state=ocaml_lex_state$0; + continue} + switch(ocaml_lex_state$0) + {case 0:return caml_call2(Stdlib_Buffer[16],v[1],cst$80); + case 1:return long_error$1(cst_Unterminated_comment$4,v,lexbuf); + case 2: + caml_call2(Stdlib_Buffer[12],v[1],10); + newline$1(v,lexbuf); + continue a; + default:add_lexeme$1(v[1],lexbuf);continue a}}}} function junk$1(lexbuf) {var ocaml_lex_state=513; for(;;) @@ -43920,8 +42475,8 @@ if(0 <= n && ! (255 < n))return caml_call1(Stdlib[29],n); return lexer_error$1(cst_Int8_overflow$1,v,lexbuf)} function read_list$1(read_cell,v,lexbuf) - {var _dU_=read_list_rev$1(read_cell,v,lexbuf); - return caml_call1(Stdlib_List[9],_dU_)} + {var _eM_=read_list_rev$1(read_cell,v,lexbuf); + return caml_call1(Stdlib_List[9],_eM_)} function read_array$1(read_cell,v,lexbuf) {var l=read_list_rev$1(read_cell,v,lexbuf); if(l) @@ -43931,21 +42486,21 @@ len=caml_call1(Stdlib_List[1],l), a=caml_make_vect(len,x), r=[0,tl], - _dR_=len - 2 | 0; - if(! (_dR_ < 0)) - {var i=_dR_; + _eJ_=len - 2 | 0; + if(! (_eJ_ < 0)) + {var i=_eJ_; for(;;) - {var _dS_=caml_call1(Stdlib_List[5],r[1]); - caml_check_bound(a,i)[1 + i] = _dS_; + {var _eK_=caml_call1(Stdlib_List[5],r[1]); + caml_check_bound(a,i)[1 + i] = _eK_; r[1] = caml_call1(Stdlib_List[6],r[1]); - var _dT_=i - 1 | 0; - if(0 !== i){var i=_dT_;continue} + var _eL_=i - 1 | 0; + if(0 !== i){var i=_eL_;continue} break}} return a} return [0]} function read_fields$1(read_field,init_acc,v) - {return function(_dQ_) - {return read_abstract_fields$1(read_ident$1,read_field,init_acc,v,_dQ_)}} + {return function(_eI_) + {return read_abstract_fields$1(read_ident$1,read_field,init_acc,v,_eI_)}} function from_lexbuf$1(v,opt,lexbuf) {if(opt)var sth=opt[1],stream=sth;else var stream=0; read_space$1(v,lexbuf); @@ -43961,23 +42516,23 @@ {var lexbuf=caml_call2(from_string$3,0,s), v=init_lexer(buf,fname,lnum,0), - _dO_=from_lexbuf$1(v,0,lexbuf); - return _dO_} - catch(_dP_) - {_dP_ = caml_wrap_exception(_dP_); - if(_dP_ === End_of_input)return json_error(cst_Blank_input_data$3); - throw _dP_}} + _eG_=from_lexbuf$1(v,0,lexbuf); + return _eG_} + catch(_eH_) + {_eH_ = caml_wrap_exception(_eH_); + if(_eH_ === End_of_input)return json_error(cst_Blank_input_data$3); + throw _eH_}} function from_channel$4(buf,fname,lnum,ic) {try {var lexbuf=caml_call2(from_channel$3,0,ic), v=init_lexer(buf,fname,lnum,0), - _dM_=from_lexbuf$1(v,0,lexbuf); - return _dM_} - catch(_dN_) - {_dN_ = caml_wrap_exception(_dN_); - if(_dN_ === End_of_input)return json_error(cst_Blank_input_data$4); - throw _dN_}} + _eE_=from_lexbuf$1(v,0,lexbuf); + return _eE_} + catch(_eF_) + {_eF_ = caml_wrap_exception(_eF_); + if(_eF_ === End_of_input)return json_error(cst_Blank_input_data$4); + throw _eF_}} function from_file$1(buf,fname,lnum,file) {var ic=caml_call1(Stdlib[79],file); try @@ -43986,11 +42541,11 @@ return x} catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[94],ic);throw e}} var Finally$1=[248,cst_Yojson_Raw_Finally,caml_fresh_oo_id(0)]; - function stream_from_lexbuf$1(v,opt,lexbuf) + function seq_from_lexbuf$1(v,opt,lexbuf) {if(opt)var sth=opt[1],fin=sth;else var fin=function(param){return 0}; - function f(i) + function f(param) {try - {var _dL_=[0,from_lexbuf$1(v,stream$1,lexbuf)];return _dL_} + {var _eD_=[0,from_lexbuf$1(v,stream$1,lexbuf),f];return _eD_} catch(e) {e = caml_wrap_exception(e); if(e === End_of_input){caml_call1(fin,0);return 0} @@ -43999,48 +42554,51 @@ catch(fin_e) {fin_e = caml_wrap_exception(fin_e);throw [0,Finally$1,e,fin_e]} throw e}} - return caml_call1(Stdlib_Stream[3],f)} - function stream_from_string$1(buf,fname,lnum,s) + return f} + function seq_from_string$1(buf,fname,lnum,s) {var v=init_lexer(buf,fname,lnum,0); - return stream_from_lexbuf$1(v,0,caml_call2(from_string$3,0,s))} - function stream_from_channel$1(buf,fin,fname,lnum,ic) + return seq_from_lexbuf$1(v,0,caml_call2(from_string$3,0,s))} + function seq_from_channel$1(buf,fin,fname,lnum,ic) {var lexbuf=caml_call2(from_channel$3,0,ic), v=init_lexer(buf,fname,lnum,0); - return stream_from_lexbuf$1(v,fin,lexbuf)} - function stream_from_file$1(buf,fname,lnum,file) + return seq_from_lexbuf$1(v,fin,lexbuf)} + function seq_from_file$1(buf,fname,lnum,file) {var ic=caml_call1(Stdlib[79],file); function fin(param){return caml_call1(Stdlib[93],ic)} var fname$0=fname || [0,file], lexbuf=caml_call2(from_channel$3,0,ic), v=init_lexer(buf,fname$0,lnum,0); - return stream_from_lexbuf$1(v,[0,fin],lexbuf)} - function linestream_from_channel$1(buf,opt,fname,_dJ_,ic) + return seq_from_lexbuf$1(v,[0,fin],lexbuf)} + function lineseq_from_channel$1(buf,opt,fname,_ev_,ic) {if(opt)var sth=opt[1],fin=sth;else var fin=function(param){return 0}; - if(_dJ_)var sth$0=_dJ_[1],lnum0=sth$0;else var lnum0=1; - var buf$0=buf || [0,caml_call3(Bi_outbuf[3],0,0,256)]; - function f(i) + if(_ev_)var sth$0=_ev_[1],lnum0=sth$0;else var lnum0=1; + var buf$0=buf || [0,caml_call1(Stdlib_Buffer[1],256)]; + function f(lnum,param) {try {var line=caml_call1(Stdlib[83],ic), - lnum=lnum0 + i | 0, - _dK_=[0,[0,826371656,from_string$4(buf$0,fname,[0,lnum],line)]]; - return _dK_} + _ey_=lnum + 1 | 0, + _ez_=function(_eC_){return f(_ey_,_eC_)}, + _eA_= + [0,[0,826371656,from_string$4(buf$0,fname,[0,lnum],line)],_ez_]; + return _eA_} catch(e) {e = caml_wrap_exception(e); - return e === Stdlib[12]?(caml_call1(fin,0),0):[0,[0,3458171,e]]}} - return caml_call1(Stdlib_Stream[3],f)} - function linestream_from_file$1(buf,fname,lnum,file) + if(e === Stdlib[12]){caml_call1(fin,0);return 0} + var _ex_=lnum + 1 | 0; + return [0,[0,3458171,e],function(_eB_){return f(_ex_,_eB_)}]}} + return function(_ew_){return f(lnum0,_ew_)}} + function lineseq_from_file$1(buf,fname,lnum,file) {var ic=caml_call1(Stdlib[79],file); function fin(param){return caml_call1(Stdlib[93],ic)} var fname$0=fname || [0,file]; - return linestream_from_channel$1(buf,[0,fin],fname$0,lnum,ic)} + return lineseq_from_channel$1(buf,[0,fin],fname$0,lnum,ic)} function prettify$1(std,s) {return pretty_to_string$2(std,from_string$4(0,0,0,s))} function compact$1(std,s) - {return to_string$5(0,0,0,from_string$4(0,0,0,s))} - function validate_json$1(path,value){return 0} + {return to_string$4(0,0,0,0,from_string$4(0,0,0,s))} var Yojson= [0, @@ -44054,15 +42612,15 @@ End_of_tuple, End_of_input, [0, - to_string$1, - to_channel$1, + to_string$0, + to_channel$0, to_output$0, to_file$0, - to_outbuf$0, - stream_to_string$0, - stream_to_channel$0, - stream_to_file$0, - stream_to_outbuf$0, + to_buffer$0, + seq_to_string$0, + seq_to_channel$0, + seq_to_file$0, + seq_to_buffer$0, write_t$0, sort$0, write_null$0, @@ -44070,8 +42628,6 @@ write_int$0, write_float$0, write_std_float$0, - write_float_fast$0, - write_std_float_fast$0, write_float_prec$0, write_std_float_prec$0, write_string$0, @@ -44079,10 +42635,9 @@ write_list$0, write_t$0, write_std_json$0, - pp$0, + pp$2, show$0, equal$0, - pretty_format$0, pretty_print$0, pretty_to_string$0, pretty_to_channel$0, @@ -44094,12 +42649,12 @@ from_file, init_lexer, from_lexbuf, - stream_from_string, - stream_from_channel, - stream_from_file, - stream_from_lexbuf, - linestream_from_channel, - linestream_from_file, + seq_from_string, + seq_from_channel, + seq_from_file, + seq_from_lexbuf, + lineseq_from_channel, + lineseq_from_file, read_json, finish_string$1, read_string, @@ -44152,11 +42707,9 @@ read_json, skip_json, buffer_json, - validate_json, [0, Type_error, Undefined, - symbol, keys, values, combine, @@ -44174,7 +42727,7 @@ to_int, to_int_option, to_list, - to_string$2, + to_string$1, to_string_option, convert_each, filter_map, @@ -44189,19 +42742,19 @@ filter_number, filter_string]], [0, - pp$1, + pp$4, show$1, equal$1, to_basic, - to_string$3, - to_channel$2, + to_string$2, + to_channel$1, to_output$1, to_file$1, - to_outbuf$1, - stream_to_string$1, - stream_to_channel$1, - stream_to_file$1, - stream_to_outbuf$1, + to_buffer$1, + seq_to_string$1, + seq_to_channel$1, + seq_to_file$1, + seq_to_buffer$1, write_t$1, sort$1, write_null$1, @@ -44209,8 +42762,6 @@ write_int$1, write_float$1, write_std_float$1, - write_float_fast$1, - write_std_float_fast$1, write_float_prec$1, write_std_float_prec$1, write_string$1, @@ -44223,7 +42774,6 @@ write_std_variant$0, write_t$1, write_std_json$1, - pretty_format$1, pretty_print$1, pretty_to_string$1, pretty_to_channel$1, @@ -44235,12 +42785,12 @@ from_file$0, init_lexer, from_lexbuf$0, - stream_from_string$0, - stream_from_channel$0, - stream_from_file$0, - stream_from_lexbuf$0, - linestream_from_channel$0, - linestream_from_file$0, + seq_from_string$0, + seq_from_channel$0, + seq_from_file$0, + seq_from_lexbuf$0, + lineseq_from_channel$0, + lineseq_from_file$0, read_json$0, finish_string$3, read_string$0, @@ -44293,11 +42843,9 @@ read_json$0, skip_json$0, buffer_json$0, - validate_json$0, [0, Type_error$0, Undefined$0, - symbol$0, keys$0, values$0, combine$0, @@ -44315,7 +42863,7 @@ to_int$0, to_int_option$0, to_list$0, - to_string$4, + to_string$3, to_string_option$0, convert_each$0, filter_map$0, @@ -44330,18 +42878,18 @@ filter_number$0, filter_string$0]], [0, - pp$2, + pp$6, show$2, equal$2, - to_string$5, - to_channel$3, + to_string$4, + to_channel$2, to_output$2, to_file$2, - to_outbuf$2, - stream_to_string$2, - stream_to_channel$2, - stream_to_file$2, - stream_to_outbuf$2, + to_buffer$2, + seq_to_string$2, + seq_to_channel$2, + seq_to_file$2, + seq_to_buffer$2, write_t$2, sort$2, write_null$2, @@ -44357,7 +42905,6 @@ write_std_variant$1, write_t$2, write_std_json$2, - pretty_format$2, pretty_print$2, pretty_to_string$2, pretty_to_channel$2, @@ -44369,12 +42916,12 @@ from_file$1, init_lexer, from_lexbuf$1, - stream_from_string$1, - stream_from_channel$1, - stream_from_file$1, - stream_from_lexbuf$1, - linestream_from_channel$1, - linestream_from_file$1, + seq_from_string$1, + seq_from_channel$1, + seq_from_file$1, + seq_from_lexbuf$1, + lineseq_from_channel$1, + lineseq_from_file$1, read_json$1, finish_string$5, read_string$1, @@ -44426,8 +42973,7 @@ read_colon$1, read_json$1, skip_json$1, - buffer_json$1, - validate_json$1], + buffer_json$1], pp, show, equal, @@ -44435,11 +42981,11 @@ to_channel, to_output, to_file, - to_outbuf, - stream_to_string, - stream_to_channel, - stream_to_file, - stream_to_outbuf, + to_buffer, + seq_to_string, + seq_to_channel, + seq_to_file, + seq_to_buffer, write_t, sort, write_null, @@ -44447,8 +42993,6 @@ write_int, write_float, write_std_float, - write_float_fast, - write_std_float_fast, write_float_prec, write_std_float_prec, write_string, @@ -44463,16 +43007,15 @@ write_std_variant, write_t, write_std_json, - pretty_format, pretty_print, pretty_to_string, pretty_to_channel]; - caml_register_global(1035,Yojson,"Yojson"); + runtime.caml_register_global(1068,Yojson,"Yojson"); return} (globalThis)); -//# 1 "../../.js/ppx_yojson_conv_lib/ppx_yojson_conv_lib.cma.js" +//# 1 "../../.js/default/ppx_yojson_conv_lib/ppx_yojson_conv_lib.cma.js" (function(globalThis) {"use strict"; var @@ -45079,7 +43622,7 @@ (globalThis)); -//# 1 "../../runtimes/ocaml/.runtime_ocaml.objs/runtime_ocaml.cma.js" +//# 1 "../../runtimes/ocaml/.runtime_ocaml.objs/jsoo/default/runtime_ocaml.cma.js" (function(globalThis) {"use strict"; var @@ -45818,6 +44361,32 @@ (Ppx_yojson_conv_lib_Yojson_con[45][14], Ppx_yojson_conv_lib_Yojson_con[45][3], v)} + function yojson_of_event(param) + {switch(param[0]) + {case 0: + var v0=param[1],v0$0=yojson_of_var_def(v0); + return [0,848054398,[0,_u_,[0,v0$0,0]]]; + case 1: + var v0$1=param[1],v0$2=yojson_of_fun_call(v0$1); + return [0,848054398,[0,_v_,[0,v0$2,0]]]; + default: + var + v_body=param[3], + v_inputs=param[2], + v_name=param[1], + arg= + caml_call2 + (Ppx_yojson_conv_lib_Yojson_con[45][14],yojson_of_event,v_body), + bnds=[0,[0,cst_body,arg],0], + arg$0= + caml_call2 + (Ppx_yojson_conv_lib_Yojson_con[45][14], + yojson_of_var_def, + v_inputs), + bnds$0=[0,[0,cst_inputs,arg$0],bnds], + arg$1=yojson_of_information(v_name), + bnds$1=[0,[0,cst_name,arg$1],bnds$0]; + return [0,848054398,[0,_w_,[0,[0,963043957,bnds$1],0]]]}} function yojson_of_var_def(param) {var v_fun_calls=param[5], @@ -45863,32 +44432,6 @@ arg$2=yojson_of_information(v_fun_name), bnds$2=[0,[0,cst_fun_name,arg$2],bnds$1]; return [0,963043957,bnds$2]} - function yojson_of_event(param) - {switch(param[0]) - {case 0: - var v0=param[1],v0$0=yojson_of_var_def(v0); - return [0,848054398,[0,_u_,[0,v0$0,0]]]; - case 1: - var v0$1=param[1],v0$2=yojson_of_fun_call(v0$1); - return [0,848054398,[0,_v_,[0,v0$2,0]]]; - default: - var - v_body=param[3], - v_inputs=param[2], - v_name=param[1], - arg= - caml_call2 - (Ppx_yojson_conv_lib_Yojson_con[45][14],yojson_of_event,v_body), - bnds=[0,[0,cst_body,arg],0], - arg$0= - caml_call2 - (Ppx_yojson_conv_lib_Yojson_con[45][14], - yojson_of_var_def, - v_inputs), - bnds$0=[0,[0,cst_inputs,arg$0],bnds], - arg$1=yojson_of_information(v_name), - bnds$1=[0,[0,cst_name,arg$1],bnds$0]; - return [0,848054398,[0,_w_,[0,[0,963043957,bnds$1],0]]]}} var log_ref=[0,0]; function reset_log(param){log_ref[1] = 0;return 0} function retrieve_log(param){return caml_call1(Stdlib_List[9],log_ref[1])} @@ -46092,7 +44635,7 @@ io=param[2], name$1=param[1], _bR_=yojson_of_runtime_value(value), - _bS_=caml_call4(Yojson[11][5],0,0,0,_bR_), + _bS_=caml_call5(Yojson[11][5],0,0,0,0,_bR_), switch$0=0, _bG_=io[2]; if(! io[1] && ! _bG_){var _bT_=cst_internal;switch$0 = 1} @@ -46125,67 +44668,24 @@ {return 2 === caml_call1(Stdlib_List[1],infos)?1:0} function is_var_def(name) {return 2 === caml_call1(Stdlib_List[1],name)?1:0} - function parse_fun_call(events) - {var - match= - take_while - (function(param) - {if(2 === param[0]) - {var - name=param[1], - _bE_=3 === caml_call1(Stdlib_List[1],name)?1:0; - if(_bE_) - {var _bF_=caml_call2(Stdlib_List[7],name,2); - return caml_call2(Stdlib_String[10],cst_input$0,_bF_)} - return _bE_} - return 0}, - events), - _bA_=match[2]; - if(_bA_) - {var _bB_=_bA_[1]; - if(0 === _bB_[0]) - {var rest=_bA_[2],infos=_bB_[1],inputs=match[1]; - if(is_function_call(infos)) - {var - _bC_= - function(param) - {if(2 === param[0]) - {var value=param[3],io=param[2],name=param[1]; - return [0,0,name,io,value,0]} - throw [0,Assert_failure,_ag_]}, - fun_inputs=caml_call2(Stdlib_ListLabels[19],_bC_,inputs), - body_ctx=parse_events([0,empty,0,rest]), - body_rev=caml_call1(Stdlib_List[9],body_ctx[2]), - output=caml_call1(Stdlib_List[5],body_rev), - _bD_=caml_call1(Stdlib_List[6],body_rev), - body=caml_call1(Stdlib_List[9],_bD_), - rest$0=body_ctx[3]; - if(0 === output[0]) - var var_def=output[1],output$0=var_def; - else - var - output$0= - caml_call1(Stdlib[2],cst_Missing_function_output_va); - return [0,rest$0,[0,infos,fun_inputs,body,output$0]]}}} - return caml_call1(Stdlib[2],cst_Invalid_start_of_function_)} function parse_events(ctx) {var ctx$0=ctx; a: for(;;) - {var _a1_=ctx$0[3]; - if(_a1_) - {var _a2_=_a1_[1]; - switch(_a2_[0]) + {var _a7_=ctx$0[3]; + if(_a7_) + {var _a8_=_a7_[1]; + switch(_a8_[0]) {case 0: - var rest=_a1_[2],infos=_a2_[1]; + var rest=_a7_[2],infos=_a8_[1]; if(3 === caml_call1(Stdlib_List[1],infos)) {if(infos) - {var _a3_=infos[2]; - if(_a3_) - {var _a4_=_a3_[2]; - if(_a4_ && ! _a4_[2]) + {var _a9_=infos[2]; + if(_a9_) + {var _a__=_a9_[2]; + if(_a__ && ! _a__[2]) {var - var_name=_a3_[1], + var_name=_a9_[1], body_ctx=parse_events([0,empty,_$_,rest]), match$0=caml_call2(StringMap[29],var_name,ctx$0[1]); if(match$0) @@ -46203,16 +44703,16 @@ return caml_call1(Stdlib[2],cst_unreachable_due_to_the_is_)} break; case 1: - var rest$0=_a1_[2],_a7_=caml_call1(Stdlib_List[9],ctx$0[2]); - return [0,ctx$0[1],_a7_,rest$0]; + var rest$0=_a7_[2],_bb_=caml_call1(Stdlib_List[9],ctx$0[2]); + return [0,ctx$0[1],_bb_,rest$0]; case 2: - var rest$1=_a1_[2],name=_a2_[1]; + var rest$1=_a7_[2],name=_a8_[1]; if(is_var_def(name)) {var ctx$2=[0,ctx$0[1],ctx$0[2],rest$1],ctx$0=ctx$2;continue} if(rest$1) - {var _a8_=rest$1[1]; - if(0 === _a8_[0]) - {var infos$0=_a8_[1]; + {var _bc_=rest$1[1]; + if(0 === _bc_[0]) + {var infos$0=_bc_[1]; if(is_function_call(infos$0)) {var match$1=parse_fun_call(ctx$0[3]), @@ -46223,43 +44723,43 @@ continue}}} break; default: - var _a9_=_a1_[2]; - if(_a9_) - {var _a__=_a9_[1]; - if(2 === _a__[0]) + var _bd_=_a7_[2]; + if(_bd_) + {var _be_=_bd_[1]; + if(2 === _be_[0]) {var - rest$3=_a9_[2], - value=_a__[3], - io=_a__[2], - name$0=_a__[1], - pos=_a2_[1], - _aZ_=2 === caml_call1(Stdlib_List[1],name$0)?1:0; - if(_aZ_) + rest$3=_bd_[2], + value=_be_[3], + io=_be_[2], + name$0=_be_[1], + pos=_a8_[1], + _a5_=2 === caml_call1(Stdlib_List[1],name$0)?1:0; + if(_a5_) var - _a0_=caml_call2(Stdlib_List[7],name$0,1), - _a$_=caml_call2(Stdlib_String[14],_a0_,46); + _a6_=caml_call2(Stdlib_List[7],name$0,1), + _bf_=caml_call2(Stdlib_String[14],_a6_,46); else - var _a$_=_aZ_; - if(_a$_) + var _bf_=_a5_; + if(_bf_) {if(name$0) - {var _ba_=name$0[2]; - if(_ba_ && ! _ba_[2]) + {var _bg_=name$0[2]; + if(_bg_ && ! _bg_[2]) {var - var_dot_subscope_var_name=_ba_[1], - _bb_= + var_dot_subscope_var_name=_bg_[1], + _bh_= caml_call2(Stdlib_String[16],46,var_dot_subscope_var_name), - name$1=caml_call2(Stdlib_List[7],_bb_,0), - _bd_=ctx$0[1], + name$1=caml_call2(Stdlib_List[7],_bh_,0), + _bj_=ctx$0[1], v=[0,[0,pos],name$0,io,value,0], - _bc_=ctx$0[2], - match=caml_call2(StringMap[29],name$1,_bd_); + _bi_=ctx$0[2], + match=caml_call2(StringMap[29],name$1,_bj_); if(match) var ls=match[1], - _bz_=caml_call3(StringMap[4],name$1,[0,v,ls],_bd_); + _bF_=caml_call3(StringMap[4],name$1,[0,v,ls],_bj_); else - var _bz_=caml_call3(StringMap[4],name$1,[0,v,0],_bd_); - var ctx$4=[0,_bz_,_bc_,rest$3],ctx$0=ctx$4; + var _bF_=caml_call3(StringMap[4],name$1,[0,v,0],_bj_); + var ctx$4=[0,_bF_,_bi_,rest$3],ctx$0=ctx$4; continue}} return caml_call1 (Stdlib[2],cst_unreachable_due_to_the_is_$0)} @@ -46268,19 +44768,19 @@ switch$0 = 1; else {var - _aX_=3 === caml_call1(Stdlib_List[1],name$0)?1:0, - _aY_= - _aX_ + _a3_=3 === caml_call1(Stdlib_List[1],name$0)?1:0, + _a4_= + _a3_ ?runtime.caml_string_equal (cst_output$1,caml_call2(Stdlib_List[7],name$0,2)) - :_aX_; - if(_aY_) + :_a3_; + if(_a4_) switch$0 = 1; else if(rest$3) - {var _be_=rest$3[1]; - if(0 === _be_[0]) - {var infos$1=_be_[1]; + {var _bk_=rest$3[1]; + if(0 === _bk_[0]) + {var infos$1=_bk_[1]; if(is_function_call(infos$1)) {var raw_events$0=caml_call1(Stdlib_List[6],ctx$0[3]), @@ -46291,11 +44791,11 @@ match$2= take_while (function(param){return 2 === param[0]?1:0},rest$4), - _bf_=match$2[2]; - if(_bf_) - {var _bg_=_bf_[1]; - if(0 === _bg_[0]) - {var infos$2=_bg_[1]; + _bl_=match$2[2]; + if(_bl_) + {var _bm_=_bl_[1]; + if(0 === _bm_[0]) + {var infos$2=_bm_[1]; if(is_function_call(infos$2)) {var match$3=parse_fun_call(rest$4), @@ -46307,45 +44807,45 @@ continue}}} var fun_calls$1=caml_call1(Stdlib_List[9],fun_calls); if(rest$4) - {var _bh_=rest$4[1]; - if(2 === _bh_[0]) + {var _bn_=rest$4[1]; + if(2 === _bn_[0]) var rest$6=rest$4[2], - value$0=_bh_[3], - io$0=_bh_[2], - name$2=_bh_[1], + value$0=_bn_[3], + io$0=_bn_[2], + name$2=_bn_[1], var_comp=[0,[0,[0,pos],name$2,io$0,value$0,[0,fun_calls$1]]], rest$5=rest$6; else var - _bi_= + _bo_= (nb_raw_events - caml_call1(Stdlib_List[1],rest$4) | 0) + 1 | 0, - _bj_=caml_call1(Stdlib[33],_bi_), - _bk_=caml_call2(Stdlib[28],_bj_,cst$18), - _bl_=caml_call2(Stdlib[28],cst$19,_bk_), - _bm_=raw_event_to_string(_bh_), - _bn_=caml_call2(Stdlib[28],_bm_,_bl_), - _bo_= - caml_call2(Stdlib[28],cst_expected_variable_definiti,_bn_), - _bp_=caml_call2(Stdlib_String[6],cst$20,infos$1), - _bq_=caml_call2(Stdlib[28],_bp_,_bo_), - _br_=caml_call2(Stdlib[28],cst_Invalid_function_call,_bq_), - _bs_=caml_call1(Stdlib[2],_br_), - var_comp=_bs_[2], - rest$5=_bs_[1]} + _bp_=caml_call1(Stdlib[33],_bo_), + _bq_=caml_call2(Stdlib[28],_bp_,cst$18), + _br_=caml_call2(Stdlib[28],cst$19,_bq_), + _bs_=raw_event_to_string(_bn_), + _bt_=caml_call2(Stdlib[28],_bs_,_br_), + _bu_= + caml_call2(Stdlib[28],cst_expected_variable_definiti,_bt_), + _bv_=caml_call2(Stdlib_String[6],cst$20,infos$1), + _bw_=caml_call2(Stdlib[28],_bv_,_bu_), + _bx_=caml_call2(Stdlib[28],cst_Invalid_function_call,_bw_), + _by_=caml_call1(Stdlib[2],_bx_), + var_comp=_by_[2], + rest$5=_by_[1]} else var - _bt_=caml_call2(Stdlib_String[6],cst$21,infos$1), - _bu_= - caml_call2(Stdlib[28],_bt_,cst_expected_variable_definiti$0), - _bv_=caml_call2(Stdlib[28],cst_Invalid_function_call$0,_bu_), - _bw_=caml_call1(Stdlib[2],_bv_), - var_comp=_bw_[2], - rest$5=_bw_[1]; + _bz_=caml_call2(Stdlib_String[6],cst$21,infos$1), + _bA_= + caml_call2(Stdlib[28],_bz_,cst_expected_variable_definiti$0), + _bB_=caml_call2(Stdlib[28],cst_Invalid_function_call$0,_bA_), + _bC_=caml_call1(Stdlib[2],_bB_), + var_comp=_bC_[2], + rest$5=_bC_[1]; var ctx$6=[0,ctx$0[1],[0,var_comp,ctx$0[2]],rest$5], ctx$0=ctx$6; @@ -46360,11 +44860,54 @@ ctx$0=ctx$5; continue}}}} var - _a5_=raw_event_to_string(_a2_), - _a6_=caml_call2(Stdlib[28],cst_Unexpected_event,_a5_); - return caml_call1(Stdlib[2],_a6_)} - var _bx_=ctx$0[3],_by_=caml_call1(Stdlib_List[9],ctx$0[2]); - return [0,ctx$0[1],_by_,_bx_]}} + _a$_=raw_event_to_string(_a8_), + _ba_=caml_call2(Stdlib[28],cst_Unexpected_event,_a$_); + return caml_call1(Stdlib[2],_ba_)} + var _bD_=ctx$0[3],_bE_=caml_call1(Stdlib_List[9],ctx$0[2]); + return [0,ctx$0[1],_bE_,_bD_]}} + function parse_fun_call(events) + {var + match= + take_while + (function(param) + {if(2 === param[0]) + {var + name=param[1], + _a1_=3 === caml_call1(Stdlib_List[1],name)?1:0; + if(_a1_) + {var _a2_=caml_call2(Stdlib_List[7],name,2); + return caml_call2(Stdlib_String[10],cst_input$0,_a2_)} + return _a1_} + return 0}, + events), + _aX_=match[2]; + if(_aX_) + {var _aY_=_aX_[1]; + if(0 === _aY_[0]) + {var rest=_aX_[2],infos=_aY_[1],inputs=match[1]; + if(is_function_call(infos)) + {var + _aZ_= + function(param) + {if(2 === param[0]) + {var value=param[3],io=param[2],name=param[1]; + return [0,0,name,io,value,0]} + throw [0,Assert_failure,_ag_]}, + fun_inputs=caml_call2(Stdlib_ListLabels[19],_aZ_,inputs), + body_ctx=parse_events([0,empty,0,rest]), + body_rev=caml_call1(Stdlib_List[9],body_ctx[2]), + output=caml_call1(Stdlib_List[5],body_rev), + _a0_=caml_call1(Stdlib_List[6],body_rev), + body=caml_call1(Stdlib_List[9],_a0_), + rest$0=body_ctx[3]; + if(0 === output[0]) + var var_def=output[1],output$0=var_def; + else + var + output$0= + caml_call1(Stdlib[2],cst_Missing_function_output_va); + return [0,rest$0,[0,infos,fun_inputs,body,output$0]]}}} + return caml_call1(Stdlib[2],cst_Invalid_start_of_function_)} try {var _aW_=parse_events([0,empty,_$_,raw_events]),ctx=_aW_} catch(exn) @@ -46829,23 +45372,32 @@ (globalThis)); -//# 1 "../../.js/js_of_ocaml-compiler.runtime/jsoo_runtime.cma.js" +//# 1 "../../.js/default/js_of_ocaml-compiler.runtime/jsoo_runtime.cma.js" (function(globalThis) {"use strict"; var runtime=globalThis.jsoo_runtime, caml_exn_with_js_backtrace=runtime.caml_exn_with_js_backtrace, + caml_register_global=runtime.caml_register_global, caml_string_of_jsbytes=runtime.caml_string_of_jsbytes; function caml_call2(f,a0,a1) {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])} var global_data=runtime.caml_get_global_data(), + version=caml_string_of_jsbytes("4.1.0"), + git_version=caml_string_of_jsbytes(""), cst_Jsoo_runtime_Error_Exn= caml_string_of_jsbytes("Jsoo_runtime.Error.Exn"), cst_jsError=caml_string_of_jsbytes("jsError"), Stdlib_Callback=global_data.Stdlib__Callback, + Jsoo_runtime=[0]; + caml_register_global(5,Jsoo_runtime,"Jsoo_runtime__"); + var Jsoo_runtime_Runtime_version=[0,version,git_version]; + caml_register_global + (6,Jsoo_runtime_Runtime_version,"Jsoo_runtime__Runtime_version"); + var Js=[0], - Sys=[0], + Sys=[0,version,git_version], Exn=[248,cst_Jsoo_runtime_Error_Exn,runtime.caml_fresh_oo_id(0)]; caml_call2(Stdlib_Callback[2],cst_jsError,[0,Exn,[0]]); function raise(exn){throw exn} @@ -46860,13 +45412,13 @@ Bigstring=[0], Typed_array=[0,Bigstring], Int64=[0], - Jsoo_runtime=[0,Js,Sys,Error,For_compatibility_only,Typed_array,Int64]; - runtime.caml_register_global(4,Jsoo_runtime,"Jsoo_runtime"); + Jsoo_runtime$0=[0,Js,Sys,Error,For_compatibility_only,Typed_array,Int64]; + caml_register_global(8,Jsoo_runtime$0,"Jsoo_runtime"); return} (globalThis)); -//# 1 "../../.js/js_of_ocaml/js_of_ocaml.cma.js" +//# 1 "../../.js/default/js_of_ocaml/js_of_ocaml.cma.js" (function(globalThis) {"use strict"; var @@ -47263,6 +45815,7 @@ cst_keydown=caml_string_of_jsbytes("keydown"), cst_keyup=caml_string_of_jsbytes("keyup"), cst_mousewheel=caml_string_of_jsbytes("mousewheel"), + cst_wheel=caml_string_of_jsbytes("wheel"), cst_DOMMouseScroll=caml_string_of_jsbytes("DOMMouseScroll"), cst_touchstart=caml_string_of_jsbytes("touchstart"), cst_touchmove=caml_string_of_jsbytes("touchmove"), @@ -47306,6 +45859,10 @@ cst_animationend=caml_string_of_jsbytes("animationend"), cst_animationiteration=caml_string_of_jsbytes("animationiteration"), cst_animationcancel=caml_string_of_jsbytes("animationcancel"), + cst_transitionrun=caml_string_of_jsbytes("transitionrun"), + cst_transitionstart=caml_string_of_jsbytes("transitionstart"), + cst_transitionend=caml_string_of_jsbytes("transitionend"), + cst_transitioncancel=caml_string_of_jsbytes("transitioncancel"), cst_canplay=caml_string_of_jsbytes("canplay"), cst_canplaythrough=caml_string_of_jsbytes("canplaythrough"), cst_durationchange=caml_string_of_jsbytes("durationchange"), @@ -47422,7 +45979,7 @@ cst_Ff_Ii_Ll_Ee= caml_string_of_jsbytes ("^([Ff][Ii][Ll][Ee])://([^\\?#]*)(\\?([^#]*))?(#(.*))?$"), - s=caml_string_of_jsbytes("4.0.0"), + s=caml_string_of_jsbytes("4.1.0"), git_version=caml_string_of_jsbytes(""), cst$38=caml_string_of_jsbytes(""), cst$41=caml_string_of_jsbytes("+"), @@ -47936,32 +46493,31 @@ Stdlib_List=global_data.Stdlib__List, Stdlib_Array=global_data.Stdlib__Array, Stdlib_Uchar=global_data.Stdlib__Uchar, - Stdlib_Printf=global_data.Stdlib__Printf, - Stdlib_Obj=global_data.Stdlib__Obj, - Js_of_ocaml=[0]; - caml_register_global(1635,Js_of_ocaml,"Js_of_ocaml__"); + Stdlib_Printf=global_data.Stdlib__Printf; + global_data.CamlinternalOO; + var Stdlib_Obj=global_data.Stdlib__Obj,Js_of_ocaml=[0]; + caml_register_global(1653,Js_of_ocaml,"Js_of_ocaml__"); var Poly=[0], _g_=[0,caml_string_of_jsbytes("lib/js_of_ocaml/dom.ml"),351,67], _h_=[0,caml_string_of_jsbytes("transparent")], _i_=[0,caml_string_of_jsbytes("native")], - _m_=[0,caml_string_of_jsbytes("lib/js_of_ocaml/dom_html.ml"),2850,58], - _l_=[0,caml_string_of_jsbytes("lib/js_of_ocaml/dom_html.ml"),2849,61], + _m_=[0,caml_string_of_jsbytes("lib/js_of_ocaml/dom_html.ml"),2894,58], + _l_=[0,caml_string_of_jsbytes("lib/js_of_ocaml/dom_html.ml"),2893,61], _k_= [0, [11, caml_string_of_jsbytes("getElementById_exn: "), [3,0,[11,caml_string_of_jsbytes(" not found"),0]]], caml_string_of_jsbytes("getElementById_exn: %S not found")], - _o_=[0,caml_string_of_jsbytes("lib/js_of_ocaml/form.ml"),178,13], - _n_=[0,1], - _p_=[0,caml_string_of_jsbytes("lib/js_of_ocaml/regexp.ml"),34,64], - _q_=[0,caml_string_of_jsbytes(""),0], - _ck_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], + _p_=[0,caml_string_of_jsbytes("lib/js_of_ocaml/form.ml"),178,13], + _o_=[0,1], + _q_=[0,caml_string_of_jsbytes("lib/js_of_ocaml/regexp.ml"),34,64], + _r_=[0,caml_string_of_jsbytes(""),0], _cl_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], _cm_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], _cn_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], - _b8_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], + _co_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], _b9_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], _b__=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], _b$_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], @@ -47975,7 +46531,8 @@ _ch_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], _ci_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], _cj_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], - _b7_= + _ck_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")], + _b8_= caml_list_of_js_array ([caml_string_of_jsbytes("aliceblue"), caml_string_of_jsbytes("antiquewhite"), @@ -48124,17 +46681,17 @@ caml_string_of_jsbytes("whitesmoke"), caml_string_of_jsbytes("yellow"), caml_string_of_jsbytes("yellowgreen")]), - _b6_= + _b7_= [0, [12,35,[4,8,[0,2,2],0,[4,8,[0,2,2],0,[4,8,[0,2,2],0,0]]]], caml_string_of_jsbytes("#%02X%02X%02X")], - _b0_= + _b1_= [0, [11, caml_string_of_jsbytes("rgb("), [4,0,0,0,[12,44,[4,0,0,0,[12,44,[4,0,0,0,[12,41,0]]]]]]], caml_string_of_jsbytes("rgb(%d,%d,%d)")], - _b1_= + _b2_= [0, [11, caml_string_of_jsbytes("rgb("), @@ -48144,7 +46701,7 @@ 0, [12,37,[12,44,[4,0,0,0,[12,37,[12,44,[4,0,0,0,[12,37,[12,41,0]]]]]]]]]], caml_string_of_jsbytes("rgb(%d%%,%d%%,%d%%)")], - _b2_= + _b3_= [0, [11, caml_string_of_jsbytes("rgba("), @@ -48154,7 +46711,7 @@ 0, [12,44,[4,0,0,0,[12,44,[4,0,0,0,[12,44,[8,[0,0,0],0,0,[12,41,0]]]]]]]]], caml_string_of_jsbytes("rgba(%d,%d,%d,%f)")], - _b3_= + _b4_= [0, [11, caml_string_of_jsbytes("rgba("), @@ -48166,7 +46723,7 @@ 37, [12,44,[4,0,0,0,[12,37,[12,44,[4,0,0,0,[12,37,[12,44,partial]]]]]]]]]], caml_string_of_jsbytes("rgba(%d%%,%d%%,%d%%,%f)")], - _b4_= + _b5_= [0, [11, caml_string_of_jsbytes("hsl("), @@ -48176,7 +46733,7 @@ 0, [12,44,[4,0,0,0,[12,37,[12,44,[4,0,0,0,[12,37,[12,41,0]]]]]]]]], caml_string_of_jsbytes("hsl(%d,%d%%,%d%%)")], - _b5_= + _b6_= [0, [11, caml_string_of_jsbytes("hsla("), @@ -48194,153 +46751,153 @@ 37, [12,44,[4,0,0,0,[12,37,[12,44,[8,partial$1,0,0,partial$0]]]]]]]]]], caml_string_of_jsbytes("hsla(%d,%d%%,%d%%,%f)")], - _x_=[0,240,248,255], - _y_=[0,250,235,215], - _z_=[0,0,255,255], - _A_=[0,127,255,212], - _B_=[0,240,255,255], - _C_=[0,245,245,220], - _D_=[0,255,228,196], - _E_=[0,0,0,0], - _F_=[0,255,235,205], - _G_=[0,0,0,255], - _H_=[0,138,43,226], - _I_=[0,165,42,42], - _J_=[0,222,184,135], - _K_=[0,95,158,160], - _L_=[0,127,255,0], - _M_=[0,210,105,30], - _N_=[0,255,127,80], - _O_=[0,100,149,237], - _P_=[0,255,248,220], - _Q_=[0,220,20,60], - _R_=[0,0,255,255], - _S_=[0,0,0,139], - _T_=[0,0,139,139], - _U_=[0,184,134,11], - _V_=[0,169,169,169], - _W_=[0,0,100,0], - _X_=[0,169,169,169], - _Y_=[0,189,183,107], - _Z_=[0,139,0,139], - ___=[0,85,107,47], - _$_=[0,255,140,0], - _aa_=[0,153,50,204], - _ab_=[0,139,0,0], - _ac_=[0,233,150,122], - _ad_=[0,143,188,143], - _ae_=[0,72,61,139], - _af_=[0,47,79,79], + _y_=[0,240,248,255], + _z_=[0,250,235,215], + _A_=[0,0,255,255], + _B_=[0,127,255,212], + _C_=[0,240,255,255], + _D_=[0,245,245,220], + _E_=[0,255,228,196], + _F_=[0,0,0,0], + _G_=[0,255,235,205], + _H_=[0,0,0,255], + _I_=[0,138,43,226], + _J_=[0,165,42,42], + _K_=[0,222,184,135], + _L_=[0,95,158,160], + _M_=[0,127,255,0], + _N_=[0,210,105,30], + _O_=[0,255,127,80], + _P_=[0,100,149,237], + _Q_=[0,255,248,220], + _R_=[0,220,20,60], + _S_=[0,0,255,255], + _T_=[0,0,0,139], + _U_=[0,0,139,139], + _V_=[0,184,134,11], + _W_=[0,169,169,169], + _X_=[0,0,100,0], + _Y_=[0,169,169,169], + _Z_=[0,189,183,107], + ___=[0,139,0,139], + _$_=[0,85,107,47], + _aa_=[0,255,140,0], + _ab_=[0,153,50,204], + _ac_=[0,139,0,0], + _ad_=[0,233,150,122], + _ae_=[0,143,188,143], + _af_=[0,72,61,139], _ag_=[0,47,79,79], - _ah_=[0,0,206,209], - _ai_=[0,148,0,211], - _aj_=[0,255,20,147], - _ak_=[0,0,191,255], - _al_=[0,105,105,105], + _ah_=[0,47,79,79], + _ai_=[0,0,206,209], + _aj_=[0,148,0,211], + _ak_=[0,255,20,147], + _al_=[0,0,191,255], _am_=[0,105,105,105], - _an_=[0,30,144,255], - _ao_=[0,178,34,34], - _ap_=[0,255,250,240], - _aq_=[0,34,139,34], - _ar_=[0,255,0,255], - _as_=[0,220,220,220], - _at_=[0,248,248,255], - _au_=[0,255,215,0], - _av_=[0,218,165,32], - _aw_=[0,128,128,128], + _an_=[0,105,105,105], + _ao_=[0,30,144,255], + _ap_=[0,178,34,34], + _aq_=[0,255,250,240], + _ar_=[0,34,139,34], + _as_=[0,255,0,255], + _at_=[0,220,220,220], + _au_=[0,248,248,255], + _av_=[0,255,215,0], + _aw_=[0,218,165,32], _ax_=[0,128,128,128], - _ay_=[0,0,128,0], - _az_=[0,173,255,47], - _aA_=[0,240,255,240], - _aB_=[0,255,105,180], - _aC_=[0,205,92,92], - _aD_=[0,75,0,130], - _aE_=[0,255,255,240], - _aF_=[0,240,230,140], - _aG_=[0,230,230,250], - _aH_=[0,255,240,245], - _aI_=[0,124,252,0], - _aJ_=[0,255,250,205], - _aK_=[0,173,216,230], - _aL_=[0,240,128,128], - _aM_=[0,224,255,255], - _aN_=[0,250,250,210], - _aO_=[0,211,211,211], - _aP_=[0,144,238,144], - _aQ_=[0,211,211,211], - _aR_=[0,255,182,193], - _aS_=[0,255,160,122], - _aT_=[0,32,178,170], - _aU_=[0,135,206,250], - _aV_=[0,119,136,153], + _ay_=[0,128,128,128], + _az_=[0,0,128,0], + _aA_=[0,173,255,47], + _aB_=[0,240,255,240], + _aC_=[0,255,105,180], + _aD_=[0,205,92,92], + _aE_=[0,75,0,130], + _aF_=[0,255,255,240], + _aG_=[0,240,230,140], + _aH_=[0,230,230,250], + _aI_=[0,255,240,245], + _aJ_=[0,124,252,0], + _aK_=[0,255,250,205], + _aL_=[0,173,216,230], + _aM_=[0,240,128,128], + _aN_=[0,224,255,255], + _aO_=[0,250,250,210], + _aP_=[0,211,211,211], + _aQ_=[0,144,238,144], + _aR_=[0,211,211,211], + _aS_=[0,255,182,193], + _aT_=[0,255,160,122], + _aU_=[0,32,178,170], + _aV_=[0,135,206,250], _aW_=[0,119,136,153], - _aX_=[0,176,196,222], - _aY_=[0,255,255,224], - _aZ_=[0,0,255,0], - _a0_=[0,50,205,50], - _a1_=[0,250,240,230], - _a2_=[0,255,0,255], - _a3_=[0,128,0,0], - _a4_=[0,102,205,170], - _a5_=[0,0,0,205], - _a6_=[0,186,85,211], - _a7_=[0,147,112,219], - _a8_=[0,60,179,113], - _a9_=[0,123,104,238], - _a__=[0,0,250,154], - _a$_=[0,72,209,204], - _ba_=[0,199,21,133], - _bb_=[0,25,25,112], - _bc_=[0,245,255,250], - _bd_=[0,255,228,225], - _be_=[0,255,228,181], - _bf_=[0,255,222,173], - _bg_=[0,0,0,128], - _bh_=[0,253,245,230], - _bi_=[0,128,128,0], - _bj_=[0,107,142,35], - _bk_=[0,255,165,0], - _bl_=[0,255,69,0], - _bm_=[0,218,112,214], - _bn_=[0,238,232,170], - _bo_=[0,152,251,152], - _bp_=[0,175,238,238], - _bq_=[0,219,112,147], - _br_=[0,255,239,213], - _bs_=[0,255,218,185], - _bt_=[0,205,133,63], - _bu_=[0,255,192,203], - _bv_=[0,221,160,221], - _bw_=[0,176,224,230], - _bx_=[0,128,0,128], - _by_=[0,255,0,0], - _bz_=[0,188,143,143], - _bA_=[0,65,105,225], - _bB_=[0,139,69,19], - _bC_=[0,250,128,114], - _bD_=[0,244,164,96], - _bE_=[0,46,139,87], - _bF_=[0,255,245,238], - _bG_=[0,160,82,45], - _bH_=[0,192,192,192], - _bI_=[0,135,206,235], - _bJ_=[0,106,90,205], - _bK_=[0,112,128,144], + _aX_=[0,119,136,153], + _aY_=[0,176,196,222], + _aZ_=[0,255,255,224], + _a0_=[0,0,255,0], + _a1_=[0,50,205,50], + _a2_=[0,250,240,230], + _a3_=[0,255,0,255], + _a4_=[0,128,0,0], + _a5_=[0,102,205,170], + _a6_=[0,0,0,205], + _a7_=[0,186,85,211], + _a8_=[0,147,112,219], + _a9_=[0,60,179,113], + _a__=[0,123,104,238], + _a$_=[0,0,250,154], + _ba_=[0,72,209,204], + _bb_=[0,199,21,133], + _bc_=[0,25,25,112], + _bd_=[0,245,255,250], + _be_=[0,255,228,225], + _bf_=[0,255,228,181], + _bg_=[0,255,222,173], + _bh_=[0,0,0,128], + _bi_=[0,253,245,230], + _bj_=[0,128,128,0], + _bk_=[0,107,142,35], + _bl_=[0,255,165,0], + _bm_=[0,255,69,0], + _bn_=[0,218,112,214], + _bo_=[0,238,232,170], + _bp_=[0,152,251,152], + _bq_=[0,175,238,238], + _br_=[0,219,112,147], + _bs_=[0,255,239,213], + _bt_=[0,255,218,185], + _bu_=[0,205,133,63], + _bv_=[0,255,192,203], + _bw_=[0,221,160,221], + _bx_=[0,176,224,230], + _by_=[0,128,0,128], + _bz_=[0,255,0,0], + _bA_=[0,188,143,143], + _bB_=[0,65,105,225], + _bC_=[0,139,69,19], + _bD_=[0,250,128,114], + _bE_=[0,244,164,96], + _bF_=[0,46,139,87], + _bG_=[0,255,245,238], + _bH_=[0,160,82,45], + _bI_=[0,192,192,192], + _bJ_=[0,135,206,235], + _bK_=[0,106,90,205], _bL_=[0,112,128,144], - _bM_=[0,255,250,250], - _bN_=[0,0,255,127], - _bO_=[0,70,130,180], - _bP_=[0,210,180,140], - _bQ_=[0,0,128,128], - _bR_=[0,216,191,216], - _bS_=[0,255,99,71], - _bT_=[0,64,224,208], - _bU_=[0,238,130,238], - _bV_=[0,245,222,179], - _bW_=[0,255,255,255], - _bX_=[0,245,245,245], - _bY_=[0,255,255,0], - _bZ_=[0,154,205,50]; + _bM_=[0,112,128,144], + _bN_=[0,255,250,250], + _bO_=[0,0,255,127], + _bP_=[0,70,130,180], + _bQ_=[0,210,180,140], + _bR_=[0,0,128,128], + _bS_=[0,216,191,216], + _bT_=[0,255,99,71], + _bU_=[0,64,224,208], + _bV_=[0,238,130,238], + _bW_=[0,245,222,179], + _bX_=[0,255,255,255], + _bY_=[0,245,245,245], + _bZ_=[0,255,255,0], + _b0_=[0,154,205,50]; function symbol(x,y){return x < y?1:0} function symbol$0(x,y){return x <= y?1:0} function symbol$1(x,y){return x !== y?1:0} @@ -48548,21 +47105,21 @@ equal$2, max$0, min$0]; - caml_register_global(1638,Js_of_ocaml_Import,"Js_of_ocaml__Import"); + caml_register_global(1656,Js_of_ocaml_Import,"Js_of_ocaml__Import"); var global=globalThis,Unsafe=[0,global],no_handler=null,t39=undefined; - function return$0(_gO_){return _gO_} + function return$0(_g2_){return _g2_} function map$0(x,f){return x == no_handler?no_handler:caml_call1(f,x)} function bind(x,f){return x == no_handler?no_handler:caml_call1(f,x)} function test(x){return 1 - (x == no_handler?1:0)} function iter$0(x,f) - {var _gN_=1 - (x == no_handler?1:0);return _gN_?caml_call1(f,x):_gN_} + {var _g1_=1 - (x == no_handler?1:0);return _g1_?caml_call1(f,x):_g1_} function case$0(x,f,g) {return x == no_handler?caml_call1(f,0):caml_call1(g,x)} function get(x,f){return x == no_handler?caml_call1(f,0):x} function option(x){if(x){var x$0=x[1];return x$0}return no_handler} function to_option(x) - {function _gM_(x){return [0,x]} - return case$0(x,function(param){return 0},_gM_)} + {function _g0_(x){return [0,x]} + return case$0(x,function(param){return 0},_g0_)} var Opt= [0, @@ -48576,18 +47133,18 @@ get, option, to_option]; - function return$1(_gL_){return _gL_} + function return$1(_gZ_){return _gZ_} function map$1(x,f){return x === t39?t39:caml_call1(f,x)} function bind$0(x,f){return x === t39?t39:caml_call1(f,x)} function test$0(x){return x !== t39?1:0} function iter$1(x,f) - {var _gK_=x !== t39?1:0;return _gK_?caml_call1(f,x):_gK_} + {var _gY_=x !== t39?1:0;return _gY_?caml_call1(f,x):_gY_} function case$1(x,f,g){return x === t39?caml_call1(f,0):caml_call1(g,x)} function get$0(x,f){return x === t39?caml_call1(f,0):x} function option$0(x){if(x){var x$0=x[1];return x$0}return t39} function to_option$0(x) - {function _gJ_(x){return [0,x]} - return case$1(x,function(param){return 0},_gJ_)} + {function _gX_(x){return [0,x]} + return case$1(x,function(param){return 0},_gX_)} var Optdef= [0, @@ -48602,16 +47159,20 @@ option$0, to_option$0]; function coerce(x,f,g) - {function _gH_(param){return caml_call1(g,x)} - var _gI_=caml_call1(f,x); - return caml_call2(Opt[8],_gI_,_gH_)} + {function _gV_(param){return caml_call1(g,x)} + var _gW_=caml_call1(f,x); + return caml_call2(Opt[8],_gW_,_gV_)} function coerce_opt(x,f,g) - {function _gF_(param){return caml_call1(g,x)} - var _gG_=caml_call2(Opt[4],x,f); - return caml_call2(Opt[8],_gG_,_gF_)} + {function _gT_(param){return caml_call1(g,x)} + var _gU_=caml_call2(Opt[4],x,f); + return caml_call2(Opt[8],_gU_,_gT_)} var - t25=true, + t38=true, t4=false, + nfc="NFC", + nfd="NFD", + nfkc="NFKC", + nfkd="NFKD", string_constr=Unsafe[1].String, t11=Unsafe[1].RegExp, t4$0=Unsafe[1].Object; @@ -48628,10 +47189,10 @@ {return a.map (caml_js_wrap_callback (function(x,idx,param){return caml_call2(f,idx,x)}))} - function str_array(_gE_){return _gE_} - function match_result(_gD_){return _gD_} + function str_array(_gS_){return _gS_} + function match_result(_gR_){return _gR_} var - t122=Unsafe[1].Date, + t116=Unsafe[1].Date, math=Unsafe[1].Math, error_constr=Unsafe[1].Error, include=Jsoo_runtime[3], @@ -48642,8 +47203,8 @@ function name(e){return caml_string_of_jsstring(e.name)} function message(e){return caml_string_of_jsstring(e.message)} function stack(e) - {var _gC_=caml_call2(Opt[3],e.stack,caml_string_of_jsstring); - return caml_call1(Opt[10],_gC_)} + {var _gQ_=caml_call2(Opt[3],e.stack,caml_string_of_jsstring); + return caml_call1(Opt[10],_gQ_)} function to_string(e){return caml_string_of_jsstring(e.toString())} function raise_js_error(e){return caml_call1(raise,e)} function string_of_error(e){return to_string(e)} @@ -48677,10 +47238,10 @@ t27=object_keys(obj), t26= caml_js_wrap_callback - (function(key,param,_gB_){return export_js(key,obj[key])}); + (function(key,param,_gP_){return export_js(key,obj[key])}); return t27.forEach(t26)} var _c_=runtime.caml_js_error_of_exception; - function _d_(_gA_){return _gA_} + function _d_(_gO_){return _gO_} var _e_= [0, @@ -48692,20 +47253,24 @@ attach_js_backtrace, of_exn, Error, - function(_gz_){return _gz_}, + function(_gN_){return _gN_}, _d_]; - function _f_(_gy_){return _gy_} + function _f_(_gM_){return _gM_} var Js_of_ocaml_Js= [0, no_handler, - function(_gx_){return _gx_}, + function(_gL_){return _gL_}, t39, _f_, Opt, Optdef, - t25, + t38, t4, + nfd, + nfc, + nfkd, + nfkc, string_constr, t11, t11, @@ -48719,15 +47284,15 @@ array_mapi, str_array, match_result, - t122, - t122, - t122, - t122, - t122, - t122, - t122, - t122, - t122, + t116, + t116, + t116, + t116, + t116, + t116, + t116, + t116, + t116, math, error_constr, _e_, @@ -48751,12 +47316,12 @@ attach_js_backtrace, _c_, Error]; - caml_register_global(1642,Js_of_ocaml_Js,"Js_of_ocaml__Js"); + caml_register_global(1660,Js_of_ocaml_Js,"Js_of_ocaml__Js"); function list_of_nodeList(nodeList) {var length=nodeList.length,acc=0,i=0; for(;;) {if(caml_call2(symbol$5,i,length)) - {var _gw_=nodeList.item(i),match=caml_call1(Opt[10],_gw_); + {var _gK_=nodeList.item(i),match=caml_call1(Opt[10],_gK_); if(match) {var e=match[1],i$0=i + 1 | 0,acc$0=[0,e,acc],acc=acc$0,i=i$0; continue} @@ -48820,14 +47385,14 @@ return t20})} function invoke_handler(f,this$0,event){return f.call(this$0,event)} function eventTarget(e) - {function _gt_(param) - {function _gv_(param){throw Stdlib[8]} - return caml_call2(Opt[8],e.srcElement,_gv_)} - var t27=caml_call2(Opt[8],e.target,_gt_); + {function _gH_(param) + {function _gJ_(param){throw Stdlib[8]} + return caml_call2(Opt[8],e.srcElement,_gJ_)} + var t27=caml_call2(Opt[8],e.target,_gH_); if(t27 instanceof Unsafe[1].Node) {if(3 === t27.nodeType) - {var _gu_=function(param){throw [0,Assert_failure,_g_]}; - return caml_call2(Opt[8],t27.parentNode,_gu_)} + {var _gI_=function(param){throw [0,Assert_failure,_g_]}; + return caml_call2(Opt[8],t27.parentNode,_gI_)} return t27} return t27} function make$0(s){return caml_jsstring_of_string(s)} @@ -48838,9 +47403,9 @@ t34="on".concat(t47), t35= function(e) - {var _gq_=[0,t48,e,[0]]; - return function(_gr_,_gs_) - {return runtime.caml_js_call(_gq_,_gr_,_gs_)}}; + {var _gE_=[0,t48,e,[0]]; + return function(_gF_,_gG_) + {return runtime.caml_js_call(_gE_,_gF_,_gG_)}}; t50.attachEvent(t34,t35); return function(param){return t50.detachEvent(t34,t35)}} var t49={}; @@ -48889,7 +47454,7 @@ removeEventListener, preventDefault, createCustomEvent]; - caml_register_global(1645,Js_of_ocaml_Dom,"Js_of_ocaml__Dom"); + caml_register_global(1663,Js_of_ocaml_Dom,"Js_of_ocaml__Dom"); var arrayBuffer=Unsafe[1].ArrayBuffer, int8Array_inBuffer=Unsafe[1].Int8Array, @@ -48965,7 +47530,7 @@ runtime.bigstring_of_typed_array], [0,of_arrayBuffer,caml_string_of_array]]; caml_register_global - (1646,Js_of_ocaml_Typed_array,"Js_of_ocaml__Typed_array"); + (1664,Js_of_ocaml_Typed_array,"Js_of_ocaml__Typed_array"); var t3=Unsafe[1].Blob; function filter_map(f,param) {var param$0=param; @@ -48977,13 +47542,13 @@ continue} return 0}} function blob_raw(contentType,endings,a) - {var _gm_=0; + {var _gA_=0; if(endings) - var _gn_=116179762 <= endings[1]?_h_:_i_,_go_=_gn_; + var _gB_=116179762 <= endings[1]?_h_:_i_,_gC_=_gB_; else - var _go_=0; + var _gC_=0; var - _gp_=[0,[0,cst_type,contentType],[0,[0,cst_endings,_go_],_gm_]], + _gD_=[0,[0,cst_type,contentType],[0,[0,cst_endings,_gC_],_gA_]], options= filter_map (function(param) @@ -48991,7 +47556,7 @@ if(v) {var v$0=v[1];return [0,[0,name,caml_jsstring_of_string(v$0)]]} return 0}, - _gp_), + _gD_), options$0= options ?runtime.caml_js_object(caml_call1(Stdlib_Array[12],options)) @@ -49001,18 +47566,18 @@ function blob_from_string(contentType,endings,s) {return blob_raw(contentType,endings,[0,caml_jsstring_of_string(s)])} function blob_from_any(contentType,endings,l) - {function _gk_(param) - {var _gl_=param[1]; - if(155580615 === _gl_){var s=param[2];return s} - if(486041214 <= _gl_) - {if(1037850489 <= _gl_){var a=param[2];return a} + {function _gy_(param) + {var _gz_=param[1]; + if(155580615 === _gz_){var s=param[2];return s} + if(486041214 <= _gz_) + {if(1037850489 <= _gz_){var a=param[2];return a} var a$0=param[2]; return a$0} - if(288368849 <= _gl_) + if(288368849 <= _gz_) {var s$0=param[2];return caml_jsstring_of_string(s$0)} var b=param[2]; return b} - var l$0=caml_call2(Stdlib_List[19],_gk_,l); + var l$0=caml_call2(Stdlib_List[19],_gy_,l); return blob_raw(contentType,endings,caml_call1(Stdlib_Array[12],l$0))} function filename(file) {var match=caml_call1(Optdef[10],file.name); @@ -49038,12 +47603,12 @@ [0, blob_from_string, blob_from_any, - [0,document,blob,function(_gj_){return _gj_},string,arrayBuffer$0], + [0,document,blob,function(_gx_){return _gx_},string,arrayBuffer$0], ReaderEvent, filename, fileReader, addEventListener]; - caml_register_global(1648,Js_of_ocaml_File,"Js_of_ocaml__File"); + caml_register_global(1666,Js_of_ocaml_File,"Js_of_ocaml__File"); var onIE=runtime.caml_js_on_ie(0) | 0, click=caml_call1(Event[1],cst_click), @@ -49060,6 +47625,7 @@ keydown=caml_call1(Event[1],cst_keydown), keyup=caml_call1(Event[1],cst_keyup), mousewheel=caml_call1(Event[1],cst_mousewheel), + wheel=caml_call1(Event[1],cst_wheel), DOMMouseScroll=caml_call1(Event[1],cst_DOMMouseScroll), touchstart=caml_call1(Event[1],cst_touchstart), touchmove=caml_call1(Event[1],cst_touchmove), @@ -49103,6 +47669,10 @@ animationend=caml_call1(Event[1],cst_animationend), animationiteration=caml_call1(Event[1],cst_animationiteration), animationcancel=caml_call1(Event[1],cst_animationcancel), + transitionrun=caml_call1(Event[1],cst_transitionrun), + transitionstart=caml_call1(Event[1],cst_transitionstart), + transitionend=caml_call1(Event[1],cst_transitionend), + transitioncancel=caml_call1(Event[1],cst_transitioncancel), canplay=caml_call1(Event[1],cst_canplay), canplaythrough=caml_call1(Event[1],cst_canplaythrough), durationchange=caml_call1(Event[1],cst_durationchange), @@ -49133,99 +47703,10 @@ volumechange=caml_call1(Event[1],cst_volumechange), waiting=caml_call1(Event[1],cst_waiting), make$1=Event[1], - Event$0= - [0, - click, - copy$0, - cut, - paste, - dblclick, - mousedown, - mouseup, - mouseover, - mousemove, - mouseout, - keypress, - keydown, - keyup, - mousewheel, - DOMMouseScroll, - touchstart, - touchmove, - touchend, - touchcancel, - dragstart, - dragend, - dragenter, - dragover, - dragleave, - drag, - drop, - hashchange, - change, - input, - timeupdate, - submit, - scroll, - focus, - blur, - load$0, - unload, - beforeunload, - resize, - orientationchange, - popstate, - error$0, - abort$0, - select, - online, - offline, - checking, - noupdate, - downloading, - progress$0, - updateready, - cached, - obsolete, - domContentLoaded, - animationstart, - animationend, - animationiteration, - animationcancel, - canplay, - canplaythrough, - durationchange, - emptied, - ended, - gotpointercapture, - loadeddata, - loadedmetadata, - loadstart$0, - lostpointercapture, - message$0, - pause, - play, - playing, - pointerenter, - pointercancel, - pointerdown, - pointerleave, - pointermove, - pointerout, - pointerover, - pointerup, - ratechange, - seeked, - seeking, - stalled, - suspend, - volumechange, - waiting, - make$1], d="2d"; function location_origin(loc) - {function _gh_(o){return o} - function _gi_(param) + {function _gv_(o){return o} + function _gw_(param) {var t8=loc.protocol,t7=loc.hostname,t9=loc.port; if (caml_call2(symbol$8,t8.length,0) @@ -49236,29 +47717,29 @@ if(caml_call2(symbol$9,t9.length,0)) {var t12=loc.port;return t13.concat(":",t12)} return t13} - return caml_call3(Optdef[7],loc.origin,_gi_,_gh_)} + return caml_call3(Optdef[7],loc.origin,_gw_,_gv_)} var _j_=Unsafe[1],t87=_j_.document; function getElementById(id) - {function _ge_(pnode){return pnode} - function _gf_(param){throw Stdlib[8]} - var t15=caml_jsstring_of_string(id),_gg_=t87.getElementById(t15); - return caml_call3(Opt[7],_gg_,_gf_,_ge_)} + {function _gs_(pnode){return pnode} + function _gt_(param){throw Stdlib[8]} + var t15=caml_jsstring_of_string(id),_gu_=t87.getElementById(t15); + return caml_call3(Opt[7],_gu_,_gt_,_gs_)} function getElementById_exn(id) - {function _ga_(pnode){return pnode} - function _gb_(param) - {var _gd_=caml_call2(Stdlib_Printf[4],_k_,id); - return caml_call1(Stdlib[2],_gd_)} - var t17=caml_jsstring_of_string(id),_gc_=t87.getElementById(t17); - return caml_call3(Opt[7],_gc_,_gb_,_ga_)} + {function _go_(pnode){return pnode} + function _gp_(param) + {var _gr_=caml_call2(Stdlib_Printf[4],_k_,id); + return caml_call1(Stdlib[2],_gr_)} + var t17=caml_jsstring_of_string(id),_gq_=t87.getElementById(t17); + return caml_call3(Opt[7],_gq_,_gp_,_go_)} function getElementById_opt(id) - {var t19=caml_jsstring_of_string(id),_f$_=t87.getElementById(t19); - return caml_call1(Opt[10],_f$_)} + {var t19=caml_jsstring_of_string(id),_gn_=t87.getElementById(t19); + return caml_call1(Opt[10],_gn_)} function getElementById_coerce(id,coerce) - {function _f7_(e) - {var _f__=caml_call1(coerce,e);return caml_call1(Opt[10],_f__)} - function _f8_(param){return 0} - var t21=caml_jsstring_of_string(id),_f9_=t87.getElementById(t21); - return caml_call3(Opt[7],_f9_,_f8_,_f7_)} + {function _gj_(e) + {var _gm_=caml_call1(coerce,e);return caml_call1(Opt[10],_gm_)} + function _gk_(param){return 0} + var t21=caml_jsstring_of_string(id),_gl_=t87.getElementById(t21); + return caml_call3(Opt[7],_gl_,_gk_,_gj_)} function opt_iter(x,f){if(x){var v=x[1];return caml_call1(f,v)}return 0} function createElement(t24,name) {var t23=caml_jsstring_of_string(name);return t24.createElement(t23)} @@ -49267,19 +47748,19 @@ function unsafeCreateElementEx(type,name,doc,elt) {for(;;) {if(0 === type && 0 === name)return createElement(doc,elt); - var _f1_=createElementSyntax[1]; - if(785140586 === _f1_) + var _gd_=createElementSyntax[1]; + if(785140586 === _gd_) {try {var el=t87.createElement(''), - _f4_=el.tagName.toLowerCase() === "input"?1:0, - _f5_=_f4_?el.name === "x"?1:0:_f4_, - _f2_=_f5_} - catch(_f6_){var _f2_=0} - var _f3_=_f2_?982028505:-1003883683; - createElementSyntax[1] = _f3_; + _gg_=el.tagName.toLowerCase() === "input"?1:0, + _gh_=_gg_?el.name === "x"?1:0:_gg_, + _ge_=_gh_} + catch(_gi_){var _ge_=0} + var _gf_=_ge_?982028505:-1003883683; + createElementSyntax[1] = _gf_; continue} - if(982028505 <= _f1_) + if(982028505 <= _gd_) {var t40=new array_length(); t40.push("<",caml_jsstring_of_string(elt)); opt_iter @@ -49400,8 +47881,8 @@ ?function(e){return e.innerHTML === t39?no_handler:e} :function(e){return e instanceof html_element?e:no_handler}; function unsafeCoerce(tag,e) - {var t56=e.tagName,_f0_=caml_jsstring_of_string(tag); - return t56.toLowerCase() === _f0_?e:no_handler} + {var t56=e.tagName,_gc_=caml_jsstring_of_string(tag); + return t56.toLowerCase() === _gc_?e:no_handler} function a(e){return unsafeCoerce(cst_a$0,e)} function area(e){return unsafeCoerce(cst_area$0,e)} function base(e){return unsafeCoerce(cst_base$0,e)} @@ -49476,27 +47957,27 @@ function messageEvent(ev) {return unsafeCoerceEvent(Unsafe[1].MessageEvent,ev)} function eventRelatedTarget(e) - {function _fX_(param) + {function _f$_(param) {var match=caml_string_of_jsstring(e.type); if(caml_string_notequal(match,cst_mouseout$0)) {if(caml_string_notequal(match,cst_mouseover$0))return no_handler; - var _fY_=function(param){throw [0,Assert_failure,_l_]}; - return caml_call2(Optdef[8],e.fromElement,_fY_)} - function _fZ_(param){throw [0,Assert_failure,_m_]} - return caml_call2(Optdef[8],e.toElement,_fZ_)} - return caml_call2(Optdef[8],e.relatedTarget,_fX_)} + var _ga_=function(param){throw [0,Assert_failure,_l_]}; + return caml_call2(Optdef[8],e.fromElement,_ga_)} + function _gb_(param){throw [0,Assert_failure,_m_]} + return caml_call2(Optdef[8],e.toElement,_gb_)} + return caml_call2(Optdef[8],e.relatedTarget,_f$_)} function eventAbsolutePosition(e) {var t70=t87.body,t71=t87.documentElement; return [0, (e.clientX + t70.scrollLeft | 0) + t71.scrollLeft | 0, (e.clientY + t70.scrollTop | 0) + t71.scrollTop | 0]} function eventAbsolutePosition$0(e) - {function _fT_(x) - {function _fV_(y){return [0,x,y]} - function _fW_(param){return eventAbsolutePosition(e)} - return caml_call3(Optdef[7],e.pageY,_fW_,_fV_)} - function _fU_(param){return eventAbsolutePosition(e)} - return caml_call3(Optdef[7],e.pageX,_fU_,_fT_)} + {function _f7_(x) + {function _f9_(y){return [0,x,y]} + function _f__(param){return eventAbsolutePosition(e)} + return caml_call3(Optdef[7],e.pageY,_f__,_f9_)} + function _f8_(param){return eventAbsolutePosition(e)} + return caml_call3(Optdef[7],e.pageX,_f8_,_f7_)} function elementClientPosition(e) {var t80=e.getBoundingClientRect(),t81=t87.body,t82=t87.documentElement; return [0, @@ -49508,43 +47989,32 @@ t88.scrollLeft + t89.scrollLeft | 0, t88.scrollTop + t89.scrollTop | 0]} function buttonPressed(ev) - {function _fR_(x){return x} - function _fS_(param) + {function _f5_(x){return x} + function _f6_(param) {var match=ev.button,switcher=match - 1 | 0; if(! (3 < switcher >>> 0)) switch(switcher) {case 0:return 1;case 1:return 3;case 2:break;default:return 2} return 0} - return caml_call3(Optdef[7],ev.which,_fS_,_fR_)} + return caml_call3(Optdef[7],ev.which,_f6_,_f5_)} function addMousewheelEventListenerWith(e,capture,once,passive,h) - {var t96=createDiv(t87); - t96.setAttribute("onmousewheel","return;"); - if(typeof t96.onmousewheel === "function") - {var - _fN_= - handler - (function(e) - {function _fP_(param){return 0} - var - dx= - (- caml_call2(Optdef[8],e.wheelDeltaX,_fP_) | 0) / 40 | 0; - function _fQ_(param){return e.wheelDelta} - var - dy= - (- caml_call2(Optdef[8],e.wheelDeltaY,_fQ_) | 0) / 40 | 0; - return caml_call3(h,e,dx,dy)}); - return addEventListenerWithOptions - (e,Event$0[14],capture,once,passive,_fN_)} - var - _fO_= - handler - (function(e) - {var d=e.detail; - return e.axis === e.HORIZONTAL - ?caml_call3(h,e,d,0) - :caml_call3(h,e,0,d)}); - return addEventListenerWithOptions - (e,Event$0[15],capture,once,passive,_fO_)} + {return addEventListenerWithOptions + (e, + wheel, + capture, + once, + passive, + handler + (function(e) + {function _f3_(param){return 0} + var + dx= + (- caml_call2(Optdef[8],e.wheelDeltaX,_f3_) | 0) / 40 | 0; + function _f4_(param){return e.wheelDelta} + var + dy= + (- caml_call2(Optdef[8],e.wheelDeltaY,_f4_) | 0) / 40 | 0; + return caml_call3(h,e,dx,dy)}))} function addMousewheelEventListener(e,h,capt) {return addMousewheelEventListenerWith(e,[0,capt],0,0,h)} function f(v) @@ -49778,9 +48248,9 @@ function try_key_code_normal(param) {var switcher=param - 8 | 0; if(! (214 < switcher >>> 0)) - {var _fM_=switcher; - if(67 <= _fM_) - switch(_fM_) + {var _f2_=switcher; + if(67 <= _f2_) + switch(_f2_) {case 67:return 11; case 68:return 12; case 69:return 13; @@ -49824,7 +48294,7 @@ case 214:return 50 } else - switch(_fM_) + switch(_f2_) {case 0:return 43; case 1:return 39; case 5:return 40; @@ -49869,27 +48339,27 @@ function run_next(value,f,v){return v?v:caml_call1(f,value)} function symbol$11(x,f){return caml_call1(f,x)} function of_event(evt) - {var _fF_=evt.keyCode; - function _fG_(_fL_){return run_next(_fF_,try_key_code_normal,_fL_)} + {var _fV_=evt.keyCode; + function _fW_(_f1_){return run_next(_fV_,try_key_code_normal,_f1_)} var match=evt.location,switcher=match - 1 | 0; if(2 < switcher >>> 0) - var _fH_=make_unidentified; + var _fX_=make_unidentified; else switch(switcher) {case 0: var - _fC_=evt.keyCode, - _fH_=function(_fJ_){return run_next(_fC_,try_key_code_left,_fJ_)}; + _fS_=evt.keyCode, + _fX_=function(_fZ_){return run_next(_fS_,try_key_code_left,_fZ_)}; break; case 1: var - _fD_=evt.keyCode, - _fH_=function(_fI_){return run_next(_fD_,try_key_code_right,_fI_)}; + _fT_=evt.keyCode, + _fX_=function(_fY_){return run_next(_fT_,try_key_code_right,_fY_)}; break; default: var - _fE_=evt.keyCode, - _fH_=function(_fK_){return run_next(_fE_,try_key_code_numpad,_fK_)}} + _fU_=evt.keyCode, + _fX_=function(_f0_){return run_next(_fU_,try_key_code_numpad,_f0_)}} var value=evt.code; return symbol$11 (symbol$11 @@ -49897,24 +48367,24 @@ (0, function(v) {return v?v:caml_call3(Optdef[7],value,make_unidentified,f)}), - _fH_), - _fG_)} + _fX_), + _fW_)} function char_of_int(value) {if(caml_call2(symbol$5,0,value)) try - {var _fA_=[0,caml_call1(Stdlib_Uchar[8],value)];return _fA_} - catch(_fB_){return 0} + {var _fQ_=[0,caml_call1(Stdlib_Uchar[8],value)];return _fQ_} + catch(_fR_){return 0} return 0} function empty_string(param){return ""} function none(param){return 0} function of_event$0(evt) - {var t110=caml_call2(Optdef[8],evt.key,empty_string),match=t110.length; + {var t104=caml_call2(Optdef[8],evt.key,empty_string),match=t104.length; return 0 === match ?caml_call3(Optdef[7],evt.charCode,none,char_of_int) - :1 === match?char_of_int(t110.charCodeAt(0) | 0):0} - function element$1(_fz_){return _fz_} + :1 === match?char_of_int(t104.charCodeAt(0) | 0):0} + function element$1(_fP_){return _fP_} function tagged(e) - {var t112=e.tagName,tag=caml_string_of_jsbytes(t112.toLowerCase()); + {var t106=e.tagName,tag=caml_string_of_jsbytes(t106.toLowerCase()); if(caml_call2(symbol$8,caml_ml_string_length(tag),0))return [61,e]; var match=runtime.caml_string_unsafe_get(tag,0),switcher=match - 97 | 0; if(! (21 < switcher >>> 0)) @@ -50040,42 +48510,42 @@ } return [61,e]} function opt_tagged(e) - {function _fx_(e){return [0,tagged(e)]} - function _fy_(param){return 0} - return caml_call3(Opt[7],e,_fy_,_fx_)} + {function _fN_(e){return [0,tagged(e)]} + function _fO_(param){return 0} + return caml_call3(Opt[7],e,_fO_,_fN_)} function taggedEvent(ev) - {function _ff_(ev){return [0,ev]} - function _fg_(param) - {function _fi_(ev){return [1,ev]} - function _fj_(param) - {function _fl_(ev){return [3,ev]} - function _fm_(param) - {function _fo_(ev){return [4,ev]} - function _fp_(param) - {function _fr_(ev){return [5,ev]} - function _fs_(param) - {function _fu_(ev){return [2,ev]} - function _fv_(param){return [6,ev]} - var _fw_=messageEvent(ev); - return caml_call3(Opt[7],_fw_,_fv_,_fu_)} - var _ft_=popStateEvent(ev); - return caml_call3(Opt[7],_ft_,_fs_,_fr_)} - var _fq_=mouseScrollEvent(ev); - return caml_call3(Opt[7],_fq_,_fp_,_fo_)} - var _fn_=wheelEvent(ev); - return caml_call3(Opt[7],_fn_,_fm_,_fl_)} - var _fk_=keyboardEvent(ev); - return caml_call3(Opt[7],_fk_,_fj_,_fi_)} - var _fh_=mouseEvent(ev); - return caml_call3(Opt[7],_fh_,_fg_,_ff_)} + {function _fv_(ev){return [0,ev]} + function _fw_(param) + {function _fy_(ev){return [1,ev]} + function _fz_(param) + {function _fB_(ev){return [3,ev]} + function _fC_(param) + {function _fE_(ev){return [4,ev]} + function _fF_(param) + {function _fH_(ev){return [5,ev]} + function _fI_(param) + {function _fK_(ev){return [2,ev]} + function _fL_(param){return [6,ev]} + var _fM_=messageEvent(ev); + return caml_call3(Opt[7],_fM_,_fL_,_fK_)} + var _fJ_=popStateEvent(ev); + return caml_call3(Opt[7],_fJ_,_fI_,_fH_)} + var _fG_=mouseScrollEvent(ev); + return caml_call3(Opt[7],_fG_,_fF_,_fE_)} + var _fD_=wheelEvent(ev); + return caml_call3(Opt[7],_fD_,_fC_,_fB_)} + var _fA_=keyboardEvent(ev); + return caml_call3(Opt[7],_fA_,_fz_,_fy_)} + var _fx_=mouseEvent(ev); + return caml_call3(Opt[7],_fx_,_fw_,_fv_)} function opt_taggedEvent(ev) - {function _fd_(ev){return [0,taggedEvent(ev)]} - function _fe_(param){return 0} - return caml_call3(Opt[7],ev,_fe_,_fd_)} + {function _ft_(ev){return [0,taggedEvent(ev)]} + function _fu_(param){return 0} + return caml_call3(Opt[7],ev,_fu_,_ft_)} function stopPropagation(ev) - {function _fb_(param){return ev.stopPropagation()} - function _fc_(param){return ev.cancelBubble = t25} - return caml_call3(Optdef[7],ev.stopPropagation,_fc_,_fb_)} + {function _fr_(param){return ev.stopPropagation()} + function _fs_(param){return ev.cancelBubble = t38} + return caml_call3(Optdef[7],ev.stopPropagation,_fs_,_fr_)} var requestAnimationFrame= runtime.caml_js_pure_expr @@ -50093,15 +48563,15 @@ [0,_j_.msRequestAnimationFrame,0]]]]]; try {var - _e__=function(c){return caml_call1(Optdef[5],c)}, - req=caml_call2(Stdlib_List[38],_e__,l), - _e$_=function(callback){return req(callback)}; - return _e$_} - catch(_fa_) - {_fa_ = caml_wrap_exception(_fa_); - if(_fa_ === Stdlib[8]) + _fo_=function(c){return caml_call1(Optdef[5],c)}, + req=caml_call2(Stdlib_List[38],_fo_,l), + _fp_=function(callback){return req(callback)}; + return _fp_} + catch(_fq_) + {_fq_ = caml_wrap_exception(_fq_); + if(_fq_ === Stdlib[8]) {var - now=function(param){var t123=new t122();return t123.getTime()}, + now=function(param){var t117=new t116();return t117.getTime()}, last=[0,now(0)]; return function(callback) {var @@ -50111,15 +48581,15 @@ last[1] = t; _j_.setTimeout(callback,dt$0); return 0}} - throw _fa_}}); + throw _fq_}}); function hasPushState(param) - {var t128=_j_.history;return caml_call1(Optdef[5],t128.pushState)} + {var t122=_j_.history;return caml_call1(Optdef[5],t122.pushState)} function hasPlaceholder(param) - {var t129=createInput(0,0,t87); - return caml_call1(Optdef[5],t129.placeholder)} + {var t123=createInput(0,0,t87); + return caml_call1(Optdef[5],t123.placeholder)} function hasRequired(param) - {var t130=createInput(0,0,t87); - return caml_call1(Optdef[5],t130.required)} + {var t124=createInput(0,0,t87); + return caml_call1(Optdef[5],t124.required)} var overflow_limit=2147483000.; function setTimeout(callback,d) {var id=[0,0]; @@ -50129,18 +48599,112 @@ else var remain=0.,step$0=step; var - cb=remain == 0.?callback:function(_e9_){return loop(remain,_e9_)}, - t131=caml_js_wrap_callback(cb); - id[1] = [0,_j_.setTimeout(t131,step$0)]; + cb=remain == 0.?callback:function(_fn_){return loop(remain,_fn_)}, + t125=caml_js_wrap_callback(cb); + id[1] = [0,_j_.setTimeout(t125,step$0)]; return 0} loop(d,0); return id} function clearTimeout(id) - {var _e8_=id[1]; - if(_e8_){var x=_e8_[1];id[1] = 0;return _j_.clearTimeout(x)} + {var _fm_=id[1]; + if(_fm_){var x=_fm_[1];id[1] = 0;return _j_.clearTimeout(x)} return 0} function js_array_of_collection(c){return [].slice.call(c)} var + _n_= + [0, + click, + copy$0, + cut, + paste, + dblclick, + mousedown, + mouseup, + mouseover, + mousemove, + mouseout, + keypress, + keydown, + keyup, + mousewheel, + DOMMouseScroll, + wheel, + touchstart, + touchmove, + touchend, + touchcancel, + dragstart, + dragend, + dragenter, + dragover, + dragleave, + drag, + drop, + hashchange, + change, + input, + timeupdate, + submit, + scroll, + focus, + blur, + load$0, + unload, + beforeunload, + resize, + orientationchange, + popstate, + error$0, + abort$0, + select, + online, + offline, + checking, + noupdate, + downloading, + progress$0, + updateready, + cached, + obsolete, + domContentLoaded, + animationstart, + animationend, + animationiteration, + animationcancel, + transitionrun, + transitionstart, + transitionend, + transitioncancel, + canplay, + canplaythrough, + durationchange, + emptied, + ended, + gotpointercapture, + loadeddata, + loadedmetadata, + loadstart$0, + lostpointercapture, + message$0, + pause, + play, + playing, + pointerenter, + pointercancel, + pointerdown, + pointerleave, + pointermove, + pointerout, + pointerover, + pointerup, + ratechange, + seeked, + seeking, + stalled, + suspend, + volumechange, + waiting, + make$1], Js_of_ocaml_Dom_html= [0, d, @@ -50157,7 +48721,7 @@ invoke_handler, eventTarget, eventRelatedTarget, - Event$0, + _n_, addEventListenerWithOptions, addEventListener, removeEventListener, @@ -50337,7 +48901,7 @@ hasPushState, hasPlaceholder, hasRequired]; - caml_register_global(1651,Js_of_ocaml_Dom_html,"Js_of_ocaml__Dom_html"); + caml_register_global(1669,Js_of_ocaml_Dom_html,"Js_of_ocaml__Dom_html"); var formData=Unsafe[1].FormData,formData_form=Unsafe[1].FormData; function filter_map$0(f,param) {var param$0=param; @@ -50351,15 +48915,15 @@ function have_content(elt) {var t3=elt.name, - _e6_=caml_call2(symbol$9,t3.length,0), - _e7_=_e6_?1 - (elt.disabled | 0):_e6_; - return _e7_} + _fk_=caml_call2(symbol$9,t3.length,0), + _fl_=_fk_?1 - (elt.disabled | 0):_fk_; + return _fl_} function form_elements(get,form) {var t34=form.elements,i$2=t34.length - 1 | 0,acc=0,i=i$2; for(;;) {if(caml_call2(symbol$5,i,0)) {var - _eX_= + _fb_= function(v$2) {var match$3=tagged(v$2); switch(match$3[0]) @@ -50383,17 +48947,17 @@ var match$1=caml_call1(Optdef[10],v.multiple); if(match$1 && match$1[1]) {var - _e1_=function(t28){return list.item(t28)}, - _e2_=caml_call2(Stdlib_Array[2],list.length,_e1_), - _e3_=caml_call1(Stdlib_Array[11],_e2_); + _ff_=function(t28){return list.item(t28)}, + _fg_=caml_call2(Stdlib_Array[2],list.length,_ff_), + _fh_=caml_call1(Stdlib_Array[11],_fg_); return filter_map$0 (function(f) {var match=caml_call1(Opt[10],f); if(match) {var file=match[1];return [0,[0,name$1,[0,781515420,file]]]} return 0}, - _e3_)} - var _e4_=list.item(0),match$2=caml_call1(Opt[10],_e4_); + _fh_)} + var _fi_=list.item(0),match$2=caml_call1(Opt[10],_fi_); if(match$2) {var file=match$2[1]; return [0,[0,name$1,[0,781515420,file]],0]} @@ -50423,13 +48987,13 @@ {var name$0=caml_string_of_jsstring(v$0.name); if(v$0.multiple | 0) {var - _eZ_= + _fd_= function(i) - {var t13=v$0.options,_e5_=t13.item(i); - return caml_call1(Opt[10],_e5_)}, + {var t13=v$0.options,_fj_=t13.item(i); + return caml_call1(Opt[10],_fj_)}, t10=v$0.options, - options=caml_call2(Stdlib_Array[2],t10.length,_eZ_), - _e0_=caml_call1(Stdlib_Array[11],options); + options=caml_call2(Stdlib_Array[2],t10.length,_fd_), + _fe_=caml_call1(Stdlib_Array[11],options); return filter_map$0 (function(param) {if(param) @@ -50438,7 +49002,7 @@ ?[0,[0,name$0,[0,-976970511,e.value]]] :0} return 0}, - _e0_)} + _fe_)} return [0,[0,name$0,[0,-976970511,v$0.value]],0]} return 0; case 53: @@ -50448,9 +49012,9 @@ return [0,[0,name,[0,-976970511,v$1.value]],0]} return 0; default:return 0}}, - _eY_=caml_call2(Stdlib_List[19],_eX_,acc); - return caml_call1(Stdlib_List[14],_eY_)} - var t32=form.elements,_eW_=t32.item(i),match=caml_call1(Opt[10],_eW_); + _fc_=caml_call2(Stdlib_List[19],_fb_,acc); + return caml_call1(Stdlib_List[14],_fc_)} + var t32=form.elements,_fa_=t32.item(i),match=caml_call1(Opt[10],_fa_); if(match) {var x=match[1],i$0=i - 1 | 0,acc$0=[0,x,acc],acc=acc$0,i=i$0; continue} @@ -50459,30 +49023,30 @@ function append(form_contents,form_elt) {if(891486873 <= form_contents[1]) {var list=form_contents[2];list[1] = [0,form_elt,list[1]];return 0} - var f=form_contents[2],_eU_=form_elt[2],_eV_=form_elt[1]; - if(781515420 <= _eU_[1]) - {var file=_eU_[2],t38=caml_jsstring_of_string(_eV_); + var f=form_contents[2],_e__=form_elt[2],_e$_=form_elt[1]; + if(781515420 <= _e__[1]) + {var file=_e__[2],t38=caml_jsstring_of_string(_e$_); return f.append(t38,file)} - var s=_eU_[2],t35=caml_jsstring_of_string(_eV_); + var s=_e__[2],t35=caml_jsstring_of_string(_e$_); return f.append(t35,s)} function empty_form_contents(param) {var match=caml_call1(Optdef[10],formData); if(match){var constr=match[1];return [0,808620462,new constr()]} return [0,891486873,[0,0]]} function post_form_contents(form) - {var contents=empty_form_contents(0),_eR_=form_elements(0,form); - function _eS_(_eT_){return append(contents,_eT_)} - caml_call2(Stdlib_List[17],_eS_,_eR_); + {var contents=empty_form_contents(0),_e7_=form_elements(0,form); + function _e8_(_e9_){return append(contents,_e9_)} + caml_call2(Stdlib_List[17],_e8_,_e7_); return contents} function get_form_contents(form) - {var _eO_=form_elements(_n_,form); - function _eP_(param) - {var _eQ_=param[2]; - if(typeof _eQ_ !== "number" && -976970511 === _eQ_[1]) - {var s=_eQ_[2],name=param[1]; + {var _e4_=form_elements(_o_,form); + function _e5_(param) + {var _e6_=param[2]; + if(typeof _e6_ !== "number" && -976970511 === _e6_[1]) + {var s=_e6_[2],name=param[1]; return [0,name,caml_string_of_jsstring(s)]} - throw [0,Assert_failure,_o_]} - return caml_call2(Stdlib_List[19],_eP_,_eO_)} + throw [0,Assert_failure,_p_]} + return caml_call2(Stdlib_List[19],_e5_,_e4_)} var Js_of_ocaml_Form= [0, @@ -50493,7 +49057,7 @@ get_form_contents, empty_form_contents, form_elements]; - caml_register_global(1652,Js_of_ocaml_Form,"Js_of_ocaml__Form"); + caml_register_global(1670,Js_of_ocaml_Form,"Js_of_ocaml__Form"); var readystatechange=caml_call1(Event[1],cst_readystatechange), loadstart$1=caml_call1(Event[1],cst_loadstart$1), @@ -50503,7 +49067,7 @@ load$1=caml_call1(Event[1],cst_load$1), timeout=caml_call1(Event[1],cst_timeout), loadend$0=caml_call1(Event[1],cst_loadend$0), - Event$1= + Event$0= [0, readystatechange, loadstart$1, @@ -50513,19 +49077,19 @@ load$1, timeout, loadend$0], - Js_of_ocaml_XmlHttpRequest=[0,runtime.caml_xmlhttprequest_create,Event$1]; + Js_of_ocaml_XmlHttpRequest=[0,runtime.caml_xmlhttprequest_create,Event$0]; caml_register_global - (1653,Js_of_ocaml_XmlHttpRequest,"Js_of_ocaml__XmlHttpRequest"); + (1671,Js_of_ocaml_XmlHttpRequest,"Js_of_ocaml__XmlHttpRequest"); var t2=Unsafe[1].Worker; function create(script) {var t1=caml_jsstring_of_string(script);return new t2(t1)} function import_scripts(scripts) {if(Unsafe[1].importScripts === t39) caml_call1(Stdlib[1],cst_Worker_import_scripts_is_u); - var _eL_=caml_call1(Stdlib_Array[12],scripts); - function _eM_(s){return caml_jsstring_of_string(s)} - var _eN_=caml_call2(Stdlib_Array[15],_eM_,_eL_); - return runtime.caml_js_fun_call(Unsafe[1].importScripts,_eN_)} + var _e1_=caml_call1(Stdlib_Array[12],scripts); + function _e2_(s){return caml_jsstring_of_string(s)} + var _e3_=caml_call2(Stdlib_Array[15],_e2_,_e1_); + return runtime.caml_js_fun_call(Unsafe[1].importScripts,_e3_)} function set_onmessage(handler) {if(Unsafe[1].onmessage === t39) caml_call1(Stdlib[1],cst_Worker_onmessage_is_undefi); @@ -50539,27 +49103,27 @@ var Js_of_ocaml_Worker= [0,create,import_scripts,set_onmessage,post_message]; - caml_register_global(1654,Js_of_ocaml_Worker,"Js_of_ocaml__Worker"); + caml_register_global(1672,Js_of_ocaml_Worker,"Js_of_ocaml__Worker"); var webSocket=Unsafe[1].WebSocket; function is_supported(param){return caml_call1(Optdef[5],webSocket)} var Js_of_ocaml_WebSockets=[0,webSocket,webSocket,webSocket,is_supported]; caml_register_global - (1655,Js_of_ocaml_WebSockets,"Js_of_ocaml__WebSockets"); + (1673,Js_of_ocaml_WebSockets,"Js_of_ocaml__WebSockets"); var defaultContextAttributes= - {"alpha":t25, - "depth":t25, + {"alpha":t38, + "depth":t38, "stencil":t4, - "antialias":t25, + "antialias":t38, "premultipliedAlpha":t4, "preserveDrawingBuffer":t4, "preferLowPowerToHighPerformance":t4, "failIfMajorPerformanceCaveat":t4}, - webglcontextlost=caml_call1(Event$0[87],cst_webglcontextlost), - webglcontextrestored=caml_call1(Event$0[87],cst_webglcontextrestored), + webglcontextlost=caml_call1(_n_[92],cst_webglcontextlost), + webglcontextrestored=caml_call1(_n_[92],cst_webglcontextrestored), webglcontextcreationerror= - caml_call1(Event$0[87],cst_webglcontextcreationerror), - Event$2= + caml_call1(_n_[92],cst_webglcontextcreationerror), + Event$1= [0,webglcontextlost,webglcontextrestored,webglcontextcreationerror]; function getContext(t3) {var ctx=t3.getContext("webgl"); @@ -50569,8 +49133,8 @@ return caml_call1(Opt[5],ctx)?ctx:t9.getContext("experimental-webgl",t8)} var Js_of_ocaml_WebGL= - [0,defaultContextAttributes,Event$2,getContext,getContextWithAttributes]; - caml_register_global(1656,Js_of_ocaml_WebGL,"Js_of_ocaml__WebGL"); + [0,defaultContextAttributes,Event$1,getContext,getContextWithAttributes]; + caml_register_global(1674,Js_of_ocaml_WebGL,"Js_of_ocaml__WebGL"); function regexp(s) {var t0=caml_jsbytes_of_string(s);return new t11(t0,"g")} function regexp_case_fold(s) @@ -50581,25 +49145,26 @@ t6=caml_jsbytes_of_string(s); return new t11(t6,t7)} function blunt_str_array_get(a,i) - {function _eK_(param){throw [0,Assert_failure,_p_]} - return caml_string_of_jsbytes(caml_call2(Optdef[8],a[i],_eK_))} + {function _eZ_(param){throw [0,Assert_failure,_q_]} + var _e0_=a[i]; + return caml_string_of_jsbytes(caml_call2(Optdef[8],_e0_,_eZ_))} function string_match(r,s,i) {r.lastIndex = i; var t11=caml_jsbytes_of_string(s), - _eI_=r.exec(t11), - _eJ_=caml_call2(Opt[3],_eI_,match_result); - return caml_call1(Opt[10],_eJ_)} + _eX_=r.exec(t11), + _eY_=caml_call2(Opt[3],_eX_,match_result); + return caml_call1(Opt[10],_eY_)} function search_forward(r,s,i) {r.lastIndex = i; var t15=caml_jsbytes_of_string(s); - function _eF_(t17){return [0,t17.index,t17]} - var _eG_=r.exec(t15),_eH_=caml_call2(Opt[3],_eG_,_eF_); - return caml_call1(Opt[10],_eH_)} + function _eU_(t17){return [0,t17.index,t17]} + var _eV_=r.exec(t15),_eW_=caml_call2(Opt[3],_eV_,_eU_); + return caml_call1(Opt[10],_eW_)} function matched_string(r){return blunt_str_array_get(r,0)} function matched_group(r,i) - {var _eE_=caml_call2(Optdef[3],r[i],caml_string_of_jsbytes); - return caml_call1(Optdef[10],_eE_)} + {var _eS_=r[i],_eT_=caml_call2(Optdef[3],_eS_,caml_string_of_jsbytes); + return caml_call1(Optdef[10],_eT_)} var t21=new t11("[$]","g"); function quote_repl(s) {var t23=caml_jsbytes_of_string(s);return t23.replace(t21,"$$$$")} @@ -50659,7 +49224,7 @@ replace_first, split, bounded_split]; - caml_register_global(1657,Js_of_ocaml_Regexp,"Js_of_ocaml__Regexp"); + caml_register_global(1675,Js_of_ocaml_Regexp,"Js_of_ocaml__Regexp"); var Local_exn=[248,cst_Js_of_ocaml_Url_Local_exn,caml_fresh_oo_id(0)]; function interrupt(param){throw Local_exn} var plus_re=regexp_string(cst$0),t14=new t11("\\+","g"); @@ -50685,30 +49250,30 @@ {var l=caml_ml_string_length(s); function aux(i) {try - {var _eC_=caml_call3(String[30],s,i,47),j=_eC_} - catch(_eD_) - {_eD_ = caml_wrap_exception(_eD_); - if(_eD_ !== Stdlib[8])throw _eD_; + {var _eQ_=caml_call3(String[30],s,i,47),j=_eQ_} + catch(_eR_) + {_eR_ = caml_wrap_exception(_eR_); + if(_eR_ !== Stdlib[8])throw _eR_; var j=l} var word=caml_call3(String[14],s,i,j - i | 0); return caml_call2(symbol$10,j,l)?[0,word,0]:[0,word,aux(j + 1 | 0)]} var a=aux(0); if(a && ! caml_string_notequal(a[1],cst$2)) - {var _eB_=a[2]; - if(! _eB_)return 0; - if(! caml_string_notequal(_eB_[1],cst$3) && ! _eB_[2])return _q_} + {var _eP_=a[2]; + if(! _eP_)return 0; + if(! caml_string_notequal(_eP_[1],cst$3) && ! _eP_[2])return _r_} return a} function encode_arguments(l) - {function _ew_(param) + {function _eK_(param) {var v=param[2], n=param[1], - _ey_=urlencode(0,v), - _ez_=caml_call2(Stdlib[28],cst$4,_ey_), - _eA_=urlencode(0,n); - return caml_call2(Stdlib[28],_eA_,_ez_)} - var _ex_=caml_call2(Stdlib_List[19],_ew_,l); - return caml_call2(String[6],cst$5,_ex_)} + _eM_=urlencode(0,v), + _eN_=caml_call2(Stdlib[28],cst$4,_eM_), + _eO_=urlencode(0,n); + return caml_call2(Stdlib[28],_eO_,_eN_)} + var _eL_=caml_call2(Stdlib_List[19],_eK_,l); + return caml_call2(String[6],cst$5,_eL_)} function decode_arguments_js_string(s) {var t0=caml_jsstring_of_string(caml_call2(String[1],1,38)), @@ -50720,35 +49285,34 @@ {if(caml_call2(symbol$5,idx$0,0))return acc; try {var - _eo_=idx$0 - 1 | 0, - _ep_= + _eB_=idx$0 - 1 | 0, + _eC_= function(s) - {function _eu_(param) + {function _eI_(param) {var y=param[2], x=param[1], - _ev_=urldecode_js_string_string(y); - return [0,urldecode_js_string_string(x),_ev_]} + _eJ_=urldecode_js_string_string(y); + return [0,urldecode_js_string_string(x),_eJ_]} var t2=caml_jsstring_of_string(caml_call2(String[1],1,61)), t5=s.indexOf(t2); if(caml_call2(symbol$5,t5,0)) - var _et_=t39; + var _eH_=t39; else var t7=t5 + 1 | 0, - _es_=s.slice(t7), - _et_=[0,s.slice(0,t5),_es_]; - return caml_call3(Optdef[7],_et_,interrupt,_eu_)}, - _eq_= - aux - ([0,caml_call3(Optdef[7],t18[idx$0],interrupt,_ep_),acc],_eo_); - return _eq_} - catch(_er_) - {_er_ = caml_wrap_exception(_er_); - if(_er_ === Local_exn) + _eG_=s.slice(t7), + _eH_=[0,s.slice(0,t5),_eG_]; + return caml_call3(Optdef[7],_eH_,interrupt,_eI_)}, + _eD_=t18[idx$0], + _eE_=aux([0,caml_call3(Optdef[7],_eD_,interrupt,_eC_),acc],_eB_); + return _eE_} + catch(_eF_) + {_eF_ = caml_wrap_exception(_eF_); + if(_eF_ === Local_exn) {var idx$1=idx$0 - 1 | 0,idx$0=idx$1;continue} - throw _er_}}} + throw _eF_}}} return aux(0,len - 1 | 0)} function decode_arguments(s) {return decode_arguments_js_string(caml_jsbytes_of_string(s))} @@ -50758,9 +49322,10 @@ t21$0=caml_jsbytes_of_string(cst_Ff_Ii_Ll_Ee), t26=new t11(t21$0); function url_of_js_string(s) - {function _d7_(res) + {function _d$_(res) {var - prot_string=caml_call2(Optdef[8],res[1],interrupt), + _em_=res[1], + prot_string=caml_call2(Optdef[8],_em_,interrupt), match=caml_string_of_jsbytes(prot_string.toLowerCase()); if (caml_string_notequal(match,cst_file$0) @@ -50787,49 +49352,55 @@ default:switch$2 = 1} if(switch$2) {var - _ef_=function(param){return caml_jsbytes_of_string(cst$7)}, + _en_=function(param){return caml_jsbytes_of_string(cst$7)}, + _eo_=res[6], path_str= - urldecode_js_string_string(caml_call2(Optdef[8],res[6],_ef_)), - _eg_=function(param){return caml_jsbytes_of_string(cst$8)}, - _eh_= - urldecode_js_string_string(caml_call2(Optdef[8],res[10],_eg_)), - _ei_=function(param){return caml_jsbytes_of_string(cst$9)}, - _ej_= - decode_arguments_js_string(caml_call2(Optdef[8],res[8],_ei_)), - _ek_=path_of_path_string(path_str), - _el_=function(param){return caml_jsbytes_of_string(cst$10)}, - s=caml_string_of_jsbytes(caml_call2(Optdef[8],res[4],_el_)), - _em_= + urldecode_js_string_string(caml_call2(Optdef[8],_eo_,_en_)), + _ep_=function(param){return caml_jsbytes_of_string(cst$8)}, + _eq_=res[10], + _er_=urldecode_js_string_string(caml_call2(Optdef[8],_eq_,_ep_)), + _es_=function(param){return caml_jsbytes_of_string(cst$9)}, + _et_=res[8], + _eu_=decode_arguments_js_string(caml_call2(Optdef[8],_et_,_es_)), + _ev_=path_of_path_string(path_str), + _ew_=function(param){return caml_jsbytes_of_string(cst$10)}, + _ex_=res[4], + s=caml_string_of_jsbytes(caml_call2(Optdef[8],_ex_,_ew_)), + _ey_= caml_string_notequal(s,cst$6)?caml_int_of_string(s):ssl?443:80, + _ez_=res[2], url= [0, urldecode_js_string_string - (caml_call2(Optdef[8],res[2],interrupt)), - _em_, - _ek_, + (caml_call2(Optdef[8],_ez_,interrupt)), + _ey_, + _ev_, path_str, - _ej_, - _eh_], - _en_=ssl?[1,url]:[0,url]; - return [0,_en_]}} + _eu_, + _er_], + _eA_=ssl?[1,url]:[0,url]; + return [0,_eA_]}} throw Not_an_http_protocol} - function _d8_(param) - {function _d__(res) + function _ea_(param) + {function _ec_(res) {var + _ef_=res[2], path_str= - urldecode_js_string_string(caml_call2(Optdef[8],res[2],interrupt)); - function _eb_(param){return caml_jsbytes_of_string(cst$11)} - var _ec_=caml_string_of_jsbytes(caml_call2(Optdef[8],res[6],_eb_)); - function _ed_(param){return caml_jsbytes_of_string(cst$12)} + urldecode_js_string_string(caml_call2(Optdef[8],_ef_,interrupt)); + function _eg_(param){return caml_jsbytes_of_string(cst$11)} var - _ee_= - decode_arguments_js_string(caml_call2(Optdef[8],res[4],_ed_)); - return [0,[2,[0,path_of_path_string(path_str),path_str,_ee_,_ec_]]]} - function _d$_(param){return 0} - var _ea_=t26.exec(s); - return caml_call3(Opt[7],_ea_,_d$_,_d__)} - var _d9_=t24.exec(s); - return caml_call3(Opt[7],_d9_,_d8_,_d7_)} + _eh_=res[6], + _ei_=caml_string_of_jsbytes(caml_call2(Optdef[8],_eh_,_eg_)); + function _ej_(param){return caml_jsbytes_of_string(cst$12)} + var + _ek_=res[4], + _el_=decode_arguments_js_string(caml_call2(Optdef[8],_ek_,_ej_)); + return [0,[2,[0,path_of_path_string(path_str),path_str,_el_,_ei_]]]} + function _ed_(param){return 0} + var _ee_=t26.exec(s); + return caml_call3(Opt[7],_ee_,_ed_,_ec_)} + var _eb_=t24.exec(s); + return caml_call3(Opt[7],_eb_,_ea_,_d$_)} function url_of_string(s) {return url_of_js_string(caml_jsbytes_of_string(s))} function string_of_url(param) @@ -50843,33 +49414,33 @@ port=match[2], host=match[1]; if(caml_string_notequal(frag,cst$13)) - var _du_=urlencode(0,frag),_dv_=caml_call2(Stdlib[28],cst$14,_du_); + var _dy_=urlencode(0,frag),_dz_=caml_call2(Stdlib[28],cst$14,_dy_); else - var _dv_=cst$21; + var _dz_=cst$21; if(args) var - _dw_=encode_arguments(args), - _dx_=caml_call2(Stdlib[28],cst$15,_dw_); + _dA_=encode_arguments(args), + _dB_=caml_call2(Stdlib[28],cst$15,_dA_); else - var _dx_=cst$20; + var _dB_=cst$20; var - _dy_=caml_call2(Stdlib[28],_dx_,_dv_), - _dz_=function(x){return urlencode(0,x)}, - _dA_=caml_call2(Stdlib_List[19],_dz_,path), - _dB_=caml_call2(String[6],cst$16,_dA_), - _dC_=caml_call2(Stdlib[28],_dB_,_dy_), - _dD_=caml_call2(Stdlib[28],cst$17,_dC_); + _dC_=caml_call2(Stdlib[28],_dB_,_dz_), + _dD_=function(x){return urlencode(0,x)}, + _dE_=caml_call2(Stdlib_List[19],_dD_,path), + _dF_=caml_call2(String[6],cst$16,_dE_), + _dG_=caml_call2(Stdlib[28],_dF_,_dC_), + _dH_=caml_call2(Stdlib[28],cst$17,_dG_); if(80 === port) - var _dE_=cst$18; + var _dI_=cst$18; else var - _dI_=caml_call1(Stdlib[33],port), - _dE_=caml_call2(Stdlib[28],cst$19,_dI_); + _dM_=caml_call1(Stdlib[33],port), + _dI_=caml_call2(Stdlib[28],cst$19,_dM_); var - _dF_=caml_call2(Stdlib[28],_dE_,_dD_), - _dG_=urlencode(0,host), - _dH_=caml_call2(Stdlib[28],_dG_,_dF_); - return caml_call2(Stdlib[28],cst_http$1,_dH_); + _dJ_=caml_call2(Stdlib[28],_dI_,_dH_), + _dK_=urlencode(0,host), + _dL_=caml_call2(Stdlib[28],_dK_,_dJ_); + return caml_call2(Stdlib[28],cst_http$1,_dL_); case 1: var match$0=param[1], @@ -50880,34 +49451,34 @@ host$0=match$0[1]; if(caml_string_notequal(frag$0,cst$22)) var - _dJ_=urlencode(0,frag$0), - _dK_=caml_call2(Stdlib[28],cst$23,_dJ_); + _dN_=urlencode(0,frag$0), + _dO_=caml_call2(Stdlib[28],cst$23,_dN_); else - var _dK_=cst$30; + var _dO_=cst$30; if(args$0) var - _dL_=encode_arguments(args$0), - _dM_=caml_call2(Stdlib[28],cst$24,_dL_); + _dP_=encode_arguments(args$0), + _dQ_=caml_call2(Stdlib[28],cst$24,_dP_); else - var _dM_=cst$29; + var _dQ_=cst$29; var - _dN_=caml_call2(Stdlib[28],_dM_,_dK_), - _dO_=function(x){return urlencode(0,x)}, - _dP_=caml_call2(Stdlib_List[19],_dO_,path$0), - _dQ_=caml_call2(String[6],cst$25,_dP_), - _dR_=caml_call2(Stdlib[28],_dQ_,_dN_), - _dS_=caml_call2(Stdlib[28],cst$26,_dR_); + _dR_=caml_call2(Stdlib[28],_dQ_,_dO_), + _dS_=function(x){return urlencode(0,x)}, + _dT_=caml_call2(Stdlib_List[19],_dS_,path$0), + _dU_=caml_call2(String[6],cst$25,_dT_), + _dV_=caml_call2(Stdlib[28],_dU_,_dR_), + _dW_=caml_call2(Stdlib[28],cst$26,_dV_); if(443 === port$0) - var _dT_=cst$27; + var _dX_=cst$27; else var - _dX_=caml_call1(Stdlib[33],port$0), - _dT_=caml_call2(Stdlib[28],cst$28,_dX_); + _d1_=caml_call1(Stdlib[33],port$0), + _dX_=caml_call2(Stdlib[28],cst$28,_d1_); var - _dU_=caml_call2(Stdlib[28],_dT_,_dS_), - _dV_=urlencode(0,host$0), - _dW_=caml_call2(Stdlib[28],_dV_,_dU_); - return caml_call2(Stdlib[28],cst_https$1,_dW_); + _dY_=caml_call2(Stdlib[28],_dX_,_dW_), + _dZ_=urlencode(0,host$0), + _d0_=caml_call2(Stdlib[28],_dZ_,_dY_); + return caml_call2(Stdlib[28],cst_https$1,_d0_); default: var match$1=param[1], @@ -50916,32 +49487,32 @@ path$1=match$1[1]; if(caml_string_notequal(frag$1,cst$31)) var - _dY_=urlencode(0,frag$1), - _dZ_=caml_call2(Stdlib[28],cst$32,_dY_); + _d2_=urlencode(0,frag$1), + _d3_=caml_call2(Stdlib[28],cst$32,_d2_); else - var _dZ_=cst$36; + var _d3_=cst$36; if(args$1) var - _d0_=encode_arguments(args$1), - _d1_=caml_call2(Stdlib[28],cst$33,_d0_); + _d4_=encode_arguments(args$1), + _d5_=caml_call2(Stdlib[28],cst$33,_d4_); else - var _d1_=cst$35; + var _d5_=cst$35; var - _d2_=caml_call2(Stdlib[28],_d1_,_dZ_), - _d3_=function(x){return urlencode(0,x)}, - _d4_=caml_call2(Stdlib_List[19],_d3_,path$1), - _d5_=caml_call2(String[6],cst$34,_d4_), - _d6_=caml_call2(Stdlib[28],_d5_,_d2_); - return caml_call2(Stdlib[28],cst_file$2,_d6_)}} - var _r_=caml_call1(Optdef[2],_j_.location); - if(caml_call1(Optdef[5],_r_)) - var _s_=_j_.location; + _d6_=caml_call2(Stdlib[28],_d5_,_d3_), + _d7_=function(x){return urlencode(0,x)}, + _d8_=caml_call2(Stdlib_List[19],_d7_,path$1), + _d9_=caml_call2(String[6],cst$34,_d8_), + _d__=caml_call2(Stdlib[28],_d9_,_d6_); + return caml_call2(Stdlib[28],cst_file$2,_d__)}} + var _s_=caml_call1(Optdef[2],_j_.location); + if(caml_call1(Optdef[5],_s_)) + var _t_=_j_.location; else var - t42=function(param,_dt_){return 0}, - t41$0=function(param,_ds_){return 0}, + t42=function(param,_dx_){return 0}, + t41=function(param,_dw_){return 0}, t40=function(param){return 0}, - _s_= + _t_= {"href":"", "protocol":"", "host":"", @@ -50952,42 +49523,42 @@ "hash":"", "origin":t39, "reload":caml_js_wrap_meth_callback(t40), - "replace":caml_js_wrap_meth_callback(t41$0), + "replace":caml_js_wrap_meth_callback(t41), "assign":caml_js_wrap_meth_callback(t42)}; var - host=urldecode_js_string_string(_s_.hostname), - protocol=urldecode_js_string_string(_s_.protocol), - _t_=0, + host=urldecode_js_string_string(_t_.hostname), + protocol=urldecode_js_string_string(_t_.protocol), + _u_=0, port= function(param) {try - {var _dq_=[0,caml_int_of_string(caml_string_of_jsbytes(_s_.port))]; - return _dq_} - catch(_dr_) - {_dr_ = caml_wrap_exception(_dr_); - if(_dr_[1] === Stdlib[7])return 0; - throw _dr_}} - (_t_), - path_string=urldecode_js_string_string(_s_.pathname), + {var _du_=[0,caml_int_of_string(caml_string_of_jsbytes(_t_.port))]; + return _du_} + catch(_dv_) + {_dv_ = caml_wrap_exception(_dv_); + if(_dv_[1] === Stdlib[7])return 0; + throw _dv_}} + (_u_), + path_string=urldecode_js_string_string(_t_.pathname), path=path_of_path_string(path_string), - t49=_s_.search; + t49=_t_.search; if(t49.charAt(0) === "?") - var t52=_s_.search,_u_=t52.slice(1); + var t52=_t_.search,_v_=t52.slice(1); else - var _u_=_s_.search; - var arguments$0=decode_arguments_js_string(_u_); + var _v_=_t_.search; + var arguments$0=decode_arguments_js_string(_v_); function get_fragment(param) - {function _dn_(res){return caml_string_of_jsstring(res[1])} - function _do_(param){return cst$37} - var t57=new t11("#(.*)"),t58=_s_.href,_dp_=t58.match(t57); - return caml_call3(Opt[7],_dp_,_do_,_dn_)} + {function _dr_(res){return caml_string_of_jsstring(res[1])} + function _ds_(param){return cst$37} + var t57=new t11("#(.*)"),t58=_t_.href,_dt_=t58.match(t57); + return caml_call3(Opt[7],_dt_,_ds_,_dr_)} function set_fragment(s) - {var t59=caml_jsbytes_of_string(urlencode(0,s));return _s_.hash = t59} - function get$2(param){return url_of_js_string(_s_.href)} + {var t59=caml_jsbytes_of_string(urlencode(0,s));return _t_.hash = t59} + function get$2(param){return url_of_js_string(_t_.href)} function set$0(u) - {var t62=caml_jsbytes_of_string(string_of_url(u));return _s_.href = t62} + {var t62=caml_jsbytes_of_string(string_of_url(u));return _t_.href = t62} var - as_string=urldecode_js_string_string(_s_.href), + as_string=urldecode_js_string_string(_t_.href), Js_of_ocaml_Url= [0, urldecode, @@ -51011,10 +49582,10 @@ get$2, set$0, as_string]]; - caml_register_global(1659,Js_of_ocaml_Url,"Js_of_ocaml__Url"); + caml_register_global(1677,Js_of_ocaml_Url,"Js_of_ocaml__Url"); var Js_of_ocaml_Lib_version=[0,s,git_version]; caml_register_global - (1660,Js_of_ocaml_Lib_version,"Js_of_ocaml__Lib_version"); + (1678,Js_of_ocaml_Lib_version,"Js_of_ocaml__Lib_version"); function update_file(name,content) {var oc=caml_call1(Stdlib[60],name); caml_call2(Stdlib[66],oc,content); @@ -51038,23 +49609,23 @@ var js_of_ocaml_version=s; else var - _co_=caml_call2(Stdlib[28],cst$41,git_version), - js_of_ocaml_version=caml_call2(Stdlib[28],s,_co_); + _cp_=caml_call2(Stdlib[28],cst$41,git_version), + js_of_ocaml_version=caml_call2(Stdlib[28],s,_cp_); var - _v_=runtime.caml_create_file, - _w_=runtime.caml_read_file_content, + _w_=runtime.caml_create_file, + _x_=runtime.caml_read_file_content, Js_of_ocaml_Sys_js= [0, set_channel_flusher, set_channel_filler, - function(_dm_){return runtime.caml_list_mount_point(_dm_)}, + function(_dq_){return runtime.caml_list_mount_point(_dq_)}, unmount, mount, + _x_, _w_, - _v_, update_file, js_of_ocaml_version]; - caml_register_global(1661,Js_of_ocaml_Sys_js,"Js_of_ocaml__Sys_js"); + caml_register_global(1679,Js_of_ocaml_Sys_js,"Js_of_ocaml__Sys_js"); function empty_resize_observer_options(param){return {}} var t2$0=Unsafe[1].ResizeObserver; function is_supported$0(param){return caml_call1(Optdef[5],t2$0)} @@ -51069,15 +49640,15 @@ Js_of_ocaml_ResizeObserver= [0,empty_resize_observer_options,t2$0,is_supported$0,observe]; caml_register_global - (1662,Js_of_ocaml_ResizeObserver,"Js_of_ocaml__ResizeObserver"); + (1680,Js_of_ocaml_ResizeObserver,"Js_of_ocaml__ResizeObserver"); var t4$1=Unsafe[1].PerformanceObserver; function is_supported$1(param){return caml_call1(Optdef[5],t4$1)} function observe$0(entry_types,f) {var - _dl_= + _dp_= caml_call1 (caml_call1(Stdlib_List[19],caml_jsstring_of_string),entry_types), - t1=caml_js_from_array(caml_call1(Stdlib_Array[12],_dl_)), + t1=caml_js_from_array(caml_call1(Stdlib_Array[12],_dp_)), t5={}; t5.entryTypes = t1; var t3=caml_js_wrap_callback(f),t6=new t4$1(t3); @@ -51085,7 +49656,7 @@ return t6} var Js_of_ocaml_PerformanceObserve=[0,t4$1,is_supported$1,observe$0]; caml_register_global - (1663,Js_of_ocaml_PerformanceObserve,"Js_of_ocaml__PerformanceObserver"); + (1681,Js_of_ocaml_PerformanceObserve,"Js_of_ocaml__PerformanceObserver"); function empty_mutation_observer_init(param){return {}} var t2$1=Unsafe[1].MutationObserver; function is_supported$2(param){return caml_call1(Optdef[5],t2$1)} @@ -51123,7 +49694,7 @@ Js_of_ocaml_MutationObserver= [0,empty_mutation_observer_init,t2$1,is_supported$2,observe$1]; caml_register_global - (1664,Js_of_ocaml_MutationObserver,"Js_of_ocaml__MutationObserver"); + (1682,Js_of_ocaml_MutationObserver,"Js_of_ocaml__MutationObserver"); var t1=Unsafe[1].Object; function create$0(param){return new t1()} function add$0(t,k,v){return t[k.concat("_")] = v} @@ -51134,23 +49705,24 @@ t10=Unsafe[1].Object, t11=t10.keys(t), res=[0,0], - _dh_=t11.length - 1 | 0, - _dg_=0; - if(! (_dh_ < 0)) - {var i=_dg_; + _dk_=t11.length - 1 | 0, + _dj_=0; + if(! (_dk_ < 0)) + {var i=_dj_; for(;;) {var - _di_=function(param){return caml_call1(Stdlib[2],cst_Jstable_keys)}, - t15=caml_call2(Optdef[8],t11[i],_di_), + _dl_=function(param){return caml_call1(Stdlib[2],cst_Jstable_keys)}, + _dm_=t11[i], + t15=caml_call2(Optdef[8],_dm_,_dl_), t14=t15.length - 1 | 0, - _dj_=res[1]; - res[1] = [0,t15.substring(0,t14),_dj_]; - var _dk_=i + 1 | 0; - if(_dh_ !== i){var i=_dk_;continue} + _dn_=res[1]; + res[1] = [0,t15.substring(0,t14),_dn_]; + var _do_=i + 1 | 0; + if(_dk_ !== i){var i=_do_;continue} break}} return caml_call1(Stdlib_List[9],res[1])} var Js_of_ocaml_Jstable=[0,create$0,add$0,remove,find,keys]; - caml_register_global(1665,Js_of_ocaml_Jstable,"Js_of_ocaml__Jstable"); + caml_register_global(1683,Js_of_ocaml_Jstable,"Js_of_ocaml__Jstable"); var t11$1=Unsafe[1].JSON; function reviver(this$0,key,value) {if(typeof value === "string")return caml_string_of_jsbytes(value); @@ -51164,26 +49736,27 @@ 255 === value[0]) - return runtime.caml_int64_create_lo_mi_hi(value[1],value[2],value[3]); + {var _dh_=value[3],_di_=value[2]; + return runtime.caml_int64_create_lo_mi_hi(value[1],_di_,_dh_)} return value} var t3$0=caml_js_wrap_meth_callback(reviver); function unsafe_input(t2){return t11$1.parse(t2,t3$0)} var mlInt64_constr=t5.constructor; function t10(key,value) - {var _df_=Stdlib_Obj[13]; - return caml_call2(symbol$8,runtime.caml_obj_tag(value),_df_) + {var _dg_=Stdlib_Obj[13]; + return caml_call2(symbol$8,runtime.caml_obj_tag(value),_dg_) ?caml_jsbytes_of_string(value) :value instanceof mlInt64_constr ?caml_js_from_array([0,255,value.lo,value.mi,value.hi]) :value} function output(t9){return t11$1.stringify(t9,t10)} var Js_of_ocaml_Json=[0,output,unsafe_input]; - caml_register_global(1667,Js_of_ocaml_Json,"Js_of_ocaml__Json"); + caml_register_global(1685,Js_of_ocaml_Json,"Js_of_ocaml__Json"); function string_of_name(param) - {var _de_=param; - if(74 <= _de_) - {if(111 <= _de_) - switch(_de_) + {var _df_=param; + if(74 <= _df_) + {if(111 <= _df_) + switch(_df_) {case 111:return cst_palevioletred; case 112:return cst_papayawhip; case 113:return cst_peachpuff; @@ -51220,7 +49793,7 @@ case 144:return cst_whitesmoke; case 145:return cst_yellow; default:return cst_yellowgreen} - switch(_de_) + switch(_df_) {case 74:return cst_lightpink; case 75:return cst_lightsalmon; case 76:return cst_lightseagreen; @@ -51258,8 +49831,8 @@ case 108:return cst_palegoldenrod; case 109:return cst_palegreen; default:return cst_paleturquoise}} - if(37 <= _de_) - switch(_de_) + if(37 <= _df_) + switch(_df_) {case 37:return cst_darkslategrey; case 38:return cst_darkturquoise; case 39:return cst_darkviolet; @@ -51297,7 +49870,7 @@ case 71:return cst_lightgray; case 72:return cst_lightgreen; default:return cst_lightgrey} - switch(_de_) + switch(_df_) {case 0:return cst_aliceblue; case 1:return cst_antiquewhite; case 2:return cst_aqua; @@ -51529,164 +50102,164 @@ if(! caml_string_notequal(s,cst_bisque$0))return 6; if(! caml_string_notequal(s,cst_black$0))return 7; if(! caml_string_notequal(s,cst_blanchedalmond$0))return 8}}}} - var _dd_=caml_call2(Stdlib[28],s,cst_is_not_a_valid_color_name); - throw [0,Stdlib[6],_dd_]} + var _de_=caml_call2(Stdlib[28],s,cst_is_not_a_valid_color_name); + throw [0,Stdlib[6],_de_]} function rgb_of_name(param) - {var _dc_=param; - if(74 <= _dc_) - {if(111 <= _dc_) - switch(_dc_) - {case 111:return _bq_; - case 112:return _br_; - case 113:return _bs_; - case 114:return _bt_; - case 115:return _bu_; - case 116:return _bv_; - case 117:return _bw_; - case 118:return _bx_; - case 119:return _by_; - case 120:return _bz_; - case 121:return _bA_; - case 122:return _bB_; - case 123:return _bC_; - case 124:return _bD_; - case 125:return _bE_; - case 126:return _bF_; - case 127:return _bG_; - case 128:return _bH_; - case 129:return _bI_; - case 130:return _bJ_; - case 131:return _bK_; - case 132:return _bL_; - case 133:return _bM_; - case 134:return _bN_; - case 135:return _bO_; - case 136:return _bP_; - case 137:return _bQ_; - case 138:return _bR_; - case 139:return _bS_; - case 140:return _bT_; - case 141:return _bU_; - case 142:return _bV_; - case 143:return _bW_; - case 144:return _bX_; - case 145:return _bY_; - default:return _bZ_} - switch(_dc_) - {case 74:return _aR_; - case 75:return _aS_; - case 76:return _aT_; - case 77:return _aU_; - case 78:return _aV_; - case 79:return _aW_; - case 80:return _aX_; - case 81:return _aY_; - case 82:return _aZ_; - case 83:return _a0_; - case 84:return _a1_; - case 85:return _a2_; - case 86:return _a3_; - case 87:return _a4_; - case 88:return _a5_; - case 89:return _a6_; - case 90:return _a7_; - case 91:return _a8_; - case 92:return _a9_; - case 93:return _a__; - case 94:return _a$_; - case 95:return _ba_; - case 96:return _bb_; - case 97:return _bc_; - case 98:return _bd_; - case 99:return _be_; - case 100:return _bf_; - case 101:return _bg_; - case 102:return _bh_; - case 103:return _bi_; - case 104:return _bj_; - case 105:return _bk_; - case 106:return _bl_; - case 107:return _bm_; - case 108:return _bn_; - case 109:return _bo_; - default:return _bp_}} - if(37 <= _dc_) - switch(_dc_) - {case 37:return _ag_; - case 38:return _ah_; - case 39:return _ai_; - case 40:return _aj_; - case 41:return _ak_; - case 42:return _al_; - case 43:return _am_; - case 44:return _an_; - case 45:return _ao_; - case 46:return _ap_; - case 47:return _aq_; - case 48:return _ar_; - case 49:return _as_; - case 50:return _at_; - case 51:return _au_; - case 52:return _av_; - case 53:return _aw_; - case 54:return _ax_; - case 55:return _ay_; - case 56:return _az_; - case 57:return _aA_; - case 58:return _aB_; - case 59:return _aC_; - case 60:return _aD_; - case 61:return _aE_; - case 62:return _aF_; - case 63:return _aG_; - case 64:return _aH_; - case 65:return _aI_; - case 66:return _aJ_; - case 67:return _aK_; - case 68:return _aL_; - case 69:return _aM_; - case 70:return _aN_; - case 71:return _aO_; - case 72:return _aP_; - default:return _aQ_} - switch(_dc_) - {case 0:return _x_; - case 1:return _y_; - case 2:return _z_; - case 3:return _A_; - case 4:return _B_; - case 5:return _C_; - case 6:return _D_; - case 7:return _E_; - case 8:return _F_; - case 9:return _G_; - case 10:return _H_; - case 11:return _I_; - case 12:return _J_; - case 13:return _K_; - case 14:return _L_; - case 15:return _M_; - case 16:return _N_; - case 17:return _O_; - case 18:return _P_; - case 19:return _Q_; - case 20:return _R_; - case 21:return _S_; - case 22:return _T_; - case 23:return _U_; - case 24:return _V_; - case 25:return _W_; - case 26:return _X_; - case 27:return _Y_; - case 28:return _Z_; - case 29:return ___; - case 30:return _$_; - case 31:return _aa_; - case 32:return _ab_; - case 33:return _ac_; - case 34:return _ad_; - case 35:return _ae_; - default:return _af_}} + {var _dd_=param; + if(74 <= _dd_) + {if(111 <= _dd_) + switch(_dd_) + {case 111:return _br_; + case 112:return _bs_; + case 113:return _bt_; + case 114:return _bu_; + case 115:return _bv_; + case 116:return _bw_; + case 117:return _bx_; + case 118:return _by_; + case 119:return _bz_; + case 120:return _bA_; + case 121:return _bB_; + case 122:return _bC_; + case 123:return _bD_; + case 124:return _bE_; + case 125:return _bF_; + case 126:return _bG_; + case 127:return _bH_; + case 128:return _bI_; + case 129:return _bJ_; + case 130:return _bK_; + case 131:return _bL_; + case 132:return _bM_; + case 133:return _bN_; + case 134:return _bO_; + case 135:return _bP_; + case 136:return _bQ_; + case 137:return _bR_; + case 138:return _bS_; + case 139:return _bT_; + case 140:return _bU_; + case 141:return _bV_; + case 142:return _bW_; + case 143:return _bX_; + case 144:return _bY_; + case 145:return _bZ_; + default:return _b0_} + switch(_dd_) + {case 74:return _aS_; + case 75:return _aT_; + case 76:return _aU_; + case 77:return _aV_; + case 78:return _aW_; + case 79:return _aX_; + case 80:return _aY_; + case 81:return _aZ_; + case 82:return _a0_; + case 83:return _a1_; + case 84:return _a2_; + case 85:return _a3_; + case 86:return _a4_; + case 87:return _a5_; + case 88:return _a6_; + case 89:return _a7_; + case 90:return _a8_; + case 91:return _a9_; + case 92:return _a__; + case 93:return _a$_; + case 94:return _ba_; + case 95:return _bb_; + case 96:return _bc_; + case 97:return _bd_; + case 98:return _be_; + case 99:return _bf_; + case 100:return _bg_; + case 101:return _bh_; + case 102:return _bi_; + case 103:return _bj_; + case 104:return _bk_; + case 105:return _bl_; + case 106:return _bm_; + case 107:return _bn_; + case 108:return _bo_; + case 109:return _bp_; + default:return _bq_}} + if(37 <= _dd_) + switch(_dd_) + {case 37:return _ah_; + case 38:return _ai_; + case 39:return _aj_; + case 40:return _ak_; + case 41:return _al_; + case 42:return _am_; + case 43:return _an_; + case 44:return _ao_; + case 45:return _ap_; + case 46:return _aq_; + case 47:return _ar_; + case 48:return _as_; + case 49:return _at_; + case 50:return _au_; + case 51:return _av_; + case 52:return _aw_; + case 53:return _ax_; + case 54:return _ay_; + case 55:return _az_; + case 56:return _aA_; + case 57:return _aB_; + case 58:return _aC_; + case 59:return _aD_; + case 60:return _aE_; + case 61:return _aF_; + case 62:return _aG_; + case 63:return _aH_; + case 64:return _aI_; + case 65:return _aJ_; + case 66:return _aK_; + case 67:return _aL_; + case 68:return _aM_; + case 69:return _aN_; + case 70:return _aO_; + case 71:return _aP_; + case 72:return _aQ_; + default:return _aR_} + switch(_dd_) + {case 0:return _y_; + case 1:return _z_; + case 2:return _A_; + case 3:return _B_; + case 4:return _C_; + case 5:return _D_; + case 6:return _E_; + case 7:return _F_; + case 8:return _G_; + case 9:return _H_; + case 10:return _I_; + case 11:return _J_; + case 12:return _K_; + case 13:return _L_; + case 14:return _M_; + case 15:return _N_; + case 16:return _O_; + case 17:return _P_; + case 18:return _Q_; + case 19:return _R_; + case 20:return _S_; + case 21:return _T_; + case 22:return _U_; + case 23:return _V_; + case 24:return _W_; + case 25:return _X_; + case 26:return _Y_; + case 27:return _Z_; + case 28:return ___; + case 29:return _$_; + case 30:return _aa_; + case 31:return _ab_; + case 32:return _ac_; + case 33:return _ad_; + case 34:return _ae_; + case 35:return _af_; + default:return _ag_}} function rgb(a,r,g,b) {if(a){var a$0=a[1];return [3,[0,r,g,b,a$0]]}return [1,[0,r,g,b]]} function hsl(a,h,s,l) @@ -51696,10 +50269,10 @@ {case 0:var n=param[1];return string_of_name(n); case 1: var match=param[1],b=match[3],g=match[2],r=match[1]; - return caml_call4(Stdlib_Printf[4],_b0_,r,g,b); + return caml_call4(Stdlib_Printf[4],_b1_,r,g,b); case 2: var match$0=param[1],b$0=match$0[3],g$0=match$0[2],r$0=match$0[1]; - return caml_call4(Stdlib_Printf[4],_b1_,r$0,g$0,b$0); + return caml_call4(Stdlib_Printf[4],_b2_,r$0,g$0,b$0); case 3: var match$1=param[1], @@ -51707,7 +50280,7 @@ b$1=match$1[3], g$1=match$1[2], r$1=match$1[1]; - return caml_call5(Stdlib_Printf[4],_b2_,r$1,g$1,b$1,a); + return caml_call5(Stdlib_Printf[4],_b3_,r$1,g$1,b$1,a); case 4: var match$2=param[1], @@ -51715,10 +50288,10 @@ b$2=match$2[3], g$2=match$2[2], r$2=match$2[1]; - return caml_call5(Stdlib_Printf[4],_b3_,r$2,g$2,b$2,a$0); + return caml_call5(Stdlib_Printf[4],_b4_,r$2,g$2,b$2,a$0); case 5: var match$3=param[1],l=match$3[3],s=match$3[2],h=match$3[1]; - return caml_call4(Stdlib_Printf[4],_b4_,h,s,l); + return caml_call4(Stdlib_Printf[4],_b5_,h,s,l); default: var match$4=param[1], @@ -51726,23 +50299,23 @@ l$0=match$4[3], s$0=match$4[2], h$0=match$4[1]; - return caml_call5(Stdlib_Printf[4],_b5_,h$0,s$0,l$0,a$1)}} + return caml_call5(Stdlib_Printf[4],_b6_,h$0,s$0,l$0,a$1)}} function hex_of_rgb(param) {var blue=param[3],green=param[2],red=param[1]; function in_range(i) {var - _c__=caml_call2(symbol$5,i,0), - _c$_=_c__ || caml_call2(symbol$9,i,255); - if(_c$_) + _c$_=caml_call2(symbol$5,i,0), + _da_=_c$_ || caml_call2(symbol$9,i,255); + if(_da_) {var - _da_=caml_call1(Stdlib[33],i), - _db_=caml_call2(Stdlib[28],_da_,cst_is_out_of_valid_range); - throw [0,Stdlib[6],_db_]} - return _c$_} + _db_=caml_call1(Stdlib[33],i), + _dc_=caml_call2(Stdlib[28],_db_,cst_is_out_of_valid_range); + throw [0,Stdlib[6],_dc_]} + return _da_} in_range(red); in_range(green); in_range(blue); - return caml_call4(Stdlib_Printf[4],_b6_,red,green,blue)} + return caml_call4(Stdlib_Printf[4],_b7_,red,green,blue)} function js_t_of_js_string(s) {var t0=caml_jsbytes_of_string(cst_rgb_s_d_s_d_s_d), @@ -51775,12 +50348,12 @@ && ! (t23.test(s) | 0)) - {var _c7_=caml_string_of_jsstring(s); - if(caml_call2(Stdlib_List[36],_c7_,_b7_))return s; + {var _c8_=caml_string_of_jsstring(s); + if(caml_call2(Stdlib_List[36],_c8_,_b8_))return s; var - _c8_=caml_string_of_jsstring(s), - _c9_=caml_call2(Stdlib[28],_c8_,cst_is_not_a_valid_color); - throw [0,Stdlib[6],_c9_]} + _c9_=caml_string_of_jsstring(s), + _c__=caml_call2(Stdlib[28],_c9_,cst_is_not_a_valid_color); + throw [0,Stdlib[6],_c__]} return s} function js(c) {if(0 === c[0]) @@ -51789,15 +50362,15 @@ function ml(c) {var s=caml_string_of_jsstring(c); try - {var _cU_=[0,name_of_string(s)];return _cU_} - catch(_cV_) - {_cV_ = caml_wrap_exception(_cV_); - if(_cV_[1] === Stdlib[6]) + {var _cV_=[0,name_of_string(s)];return _cV_} + catch(_cW_) + {_cW_ = caml_wrap_exception(_cW_); + if(_cW_[1] === Stdlib[6]) {var fail= function(param) - {var _c6_=caml_call2(Stdlib[28],s,cst_is_not_a_valid_color$0); - throw [0,Stdlib[6],_c6_]}, + {var _c7_=caml_call2(Stdlib[28],s,cst_is_not_a_valid_color$0); + throw [0,Stdlib[6],_c7_]}, re_rgb=regexp(cst_rgba_d_d_d_d_d), re_rgb_pct=regexp(cst_rgba_d_d_d_d_d$0), re_hsl=regexp(cst_hsla_d_d_d_d_d), @@ -51806,34 +50379,34 @@ {if(param) {var i=param[1]; try - {var _c4_=caml_int_of_string(i);return _c4_} - catch(_c5_) - {_c5_ = caml_wrap_exception(_c5_); - if(_c5_[1] === Stdlib[6]) - var s=_c5_[2]; + {var _c5_=caml_int_of_string(i);return _c5_} + catch(_c6_) + {_c6_ = caml_wrap_exception(_c6_); + if(_c6_[1] === Stdlib[6]) + var s=_c6_[2]; else - {if(_c5_[1] !== Stdlib[7])throw _c5_;var s=_c5_[2]} + {if(_c6_[1] !== Stdlib[7])throw _c6_;var s=_c6_[2]} var - _c1_=caml_call2(Stdlib[28],cst$39,s), - _c2_=caml_call2(Stdlib[28],i,_c1_), - _c3_=caml_call2(Stdlib[28],cst_color_conversion_error,_c2_); - throw [0,Stdlib[6],_c3_]}} + _c2_=caml_call2(Stdlib[28],cst$39,s), + _c3_=caml_call2(Stdlib[28],i,_c2_), + _c4_=caml_call2(Stdlib[28],cst_color_conversion_error,_c3_); + throw [0,Stdlib[6],_c4_]}} return fail(0)}, f_of_s= function(f) {try - {var _cZ_=caml_float_of_string(f);return _cZ_} - catch(_c0_) - {_c0_ = caml_wrap_exception(_c0_); - if(_c0_[1] === Stdlib[6]) - var s=_c0_[2]; + {var _c0_=caml_float_of_string(f);return _c0_} + catch(_c1_) + {_c1_ = caml_wrap_exception(_c1_); + if(_c1_[1] === Stdlib[6]) + var s=_c1_[2]; else - {if(_c0_[1] !== Stdlib[7])throw _c0_;var s=_c0_[2]} + {if(_c1_[1] !== Stdlib[7])throw _c1_;var s=_c1_[2]} var - _cW_=caml_call2(Stdlib[28],cst$40,s), - _cX_=caml_call2(Stdlib[28],f,_cW_), - _cY_=caml_call2(Stdlib[28],cst_color_conversion_error$0,_cX_); - throw [0,Stdlib[6],_cY_]}}, + _cX_=caml_call2(Stdlib[28],cst$40,s), + _cY_=caml_call2(Stdlib[28],f,_cX_), + _cZ_=caml_call2(Stdlib[28],cst_color_conversion_error$0,_cY_); + throw [0,Stdlib[6],_cZ_]}}, match=string_match(re_rgb,s,0); if(match) {var @@ -51844,19 +50417,19 @@ alpha=matched_group(r,5), match$0=matched_group(r,1); if(match$0) - {var _cC_=match$0[1]; - if(! caml_string_notequal(_cC_,cst_rgb)) + {var _cD_=match$0[1]; + if(! caml_string_notequal(_cD_,cst_rgb)) {if(alpha)return fail(0); - var _cG_=i_of_s_o(blue),_cH_=i_of_s_o(green); - return [1,[0,i_of_s_o(red),_cH_,_cG_]]} - if(! caml_string_notequal(_cC_,cst_rgba)) + var _cH_=i_of_s_o(blue),_cI_=i_of_s_o(green); + return [1,[0,i_of_s_o(red),_cI_,_cH_]]} + if(! caml_string_notequal(_cD_,cst_rgba)) {if(alpha) {var a=alpha[1], - _cD_=f_of_s(a), - _cE_=i_of_s_o(blue), - _cF_=i_of_s_o(green); - return [3,[0,i_of_s_o(red),_cF_,_cE_,_cD_]]} + _cE_=f_of_s(a), + _cF_=i_of_s_o(blue), + _cG_=i_of_s_o(green); + return [3,[0,i_of_s_o(red),_cG_,_cF_,_cE_]]} return fail(0)}} return fail(0)} var match$1=string_match(re_rgb_pct,s,0); @@ -51869,19 +50442,19 @@ alpha$0=matched_group(r$0,5), match$2=matched_group(r$0,1); if(match$2) - {var _cI_=match$2[1]; - if(! caml_string_notequal(_cI_,cst_rgb$0)) + {var _cJ_=match$2[1]; + if(! caml_string_notequal(_cJ_,cst_rgb$0)) {if(alpha$0)return fail(0); - var _cM_=i_of_s_o(blue$0),_cN_=i_of_s_o(green$0); - return [2,[0,i_of_s_o(red$0),_cN_,_cM_]]} - if(! caml_string_notequal(_cI_,cst_rgba$0)) + var _cN_=i_of_s_o(blue$0),_cO_=i_of_s_o(green$0); + return [2,[0,i_of_s_o(red$0),_cO_,_cN_]]} + if(! caml_string_notequal(_cJ_,cst_rgba$0)) {if(alpha$0) {var a$0=alpha$0[1], - _cJ_=f_of_s(a$0), - _cK_=i_of_s_o(blue$0), - _cL_=i_of_s_o(green$0); - return [4,[0,i_of_s_o(red$0),_cL_,_cK_,_cJ_]]} + _cK_=f_of_s(a$0), + _cL_=i_of_s_o(blue$0), + _cM_=i_of_s_o(green$0); + return [4,[0,i_of_s_o(red$0),_cM_,_cL_,_cK_]]} return fail(0)}} return fail(0)} var match$3=string_match(re_hsl,s,0); @@ -51894,113 +50467,113 @@ alpha$1=matched_group(r$1,5), match$4=matched_group(r$1,1); if(match$4) - {var _cO_=match$4[1]; - if(! caml_string_notequal(_cO_,cst_hsl)) + {var _cP_=match$4[1]; + if(! caml_string_notequal(_cP_,cst_hsl)) {if(alpha$1)return fail(0); - var _cS_=i_of_s_o(blue$1),_cT_=i_of_s_o(green$1); - return [5,[0,i_of_s_o(red$1),_cT_,_cS_]]} - if(! caml_string_notequal(_cO_,cst_hsla)) + var _cT_=i_of_s_o(blue$1),_cU_=i_of_s_o(green$1); + return [5,[0,i_of_s_o(red$1),_cU_,_cT_]]} + if(! caml_string_notequal(_cP_,cst_hsla)) {if(alpha$1) {var a$1=alpha$1[1], - _cP_=f_of_s(a$1), - _cQ_=i_of_s_o(blue$1), - _cR_=i_of_s_o(green$1); - return [6,[0,i_of_s_o(red$1),_cR_,_cQ_,_cP_]]} + _cQ_=f_of_s(a$1), + _cR_=i_of_s_o(blue$1), + _cS_=i_of_s_o(green$1); + return [6,[0,i_of_s_o(red$1),_cS_,_cR_,_cQ_]]} return fail(0)}} return fail(0)} return fail(0)} - throw _cV_}} + throw _cW_}} function string_of_t$0(param) {if(typeof param === "number") return cst_0; else switch(param[0]) {case 0: - var f=param[1];return caml_call3(Stdlib_Printf[4],_b8_,f,cst_em$0); + var f=param[1];return caml_call3(Stdlib_Printf[4],_b9_,f,cst_em$0); case 1: var f$0=param[1]; - return caml_call3(Stdlib_Printf[4],_b9_,f$0,cst_ex); + return caml_call3(Stdlib_Printf[4],_b__,f$0,cst_ex); case 2: var f$1=param[1]; - return caml_call3(Stdlib_Printf[4],_b__,f$1,cst_px); + return caml_call3(Stdlib_Printf[4],_b$_,f$1,cst_px); case 3: var f$2=param[1]; - return caml_call3(Stdlib_Printf[4],_b$_,f$2,cst_gd); + return caml_call3(Stdlib_Printf[4],_ca_,f$2,cst_gd); case 4: var f$3=param[1]; - return caml_call3(Stdlib_Printf[4],_ca_,f$3,cst_rem); + return caml_call3(Stdlib_Printf[4],_cb_,f$3,cst_rem); case 5: var f$4=param[1]; - return caml_call3(Stdlib_Printf[4],_cb_,f$4,cst_vw); + return caml_call3(Stdlib_Printf[4],_cc_,f$4,cst_vw); case 6: var f$5=param[1]; - return caml_call3(Stdlib_Printf[4],_cc_,f$5,cst_vh); + return caml_call3(Stdlib_Printf[4],_cd_,f$5,cst_vh); case 7: var f$6=param[1]; - return caml_call3(Stdlib_Printf[4],_cd_,f$6,cst_vm); + return caml_call3(Stdlib_Printf[4],_ce_,f$6,cst_vm); case 8: var f$7=param[1]; - return caml_call3(Stdlib_Printf[4],_ce_,f$7,cst_ch); + return caml_call3(Stdlib_Printf[4],_cf_,f$7,cst_ch); case 9: var f$8=param[1]; - return caml_call3(Stdlib_Printf[4],_cf_,f$8,cst_mm); + return caml_call3(Stdlib_Printf[4],_cg_,f$8,cst_mm); case 10: var f$9=param[1]; - return caml_call3(Stdlib_Printf[4],_cg_,f$9,cst_cm); + return caml_call3(Stdlib_Printf[4],_ch_,f$9,cst_cm); case 11: var f$10=param[1]; - return caml_call3(Stdlib_Printf[4],_ch_,f$10,cst_in); + return caml_call3(Stdlib_Printf[4],_ci_,f$10,cst_in); case 12: var f$11=param[1]; - return caml_call3(Stdlib_Printf[4],_ci_,f$11,cst_pt); + return caml_call3(Stdlib_Printf[4],_cj_,f$11,cst_pt); default: var f$12=param[1]; - return caml_call3(Stdlib_Printf[4],_cj_,f$12,cst_pc)}} + return caml_call3(Stdlib_Printf[4],_ck_,f$12,cst_pc)}} function js$0(t){return caml_jsstring_of_string(string_of_t$0(t))} function ml$0(t) {var s=caml_string_of_jsstring(t); if(caml_call2(String[68],s,cst_0$0))return 0; function fail(param) - {var _cB_=caml_call2(Stdlib[28],s,cst_is_not_a_valid_length); - throw [0,Stdlib[6],_cB_]} + {var _cC_=caml_call2(Stdlib[28],s,cst_is_not_a_valid_length); + throw [0,Stdlib[6],_cC_]} var re=regexp(cst_d_d_s_S),match=string_match(re,s,0); if(match) {var r=match[1],match$0=matched_group(r,1); if(match$0) {var f=match$0[1]; try - {var _cz_=caml_float_of_string(f)} + {var _cA_=caml_float_of_string(f)} catch(exn) {exn = caml_wrap_exception(exn); if(exn[1] === Stdlib[6]) {var s$0=exn[2], - _cy_=caml_call2(Stdlib[28],cst_length_conversion_error,s$0); - throw [0,Stdlib[6],_cy_]} + _cz_=caml_call2(Stdlib[28],cst_length_conversion_error,s$0); + throw [0,Stdlib[6],_cz_]} throw exn} - var f$0=_cz_} + var f$0=_cA_} else var f$0=fail(0); var match$1=matched_group(r,2); if(match$1) - {var _cA_=match$1[1],switch$0=caml_string_compare(_cA_,cst_pc$0); + {var _cB_=match$1[1],switch$0=caml_string_compare(_cB_,cst_pc$0); if(0 <= switch$0) {if(! (0 < switch$0))return [13,f$0]; - if(! caml_string_notequal(_cA_,cst_pt$0))return [12,f$0]; - if(! caml_string_notequal(_cA_,cst_px$0))return [2,f$0]; - if(! caml_string_notequal(_cA_,cst_rem$0))return [4,f$0]; - if(! caml_string_notequal(_cA_,cst_vh$0))return [6,f$0]; - if(! caml_string_notequal(_cA_,cst_vm$0))return [7,f$0]; - if(! caml_string_notequal(_cA_,cst_vw$0))return [5,f$0]} + if(! caml_string_notequal(_cB_,cst_pt$0))return [12,f$0]; + if(! caml_string_notequal(_cB_,cst_px$0))return [2,f$0]; + if(! caml_string_notequal(_cB_,cst_rem$0))return [4,f$0]; + if(! caml_string_notequal(_cB_,cst_vh$0))return [6,f$0]; + if(! caml_string_notequal(_cB_,cst_vm$0))return [7,f$0]; + if(! caml_string_notequal(_cB_,cst_vw$0))return [5,f$0]} else - {if(! caml_string_notequal(_cA_,cst_ch$0))return [8,f$0]; - if(! caml_string_notequal(_cA_,cst_cm$0))return [10,f$0]; - if(! caml_string_notequal(_cA_,cst_em$1))return [0,f$0]; - if(! caml_string_notequal(_cA_,cst_ex$0))return [1,f$0]; - if(! caml_string_notequal(_cA_,cst_gd$0))return [3,f$0]; - if(! caml_string_notequal(_cA_,cst_in$0))return [11,f$0]; - if(! caml_string_notequal(_cA_,cst_mm$0))return [9,f$0]} + {if(! caml_string_notequal(_cB_,cst_ch$0))return [8,f$0]; + if(! caml_string_notequal(_cB_,cst_cm$0))return [10,f$0]; + if(! caml_string_notequal(_cB_,cst_em$1))return [0,f$0]; + if(! caml_string_notequal(_cB_,cst_ex$0))return [1,f$0]; + if(! caml_string_notequal(_cB_,cst_gd$0))return [3,f$0]; + if(! caml_string_notequal(_cB_,cst_in$0))return [11,f$0]; + if(! caml_string_notequal(_cB_,cst_mm$0))return [9,f$0]} return fail(0)} return fail(0)} return fail(0)} @@ -52008,47 +50581,47 @@ function string_of_t$1(param) {switch(param[0]) {case 0: - var f=param[1];return caml_call3(Stdlib_Printf[4],_ck_,f,cst_deg); + var f=param[1];return caml_call3(Stdlib_Printf[4],_cl_,f,cst_deg); case 1: var f$0=param[1]; - return caml_call3(Stdlib_Printf[4],_cl_,f$0,cst_grad); + return caml_call3(Stdlib_Printf[4],_cm_,f$0,cst_grad); case 2: var f$1=param[1]; - return caml_call3(Stdlib_Printf[4],_cm_,f$1,cst_rad); + return caml_call3(Stdlib_Printf[4],_cn_,f$1,cst_rad); default: var f$2=param[1]; - return caml_call3(Stdlib_Printf[4],_cn_,f$2,cst_turns)}} + return caml_call3(Stdlib_Printf[4],_co_,f$2,cst_turns)}} function js$1(t){return caml_jsstring_of_string(string_of_t$1(t))} function ml$1(j) {var s=caml_string_of_jsstring(j),re=regexp(cst_d_d_deg_grad_rad_turns); function fail(param) - {var _cx_=caml_call2(Stdlib[28],s,cst_is_not_a_valid_length$0); - throw [0,Stdlib[6],_cx_]} + {var _cy_=caml_call2(Stdlib[28],s,cst_is_not_a_valid_length$0); + throw [0,Stdlib[6],_cy_]} var match=string_match(re,s,0); if(match) {var r=match[1],match$0=matched_group(r,1); if(match$0) {var f=match$0[1]; try - {var _cv_=caml_float_of_string(f)} + {var _cw_=caml_float_of_string(f)} catch(exn) {exn = caml_wrap_exception(exn); if(exn[1] === Stdlib[6]) {var s$0=exn[2], - _cu_=caml_call2(Stdlib[28],cst_length_conversion_error$0,s$0); - throw [0,Stdlib[6],_cu_]} + _cv_=caml_call2(Stdlib[28],cst_length_conversion_error$0,s$0); + throw [0,Stdlib[6],_cv_]} throw exn} - var f$0=_cv_} + var f$0=_cw_} else var f$0=fail(0); var match$1=matched_group(r,2); if(match$1) - {var _cw_=match$1[1]; - if(! caml_string_notequal(_cw_,cst_deg$0))return [0,f$0]; - if(! caml_string_notequal(_cw_,cst_grad$0))return [1,f$0]; - if(! caml_string_notequal(_cw_,cst_rad$0))return [2,f$0]; - if(! caml_string_notequal(_cw_,cst_turns$0))return [3,f$0]} + {var _cx_=match$1[1]; + if(! caml_string_notequal(_cx_,cst_deg$0))return [0,f$0]; + if(! caml_string_notequal(_cx_,cst_grad$0))return [1,f$0]; + if(! caml_string_notequal(_cx_,cst_rad$0))return [2,f$0]; + if(! caml_string_notequal(_cx_,cst_turns$0))return [3,f$0]} return fail(0)} return fail(0)} var @@ -52067,18 +50640,18 @@ js_t_of_js_string], Length, Angle]; - caml_register_global(1668,Js_of_ocaml_CSS,"Js_of_ocaml__CSS"); + caml_register_global(1686,Js_of_ocaml_CSS,"Js_of_ocaml__CSS"); function listen(opt,target,typ,cb) {if(opt)var sth=opt[1],capture=sth;else var capture=0; - var _ct_=! ! capture; + var _cu_=! ! capture; return addEventListener (target, typ, full_handler(function(n,e){return ! ! caml_call2(cb,n,e)}), - _ct_)} - var Js_of_ocaml_Dom_events=[0,Event$0,listen,removeEventListener]; + _cu_)} + var Js_of_ocaml_Dom_events=[0,_n_,listen,removeEventListener]; caml_register_global - (1669,Js_of_ocaml_Dom_events,"Js_of_ocaml__Dom_events"); + (1687,Js_of_ocaml_Dom_events,"Js_of_ocaml__Dom_events"); var t0="http://www.w3.org/2000/svg", SVGError=[248,cst_Js_of_ocaml_Dom_svg_SVGErr,caml_fresh_oo_id(0)]; @@ -52165,17 +50738,17 @@ function createvkern(doc){return unsafeCreateElement$0(doc,cst_vkern)} var svg_element=Unsafe[1].SVGElement,document$0=Unsafe[1].document; function getElementById$0(id) - {function _cq_(e){if(e instanceof svg_element)return e;throw Stdlib[8]} - function _cr_(param){throw Stdlib[8]} + {function _cr_(e){if(e instanceof svg_element)return e;throw Stdlib[8]} + function _cs_(param){throw Stdlib[8]} var t6=caml_jsstring_of_string(id), t7=Unsafe[1].document, - _cs_=t7.getElementById(t6); - return caml_call3(Opt[7],_cs_,_cr_,_cq_)} + _ct_=t7.getElementById(t6); + return caml_call3(Opt[7],_ct_,_cs_,_cr_)} function element$2(e){return e instanceof svg_element?e:no_handler} function unsafeCoerce$0(e,tag) - {var t9=e.tagName,_cp_=caml_jsstring_of_string(tag); - return t9.toLowerCase() === _cp_?e:no_handler} + {var t9=e.tagName,_cq_=caml_jsstring_of_string(tag); + return t9.toLowerCase() === _cq_?e:no_handler} function a$0(e){return unsafeCoerce$0(e,cst_a$3)} function altGlyph(e){return unsafeCoerce$0(e,cst_altglyph$0)} function altGlyphDef(e){return unsafeCoerce$0(e,cst_altglyphdef$0)} @@ -52351,7 +50924,7 @@ use, view, vkern]]; - caml_register_global(1670,Js_of_ocaml_Dom_svg,"Js_of_ocaml__Dom_svg"); + caml_register_global(1688,Js_of_ocaml_Dom_svg,"Js_of_ocaml__Dom_svg"); function withCredentials(b) {var t1={},t0=! ! b;t1.withCredentials = t0;return t1} var @@ -52360,11 +50933,11 @@ Js_of_ocaml_EventSource= [0,withCredentials,eventSource,eventSource_options,addEventListener]; caml_register_global - (1671,Js_of_ocaml_EventSource,"Js_of_ocaml__EventSource"); + (1689,Js_of_ocaml_EventSource,"Js_of_ocaml__EventSource"); var console=runtime.caml_js_get_console(0), Js_of_ocaml_Firebug=[0,console]; - caml_register_global(1672,Js_of_ocaml_Firebug,"Js_of_ocaml__Firebug"); + caml_register_global(1690,Js_of_ocaml_Firebug,"Js_of_ocaml__Firebug"); function empty_position_options(param){return {}} var t1$0=Unsafe[1].navigator, @@ -52374,7 +50947,7 @@ Js_of_ocaml_Geolocation= [0,empty_position_options,geolocation,is_supported$3]; caml_register_global - (1673,Js_of_ocaml_Geolocation,"Js_of_ocaml__Geolocation"); + (1691,Js_of_ocaml_Geolocation,"Js_of_ocaml__Geolocation"); function empty_intersection_observer_op(param){return {}} var intersectionObserver_unsafe=Unsafe[1].IntersectionObserver; function is_supported$4(param) @@ -52386,7 +50959,7 @@ is_supported$4, intersectionObserver_unsafe]; caml_register_global - (1674,Js_of_ocaml_IntersectionObserv,"Js_of_ocaml__IntersectionObserver"); + (1692,Js_of_ocaml_IntersectionObserv,"Js_of_ocaml__IntersectionObserver"); function object_options(param){return {"localeMatcher":"best fit"}} function options(param) {return {"localeMatcher":"best fit", @@ -52397,7 +50970,12 @@ "caseFirst":"false"}} var Collator=[0,object_options,options]; function options$0(param) - {return {"localeMatcher":"best fit", + {return {"dateStyle":t39, + "timeStyle":t39, + "calendar":t39, + "dayPeriod":t39, + "numberingSystem":t39, + "localeMatcher":"best fit", "timeZone":t39, "hour12":t39, "hourCycle":t39, @@ -52410,14 +50988,26 @@ "hour":t39, "minute":t39, "second":t39, + "fractionalSecondDigits":t39, "timeZoneName":t39}} var DateTimeFormat=[0,object_options,options$0]; function options$1(param) - {return {"localeMatcher":"best fit", - "style":"decimal", + {return {"compactDisplay":t39, "currency":t39, "currencyDisplay":t39, - "useGrouping":t25, + "currencySign":t39, + "localeMatcher":"best fit", + "notation":t39, + "numberingSystem":t39, + "signDisplay":t39, + "style":"decimal", + "unit":t39, + "unitDisplay":t39, + "useGrouping":t38, + "roundingMode":t39, + "roundingPriority":t39, + "roundingIncrement":t39, + "trailingZeroDisplay":t39, "minimumIntegerDigits":t39, "minimumFractionDigits":t39, "maximumFractionDigits":t39, @@ -52429,14 +51019,14 @@ var PluralRules=[0,object_options,options$2], intl=Unsafe[1].Intl, - t35=Unsafe[1].Intl, - collator_constr=t35.Collator, - t37=Unsafe[1].Intl, - dateTimeFormat_constr=t37.DateTimeFormat, - t39$0=Unsafe[1].Intl, - numberFormat_constr=t39$0.NumberFormat, - t41=Unsafe[1].Intl, - pluralRules_constr=t41.PluralRules; + t52$0=Unsafe[1].Intl, + collator_constr=t52$0.Collator, + t54=Unsafe[1].Intl, + dateTimeFormat_constr=t54.DateTimeFormat, + t56=Unsafe[1].Intl, + numberFormat_constr=t56.NumberFormat, + t58=Unsafe[1].Intl, + pluralRules_constr=t58.PluralRules; function is_supported$5(param){return caml_call1(Optdef[5],intl)} var Js_of_ocaml_Intl= @@ -52451,14 +51041,14 @@ numberFormat_constr, pluralRules_constr, is_supported$5]; - caml_register_global(1675,Js_of_ocaml_Intl,"Js_of_ocaml__Intl"); + caml_register_global(1693,Js_of_ocaml_Intl,"Js_of_ocaml__Intl"); var Js_of_ocaml$0=[0]; - caml_register_global(1676,Js_of_ocaml$0,"Js_of_ocaml"); + caml_register_global(1694,Js_of_ocaml$0,"Js_of_ocaml"); return} (globalThis)); -//# 1 "../../runtimes/jsoo/.runtime_jsoo.objs/runtime_jsoo.cma.js" +//# 1 "../../runtimes/jsoo/.runtime_jsoo.objs/jsoo/default/runtime_jsoo.cma.js" (function(globalThis) {"use strict"; var @@ -52476,10 +51066,10 @@ {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])} function caml_call3(f,a0,a1,a2) {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])} - function caml_call4(f,a0,a1,a2,a3) - {return f.length == 4 - ?f(a0,a1,a2,a3) - :runtime.caml_call_gen(f,[a0,a1,a2,a3])} + function caml_call5(f,a0,a1,a2,a3,a4) + {return f.length == 5 + ?f(a0,a1,a2,a3,a4) + :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])} function caml_call7(f,a0,a1,a2,a3,a4,a5,a6) {return f.length == 7 ?f(a0,a1,a2,a3,a4,a5,a6) @@ -52500,7 +51090,9 @@ cst_Variable_definition=caml_string_of_jsbytes("Variable definition"), cst_Decision_taken=caml_string_of_jsbytes("Decision taken"), cst_date_of_jsoo_invalid_date= - caml_string_of_jsbytes("date_of_jsoo: invalid date"), + caml_string_of_jsbytes("date_of_jsoo: invalid date"); + global_data.CamlinternalOO; + var Stdlib_Format=global_data.Stdlib__Format, Js_of_ocaml_Js=global_data.Js_of_ocaml__Js, Runtime_ocaml_Runtime=global_data.Runtime_ocaml__Runtime, @@ -52598,13 +51190,15 @@ var _n_=caml_call1(Runtime_ocaml_Runtime[10],_m_), t16= - caml_jsstring_of_string(caml_call4(Yojson[11][5],0,0,0,_n_)); + caml_jsstring_of_string + (caml_call5(Yojson[11][5],0,0,0,0,_n_)); if(2 === evt[0]) var io=evt[2], _r_=caml_call1(Runtime_ocaml_Runtime[2],io), _o_= - caml_jsstring_of_string(caml_call4(Yojson[11][5],0,0,0,_r_)); + caml_jsstring_of_string + (caml_call5(Yojson[11][5],0,0,0,0,_r_)); else var _o_="unavailable"; if(3 === evt[0]) @@ -52639,7 +51233,8 @@ {var _h_=caml_call1(Runtime_ocaml_Runtime[21],event), t6= - caml_jsstring_of_string(caml_call4(Yojson[11][5],0,0,0,_h_)); + caml_jsstring_of_string + (caml_call5(Yojson[11][5],0,0,0,0,_h_)); return {"data":t6}} var _g_=caml_call1(caml_call1(Stdlib_List[19],_f_),_e_); return caml_js_from_array(caml_call1(Stdlib_Array[12],_g_))})} @@ -52661,12 +51256,12 @@ var _c_= caml_call1 - (Js_of_ocaml_Js[33][9], + (Js_of_ocaml_Js[37][9], {"name":"CatalaError", "message":t22, "stack":Js_of_ocaml_Js[6][1], "toString":caml_js_wrap_meth_callback(t24)}); - return caml_call1(Js_of_ocaml_Js[33][5],_c_)} + return caml_call1(Js_of_ocaml_Js[37][5],_c_)} try {var _b_=caml_call1(f,0);return _b_} catch(exn) @@ -52695,7 +51290,7 @@ (globalThis)); -//# 1 "law_source/.law_source.objs/law_source.cma.js" +//# 1 "law_source/.law_source.objs/jsoo/default/law_source.cma.js" (function(globalThis) {"use strict"; var @@ -57059,7 +55654,9 @@ cst_D331_63_64$0=caml_string_of_jsbytes("D331_63_64"), cst_D331_76_1$0=caml_string_of_jsbytes("D331_76_1"), cst_AidesLogementLib=caml_string_of_jsbytes("AidesLogementLib"), - Runtime_ocaml_Runtime=global_data.Runtime_ocaml__Runtime, + Runtime_ocaml_Runtime=global_data.Runtime_ocaml__Runtime; + global_data.CamlinternalOO; + var Stdlib_Array=global_data.Stdlib__Array, Runtime_jsoo_Runtime=global_data.Runtime_jsoo__Runtime, Stdlib=global_data.Stdlib, @@ -95648,7 +94245,7 @@ function t150(param) {return caml_js_wrap_callback(allocation_familiales_avril200$4)} caml_call2 - (Js_of_ocaml_Js[46], + (Js_of_ocaml_Js[50], cst_AllocationsFamilialesLib, {"allocationFamilialesAvril2008":caml_js_wrap_meth_callback(t150), "enfantLePlusAge":caml_js_wrap_meth_callback(t151), @@ -131330,7 +129927,7 @@ function t911(param) {return caml_js_wrap_callback(contributions_sociales_aides_p$4)} caml_call2 - (Js_of_ocaml_Js[46], + (Js_of_ocaml_Js[50], cst_AidesLogementLib, {"contributionsSocialesAidesPersonnelleLogement": caml_js_wrap_meth_callback(t911), @@ -131604,7 +130201,7 @@ (globalThis)); -//# 1 ".api_web.eobjs/byte/dune__exe__Api_web.cmo.js" +//# 1 ".api_web.eobjs/jsoo/dune__exe__Api_web.cmo.js" (function(globalThis) {"use strict"; var @@ -131619,8 +130216,9 @@ global_data.Law_source__Allocations_familiales_api_web, Runtime_jsoo_Runtime=global_data.Runtime_jsoo__Runtime, Law_source_Aides_logement_api_= - global_data.Law_source__Aides_logement_api_web, - Js_of_ocaml_Js=global_data.Js_of_ocaml__Js; + global_data.Law_source__Aides_logement_api_web; + global_data.CamlinternalOO; + var Js_of_ocaml_Js=global_data.Js_of_ocaml__Js; function t4(param) {return caml_js_wrap_callback (function(calculette_aides_au_logement_g) @@ -131644,7 +130242,7 @@ return t0.iMontantVerse} return caml_call1(Runtime_jsoo_Runtime[6],_a_)})} caml_call1 - (Js_of_ocaml_Js[47], + (Js_of_ocaml_Js[51], {"eventsManager":Runtime_jsoo_Runtime[1], "computeAllocationsFamiliales":caml_js_wrap_meth_callback(t3), "computeAidesAuLogement":caml_js_wrap_meth_callback(t4)}); @@ -131654,7 +130252,7 @@ (globalThis)); -//# 1 "../../.js/stdlib/std_exit.cmo.js" +//# 1 "../../.js/default/stdlib/std_exit.cmo.js" (function(globalThis) {"use strict"; var runtime=globalThis.jsoo_runtime; @@ -131668,4 +130266,4 @@ (globalThis)); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLjAsImZpbGUiOiJhcGlfd2ViLmJjLmpzIiwic291cmNlUm9vdCI6IiIsIm5hbWVzIjpbIk9iamVjdCIsImdsb2JhbFRoaXMiLCJ0aGlzIiwiZ2V0IiwiX1RfIiwiZ2xvYmFsIiwic2VsZiIsImNhbWxfaW50NjRfaXNfemVybyIsIngiLCJjYW1sX3N0cl9yZXBlYXQiLCJuIiwicyIsInIiLCJsIiwiY2FtbF9pbnQ2NF9vZmZzZXQiLCJNYXRoIiwiY2FtbF9yYWlzZV9jb25zdGFudCIsInRhZyIsImNhbWxfZ2xvYmFsX2RhdGEiLCJjYW1sX3JhaXNlX3plcm9fZGl2aWRlIiwiTWxJbnQ2NCIsImxvIiwibWkiLCJoaSIsInhoaSIsImgiLCJzaWduIiwib2Zmc2V0IiwibW9kdWx1cyIsImRpdmlzb3IiLCJxdW90aWVudCIsInkiLCJxIiwiY2FtbF9pbnQ2NF9vZl9pbnQzMiIsImNhbWxfaW50NjRfdG9faW50MzIiLCJjYW1sX2ludDY0X2lzX25lZ2F0aXZlIiwiY2FtbF9pbnQ2NF9uZWciLCJjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMiLCJhIiwiaSIsImxlbiIsImYiLCJTdHJpbmciLCJudWxsIiwiY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyIsImNhbWxfanNieXRlc19vZl9zdHJpbmciLCJjYW1sX3JhaXNlX3dpdGhfYXJnIiwiYXJnIiwianNvb19pc19hc2NpaSIsImNhbWxfdXRmMTZfb2ZfdXRmOCIsImIiLCJ0IiwiYyIsImMxIiwiYzIiLCJ2IiwiaiIsIk1sQnl0ZXMiLCJjb250ZW50cyIsImxlbmd0aCIsImNvbnRlbnQiLCJjYW1sX2J5dGVzX29mX2pzYnl0ZXMiLCJjYW1sX3N0cmluZ19vZl9qc2J5dGVzIiwiY2FtbF9yYWlzZV93aXRoX3N0cmluZyIsIm1zZyIsImNhbWxfaW52YWxpZF9hcmd1bWVudCIsImNhbWxfcGFyc2VfZm9ybWF0IiwiZm10IiwiY2FtbF9maW5pc2hfZm9ybWF0dGluZyIsInJhd2J1ZmZlciIsImJ1ZmZlciIsImNhbWxfaW50NjRfZm9ybWF0Iiwid2Jhc2UiLCJjdnRibCIsInAiLCJjYW1sX2V4cG0xX2Zsb2F0IiwiY2FtbF9qc3N0cmluZ19vZl9zdHJpbmciLCJmc19ub2RlX3N1cHBvcnRlZCIsIm1ha2VfcGF0aF9pc19hYnNvbHV0ZSIsInBvc2l4IiwicGF0aCIsIndpbjMyIiwic3BsaXREZXZpY2VSZSIsInJlc3VsdCIsImRldmljZSIsImlzVW5jIiwiQm9vbGVhbiIsInJvb3QiLCJzZXAiLCJwYXRoX2lzX2Fic29sdXRlIiwiY2FtbF90cmFpbGluZ19zbGFzaCIsIm5hbWUiLCJjYW1sX2N1cnJlbnRfZGlyIiwiY2FtbF9tYWtlX3BhdGgiLCJjb21wMCIsImNvbXAiLCJuY29tcCIsImNhbWxfdXRmOF9vZl91dGYxNiIsImQiLCJjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nIiwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmciLCJ1bml4X2Vycm9yIiwibWFrZV91bml4X2Vycl9hcmdzIiwiY29kZSIsInN5c2NhbGwiLCJlcnJubyIsInZhcmlhbnQiLCJhcmdzIiwiY2FtbF9uYW1lZF92YWx1ZXMiLCJjYW1sX25hbWVkX3ZhbHVlIiwibm0iLCJjYW1sX3JhaXNlX3dpdGhfYXJncyIsImNhbWxfaXNfbWxfYnl0ZXMiLCJjYW1sX2lzX21sX3N0cmluZyIsImNhbWxfYnl0ZXNfb2ZfYXJyYXkiLCJjYW1sX2J5dGVzX29mX3N0cmluZyIsImNhbWxfcmFpc2Vfc3lzX2Vycm9yIiwiY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUiLCJjYW1sX2J5dGVzX2JvdW5kX2Vycm9yIiwiY2FtbF9ieXRlc191bnNhZmVfZ2V0IiwiY2FtbF9ieXRlc19nZXQiLCJjYW1sX2NyZWF0ZV9ieXRlcyIsImNhbWxfbWxfYnl0ZXNfbGVuZ3RoIiwiY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5IiwiQXJyYXkiLCJjYW1sX2JsaXRfYnl0ZXMiLCJzMSIsImkxIiwiczIiLCJpMiIsImNhbWxfYmxpdF9zdHJpbmciLCJlIiwiTWxGaWxlIiwiTWxGYWtlRmlsZSIsIm9sZCIsImJ1ZiIsInBvcyIsImNsZW4iLCJuZXdfc3RyIiwib2xkX2RhdGEiLCJNbEZha2VEZXZpY2UiLCJyZXMiLCJTeW1ib2wiLCJuYW1lX3NsYXNoIiwibW9kZSIsInJhaXNlX3VuaXgiLCJwYXJlbnQiLCJSZWdFeHAiLCJzZWVuIiwibSIsIm9rIiwiZmlsZSIsImJ5dGVzIiwiY2FtbF9tbF9zdHJpbmdfbGVuZ3RoIiwiY2FtbF9zdHJpbmdfdW5zYWZlX2dldCIsImNhbWxfYXJyYXlfb2Zfc3RyaW5nIiwiY2FtbF9hcnJheV9vZl9ieXRlcyIsImNhbWxfYnl0ZXNfdW5zYWZlX3NldCIsImNhbWxfYnl0ZXNfc2V0IiwiTWxOb2RlRmlsZSIsImZkIiwicmVxdWlyZSIsImVyciIsImJ1Zl9vZmZzZXQiLCJNbE5vZGVEZXZpY2UiLCJjb25zdHMiLCJrZXkiLCJvIiwianNfc3RhdHMiLCJ0b19kaXIiLCJ0YXJnZXQiLCJsaW5rIiwiZmlsZV9raW5kIiwiY2FtbF9nZXRfcm9vdCIsImNhbWxfZmFpbHdpdGgiLCJjYW1sX3Jvb3QiLCJqc29vX21vdW50X3BvaW50IiwicmVzb2x2ZV9mc19kZXZpY2UiLCJjYW1sX3N5c19pc19kaXJlY3RvcnkiLCJjYW1sX3JhaXNlX25vdF9mb3VuZCIsImNhbWxfc3lzX2dldGVudiIsImciLCJ1bmRlZmluZWQiLCJzaGlmdF9yaWdodF9uYXQiLCJuYXQxIiwib2ZzMSIsImxlbjEiLCJuYXQyIiwib2ZzMiIsIm5iaXRzIiwid3JhcCIsImNhbWxfZ3Jfc3RhdGUiLCJjYW1sX2dyX3N0YXRlX2dldCIsImNhbWxfZ3JfcG9pbnRfY29sb3IiLCJpbSIsIk1sT2JqZWN0VGFibGUiLCJOYWl2ZUxvb2t1cCIsIm9ianMiLCJjYW1sX3N5c19yZW5hbWUiLCJvX3Jvb3QiLCJuX3Jvb3QiLCJjYW1sX2xvZzEwX2Zsb2F0IiwidW5peF91bmxpbmsiLCJjYW1sX3J1bnRpbWVfd2FybmluZ3MiLCJjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzIiwiYm9vbCIsImNhbWxfY2xhc3NpZnlfZmxvYXQiLCJpc0Zpbml0ZSIsImlzTmFOIiwidW5peF9ybWRpciIsImNhbWxfbWxfcmVmaWxsX2lucHV0IiwiY2hhbiIsInN0ciIsInN0cl9sZW4iLCJjYW1sX21sX2NoYW5uZWxzIiwiY2FtbF9tbF9tYXlfcmVmaWxsX2lucHV0IiwiY2hhbmlkIiwiY2FtbF9hcnJheV9ib3VuZF9lcnJvciIsImNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lIiwiY2FtbF9nY19taW5vciIsImJpZ0ludCIsIkJBU0UiLCJMT0dfQkFTRSIsIk1BWF9JTlQiLCJNQVhfSU5UX0FSUiIsInNtYWxsVG9BcnJheSIsIkRFRkFVTFRfQUxQSEFCRVQiLCJCaWdJbnQiLCJqb29fZ2xvYmFsX29iamVjdCIsInN1cHBvcnRzTmF0aXZlQmlnSW50IiwiSW50ZWdlciIsInJhZGl4IiwiYWxwaGFiZXQiLCJjYXNlU2Vuc2l0aXZlIiwicGFyc2VWYWx1ZSIsInBhcnNlQmFzZSIsIkJpZ0ludGVnZXIiLCJ2YWx1ZSIsIlNtYWxsSW50ZWdlciIsIk5hdGl2ZUJpZ0ludCIsImlzUHJlY2lzZSIsImFycmF5VG9TbWFsbCIsImFyciIsInRyaW0iLCJjb21wYXJlQWJzIiwiY3JlYXRlQXJyYXkiLCJ0cnVuY2F0ZSIsImFkZCIsImxfYSIsImxfYiIsImNhcnJ5IiwiYmFzZSIsInN1bSIsImFkZEFueSIsImFkZFNtYWxsIiwic3VidHJhY3QiLCJhX2wiLCJiX2wiLCJib3Jyb3ciLCJkaWZmZXJlbmNlIiwic3VidHJhY3RBbnkiLCJzdWJ0cmFjdFNtYWxsIiwic21hbGwiLCJtdWx0aXBseUxvbmciLCJwcm9kdWN0IiwiYV9pIiwiYl9qIiwibXVsdGlwbHlTbWFsbCIsInNoaWZ0TGVmdCIsIm11bHRpcGx5S2FyYXRzdWJhIiwiYWMiLCJiZCIsImFiY2QiLCJ1c2VLYXJhdHN1YmEiLCJsMSIsImwyIiwiYWJzIiwibXVsdGlwbHlTbWFsbEFuZEFycmF5Iiwic3F1YXJlIiwiYV9qIiwiZGl2TW9kMSIsImRpdmlzb3JNb3N0U2lnbmlmaWNhbnREaWdpdCIsImxhbWJkYSIsInJlbWFpbmRlciIsInF1b3RpZW50RGlnaXQiLCJzaGlmdCIsImRpdk1vZFNtYWxsIiwiZGl2TW9kMiIsInBhcnQiLCJndWVzcyIsInhsZW4iLCJoaWdoeCIsImhpZ2h5IiwiY2hlY2siLCJkaXZNb2RBbnkiLCJFcnJvciIsImNvbXBhcmlzb24iLCJxU2lnbiIsIm1vZCIsIm1TaWduIiwiXzAiLCJfMSIsIl8yIiwiZXhwIiwiSW5maW5pdHkiLCJpc0Jhc2ljUHJpbWUiLCJtaWxsZXJSYWJpblRlc3QiLCJuUHJldiIsInN0cmljdCIsImlzUHJpbWUiLCJiaXRzIiwibG9nTiIsIml0ZXJhdGlvbnMiLCJuZXdUIiwibmV3UiIsImxhc3RUIiwibGFzdFIiLCJwb3dlcnNPZlR3byIsInBvd2VyczJMZW5ndGgiLCJoaWdoZXN0UG93ZXIyIiwic2hpZnRfaXNTbWFsbCIsInJlbVF1byIsImJpdHdpc2UiLCJmbiIsInhTaWduIiwieVNpZ24iLCJ4UmVtIiwieVJlbSIsInhEaWdpdCIsInlEaWdpdCIsInhEaXZNb2QiLCJ5RGl2TW9kIiwiTE9CTUFTS19JIiwiTE9CTUFTS19CSSIsInJvdWdoTE9CIiwiaW50ZWdlckxvZ2FyaXRobSIsInRtcCIsIm1heCIsIm1pbiIsImdjZCIsImxjbSIsInJhbmRCZXR3ZWVuIiwibG93IiwiaGlnaCIsInJhbmdlIiwiZGlnaXRzIiwidG9CYXNlIiwicmVzdHJpY3RlZCIsInRvcCIsImRpZ2l0IiwidGV4dCIsImFic0Jhc2UiLCJhbHBoYWJldFZhbHVlcyIsImlzTmVnYXRpdmUiLCJzdGFydCIsInBhcnNlQmFzZUZyb21BcnJheSIsInZhbCIsInBvdyIsInN0cmluZ2lmeSIsIm5lZyIsIk51bWJlciIsIm91dCIsImxlZnQiLCJkaXZtb2QiLCJ0b0Jhc2VTdHJpbmciLCJ6ZXJvcyIsInBhcnNlSW50IiwicGFyc2VTdHJpbmdWYWx1ZSIsInNwbGl0IiwiZGVjaW1hbFBsYWNlIiwiaXNWYWxpZCIsInBhcnNlTnVtYmVyVmFsdWUiLCJtbF96X25vcm1hbGl6ZSIsIm1sX3pfcG93IiwiejEiLCJtbF96X3Jvb3QiLCJ6IiwiemVybyIsIm9uZSIsImVuZCIsImFucyIsInR3byIsIm1pZCIsInBvIiwibWxfel9yb290cmVtIiwiY2FtbF9pbnQ2NF9vZl9ieXRlcyIsImNhbWxfYmFfdWludDhfZ2V0NjQiLCJiYSIsImkwIiwib2ZzIiwiYjEiLCJiMiIsImIzIiwiYjQiLCJiNSIsImI2IiwiYjciLCJiOCIsImNhbWxfaW50NjRfdG9fYnl0ZXMiLCJjYW1sX2ludDY0X21hcnNoYWwiLCJ3cml0ZXIiLCJzaXplcyIsImNhbWxfYmFfbnVtX2RpbXMiLCJjYW1sX3JldHVybl9leG5fY29uc3RhbnQiLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiY2FtbF9jcmVhdGVfZmlsZSIsImpzb29fY3JlYXRlX2ZpbGUiLCJjYW1sX2ZzX2luaXQiLCJjYW1sX3NldF9wYXJzZXJfdHJhY2UiLCJjYW1sX2xpc3Rfb2ZfanNfYXJyYXkiLCJ1bml4X2dldHRpbWVvZmRheSIsIkRhdGUiLCJjYW1sX211bCIsImNhbWxfaGFzaF9taXhfaW50IiwibnVtX2RpZ2l0c19uYXQiLCJuYXQiLCJjYW1sX2hhc2hfbmF0IiwiY2FtbF9jYWxsX2dlbiIsImFyZ3NMZW4iLCJleHRyYV9hcmdzIiwiYXJndW1lbnRzIiwibmFyZ3MiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzIiwiY2FtbF9zeXNfY2hkaXIiLCJkaXIiLCJjYW1sX2djX2NvdW50ZXJzIiwibWxfel9kaXYiLCJ6MiIsIm1sX3pfc2lnbiIsIm1sX3pfYWRkIiwibWxfel9jZGl2IiwiejFfcG9zIiwiejJfcG9zIiwiY2FtbF9ncl9zeW5jaHJvbml6ZSIsInVuaXhfaGFzX3N5bWxpbmsiLCJ1bml0IiwibG9nMl9vayIsImpzb29fZmxvb3JfbG9nMiIsImNhbWxfaW50MzJfYml0c19vZl9mbG9hdCIsImZsb2F0MzJhIiwiaW50MzJhIiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkiLCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQiLCJrIiwicjMiLCJyMiIsInIxIiwiY2FtbF9iYV9zZXJpYWxpemUiLCJzeiIsImNvbXBsZXgiLCJjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50Iiwia2luZCIsImNhbWxfYmFfY3JlYXRlX2J1ZmZlciIsInNpemUiLCJ2aWV3IiwiZGF0YSIsImNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyIsImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyIsIk5hTiIsImNhbWxfYmFfZ2V0X3NpemUiLCJkaW1zIiwibl9kaW1zIiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkiLCJjYW1sX2ludDY0X2hpMzIiLCJjYW1sX2ludDY0X2xvMzIiLCJjYW1sX2JhX2N1c3RvbV9uYW1lIiwiTWxfQmlnYXJyYXkiLCJsYXlvdXQiLCJyZSIsInRvdGFsIiwiazEiLCJrMiIsIk1sX0JpZ2FycmF5X2NfMV8xIiwiY2FtbF9iYV9jcmVhdGVfdW5zYWZlIiwic2l6ZV9wZXJfZWxlbWVudCIsImNhbWxfYmFfZGVzZXJpYWxpemUiLCJyZWFkZXIiLCJudW1fZGltcyIsInNpemVfZGltIiwic2l6ZV9kaW1faGkiLCJzaXplX2RpbV9sbyIsInNpeHR5IiwiaW50NjQiLCJjYW1sX2JhX2NvbXBhcmUiLCJjYW1sX2hhc2hfbWl4X2ludDY0IiwiY2FtbF9oYXNoX21peF9mbG9hdCIsInYwIiwiY2FtbF9iYV9oYXNoIiwibnVtX2VsdHMiLCJ3IiwiY2FtbF9pbnQzMl91bm1hcnNoYWwiLCJjYW1sX25hdGl2ZWludF91bm1hcnNoYWwiLCJjYW1sX2ludDY0X3VubWFyc2hhbCIsImNhbWxfaW50NjRfY29tcGFyZSIsImNhbWxfaW50NjRfaGFzaCIsImNhbWxfY3VzdG9tX29wcyIsImNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbSIsImNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbSIsIm51bSIsImN1c3RvbSIsInN3YXAiLCJjYW1sX2NvbXBhcmVfdmFsX3RhZyIsImNhbWxfaW50X2NvbXBhcmUiLCJjYW1sX2J5dGVzX2NvbXBhcmUiLCJjYW1sX3N0cmluZ19jb21wYXJlIiwiY2FtbF9jb21wYXJlX3ZhbCIsInN0YWNrIiwidGFnX2EiLCJ0YWdfYiIsImNhbWxfZ3JlYXRlcnRoYW4iLCJkaXZfaGVscGVyIiwiZGl2X2RpZ2l0X25hdCIsIm5hdHEiLCJvZnNxIiwibmF0ciIsIm9mc3IiLCJyZW0iLCJudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXQiLCJzaGlmdF9sZWZ0X25hdCIsIk1sTmF0IiwiY3JlYXRlX25hdCIsInNldF90b196ZXJvX25hdCIsImluY3JfbmF0IiwiY2FycnlfaW4iLCJhZGRfbmF0IiwibGVuMiIsIm5hdF9vZl9hcnJheSIsIm11bHRfZGlnaXRfbmF0IiwibmF0MyIsIm9mczMiLCJ4MSIsIngyIiwieDMiLCJkZWNyX25hdCIsInN1Yl9uYXQiLCJjb21wYXJlX25hdCIsImRpdl9uYXQiLCJxdW8iLCJjYW1sX2JhX2JsaXQiLCJzcmMiLCJkc3QiLCJpc19kaWdpdF9pbnQiLCJjYW1sX2ludDY0X2RpdiIsImNhbWxfanNfaHRtbF9lbnRpdGllcyIsImVudGl0eSIsInRlbXAiLCJkb2N1bWVudCIsImNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQiLCJjYW1sX2ludDY0X29mX2Zsb2F0IiwiY2FtbF9tbF9jaGFubmVsX3NpemVfNjQiLCJjYW1sX2JhX3NldF8yIiwibWxfel9vZl9pbnQ2NCIsImk2NCIsIm1sX3pfa3JvbmVja2VyIiwiY2FtbF9hcmd2IiwibWFpbiIsImFyZ3YiLCJhcmdzMiIsImNhbWxfZXhlY3V0YWJsZV9uYW1lIiwiY2FtbF9qc19ldmFsX3N0cmluZyIsImV2YWwiLCJzZXJpYWxpemVfbmF0IiwiY2FtbF9tZW1wcm9mX3NldCIsIl9jb250cm9sIiwibWxfel9uZWciLCJjYW1sX3N5c19leGl0IiwiY2FtbF9jaGFubmVsX2Rlc2NyaXB0b3IiLCJjYW1sX2pzX2Zyb21fYXJyYXkiLCJjYW1sX2JhX3Jlc2hhcGUiLCJ2aW5kIiwibmV3X2RpbSIsImNhbWxfb29fbGFzdF9pZCIsImNhbWxfc2V0X29vX2lkIiwiY2FtbF9ncl9maWxsX3JlY3QiLCJjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYSIsInN0cjEiLCJwb3MxIiwiYmEyIiwicG9zMiIsInNsaWNlIiwiY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlIiwianNuYW1lIiwiY2FtbF9nZXRfZ2xvYmFsX2RhdGEiLCJjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkIiwiY2FtbF9iYV91aW50OF9nZXQxNiIsIm1sX3pfb2ZfaW50MzIiLCJjYW1sX2NvbXBhcmUiLCJjYW1sX2ZyZXNoX29vX2lkIiwiY2FtbF9pbnQ2NF90b19mbG9hdCIsImNhbWxfYmFfZ2V0XzEiLCJjYW1sX2JpZ3N0cmluZ19tZW1jbXAiLCJjYW1sX25ld19zdHJpbmciLCJjYW1sX2VyZl9mbG9hdCIsImExIiwiYTIiLCJhMyIsImE0IiwiYTUiLCJjYW1sX2JhX3VpbnQ4X2dldDMyIiwiY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aCIsIm1sX3pfc2hpZnRfcmlnaHQiLCJhbXQiLCJjYW1sX29ial9ibG9jayIsImNhbWxfZ3JfY2xlYXJfZ3JhcGgiLCJiaWdzdHJpbmdfdG9fYXJyYXlfYnVmZmVyIiwiYnMiLCJjYW1sX3N5c19jb25zdF9uYWtlZF9wb2ludGVyc19jaGVja2VkIiwiX3VuaXQiLCJseG9yX2RpZ2l0X25hdCIsImNhbWxfb2JqX2FkZF9vZmZzZXQiLCJjYW1sX2ZpbmFsX3JlbGVhc2UiLCJjYW1sX2pzX3RvX2FycmF5IiwibWxfel9sb2dvciIsImNhbWxfZ3JfcGxvdCIsImNvbG9yIiwiY2FtbF9ieXRlc19zZXQxNiIsImkxNiIsImNhbWxfc3RyaW5nX3NldDE2IiwiY2FtbF9ieXRlc19zZXQ2NCIsImNhbWxfaW50NjRfYnN3YXAiLCJtbF96X2ZpdHNfaW50IiwibWxfel9maXRzX2ludDMyIiwiY2FtbF9maWxsX2J5dGVzIiwiY2FtbF9maWxsX3N0cmluZyIsImNhbWxfZ2NfbWFqb3IiLCJtbF96X3NoaWZ0X2xlZnQiLCJjYW1sX2xleF9hcnJheSIsImNhbWxfbGV4X2VuZ2luZSIsInRibCIsInN0YXJ0X3N0YXRlIiwibGV4YnVmIiwibGV4X2J1ZmZlciIsImxleF9idWZmZXJfbGVuIiwibGV4X3N0YXJ0X3BvcyIsImxleF9jdXJyX3BvcyIsImxleF9sYXN0X3BvcyIsImxleF9sYXN0X2FjdGlvbiIsImxleF9lb2ZfcmVhY2hlZCIsImxleF9iYXNlIiwibGV4X2JhY2t0cmsiLCJsZXhfZGVmYXVsdCIsImxleF90cmFucyIsImxleF9jaGVjayIsInN0YXRlIiwiYmFja3RyayIsInVuaXhfZ2V0dWlkIiwiY2FtbF9zeXNfZmlsZV9leGlzdHMiLCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90IiwiY2FtbF9hcnJheV9zdWIiLCJjYW1sX2J5dGVzX2VxdWFsIiwiY2FtbF9ncl9zaXplX3giLCJjYW1sX21sX2RlYnVnX2luZm9fc3RhdHVzIiwib3NfdHlwZSIsImNhbWxfc3lzX2NvbnN0X29zdHlwZV9jeWd3aW4iLCJjYW1sX2Nvc2hfZmxvYXQiLCJjYW1sX2VwaGVfa2V5X29mZnNldCIsImNhbWxfd2Vha19jaGVjayIsImNhbWxfZXBoZV9jaGVja19rZXkiLCJjYW1sX2hhc2hfbWl4X2ZpbmFsIiwiY2FtbF9ncl90ZXh0X3NpemUiLCJ0eHQiLCJjYW1sX2xleF9ydW5fbWVtIiwibWVtIiwiY3Vycl9wb3MiLCJjYW1sX2xleF9ydW5fdGFnIiwiY2FtbF9uZXdfbGV4X2VuZ2luZSIsImxleF9tZW0iLCJsZXhfYmFzZV9jb2RlIiwibGV4X2JhY2t0cmtfY29kZSIsImxleF9kZWZhdWx0X2NvZGUiLCJsZXhfdHJhbnNfY29kZSIsImxleF9jaGVja19jb2RlIiwibGV4X2NvZGUiLCJwY19vZmYiLCJwc3RhdGUiLCJiYXNlX2NvZGUiLCJjYW1sX2JhX3VpbnQ4X3NldDY0IiwibWxfel9wb3Bjb3VudCIsImNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZSIsImNhbWxfbGVzc2VxdWFsIiwiY2FtbF9hY29zaF9mbG9hdCIsImNhbWxfbWxfZmx1c2giLCJvdXRwdXQiLCJjYW1sX21sX3NlZWtfb3V0XzY0IiwiY29tcGFyZV9uYXRfcmVhbCIsImNhbWxfZ2Nfc2V0IiwiY2FtbF9qc19nZXQiLCJjYW1sX21sX3NldF9idWZmZXJlZCIsImNhbWxfZ2NfY29tcGFjdGlvbiIsImNhbWxfd2Vha19nZXQiLCJjYW1sX2VwaGVfZ2V0X2tleSIsImpzb29fel9vZl9qc19zdHJpbmdfYmFzZSIsImJjIiwibWxfel9vZl9zdWJzdHJpbmdfYmFzZSIsImNhbWxfYmlnc3RyaW5nX2JsaXRfYnl0ZXNfdG9fYmEiLCJ3aW5fY2xlYW51cCIsImNhbWxfc3lzX2Nsb3NlIiwiY2FtbF9tbF9jbG9zZV9jaGFubmVsIiwiY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2UiLCJleG4iLCJmb3JjZSIsImNhbWxfc3lzX2lzYXR0eSIsIl9jaGFuIiwiaXNfZGlnaXRfemVybyIsInVuaXhfaW5ldF9hZGRyX29mX3N0cmluZyIsImNhbWxfanNfc2V0IiwibWxfel9nY2RleHRfaW50ZXJuIiwibGFzdHgiLCJsYXN0eSIsIm1sX3pfdGVzdGJpdCIsImNhbWxfYXJyYXlfZ2V0IiwiYXJyYXkiLCJpbmRleCIsImNhbWxfbG9nMl9mbG9hdCIsImNhbWxfZ2NfaHVnZV9mYWxsYmFja19jb3VudCIsIm1sX3pfY29uZ3J1ZW50IiwiY2FtbF9zcGFjZXRpbWVfb25seV93b3Jrc19mb3JfbmF0aXZlX2NvZGUiLCJjYW1sX2ludDY0X3N1YiIsImNhbWxfbWxfc2Vla19pbl82NCIsImNhbWxfaW50NjRfc2hpZnRfbGVmdCIsImNhbWxfbm90ZXF1YWwiLCJtbF96X2FicyIsImNhbWxfc3lzX2NvbnN0X2ludF9zaXplIiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2siLCJjYW1sX2lzX2pzIiwiY2FtbF9iYV9kaW0iLCJjYW1sX2JhX2RpbV8xIiwibWxfel9zcXJ0IiwidW5peF9sb2NhbHRpbWUiLCJkX251bSIsImphbnVhcnlmaXJzdCIsImRveSIsImphbiIsImp1bCIsInN0ZFRpbWV6b25lT2Zmc2V0IiwiY2FtbF9qc19tZXRoX2NhbGwiLCJtbF96X2x1Y251bSIsImNhbWxfd2Vha19jcmVhdGUiLCJjYW1sX2VwaGVfY3JlYXRlIiwiY2FtbF9qc190b19ieXRlX3N0cmluZyIsIm1sX3pfcHJvYmFiX3ByaW1lIiwidW5peF9ta3RpbWUiLCJ0bSIsInRtMiIsImNhbWxfdHJhbXBvbGluZSIsImNhbWxfYnl0ZXNfZ2V0NjQiLCJtbF96X3JlbSIsImNhbWxfd2Vha19zZXQiLCJjYW1sX3N5c19yZW1vdmUiLCJjYW1sX3N0cmluZ19ib3VuZF9lcnJvciIsImNhbWxfc3RyaW5nX2dldDMyIiwiY2FtbF9oeXBvdF9mbG9hdCIsIm1sX3pfZmFjTSIsImN1cnJlbnQiLCJjYW1sX2pzX2NhbGwiLCJjYW1sX3N5c19jb25zdF9tYXhfd29zaXplIiwiY2FtbF9lcGhlX3Vuc2V0X2tleSIsIm1sX3pfbXVsX292ZXJmbG93cyIsIm1sX3pfdG9faW50IiwiY2FtbF9oYXNoX21peF9ieXRlc19hcnIiLCJjYW1sX2hhc2hfbWl4X2pzYnl0ZXMiLCJjYW1sX21sX2J5dGVzX2NvbnRlbnQiLCJjYW1sX2hhc2hfbWl4X2J5dGVzIiwiY2FtbF9ieXRlc19sZXNzdGhhbiIsImNhbWxfZXJmY19mbG9hdCIsImNhbWxfZ3JfZmlsbF9wb2x5IiwiYXIiLCJjYW1sX2djX3F1aWNrX3N0YXQiLCJtbF96X2ZhYyIsImNhbWxfcmFpc2VfZW5kX29mX2ZpbGUiLCJjYW1sX21sX2lucHV0X2ludCIsImNhbWxfZ3JfZGlzcGxheV9tb2RlIiwibWxfel9kaXZpc2libGUiLCJjYW1sX29ial9yZWFjaGFibGVfd29yZHMiLCJudGhfZGlnaXRfbmF0IiwiY2FtbF9hcnJheV9ibGl0IiwiY2FtbF9mbG9hdF9vZl9zdHJpbmciLCJtMyIsIm1hbnRpc3NhIiwiZXhwb25lbnQiLCJjYW1sX3N5c19nZXRjd2QiLCJjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuIiwiY2FtbF9saXN0X3RvX2pzX2FycmF5IiwiY2FtbF9sZWdhY3lfY3VzdG9tX2NvZGUiLCJjYW1sX291dHB1dF92YWwiLCJXcml0ZXIiLCJmbGFncyIsIm5vX3NoYXJpbmciLCJjbG9zdXJlcyIsImludGVybl9vYmpfdGFibGUiLCJtZW1vIiwiZXhpc3Rpbmdfb2Zmc2V0IiwiZXh0ZXJuX3JlYyIsIm9wcyIsInN6XzMyXzY0IiwiaGVhZGVyX3BvcyIsIm9sZF9wb3MiLCJ0eXBlX29mX3YiLCJjYW1sX3N0cmluZ19vZl9hcnJheSIsImNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyIsImNhbWxfcmFpc2Vfbm90X2FfZGlyIiwiY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmQiLCJjbWQiLCJ1bml4X2lzYXR0eSIsImZpbGVEZXNjcmlwdG9yIiwidHR5IiwiY2FtbF9qc19lcnJvcl9vZl9leGNlcHRpb24iLCJkZXNlcmlhbGl6ZV9uYXQiLCJpbml0aWFsaXplX25hdCIsIm1sX3pfc3VjYyIsImNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3ciLCJ1bml4X2xzdGF0IiwidW5peF9sc3RhdF82NCIsImpzX3ByaW50X3N0ZG91dCIsImNhbWxfY29weXNpZ25fZmxvYXQiLCJjYW1sX2dyX3NldF90ZXh0X3NpemUiLCJjYW1sX21kNV9ieXRlcyIsInh4IiwiZmYiLCJnZyIsImhoIiwiaWkiLCJtZDUiLCJjYW1sX2JhX3NldF9nZW5lcmljIiwiY2FtbF9lcGhlX3NldF9rZXkiLCJjYW1sX2J5dGVzX2xlc3NlcXVhbCIsImNhbWxfc3RyaW5nX2xlc3NlcXVhbCIsImNhbWxfc3RyaW5nX2dyZWF0ZXJlcXVhbCIsImNhbWxfaW50NjRfYWRkIiwiY2FtbF9uZXh0YWZ0ZXJfZmxvYXQiLCJjYW1sX2dyX3NpemVfeSIsIm1sX3pfZmFjMiIsImNhbWxfbWxfcG9zX2luIiwiY2FtbF9pbnQ2NF9hbmQiLCJjYW1sX3N5c19jb25zdF93b3JkX3NpemUiLCJtbF96X2JpbiIsImNvZWZmIiwiY2FtbF9zdGRfb3V0cHV0Iiwic2xlbiIsImpzX3ByaW50X3N0ZGVyciIsImNhbWxfc3lzX29wZW5faW50ZXJuYWwiLCJpZHgiLCJpbmZvIiwiY2FtbF9zeXNfb3BlbiIsIl9wZXJtcyIsIm1sX3pfZ2NkIiwiTWxTdHJpbmdSZWFkZXIiLCJjYW1sX2Zsb2F0X29mX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlciIsIl9tYWdpYyIsIl9ibG9ja19sZW4iLCJudW1fb2JqZWN0cyIsIl9zaXplXzMyIiwiX3NpemVfNjQiLCJvYmpfY291bnRlciIsImludGVybl9yZWMiLCJoZWFkZXIiLCJleHBlY3RlZF9zaXplIiwiY2FtbF9zdHJpbmdfb2ZfYnl0ZXMiLCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMiLCJtbF96X211bCIsIm1sX3pfaGFtZGlzdCIsImNhbWxfc3RyaW5nX2dldCIsInJlX21hdGNoIiwicmVfd29yZF9sZXR0ZXJzIiwib3Bjb2RlcyIsImlzX3dvcmRfbGV0dGVyIiwiaW5fYml0c2V0IiwicmVfbWF0Y2hfaW1wbCIsInBhcnRpYWwiLCJwcm9nIiwiY3Bvb2wiLCJub3JtdGFibGUiLCJudW1ncm91cHMiLCJudW1yZWdpc3RlcnMiLCJzdGFydGNoYXJzIiwicGMiLCJxdWl0IiwiZ3JvdXBzIiwicmVfcmVnaXN0ZXIiLCJiYWNrdHJhY2siLCJpdGVtIiwicHVzaCIsImFjY2VwdCIsInByZWZpeF9tYXRjaCIsIm9wIiwic2FyZyIsInVhcmciLCJncm91cCIsInJlX3NlYXJjaF9iYWNrd2FyZCIsIm1sX3pfbG9nYW5kIiwiY2FtbF9qc19mcm9tX3N0cmluZyIsImNhbWxfYmFfc3ViIiwiY2hhbmdlZF9kaW0iLCJtdWwiLCJuZXdfZGltcyIsIm5ld19kYXRhIiwiY2FtbF9nY19mdWxsX21ham9yIiwiY2FtbF9ieXRlc19zZXQzMiIsImkzMiIsImNhbWxfZ3Jfc2lnaW9fc2lnbmFsIiwiY2FtbF9iYV91aW50OF9zZXQzMiIsIm1sX3pfZGl2X3JlbSIsImNhbWxfc3lzX2NvbnN0X29zdHlwZV91bml4IiwiY2FtbF9zaWduYml0X2Zsb2F0IiwiY2FtbF9ncl9zZXRfbGluZV93aWR0aCIsImNhbWxfZ3Jfc2V0X2ZvbnQiLCJjYW1sX2dyX3NldF9jb2xvciIsImNvbnZlcnQiLCJudW1iZXIiLCJjX3N0ciIsImNhbWxfZ3JfbW92ZXRvIiwiY2FtbF9ncl9yZXNpemVfd2luZG93IiwiY2FtbF9ncl9zdGF0ZV9pbml0IiwiY2FtbF9ncl9jdXJyZW50X3giLCJjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkiLCJ0YSIsImNhbWxfYmFfZnJvbV90eXBlZF9hcnJheSIsImNhbWxfbWxfc2Vla19vdXQiLCJjYW1sX2pzX3R5cGVvZiIsImNhbWxfcmVzdG9yZV9yYXdfYmFja3RyYWNlIiwiYnQiLCJjYW1sX2dyX2xpbmV0byIsImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3Vuc2FmZSIsImNhbWxfYmFfZGltXzMiLCJjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uIiwiY2FtbF9mb3JtYXRfZXhjZXB0aW9uIiwiYnVja2V0IiwiY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24iLCJoYW5kbGVyIiwiYXRfZXhpdCIsImNhbWxfZXBoZV9kYXRhX29mZnNldCIsImNhbWxfZXBoZV9jaGVja19kYXRhIiwiY2FtbF9ieXRlc19nZXQxNiIsImNhbWxfb2JqX21ha2VfZm9yd2FyZCIsImNhbWxfanNfZnJvbV9ib29sIiwiY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lIiwiY2FtbF9leHAyX2Zsb2F0IiwiY2FtbF9ncl9jbG9zZV9ncmFwaCIsImNhbWxfY3JlYXRlX3N0cmluZyIsImNhbWxfbWQ1X3N0cmluZyIsImNhbWxfbWQ1X2NoYW4iLCJjaGFuX2xlbiIsImNhbWxfb2JqX2R1cCIsImNhbWxfd2Vha19nZXRfY29weSIsImNhbWxfYXRhbmhfZmxvYXQiLCJjYW1sX21sX291dHB1dF9ieXRlcyIsInN0cmluZyIsImpzc3RyaW5nIiwiaWQiLCJjYW1sX21sX291dHB1dCIsImNhbWxfZXBoZV9nZXRfZGF0YSIsImNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlIiwiY2FtbF90cmFtcG9saW5lX3JldHVybiIsImNhbWxfbWxfaXNfYnVmZmVyZWQiLCJjYW1sX2FycmF5X2FwcGVuZCIsImNhbWxfbWxfc2V0X2NoYW5uZWxfcmVmaWxsIiwibWxfel9uZXh0cHJpbWUiLCJjYW1sX2pzX2V4cHIiLCJjYW1sX2ludDY0X211bCIsImNhbWxfbWxfcnVudGltZV93YXJuaW5nc19lbmFibGVkIiwibWxfel9zdWIiLCJtbF96X2ZkaXYiLCJtbF96X3RvX2JpdHMiLCJjYW1sX291dHB1dF92YWx1ZV90b19ieXRlcyIsImNhbWxfZXZlbnRsb2dfcmVzdW1lIiwiY2FtbF9oYXNoX3VuaXZfcGFyYW0iLCJjb3VudCIsImxpbWl0Iiwib2JqIiwiaGFzaF9hY2N1IiwiaGFzaF9hdXgiLCJqc2J5dGVzIiwiY2FtbF9zdHJpbmdfZXF1YWwiLCJtbF96X2RpdmV4YWN0IiwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnVmZmVyIiwicmVfcmVwbGFjZW1lbnRfdGV4dCIsInJlcGwiLCJvcmlnIiwiY3VyIiwiY2FtbF9wdXJlX2pzX2V4cHIiLCJibGl0X25hdCIsImNhbWxfaW50NjRfdWx0IiwiY2FtbF9pbnQ2NF94b3IiLCJjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzIiwiYmExIiwiYnl0ZXMyIiwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSIsImpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuIiwiY2FtbF90b19qc19zdHJpbmciLCJjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UiLCJjYW1sX3BhcnNlX2RpZ2l0IiwiY2FtbF9pbnQ2NF9vZl9zdHJpbmciLCJiYXNlNjQiLCJ0aHJlc2hvbGQiLCJyZV9zZWFyY2hfZm9yd2FyZCIsImNhbWxfYmxpdF9zdHJpbmdfdG9fYmlnc3RyaW5nIiwiY2FtbF9tYWtlX3ZlY3QiLCJpbml0IiwiY2FtbF9tbF9zZWVrX2luIiwiY2FtbF9zeXNfcmVhZF9kaXJlY3RvcnkiLCJjYW1sX21sX291dHB1dF9jaGFyIiwiY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3dpbjMyIiwiY2FtbF9vYmpfaXNfYmxvY2siLCJjYW1sX21sX2lucHV0X2NoYXIiLCJjYW1sX29ial9zZXRfcmF3X2ZpZWxkIiwiY2FtbF9qc192YXIiLCJjYW1sX3RydW5jX2Zsb2F0IiwiY2FtbF96YXJpdGhfbWFyc2hhbCIsImJsb2NrIiwiY2FtbF9lcGhlX2JsaXRfZGF0YSIsImNhbWxfaXNfcHJpbnRhYmxlIiwiY2FtbF9lcXVhbCIsInJlX3BhcnRpYWxfbWF0Y2giLCJjYW1sX3N5c19yYW5kb21fc2VlZCIsImJ1ZmYiLCJub3ciLCJjYW1sX2ZpbmFsX3JlZ2lzdGVyX2NhbGxlZF93aXRob3V0X3ZhbHVlIiwiY2FtbF9iYV9nZXRfMiIsIndpbl9oYW5kbGVfZmQiLCJjYW1sX2JhX3VpbnQ4X3NldDE2Iiwid2luX2ZpbGVkZXNjcl9vZl9jaGFubmVsIiwiY2FtbF9qc19kZWxldGUiLCJjYW1sX2ludF9vZl9zdHJpbmciLCJjYW1sX2xpc3RfbW91bnRfcG9pbnQiLCJwcmV2IiwiY2FtbF9tYXJzaGFsX2NvbnN0YW50cyIsImNhbWxfb2JqX3Jhd19maWVsZCIsImNhbWxfanNfZXF1YWxzIiwiYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5IiwibWxfel9maXRzX25hdGl2ZWludCIsImNhbWxfZ3JfYXJjX2F1eCIsImN0eCIsImN4IiwiY3kiLCJyeSIsInJ4Iiwicm90IiwieFBvcyIsInlQb3MiLCJ4UG9zX3ByZXYiLCJ5UG9zX3ByZXYiLCJzcGFjZSIsImRlbHRhIiwiY2FtbF9ncl9maWxsX2FyYyIsImNhbWxfYmFfc2xpY2UiLCJudW1faW5kcyIsInN1Yl9kaW1zIiwibWxfel9vZl9uYXRpdmVpbnQiLCJjYW1sX21hcnNoYWxfZGF0YV9zaXplIiwiZ2V0MzIiLCJjYW1sX2lucHV0X3ZhbHVlIiwiY2FtbF9iYV9raW5kIiwiY2FtbF9qc19mdW5fY2FsbCIsImNhbWxfZ2NfbWFqb3Jfc2xpY2UiLCJ3b3JrIiwibWxfel9pbnZlcnQiLCJtbF96X3Bvd20iLCJ6MyIsImludiIsIm1sX3pfcG93bV9zZWMiLCJjYW1sX2pzX3B1cmVfZXhwciIsImNvbXBhcmVfZGlnaXRzX25hdCIsImNhbWxfbWxfaW5wdXQiLCJjYW1sX2dyX3dhaXRfZXZlbnQiLCJfZXZsIiwiY2FtbF9ncl9zaWdpb19oYW5kbGVyIiwiY2FtbF9oYXNoX21peF9iaWdzdHJpbmciLCJjYW1sX3JlY29yZF9iYWNrdHJhY2UiLCJ1bml4X2dtdGltZSIsImNhbWxfc3lzX2NvbnN0X2JhY2tlbmRfdHlwZSIsImNhbWxfc3lzX2dldF9jb25maWciLCJ1bml4X3RpbWUiLCJjYW1sX21sX291dF9jaGFubmVsc19saXN0IiwiY2FtbF9hc2luaF9mbG9hdCIsIm1sX3pfaGFzaCIsImFjYyIsImJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXIiLCJhYiIsImNhbWxfbW9kIiwiY2FtbF9iYV9pbml0IiwicmVfc3RyaW5nX21hdGNoIiwiQmlnU3RyaW5nUmVhZGVyIiwiY2FtbF9ncl9kdW1wX2ltYWdlIiwiY2FtbF9iYV9nZXRfZ2VuZXJpYyIsImNhbWxfZ2V0X2V4Y2VwdGlvbl9iYWNrdHJhY2UiLCJjYW1sX2Zvcm1hdF9mbG9hdCIsInRvRml4ZWQiLCJkcCIsInByZWMiLCJjYW1sX21vdW50X2F1dG9sb2FkIiwibWxfel9lcXVhbCIsIm1sX3pfZml0c19pbnQ2NCIsImNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmEiLCJjYW1sX2JsaXRfYmlnc3RyaW5nX3RvX2JpZ3N0cmluZyIsIm1sX3pfc3FydF9yZW0iLCJkaWZmIiwiY2FtbF9zdHJpbmdfbGVzc3RoYW4iLCJjYW1sX3N0cmluZ19ncmVhdGVydGhhbiIsImNhbWxfZGl2IiwiY2FtbF9lcGhlX2dldF9kYXRhX2NvcHkiLCJjYW1sX21lbXByb2Zfc3RhcnQiLCJyYXRlIiwic3RhY2tfc2l6ZSIsInRyYWNrZXIiLCJtbF96X3BlcmZlY3Rfc3F1YXJlIiwiY2FtbF9zeXNfZ2V0X2FyZ3YiLCJjYW1sX2pzX3RvX2Jvb2wiLCJjYW1sX2dyX2NyZWF0ZV9pbWFnZSIsImNhbWxfZXBoZV9nZXRfa2V5X2NvcHkiLCJjYW1sX2xlc3N0aGFuIiwiY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdCIsIm1sX3pfdG9fbmF0aXZlaW50IiwiY2FtbF9yZWdpc3Rlcl9nbG9iYWwiLCJuYW1lX29wdCIsIm11bHRfbmF0IiwibGVuMyIsInNxdWFyZV9uYXQiLCJjYW1sX2pzX2Zyb21fZmxvYXQiLCJjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlIiwiY2FtbF9nY19zdGF0IiwiY2FtbF9nZXRfbWFqb3JfY3JlZGl0IiwiY2FtbF9zeXNfbW9kaWZ5X2FyZ3YiLCJjYW1sX21ldGhvZF9jYWNoZSIsImNhbWxfZ2V0X3B1YmxpY19tZXRob2QiLCJjYWNoZWlkIiwibWV0aHMiLCJsaSIsImNhbWxfanNfZ2V0X2NvbnNvbGUiLCJjYW1sX3N5c191bnNhZmVfZ2V0ZW52IiwiY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW4iLCJyZWZpbGwiLCJmcyIsImNoYW5uZWwiLCJiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXkiLCJjYW1sX3JvdW5kX2Zsb2F0IiwibWxfel9vZl9iaXRzIiwiYmFzZTEiLCJ1bml4X3N0YXQiLCJ1bml4X3N0YXRfNjQiLCJjYW1sX29qc19uZXdfYXJyIiwiRiIsImNvbXBsZW1lbnRfbmF0IiwibWxfel9sb2d4b3IiLCJjYW1sX2pzX3JlZ2V4cHMiLCJjYW1sX2pzX2h0bWxfZXNjYXBlIiwiY2FtbF9iYV9kaW1fMiIsImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50cyIsImNhbWxfc2luaF9mbG9hdCIsImNhbWxfbGRleHBfZmxvYXQiLCJjYW1sX2dyX3N0YXRlX3NldCIsImNhbWxfemFyaXRoX3VubWFyc2hhbCIsIm5lZ2F0ZSIsIm1sX3pfdHJhaWxpbmdfemVyb3MiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0IiwiYXJpdHkiLCJjYW1sX2djX21pbm9yX3dvcmRzIiwiY2FtbF9iYV9zZXRfMSIsImNhbWxfZ2V0X2N1cnJlbnRfY2FsbHN0YWNrIiwibGFuZF9kaWdpdF9uYXQiLCJjYW1sX2ludDY0X21vZCIsInVuaXhfcmVhZGxpbmsiLCJjYW1sX29ial9zZXRfdGFnIiwiY2FtbF9pbnQzMl9ic3dhcCIsIndpbl9zdGFydHVwIiwiY2FtbF9iYV9zZXRfMyIsIm1sX3pfamFjb2JpIiwibjEiLCJtbF96X2xlZ2VuZHJlIiwiY2FtbF9qc19pbnN0YW5jZW9mIiwiY2FtbF9nZXRfbWFqb3JfYnVja2V0IiwiY2FtbF9ibGl0X2JpZ3N0cmluZ190b19zdHJpbmciLCJzZXRfZGlnaXRfbmF0X25hdGl2ZSIsIm50aF9kaWdpdF9uYXRfbmF0aXZlIiwiY2FtbF9zdHJpbmdfc2V0NjQiLCJjYW1sX2dyX3N0YXRlX2NyZWF0ZSIsImNhbnZhcyIsImNvbnRleHQiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2siLCJjYW1sX2dyX2RyYXdfYXJjIiwiY2FtbF9iYV9tYXBfZmlsZSIsInZmZCIsInNoYXJlZCIsImNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGUiLCJhcmduIiwidW5peF9zeW1saW5rIiwic3JjX3Jvb3QiLCJkc3Rfcm9vdCIsImNhbWxfYmFfY3JlYXRlX2Zyb20iLCJkYXRhMSIsImRhdGEyIiwianN0eXAiLCJjYW1sX3RhbmhfZmxvYXQiLCJjYW1sX2dyX2RyYXdfc3RyIiwiZHgiLCJjYW1sX2dyX2RyYXdfc3RyaW5nIiwibWxfel9wcmltb3JpYWwiLCJjYW1sX2dyX2RyYXdfY2hhciIsImNhbWxfdW5tb3VudCIsIm1sX3pfZmliIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3N0cmluZyIsImNhbWxfbWxfcG9zX2luXzY0IiwiY2FtbF9ncl9kcmF3X2ltYWdlIiwiaW1hZ2UiLCJjYW1sX3JlZ2lzdGVyX2NoYW5uZWxfZm9yX3NwYWNldGltZSIsIl9jaGFubmVsIiwiY2FtbF9zdHJpbmdfc2V0IiwiY2FtbF9zeXNfcm1kaXIiLCJjYW1sX21sX3Bvc19vdXQiLCJjYW1sX3NwYWNldGltZV9lbmFibGVkIiwiY2FtbF9ieXRlc19ub3RlcXVhbCIsImNhbWxfcnVudGltZV9wYXJhbWV0ZXJzIiwiY2FtbF9qc19vYmplY3QiLCJjYW1sX2JhX2NyZWF0ZSIsImRpbXNfbWwiLCJjYW1sX3dlYWtfYmxpdCIsImNhbWxfZ3JfcmVtZW1iZXJfbW9kZSIsImNhbWxfZm1hX2Zsb2F0IiwiU1BMSVQiLCJNSU5fVkFMVUUiLCJFUFNJTE9OIiwiQyIsIkEiLCJCIiwibXVsdGlwbHkiLCJhdCIsImFoaSIsImFsbyIsImJoaSIsImJsbyIsImFkanVzdCIsInNjYWxlIiwieHMiLCJ5cyIsInpzIiwieHkiLCJ1IiwiY2FtbF9ic3dhcDE2IiwiY2FtbF9tbF9zZXRfYmluYXJ5X21vZGUiLCJjYW1sX2ZpbmFsX3JlZ2lzdGVyIiwiY2FtbF9ncl9kcmF3X3JlY3QiLCJjYW1sX3N0cmluZ19nZXQxNiIsImNhbWxfZXBoZV91bnNldF9kYXRhIiwiY2FtbF9vdXRwdXRfdmFsdWUiLCJjYW1sX2JhX2dldF8zIiwiY2FtbF9lcGhlX2JsaXRfa2V5IiwibWxfel90b19pbnQzMiIsImNhbWxfaW5pdGlhbF90aW1lIiwiY2FtbF9zeXNfdGltZSIsImNhbWxfc3lzX3RpbWVfaW5jbHVkZV9jaGlsZHJlbiIsImNhbWxfY2hlY2tfYm91bmQiLCJ1bml4X2dldHB3dWlkIiwibWxfel9jb21wYXJlIiwiY2FtbF9oYXNoX21peF9zdHJpbmciLCJjYW1sX2hhc2giLCJzZWVkIiwicXVldWUiLCJyZCIsIndyIiwiY2FtbF9vYmpfdGFnIiwiRnVuY3Rpb24iLCJjYW1sX2JhX3RvX3R5cGVkX2FycmF5IiwiY2FtbF9ieXRlc19nZXQzMiIsImNhbWxfZnJleHBfZmxvYXQiLCJtbF96X3ByZWQiLCJjYW1sX3N0cmluZ19nZXQ2NCIsImNhbWxfanNfZXJyb3Jfb3B0aW9uX29mX2V4Y2VwdGlvbiIsImNhbWxfbWxfcG9zX291dF82NCIsIm1sX3pfZXh0cmFjdCIsIm1sX3pfcmVtb3ZlIiwibWxfel9vZl9mbG9hdCIsImYxIiwibWxfel9sb2dub3QiLCJjYW1sX2dyX2Nsb3NlX3N1YndpbmRvdyIsImNhbWxfZmxvYXRhcnJheV9ibGl0IiwiY2FtbF9nZXRfbWlub3JfZnJlZSIsImNhbWxfc2V0X3N0YXRpY19lbnYiLCJjYW1sX2JhX2NoYW5nZV9sYXlvdXQiLCJjYW1sX2pzX25ldyIsInVuaXhfbWtkaXIiLCJwZXJtIiwiY2FtbF9ncl9jdXJyZW50X3kiLCJjYW1sX2Zvcm1hdF9pbnQiLCJjYW1sX29ial90cnVuY2F0ZSIsImNhbWxfanNfdG9fc3RyaW5nIiwiaXNfZGlnaXRfb2RkIiwiY2FtbF9ydW50aW1lX3ZhcmlhbnQiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQiLCJjYW1sX2FycmF5X2NvbmNhdCIsImNhbWxfZ3Jfb3Blbl9ncmFwaCIsInNwZWNzIiwic3RhdHVzIiwid2luIiwiZG9jIiwidGl0bGUiLCJib2R5IiwiY2FtbF9lcGhlX3NldF9kYXRhIiwiY2FtbF9tYWtlX2Zsb2F0X3ZlY3QiLCJjYW1sX2NicnRfZmxvYXQiLCJjYW1sX21lbXByb2Zfc3RvcCIsImNhbWxfZXZlbnRsb2dfcGF1c2UiLCJjYW1sX2dyZWF0ZXJlcXVhbCIsIm1sX3pfbnVtYml0cyIsInVwcGVyQm91bmQiLCJjYW1sX2dldF9leGNlcHRpb25fcmF3X2JhY2t0cmFjZSIsImNhbWxfbG9nMXBfZmxvYXQiLCJjYW1sX2ludDY0X29yIiwiY2FtbF9sYXp5X21ha2VfZm9yd2FyZCIsImxvcl9kaWdpdF9uYXQiLCJjYW1sX2dyX2JsaXRfaW1hZ2UiLCJpbTIiLCJjYW1sX2dyX3dpbmRvd19pZCIsImNhbWxfanNfb25faWUiLCJ1YSIsImNhbWxfaW50NjRfc2hpZnRfcmlnaHQiLCJjYW1sX2JhX2xheW91dCIsImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlIiwiY2FtbF9hcnJheV9zZXQiLCJuZXd2YWwiLCJjYW1sX2J5dGVzX2dyZWF0ZXJlcXVhbCIsIm1sX3pfcGVyZmVjdF9wb3dlciIsImxvZzJ6IiwienAiLCJzZXRfZGlnaXRfbmF0IiwibWxfel9pbml0IiwiY2FtbF9ncl9kb2Nfb2Zfc3RhdGUiLCJjYW1sX21sX291dHB1dF9pbnQiLCJjYW1sX29ial93aXRoX3RhZyIsImNhbWxfbWxfY2hhbm5lbF9zaXplIiwiY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3QiLCJjYW1sX2hleHN0cmluZ19vZl9mbG9hdCIsInN0eWxlIiwiZXhwX3NpZ24iLCJzaWduX3N0ciIsImNzdCIsInhfc3RyIiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0IiwibWxfel9mb3JtYXQiLCJjYXMiLCJ3aWR0aCIsImFsdCIsInBhZCIsInByZWZpeCIsInByZSIsIm1sX3pfdG9faW50NjQiLCJtYXNrIiwibWxfel9zaXplIiwiY2FtbF9iYWNrdHJhY2Vfc3RhdHVzIiwiY2FtbF9zeXNfYXJndiIsImNhbWxfaW5zdGFsbF9zaWduYWxfaGFuZGxlciIsImNhbWxfYmFfZmlsbCIsImNhbWxfbW9kZl9mbG9hdCIsImNhbWxfZ2NfZ2V0IiwiY2FtbF9mbG9hdF9jb21wYXJlIiwibWxfel9zaGlmdF9yaWdodF90cnVuYyIsImNhbWxfc3RyaW5nX3NldDMyIiwiY2FtbF9wYXJzZV9lbmdpbmUiLCJ0YWJsZXMiLCJlbnYiLCJFUlJDT0RFIiwibG9vcCIsInRlc3RzaGlmdCIsInNoaWZ0X3JlY292ZXIiLCJyZWR1Y2UiLCJSRUFEX1RPS0VOIiwiUkFJU0VfUEFSU0VfRVJST1IiLCJHUk9XX1NUQUNLU18xIiwiR1JPV19TVEFDS1NfMiIsIkNPTVBVVEVfU0VNQU5USUNfQUNUSU9OIiwiQ0FMTF9FUlJPUl9GVU5DVElPTiIsImVudl9zX3N0YWNrIiwiZW52X3Zfc3RhY2siLCJlbnZfc3ltYl9zdGFydF9zdGFjayIsImVudl9zeW1iX2VuZF9zdGFjayIsImVudl9zdGFja3NpemUiLCJlbnZfc3RhY2tiYXNlIiwiZW52X2N1cnJfY2hhciIsImVudl9sdmFsIiwiZW52X3N5bWJfc3RhcnQiLCJlbnZfc3ltYl9lbmQiLCJlbnZfYXNwIiwiZW52X3J1bGVfbGVuIiwiZW52X3J1bGVfbnVtYmVyIiwiZW52X3NwIiwiZW52X3N0YXRlIiwiZW52X2VycmZsYWciLCJ0YmxfdHJhbnNsX2NvbnN0IiwidGJsX3RyYW5zbF9ibG9jayIsInRibF9saHMiLCJ0YmxfbGVuIiwidGJsX2RlZnJlZCIsInRibF9kZ290byIsInRibF9zaW5kZXgiLCJ0YmxfcmluZGV4IiwidGJsX2dpbmRleCIsInRibF90YWJsZXNpemUiLCJ0YmxfdGFibGUiLCJ0YmxfY2hlY2siLCJuMiIsInN0YXRlMSIsInNwIiwiZXJyZmxhZyIsImFzcCIsImNhbWxfdXBkYXRlX2R1bW15IiwiY2FtbF9hcnJheV9maWxsIiwiY2FtbF9zeXNfbWtkaXIiLCJjYW1sX3N0cmluZ19ub3RlcXVhbCIsImNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW4iLCJjYW1sX2dyX21ha2VfaW1hZ2UiLCJjYW1sX21sX3NldF9jaGFubmVsX291dHB1dCIsImNhbWxfcmVhZF9maWxlX2NvbnRlbnQiLCJjYW1sX2pzX3RvX2Zsb2F0IiwiY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciIsIm9yaWdpbiIsImV2ZW50IiwiZXJyX25vX3ByZWQiLCJlcnJfbm9fc3VjYyIsInplcm8kMiIsIm9uZSQyIiwibWludXNfb25lJDIiLCJtaW5faW50JDIiLCJtYXhfaW50JDIiLCJkdW1teV9wb3MiLCJ6ZXJvX3BvcyIsInN1Yl9mb3JtYXQiLCJmb3JtYXR0aW5nX2xpdCIsImxvY2ZtdCIsIm51bGwkMCIsImN1cnJlbnRfZGlyX25hbWUiLCJwYXJlbnRfZGlyX25hbWUiLCJkaXJfc2VwIiwicXVvdGVxdW90ZSIsIm51bGwkMSIsImN1cnJlbnRfZGlyX25hbWUkMCIsInBhcmVudF9kaXJfbmFtZSQwIiwiZGlyX3NlcCQwIiwibnVsbCQyIiwiY3VycmVudF9kaXJfbmFtZSQxIiwicGFyZW50X2Rpcl9uYW1lJDEiLCJkaXJfc2VwJDEiLCJ6ZXJvJDQiLCJvbmUkNCIsImkiLCJlcmFzZV9yZWwiLCJyZXN0IiwicmVzdCQwIiwicmVzdCQxIiwicmVzdCQyIiwicmVzdCQzIiwicmVzdCQ0IiwicmVzdCQ1IiwicmVzdCQ2IiwicmVzdCQ3IiwidHkiLCJyZXN0JDgiLCJ0eTEiLCJyZXN0JDkiLCJyZXN0JDEwIiwicmVzdCQxMSIsInJlc3QkMTIiLCJyZXN0JDEzIiwiY29uY2F0X2ZtdHR5IiwiZm10dHkxIiwiZm10dHkyIiwidHkyIiwiY29uY2F0X2ZtdCIsImZtdDEiLCJmbXQyIiwicGFkIiwicGFkJDAiLCJwcmVjIiwicGFkJDEiLCJpY29udiIsInByZWMkMCIsInBhZCQyIiwiaWNvbnYkMCIsInByZWMkMSIsInBhZCQzIiwiaWNvbnYkMSIsInByZWMkMiIsInBhZCQ0IiwiaWNvbnYkMiIsInByZWMkMyIsInBhZCQ1IiwiZmNvbnYiLCJwYWQkNiIsInN0ciIsImNociIsImZtdHR5IiwicGFkJDciLCJmbXR0eSQwIiwicGFkJDgiLCJyZXN0JDE0IiwicmVzdCQxNSIsInJlc3QkMTYiLCJmbXRpbmdfbGl0IiwicmVzdCQxNyIsImZtdGluZ19nZW4iLCJyZXN0JDE4IiwicmVzdCQxOSIsImNoYXJfc2V0Iiwid2lkdGhfb3B0IiwicmVzdCQyMCIsImNvdW50ZXIiLCJyZXN0JDIxIiwicmVzdCQyMiIsImlnbiIsInJlc3QkMjMiLCJmIiwiYXJpdHkiLCJ2IiwiciIsImN1ciIsInNlZW4iLCJuIiwiZmFpbHdpdGgiLCJzIiwiaW52YWxpZF9hcmciLCJtaW4iLCJ4IiwieSIsIm1heCIsImFicyIsImxub3QiLCJpbmZpbml0eSIsIm5lZ19pbmZpbml0eSIsIm5hbiIsIm1heF9mbG9hdCIsIm1pbl9mbG9hdCIsImVwc2lsb24iLCJtYXhfaW50IiwibWluX2ludCIsInMxIiwiczIiLCJsMSIsImwyIiwiY2hhcl9vZl9pbnQiLCJzdHJpbmdfb2ZfYm9vbCIsImIiLCJib29sX29mX3N0cmluZyIsImJvb2xfb2Zfc3RyaW5nX29wdCIsInN0cmluZ19vZl9pbnQiLCJpbnRfb2Zfc3RyaW5nX29wdCIsInZhbGlkX2Zsb2F0X2xleGVtIiwibCIsImkkMCIsInRvX3N0cmluZyIsIm9mX3N0cmluZ19vcHQiLCJhcHBlbmQiLCJ0bCIsImhkIiwic3RkaW4iLCJzdGRvdXQiLCJzdGRlcnIiLCJvcGVuX2dlbiIsIm1vZGUiLCJwZXJtIiwibmFtZSIsImMiLCJvcGVuX3RleHQiLCJvcGVuX2JpbiIsImZsdXNoX2FsbCIsIml0ZXIiLCJhIiwib3V0cHV0X2J5dGVzIiwib2MiLCJvdXRwdXRfc3RyaW5nIiwib3V0cHV0Iiwib2ZzIiwibGVuIiwib3V0cHV0X3N1YnN0cmluZyIsIm91dHB1dF92YWx1ZSIsImNoYW4iLCJjbG9zZSIsImNsb3NlX25vZXJyIiwib3Blbl9nZW4kMCIsIm9wZW5fdGV4dCQwIiwib3Blbl9iaW4kMCIsImlucHV0IiwiaWMiLCJ1bnNhZmVfcmVhbGx5X2lucHV0Iiwib2ZzJDAiLCJsZW4kMCIsImxlbiQxIiwib2ZzJDEiLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfc3RyaW5nIiwiaW5wdXRfbGluZSIsImJ1aWxkX3Jlc3VsdCIsImJ1ZiIsImFjY3UiLCJiZWciLCJhY2N1JDAiLCJyZXMiLCJjbG9zZV9ub2VyciQwIiwicHJpbnRfY2hhciIsInByaW50X3N0cmluZyIsInByaW50X2J5dGVzIiwicHJpbnRfaW50IiwicHJpbnRfZmxvYXQiLCJwcmludF9lbmRsaW5lIiwicHJpbnRfbmV3bGluZSIsInByZXJyX2NoYXIiLCJwcmVycl9zdHJpbmciLCJwcmVycl9ieXRlcyIsInByZXJyX2ludCIsInByZXJyX2Zsb2F0IiwicHJlcnJfZW5kbGluZSIsInByZXJyX25ld2xpbmUiLCJyZWFkX2xpbmUiLCJyZWFkX2ludCIsInJlYWRfaW50X29wdCIsInJlYWRfZmxvYXQiLCJyZWFkX2Zsb2F0X29wdCIsInN0cmluZ19vZl9mb3JtYXQiLCJzeW1ib2wiLCJzdHIyIiwic3RyMSIsImV4aXRfZnVuY3Rpb24iLCJhdF9leGl0IiwiZl95ZXRfdG9fcnVuIiwib2xkX2V4aXQiLCJuZXdfZXhpdCQwIiwibmV3X2V4aXQiLCJzdWNjZXNzIiwiZG9fYXRfZXhpdCIsImV4aXQiLCJyZXRjb2RlIiwic2V0X2JpbmFyeV9tb2RlIiwiY2xvc2UkMCIsImluX2NoYW5uZWxfbGVuZ3RoIiwicG9zX2luIiwic2Vla19pbiIsImlucHV0X3ZhbHVlIiwiaW5wdXRfYmluYXJ5X2ludCIsImlucHV0X2J5dGUiLCJpbnB1dF9jaGFyIiwic2V0X2JpbmFyeV9tb2RlJDAiLCJvdXRfY2hhbm5lbF9sZW5ndGgiLCJwb3Nfb3V0Iiwic2Vla19vdXQiLCJvdXRwdXRfYmluYXJ5X2ludCIsIm91dHB1dF9ieXRlIiwib3V0cHV0X2NoYXIiLCJmbHVzaCIsImxlZnQiLCJyaWdodCIsImlzX2xlZnQiLCJpc19yaWdodCIsImZpbmRfbGVmdCIsImZpbmRfcmlnaHQiLCJtYXBfbGVmdCIsImUiLCJtYXBfcmlnaHQiLCJtYXAiLCJ2JDAiLCJmb2xkIiwiZXF1YWwiLCJlMSIsImUyIiwidjIiLCJ2MiQwIiwiY29tcGFyZSIsIm1hdGNoJDEiLCJpc19ibG9jayIsImRvdWJsZV9maWVsZCIsInNldF9kb3VibGVfZmllbGQiLCJmaXJzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3IiLCJsYXN0X25vbl9jb25zdGFudF9jb25zdHJ1Y3Rvcl8iLCJsYXp5X3RhZyIsImNsb3N1cmVfdGFnIiwib2JqZWN0X3RhZyIsImluZml4X3RhZyIsImZvcndhcmRfdGFnIiwibm9fc2Nhbl90YWciLCJhYnN0cmFjdF90YWciLCJzdHJpbmdfdGFnIiwiZG91YmxlX3RhZyIsImRvdWJsZV9hcnJheV90YWciLCJjdXN0b21fdGFnIiwiaW50X3RhZyIsIm91dF9vZl9oZWFwX3RhZyIsInVuYWxpZ25lZF90YWciLCJpbmZvIiwib2JqIiwic3RhcnRfZW52Iiwib2ZfdmFsIiwic2xvdCIsImlkIiwiZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIiwiZXh0ZW5zaW9uX25hbWUiLCJleHRlbnNpb25faWQiLCJtYXhfZXBoZV9sZW5ndGgiLCJjcmVhdGUiLCJsZW5ndGgiLCJyYWlzZV9pZl9pbnZhbGlkX29mZnNldCIsIm8iLCJtc2ciLCJnZXRfa2V5IiwiZ2V0X2tleV9jb3B5Iiwic2V0X2tleSIsInVuc2V0X2tleSIsImNoZWNrX2tleSIsImJsaXRfa2V5IiwibzEiLCJvMiIsInJhaXNlX3VuZGVmaW5lZCIsImZvcmNlX2xhenlfYmxvY2siLCJibGsiLCJjbG9zdXJlIiwicmVzdWx0IiwiZm9yY2VfdmFsX2xhenlfYmxvY2siLCJmb3JjZSIsImx6diIsInQiLCJmb3JjZV92YWwiLCJ0b19sYXp5IiwiZnJvbV92YWwiLCJpc192YWwiLCJtYXAkMCIsIm1hcF92YWwiLCJlbXB0eSIsInJldHVybiQwIiwiY29ucyIsIm5leHQiLCJhcHBlbmQkMCIsInNlcTEiLCJzZXEyIiwibWFwJDEiLCJzZXEiLCJmaWx0ZXJfbWFwIiwic2VxJDAiLCJmaWx0ZXIiLCJjb25jYXQiLCJmbGF0X21hcCIsImZvbGRfbGVmdCIsImFjYyIsImFjYyQwIiwiYWNjJDEiLCJ1bmZvbGQiLCJ1IiwidSQwIiwiaXNfZW1wdHkiLCJ4cyIsInVuY29ucyIsInhzJDAiLCJsZW5ndGgkMCIsInhzJDEiLCJpdGVyaSIsImZvbGRfbGVmdGkiLCJhY2N1JDEiLCJmb3JfYWxsIiwicCIsImV4aXN0cyIsImZpbmQiLCJmaW5kX21hcCIsIml0ZXIyIiwieXMiLCJ5cyQwIiwieXMkMSIsImZvbGRfbGVmdDIiLCJmb3JfYWxsMiIsImV4aXN0czIiLCJlcXVhbCQwIiwiZXEiLCJjb21wYXJlJDAiLCJjbXAiLCJpbml0X2F1eCIsImoiLCJpbml0IiwicmVwZWF0IiwiZm9yZXZlciIsImN5Y2xlX25vbmVtcHR5IiwiY3ljbGUiLCJpdGVyYXRlMSIsIml0ZXJhdGUiLCJtYXBpX2F1eCIsIm1hcGkiLCJ0YWlsX3NjYW4iLCJzJDAiLCJzY2FuIiwidGFrZV9hdXgiLCJ0YWtlIiwiZHJvcCIsIm4kMCIsIm4kMSIsInRha2Vfd2hpbGUiLCJkcm9wX3doaWxlIiwibm9kZSIsImdyb3VwIiwiZmFpbHVyZSIsIm1lbW9pemUiLCJvbmNlIiwiYWN0aW9uIiwiemlwIiwibWFwMiIsImludGVybGVhdmUiLCJzb3J0ZWRfbWVyZ2UxIiwic29ydGVkX21lcmdlIiwibWFwX2ZzdCIsInh5cyIsInh5cyQwIiwibWFwX3NuZCIsInVuemlwIiwiZmlsdGVyX21hcF9maW5kX2xlZnRfbWFwIiwiZmlsdGVyX21hcF9maW5kX3JpZ2h0X21hcCIsInoiLCJwYXJ0aXRpb25fbWFwIiwicGFydGl0aW9uIiwicGVlbCIsInhzcyIsInRyYW5zcG9zZSIsInRhaWxzIiwiaGVhZHMiLCJyZW1haW5kZXJzIiwieHNzJDAiLCJ0YWlscyQwIiwiaGVhZHMkMCIsIm1hcF9wcm9kdWN0IiwicHJvZHVjdCIsIm9mX2Rpc3BlbnNlciIsIml0IiwidG9fZGlzcGVuc2VyIiwiaW50cyIsIm5vbmUiLCJzb21lIiwidmFsdWUiLCJkZWZhdWx0JDAiLCJnZXQkMCIsImJpbmQiLCJqb2luIiwibWFwJDIiLCJmb2xkJDAiLCJpdGVyJDAiLCJpc19ub25lIiwiaXNfc29tZSIsImVxdWFsJDEiLCJvMCIsInYxIiwidjAiLCJjb21wYXJlJDEiLCJ0b19yZXN1bHQiLCJ0b19saXN0IiwidG9fc2VxIiwib2siLCJlcnJvciIsInZhbHVlJDAiLCJnZXRfb2siLCJnZXRfZXJyb3IiLCJiaW5kJDAiLCJqb2luJDAiLCJtYXAkMyIsIm1hcF9lcnJvciIsImZvbGQkMSIsIml0ZXIkMSIsIml0ZXJfZXJyb3IiLCJpc19vayIsImlzX2Vycm9yIiwiZXF1YWwkMiIsInIwIiwicjEiLCJjb21wYXJlJDIiLCJ0b19vcHRpb24iLCJ0b19saXN0JDAiLCJ0b19zZXEkMCIsImVxdWFsJDMiLCJjb21wYXJlJDMiLCJ0b19mbG9hdCIsInRvX3N0cmluZyQwIiwiZXNjYXBlZCIsImxvd2VyY2FzZSIsInVwcGVyY2FzZSIsImxvd2VyY2FzZV9hc2NpaSIsInVwcGVyY2FzZV9hc2NpaSIsImNvbXBhcmUkNCIsImMxIiwiYzIiLCJlcXVhbCQ0IiwibWluJDAiLCJtYXgkMCIsImxvX2JvdW5kIiwiaGlfYm91bmQiLCJib20iLCJyZXAiLCJzdWNjIiwicHJlZCIsImlzX3ZhbGlkIiwib2ZfaW50IiwiaXNfY2hhciIsIm9mX2NoYXIiLCJ0b19jaGFyIiwidW5zYWZlX3RvX2NoYXIiLCJlcXVhbCQ1IiwiY29tcGFyZSQ1IiwiaGFzaCIsInV0Zl9kZWNvZGVfaXNfdmFsaWQiLCJkIiwidXRmX2RlY29kZV9sZW5ndGgiLCJ1dGZfZGVjb2RlX3VjaGFyIiwidXRmX2RlY29kZSIsImRlY19pbnZhbGlkIiwidXRmXzhfYnl0ZV9sZW5ndGgiLCJ1dGZfMTZfYnl0ZV9sZW5ndGgiLCJsZW5ndGgkMSIsInBhcmFtJDAiLCJjb25zJDAiLCJudGgiLCJsJDAiLCJsJDEiLCJudGhfb3B0IiwicmV2X2FwcGVuZCIsImwxJDAiLCJsMiQwIiwibDEkMSIsImwyJDEiLCJyZXYiLCJpbml0X2F1eCQwIiwicGFyYW0iLCJhMiIsImExIiwicGFpciIsIngkMCIsInJ5IiwicngiLCJ0MiIsImgyIiwidDEiLCJoMSIsInJldl9zb3J0IiwieDIiLCJ4MSIsInRsJDEiLCJ4MyIsIngyJDAiLCJ4MSQwIiwibjEiLCJuMiIsInNvcnQiLCJ0bCQwIiwiYyQwIiwiYyQxIiwiYyQyIiwiYyQzIiwiYyQ0IiwiYyQ1IiwiYyQ2IiwiYWNjdSQyIiwiYXV4IiwidGFpbCIsImRpcmVjdCIsImRlcHRoIiwiemVybyIsIm9uZSIsIm1pbnVzX29uZSIsImFicyQwIiwibWF4X2ludCQwIiwibWluX2ludCQwIiwibG9nbm90IiwiZXF1YWwkNyIsImNvbXBhcmUkNyIsIm1pbiQxIiwibWF4JDEiLCJ0b19zdHJpbmckMSIsInN5bWJvbCQwIiwiZHN0b2ZmIiwic3Jjb2ZmIiwiY3B5bGVuIiwib2ZzMSIsIm9mczIiLCJzZXAiLCJzZXBsZW4iLCJkc3QiLCJpc19zcGFjZSIsImFwcGx5MSIsInByZWZpeCIsImxlbl9zIiwibGVuX3ByZSIsInN1ZmZpeCIsImxlbl9zdWYiLCJkaWZmIiwiaW5kZXhfcmVjIiwibGltIiwiaSQxIiwiaW5kZXhfcmVjX29wdCIsInJpbmRleF9yZWMiLCJyaW5kZXhfcmVjX29wdCIsIm5ld19sZW4iLCJuZXdfYnVmIiwiZ2V0JDEiLCJzZXQkMCIsImRlY19yZXQiLCJub3RfaW5feDgwX3RvX3hCRiIsIm5vdF9pbl94QTBfdG9feEJGIiwibm90X2luX3g4MF90b194OUYiLCJub3RfaW5feDkwX3RvX3hCRiIsIm5vdF9pbl94ODBfdG9feDhGIiwidXRmXzhfdWNoYXJfMyIsImIwIiwiYjEiLCJiMiIsInV0Zl84X3VjaGFyXzQiLCJiMyIsImkkNCIsImIxJDEiLCJpJDUiLCJiMiQxIiwiaSQ2IiwiaSQxMCIsImIxJDMiLCJpJDExIiwiYjIkMyIsImkkMTIiLCJiMyQxIiwiaSQ3IiwiYjEkMiIsImkkOCIsImIyJDIiLCJpJDkiLCJiMyQwIiwiaSQxMyIsImIxJDQiLCJpJDE0IiwiYjIkNCIsImkkMiIsImIxJDAiLCJpJDMiLCJiMiQwIiwiaSQxNSIsImIxJDUiLCJzZXQiLCJsYXN0IiwibGFzdCQwIiwibGFzdCQxIiwibGFzdCQzIiwibGFzdCQyIiwibGFzdCQ0IiwibGFzdCQ1IiwiaGkiLCJsbyIsImlzX3NwYWNlJDAiLCJpbmRleF9yZWMkMCIsImluZGV4X3JlY19vcHQkMCIsInJpbmRleF9yZWMkMCIsInJpbmRleF9yZWNfb3B0JDAiLCJnIiwiZXF1YWwkMTAiLCJjb21wYXJlJDEwIiwidG9fc3RyaW5nJDIiLCJ0b19idWZmZXIiLCJidWZmIiwiZmxhZ3MiLCJoZWFkZXJfc2l6ZSIsImRhdGFfc2l6ZSIsInRvdGFsX3NpemUiLCJmcm9tX2J5dGVzIiwiZnJvbV9zdHJpbmciLCJzeCIsInN5IiwibGEiLCJsYiIsInJlcyQwIiwibGlzdF9sZW5ndGgiLCJwYXJhbSQxIiwiaGQkMCIsImlucHV0X2FycmF5IiwiZWx0Iiwib3V0cHV0X2FycmF5IiwiZWx0JDAiLCJhY2MkMiIsImEwIiwiYmkiLCJhaSIsIm5hIiwibmIiLCJtYXhzb24iLCJpMzEiLCJ0cmlja2xlZG93biIsInRyaWNrbGUiLCJidWJibGVkb3duIiwiYnViYmxlIiwiZSQwIiwiZmF0aGVyIiwibWVyZ2UiLCJzcmMxb2ZzIiwic3JjMWxlbiIsInNyYzIiLCJzcmMyb2ZzIiwic3JjMmxlbiIsImRzdG9mcyIsInNyYzFyIiwic3JjMnIiLCJzMiQxIiwiczEkMSIsImkxIiwiaTIiLCJpMiQwIiwiZCQwIiwiczIkMCIsImkxJDAiLCJkJDEiLCJzMSQwIiwiaXNvcnR0byIsInNyY29mcyIsInNvcnR0byIsInplcm8kMCIsIm9uZSQwIiwibWludXNfb25lJDAiLCJpc19maW5pdGUiLCJpc19pbmZpbml0ZSIsImlzX25hbiIsInBpIiwiaXNfaW50ZWdlciIsInN1Y2MkMCIsInByZWQkMCIsImVxdWFsJDExIiwibWluJDIiLCJtYXgkMiIsIm1pbl9tYXgiLCJtaW5fbnVtIiwibWF4X251bSIsIm1pbl9tYXhfbnVtIiwiaGFzaCQwIiwidW5zYWZlX2ZpbGwiLCJjaGVjayIsIm1ha2UkMiIsImluaXQkNCIsImFwcGVuZCQyIiwiY29uY2F0JDMiLCJobGVuIiwic3ViJDIiLCJjb3B5JDIiLCJmaWxsJDEiLCJibGl0JDIiLCJzcmMiLCJzb2ZzIiwiZG9mcyIsInRvX2xpc3QkMiIsIm9mX2xpc3QkMCIsImgiLCJpdGVyJDYiLCJpdGVyMiQyIiwibWFwJDgiLCJtYXAyJDIiLCJpdGVyaSQ0IiwibWFwaSQ0IiwiZm9sZF9sZWZ0JDQiLCJmb2xkX3JpZ2h0JDMiLCJleGlzdHMkNCIsImZvcl9hbGwkNCIsIm1lbSQxIiwibWVtX2llZWUiLCJzb3J0JDAiLCJzdGFibGVfc29ydCIsInRvX3NlcSQ1IiwidG9fc2VxaSQyIiwib2Zfc2VxJDMiLCJtYXBfdG9fYXJyYXkiLCJtYXBfZnJvbV9hcnJheSIsInplcm8kMSIsIm9uZSQxIiwibWludXNfb25lJDEiLCJzdWNjJDEiLCJwcmVkJDEiLCJhYnMkMSIsIm1pbl9pbnQkMSIsIm1heF9pbnQkMSIsImxvZ25vdCQwIiwidW5zaWduZWRfdG9faW50IiwidG9fc3RyaW5nJDMiLCJvZl9zdHJpbmdfb3B0JDAiLCJjb21wYXJlJDExIiwiZXF1YWwkMTIiLCJ1bnNpZ25lZF9jb21wYXJlIiwibSIsIm1pbiQzIiwibWF4JDMiLCJ1bnNpZ25lZF9kaXYiLCJxIiwidW5zaWduZWRfcmVtIiwic3VjYyQyIiwicHJlZCQyIiwiYWJzJDIiLCJsb2dub3QkMSIsIm1heF9pbnQkMyIsInVuc2lnbmVkX3RvX2ludCQwIiwidG9fc3RyaW5nJDQiLCJvZl9zdHJpbmdfb3B0JDEiLCJjb21wYXJlJDEyIiwiZXF1YWwkMTMiLCJ1bnNpZ25lZF9jb21wYXJlJDAiLCJtaW4kNCIsIm1heCQ0IiwidW5zaWduZWRfZGl2JDAiLCJ1bnNpZ25lZF9yZW0kMCIsInplcm8kMyIsIm9uZSQzIiwibWludXNfb25lJDMiLCJzdWNjJDMiLCJwcmVkJDMiLCJhYnMkMyIsIm1pbl9pbnQkMyIsIm1heF9pbnQkNCIsImxvZ25vdCQyIiwidW5zaWduZWRfdG9faW50JDEiLCJ0b19zdHJpbmckNSIsIm9mX3N0cmluZ19vcHQkMiIsImNvbXBhcmUkMTMiLCJlcXVhbCQxNCIsInVuc2lnbmVkX2NvbXBhcmUkMSIsIm1pbiQ1IiwibWF4JDUiLCJ1bnNpZ25lZF9kaXYkMSIsInVuc2lnbmVkX3JlbSQxIiwiZW5naW5lIiwidGJsIiwic3RhdGUiLCJuZXdfZW5naW5lIiwiZnJvbV9mdW5jdGlvbiIsIm9wdCIsInN0aCIsIndpdGhfcG9zaXRpb25zIiwiYXV4X2J1ZmZlciIsImxleGJ1ZiIsInJlYWQiLCJuZXdsZW4iLCJuZXdidWYiLCJmcm9tX2NoYW5uZWwiLCJmcm9tX3N0cmluZyQwIiwic2V0X3Bvc2l0aW9uIiwicG9zaXRpb24iLCJzZXRfZmlsZW5hbWUiLCJmbmFtZSIsImxleGVtZSIsInN1Yl9sZXhlbWUiLCJzdWJfbGV4ZW1lX29wdCIsInN1Yl9sZXhlbWVfY2hhciIsInN1Yl9sZXhlbWVfY2hhcl9vcHQiLCJsZXhlbWVfY2hhciIsImxleGVtZV9zdGFydCIsImxleGVtZV9lbmQiLCJsZXhlbWVfc3RhcnRfcCIsImxleGVtZV9lbmRfcCIsIm5ld19saW5lIiwibGNwIiwiZmx1c2hfaW5wdXQiLCJlbnYiLCJncm93X3N0YWNrcyIsIm9sZHNpemUiLCJuZXdzaXplIiwibmV3X3MiLCJuZXdfdiIsIm5ld19zdGFydCIsIm5ld19lbmQiLCJjbGVhcl9wYXJzZXIiLCJjdXJyZW50X2xvb2thaGVhZF9mdW4iLCJ5eXBhcnNlIiwidGFibGVzIiwic3RhcnQiLCJsZXhlciIsImluaXRfYXNwIiwiaW5pdF9zcCIsImluaXRfc3RhY2tiYXNlIiwiaW5pdF9zdGF0ZSIsImluaXRfY3Vycl9jaGFyIiwiaW5pdF9sdmFsIiwiaW5pdF9lcnJmbGFnIiwiY21kIiwiYXJnIiwiYXJnJDAiLCJhcmckMSIsImNtZCQwIiwiZXhuIiwiY3Vycl9jaGFyIiwidG9rIiwicGVla192YWwiLCJzeW1ib2xfc3RhcnRfcG9zIiwic3QiLCJlbiIsInN5bWJvbF9lbmRfcG9zIiwicmhzX3N0YXJ0X3BvcyIsInJoc19lbmRfcG9zIiwic3ltYm9sX3N0YXJ0Iiwic3ltYm9sX2VuZCIsInJoc19zdGFydCIsInJoc19lbmQiLCJpc19jdXJyZW50X2xvb2thaGVhZCIsInBhcnNlX2Vycm9yIiwiaGVpZ2h0IiwiaGwiLCJoJDAiLCJociIsImJhbCIsImxyIiwibHYiLCJsbCIsImxyciIsImxydiIsImxybCIsInJyIiwicnYiLCJybCIsInJsciIsInJsdiIsInJsbCIsImFkZCIsInNpbmdsZXRvbiIsImFkZF9taW5fZWxlbWVudCIsImFkZF9tYXhfZWxlbWVudCIsInJoIiwibGgiLCJtaW5fZWx0IiwibWluX2VsdF9vcHQiLCJtYXhfZWx0IiwibWF4X2VsdF9vcHQiLCJyZW1vdmVfbWluX2VsdCIsInIkMCIsInNwbGl0IiwicHJlcyIsInByZXMkMCIsIm1lbSIsInJlbW92ZSIsInVuaW9uIiwicjIiLCJyMiQwIiwicjEkMCIsImludGVyIiwic3BsaXRfYmlzIiwiZGlzam9pbnQiLCJjb25zX2VudW0iLCJzJDEiLCJlJDEiLCJlMiQyIiwiZTEkMiIsImUyJDAiLCJlMSQwIiwiZTIkMSIsImUxJDEiLCJzdWJzZXQiLCJwdiIsImxmIiwibHQiLCJyZiIsInJ0IiwiY2FyZGluYWwiLCJlbGVtZW50c19hdXgiLCJlbGVtZW50cyIsImZpbmRfZmlyc3QiLCJmaW5kX2ZpcnN0X29wdCIsImZpbmRfbGFzdCIsImZpbmRfbGFzdF9vcHQiLCJmaW5kX29wdCIsInRyeV9qb2luIiwidiQxIiwib2ZfbGlzdCIsInN1YiIsImwkMyIsIngwIiwibCQ0IiwieDAkMCIsImwkNSIsIngwJDEiLCJubCIsIm1pZCIsImwkMiIsIng0IiwiYWRkX3NlcSIsIm9mX3NlcSIsInNlcV9vZl9lbnVtIiwic25vY19lbnVtIiwicmV2X3NlcV9vZl9lbnVtIiwidG9fcmV2X3NlcSIsInRvX3NlcV9mcm9tIiwibG93IiwibGQiLCJscmQiLCJyZCIsInJsZCIsImRhdGEiLCJtaW5fYmluZGluZyIsIm1pbl9iaW5kaW5nX29wdCIsIm1heF9iaW5kaW5nIiwibWF4X2JpbmRpbmdfb3B0IiwicmVtb3ZlX21pbl9iaW5kaW5nIiwidXBkYXRlIiwiZGF0YSQwIiwibSQwIiwiYWRkX21pbl9iaW5kaW5nIiwiayIsImFkZF9tYXhfYmluZGluZyIsImNvbmNhdF9vcl9qb2luIiwiZDEiLCJkMiIsImQyJDAiLCJkMSQwIiwiZDIkMSIsImQxJDEiLCJwdmQiLCJmdmQiLCJtJDEiLCJtMSIsIm0yIiwiYmluZGluZ3NfYXV4IiwiYmluZGluZ3MiLCJjcmVhdGUkMCIsImNsZWFyIiwiY29weSQzIiwicHVzaCIsInBvcCIsInBvcF9vcHQiLCJ0b3AiLCJ0b3Bfb3B0IiwiaXNfZW1wdHkkMCIsImxlbmd0aCQyIiwiaXRlciQ3IiwiZm9sZCQyIiwidG9fc2VxJDYiLCJvZl9zZXEkNCIsImNyZWF0ZSQxIiwiY2xlYXIkMCIsImNlbGwiLCJwZWVrIiwiY29udGVudCIsInBlZWtfb3B0IiwidGFrZSQwIiwidGFrZV9vcHQiLCJjb3B5JDQiLCJxX3JlcyIsInByZXYiLCJpc19lbXB0eSQxIiwibGVuZ3RoJDMiLCJpdGVyJDgiLCJmb2xkJDMiLCJ0cmFuc2ZlciIsInExIiwicTIiLCJ0b19zZXEkNyIsImFkZF9zZXEkMCIsIm9mX3NlcSQ1IiwiY291bnQiLCJmaWxsX2J1ZmYiLCJnZXRfZGF0YSIsImQxMSIsImEkMCIsImEkMSIsInBlZWtfZGF0YSIsInBlZWskMCIsImp1bmtfZGF0YSIsImp1bmsiLCJuZ2V0X2RhdGEiLCJhbCIsIm5wZWVrIiwiZW1wdHkkMiIsIml0ZXIkOSIsInN0cm0iLCJmcm9tIiwib2ZfbGlzdCQxIiwib2Zfc3RyaW5nIiwib2ZfYnl0ZXMkMCIsIm9mX2NoYW5uZWwiLCJpYXBwIiwiaWNvbnMiLCJpc2luZyIsImxhcHAiLCJsY29ucyIsImxzaW5nIiwic2VtcHR5Iiwic2xhenkiLCJkdW1wX2RhdGEiLCJkdW1wIiwiY3JlYXRlJDIiLCJjb250ZW50cyIsInRvX2J5dGVzJDAiLCJzdWIkMyIsImJsaXQkMyIsIm50aCQwIiwibGVuZ3RoJDQiLCJjbGVhciQxIiwicmVzZXQiLCJyZXNpemUiLCJtb3JlIiwib2xkX3BvcyIsIm9sZF9sZW4iLCJuZXdfYnVmZmVyIiwiYWRkX2NoYXIiLCJwb3MiLCJ1Y2hhcl91dGZfOF9ieXRlX2xlbmd0aF9tYXgiLCJ1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4IiwiYWRkX3V0Zl84X3VjaGFyIiwiYWRkX3V0Zl8xNmJlX3VjaGFyIiwiYWRkX3V0Zl8xNmxlX3VjaGFyIiwiYWRkX3N1YnN0cmluZyIsIm9mZnNldCIsIm5ld19wb3NpdGlvbiIsImFkZF9zdWJieXRlcyIsImFkZF9zdHJpbmciLCJhZGRfYnl0ZXMiLCJhZGRfYnVmZmVyIiwiYnMiLCJhZGRfY2hhbm5lbCIsImFscmVhZHlfcmVhZCIsInRvX3JlYWQiLCJhbHJlYWR5X3JlYWQkMCIsInRvX3JlYWQkMCIsIm91dHB1dF9idWZmZXIiLCJhZGRfc3Vic3RpdHV0ZSIsImxpbSQxIiwicHJldmlvdXMiLCJjdXJyZW50Iiwib3BlbmluZyIsImxpbSQwIiwic3RvcCIsImskMiIsImskMCIsImskMSIsIm5leHRfaSIsImlkZW50IiwidHJ1bmNhdGUiLCJ0b19zZXEkOCIsInRvX3NlcWkkMyIsImFkZF9zZXEkMSIsIm9mX3NlcSQ2IiwiYWRkX2ludDgiLCJhZGRfaW50MTZfbmUiLCJhZGRfaW50MzJfbmUiLCJhZGRfaW50NjRfbmUiLCJhZGRfaW50MTZfbGUiLCJhZGRfaW50MTZfYmUiLCJhZGRfaW50MzJfbGUiLCJhZGRfaW50MzJfYmUiLCJhZGRfaW50NjRfbGUiLCJhZGRfaW50NjRfYmUiLCJjcmVhdGVfY2hhcl9zZXQiLCJhZGRfaW5fY2hhcl9zZXQiLCJzdHJfaW5kIiwibWFzayIsImZyZWV6ZV9jaGFyX3NldCIsInJldl9jaGFyX3NldCIsImNoYXJfc2V0JDAiLCJpc19pbl9jaGFyX3NldCIsInBhZF9vZl9wYWRfb3B0IiwicGFkX29wdCIsIndpZHRoIiwicGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IiwiZm10IiwicGFkX29wdCQwIiwicGFkX29wdCQxIiwicGFkX29wdCQyIiwicGFkX29wdCQzIiwicGFkX29wdCQ0IiwicHJlY19vcHQiLCJwYWRfb3B0JDUiLCJuZGVjIiwicGFkX29wdCQ2IiwicGFkX29wdCQ3IiwicGFkX29wdCQ4IiwiZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24iLCJidWZmZXJfY3JlYXRlIiwiaW5pdF9zaXplIiwiYnVmZmVyX2NoZWNrX3NpemUiLCJvdmVyaGVhZCIsIm1pbl9sZW4iLCJuZXdfc3RyIiwiYnVmZmVyX2FkZF9jaGFyIiwiYnVmZmVyX2FkZF9zdHJpbmciLCJzdHJfbGVuIiwiYnVmZmVyX2NvbnRlbnRzIiwiY2hhcl9vZl9pY29udiIsImNoYXJfb2ZfZmNvbnYiLCJjRiIsImJwcmludF9wYWR0eSIsInBhZHR5IiwiYnByaW50X2lnbm9yZWRfZmxhZyIsImlnbl9mbGFnIiwiYnByaW50X3BhZF9vcHQiLCJicHJpbnRfcGFkZGluZyIsInBhZHR5JDAiLCJicHJpbnRfcHJlY2lzaW9uIiwiYnByaW50X2ljb252X2ZsYWciLCJicHJpbnRfYWx0aW50X2ZtdCIsImJwcmludF9mY29udl9mbGFnIiwic3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0Iiwic3RyJDAiLCJicHJpbnRfY2hhcl9saXRlcmFsIiwiYnByaW50X3N0cmluZ19saXRlcmFsIiwiYnByaW50X2ZtdHR5Iiwic3ViX2ZtdHR5Iiwic3ViX2ZtdHR5JDAiLCJpbnRfb2ZfY3VzdG9tX2FyaXR5Iiwic3RyaW5nX29mX2ZtdCIsImZtdGl0ZXIiLCJmbXQkMCIsImlnbl9mbGFnJDAiLCJjaHIkMCIsInN0ciQxIiwiaXNfYWxvbmUkMCIsImlzX2Fsb25lIiwiYWZ0ZXIiLCJiZWZvcmUiLCJqJDAiLCJqJDEiLCJmbXQkMSIsInN5bW0iLCJ0cmFucyIsInJlc3QyIiwicmVzdDIkMCIsInJlc3QyJDEiLCJyZXN0MiQyIiwicmVzdDIkMyIsInJlc3QyJDQiLCJyZXN0MiQ1IiwicmVzdDIkNiIsInJlc3QyJDciLCJ0eTIkMCIsInJlc3QyJDgiLCJ0eTIyIiwidHkyMSIsImZtdHR5X3JlbF9kZXQiLCJmNCIsImYyIiwicmVzdDIkOSIsInJlc3QyJDEwIiwicmVzdDIkMTEiLCJyZXN0MiQxMiIsInJlc3QyJDEzIiwiZGUiLCJlZCIsImFmIiwiZmEiLCJkZSQwIiwiZWQkMCIsImFmJDAiLCJmYSQwIiwiZGUkMSIsImVkJDEiLCJhZiQxIiwiZmEkMSIsImRlJDIiLCJlZCQyIiwiYWYkMiIsImZhJDIiLCJkZSQzIiwiZWQkMyIsImFmJDMiLCJmYSQzIiwiZGUkNCIsImVkJDQiLCJhZiQ0IiwiZmEkNCIsImRlJDUiLCJlZCQ1IiwiYWYkNSIsImZhJDUiLCJkZSQ2IiwiZWQkNiIsImFmJDYiLCJmYSQ2IiwiZGUkNyIsImVkJDciLCJhZiQ3IiwiZmEkNyIsImRlJDgiLCJlZCQ4IiwiYWYkOCIsImZhJDgiLCJqZCIsImRqIiwiZ2EiLCJhZyIsImRlJDkiLCJlZCQ5IiwiYWYkOSIsImZhJDkiLCJkZSQxMCIsImVkJDEwIiwiYWYkMTAiLCJmYSQxMCIsImRlJDExIiwiZWQkMTEiLCJhZiQxMSIsImZhJDExIiwiZGUkMTIiLCJlZCQxMiIsImFmJDEyIiwiZmEkMTIiLCJkZSQxMyIsImVkJDEzIiwiYWYkMTMiLCJmYSQxMyIsImZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSIsImZtdHR5X29mX3BhZGRpbmdfZm10dHkiLCJmbXR0eV9vZl9jdXN0b20iLCJhcml0eSQwIiwiZm10dHlfb2ZfZm10IiwidHlfcmVzdCIsInByZWNfdHkiLCJ0eV9yZXN0JDAiLCJwcmVjX3R5JDAiLCJ0eV9yZXN0JDEiLCJwcmVjX3R5JDEiLCJ0eV9yZXN0JDIiLCJwcmVjX3R5JDIiLCJ0eV9yZXN0JDMiLCJwcmVjX3R5JDMiLCJmbXR0eSQxIiwiZm10dHkkMiIsImZtdHR5JDMiLCJ0eSQwIiwiZm10dHkkNCIsImZtdHR5JDUiLCJ0eXBlX3BhZGRpbmciLCJ3IiwidHlwZV9wYWRwcmVjIiwidHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpIiwidHlwZV9mb3JtYXRfZ2VuIiwiZm10dHlfcmVzdCIsInN1Yl9mbXR0eV9yZXN0Iiwic3ViX2ZtdHR5X3Jlc3QkMCIsImZtdHR5X3Jlc3QkMCIsInN1Yl9mbXR0eV9yZXN0JDEiLCJzdWJfZm10dHlfcmVzdCQyIiwiZm10dHlfcmVzdCQxIiwic3ViX2ZtdHR5X3Jlc3QkMyIsImZtdCQyIiwic3ViX2ZtdHR5X3Jlc3QkNCIsImZtdHR5X3Jlc3QkMiIsInN1Yl9mbXR0eV9yZXN0JDUiLCJmbXQkMyIsInN1Yl9mbXR0eV9yZXN0JDYiLCJmbXR0eV9yZXN0JDMiLCJzdWJfZm10dHlfcmVzdCQ3IiwiZm10JDQiLCJzdWJfZm10dHlfcmVzdCQ4IiwiZm10dHlfcmVzdCQ0Iiwic3ViX2ZtdHR5X3Jlc3QkOSIsImZtdCQ1Iiwic3ViX2ZtdHR5X3Jlc3QkMTAiLCJmbXR0eV9yZXN0JDUiLCJzdWJfZm10dHlfcmVzdCQxMSIsImZtdCQ2Iiwic3ViX2ZtdHR5X3Jlc3QkMTIiLCJmbXR0eV9yZXN0JDYiLCJzdWJfZm10dHlfcmVzdCQxMyIsImZtdCQ3Iiwic3ViX2ZtdHR5X3Jlc3QkMTQiLCJmbXR0eV9yZXN0JDciLCJzdWIyX2ZtdHR5Iiwic3ViX2ZtdHR5X3Jlc3QkMTUiLCJzdWIyX2ZtdHR5JDAiLCJmbXQkOCIsInN1Yl9mbXR0eV9yZXN0JDE2IiwiZm10dHlfcmVzdCQ4Iiwic3ViMl9mbXR0eSQxIiwic3ViMV9mbXR0eSIsInN1Yl9mbXR0eV9yZXN0JDE3Iiwic3ViMl9mbXR0eSQyIiwic3ViMV9mbXR0eSQwIiwiZm10JDkiLCJzdWJfZm10dHlfcmVzdCQxOCIsImZtdHR5X3Jlc3QkOSIsInN1Yl9mbXR0eV9yZXN0JDE5IiwiZm10JDEwIiwic3ViX2ZtdHR5X3Jlc3QkMjAiLCJmbXR0eV9yZXN0JDEwIiwic3ViX2ZtdHR5X3Jlc3QkMjEiLCJmbXQkMTEiLCJzdWJfZm10dHlfcmVzdCQyMiIsImZtdHR5X3Jlc3QkMTEiLCJzdWJfZm10dHlfcmVzdCQyMyIsImZtdCQxMiIsInN1Yl9mbXR0eV9yZXN0JDI0IiwiZm10dHlfcmVzdCQxMiIsInN1Yl9mbXR0eV9yZXN0JDI1IiwiZm10JDEzIiwic3ViX2ZtdHR5X3Jlc3QkMjYiLCJmbXRfcmVzdCIsImZtdF9yZXN0JDAiLCJmbXRfcmVzdCQxIiwiZm10X3Jlc3QkMiIsImZtdF9yZXN0JDMiLCJmbXRfcmVzdCQ0IiwiZm10X3Jlc3QkNSIsInByZWMkNCIsImZtdHR5JDYiLCJmbXRfcmVzdCQ2IiwicHJlYyQ1IiwicHJlYyQ2IiwiZm10dHkkNyIsImZtdF9yZXN0JDciLCJwcmVjJDciLCJwcmVjJDgiLCJmbXR0eSQ4IiwiZm10X3Jlc3QkOCIsImZtdHR5JDkiLCJmbXRfcmVzdCQ5IiwiZm10dHkkMTAiLCJmbXRfcmVzdCQxMCIsImZtdHR5JDExIiwiZm10X3Jlc3QkMTEiLCJmbXR0eSQxMiIsImZtdF9yZXN0JDEyIiwiZm10dHkkMTMiLCJzdWJfZm10dHkxIiwiZm10X3Jlc3QkMTMiLCJzdWJfZm10dHkkMSIsImZtdHR5JDE0IiwiZm10JDE0IiwiZm10X3Jlc3QkMTQiLCJmbXR0eSQxNSIsImZtdCQxNSIsImZtdF9yZXN0JDE1IiwiZm10dHkkMTYiLCJmbXQkMTYiLCJmbXRfcmVzdCQxNiIsImZtdHR5JDE3IiwiZm10JDE3IiwiZm10X3Jlc3QkMTciLCJmb3JtYXR0aW5nX2dlbiIsImZtdHR5MyIsImZtdDMiLCJmbXQxJDAiLCJmbXR0eTIkMCIsImZtdDIkMCIsImZtdHR5MyQwIiwiZm10MyQwIiwiZm10dHlfcmVzdCQxMyIsImZtdF9yZXN0JDE4IiwiZm10dHkkMTgiLCJmbXQkMTgiLCJmbXR0eV9yZXN0JDE0IiwiZm10X3Jlc3QkMTkiLCJmbXR0eSQxOSIsImZtdCQxOSIsImZtdHR5X3Jlc3QkMTUiLCJmbXRfcmVzdCQyMCIsImZtdHR5JDIwIiwiZm10JDIwIiwidHlwZV9pZ25vcmVkX3BhcmFtX29uZSIsImZtdHR5X3Jlc3QkMTYiLCJmbXR0eSQyMSIsImZtdCQyMSIsInN1Yl9mbXR0eSQyIiwic3ViX2ZtdHR5JDMiLCJmbXR0eSQyMiIsImZtdCQyMiIsInN1Yl9mbXR0eSQ0IiwidHlwZV9mb3JtYXQiLCJyZWNhc3QiLCJmaXhfcGFkZGluZyIsIndpZHRoJDAiLCJmaXhfaW50X3ByZWNpc2lvbiIsInJlcyQxIiwic3RyaW5nX3RvX2NhbWxfc3RyaW5nIiwiZm9ybWF0X29mX2Zjb252Iiwic3ltYiIsInRyYW5zZm9ybV9pbnRfYWx0IiwiZGlnaXRzIiwicHV0IiwiY29udmVydF9pbnQiLCJjb252ZXJ0X2ludDMyIiwiY29udmVydF9uYXRpdmVpbnQiLCJjb252ZXJ0X2ludDY0IiwiY29udmVydF9mbG9hdCIsImhleCIsInNpZ24iLCJjYW1sX3NwZWNpYWxfdmFsIiwic3RyaW5nX29mX2ZtdHR5IiwibWFrZV9wcmludGYkMCIsIm5ld19hY2MiLCJtYWtlX3ByaW50ZiIsIm1ha2VfcGFkZGluZyIsIm1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIiwicCQwIiwicCQxIiwiYWNjJDMiLCJhY2MkNCIsImskMyIsImthY2MiLCJrJDQiLCJtYWtlX2lnbm9yZWRfcGFyYW0kMCIsIm1ha2VfY3VzdG9tJDAiLCJtYWtlX2ludmFsaWRfYXJnIiwibWFrZV9mcm9tX2ZtdHR5JDAiLCJtYWtlX2Zyb21fZm10dHkiLCJtYWtlX2N1c3RvbSIsIm1ha2VfaWdub3JlZF9wYXJhbSIsIm1ha2VfaXByaW50ZiQwIiwibWFrZV9pcHJpbnRmIiwiZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24iLCJrb2MiLCJyZXN0JDI0IiwicmVzdCQyNSIsImZuX29mX2N1c3RvbV9hcml0eSQwIiwiZm5fb2ZfY3VzdG9tX2FyaXR5Iiwib3V0cHV0X2FjYyIsInAkMiIsInAkMyIsInAkNCIsImJ1ZnB1dF9hY2MiLCJzdHJwdXRfYWNjIiwiZmFpbHdpdGhfbWVzc2FnZSIsIm9wZW5fYm94X29mX3N0cmluZyIsImludmFsaWRfYm94IiwicGFyc2Vfc3BhY2VzIiwicGFyc2VfbHdvcmQiLCJwYXJzZV9pbnQiLCJ3c3RhcnQiLCJ3ZW5kIiwiYm94X25hbWUiLCJuc3RhcnQiLCJuZW5kIiwiaW5kZW50IiwiZXhwX2VuZCIsImJveF90eXBlIiwibWFrZV9wYWRkaW5nX2ZtdF9lYmIiLCJtYWtlX3BhZHByZWNfZm10X2ViYiIsImZtdF9lYmJfb2Zfc3RyaW5nIiwibGVnYWN5X2JlaGF2aW9yIiwiZmxhZyIsImxlZ2FjeV9iZWhhdmlvciQwIiwiaW52YWxpZF9mb3JtYXRfbWVzc2FnZSIsInVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCIsImVuZF9pbmQiLCJpbnZhbGlkX2Zvcm1hdF93aXRob3V0IiwiZXhwZWN0ZWRfY2hhcmFjdGVyIiwiZXhwZWN0ZWQiLCJhZGRfbGl0ZXJhbCIsImxpdF9zdGFydCIsInNpemUiLCJwYXJzZV9wb3NpdGl2ZSIsInN0cl9pbmQkMCIsInN0cl9pbmQkMSIsInBhcnNlX2ludGVnZXIiLCJuZXh0X2luZCIsImluY29tcGF0aWJsZV9mbGFnIiwicGN0X2luZCIsIm9wdGlvbiIsInN1YmZtdCIsImNvbXB1dGVfaW50X2NvbnYiLCJwbHVzIiwic3BhY2UiLCJwbHVzJDAiLCJzcGFjZSQwIiwic2VhcmNoX3N1YmZvcm1hdF9lbmQiLCJzdWJfZW5kIiwic3RyX2luZCQyIiwic3ViX2VuZCQwIiwic3RyX2luZCQzIiwic3ViX2VuZCQxIiwic3RyX2luZCQ0Iiwic3RyX2luZCQ1Iiwic3ViX2VuZCQyIiwic3RyX2luZCQ2Iiwic3RyX2luZCQ3IiwicGFyc2VfbWFnaWNfc2l6ZSIsInN0cl9pbmRfMSIsInN0cl9pbmRfMiIsInN0cl9pbmRfMyIsInBhcnNlIiwicGFyc2VfZ29vZF9icmVhayIsImZvcm1hdHRpbmdfbGl0JDAiLCJzdHJfaW5kXzQiLCJzdHJfaW5kXzUiLCJwYXJzZV90YWciLCJpc19vcGVuX3RhZyIsImluZCIsInN1Yl9zdHIiLCJzdWJfZm10Iiwic3ViX2Zvcm1hdCQwIiwiZm9ybWF0dGluZyQwIiwiZm9ybWF0dGluZyIsInBhcnNlX2ZsYWdzIiwibWludXMiLCJzZXRfZmxhZyIsIm5ld19pbmQiLCJwYXJzZV9hZnRlcl9wYWRkaW5nIiwicGFyc2VfbGl0ZXJhbCIsInBhcnNlX2FmdGVyX3ByZWNpc2lvbiIsInN5bWIkMCIsIm1pbnVzJDAiLCJwYXJzZV9jb252ZXJzaW9uIiwicGFyc2VfY29udiIsInBhZHByZWMiLCJwbHVzX3VzZWQiLCJoYXNoX3VzZWQiLCJzcGFjZV91c2VkIiwiaWduX3VzZWQiLCJwYWRfdXNlZCIsInByZWNfdXNlZCIsImdldF9wbHVzIiwiZ2V0X2hhc2giLCJnZXRfc3BhY2UiLCJnZXRfaWduIiwiZ2V0X3BhZCIsImdldF9wcmVjIiwiZ2V0X3BhZHByZWMiLCJnZXRfaW50X3BhZCIsImNoZWNrX25vXzAiLCJvcHRfb2ZfcGFkIiwid2lkdGgkMSIsImdldF9wYWRfb3B0IiwiZ2V0X3BhZHByZWNfb3B0IiwiZm10X3Jlc3VsdCIsImlnbm9yZWQkMiIsImNvdW50ZXIkMCIsImlnbm9yZWQkNiIsImlnbm9yZWQkNyIsImFkZF9yYW5nZSIsImZhaWxfc2luZ2xlX3BlcmNlbnQiLCJwYXJzZV9jaGFyX3NldF9jb250ZW50IiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciQwIiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciIsInJldmVyc2UiLCJjaGFyX3NldCQxIiwiaWdub3JlZCQ5IiwiY2hhcl9mb3JtYXQiLCJmbXRfcmVzdCQyMSIsImZtdF9yZXN0JDIyIiwicGFkJDkiLCJmbXRfcmVzdCQyMyIsImlnbm9yZWQkMTAiLCJmbXRfcmVzdCQyNCIsInBhZCQxMCIsImZtdF9yZXN0JDI1Iiwic3ViX2ZtdCQwIiwiZm10X3Jlc3QkMjYiLCJpZ25vcmVkJDExIiwiaWdub3JlZCQzIiwiaWdub3JlZCQ1IiwiaWdub3JlZCQ4Iiwic3BhY2UkMSIsImhhc2gkMSIsInBsdXMkMiIsImtpbmQiLCJpZ25vcmVkJDQiLCJpZ25vcmVkIiwiaWdub3JlZCQwIiwiaWdub3JlZCQxIiwicGx1cyQxIiwiaWduJDAiLCJmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5IiwiZm9ybWF0X29mX3N0cmluZ19mb3JtYXQiLCJrZnByaW50ZiIsImticHJpbnRmIiwiaWtmcHJpbnRmIiwiZnByaW50ZiIsImJwcmludGYiLCJpZnByaW50ZiIsImlicHJpbnRmIiwicHJpbnRmIiwiZXByaW50ZiIsImtzcHJpbnRmIiwic3ByaW50ZiIsImFzc29jMyIsInkyIiwieTEiLCJzcGxpdCQxIiwibWFrZV9zeW1saXN0IiwiaGVscF9hY3Rpb24iLCJhZGRfaGVscCIsInNwZWNsaXN0IiwiYWRkMiIsInVzYWdlX2IiLCJlcnJtc2ciLCJkb2MiLCJzcGVjIiwia2V5IiwidXNhZ2Vfc3RyaW5nIiwidXNhZ2UiLCJib29sX29mX3N0cmluZ19vcHQkMCIsImludF9vZl9zdHJpbmdfb3B0JDAiLCJmbG9hdF9vZl9zdHJpbmdfb3B0IiwicGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfIiwiYWxsb3dfZXhwYW5kIiwiYXJndiIsImFub25mdW4iLCJpbml0cG9zIiwiY29udmVydF9lcnJvciIsInByb2duYW1lIiwiZm9sbG93JDAiLCJrZXl3b3JkIiwibm9fYXJnJDAiLCJmb2xsb3ciLCJub19hcmciLCJnZXRfYXJnJDAiLCJnZXRfYXJnIiwiY29uc3VtZV9hcmckMCIsImNvbnN1bWVfYXJnIiwidHJlYXRfYWN0aW9uJDAiLCJ0cmVhdF9hY3Rpb24iLCJmJDAiLCJmJDEiLCJyJDEiLCJmJDIiLCJyJDIiLCJhcmckMiIsImYkMyIsImFyZyQzIiwieCQxIiwiciQzIiwiYXJnJDQiLCJ4JDIiLCJzcGVjcyIsImYkNCIsImFyZyQ1IiwiZiQ1IiwiZiQ2IiwiZiQ3IiwiYXJnJDYiLCJuZXdhcmciLCJwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pYyIsInBhcnNlX2FyZ3ZfZHluYW1pYyIsImN1cnJlbnQkMCIsInBhcnNlX2FyZ3YiLCJtc2ckMCIsIm1zZyQxIiwicGFyc2VfZHluYW1pYyIsInBhcnNlX2V4cGFuZCIsInNlY29uZF93b3JkIiwibG9vcCIsIm1heF9hcmdfbGVuIiwia3dkIiwicmVwbGFjZV9sZWFkaW5nX3RhYiIsImFsaWduIiwibGltaXQiLCJjb21wbGV0ZWQiLCJrc2QiLCJjdXRjb2wkMCIsInNwYWNlcyQwIiwiY3V0Y29sIiwia3dkX2xlbiIsInNwYWNlcyIsInJlYWRfYXV4IiwidHJpbSIsImZpbGUiLCJ3b3JkcyIsInN0YXNoIiwid29yZCIsInJlYWRfYXJnIiwicmVhZF9hcmcwIiwid3JpdGVfYXV4IiwiYXJncyIsIndyaXRlX2FyZyIsIndyaXRlX2FyZzAiLCJwcmludGVycyIsImZpZWxkIiwib3RoZXJfZmllbGRzIiwidXNlX3ByaW50ZXJzIiwiY29udiIsInRvX3N0cmluZ19kZWZhdWx0IiwiY2hhciQwIiwibGluZSIsImNoYXIkMSIsImxpbmUkMCIsImZpbGUkMCIsImNoYXIkMiIsImxpbmUkMSIsImZpbGUkMSIsImNvbnN0cnVjdG9yIiwidG9fc3RyaW5nJDYiLCJwcmludCIsImZjdCIsImNhdGNoJDAiLCJyYXdfYmFja3RyYWNlX2VudHJpZXMiLCJidCIsImNvbnZlcnRfcmF3X2JhY2t0cmFjZSIsImZvcm1hdF9iYWNrdHJhY2Vfc2xvdCIsImlzX3JhaXNlIiwicHJpbnRfcmF3X2JhY2t0cmFjZSIsIm91dGNoYW4iLCJyYXdfYmFja3RyYWNlIiwiYmFja3RyYWNlIiwicHJpbnRfYmFja3RyYWNlIiwicmF3X2JhY2t0cmFjZV90b19zdHJpbmciLCJiYWNrdHJhY2Vfc2xvdF9pc19yYWlzZSIsImJhY2t0cmFjZV9zbG90X2lzX2lubGluZSIsImJhY2t0cmFjZV9zbG90X2xvY2F0aW9uIiwiYmFja3RyYWNlX3Nsb3RfZGVmbmFtZSIsImJhY2t0cmFjZV9zbG90cyIsImJhY2t0cmFjZV9zbG90c19vZl9yYXdfZW50cnkiLCJlbnRyeSIsInJhd19iYWNrdHJhY2VfbGVuZ3RoIiwiZ2V0X2JhY2t0cmFjZSIsInJlZ2lzdGVyX3ByaW50ZXIiLCJmbiIsIm9sZF9wcmludGVycyIsIm5ld19wcmludGVycyIsImV4bl9zbG90IiwiZXhuX3Nsb3RfaWQiLCJleG5fc2xvdF9uYW1lIiwiZXJyb3JzIiwiZGVmYXVsdF91bmNhdWdodF9leGNlcHRpb25faGFuIiwic3RhdHVzIiwidW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIiLCJzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIiLCJlbXB0eV9iYWNrdHJhY2UiLCJoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uIiwiZGVidWdnZXJfaW5fdXNlIiwiZXhuJDAiLCJyYXdfYmFja3RyYWNlJDAiLCJjb25zdCQwIiwiZmxpcCIsIm5lZ2F0ZSIsInByb3RlY3QiLCJmaW5hbGx5JDAiLCJ3b3JrIiwiZmluYWxseV9ub19leG4iLCJ3b3JrX2V4biIsIndvcmtfYnQiLCJwcmludF9zdGF0IiwiYWxsb2NhdGVkX2J5dGVzIiwibWEiLCJwcm8iLCJtaSIsImNyZWF0ZV9hbGFybSIsImRlbGV0ZV9hbGFybSIsIm51bGxfdHJhY2tlciIsInNhbXBsaW5nX3JhdGUiLCJ0cmFja2VyIiwiY2FsbHN0YWNrX3NpemUiLCJzdHJpbmciLCJieXRlcyIsInN1YnN0cmluZyIsInN1YmJ5dGVzIiwiZmlsZW5hbWUiLCJvdXRwdXQkMCIsImRpZ2VzdCIsImlucHV0JDAiLCJjaGFyX2hleCIsInRvX2hleCIsImZyb21faGV4IiwiZGlnaXQiLCJuZXdfc3RhdGUiLCJhc3NpZ24iLCJzdDEiLCJzdDIiLCJmdWxsX2luaXQiLCJzZWVkIiwic2VlZCQwIiwibWFrZSQzIiwibWFrZV9zZWxmX2luaXQiLCJjb3B5JDUiLCJiaXRzIiwiY3VydmFsIiwibmV3dmFsIiwibmV3dmFsMzAiLCJpbnRhdXgiLCJpbnQkMCIsImJvdW5kIiwiZnVsbF9pbnQiLCJicG9zIiwiYnBvcyQwIiwiaW50MzIiLCJpbnQ2NCIsIm5hdGl2ZWludCIsImZsb2F0JDAiLCJib29sIiwiYml0czMyIiwiYml0czY0IiwibmF0aXZlYml0cyIsImJpdHMkMCIsImludCQxIiwiZnVsbF9pbnQkMCIsImludDMyJDAiLCJuYXRpdmVpbnQkMCIsImludDY0JDAiLCJmbG9hdCQxIiwic2NhbGUiLCJib29sJDAiLCJiaXRzMzIkMCIsImJpdHM2NCQwIiwibmF0aXZlYml0cyQwIiwiZnVsbF9pbml0JDAiLCJpbml0JDUiLCJzZWxmX2luaXQiLCJnZXRfc3RhdGUiLCJzZXRfc3RhdGUiLCJvbmdvaW5nX3RyYXZlcnNhbCIsImZsaXBfb25nb2luZ190cmF2ZXJzYWwiLCJwYXJhbXMiLCJyYW5kb21pemVkX2RlZmF1bHQiLCJyYW5kb21pemVkIiwicmFuZG9taXplIiwiaXNfcmFuZG9taXplZCIsInBybmciLCJwb3dlcl8yX2Fib3ZlIiwiY3JlYXRlJDMiLCJpbml0aWFsX3NpemUiLCJyYW5kb20iLCJjbGVhciQyIiwicmVzZXQkMCIsImNvcHlfYnVja2V0bGlzdCIsImtleSQwIiwibmV4dCQwIiwiY29weSQ2IiwibGVuZ3RoJDUiLCJpbnNlcnRfYWxsX2J1Y2tldHMiLCJpbmRleGZ1biIsImlucGxhY2UiLCJvZGF0YSIsIm5kYXRhIiwibnNpemUiLCJuZGF0YV90YWlsIiwiY2VsbCQwIiwibmlkeCIsIm1hdGNoIiwibWF0Y2gkMCIsInJlc2l6ZSQwIiwib3NpemUiLCJpdGVyJDEwIiwiZG9fYnVja2V0Iiwib2xkX3RyYXYiLCJmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IiwiZmlsdGVyX21hcF9pbnBsYWNlIiwiZm9sZCQ0IiwiYiQwIiwiYnVja2V0X2xlbmd0aCIsInN0YXRzIiwibWJsIiwiaGlzdG8iLCJ0b19zZXEkOSIsInRibF9kYXRhIiwiYnVjayIsImJ1Y2skMCIsImJ1Y2skMSIsInRvX3NlcV9rZXlzIiwidG9fc2VxX3ZhbHVlcyIsImtleV9pbmRleCIsImJ1Y2tldCIsImsxIiwibmV4dDEiLCJrMiIsIm5leHQyIiwiazMiLCJkMyIsIm5leHQzIiwiZmluZF9hbGwiLCJmaW5kX2luX2J1Y2tldCIsInJlcGxhY2UiLCJyZXBsYWNlX3NlcSIsImNvcHkiLCJzeiIsImhhc2hfcGFyYW0iLCJzZWVkZWRfaGFzaCIsImFkZCQwIiwiZmluZCQxIiwiZmluZF9vcHQkMSIsImZpbmRfYWxsJDAiLCJtZW0kMiIsImFkZF9zZXEkMiIsIm9mX3NlcSQ3IiwicmVidWlsZCIsIndlYWtfY3JlYXRlIiwibGVuZ3RoJDYiLCJyYWlzZV9pZl9pbnZhbGlkX29mZnNldCQwIiwic2V0JDEiLCJnZXQkMiIsImdldF9jb3B5IiwiY2hlY2skMCIsImJsaXQkNCIsImZpbGwkMiIsImFyIiwiZW1wdHlidWNrZXQiLCJnZXRfaW5kZXgiLCJzeiQwIiwic3okMSIsImNvdW50X2J1Y2tldCIsImFkZF9hdXgiLCJzZXR0ZXIiLCJpbmRleCIsImJ1Y2tldCQwIiwiaGFzaGVzIiwibmV3c3oiLCJuZXdidWNrZXQkMCIsIm5ld2hhc2hlcyIsImhidWNrZXQiLCJwcmV2X2xlbiIsImxpdmUiLCJqJDIiLCJuZXdidWNrZXQiLCJuZXd0Iiwib2IiLCJvaCIsInNldHRlciQwIiwibmkiLCJmaW5kX29yIiwiaWZub3Rmb3VuZCIsImZpbmRfc2hhZG93IiwiaWZmb3VuZCIsImxlbnMiLCJ0b3RsZW4iLCJpZCQwIiwidW5rbm93biIsInBwX2VucXVldWUiLCJ0b2tlbiIsInBwX2luZmluaXR5IiwicHBfb3V0cHV0X3N0cmluZyIsInBwX291dHB1dF9uZXdsaW5lIiwiZm9ybWF0X3BwX3RleHQiLCJ0ZXh0IiwiZm9ybWF0X3N0cmluZyIsImJyZWFrX25ld19saW5lIiwicmVhbF9pbmRlbnQiLCJicmVha19saW5lIiwiYnJlYWtfc2FtZV9saW5lIiwiZm9ybWF0X3BwX3Rva2VuIiwic2l6ZSQwIiwidGFicyIsImFkZF90YWIiLCJscyIsInRhZ19uYW1lIiwibWFya2VyIiwiYnJlYWtzIiwiZml0cyIsIm9mZiIsImJveF90eXBlJDAiLCJvZmYkMCIsImluc2VydGlvbl9wb2ludCIsInRhYnMkMCIsImZpcnN0IiwiaGVhZCIsInRhYiIsIm9mZiQxIiwiaW5zZXJ0aW9uX3BvaW50JDAiLCJ3aWR0aCQyIiwiYm94X3R5cGUkMSIsInRib3giLCJ0YWdfbmFtZSQwIiwibWFya2VyJDAiLCJhZHZhbmNlX2xlZnQiLCJwZW5kaW5nX2NvdW50IiwiZW5xdWV1ZV9hZHZhbmNlIiwiZW5xdWV1ZV9zdHJpbmdfYXMiLCJpbml0aWFsaXplX3NjYW5fc3RhY2siLCJzdGFjayIsInF1ZXVlX2VsZW0iLCJzZXRfc2l6ZSIsImxlZnRfdG90YWwiLCJzY2FuX3B1c2giLCJlbGVtIiwicHBfb3Blbl9ib3hfZ2VuIiwiYnJfdHkiLCJwcF9jbG9zZV9ib3giLCJwcF9vcGVuX3N0YWciLCJwcF9jbG9zZV9zdGFnIiwicHBfb3Blbl90YWciLCJwcF9jbG9zZV90YWciLCJwcF9zZXRfcHJpbnRfdGFncyIsInBwX3NldF9tYXJrX3RhZ3MiLCJwcF9nZXRfcHJpbnRfdGFncyIsInBwX2dldF9tYXJrX3RhZ3MiLCJwcF9zZXRfdGFncyIsInBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbiIsInBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbiIsInBjdCIsInBvdCIsIm1jdCIsIm1vdCIsInBwX3Jpbml0IiwicHBfZmx1c2hfcXVldWUiLCJwcF9wcmludF9hc19zaXplIiwicHBfcHJpbnRfYXMiLCJpc2l6ZSIsInBwX3ByaW50X3N0cmluZyIsInBwX3ByaW50X2J5dGVzIiwicHBfcHJpbnRfaW50IiwicHBfcHJpbnRfZmxvYXQiLCJwcF9wcmludF9ib29sIiwicHBfcHJpbnRfY2hhciIsInBwX29wZW5faGJveCIsInBwX29wZW5fdmJveCIsInBwX29wZW5faHZib3giLCJwcF9vcGVuX2hvdmJveCIsInBwX29wZW5fYm94IiwicHBfcHJpbnRfbmV3bGluZSIsInBwX3ByaW50X2ZsdXNoIiwicHBfZm9yY2VfbmV3bGluZSIsInBwX3ByaW50X2lmX25ld2xpbmUiLCJwcF9wcmludF9jdXN0b21fYnJlYWsiLCJwcF9wcmludF9icmVhayIsInBwX3ByaW50X3NwYWNlIiwicHBfcHJpbnRfY3V0IiwicHBfb3Blbl90Ym94IiwicHBfY2xvc2VfdGJveCIsInBwX3ByaW50X3RicmVhayIsInBwX3ByaW50X3RhYiIsInBwX3NldF90YWIiLCJwcF9zZXRfbWF4X2JveGVzIiwicHBfZ2V0X21heF9ib3hlcyIsInBwX292ZXJfbWF4X2JveGVzIiwicHBfc2V0X2VsbGlwc2lzX3RleHQiLCJwcF9nZXRfZWxsaXBzaXNfdGV4dCIsInBwX2xpbWl0IiwicHBfc2V0X21heF9pbmRlbnQiLCJwcF9nZXRfbWF4X2luZGVudCIsInBwX3NldF9tYXJnaW4iLCJuZXdfbWF4X2luZGVudCIsInZhbGlkYXRlX2dlb21ldHJ5IiwibWFyZ2luIiwibWF4X2luZGVudCIsImNoZWNrX2dlb21ldHJ5IiwiZ2VvbWV0cnkiLCJwcF9nZXRfbWFyZ2luIiwicHBfc2V0X2Z1bGxfZ2VvbWV0cnkiLCJwcF9zZXRfZ2VvbWV0cnkiLCJwcF9zYWZlX3NldF9nZW9tZXRyeSIsInBwX2dldF9nZW9tZXRyeSIsInBwX3VwZGF0ZV9nZW9tZXRyeSIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsInBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsImRpc3BsYXlfbmV3bGluZSIsImJsYW5rX2xpbmUiLCJkaXNwbGF5X2luZGVudCIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwiLCJkZWZhdWx0X3BwX21hcmtfb3Blbl90YWciLCJkZWZhdWx0X3BwX21hcmtfY2xvc2VfdGFnIiwiZGVmYXVsdF9wcF9wcmludF9vcGVuX3RhZyIsImRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnIiwicHBfbWFrZV9mb3JtYXR0ZXIiLCJwcF9xdWV1ZSIsInN5c190b2siLCJzY2FuX3N0YWNrIiwiZm9ybWF0dGVyX29mX291dF9mdW5jdGlvbnMiLCJvdXRfZnVucyIsIm1ha2VfZm9ybWF0dGVyIiwicHBmIiwiZm9ybWF0dGVyX29mX291dF9jaGFubmVsIiwiZm9ybWF0dGVyX29mX2J1ZmZlciIsInBwX2J1ZmZlcl9zaXplIiwicHBfbWFrZV9idWZmZXIiLCJzdGRidWYiLCJzdGRfZm9ybWF0dGVyIiwiZXJyX2Zvcm1hdHRlciIsInN0cl9mb3JtYXR0ZXIiLCJmbHVzaF9idWZmZXJfZm9ybWF0dGVyIiwiZmx1c2hfc3RyX2Zvcm1hdHRlciIsIm1ha2Vfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsImNsZWFyX3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJzb2IiLCJnZXRfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsImZsdXNoX3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJpdGVtcyIsImFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSIsIml0ZW0iLCJmb3JtYXR0ZXJfb2Zfc3ltYm9saWNfb3V0cHV0X2IiLCJvcGVuX2hib3giLCJvcGVuX3Zib3giLCJvcGVuX2h2Ym94Iiwib3Blbl9ob3Zib3giLCJvcGVuX2JveCIsImNsb3NlX2JveCIsIm9wZW5fdGFnIiwiY2xvc2VfdGFnIiwib3Blbl9zdGFnIiwiY2xvc2Vfc3RhZyIsInByaW50X2FzIiwicHJpbnRfc3RyaW5nJDAiLCJwcmludF9ieXRlcyQwIiwicHJpbnRfaW50JDAiLCJwcmludF9mbG9hdCQwIiwicHJpbnRfY2hhciQwIiwicHJpbnRfYm9vbCIsInByaW50X2JyZWFrIiwicHJpbnRfY3V0IiwicHJpbnRfc3BhY2UiLCJmb3JjZV9uZXdsaW5lIiwicHJpbnRfZmx1c2giLCJwcmludF9uZXdsaW5lJDAiLCJwcmludF9pZl9uZXdsaW5lIiwib3Blbl90Ym94IiwiY2xvc2VfdGJveCIsInByaW50X3RicmVhayIsInNldF90YWIiLCJwcmludF90YWIiLCJzZXRfbWFyZ2luIiwiZ2V0X21hcmdpbiIsInNldF9tYXhfaW5kZW50IiwiZ2V0X21heF9pbmRlbnQiLCJzZXRfZ2VvbWV0cnkiLCJzYWZlX3NldF9nZW9tZXRyeSIsImdldF9nZW9tZXRyeSIsInVwZGF0ZV9nZW9tZXRyeSIsInNldF9tYXhfYm94ZXMiLCJnZXRfbWF4X2JveGVzIiwib3Zlcl9tYXhfYm94ZXMiLCJzZXRfZWxsaXBzaXNfdGV4dCIsImdldF9lbGxpcHNpc190ZXh0Iiwic2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCIsInNldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMiLCJnZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIiwic2V0X3ByaW50X3RhZ3MiLCJnZXRfcHJpbnRfdGFncyIsInNldF9tYXJrX3RhZ3MiLCJnZXRfbWFya190YWdzIiwic2V0X3RhZ3MiLCJwcF9wcmludF9saXN0IiwicHBfdiIsIm9wdCQwIiwicHBfc2VwIiwidnMiLCJvcHQkMSIsInBwX3ByaW50X3NlcSIsInNlcSQxIiwic2VxJDIiLCJwcF9wcmludF90ZXh0IiwicHBfcHJpbnRfb3B0aW9uIiwicHBfcHJpbnRfcmVzdWx0IiwicHBfcHJpbnRfZWl0aGVyIiwiY29tcHV0ZV90YWciLCJ0YWdfYWNjIiwib3V0cHV0X2Zvcm1hdHRpbmdfbGl0Iiwib3V0cHV0X2FjYyQwIiwiYnR5IiwicCQ1IiwicCQ2Iiwic3RycHV0X2FjYyQwIiwic2l6ZSQxIiwia2ZwcmludGYkMCIsImlrZnByaW50ZiQwIiwiaWZwcmludGYkMCIsImZwcmludGYkMCIsInByaW50ZiQwIiwiZXByaW50ZiQwIiwia2RwcmludGYiLCJkcHJpbnRmIiwia3ByaW50ZiIsInNwcmludGYkMCIsImthc3ByaW50ZiIsImFzcHJpbnRmIiwiZmx1c2hfc3RhbmRhcmRfZm9ybWF0dGVycyIsInBwX3NldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdSIsInBwX2dldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdSIsInNldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdCIsImdldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdCIsImJwcmludGYkMCIsInBwX3NldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsInN0cmluZ2lmeSIsInBwX2dldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsImZ1bnMiLCJtYXJrX29wZW5fdGFnIiwibWFya19jbG9zZV90YWciLCJwcmludF9vcGVuX3RhZyIsInByaW50X2Nsb3NlX3RhZyIsInNldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsIm51bGxfY2hhciIsIm5leHRfY2hhciIsImliIiwicGVla19jaGFyIiwiY2hlY2tlZF9wZWVrX2NoYXIiLCJlbmRfb2ZfaW5wdXQiLCJiZWdpbm5pbmdfb2ZfaW5wdXQiLCJuYW1lX29mX2lucHV0IiwiY2hhcl9jb3VudCIsInJlc2V0X3Rva2VuIiwiaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIiLCJ0b2tlbl9zdHJpbmciLCJ0b2tlbl9idWZmZXIiLCJza2lwX2NoYXIiLCJpZ25vcmVfY2hhciIsInN0b3JlX2NoYXIiLCJkZWZhdWx0X3Rva2VuX2J1ZmZlcl9zaXplIiwiY3JlYXRlJDQiLCJpbmFtZSIsImZyb21fc3RyaW5nJDEiLCJmcm9tX2Z1bmN0aW9uJDAiLCJzY2FuX2Nsb3NlX2F0X2VuZCIsInNjYW5fcmFpc2VfYXRfZW5kIiwiZnJvbV9pYyIsInNjYW5fY2xvc2VfaWMiLCJlb2YiLCJzdGRpYiIsIm9wZW5faW5fZmlsZSIsIm9wZW5faW4iLCJmcm9tX2ZpbGUiLCJmcm9tX2ZpbGVfYmluIiwiZnJvbV9jaGFubmVsJDAiLCJjbG9zZV9pbiIsImljJDAiLCJtZW1vIiwibWVtb19mcm9tX2ljIiwibWVtb19mcm9tX2NoYW5uZWwiLCJiYWRfaW5wdXQiLCJiYWRfaW5wdXRfZXNjYXBlIiwiYmFkX3Rva2VuX2xlbmd0aCIsIm1lc3NhZ2UiLCJiYWRfZmxvYXQiLCJiYWRfaGV4X2Zsb2F0IiwiY2hhcmFjdGVyX21pc21hdGNoIiwiY2kiLCJjaGVja190aGlzX2NoYXIiLCJjaGVja19jaGFyIiwidG9rZW5fY2hhciIsInRva2VuX2Jvb2wiLCJpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciIsInRva2VuX2ludF9saXRlcmFsIiwidG9rZW5fZmxvYXQiLCJzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciIsInNjYW5fdW5zaWduZWRfZGVjaW1hbF9pbnQiLCJzY2FuX2RpZ2l0X3BsdXMiLCJiYXNpcyIsImRpZ2l0cCIsIndpZHRoJDMiLCJpc19iaW5hcnlfZGlnaXQiLCJzY2FuX2JpbmFyeV9pbnQiLCJpc19vY3RhbF9kaWdpdCIsInNjYW5fb2N0YWxfaW50IiwiaXNfaGV4YV9kaWdpdCIsInNjYW5faGV4YWRlY2ltYWxfaW50Iiwic2Nhbl9zaWduIiwic2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsIiwic2Nhbl9pbnRfY29udmVyc2lvbiIsInNjYW5fZnJhY3Rpb25hbF9wYXJ0Iiwic2Nhbl9leHBvbmVudF9wYXJ0Iiwic2Nhbl9mbG9hdCIsInByZWNpc2lvbiIsInByZWNpc2lvbiQwIiwiY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmciLCJzY2FuX2hleF9mbG9hdCIsIndpZHRoJDQiLCJ3aWR0aCQ1Iiwid2lkdGgkNiIsIndpZHRoJDEwIiwid2lkdGgkNyIsIndpZHRoJDgiLCJ3aWR0aCQ5Iiwic2Nhbl9jYW1sX2Zsb2F0X3Jlc3QiLCJ3aWR0aF9wcmVjaXNpb24iLCJmcmFjX3dpZHRoIiwic2Nhbl9jYW1sX2Zsb2F0Iiwic2Nhbl9zdHJpbmciLCJzdHAiLCJzY2FuX2NoYXIiLCJoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmciLCJzY2FuX2JhY2tzbGFzaF9jaGFyIiwiYzAiLCJnZXRfZGlnaXQiLCJnZXRfZGlnaXQkMCIsImMxJDAiLCJjMiQwIiwic2Nhbl9jYW1sX2NoYXIiLCJmaW5kX3N0b3AiLCJzY2FuX2NhbWxfc3RyaW5nIiwiZmluZF9zdG9wJDAiLCJza2lwX3NwYWNlcyIsInNjYW5fY2hhcnNfaW5fY2hhcl9zZXQiLCJzY2FuX2luZGljIiwic2Nhbl9jaGFycyIsInNjYW5mX2JhZF9pbnB1dCIsImdldF9jb3VudGVyIiwid2lkdGhfb2ZfcGFkX29wdCIsInN0b3BwZXJfb2ZfZm9ybWF0dGluZ19saXQiLCJmbXRpbmciLCJ0YWtlX2Zvcm1hdF9yZWFkZXJzJDAiLCJ0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzJDAiLCJyZWFkZXIiLCJuZXdfayIsInJlYWRlcnNfcmVzdCIsInRha2VfZm9ybWF0X3JlYWRlcnMiLCJmbXQkMjMiLCJmbXQkMjQiLCJmbXQkMjUiLCJ0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIiwibWFrZV9zY2FuZiIsInJlYWRlcnMiLCJzY2FuJDAiLCJzdHJfcmVzdCIsInBhZF9wcmVjX3NjYW5mIiwic2NhbiQxIiwic2NhbiQyIiwic2NhbiQzIiwic2NhbiQ0IiwiY29udiQwIiwic2NhbiQ1IiwiY29udiQxIiwic2NhbiQ2IiwiY29udiQyIiwic2NhbiQ3Iiwic2NhbiQ4IiwiZm10aW5nX2xpdCQwIiwic3RwJDAiLCJzJDIiLCJzdHJfcmVzdCQwIiwicmVzdCQyNiIsImFyZ19yZXN0Iiwia3NjYW5mIiwiZWYiLCJhcHBseSIsImFyZ3MkMCIsImV4YyIsImJzY2FuZiIsImtzc2NhbmYiLCJzc2NhbmYiLCJzY2FuZiIsImJzY2FuZl9mb3JtYXQiLCJmb3JtYXQiLCJzc2NhbmZfZm9ybWF0IiwiZm9ybWF0X2Zyb21fc3RyaW5nIiwidW5lc2NhcGVkIiwia2ZzY2FuZiIsImZzY2FuZiIsInJlZ2lzdGVyIiwicmVnaXN0ZXJfZXhjZXB0aW9uIiwibyQwIiwicGFyYW1zJDAiLCJpbml0aWFsX29iamVjdF9zaXplIiwiZHVtbXlfaXRlbSIsInRhZyIsImNvbXBhcmUkMTQiLCJjb21wYXJlJDE1IiwiY29tcGFyZSQxNiIsImR1bW15X3RhYmxlIiwidGFibGVfY291bnQiLCJkdW1teV9tZXQiLCJmaXRfc2l6ZSIsIm5ld190YWJsZSIsInB1Yl9sYWJlbHMiLCJtZXRob2RzIiwicmVzaXplJDEiLCJhcnJheSIsIm5ld19zaXplIiwib2xkX3NpemUiLCJuZXdfYnVjayIsIm1ldGhvZF9jb3VudCIsImluc3RfdmFyX2NvdW50IiwibmV3X21ldGhvZCIsInRhYmxlIiwiZ2V0X21ldGhvZF9sYWJlbCIsImxhYmVsIiwiZ2V0X21ldGhvZF9sYWJlbHMiLCJuYW1lcyIsInNldF9tZXRob2QiLCJlbGVtZW50IiwiZ2V0X21ldGhvZCIsInRvX2xpc3QkMyIsImFyciIsIm5hcnJvdyIsInZhcnMiLCJ2aXJ0X21ldGhzIiwiY29uY3JfbWV0aHMiLCJ2YXJzJDAiLCJ2aXJ0X21ldGhzJDAiLCJjb25jcl9tZXRocyQwIiwidmlydF9tZXRoX2xhYnMiLCJjb25jcl9tZXRoX2xhYnMiLCJsYWIiLCJ0dmFycyIsImJ5X25hbWUiLCJieV9sYWJlbCIsIm1ldCIsImhtIiwid2lkZW4iLCJzYXZlZF92YXJzIiwic2F2ZWRfaGlkZGVuX21ldGhzIiwibmV3X3Nsb3QiLCJuZXdfdmFyaWFibGUiLCJ0b19hcnJheSIsIm5ld19tZXRob2RzX3ZhcmlhYmxlcyIsIm1ldGhzIiwidmFscyIsIm1ldGhzJDAiLCJubWV0aHMiLCJudmFscyIsImdldF92YXJpYWJsZSIsImdldF92YXJpYWJsZXMiLCJhZGRfaW5pdGlhbGl6ZXIiLCJjcmVhdGVfdGFibGUiLCJwdWJsaWNfbWV0aG9kcyIsInRhZ3MiLCJpbml0X2NsYXNzIiwiaW5oZXJpdHMiLCJjbGEiLCJzdXBlciQwIiwibm0iLCJtYWtlX2NsYXNzIiwicHViX21ldGhzIiwiY2xhc3NfaW5pdCIsImVudl9pbml0IiwibWFrZV9jbGFzc19zdG9yZSIsImluaXRfdGFibGUiLCJkdW1teV9jbGFzcyIsImxvYyIsInVuZGVmIiwiY3JlYXRlX29iamVjdCIsImNyZWF0ZV9vYmplY3Rfb3B0Iiwib2JqXzAiLCJpdGVyX2YiLCJydW5faW5pdGlhbGl6ZXJzIiwiaW5pdHMiLCJydW5faW5pdGlhbGl6ZXJzX29wdCIsImNyZWF0ZV9vYmplY3RfYW5kX3J1bl9pbml0aWFsaSIsImdldF9kYXRhJDAiLCJidWlsZF9wYXRoIiwia2V5cyIsImxvb2t1cF90YWJsZXMiLCJyb290IiwidGFibGVzJDIiLCJ0YWJsZXMkMCIsInRhYmxlcyQxIiwibmV3X2NhY2hlIiwic2V0X21ldGhvZHMiLCJjbG8iLCJjbG8kMCIsIm4kMiIsIm4kMyIsIm4kNCIsIm4kNSIsIm4kNiIsIngkMyIsIm4kNyIsIngkNCIsIm4kOCIsIm4kOSIsIngkNSIsImYkOCIsImUkMiIsIm4kMTAiLCJ4JDYiLCJmJDkiLCJuJDExIiwieCQ3IiwibiQxMiIsIngkOCIsIm4kMTMiLCJuJDE0IiwiZSQzIiwibiQxNSIsIm0kMiIsIngkOSIsIm0kMyIsIm4kMTYiLCJtJDQiLCJlJDQiLCJuJDE3IiwibSQ1IiwibiQxOCIsInN0YXRzJDAiLCJpbml0X21vZF9ibG9jayIsImNvbXBzJDAiLCJtb2R1Iiwic2hhcGUiLCJmbiQwIiwiY29tcHMiLCJpbml0X21vZCIsInVwZGF0ZV9tb2RfYmxvY2siLCJjbCIsInVwZGF0ZV9tb2QiLCJpbml0aWFsX2J1ZmZlciIsImJ1ZmZlciIsImJ1ZnBvcyIsInJlc2V0X2J1ZmZlciIsInN0b3JlIiwibmV3YnVmZmVyIiwiZ2V0X3N0cmluZyIsIm1ha2VfbGV4ZXIiLCJrZXl3b3JkcyIsImt3ZF90YWJsZSIsImlkZW50X29yX2tleXdvcmQiLCJrZXl3b3JkX29yX2Vycm9yIiwiY29tbWVudCIsImVzY2FwZSIsImVuZF9leHBvbmVudF9wYXJ0IiwiZXhwb25lbnRfcGFydCIsIm51bWJlciIsImlkZW50MiIsIm5lZ19udW1iZXIiLCJuZXh0X3Rva2VuJDAiLCJtYXliZV9jb21tZW50IiwibmV4dF90b2tlbiIsImhrZXkiLCJjbGVhbiIsImluc2VydF9idWNrZXQiLCJjb250YWluZXIiLCJyZW1vdmVfYnVja2V0IiwiaGsiLCJyZXBsYWNlX2J1Y2tldCIsIm5ld19kIiwiYnVja2V0X2xlbmd0aF9hbGl2ZSIsInN0YXRzX2FsaXZlIiwiY3JlYXRlJDUiLCJnZXRfa2V5JDAiLCJnZXRfa2V5X2NvcHkkMCIsInNldF9rZXkkMCIsInVuc2V0X2tleSQwIiwiY2hlY2tfa2V5JDAiLCJibGl0X2tleSQwIiwiZ2V0X2RhdGEkMSIsImdldF9kYXRhX2NvcHkiLCJzZXRfZGF0YSIsInVuc2V0X2RhdGEiLCJjaGVja19kYXRhIiwiYmxpdF9kYXRhIiwibWFrZSQ0IiwiZXBoIiwicXVlcnkiLCJzZXRfa2V5X2RhdGEiLCJtYWtlJDUiLCJhZGQkMSIsInRlc3Rfa2V5IiwicmVtb3ZlJDAiLCJmaW5kJDIiLCJsZW5ndGgkNyIsImNsZWFyJDMiLCJjcmVhdGUkNiIsImdldF9rZXkxIiwiZ2V0X2tleTFfY29weSIsInNldF9rZXkxIiwidW5zZXRfa2V5MSIsImNoZWNrX2tleTEiLCJnZXRfa2V5MiIsImdldF9rZXkyX2NvcHkiLCJzZXRfa2V5MiIsInVuc2V0X2tleTIiLCJjaGVja19rZXkyIiwiYmxpdF9rZXkxIiwiYmxpdF9rZXkyIiwiYmxpdF9rZXkxMiIsImdldF9kYXRhJDIiLCJnZXRfZGF0YV9jb3B5JDAiLCJzZXRfZGF0YSQwIiwidW5zZXRfZGF0YSQwIiwiY2hlY2tfZGF0YSQwIiwiYmxpdF9kYXRhJDAiLCJtYWtlJDYiLCJrZXkxIiwia2V5MiIsInF1ZXJ5JDAiLCJrMiQwIiwiazEkMCIsIm1ha2UkNyIsImFkZCQyIiwidGVzdF9rZXlzIiwicmVtb3ZlJDEiLCJmaW5kJDMiLCJsZW5ndGgkOCIsImNsZWFyJDQiLCJjcmVhdGUkNyIsImxlbmd0aCQ5IiwiZ2V0X2tleSQxIiwiZ2V0X2tleV9jb3B5JDEiLCJzZXRfa2V5JDEiLCJ1bnNldF9rZXkkMSIsImNoZWNrX2tleSQxIiwiYmxpdF9rZXkkMSIsImdldF9kYXRhJDMiLCJnZXRfZGF0YV9jb3B5JDEiLCJzZXRfZGF0YSQxIiwidW5zZXRfZGF0YSQxIiwiY2hlY2tfZGF0YSQxIiwiYmxpdF9kYXRhJDEiLCJtYWtlJDgiLCJxdWVyeSQxIiwia2kiLCJrMCIsIm1ha2UkOSIsImFkZCQzIiwidGVzdF9rZXlzJDAiLCJyZW1vdmUkMiIsImZpbmQkNCIsImxlbmd0aCQxMCIsImNsZWFyJDUiLCJnZW5lcmljX2Jhc2VuYW1lIiwiaXNfZGlyX3NlcCIsImdlbmVyaWNfZGlybmFtZSIsImlzX3JlbGF0aXZlIiwiaXNfaW1wbGljaXQiLCJjaGVja19zdWZmaXgiLCJzdWZmIiwiY2hvcF9zdWZmaXhfb3B0IiwibGVuX2YiLCJxdW90ZSIsInF1b3RlX2NvbW1hbmQiLCJiYXNlbmFtZSIsImRpcm5hbWUiLCJpc19kaXJfc2VwJDAiLCJpc19yZWxhdGl2ZSQwIiwiaXNfaW1wbGljaXQkMCIsImNoZWNrX3N1ZmZpeCQwIiwiY2hvcF9zdWZmaXhfb3B0JDAiLCJ0ZW1wX2Rpcl9uYW1lIiwicXVvdGUkMCIsImFkZF9icyIsImxvb3AkMCIsImxvb3BfYnMiLCJxdW90ZV9jbWRfZmlsZW5hbWUiLCJxdW90ZV9jb21tYW5kJDAiLCJkcml2ZV9hbmRfcGF0aCIsImRpcm5hbWUkMCIsInBhdGgiLCJkcml2ZSIsImRpciIsImJhc2VuYW1lJDAiLCJiYXNlbmFtZSQxIiwiZGlybmFtZSQxIiwibnVsbCQzIiwiY3VycmVudF9kaXJfbmFtZSQyIiwicGFyZW50X2Rpcl9uYW1lJDIiLCJkaXJfc2VwJDIiLCJpc19kaXJfc2VwJDEiLCJpc19yZWxhdGl2ZSQxIiwiaXNfaW1wbGljaXQkMSIsImNoZWNrX3N1ZmZpeCQxIiwiY2hvcF9zdWZmaXhfb3B0JDEiLCJ0ZW1wX2Rpcl9uYW1lJDAiLCJxdW90ZSQxIiwicXVvdGVfY29tbWFuZCQxIiwiYmFzZW5hbWUkMiIsImRpcm5hbWUkMiIsImNvbmNhdCQ0IiwiY2hvcF9zdWZmaXgiLCJleHRlbnNpb25fbGVuIiwiZXh0ZW5zaW9uIiwiY2hvcF9leHRlbnNpb24iLCJyZW1vdmVfZXh0ZW5zaW9uIiwicHJuZyQwIiwidGVtcF9maWxlX25hbWUiLCJ0ZW1wX2RpciIsInJuZCIsImN1cnJlbnRfdGVtcF9kaXJfbmFtZSIsInNldF90ZW1wX2Rpcl9uYW1lIiwiZ2V0X3RlbXBfZGlyX25hbWUiLCJ0ZW1wX2ZpbGUiLCJ0cnlfbmFtZSIsImNvdW50ZXIkMSIsIm9wZW5fdGVtcF9maWxlIiwic3RoJDAiLCJwZXJtcyIsInN0aCQxIiwiYWRkJDQiLCJzdWIkNCIsIm5lZyIsImNvbmoiLCJtdWwiLCJkaXYiLCJpbnYiLCJub3JtMiIsIm5vcm0iLCJxJDAiLCJwb2xhciIsInNxcnQiLCJ3JDAiLCJleHAiLCJsb2ciLCJwb3ciLCJmbG9hdDMyIiwiZmxvYXQ2NCIsImludDhfc2lnbmVkIiwiaW50OF91bnNpZ25lZCIsImludDE2X3NpZ25lZCIsImludDE2X3Vuc2lnbmVkIiwiaW50MzIkMSIsImludDY0JDEiLCJpbnQkMiIsIm5hdGl2ZWludCQxIiwiY29tcGxleDMyIiwiY29tcGxleDY0Iiwia2luZF9zaXplX2luX2J5dGVzIiwiY19sYXlvdXQiLCJmb3J0cmFuX2xheW91dCIsImNsb29wIiwiaWR4IiwiY29sIiwiZmxvb3AiLCJpbml0JDYiLCJsYXlvdXQiLCJkaW1zIiwiZGxlbiIsInNpemVfaW5fYnl0ZXMiLCJjcmVhdGUkOCIsImdldCQzIiwic2V0JDIiLCJzaXplX2luX2J5dGVzJDAiLCJvZl92YWx1ZSIsImNyZWF0ZSQ5IiwiZGltIiwic2l6ZV9pbl9ieXRlcyQxIiwic2xpY2UiLCJpbml0JDciLCJvZl9hcnJheSIsImJhIiwiY3JlYXRlJDEwIiwiZGltMSIsImRpbTIiLCJzaXplX2luX2J5dGVzJDIiLCJzbGljZV9sZWZ0Iiwic2xpY2VfcmlnaHQiLCJpbml0JDgiLCJvZl9hcnJheSQwIiwicm93IiwiY3JlYXRlJDExIiwiZGltMyIsInNpemVfaW5fYnl0ZXMkMyIsInNsaWNlX2xlZnRfMSIsInNsaWNlX3JpZ2h0XzEiLCJzbGljZV9sZWZ0XzIiLCJzbGljZV9yaWdodF8yIiwiaW5pdCQ5Iiwib2ZfYXJyYXkkMSIsImFycmF5MF9vZl9nZW5hcnJheSIsImFycmF5MV9vZl9nZW5hcnJheSIsImFycmF5Ml9vZl9nZW5hcnJheSIsImFycmF5M19vZl9nZW5hcnJheSIsInJlc2hhcGVfMCIsInJlc2hhcGVfMSIsInJlc2hhcGVfMiIsInJlc2hhcGVfMyIsIndpdGhfb3BlbiIsIm9wZW5mdW4iLCJ3aXRoX29wZW5fYmluIiwid2l0aF9vcGVuX3RleHQiLCJ3aXRoX29wZW5fZ2VuIiwic2VlayIsImxlbmd0aCQxMSIsImlucHV0X2NoYXIkMCIsImlucHV0X2J5dGUkMCIsImlucHV0X2xpbmUkMCIsInJlYWxseV9pbnB1dCQwIiwicmVhbGx5X2lucHV0X3N0cmluZyQwIiwicmVhZF91cHRvIiwiZW5zdXJlIiwibmV3X2xlbiQwIiwibmV3X2xlbiQxIiwiaW5wdXRfYWxsIiwiY2h1bmtfc2l6ZSIsImluaXRpYWxfc2l6ZSQwIiwiaW5pdGlhbF9zaXplJDEiLCJucmVhZCIsImJ1ZiQwIiwiYnVmJDEiLCJyZW0iLCJ3aXRoX29wZW4kMCIsIndpdGhfb3Blbl9iaW4kMCIsIndpdGhfb3Blbl90ZXh0JDAiLCJ3aXRoX29wZW5fZ2VuJDAiLCJzZWVrJDAiLCJwb3MkMCIsImxlbmd0aCQxMiIsInlvanNvbl9vZl9pb19pbnB1dCIsInlvanNvbl9vZl9pb19sb2ciLCJ2X2lvX291dHB1dCIsInZfaW9faW5wdXQiLCJhcmciLCJibmRzIiwiYXJnJDAiLCJibmRzJDAiLCJ5b2pzb25fb2Zfc291cmNlX3Bvc2l0aW9uIiwidl9sYXdfaGVhZGluZ3MiLCJ2X2VuZF9jb2x1bW4iLCJ2X2VuZF9saW5lIiwidl9zdGFydF9jb2x1bW4iLCJ2X3N0YXJ0X2xpbmUiLCJ2X2ZpbGVuYW1lIiwiYXJnJDEiLCJibmRzJDEiLCJhcmckMiIsImJuZHMkMiIsImFyZyQzIiwiYm5kcyQzIiwiYXJnJDQiLCJibmRzJDQiLCJtb25leV9vZl9jZW50c19zdHJpbmciLCJjZW50cyIsIm1vbmV5X29mX3VuaXRzX2ludCIsInVuaXRzIiwibW9uZXlfb2ZfY2VudHNfaW50ZWdlciIsIm1vbmV5X3RvX2Zsb2F0IiwibSIsIm1vbmV5X29mX2RlY2ltYWwiLCJkIiwibW9uZXlfdG9fc3RyaW5nIiwibW9uZXlfdG9fY2VudHMiLCJtb25leV9yb3VuZCIsImRlY2ltYWxfb2Zfc3RyaW5nIiwiZGVjaW1hbF90b19mbG9hdCIsImRlY2ltYWxfb2ZfZmxvYXQiLCJkZWNpbWFsX29mX2ludGVnZXIiLCJkZWNpbWFsX3RvX3N0cmluZyIsIm1heF9wcmVjX2RpZ2l0cyIsImkiLCJzaWduIiwibiIsImludF9wYXJ0IiwibiQwIiwiZGlnaXRzIiwibGVhZGluZ196ZXJvZXMiLCJkaWdpdCIsIm51bV9sZWFkaW5nX3plcm9lcyIsImkkMCIsImZtdCIsImRlY2ltYWxfcm91bmQiLCJxIiwiZGVjaW1hbF9vZl9tb25leSIsImludGVnZXJfb2Zfc3RyaW5nIiwicyIsImludGVnZXJfdG9fc3RyaW5nIiwiaW50ZWdlcl90b19pbnQiLCJpbnRlZ2VyX29mX2ludCIsImludGVnZXJfZXhwb25lbnRpYXRpb24iLCJlIiwiaW50ZWdlcl9sb2cyIiwieWVhcl9vZl9kYXRlIiwieSIsIm1vbnRoX251bWJlcl9vZl9kYXRlIiwiaXNfbGVhcF95ZWFyIiwieSQwIiwiZGF5X29mX21vbnRoX29mX2RhdGUiLCJkJDAiLCJkYXRlX29mX251bWJlcnMiLCJ5ZWFyIiwibW9udGgiLCJkYXkiLCJkYXRlX3RvX3N0cmluZyIsImZpcnN0X2RheV9vZl9tb250aCIsImxhc3RfZGF5X29mX21vbnRoIiwiZHVyYXRpb25fb2ZfbnVtYmVycyIsImR1cmF0aW9uX3RvX3N0cmluZyIsImR1cmF0aW9uX3RvX3llYXJzX21vbnRoc19kYXlzIiwieW9qc29uX29mX3J1bnRpbWVfdmFsdWUiLCJ2MCQ0IiwidjAkNSIsInYwJDYiLCJ2MCIsInYwJDciLCJ2MCQwIiwidjAkOCIsInYwJDEiLCJ2MCQ5IiwidjAkMiIsInYwJDEwIiwidjAkMyIsInYxIiwidjAkMTEiLCJ2MCQxMiIsInYxJDAiLCJ2MCQxMyIsInYwJDE0IiwidjEkMSIsInYxJDIiLCJ2MSQzIiwidjAkMTUiLCJ2MCQxNiIsInYxJDQiLCJ2MCQxNyIsInYwJDE4IiwidW5lbWJlZGRhYmxlIiwiZW1iZWRfdW5pdCIsImVtYmVkX2Jvb2wiLCJ4IiwiZW1iZWRfbW9uZXkiLCJlbWJlZF9pbnRlZ2VyIiwiZW1iZWRfZGVjaW1hbCIsImVtYmVkX2RhdGUiLCJlbWJlZF9kdXJhdGlvbiIsImVtYmVkX2FycmF5IiwiZiIsInlvanNvbl9vZl9pbmZvcm1hdGlvbiIsInYiLCJ5b2pzb25fb2ZfdmFyX2RlZiIsInZfZnVuX2NhbGxzIiwidl92YWx1ZSIsInZfaW8iLCJ2X25hbWUiLCJ2X3BvcyIsInlvanNvbl9vZl9mdW5fY2FsbCIsInZfb3V0cHV0Iiwidl9ib2R5Iiwidl9mdW5faW5wdXRzIiwidl9mdW5fbmFtZSIsInlvanNvbl9vZl9ldmVudCIsInZfaW5wdXRzIiwibG9nX3JlZiIsInJlc2V0X2xvZyIsInJldHJpZXZlX2xvZyIsImxvZ19iZWdpbl9jYWxsIiwiaW5mbyIsImxvZ19lbmRfY2FsbCIsImxvZ192YXJpYWJsZV9kZWZpbml0aW9uIiwiaW8iLCJlbWJlZCIsImxvZ19kZWNpc2lvbl90YWtlbiIsInBvcyIsInBwX2V2ZW50cyIsIm9wdCIsInBwZiIsImV2ZW50cyIsInN0aCIsImlzX2ZpcnN0X2NhbGwiLCJmb3JtYXRfdmFyX2RlZiIsInZhciQwIiwiZm9ybWF0X3Bvc19vcHQiLCJmb3JtYXRfdmFsdWUiLCJmb3JtYXRfdmFyX2RlZnMiLCJmb3JtYXRfdmFyX2RlZl93aXRoX2Z1bl9jYWxscyIsInZhcl93aXRoX2Z1biIsImZ1bl9jYWxsIiwiZm9ybWF0X2V2ZW50IiwieCQwIiwieCQxIiwieCQyIiwieCQzIiwieCQ0IiwibmFtZSIsImF0dHJzIiwibmFtZSQwIiwidmFsdWUiLCJlbHRzIiwidmFyX2RlZl93aXRoX2Z1biIsIm91dHB1dCIsImJvZHkiLCJmdW5faW5wdXRzIiwiZnVuX25hbWUiLCJib2R5JDAiLCJpbnB1dHMiLCJlbXB0eSIsImVtcHR5X2N0eCIsInJhd19ldmVudF90b19zdHJpbmciLCJuYW1lJDEiLCJ0YWtlX3doaWxlIiwicCIsImwiLCJ0IiwiaCIsInJlc3QiLCJ0JDAiLCJwYXJzZV9yYXdfZXZlbnRzIiwicmF3X2V2ZW50cyIsIm5iX3Jhd19ldmVudHMiLCJpc19mdW5jdGlvbl9jYWxsIiwiaW5mb3MiLCJpc192YXJfZGVmIiwicGFyc2VfZnVuX2NhbGwiLCJib2R5X2N0eCIsInBhcnNlX2V2ZW50cyIsImJvZHlfcmV2IiwicmVzdCQwIiwidmFyX2RlZiIsIm91dHB1dCQwIiwiY3R4IiwiY3R4JDAiLCJ2YXJfbmFtZSIsImxzJDAiLCJjdHgkMSIsInJlc3QkMSIsImN0eCQyIiwiaW5mb3MkMCIsInJlc3QkMiIsImN0eCQzIiwicmVzdCQzIiwidmFyX2RvdF9zdWJzY29wZV92YXJfbmFtZSIsImxzIiwiY3R4JDQiLCJpbmZvcyQxIiwicmF3X2V2ZW50cyQwIiwiZnVuX2NhbGxzIiwicmVzdCQ0IiwiaW5mb3MkMiIsImZ1bl9jYWxsJDAiLCJmdW5fY2FsbHMkMCIsImZ1bl9jYWxscyQxIiwicmVzdCQ2IiwidmFsdWUkMCIsImlvJDAiLCJuYW1lJDIiLCJ2YXJfY29tcCIsInJlc3QkNSIsImN0eCQ2IiwiY3R4JDUiLCJtc2ciLCJoYW5kbGVfZGVmYXVsdCIsImV4Y2VwdGlvbnMiLCJqdXN0IiwiY29ucyIsImFjYyIsImV4Y2VwdCIsIm5ld192YWwiLCJoYW5kbGVfZGVmYXVsdF9vcHQiLCJiIiwibm9faW5wdXQiLCJjb21wYXJlX3BlcmlvZHMiLCJwMSIsInAyIiwicDFfZGF5cyIsInAyX2RheXMiLCJlcXVhbF9wZXJpb2RzIiwib19ub3QiLCJvX2xlbmd0aCIsImEiLCJvX21pbnVzX2ludCIsImkxIiwib19taW51c19yYXQiLCJvX21pbnVzX21vbiIsIm0xIiwib19taW51c19kdXIiLCJvX2FuZCIsIm9fb3IiLCJvX3hvciIsIm9fZXEiLCJvX21hcCIsIm9fcmVkdWNlIiwiZGZ0IiwibGVuIiwiciIsIm9fY29uY2F0Iiwib19maWx0ZXIiLCJvX2FkZF9pbnRfaW50IiwiaTIiLCJvX2FkZF9yYXRfcmF0Iiwib19hZGRfbW9uX21vbiIsIm0yIiwib19hZGRfZGF0X2R1ciIsImRhIiwiZHUiLCJvX2FkZF9kdXJfZHVyIiwib19zdWJfaW50X2ludCIsIm9fc3ViX3JhdF9yYXQiLCJvX3N1Yl9tb25fbW9uIiwib19zdWJfZGF0X2RhdCIsIm9fc3ViX2RhdF9kdXIiLCJkYXQiLCJkdXIiLCJvX3N1Yl9kdXJfZHVyIiwib19tdWx0X2ludF9pbnQiLCJvX211bHRfcmF0X3JhdCIsIm9fbXVsdF9tb25fcmF0IiwiaTFfYWJzIiwiaTJfYWJzIiwic2lnbl9pbnQiLCJyYXRfcmVzdWx0IiwicmVtYWluZGVyIiwicmVzIiwib19tdWx0X2R1cl9pbnQiLCJvX2Rpdl9pbnRfaW50Iiwib19kaXZfcmF0X3JhdCIsIm9fZGl2X21vbl9tb24iLCJvX2Rpdl9tb25fcmF0IiwicjEiLCJvX2Rpdl9kdXJfZHVyIiwiZDEiLCJkMiIsIm9fbHRfaW50X2ludCIsIm9fbHRfcmF0X3JhdCIsIm9fbHRfbW9uX21vbiIsIm9fbHRfZHVyX2R1ciIsIm9fbHRfZGF0X2RhdCIsIm9fbHRlX2ludF9pbnQiLCJvX2x0ZV9yYXRfcmF0Iiwib19sdGVfbW9uX21vbiIsIm9fbHRlX2R1cl9kdXIiLCJvX2x0ZV9kYXRfZGF0Iiwib19ndF9pbnRfaW50Iiwib19ndF9yYXRfcmF0Iiwib19ndF9tb25fbW9uIiwib19ndF9kdXJfZHVyIiwib19ndF9kYXRfZGF0Iiwib19ndGVfaW50X2ludCIsIm9fZ3RlX3JhdF9yYXQiLCJvX2d0ZV9tb25fbW9uIiwib19ndGVfZHVyX2R1ciIsIm9fZ3RlX2RhdF9kYXQiLCJvX2VxX2ludF9pbnQiLCJvX2VxX3JhdF9yYXQiLCJvX2VxX21vbl9tb24iLCJvX2VxX2R1cl9kdXIiLCJvX2VxX2RhdF9kYXQiLCJvX2ZvbGQiLCJvX25vdCQwIiwib19sZW5ndGgkMCIsIm9fdG9yYXRfaW50Iiwib190b3JhdF9tb24iLCJvX3RvbW9uZXlfcmF0Iiwib19nZXREYXkiLCJvX2dldE1vbnRoIiwib19nZXRZZWFyIiwib19maXJzdERheU9mTW9udGgiLCJvX2xhc3REYXlPZk1vbnRoIiwib19yb3VuZF9tb24iLCJvX3JvdW5kX3JhdCIsIm9fbWludXNfaW50JDAiLCJvX21pbnVzX3JhdCQwIiwib19taW51c19tb24kMCIsIm9fbWludXNfZHVyJDAiLCJvX2FuZCQwIiwib19vciQwIiwib194b3IkMCIsIm9fZXEkMCIsIm9fbWFwJDAiLCJvX3JlZHVjZSQwIiwib19jb25jYXQkMCIsIm9fZmlsdGVyJDAiLCJvX2FkZF9pbnRfaW50JDAiLCJvX2FkZF9yYXRfcmF0JDAiLCJvX2FkZF9tb25fbW9uJDAiLCJvX2FkZF9kYXRfZHVyJDAiLCJvX2FkZF9kdXJfZHVyJDAiLCJvX3N1Yl9pbnRfaW50JDAiLCJvX3N1Yl9yYXRfcmF0JDAiLCJvX3N1Yl9tb25fbW9uJDAiLCJvX3N1Yl9kYXRfZGF0JDAiLCJvX3N1Yl9kYXRfZHVyJDAiLCJvX3N1Yl9kdXJfZHVyJDAiLCJvX211bHRfaW50X2ludCQwIiwib19tdWx0X3JhdF9yYXQkMCIsIm9fbXVsdF9tb25fcmF0JDAiLCJvX211bHRfZHVyX2ludCQwIiwib19kaXZfaW50X2ludCQwIiwib19kaXZfcmF0X3JhdCQwIiwib19kaXZfbW9uX21vbiQwIiwib19kaXZfbW9uX3JhdCQwIiwib19kaXZfZHVyX2R1ciQwIiwib19sdF9pbnRfaW50JDAiLCJvX2x0X3JhdF9yYXQkMCIsIm9fbHRfbW9uX21vbiQwIiwib19sdF9kdXJfZHVyJDAiLCJvX2x0X2RhdF9kYXQkMCIsIm9fbHRlX2ludF9pbnQkMCIsIm9fbHRlX3JhdF9yYXQkMCIsIm9fbHRlX21vbl9tb24kMCIsIm9fbHRlX2R1cl9kdXIkMCIsIm9fbHRlX2RhdF9kYXQkMCIsIm9fZ3RfaW50X2ludCQwIiwib19ndF9yYXRfcmF0JDAiLCJvX2d0X21vbl9tb24kMCIsIm9fZ3RfZHVyX2R1ciQwIiwib19ndF9kYXRfZGF0JDAiLCJvX2d0ZV9pbnRfaW50JDAiLCJvX2d0ZV9yYXRfcmF0JDAiLCJvX2d0ZV9tb25fbW9uJDAiLCJvX2d0ZV9kdXJfZHVyJDAiLCJvX2d0ZV9kYXRfZGF0JDAiLCJvX2VxX2ludF9pbnQkMCIsIm9fZXFfcmF0X3JhdCQwIiwib19lcV9tb25fbW9uJDAiLCJvX2VxX2R1cl9kdXIkMCIsIm9fZXFfZGF0X2RhdCQwIiwib19mb2xkJDAiLCJleG4iLCJtb2R1bGUiLCJnbG9iYWxUaGlzIiwibnVsbCIsInVuZGVmaW5lZCIsImpzb29fZXhwb3J0cyIsImV2ZW50IiwiZHVyYXRpb25fb2ZfanNvbyIsImQiLCJkdXJhdGlvbl90b19qc29vIiwiZGF5cyIsIm1vbnRocyIsInllYXJzIiwiZGF0ZV9vZl9qc29vIiwiZCQwIiwiZCQxIiwiZGF5IiwibW9udGgiLCJ5ZWFyIiwiZGF0ZV90b19qc29vIiwiZXZ0IiwicG9zIiwidiIsImlvIiwiaW5mbyIsImV2ZW50IiwiZXZlbnRfbWFuYWdlciIsImV4ZWN1dGVfb3JfdGhyb3dfZXJyb3IiLCJmIiwidGhyb3dfZXJyb3IiLCJkZXNjciIsInBvcyQwIiwicG9zJDEiLCJlbWJlZF9wcmlzZV9lbl9jaGFyZ2UiLCJ4IiwieCQwIiwieCQxIiwieCQyIiwieCQzIiwieCQ0IiwiZW1iZWRfc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvIiwiZW1iZWRfcHJpc2VfZW5fY29tcHRlIiwiZW1iZWRfdmVyc2VtZW50X2FsbG9jYXRpb25zIiwiZW1iZWRfY29sbGVjdGl2aXRlIiwieCQ1IiwieCQ2IiwieCQ3IiwieCQ4IiwiZW1iZWRfYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2IiwiZW1iZWRfdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmllIiwiZW1iZWRfdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmllIiwiZW1iZWRfc21pYyIsImVtYmVkX2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpbyIsImVtYmVkX2ludGVyZmFjZV9hbGxvY2F0aW9uc19mYSIsImVtYmVkX2VuZmFudF9lbnRyZWUiLCJlbWJlZF9lbmZhbnQiLCJlbWJlZF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIiwiZW1iZWRfZW5mYW50X2xlX3BsdXNfYWdlIiwiZW1iZWRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyIsImVtYmVkX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaSIsImVtYmVkX2FsbG9jYXRpb25fZmFtaWxpYWxlc19hdiQwIiwiZW1iZWRfZW5mYW50X2xlX3BsdXNfYWdlX2luIiwiZW1iZWRfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pIiwiZW1iZWRfdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmllJDAiLCJlbWJlZF92ZXJpZmljYXRpb25fYWdlX3N1cGVyaWUkMCIsImVtYmVkX3NtaWNfaW4iLCJlbWJlZF9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW8kMCIsImVtYmVkX2ludGVyZmFjZV9hbGxvY2F0aW9uc19mYSQwIiwiYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwIiwiYWdlX21pbmltdW1fYWxpbmVhXzFfbDUyMV8zIiwiZW5mYW50X2xlX3BsdXNfYWdlIiwiZW5mYW50X2xlX3BsdXNfYWdlX2luIiwiZW5mYW50cyIsInBvdGVudGllbF9wbHVzX2FnZV8xIiwicG90ZW50aWVsX3BsdXNfYWdlXzIiLCJsZV9wbHVzX2FnZSIsInZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291XyIsImRhdGVfbmFpc3NhbmNlIiwiZGF0ZV9jb3VyYW50ZSIsImFubmVlcyIsImVzdF9pbmZlcmlldXJfb3VfZWdhbCIsInZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2EiLCJ2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX2kiLCJlc3Rfc3VwZXJpZXVyIiwic21pYyIsInNtaWNfaW4iLCJyZXNpZGVuY2UiLCJicnV0X2hvcmFpcmUiLCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW0iLCJtb250YW50IiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlcyIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4iLCJhZ2VfbDUxMl8zXzIiLCJzbWljX2RvdF9kYXRlX2NvdXJhbnRlIiwic21pY19kb3RfcmVzaWRlbmNlIiwicmVzdWx0Iiwic21pY19kb3RfYnJ1dF9ob3JhaXJlIiwicmVnaW1lX291dHJlX21lcl9sNzUxXzEiLCJwbGFmb25kX2w1MTJfM18yIiwiZW5mYW50IiwiY29uZGl0aW9uc19ob3JzX2FnZSIsImRyb2l0X291dmVydCIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXMiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIiwicGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtIiwicGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtJDAiLCJyZXNzb3VyY2VzX21lbmFnZSIsImVuZmFudHNfYV9jaGFyZ2UiLCJhdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWUiLCJwcmlzZV9lbl9jb21wdGUiLCJ2ZXJzZW1lbnQiLCJub21icmVfZW5mYW50c19hbGluZWFfMl9sNTIxXzMiLCJub21icmVfZW5mYW50c19hbGluZWFfMl9sNTIxXzEiLCJ2ZXJzaW9uX2F2cmlsXzIwMDhfZG90X2FnZV9taW4iLCJibWFmX2RvdF9kYXRlX2NvdXJhbnRlIiwicmVzdWx0JDAiLCJibWFmX2RvdF9tb250YW50IiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfZGF0IiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVzIiwicmVzdWx0JDEiLCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9kcm8iLCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9jb24iLCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9hZ2UiLCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9yZWciLCJlbmZhbnRfbGVfcGx1c19hZ2VfZG90X2VuZmFudHMiLCJyZXN1bHQkMiIsImVuZmFudF9sZV9wbHVzX2FnZV9kb3RfbGVfcGx1cyIsImVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0XyIsImVzdF9lbmZhbnRfbGVfcGx1c19hZ2UiLCJwbGFmb25kX2lfaV9kNTIxXzMiLCJwbGFmb25kX2lfZDUyMV8zIiwiZHJvaXRfb3V2ZXJ0X2NvbXBsZW1lbnQiLCJkcm9pdF9vdXZlcnRfZm9yZmFpdGFpcmUiLCJtb250YW50X2luaXRpYWxfYmFzZV9xdWF0cmllbWUiLCJtb250YW50X2luaXRpYWxfYmFzZV90cm9pc2llbWUiLCJub21icmVfdG90YWxfZW5mYW50cyIsInN1bTEiLCJzdW0yIiwibm9tYnJlX21veWVuX2VuZmFudHMiLCJtb250YW50X2luaXRpYWxfYmFzZV9wcmVtaWVyX2UiLCJkcm9pdF9vdXZlcnRfYmFzZSIsImRyb2l0X291dmVydF9tYWpvcmF0aW9uIiwiYWxsb2NhdGlvbiIsImNvbXBsZW1lbnRfZGVncmVzc2lmIiwibW9udGFudF92ZXJzZV9mb3JmYWl0YWlyZV9wYXJfIiwibW9udGFudF9pbml0aWFsX2Jhc2VfdHJvaXNpZW1lJDAiLCJtb250YW50X2luaXRpYWxfYmFzZV9kZXV4aWVtZV8iLCJyYXBwb3J0X2VuZmFudHNfdG90YWxfbW95ZW4iLCJtb250YW50X2luaXRpYWxfbWV0cm9wb2xlX21ham8iLCJtb250YW50X3ZlcnNlX2ZvcmZhaXRhaXJlIiwibW9udGFudF9pbml0aWFsX2Jhc2UiLCJtb250YW50X2luaXRpYWxfbWFqb3JhdGlvbiIsIm1vbnRhbnRfdmVyc2VfY29tcGxlbWVudF9wb3VyXyIsIm1vbnRhbnRfYXZlY19nYXJkZV9hbHRlcm5lZV9iYSIsIm1vbnRhbnRfYXZlY19nYXJkZV9hbHRlcm5lZV9tYSIsIm1vbnRhbnRfdmVyc2VfYmFzZSIsIm1vbnRhbnRfdmVyc2VfbWFqb3JhdGlvbiIsIm1vbnRhbnRfYmFzZV9jb21wbGVtZW50X3BvdXJfYiIsIm1vbnRhbnRfdmVyc2VfY29tcGxlbWVudF9wb3VyXyQwIiwibW9udGFudF92ZXJzZSIsImludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbCIsImlfZGF0ZV9jb3VyYW50ZSIsImlfZW5mYW50cyIsImlfcmVzc291cmNlc19tZW5hZ2UiLCJpX3Jlc2lkZW5jZSIsImlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZSIsImlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZSQwIiwiaV9hdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfcGVyIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfcGVyJDAiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9yZXMiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9yZXMkMCIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X2RhdCIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X2VuZiIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X2F2YSIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X21vbiIsImlfbW9udGFudF92ZXJzZSIsInByaXNlX2VuX2NoYXJnZV90b19qc29vIiwiYXJnIiwiYXJnJDAiLCJhcmckMSIsImFyZyQyIiwiYXJnJDMiLCJwcmlzZV9lbl9jaGFyZ2Vfb2ZfanNvbyIsInByaXNlX2VuX2NoYXJnZSIsImNvbnMiLCJzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZV8iLCJzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZV8kMCIsInNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlIiwicHJpc2VfZW5fY29tcHRlX3RvX2pzb28iLCJwcmlzZV9lbl9jb21wdGVfb2ZfanNvbyIsInZlcnNlbWVudF9hbGxvY2F0aW9uc190b19qc29vIiwidmVyc2VtZW50X2FsbG9jYXRpb25zX29mX2pzb28iLCJ2ZXJzZW1lbnRfYWxsb2NhdGlvbnMiLCJjb2xsZWN0aXZpdGVfdG9fanNvbyIsImFyZyQ0IiwiYXJnJDUiLCJhcmckNiIsImFyZyQ3IiwiY29sbGVjdGl2aXRlX29mX2pzb28iLCJjb2xsZWN0aXZpdGUiLCJhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDAkMCIsImFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMCQxIiwidmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfJDAiLCJ2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV8kMSIsInZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfdCIsInZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfbyIsInNtaWNfdG9fanNvbyIsInNtaWNfb2ZfanNvbyIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQwIiwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtJDEiLCJpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWwkMCIsImludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbCQxIiwiZW5mYW50X2VudHJlZV90b19qc29vIiwiZW5mYW50X2VudHJlZSIsImVuZmFudF9lbnRyZWVfb2ZfanNvbyIsImVuZmFudF90b19qc29vIiwiZW5mYW50X29mX2pzb28iLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX3RvX2pzb28iLCJmdW5jdGlvbl9pbnB1dDAiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX29mX2pzb28iLCJlbmZhbnRfbGVfcGx1c19hZ2VfdG9fanNvbyIsImVuZmFudF9sZV9wbHVzX2FnZV9vZl9qc29vIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc190b19qc29vIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19vZl9qc29vIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbl90b19qIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbl9vZl9qIiwiYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwJDIiLCJhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDAkMyIsImVuZmFudF9sZV9wbHVzX2FnZV9pbl90b19qc29vIiwiZW5mYW50X2xlX3BsdXNfYWdlX2luX29mX2pzb28iLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luX3RvX2oiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luX29mX2oiLCJ2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV8kMiIsInZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291XyQzIiwidmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYV9pJDAiLCJzbWljX2luX3RvX2pzb28iLCJzbWljX2luX29mX2pzb28iLCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW0kMiIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQzIiwiaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsJDIiLCJpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWwkMyIsImFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMCQ0IiwiZW5mYW50X2xlX3BsdXNfYWdlJDAiLCJ2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV8kNCIsInZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2EkMCIsInNtaWMkMCIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQ0IiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlcyQwIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyQwIiwiaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsJDQiLCJlbWJlZF90eXBlX3ByZXQiLCJlbWJlZF90aXR1bGFpcmVfcHJldCIsImVtYmVkX3R5cGVfdHJhdmF1eF9sb2dlbWVudF9kOCIsImVtYmVkX3R5cGVfdHJhdmF1eF9sb2dlbWVudF9yOCIsImVtYmVkX2FtZWxpb3JlX3Bhcl9vY2N1cGFudCIsImVtYmVkX2xpbWl0ZV90cmFuY2hlIiwiZW1iZWRfbGltaXRlX3RyYW5jaGVfZGVjaW1hbCIsImVtYmVkX3ByZXN0YXRpb25fcmVjdWUiLCJlbWJlZF9wYXJlbnRfb3VfYXV0cmUiLCJlbWJlZF9zaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWUiLCJlbWJlZF9wYXJlbnRlIiwiZW1iZWRfZGF0ZV9kZV9uYWlzc2FuY2Vfb3VfbW9pIiwiZW1iZWRfem9uZV9kX2hhYml0YXRpb24iLCJlbWJlZF92ZXJzZW1lbnRfYSIsImVtYmVkX2RlcGVuc2VfbG9nZW1lbnQiLCJlbWJlZF9tb2RlX29jY3VwYXRpb25faW1wYXllIiwiZW1iZWRfdHlwZV9lbGlnaWJpbGl0ZV9hbGxvY2F0IiwiZW1iZWRfYWNjb3JkX2ZpbmFuY2VtZW50X3JlcHJlIiwiZW1iZWRfdHlwZV9haWRlc19wZXJzb25uZWxsZV9sIiwiZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZSIsImVtYmVkX3R5cGVfbG9nZW1lbnRfZm95ZXIiLCJlbWJlZF9jYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG8iLCJlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGMiLCJlbWJlZF9jb2xsZWN0aXZpdGUkMCIsImVtYmVkX3NpdHVhdGlvbl9vYmxpZ2F0aW9uX3NjbyQwIiwiZW1iZWRfY29udmVudGlvbl9iYWlsbGV1cl9zb2NpIiwiZW1iZWRfY29udmVudGlvbl9hX25faF9hIiwiZW1iZWRfcGVyc29ubmVfc291c19sb2NhdGlvbiIsImVtYmVkX2NvbmRpdGlvbnNfZXRyYW5nZXJzIiwiZW1iZWRfZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uIiwiZW1iZWRfZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtIiwiZW1iZWRfY29udHJpYnV0aW9uc19zb2NpYWxlc19hIiwiZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlIiwiZW1iZWRfY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyIiwiZW1iZWRfY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtIiwiZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlJDAiLCJlbWJlZF9jYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2UiLCJlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2UkMSIsImVtYmVkX3RyYWl0ZW1lbnRfZm9ybXVsZV9haWRlXyIsImVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZSQyIiwiZW1iZWRfaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVuIiwiZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lIiwiZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lJDAiLCJlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWUkMSIsImVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZSQyIiwiZW1iZWRfb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0IiwiZW1iZWRfaW1wYXllX2RlcGVuc2VfbG9nZW1lbnQiLCJlbWJlZF9jYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2UiLCJlbWJlZF9jYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2UkMCIsImVtYmVkX2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpbyQxIiwiZW1iZWRfdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmllJDEiLCJlbWJlZF92ZXJpZmljYXRpb25fYWdlX3N1cGVyaWUkMSIsImVtYmVkX3NtaWMkMCIsImVtYmVkX25ldWZfb3VfYW5jaWVuIiwiZW1iZWRfdHJhbmNoZV9yZXZlbnUiLCJlbWJlZF90cmFuY2hlX3JldmVudV9kZWNpbWFsIiwiZW1iZWRfYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UiLCJlbWJlZF9kYXRlX25haXNzYW5jZV90cm9pc2llbWUiLCJlbWJlZF9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2wiLCJlbWJlZF9wcmV0IiwiZW1iZWRfbG9nZW1lbnRfZm95ZXIiLCJlbWJlZF9lbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWwiLCJlbWJlZF90eXBlX2JhaWxsZXVyIiwiZW1iZWRfbG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfIiwiZW1iZWRfbmF0aW9uYWxpdGUiLCJlbWJlZF9jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDIiLCJlbWJlZF9pbmZvcm1hdGlvbnNfcHJpbWVfZGVfZGUiLCJlbWJlZF9wcm9wcmlldGFpcmUiLCJlbWJlZF9lbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc18iLCJlbWJlZF9kZW1hbmRldXIiLCJlbWJlZF9lbmZhbnRfYV9jaGFyZ2UiLCJlbWJlZF9sb2NhdGlvbiIsImVtYmVkX3BlcnNvbm5lX2FfY2hhcmdlIiwiZW1iZWRfY2F0ZWdvcmllX2NhbGN1bF9hX3BfbCIsImVtYmVkX21vZGVfb2NjdXBhdGlvbiIsImVtYmVkX2VsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbiIsImVtYmVkX2xvZ2VtZW50IiwiZW1iZWRfbWVuYWdlIiwiZW1iZWRfZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29uJDAiLCJlbWJlZF9lbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm4kMCIsImVtYmVkX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbCQwIiwiZW1iZWRfZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtJDAiLCJlbWJlZF9jb250cmlidXRpb25zX3NvY2lhbGVzX2EkMCIsImVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZSQzIiwiZW1iZWRfY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyJDAiLCJlbWJlZF9jYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW0kMCIsImVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZSQ0IiwiZW1iZWRfY2FsY3VsX25vbWJyZV9wYXJ0c19hY2NlJDAiLCJlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2UkNSIsImVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZSQ2IiwiZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lJDMiLCJlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWUkNCIsImVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZSQ1IiwiZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lJDYiLCJlbWJlZF9vdXZlcnR1cmVfZHJvaXRzX3JldHJhaXQkMCIsImVtYmVkX2ltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50XyIsImVtYmVkX2NhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZSQxIiwiZW1iZWRfY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlJDIiLCJlbWJlZF9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW8kMiIsImVtYmVkX3ZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZSQyIiwiZW1iZWRfdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmllJDIiLCJlbWJlZF9zbWljX2luJDAiLCJlbWJlZF9lbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc18kMCIsImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcCIsImxpZXUiLCJleG9uZXJlX2NzZyIsInRhdXhfY3JkcyIsImFpZGVfZmluYWxlIiwiY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltIiwicmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzIiwiY29uZGl0aW9uXzJfZHVfODMyXzI1Iiwibl9ub21icmVfcGFydHNfZDgzMl8yNSIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yNiIsInRyYW5jaGVzX3JldmVudXNfZDgzMl8yNiIsInRyYW5jaGUiLCJ0cmFuY2hlX2hhdXQiLCJ0cmFuY2hlc19yZXZlbnVzX2Q4MzJfMjZfbXVsdGkiLCJyZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXMkMCIsImNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mbyIsIm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2UiLCJzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGwiLCJsaW1pdGF0aW9uX21ham9yYXRpb25fcGVyc29ubmUiLCJsaW1pdGF0aW9uX21ham9yYXRpb25fcGVyc29ubmUkMCIsIm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfYmFzZSIsIm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfbWFqb3JhdCIsImNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uXyIsIm5fbm9tYnJlX3BhcnRzX2Q4MzJfMTEiLCJvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlIiwib3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbiIsImRhdGVfbmFpc3NhbmNlX2Fzc3VyZSIsImFnZV9vdXZlcnR1cmVfZHJvaXQiLCJpbXBheWVfZGVwZW5zZV9sb2dlbWVudCIsImltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luIiwibW9kZV9vY2N1cGF0aW9uIiwiYWlkZV92ZXJzZWUiLCJtb250YW50X2FwbCIsIm1vbnRhbnRfY2hhcmdlcyIsImRlcGVuc2VfbG9nZW1lbnQiLCJtb250YW50X2RldHRlIiwibW9kZV9vY2N1cGF0aW9uX2ltcGF5ZSIsImRlcGVuc2VfbG9nZW1lbnRfYnJ1dGUiLCJ0b3RhbF9lY2hlYW5jZXMiLCJtZW5zdWFsaXRlIiwibG95ZXIiLCJ0b3RhbCIsIm1vbnRhbnRfbG95ZXIiLCJkZXBlbnNlX2xvZ2VtZW50X25ldHRlIiwiZWNoZWFuY2VfcHJldF9uZXR0ZSIsIm1lbnN1YWxpdGVfbmV0dGUiLCJlY2hlYW5jZV9wcmV0X2JydXRlIiwibWVuc3VhbGl0ZV9icnV0ZSIsImxveWVyX25ldCIsImxveWVyX2JydXQiLCJzZXVpbF9pbXBheWVfZGVwZW5zZV9kZV9sb2dlbWUiLCJtb250YW50X2ltcGF5ZSIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQ1IiwidmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfJDUiLCJ2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hJDEiLCJzbWljJDEiLCJhcnJvbmRpX2NlbnRhaW5lX3N1cGVyaWV1cmUiLCJ0cmFpdGVtZW50X251bF90b3V0X2xlX3RlbXBzIiwibW9udGVlX2VuX2NoYXJnZV9zYWludF9waWVycmVfIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlIiwibG9nZW1lbnRfZm95ZXJfamV1bmVzX3RyYXZhaWxsIiwidHlwZV9sb2dlbWVudF9mb3llciIsImRhdGVfY29udmVudGlvbm5lbWVudCIsInpvbmUiLCJyZWRldmFuY2UiLCJjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9kYXQiLCJjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9saWUiLCJjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb24iLCJtb250YW50X21pbmltYWxfYWlkZV9kODIzXzI0IiwibW9udGFudF9mb3JmYWl0YWlyZV9kODMyXzI0IiwicGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnIiwiY29lZmZpY2llbnRfcl9kODMyXzI1IiwiY29uZGl0aW9uXzJfZHVfODMyXzI1JDAiLCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXQiLCJlcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZSIsImNhbGN1bF9ub21icmVfcGFydHNfZG90X2RhdGVfYyIsImNhbGN1bF9ub21icmVfcGFydHNfZG90X2NvbmRpdCIsImNhbGN1bF9ub21icmVfcGFydHNfZG90X25vbWJyZSIsImNhbGN1bF9ub21icmVfcGFydHNfZG90X3NpdHVhdCIsImNhbGN1bF9ub21icmVfcGFydHNfZG90X2xpbWl0YSIsImNhbGN1bF9ub21icmVfcGFydHNfZG90X25fbm9tYiIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yNyIsImNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MyIsImFsbG9jYXRpb25fbWVuc3VlbGxlIiwiZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzI3Iiwibl9ub21icmVfcGFydHNfZDgzMl8yNSQwIiwiZGVwZW5zZV9uZXR0ZV9taW5pbWFsZSIsImFiYXR0ZW1lbnRfZGVwZW5zZV9uZXR0ZV9taW5pbSIsImNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbSQwIiwiY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltJDEiLCJjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW0kMiIsImNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbSQzIiwiY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltJDQiLCJkZW5vbWluYXRldXIiLCJkZW5vbWluYXRldXIkMCIsImNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kOCIsImFpZGVfZmluYWxlJDAiLCJhaWRlX2ZpbmFsZSQxIiwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtIiwiZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUiLCJjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgkMCIsImNyZHMiLCJhaWRlX2ZpbmFsZV9tb2luc19jcmRzX2Fycm9uZGkiLCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWIiLCJjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgkMSIsInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudCIsImFpZGVfZmluYWxlX2Zvcm11bGUiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMCIsIm1lbnN1YWxpdGVfcHJpbmNpcGFsZSIsInR5cGVfdHJhdmF1eF9sb2dlbWVudCIsImRhdGVfc2lnbmF0dXJlX3ByZXQiLCJsb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW4iLCJkYXRlX2VudHJlZV9sb2dlbWVudCIsImNvcHJvcHJpZXRlIiwic2l0dWF0aW9uX3I4MjJfMTFfMTNfMTciLCJ0eXBlX3ByZXQiLCJhbmNpZW5uZXRlX2xvZ2VtZW50IiwidGF1eF9mcmFuY3NfdmVyc19ldXJvcyIsInRhdXhfdHJhbmNoZV9zdXBlcmlldXJlX2Q4MzJfMSIsInRhdXhfdHJhbmNoZV9pbmZlcmlldXJlX2Q4MzJfMSIsIm1vbnRhbnRfbGltaXRlX3RyYW5jaGVzX2Q4MzJfMSIsImNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MyQwIiwiYW1lbGlvcmVfcGFyX29jY3VwYW50IiwiY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzJDEiLCJtb250YW50X21pbmltYWxfYWlkZV9kODMyXzEwIiwibW9udGFudF9mb3JmYWl0YWlyZV9kODMyXzEwIiwibW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4IiwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODMyIiwicmVzc291cmNlc19tZW5hZ2VfYXZlY19kODMyXzE4IiwiZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwIiwicGxhZm9uZF9zaWduYXR1cmUiLCJwbGFmb25kX2VudHJlZSIsInBsYWZvbmRfbWVuc3VhbGl0ZV9kODMyXzEwXzNfYiIsInBsYWZvbmRfbWVuc3VhbGl0ZV9kODMyXzEwXzNfYyIsIm1vbnRhbnRfbGltaXRlX3RyYW5jaGVzX2Q4MzJfMSQwIiwibWVuc3VhbGl0ZV9taW5pbWFsZSIsIm1lbnN1YWxpdGVfZWxpZ2libGUiLCJlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGkiLCJhZ2VfbDUxMl8zXzIkMCIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQxIiwibG95ZXJfcHJpbmNpcGFsX2Jhc2UiLCJiZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW4iLCJsb2dlbWVudF9lc3RfY2hhbWJyZSIsImFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZSIsInR5cGVfYWlkZSIsImNvbG9jYXRpb24iLCJyZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZSIsImxvZ2VtZW50X21ldWJsZV9kODQyXzIiLCJmcmFjdGlvbl9sODMyXzMiLCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4MjNfMTYiLCJtdWx0aXBsaWNhdGV1cl9tYWpvcmF0aW9uX2NoYXIiLCJtb250YW50X21pbmltYWxfYWlkZV9kODIzXzE2IiwibG95ZXJfcHJpbmNpcGFsX2F2ZWNfcmVkdWN0aW9uIiwidGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGUiLCJtdWx0aXBsaWNhdGV1cl9tYWpvcmF0aW9uX3IwIiwibXVsdGlwbGljYXRldXJfbWFqb3JhdGlvbl9sb3llIiwibXVsdGlwbGljYXRldXJfbWFqb3JhdGlvbl9wbGFmIiwibGltaXRlIiwiYWJhdHRlbWVudF9mb3JmYWl0YWlyZV9kODIzXzE3IiwibG95ZXJfcmVmZXJlbmNlIiwicGxhZm9uZF9sb3llcl9kODIzXzE2XzIiLCJwbGFmb25kX3N1cHByZXNzaW9uX2Q4MjNfMTYiLCJwbGFmb25kX2RlZ3Jlc3Npdml0ZV9kODIzXzE2IiwibG95ZXJfZWxpZ2libGUiLCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2RpbWludWUiLCJwYXJ0aWNpcGF0aW9uX21pbmltYWxlIiwicmFwcG9ydF9sb3llcnMiLCJ0YXV4X2xveWVyX2VsaWdpYmxlX2Zvcm11bGUiLCJ0YXV4X2xveWVyX2VsaWdpYmxlX3RhdXhfYXJyb24iLCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX3JlZHVjdGkiLCJ0YXV4X3ByaXNlX2NvbXB0ZV9yZXNzb3VyY2VzIiwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250ZWVfIiwicGFydGljaXBhdGlvbl9yZXNzb3VyY2VzIiwicGFydGljaXBhdGlvbl9yZXNzb3VyY2VzJDAiLCJwYXJ0aWNpcGF0aW9uX3BlcnNvbm5lbGxlIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95IiwiY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4IiwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfIiwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfJDAiLCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF8kMSIsImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90XyQyIiwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfJDMiLCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF8kNCIsImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90XyQ1IiwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfJDYiLCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF8kNyIsImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90XyQ4IiwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfJDkiLCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF8kMTAiLCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF8kMTEiLCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF8kMTIiLCJtb250YW50X21pbmltYWxfZGVwZW5zZV9uZXR0ZV8iLCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfMTUiLCJtb250YW50X21pbmltYWxfYWlkZV9kODQyXzE1IiwiZXF1aXZhbGVuY2VfbG95ZXIiLCJjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2UiLCJtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXMiLCJsb3llcl9taW5pbWFsIiwiYWJhdHRlbWVudCIsInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGVwZW5zZSIsInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbiIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjYyIsInJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19iYSIsImNoYXJnZXNfbWVuc3VlbGxlc19wcmV0Iiwib3BlcmF0aW9uc19sb2dlbWVudF9ldm9sdXRpZnNfIiwiY29lZmZpY2llbnRfZDg0Ml8xMiIsImNvZWZmaWNpZW50X2Q4NDJfMTEiLCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfMTIiLCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfMTEiLCJtb250YW50X21pbmltYWxfYWlkZV9kODQyXzYiLCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfNiIsImNvbmRpdGlvbl9kODQyXzExXzMiLCJkYXRlX2NhbGN1bCIsImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDg0MiIsInNldWlsX21pbmltYWxfcmVzc291cmNlc19tZW5hZyIsImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDg0MiQwIiwicmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX3NlIiwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODQyJDEiLCJzZXVpbF9taW5pbWFsX2RlcGVuc2VfbmV0dGVfbWkiLCJwbGFmb25kX21lbnN1YWxpdGVfZDg0Ml82IiwiZGVwZW5zZV9uZXR0ZV9taW5pbWFsZSQwIiwiZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfIiwibWVuYWdlIiwiZGVtYW5kZXVyIiwiY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wIiwiY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2UiLCJkYXRlX2VudHJlZV92aWd1ZXVyX2RpZmZlcmVlX2MiLCJkYXRlX2VudHJlZV92aWd1ZXVyX2RpZmZlcmVlX2MkMCIsInNldWlsX2w4MjJfM19wYXJ0c19wcm9wcmlldGUiLCJzZXVpbF9sODIyXzNfcGFydHNfdXN1ZnJ1aXQiLCJ1c3VmcnVpdF9vdV9wcm9wcmlldGVfZmFtaWxsZSIsIm5vbWJyZV9wZXJzb25uZXNfbG9nZW1lbnQiLCJzZXB0aWVtZV9hbGluZWFfbDgyM18xX2FwcGxpY2EiLCJjb25kaXRpb25fbm9uX291dmVydHVyZV9sODIyXzkiLCJjb25kaXRpb25fbm9uX291dmVydHVyZV9sODIyXzgiLCJjb25kaXRpb25fbG9nZW1lbnRfcmVzaWRlbmNlX3AkMCIsIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfZG90XyIsIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfZG90XyQwIiwiY29uZGl0aW9ucyIsImNvbmRpdGlvbl9uYXRpb25hbGl0ZSIsInBsYWZvbmRfaW5kaXZpZHVlbF9sODE1Xzlfc2VjdSIsInBlcnNvbm5lIiwiY29uZGl0aW9uX2xvZ2VtZW50X2xvY2F0aW9uX3RpIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfYWdlJDAiLCJ1c3VmcnVpdF9vdV9wcm9wcmlldGVfZmFtaWxsZSQwIiwicGFydHMiLCJwYXJ0cyQwIiwicGFydHMkMSIsInBhcnRzJDIiLCJjb25kaXRpb25fbG9nZW1lbnRfbW9kZV9vY2N1cGEiLCJjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV9taW4iLCJjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZSQwIiwiYWdlX2wxNjFfMTdfMl9zZWN1IiwiY29uZGl0aW9uX291dmVydHVyZV9sODIyXzEwX3BlIiwiYWdlX2wzNTFfOF8xX3NlY3UiLCJlbGlnaWJpbGl0ZV9sb2dlbWVudCIsInBlcnNvbm5lX2FfY2hhcmdlIiwicGFyZW50IiwiY29uZGl0aW9uXzJfcjgyM180IiwiZWxpZ2liaWxpdGUiLCJwcmlzZV9lbl9jb21wdGVfcGVyc29ubmVfYV9jaGEiLCJwZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2MiLCJjb2VmZiIsImNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZSIsIm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpcyIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvYyIsImxveWVyX3ByaW5jaXBhbCIsImNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9sb3llcl9wIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9yZXNzb3VyIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9iZW5lZmljIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9kYXRlX2NvIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9ub21icmVfIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9zaXR1YXRpIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF96b25lIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9sb2dlbWVuIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9hZ2Vlc19vIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF90eXBlX2FpIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9jb2xvY2F0IiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9yZWR1Y3RpIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9sb2dlbWVuJDAiLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3Jlc2lkZW4iLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X21vbnRhbnQiLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3BsYWZvbmQiLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3BhcnRpY2kiLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3RhdXhfY28iLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3BhcnRpY2kkMCIsImNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfYWlkZV9maSIsImNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfdHJhaXRlbSIsImluZm9zIiwidHJhaXRlbWVudF9haWRlX2ZpbmFsZSIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQyIiwicmVzc291cmNlc19tZW5hZ2Vfc2Fuc19hcnJvbmRpIiwic2l0dWF0aW9uX2ZhbWlsaWFsZSIsImxvY2F0aW9uIiwibG9nZW1lbnRmb3llciIsInByb3ByaWV0YWlyZSIsImxvY2F0aW9uJDAiLCJwcm9wcmlldGFpcmUkMCIsImNhdGVnb3JpZV9jYWxjdWxfYXBsIiwicmVzc291cmNlc19tZW5hZ2VfYXZlY19hcnJvbmRpIiwiYmFpbGxldXIiLCJwYXJhbTAiLCJ0cmFpdGVtZW50X2Zvcm11bGUiLCJ0cmFpdGVtZW50X2Zvcm11bGUkMCIsImxvZ2VtZW50X2ZveWVyIiwicmVzdWx0JDMiLCJyZXN1bHQkNCIsInRyYWl0ZW1lbnRfZm9ybXVsZSQxIiwic291c19jYWxjdWxfdHJhaXRlbWVudCIsImVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbSIsImluZm9ybWF0aW9ucyIsImRhdGVfZW1tZW5hZ2VtZW50IiwiZGVwZW5zZXNfanVzdGlmaWVlc19yZWVsbGVtZW50IiwiZGVsYWlfYXByZXNfZW1tZW5hZ2VtZW50X2w4MjNfIiwiY29uZGl0aW9uX3JhbmdfZW5mYW50IiwiZWxpZ2liaWxpdGVfYXBsX2RvdF9tZW5hZ2UiLCJlbGlnaWJpbGl0ZV9hcGxfZG90X2RlbWFuZGV1ciIsImVsaWdpYmlsaXRlX2FwbF9kb3RfZGF0ZV9jb3VyYSIsImVsaWdpYmlsaXRlX2FwbF9kb3RfY29uZGl0aW9uXyIsImVsaWdpYmlsaXRlX2FwbF9kb3RfY29uZGl0aW9uXyQwIiwiZWxpZ2liaWxpdGVfYXBsX2RvdF9kYXRlX2VudHJlIiwiZWxpZ2liaWxpdGVfYXBsX2RvdF9kYXRlX2NvdXJhJDAiLCJlbGlnaWJpbGl0ZV9hcGxfZG90X2VsaWdpYmlsaXQiLCJkYXRlX25haXNzYW5jZV9vdV9ncm9zc2Vzc2UiLCJjb25kaXRpb25fcGVyaW9kZV9kZW1lbmFnZW1lbnQiLCJwbGFmb25kX2Q4MjNfMjIiLCJtb250YW50X3ByaW1lX2RlbWVuYWdlbWVudCIsImVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbiIsImJlbmVmaWNpZV9haWRlX3BlcnNvbm5hbGlzZWVfbCIsImR1cmVlX2w4NDFfMV8zIiwibF84NDFfMV82X2FwcGxpY2FibGUiLCJsXzg0MV8xXzJfYXBwbGljYWJsZSIsImxfODQxXzFfMV9hcHBsaWNhYmxlIiwiY29uZGl0aW9uX2FjY2Vzc2lvbl9wcm9wcmlldGUiLCJlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9tZW5hZ2UiLCJlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9kZW1hbmQiLCJlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9kYXRlX2MiLCJlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9jb25kaXQiLCJlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9jb25kaXQkMCIsImVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2RhdGVfZSIsImVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2VsaWdpYiIsImVsaWdpYmlsaXRlX2NvbW11bmVfZG90X25vbWJyZSIsImVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvZWZmaSIsImVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdCQxIiwiZWxpZ2liaWxpdGVfZGlzcG9zaXRpb25zX2NvbW11IiwiYWNjIiwicHJlc3RhdGlvbiIsImRhdGVfbWFyaWFnZSIsImVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbiQwIiwiZGF0ZV9hY2NvcmQiLCJlbGlnaWJpbGl0ZV9sODQxXzIiLCJlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWUiLCJwcmV0IiwiY2FyYWN0ZXJpc3RpcXVlc19wcmV0X2w4MzFfMV8xIiwiY2FyYWN0ZXJpc3RpcXVlc19wcmV0X2w4MzFfMV82IiwibG9nZW1lbnRfc2l0dWVfY29tbXVuZV9kZXNlcXVpIiwicHJvcHJpZXRlIiwiY29udmVudGlvbiIsImNvbnZlbnRpb24kMCIsImNvbmRpdGlvbl9sb2dlbWVudF9iYWlsbGV1ciIsInByb3ByaWV0ZSQwIiwiY29uZGl0aW9uX2xvZ2VtZW50X3ByZXQiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudCIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaSIsInJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jbyIsImVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbiQxIiwiZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVuJDIiLCJlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW4kMyIsImVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbiQ0IiwiZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVuJDUiLCJlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWUkMCIsImVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZSQxIiwiZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlJDIiLCJlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWUkMyIsImVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZSQ0IiwiZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlJDUiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3QiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3QkMCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdCQxIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90JDIiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3QkMyIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdCQ0IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90JDUiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3QkNiIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdCQ3IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90JDgiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMyIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQ0IiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDUiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkNiIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQ3IiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDgiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkOSIsImFpZGVfZmluYWxlX2FwbCIsImFpZGVfZmluYWxlX2FsIiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nIiwibWVuYWdlX3NhbnNfZW5mYW50c19nYXJkZV9hbHRlIiwiY2FsY3VsZXR0ZV9kb3RfbWVuYWdlIiwiY2FsY3VsZXR0ZV9kb3RfZGVtYW5kZXVyIiwiY2FsY3VsZXR0ZV9kb3RfZGF0ZV9jb3VyYW50ZSIsImNhbGN1bGV0dGVfZG90X3Jlc3NvdXJjZXNfbWVuYSIsImNhbGN1bGV0dGVfZG90X2VsaWdpYmlsaXRlIiwiY2FsY3VsZXR0ZV9kb3RfYWlkZV9maW5hbGVfZm9yIiwiY2FsY3VsZXR0ZV9kb3RfdHJhaXRlbWVudF9haWRlIiwiY2FsY3VsZXR0ZV9kb3RfY29lZmZpY2VudHNfZW5mIiwiY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlIiwiY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlJDAiLCJjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWUkMSIsImNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZSQyIiwiY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlJDMiLCJ0eXBlX3ByZXRfdG9fanNvbyIsInR5cGVfcHJldF9vZl9qc29vIiwidGl0dWxhaXJlX3ByZXRfdG9fanNvbyIsInRpdHVsYWlyZV9wcmV0X29mX2pzb28iLCJ0aXR1bGFpcmVfcHJldCIsInR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1XyIsInR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1XyQwIiwidHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTUiLCJ0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81X3QiLCJ0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81X28iLCJ0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81IiwiYW1lbGlvcmVfcGFyX29jY3VwYW50X3RvX2pzb28iLCJhbWVsaW9yZV9wYXJfb2NjdXBhbnRfb2ZfanNvbyIsImxpbWl0ZV90cmFuY2hlX3RvX2pzb28iLCJsaW1pdGVfdHJhbmNoZV9vZl9qc29vIiwibGltaXRlX3RyYW5jaGUiLCJsaW1pdGVfdHJhbmNoZV9kZWNpbWFsX3RvX2pzb28iLCJsaW1pdGVfdHJhbmNoZV9kZWNpbWFsX29mX2pzb28iLCJsaW1pdGVfdHJhbmNoZV9kZWNpbWFsIiwicHJlc3RhdGlvbl9yZWN1ZV90b19qc29vIiwicHJlc3RhdGlvbl9yZWN1ZV9vZl9qc29vIiwicHJlc3RhdGlvbl9yZWN1ZSIsInBhcmVudF9vdV9hdXRyZV90b19qc29vIiwicGFyZW50X291X2F1dHJlX29mX2pzb28iLCJwYXJlbnRfb3VfYXV0cmUiLCJzaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWVfdG9fanMiLCJzaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWVfb2ZfanMiLCJzaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWUiLCJwYXJlbnRlX3RvX2pzb28iLCJwYXJlbnRlX29mX2pzb28iLCJwYXJlbnRlIiwiZGF0ZV9kZV9uYWlzc2FuY2Vfb3VfbW9pc19kZV9nIiwiZGF0ZV9kZV9uYWlzc2FuY2Vfb3VfbW9pc19kZV9nJDAiLCJ6b25lX2RfaGFiaXRhdGlvbl90b19qc29vIiwiem9uZV9kX2hhYml0YXRpb25fb2ZfanNvbyIsInpvbmVfZF9oYWJpdGF0aW9uIiwidmVyc2VtZW50X2FfdG9fanNvbyIsInZlcnNlbWVudF9hX29mX2pzb28iLCJ2ZXJzZW1lbnRfYSIsImRlcGVuc2VfbG9nZW1lbnRfdG9fanNvbyIsImRlcGVuc2VfbG9nZW1lbnRfb2ZfanNvbyIsIm1vZGVfb2NjdXBhdGlvbl9pbXBheWVfdG9fanNvbyIsIm1vZGVfb2NjdXBhdGlvbl9pbXBheWVfb2ZfanNvbyIsInR5cGVfZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sbyIsInR5cGVfZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sbyQwIiwiYWNjb3JkX2ZpbmFuY2VtZW50X3JlcHJlc2VudGFuIiwiYWNjb3JkX2ZpbmFuY2VtZW50X3JlcHJlc2VudGFuJDAiLCJ0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW4iLCJ0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW4kMCIsInNpdHVhdGlvbl9mYW1pbGlhbGVfdG9fanNvbyIsInNpdHVhdGlvbl9mYW1pbGlhbGVfb2ZfanNvbyIsInR5cGVfbG9nZW1lbnRfZm95ZXJfdG9fanNvbyIsInR5cGVfbG9nZW1lbnRfZm95ZXJfb2ZfanNvbyIsImNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbCIsImNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbCQwIiwic2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wIiwic2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wJDAiLCJjb2xsZWN0aXZpdGVfdG9fanNvbyQwIiwiY29sbGVjdGl2aXRlX29mX2pzb28kMCIsInNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlXyQxIiwic2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmVfJDIiLCJjb252ZW50aW9uX2JhaWxsZXVyX3NvY2lhbF90b18iLCJjb252ZW50aW9uX2JhaWxsZXVyX3NvY2lhbCIsImNvbnZlbnRpb25fYmFpbGxldXJfc29jaWFsX29mXyIsImNvbnZlbnRpb25fYV9uX2hfYV90b19qc29vIiwiY29udmVudGlvbl9hX25faF9hIiwiY29udmVudGlvbl9hX25faF9hX29mX2pzb28iLCJwZXJzb25uZV9zb3VzX2xvY2F0aW9uX3RvX2pzb28iLCJwZXJzb25uZV9zb3VzX2xvY2F0aW9uIiwicGVyc29ubmVfc291c19sb2NhdGlvbl9vZl9qc29vIiwiY29uZGl0aW9uc19ldHJhbmdlcnNfdG9fanNvbyIsImNvbmRpdGlvbnNfZXRyYW5nZXJzIiwiY29uZGl0aW9uc19ldHJhbmdlcnNfb2ZfanNvbyIsImVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbSQwIiwiZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtJDEiLCJjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3AkMCIsImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcCQxIiwiY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZvJDAiLCJjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm8kMSIsImNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uXyQwIiwiY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fJDEiLCJ0cmFpdGVtZW50X2Zvcm11bGVfYWlkZV9maW5hbGUiLCJ0cmFpdGVtZW50X2Zvcm11bGVfYWlkZV9maW5hbGUkMCIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQxMCIsImluZm9zX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0MiIsImluZm9zX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0MiQwIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jJDAiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2MkMSIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjYyQwIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjJDEiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3kkMCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveSQxIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfdG9fIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfb2ZfIiwib3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV90b19qIiwib3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9vZl9qIiwiaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfdG9fanNvIiwiaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfb2ZfanNvIiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF90IiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9vIiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nJDAiLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2ckMSIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQ2IiwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtJDciLCJ2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV8kNiIsInZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291XyQ3IiwidmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYV90JDAiLCJ2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX28kMCIsInNtaWNfdG9fanNvbyQwIiwic21pY19vZl9qc29vJDAiLCJuZXVmX291X2FuY2llbl90b19qc29vIiwibmV1Zl9vdV9hbmNpZW5fb2ZfanNvbyIsIm5ldWZfb3VfYW5jaWVuIiwidHJhbmNoZV9yZXZlbnVfdG9fanNvbyIsInRyYW5jaGVfcmV2ZW51IiwidHJhbmNoZV9yZXZlbnVfb2ZfanNvbyIsInRyYW5jaGVfcmV2ZW51X2RlY2ltYWxfdG9fanNvbyIsInRyYW5jaGVfcmV2ZW51X2RlY2ltYWwiLCJ0cmFuY2hlX3JldmVudV9kZWNpbWFsX29mX2pzb28iLCJhdXRyZV9wZXJzb25uZV9hX2NoYXJnZV90b19qc28iLCJhdXRyZV9wZXJzb25uZV9hX2NoYXJnZSIsImF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlX29mX2pzbyIsImRhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9vdV9kZSIsImRhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9vdV9kZSQwIiwicHJldF90b19qc29vIiwicHJldF9vZl9qc29vIiwibG9nZW1lbnRfZm95ZXJfdG9fanNvbyIsImxvZ2VtZW50X2ZveWVyX29mX2pzb28iLCJlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc18iLCJlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyIsImVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzXyQwIiwidHlwZV9iYWlsbGV1cl90b19qc29vIiwidHlwZV9iYWlsbGV1cl9vZl9qc29vIiwidHlwZV9iYWlsbGV1ciIsImxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzXyIsImxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzXyQwIiwibG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnMiLCJuYXRpb25hbGl0ZV90b19qc29vIiwibmF0aW9uYWxpdGVfb2ZfanNvbyIsIm5hdGlvbmFsaXRlIiwiY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfdG9fIiwiY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfb2ZfIiwiaW5mb3JtYXRpb25zX3ByaW1lX2RlX2RlbWVuYWdlIiwiaW5mb3JtYXRpb25zX3ByaW1lX2RlX2RlbWVuYWdlJDAiLCJwcm9wcmlldGFpcmVfdG9fanNvbyIsInByb3ByaWV0YWlyZV9vZl9qc29vIiwiZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpJDAiLCJlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGkkMSIsImRlbWFuZGV1cl90b19qc29vIiwiZGVtYW5kZXVyX29mX2pzb28iLCJlbmZhbnRfYV9jaGFyZ2VfdG9fanNvbyIsImVuZmFudF9hX2NoYXJnZSIsImVuZmFudF9hX2NoYXJnZV9vZl9qc29vIiwibG9jYXRpb25fdG9fanNvbyIsImxvY2F0aW9uX29mX2pzb28iLCJwZXJzb25uZV9hX2NoYXJnZV90b19qc29vIiwicGVyc29ubmVfYV9jaGFyZ2Vfb2ZfanNvbyIsImNhdGVnb3JpZV9jYWxjdWxfYV9wX2xfdG9fanNvbyIsImNhdGVnb3JpZV9jYWxjdWxfYV9wX2xfb2ZfanNvbyIsImNhdGVnb3JpZV9jYWxjdWxfYV9wX2wiLCJtb2RlX29jY3VwYXRpb25fdG9fanNvbyIsIm1vZGVfb2NjdXBhdGlvbl9vZl9qc29vIiwiZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfJDAiLCJlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV8kMSIsImxvZ2VtZW50X3RvX2pzb28iLCJsb2dlbWVudCIsImxvZ2VtZW50X29mX2pzb28iLCJtZW5hZ2VfdG9fanNvbyIsIm1lbmFnZV9vZl9qc29vIiwiZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfJDIiLCJlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV8kMyIsImVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbSQyIiwiZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtJDMiLCJjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3AkMiIsImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcCQzIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDExIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDEyIiwiY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZvJDIiLCJjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm8kMyIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQxMyIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQxNCIsImNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uXyQyIiwiY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fJDMiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMTUiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMTYiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMTciLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMTgiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2MkMiIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvYyQzIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjJDIiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2MkMyIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveSQyIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95JDMiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbl8iLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbl8kMCIsIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW5fdCIsIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW5fbyIsImltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luX3RvXyIsImltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luX29mXyIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaSQwIiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nJDIiLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2ckMyIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQ4IiwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtJDkiLCJ2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV8kOCIsInZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291XyQ5IiwidmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYV9pJDEiLCJ2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX2kkMiIsInNtaWNfaW5fdG9fanNvbyQwIiwic21pY19pbl9vZl9qc29vJDAiLCJlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGkkMiIsImVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaSQzIiwiY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wJDQiLCJjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm8kNCIsImNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uXyQ0Iiwib3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZSQwIiwiaW1wYXllX2RlcGVuc2VfbG9nZW1lbnQkMCIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQxMCIsInZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291XyQxMCIsInZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2EkMiIsInNtaWMkMiIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQxOSIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQyMCIsImVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaSQ0IiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDIxIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95JDQiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2MkNCIsImVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlXyQ0IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jJDQiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMjIiLCJlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW0kNCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50JDAiLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50JDAiLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2ckNCIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZyIsImludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbCJdLCJzb3VyY2VzIjpbIiIsIi9idWlsdGluLytpbnQ2NC5qcyIsIi9idWlsdGluLyttbEJ5dGVzLmpzIiwiL2J1aWx0aW4vK2ZhaWwuanMiLCIvYnVpbHRpbi8rc3RkbGliLmpzIiwiL2J1aWx0aW4vK2Zvcm1hdC5qcyIsIi9idWlsdGluLytpZWVlXzc1NC5qcyIsIi9idWlsdGluLytmc19ub2RlLmpzIiwiL2J1aWx0aW4vK2ZzLmpzIiwiL2J1aWx0aW4vK3VuaXguanMiLCIvYnVpbHRpbi8rc3lzLmpzIiwiL2J1aWx0aW4vK2ZzX2Zha2UuanMiLCIvYnVpbHRpbi8rbmF0LmpzIiwiL2J1aWx0aW4vK2dyYXBoaWNzLmpzIiwiL2J1aWx0aW4vK21hcnNoYWwuanMiLCIvYnVpbHRpbi8raW8uanMiLCIvYnVpbHRpbi8rZ2MuanMiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL3phcml0aF9zdHVic19qcy9iaWdpbnRlZ2VyLmpzIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi96YXJpdGhfc3R1YnNfanMvcnVudGltZS5qcyIsIi9idWlsdGluLytiaWdhcnJheS5qcyIsIi9idWlsdGluLytqc2xpYi5qcyIsIi9idWlsdGluLytwYXJzaW5nLmpzIiwiL2J1aWx0aW4vK2ludHMuanMiLCIvYnVpbHRpbi8raGFzaC5qcyIsIi9idWlsdGluLytjb21wYXJlLmpzIiwiL2J1aWx0aW4vK2pzbGliX2pzX29mX29jYW1sLmpzIiwiL2J1aWx0aW4vK29iai5qcyIsIi9idWlsdGluLytiaWdzdHJpbmcuanMiLCIvYnVpbHRpbi8rYmFja3RyYWNlLmpzIiwiL2J1aWx0aW4vK2xleGluZy5qcyIsIi9idWlsdGluLythcnJheS5qcyIsIi9idWlsdGluLyt3ZWFrLmpzIiwiL2J1aWx0aW4vK21kNS5qcyIsIi9idWlsdGluLytzdHIuanMiLCIvYnVpbHRpbi8rYmlnc3RyaW5nLWNzdHJ1Y3QuanMiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL3VjaGFyLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9pbnQ2NC5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvbGV4aW5nLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9jYW1saW50ZXJuYWxGb3JtYXQubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL3ByaW50ZXhjLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9maWxlbmFtZS5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvY29tcGxleC5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvY2FtbGludGVybmFsRm9ybWF0QmFzaWNzLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9jYW1saW50ZXJuYWxBdG9taWMubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL3N0ZGxpYi5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvcGVydmFzaXZlcy5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvZmxvYXQubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL3JhbmRvbS5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvbGlzdC5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvaW5fY2hhbm5lbC5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvb3V0X2NoYW5uZWwubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2VpdGhlci5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvbmF0aXZlaW50Lm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9vYmoubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2NhbWxpbnRlcm5hbExhenkubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2xhenkubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL3NlcS5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvb3B0aW9uLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9yZXN1bHQubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2Jvb2wubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2NoYXIubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2J5dGVzLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9pbnQubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL3N0cmluZy5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvdW5pdC5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvbWFyc2hhbC5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvYXJyYXkubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2ludDMyLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9wYXJzaW5nLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9zZXQubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL21hcC5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvc3RhY2subWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL3F1ZXVlLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9zdHJlYW0ubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2J1ZmZlci5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvcHJpbnRmLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9hcmcubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2Z1bi5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvZ2MubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2RpZ2VzdC5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvaGFzaHRibC5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvd2Vhay5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvZm9ybWF0Lm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9zY2FuZi5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvY2FsbGJhY2subWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2NhbWxpbnRlcm5hbE9PLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9jYW1saW50ZXJuYWxNb2QubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL2dlbmxleC5tbCIsIi9ob21lL2xnLy5vcGFtL2xhdGVzdC9saWIvb2NhbWwvZXBoZW1lcm9uLm1sIiwiL2hvbWUvbGcvLm9wYW0vbGF0ZXN0L2xpYi9vY2FtbC9iaWdhcnJheS5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9ydW50aW1lcy9vY2FtbC9ydW50aW1lLm1sIiwiIiwiIiwiL3dvcmtzcGFjZV9yb290L3J1bnRpbWVzL2pzb28vcnVudGltZS5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9mcmVuY2hfbGF3L29jYW1sL2xhd19zb3VyY2UvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9mcmVuY2hfbGF3L29jYW1sL2xhd19zb3VyY2UvYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19hcGlfd2ViLm1sIiwiL3dvcmtzcGFjZV9yb290L2ZyZW5jaF9sYXcvb2NhbWwvbGF3X3NvdXJjZS9haWRlc19sb2dlbWVudC5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9mcmVuY2hfbGF3L29jYW1sL2xhd19zb3VyY2UvYWlkZXNfbG9nZW1lbnRfYXBpX3dlYi5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9mcmVuY2hfbGF3L29jYW1sL2FwaV93ZWIubWwiLCIvaG9tZS9sZy8ub3BhbS9sYXRlc3QvbGliL29jYW1sL3N0ZF9leGl0Lm1sIl0sIm1hcHBpbmdzIjoiOztDQUNDLFNBQVVBO1dBQ0ZDOzs7O0tBQ0xDO09BQ0U7UUFDQztVQUFzQkYsOENBRWhCRztRQUNIQztJQUVSLFNBQVNEO01BQ1AsSUFBSUUsT0FBU0gsUUFBUUk7TUFDckJELG9CQUFvQkE7YUFDYkwsb0JBQ1QsQ0FiRDtHQWNDQTs7OztJQzJORixTQUFTTyxtQkFBbUJDLEdBQUssU0FBUSxVQUFZO0lDekxyRCxTQUFTQyxnQkFBZ0JDLEVBQUdDO01BQzFCLEdBQUdELE9BQVE7TUFDWCxHQUFJQyxTQUFVLE9BQVEsU0FBU0Q7TUFDL0IsSUFBTSxLQUFRO01BQ2Q7T0FBUSxDQUNOLEdBQUlBLE1BQU9FLEtBQUtEO1FBQ2hCRDtRQUNBLEdBQUlBLE9BQVEsT0FBT0U7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VTs7Ozs7OztJd0JuV0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQ2tCS0M7S0FDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0N3QkFDO0tBQ0FDO0tBQ0FDO0tBSUFDO0tBQ0FDOzs7O0tDekJBQztLQW1IQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQ285RU1DO0tBUVFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQ2xsRmRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tDc0VFQztLQUNBQztLQUNBQztLQUNBQzs7O0tBL0VZQztLQW1IWkM7S0FDQUM7S0FDQUM7S0FDQUM7OztLQW1JQUM7S0FDQUM7S0FDQUM7S0FDQUM7OztLQ3hQRkM7S0FDQUM7S0FDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2FDMGZJQzs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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bUJDQ1lDLEtBQU8sTUFBTUEsR0FBdkI7SURERjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNBQTt5QkNDVUMsdUJBQXVCQSxrQkFBbUJDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lERHBEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2VDQ0NBLFdEREQsNkJDQ0NDLEtEREQsSUNDQ0M7SURERDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7dUNDQ0NDLHVCREREOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCQ0NDQyxNREREOzs7Ozs7Ozs7O3lCQ0NDQSxNREREOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ093Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthQVNuQk0sc0JBQXVCQztNQUN6QixPQUR5QkE7O1NBSXJCO2NBSnFCQTs7OztZQUlnQixxQ0FETEM7OztTQUdoQztjQU5xQkQ7Ozs7WUFNZSxxQ0FETEU7OztTQUVKO2NBUE5GOzs7O1lBT2dDLHFDQUEvQkc7OztTQUV0QjtjQVRxQkg7Ozs7WUFTMkIscUNBRE5JOzs7U0FHMUM7Y0FYcUJKOzs7O1lBV2tDLHFDQURMSzswQkFDbUI7SUFwQnBEO2FBNkJuQkMsK0JBQXFDTjtNQUV2QyxPQUZ1Q0E7O1NBSXhCO2NBSndCQTs2QkFJZCxxQ0FBZkM7OztTQUNPO2NBTHNCRDsrQkFLVixxQ0FBakJFOzs7U0FDRztjQU53QkY7NkJBTWIscUNBQWhCRzswQkFBOEI7SUFuQ25CO2FBNENuQkksc0JBQXVCUDtNQUN6QixPQUR5QkE7O1NBR1A7Y0FIT0E7Z0NBR08scUNBQW5CQzs7O1NBQ0s7Y0FKT0Q7Z0NBSU8scUNBQW5CRTs7O1NBQ0M7Y0FMV0Y7NEJBS0QscUNBQWZHOzBCQUE2QjtJQWpEakI7YUF5RG5CSyw0QkFBNkJSO01BQy9CLFNBRCtCQTtPQUdmO1lBSGVBOzRCQUdKLHFDQUFoQkM7O09BRVA7WUFMMkJEOzs7O1VBS2EscUNBRExFOzBCQUNtQjtJQTlEckM7YUE4RW5CTyxtQkFBb0JUO01BQ3RCLE9BRHNCQTs7U0FHRjtjQUhFQTtrQ0FHYSxxQ0FBcEJDOzs7U0FDQztjQUpNRDs4QkFJSyxxQ0FBaEJFOzs7U0FDUztjQUxFRjtrQ0FLYSxxQ0FBcEJHOzs7U0FDSTtjQU5HSDtpQ0FNWSxxQ0FBcEJJOzs7U0FDVztjQVBISjs7a0NBT3dCLHFDQUExQks7OztTQUNDO2NBUkNMO21DQVFlLHFDQUFyQlU7OztTQUNHO2NBVEdWO2lDQVNZLHFDQUFwQlc7OztTQUNpQjtjQVZUWDs7OztZQVVtQyxxQ0FBL0JZOzs7U0FDVDtjQVhLWjsrQkFXTyxxQ0FBakJhOzBCQUErQjtJQXpGdEI7YUErRm5CQywrQkFBdUNkO01BRU47Ozs7O3FEQUZNQTtrQkFHdUI7SUFsRzNDO2FBd0duQmUsK0JBQTRDZjtNQUVqQjs7Ozs7cURBRmlCQTtrQkFHYztJQTNHdkM7YUFpSG5CZ0IsK0JBQW9DaEI7TUFFbEI7Ozs7O3FEQUZrQkE7a0JBRXFDO0lBbkh0RDthQXlIbkJpQixXQUFZakI7TUFDSTs7O3dFQURKQTtrQkFDc0M7SUExSC9CO2FBZ0luQmtCLCtCQUE2Q2xCO01BRWxDOztxRUFGa0NBLFVBRXlCO0lBbEluRDthQXdJbkJtQiwrQkFBd0NuQjtNQUVwQjs7Ozs7cURBRm9CQTtrQkFHVztJQTNJaEM7YUF3Sm5Cb0Isb0JBQXFCcEI7TUFZdUM7Ozs7OytDQVp2Q0E7O09BVWtDOzs7OytDQVZsQ0E7O09BUUMsd0RBUkRBO09BTUc7Ozs7K0NBTkhBOztPQUlTOzs7OytDQUpUQTs7TUFFSjs7Ozs7cURBRklBO3NCQWFrRDtJQXJLcEQ7YUFtTG5CcUIsYUFBY3JCO01BYTRDOzs7OzsrQ0FiNUNBOztPQVd1Qzs7OzsrQ0FYdkNBOztPQVNNLHNEQVROQTtPQU9ROzt1RUFQUkE7O09BS2M7Ozs7K0NBTGRBOztPQUdVOzttRUFIVkE7O01BQ0M7Ozt1RUFEREE7c0JBY2lEO0lBak01QzthQTBNbkJzQiw2QkFBOEJ0QjtNQUlYOztvRUFKV0E7TUFFakI7OztxRUFGaUJBO3NCQUl5QztJQTlNcEQ7YUFvTm5CdUIseUJBQTBCdkI7TUFFVCwrQ0FGU0EsVUFFb0M7SUF0TjNDO2FBaU9uQndCLDZCQUE4QnhCO01BUUQ7Ozs7OytDQVJDQTs7T0FNWjs7aUVBTllBOztPQUlMOzt3RUFKS0E7O01BRWQ7Ozt3RUFGY0E7c0JBU29CO0lBMU8vQjthQWdQbkJ5QiwrQkFBaUN6QjtNQUlmLG9EQUplQTtNQUViOzs7OztxREFGYUE7c0JBS1E7SUFyUHRCO2FBMlBuQjBCLHdDQUFrRyxRQUFJO0lBM1BuRjthQWlRbkJDLDRCQUE2QjNCO01BRWY7Ozs7O3FEQWhGZHFCLGFBOEU2QnJCO2tCQUU2QztJQW5RdkQ7YUFpUm5CNEIsK0JBQWlDNUI7TUFjb0I7Ozs7OytDQWRwQkE7O09BWVI7Ozs7K0NBMUd6QnFCLGFBOEZpQ3JCOztPQVVaOzt3RUFWWUE7O09BUWYsa0RBUmVBO09BTVA7Ozs7K0NBTk9BOztPQUkyQjs7OzsrQ0FKM0JBOztNQUVxQjs7Ozs7cURBRnJCQTtzQkFlMkM7SUFoU3pEO2FBMFNuQjZCLGlDQUErQzdCO01BTWhDOztpRUFOZ0NBO09BSTFCOzt3RUFKMEJBOztNQUUxQjs7Ozs7cURBRjBCQTtzQkFPQztJQWpUN0I7YUEyVG5COEIsaUNBQXVDOUI7TUFNeEI7O21FQU53QkE7T0FJbEI7O3dFQUprQkE7O01BRWxCOzs7OztxREFGa0JBO3NCQU1pQztJQWpVckQ7YUF1VW5CK0IsY0FBZS9CO01BR0csc0RBSEhBO01BQ0s7Ozs7O3FEQURMQTtzQkFHOEM7SUExVTFDO2FBZ1ZuQmdDLGlDQUFnRGhDO01BRTVCOzs7OztxREFGNEJBO2tCQUdVO0lBblZ2QzthQWlXbkJpQyxpQ0FBMkNqQztNQWNZOzs7OzsrQ0FkWkE7O09BWW1COzs7OytDQVpuQkE7O09BVWM7Ozs7K0NBVmRBOztPQVF2QixrREFSdUJBO09BTWY7Ozs7K0NBTmVBOztPQUkxQjs7OzsrQ0E3TWpCb0Isb0JBeU0yQ3BCOztNQUVyQjs7Ozs7cURBRnFCQTtzQkFlNEM7SUFoWHBFLFNBcVhuQmtDLCtCQUFpQ0E7TUFDbkM7UUFJSTs7MEJBWXFCLG1EQUFnQzs7MEJBVGhDLGtEQVF5QztTQVg5RDs7OztTQWNZOztNQWxCNkI7T0FBekNDO1FBQXlDOztnQkFBekNBLDRCQXdCNEI7SUE5WVgsU0FnWm5CQyxtQkFBb0JDO01BQ3RCLElBQUlDLFFBRGtCRDtNQUN0QjtRQUtJOzs7WUEyQmM7O2FBRjhCO2FBSGI7Ozs7Ozs7OzsyQkFiakJFLHFCQUNGQztjQUVDOzt3QkFIQ0Q7d0JBQ0ZDO3VCQURFRDt1QkFDRkMsb0JBV2lEO1lBQzlCLHdEQTNCL0JGLFFBc0M4Qjs7MEJBOUJULGtEQUd3QztTQU43RDs7OztTQW1DWTs7TUF4Q2hCO09BQ0lHO1FBQXlCLDZDQS9OM0JwQjtNQStOMkIsVUFBekJvQixZQTRDd0M7SUE5YnZCLFNBZ2NuQkMsK0JBQXNDQTtNQUN4QztzQkFEd0NBO09BQ3hDLGNBRHdDQTtPQUN4QyxPQUR3Q0E7TUFDeEM7UUFPSTs7O1lBVW9COztxREFqQnBCQyxlQUVBRTtZQWVvQixtREFoQnBCRCxjQWlCc0I7OzBCQVJELGtEQUtWO1NBUlg7Ozs7U0FhWTs7TUFwQmhCO09BR0lFO1FBQStCOztnQkFBL0JBLHNCQXNCc0I7SUExZEwsU0E0ZG5CQyw2QkFBOEJDO01BQ2hDO3NCQURnQ0E7T0FDaEMsY0FEZ0NBO09BQ2hDLE9BRGdDQTtNQUNoQztRQU9JOzs7WUFVbUI7O3FEQWpCbkJMLGVBRUFFO1lBZW1CLG1EQWhCbkJELGNBaUJzQjs7MEJBUkQsa0RBS1Y7U0FSWDs7OztTQWFZOztNQXBCaEI7T0FHSUs7UUFBdUI7O2dCQUF2QkEsY0FxQnNEO0lBcmZyQyxTQXVmbkJDLEtBQU1DO01BQ1Isa0JBRFFBLFdBQ1IsVUFEUUE7TUFDUjtRQUtxQjs7U0FESCw0Q0FKZFA7Ozs7U0FPMEI7O01BTVQ7UUFNckI7VUFJSTs7O2NBS00sc0JBb2Y2Qyw4QkFBZ0I7Y0FwZjdELHNCQW9mb0IsUUFBSztjQXBmekI7Z0JBcWVRO2tCQWNvQixvREFBMkI7Z0JBZC9DO2tCQWFROzhEQTdnQnRCUTttQkE0Z0J5QjttQkFESDswREE1Z0J0QlI7bUJBMmdCbUI7d0VBR2dEO2dCQWJyRDt1RUFjZ0Q7Y0FuZnhEO2dCQTZiUTtrQkFzQ29CLHFEQUE0QjtnQkF0Q2hEO2tCQW1DNkI7OERBM2YzQ1E7bUJBd2YyQywyQ0F4ZjNDQTttQkF1ZndDO21CQUhBLDJDQXBmeENBO21CQW1mcUM7bUJBRkEsMkNBamZyQ0E7bUJBZ2ZrQzttQkFGQSwyQ0E5ZWxDQTttQkE2ZStCO21CQUZBLDJDQTNlL0JBO21CQTBlNEI7bUJBRkEsMkNBeGU1QkE7bUJBdWV5QjttQkFEQSwyQ0F0ZXpCQTttQkFxZXNCO21CQURHO21CQURIOzBEQXBldEJSO21CQW1lbUI7eUVBMkIyQztnQkFyQ2hEO3dFQXNDaUQ7Y0FuZXpEO2dCQTBhUTtrQkFpQm9CLG9EQUEyQjtnQkFqQi9DO2tCQWdCVzs4REFyZHpCUTttQkFvZDRCO21CQURIOzBEQXBkekJSO21CQW1kc0I7bUJBREc7bUJBREg7MERBamR0QkE7bUJBZ2RtQjt5RUFNb0Q7Z0JBaEJ6RDt3RUFpQmdEO2NBM2J4RDtnQkE4WFE7a0JBMENvQixxREFBNEI7Z0JBMUNoRDtrQkF1Q2dDOzhEQWhjOUNRO21CQTZiOEMsMkNBN2I5Q0E7bUJBNGIyQzttQkFIQSwyQ0F6YjNDQTttQkF3YndDO21CQUZBLDJDQXRieENBO21CQXFicUM7bUJBRkEsMkNBbmJyQ0E7bUJBa2JrQzttQkFGQSwyQ0FoYmxDQTttQkErYStCO21CQUZBLDJDQTdhL0JBO21CQTRhNEI7bUJBRkEsMkNBMWE1QkE7bUJBeWF5QjttQkFERzttQkFESDswREF4YXpCUjttQkF1YXNCO21CQURHO21CQURIOzBEQXJhdEJBO21CQW9hbUI7eUVBK0IrQztnQkF6Q3BEO3dFQTBDaUQ7Y0F4YXpEO2dCQTJXUTtrQkFpQm9CLG9EQUEyQjtnQkFqQi9DO2tCQWdCVzs4REF0WnpCUTttQkFxWjRCO21CQURIOzBEQXJaekJSO21CQW9ac0I7bUJBREc7bUJBREg7MERBbFp0QkE7bUJBaVptQjt5RUFNb0Q7Z0JBaEJ6RDt3RUFpQmdEO2NBNVh4RDtnQkErVFE7a0JBMENvQixxREFBNEI7Z0JBMUNoRDtrQkF1Q2dDOzhEQWpZOUNRO21CQThYOEMsMkNBOVg5Q0E7bUJBNlgyQzttQkFIQSwyQ0ExWDNDQTttQkF5WHdDO21CQUZBLDJDQXZYeENBO21CQXNYcUM7bUJBRkEsMkNBcFhyQ0E7bUJBbVhrQzttQkFGQSwyQ0FqWGxDQTttQkFnWCtCO21CQUZBLDJDQTlXL0JBO21CQTZXNEI7bUJBRkEsMkNBM1c1QkE7bUJBMFd5QjttQkFERzttQkFESDswREF6V3pCUjttQkF3V3NCO21CQURHO21CQURIOzBEQXRXdEJBO21CQXFXbUI7eUVBK0IrQztnQkF6Q3BEO3dFQTBDaUQ7Y0F6V3pEO2dCQTRTUTtrQkFpQm9CLG9EQUEyQjtnQkFqQi9DO2tCQWdCVzs4REF2VnpCUTttQkFzVjRCO21CQURIOzBEQXRWekJSO21CQXFWc0I7bUJBREc7bUJBREg7MERBblZ0QkE7bUJBa1ZtQjt5RUFNb0Q7Z0JBaEJ6RDt3RUFpQmdEO2NBN1R4RDtnQkFnUVE7a0JBMENvQixxREFBNEI7Z0JBMUNoRDtrQkF1Q2dDOzhEQWxVOUNRO21CQStUOEMsMkNBL1Q5Q0E7bUJBOFQyQzttQkFIQSwyQ0EzVDNDQTttQkEwVHdDO21CQUZBLDJDQXhUeENBO21CQXVUcUM7bUJBRkEsMkNBclRyQ0E7bUJBb1RrQzttQkFGQSwyQ0FsVGxDQTttQkFpVCtCO21CQUZBLDJDQS9TL0JBO21CQThTNEI7bUJBRkEsMkNBNVM1QkE7bUJBMlN5QjttQkFERzttQkFESDswREExU3pCUjttQkF5U3NCO21CQURHO21CQURIOzBEQXZTdEJBO21CQXNTbUI7eUVBK0IrQztnQkF6Q3BEO3dFQTBDaUQ7Y0ExU3pEO2dCQTZPUTtrQkFpQm9CLG9EQUEyQjtnQkFqQi9DO2tCQWdCVzs4REF4UnpCUTttQkF1UjRCO21CQURIOzBEQXZSekJSO21CQXNSc0I7bUJBREc7bUJBREg7MERBcFJ0QkE7bUJBbVJtQjt5RUFNb0Q7Z0JBaEJ6RDt3RUFpQmdEO2NBOVB4RDtnQkFpTVE7a0JBMENvQixxREFBNEI7Z0JBMUNoRDtrQkF1Q2dDOzhEQW5ROUNRO21CQWdROEMsMkNBaFE5Q0E7bUJBK1AyQzttQkFIQSwyQ0E1UDNDQTttQkEyUHdDO21CQUZBLDJDQXpQeENBO21CQXdQcUM7bUJBRkEsMkNBdFByQ0E7bUJBcVBrQzttQkFGQSwyQ0FuUGxDQTttQkFrUCtCO21CQUZBLDJDQWhQL0JBO21CQStPNEI7bUJBRkEsMkNBN081QkE7bUJBNE95QjttQkFERzttQkFESDswREEzT3pCUjttQkEwT3NCO21CQURHO21CQURIOzBEQXhPdEJBO21CQXVPbUI7eUVBK0IrQztnQkF6Q3BEO3dFQTBDaUQ7Y0EzT3pEO2dCQThLUTtrQkFpQm9CLG9EQUEyQjtnQkFqQi9DO2tCQWdCVzs4REF6TnpCUTttQkF3TjRCO21CQURIOzBEQXhOekJSO21CQXVOc0I7bUJBREc7bUJBREg7MERBck50QkE7bUJBb05tQjt5RUFNb0Q7Z0JBaEJ6RDt3RUFpQmdEO2NBL0x4RDtnQkFrSVE7a0JBMENvQixxREFBNEI7Z0JBMUNoRDtrQkF1Q2dDOzhEQXBNOUNRO21CQWlNOEMsMkNBak05Q0E7bUJBZ00yQzttQkFIQSwyQ0E3TDNDQTttQkE0THdDO21CQUZBLDJDQTFMeENBO21CQXlMcUM7bUJBRkEsMkNBdkxyQ0E7bUJBc0xrQzttQkFGQSwyQ0FwTGxDQTttQkFtTCtCO21CQUZBLDJDQWpML0JBO21CQWdMNEI7bUJBRkEsMkNBOUs1QkE7bUJBNkt5QjttQkFERzttQkFESDswREE1S3pCUjttQkEyS3NCO21CQURHO21CQURIOzBEQXpLdEJBO21CQXdLbUI7eUVBK0IrQztnQkF6Q3BEO3dFQTBDaUQ7Y0E1S3pEO2dCQStHUTtrQkFpQm9CLG9EQUEyQjtnQkFqQi9DO2tCQWdCVzs4REExSnpCUTttQkF5SjRCO21CQURIOzBEQXpKekJSO21CQXdKc0I7bUJBREc7bUJBREg7MERBdEp0QkE7bUJBcUptQjt5RUFNb0Q7Z0JBaEJ6RDt3RUFpQmdEO2NBaEl4RDtnQkFtRVE7a0JBMENvQixxREFBNEI7Z0JBMUNoRDtrQkF1Q2dDOzhEQXJJOUNRO21CQWtJOEMsMkNBbEk5Q0E7bUJBaUkyQzttQkFIQSwyQ0E5SDNDQTttQkE2SHdDO21CQUZBLDJDQTNIeENBO21CQTBIcUM7bUJBRkEsMkNBeEhyQ0E7bUJBdUhrQzttQkFGQSwyQ0FySGxDQTttQkFvSCtCO21CQUZBLDJDQWxIL0JBO21CQWlINEI7bUJBRkEsMkNBL0c1QkE7bUJBOEd5QjttQkFERzttQkFESDswREE3R3pCUjttQkE0R3NCO21CQURHO21CQURIOzBEQTFHdEJBO21CQXlHbUI7eUVBK0IrQztnQkF6Q3BEO3dFQTBDaUQ7Y0E3R3pEO2dCQWdEUTtrQkFpQm9CLG9EQUEyQjtnQkFqQi9DO2tCQWdCVzs4REEzRnpCUTttQkEwRjRCO21CQURIOzBEQTFGekJSO21CQXlGc0I7bUJBREc7bUJBREg7MERBdkZ0QkE7bUJBc0ZtQjt5RUFNb0Q7Z0JBaEJ6RDt3RUFpQmdEO2NBakV4RDs7OzttQkFJUTtxQkEwQ29CLHFEQUE0QjttQkExQ2hEO3FCQXVDZ0M7aUVBdEU5Q1E7c0JBbUU4QywyQ0FuRTlDQTtzQkFrRTJDO3NCQUhBLDJDQS9EM0NBO3NCQThEd0M7c0JBRkEsMkNBNUR4Q0E7c0JBMkRxQztzQkFGQSwyQ0F6RHJDQTtzQkF3RGtDO3NCQUZBLDJDQXREbENBO3NCQXFEK0I7c0JBRkEsMkNBbkQvQkE7c0JBa0Q0QjtzQkFGQSwyQ0FoRDVCQTtzQkErQ3lCO3NCQURHO3NCQURIOzZEQTlDekJSO3NCQTZDc0I7c0JBREc7c0JBREg7NkRBM0N0QkE7c0JBMENtQjs0RUErQitDO21CQXpDcEQ7MkVBMENpRDs7Ozs7Ozs7Ozs7Ozs7OztjQTlDekQ7d0VBb2Y4RDtpQ0F0Zi9DLFFBQUk7V0FIekI7Ozs7V0EyZlk7O1FBL2ZXO1NBQXZCUztVQUF1Qjs7Ozs7O2tCQUF2QkE7TUFMWSx1Q0F3Z0JtQjtJQTlnQ2QsU0FnaENuQkMsK0JBQXVDQTtNQUN6QyxJQUFJVixjQURxQ1U7TUFDekM7UUFJcUI7O1NBREgsNENBSGRWOzs7O1NBTTBCOztNQUtUO1FBS3JCO1VBSUk7OztjQUtNLHNCQWdGNkMsOEJBQWdCO2NBaEY3RCxzQkFnRm9CLFFBQUs7Y0FoRnpCO2dCQW9FUTtrQkFXb0Isc0RBQTZCO2dCQVhqRDtrQkFVUTs7bUJBREg7MERBdEduQkE7a0JBc0dtQix1REFDcUM7Z0JBVjFDO3dFQVdrRDtjQS9FMUQ7Z0JBb0RRO2tCQWNvQixzREFBNkI7Z0JBZGpEO2tCQWFXOzttQkFESDswREF6RnRCQTttQkF3RnlCO21CQURIOzBEQXZGdEJBO21CQXNGbUI7eUVBSXlDO2dCQWI5Qzt3RUFja0Q7Y0FsRTFEO2dCQW9DUTtrQkFjb0Isc0RBQTZCO2dCQWRqRDtrQkFhVzs7bUJBREg7MERBekV0QkE7bUJBd0V5QjttQkFESDswREF2RXRCQTttQkFzRW1CO3lFQUl5QztnQkFiOUM7d0VBY2tEO2NBbEQxRDtnQkFvQlE7a0JBY29CLHNEQUE2QjtnQkFkakQ7a0JBYVc7O21CQURIOzBEQXpEdEJBO21CQXdEeUI7bUJBREg7MERBdkR0QkE7bUJBc0RtQjt5RUFJeUM7Z0JBYjlDO3dFQWNrRDtjQWxDMUQ7Ozs7bUJBSVE7cUJBY29CLHNEQUE2QjttQkFkakQ7cUJBYVc7O3NCQURIOzZEQXpDdEJBO3NCQXdDeUI7c0JBREg7NkRBdkN0QkE7c0JBc0NtQjs0RUFJeUM7bUJBYjlDOzJFQWNrRDs7Ozs7Y0FsQjFEO3dFQWdGOEQ7aUNBbEYvQyxRQUFJO1dBSHpCOzs7O1dBdUZZOztRQTNGTTtTQUFsQlc7VUFBa0I7Ozs7OztrQkFBbEJBO01BSlksdUNBbUd1QztJQWhvQ2xDLFNBa29DbkJDLHVCQUF3QkM7TUFDMUI7cUJBRDBCQTtPQUMxQixVQUQwQkE7TUFDMUI7UUFNSTs7MEJBWXFCLG1EQUFnQzs7MEJBVGhDLG1EQVF5QztTQVg5RDs7OztTQWNZOztNQXBCaEI7T0FFSUM7UUFBMEI7OztRQTJCMUI7K0JBUXFCLE9BckNyQmQsYUFxQ21DOzswQkFMZCxtREFJNkM7U0FQbEU7U0FIRTs7Ozs7Ozs7OztTQWFVOztNQUtoQjtRQUlJOytCQVFxQixPQXZEckJRLFNBdUQrQjs7MEJBTFYsbURBSTZDO1NBUGxFO1NBSEU7O2dEQWxtQ0ozQzs7OztTQSttQ2M7O01BMURoQjtPQWlFaUQ7O1VBREosMENBNXNCM0N5QzthQXFxQkVTLHVCQW1CQUM7T0FtQmtCOzZCQUFsQkM7TUFBa0I7UUFVbEI7K0JBa0NxQixRQUFLOzswQkFMTCxtREFJNkM7Ozs7YUE3QnpELHNCQXdCb0IsUUFBSTthQXhCeEI7ZUFzQm9COzJEQWxHN0JUO2dCQWdHNkIsMkNBaEc3QkE7Z0JBK0YwQjtnQkFEQSwyQ0E5RjFCQTtnQkE2RnVCO2dCQURBLDJDQTVGdkJBO2dCQTJGb0I7Z0JBREcsMkNBMUZ2QkE7Z0JBMEZpQjtnQkFERywyQ0F6RnBCQTtnQkF5RmM7c0VBVXNEO2FBdkIzRCxpRUF3QnlCO1NBNUJsQzs7OztTQW9DWTs7TUE3R2hCO09BcUVJVztRQUFpQzs7O1FBaURqQzs7O1lBbUN1Qzs7YUFBNUI7YUFESDs7MkNBcEZSRDtZQW9GUSx5REFDeUQ7OzBCQVo1QyxtREFReUM7Ozs7YUEzQnJEO2VBa0JPOztnQkFERztnQkFESDs7OENBdEVoQkE7ZUFzRWdCLHlEQUUwQjthQWxCakM7ZUFHb0I7dURBeEQ3QkMsd0JBa0V1QzthQWI5QixpRUFrQmtDO1NBdEIzQzs7OztTQXFDWTs7TUEzSmhCO09Ba0hJQztRQUEyQjs7cUJBaUR2QkM7UUFDSDtVQUNFO2lDQWtEcUIsUUFBSzs7O2NBTEwsbURBSTZDOzs7O2VBN0N6RCxzQkF3Q21ELFFBQUk7ZUF4Q3ZEO2lCQXNDUTs7O2dEQTVDaEJBLFVBakRKRDtpQkE2Rm9CLE9BNUNoQkM7Ozs7Ozs7O2lCQTRDZ0IsVUFqQkc7d0JBM0JuQkE7Ozs7aUJBNENnQjtrQkF4QkE7a0JBREg7d0VBMkIwQjtlQXhDL0I7dUVBd0N3RDtXQTVDakU7Ozs7O1dBb0RZO1VBNUZjLFlBZ0dLO01BN0RPO09BQXpDQztRQUF5Qzs7cUJBaUVyQ0Q7UUFDSDtVQUNFO2lDQTZHcUIsUUFBSzs7O2NBTEwsbURBSTZDOzs7O2VBeEd6RDtpQkF3Qkssc0JBMkVvQiw4QkFBZ0I7aUJBM0VwQyxzQkEwRW9CLFFBQUs7aUJBMUV6Qjs7OztzQkFJUSxzQkFxRXlDLFFBQUk7c0JBckU3Qzt3QkF5Q29CLE9BM0V6Q0E7Ozs7Ozs7O3dCQXFGMEI7K0VBa0JnQjtzQkFyRXJCOzs7OzJCQUtRLHNCQW1Db0IsUUFBSTsyQkFuQ3hCOzZCQStCYzs7OzZEQXRFM0NBLFVBL05KUDs4QkFvUzRDOzJFQXRTNUNkOzhCQW1TNEM7OzREQWxFeENxQixVQS9HSkQ7OEJBZ0x5QztvQ0FqRXJDQzs7Ozs2QkFzRTJDLFVBZlQ7b0ZBa0IyQjsyQkFsQ2hDO21GQW1DeUI7c0JBeENqQztnRkFxRThDO2lCQXpFdEQ7MkVBMkVxQztlQW5HMUMsc0JBc0JvQixRQUFJO2VBdEJ4Qjs7OztvQkFJUSxzQkFpQm9CLFFBQUs7b0JBakJ6QjtzQkFJb0IsaURBZHBDQSxVQTBCMEY7b0JBaEIxRTs0RUFpQjBCO2VBckJsQzt5RUFtRzJDO1dBdkdwRDs7Ozs7V0ErR1k7VUF0S2lCLFlBMEtFO01BeEhBO09BQWxDRTtRQUFrQzs7O2NBQWxDQTtjQTlEQUQ7Y0E5SkFSO2NBbUVBSyx3QkFxUndFO0lBNzlDdkQsU0ErOUNuQkssdUJBQXdCQztNQUMxQjtzQ0FEMEJBO09BQzFCLGlDQUQwQkE7T0FDMUIsa0JBRDBCQTtPQUMxQixVQUQwQkE7T0FDMUIsY0FEMEJBO09BQzFCLGlCQUQwQkE7T0FDMUIsK0JBRDBCQTtNQUMxQixlQVVRSjtRQUNIO1VBQ0U7OztjQUtNLHNCQStJNkMsOEJBQWdCO2NBL0k3RCxzQkErSW9CLFFBQUs7Y0EvSXpCO2dCQTBEUSxzQkFvRm9CLFdBQXlCO2dCQXBGN0M7a0JBK0RvQixPQWhJakNBOzs7Ozs7eUVBb0o4QjtnQkFuRmpCOzs7O3FCQUlRLHNCQTBEb0IsV0FBeUI7cUJBMUQ3Qzt1QkFvQ29CLE9Bekd6Q0E7Ozs7Ozs4RUE4SHNDO3FCQXpEakI7Ozs7MEJBS1Esc0JBOEJLLFdBQXlCOzBCQTlCOUI7NEJBTUssT0FoRmxDQTs7Ozs7O21GQXNHOEM7MEJBNUJqQjtrRkE4QitCO3FCQW5DdkM7K0VBMEQ4QztnQkE5RHREOzBFQW9GOEM7Y0E5SXREO2dCQStCUSxzQkF5Qm9CLFdBQXFCO2dCQXpCekM7a0JBSW9CLE9BMUNqQ0E7Ozs7Ozt5RUE4RDZCO2dCQXhCaEI7d0VBeUIwQztjQXhEbEQ7Ozs7bUJBSVEsc0JBeUJvQixXQUF5QjttQkF6QjdDO3FCQUlvQixPQWZqQ0E7Ozs7Ozs0RUFtQzhCO21CQXhCakI7MkVBeUI4Qzs7O2NBN0J0RDt3RUErSThEO2lDQWpKL0MsUUFBSTtXQUh6Qjs7Ozs7V0FzSlk7VUFsS25CLFlBc0tzQztNQS9KYztPQUFoRFU7UUFBZ0Q7O3FCQW1LNUNWO1FBQ0g7VUFDRTs7O2NBS00sc0JBMko2Qyw4QkFBZ0I7Y0EzSjdELHNCQTJKb0IsUUFBSztjQTNKekI7Z0JBaUNRLHNCQXlIb0IsV0FBOEI7Z0JBekhsRDtrQkFvR29CLE9BNUlqQ0E7Ozs7Ozt5RUFnSzhCO2dCQXhIakI7Ozs7cUJBSVEsc0JBK0ZLLFdBQThCO3FCQS9GbkM7dUJBd0VvQixPQXBIekNBOzs7Ozs7OEVBeUlzQztxQkE3RmpCOzs7OzBCQUtRLHNCQWtFSyxXQUE4QjswQkFsRW5DOzRCQTBDSyxPQTNGbENBOzs7Ozs7bUZBaUg4QzswQkFoRWpCOzs7OytCQU1RLHNCQWlDSyxXQUNJOytCQWxDVDtpQ0FRSyxPQS9EMUNBOzs7Ozs7d0ZBc0ZzRDsrQkEvQmpCO3VGQWtDVTswQkF4Q2xCO29GQWtFb0M7cUJBdkU1QzsrRUErRm9DO2dCQW5HNUM7MEVBeUhtRDtjQTFKM0Q7Ozs7bUJBSVEsc0JBMEJLLFdBQ0k7bUJBM0JUO3FCQUlvQixPQWZqQ0E7Ozs7Ozs0RUFtQzZCO21CQXhCaEI7MkVBMkJVOztjQS9CbEI7d0VBMko4RDtpQ0E3Si9DLFFBQUk7V0FIekI7Ozs7O1dBa0tZO1VBL1RTLFlBbVVVO01BM0tlO09BQWpEVztRQUFpRDs7O1FBZ0xqRDs7MEJBWXFCLGtEQUFxQjs7MEJBVHJCLG1EQVF5QztTQVg5RDs7OztTQWNZOztNQTlMcUM7T0E0S2pEQztRQUEyQzs7O1FBMkIzQzs7O1lBWXFCLG9EQUFxQjs7MEJBVHJCLG1EQVF5QztTQVg5RDs7OztTQWNZOztNQXJOcUM7T0FtTU47OztPQTJCc0I7O1VBRi9COzJDQTkrQ3BDM0M7O09BNCtDNkM7c0NBQTNDMkI7TUFBMkM7UUFXdkI7OytDQTVZcEJTO1NBMllpQjs7NENBMVlqQkM7U0F5WWM7O3NDQTFZZEQ7Ozs7U0FnWjBCOztNQVVUO1FBVXJCO1VBSUk7aUNBUXFCLE9BNWFyQjFCLGFBNGFtQzs7O2NBTGQsbURBSTZDO1dBUGxFO1dBSEU7Ozs7Ozs7Ozs7V0FhVTs7UUFTd0I7OztZQUZyQzs2Q0F6NEJEVTtlQW8zQkUwQjtTQW1CZ0Q7MEJBQWhEQztRQUFnRDtVQVloRDtpQ0FRcUIsT0F2Y3JCckMsYUF1Y21DOzs7Y0FMZCxtREFJNkM7V0FQbEU7V0FIRTs7Ozs7Ozs7OztXQWFVOztRQUtoQjtVQUlJO2lDQVFxQixPQTNkckJRLFNBMmQrQjs7O2NBTFYsbURBSTZDO1dBUGxFO1dBSEU7O2tEQXIyREozQzs7OztXQWszRGM7O1FBckN3QjtTQThDWTs7WUFGdEIsMENBcjBCNUIrQztlQTZ4QkUyQiwrQkFtQkFDO1NBbUJtQzt3Q0FBbkNDO1NBQW1DLCtCQUFuQ0E7U0FBbUMsK0JBQW5DQTtTQUFtQywrQkFBbkNBO1FBQW1DO1VBaUJuQztpQ0FPcUIsT0F4ZnJCWixnQkF3ZnNDOzs7Y0FKakIsbURBR3dDO1dBTjdEO1dBRHNDLDJDQWx5RHhDcEQ7V0FneURJOzs7OztXQVlVOztRQXBFd0I7U0E0RW5COztZQUZsQiwwQ0FybEREZTtlQWtrREVzRDtTQWlCNkI7d0NBQTdCQztTQUE2QjttQkFVekIxQjtZQUNIO2NBQ0U7OztrQkFpQ3FCLG1EQUFnQzs7O2tCQVRoQyxtREFReUM7Ozs7bUJBNUJyRDtxQkFtQkssT0EvSmpCYyw4QkErSm9FO21CQW5CeEQ7cUJBaUJROztzQkFERztzQkFGSDs4REFwQmhCZDtzQkFtQmE7NEVBSXNDO21CQWpCM0M7MkVBbUJ5RDtlQXZCbEU7Ozs7OztlQW1DWTtjQXpETSxZQTZEYTtTQTVDbUI7Ozs7Ozs7O1VBa0RyRDs7O2NBYU0sZUFDUUE7Z0JBT0g7Ozt3REE5M0RiNUMsYUF1M0RnQjRDO2lCQU1zQzs7b0JBRHhDOzs7c0JBakdacUI7O2lCQThGVzs7Ozs7Ozt1RUFRYTtjQVhsQjt1REFwa0JOYixpQkEra0IyQzs7O2NBckJ0QixtREFReUM7V0FYOUQ7Ozs7V0EwQlk7O1FBM0p3QjtTQStIRiwyQ0F2MkRwQ3BEO1NBbzJEd0U7OzttQkF1Q2xFNEM7WUFDSDtjQUNFOzs7a0JBUU07OzJCQS9GVDJCOzJCQXFGSTNCLE9BVXFEOzs7a0JBTGpDLG1EQUd3QztlQU43RDs7Ozs7O2VBVVk7Y0EzQ00sWUErQ2E7U0FuQlU7Ozs7Ozs7O1VBd0I1Qzs7O2NBNEhjOzs7NENBeExkNEI7ZUF1TFc7ZUFEYTtlQUFoQjtlQURZO3NFQUltRDs7O2NBZGxELG1EQVF5Qzs7OztlQW5IckQ7aUJBS0ssc0JBcUdvQiw4QkFBZ0I7aUJBckdwQyxzQkFvR29CLFFBQUs7aUJBcEd6QjttQkE0RVE7cUJBc0JhOzs7bURBdktuQ0E7c0JBc0tnQztzQkFGYTtzQkFBaEI7c0JBRlk7NkVBTW1EO21CQXZCdEU7cUJBZVc7O3NCQURIOzZEQWx0QjlCakQ7c0JBaXRCaUM7c0JBREg7NkRBaHRCOUJBO3NCQStzQjJCOzRFQUkyQzttQkFmaEQ7MkVBdUJ1RTtpQkFuRy9FO21CQW9EUTtxQkFxQmE7OzttREE5SW5DaUQ7c0JBNklnQztzQkFGYTtzQkFBaEI7c0JBRlk7NkVBTW1EO21CQXRCdEU7cUJBY1c7O3NCQURIOzZEQXpyQjlCakQ7c0JBd3JCaUM7c0JBREg7NkRBdnJCOUJBO3NCQXNyQjJCOzRFQUkyQzttQkFkaEQ7MkVBc0J1RTtpQkExRS9FO21CQTRCUTtxQkFxQmE7OzttREF0SG5DaUQ7c0JBcUhnQztzQkFGYTtzQkFBaEI7c0JBRlk7NkVBTW1EO21CQXRCdEU7cUJBY1c7O3NCQURIOzZEQWpxQjlCakQ7c0JBZ3FCaUM7c0JBREg7NkRBL3BCOUJBO3NCQThwQjJCOzRFQUkyQzttQkFkaEQ7MkVBc0J1RTtpQkFsRC9FOzs7O3NCQUlRO3dCQXFCYTs7O3NEQTlGbkNpRDt5QkE2RmdDO3lCQUZhO3lCQUFoQjt5QkFGWTtnRkFNbUQ7c0JBdEJ0RTt3QkFjVzs7eUJBREg7Z0VBem9COUJqRDt5QkF3b0JpQzt5QkFESDtnRUF2b0I5QkE7eUJBc29CMkI7K0VBSTJDO3NCQWRoRDs4RUFzQnVFOzs7O2lCQTFCL0U7MkVBcUdxQztlQTFHMUMsc0JBR29CLFFBQUk7ZUFIeEI7dUVBMEcyQztXQTlHcEQ7Ozs7V0ErSFk7O1FBdlR3QjtTQW9McENtRDtVQUE4Qjs7Ozs7OztVQTRJOUI7OztjQTRIYzs7OzRDQWhVZEY7ZUErVFc7ZUFEYTtlQUFoQjtlQURZO3NFQUltRDs7O2NBZGxELG1EQVF5Qzs7OztlQW5IckQ7aUJBS0ssc0JBcUdvQiw4QkFBZ0I7aUJBckdwQyxzQkFvR29CLFFBQUs7aUJBcEd6QjttQkE0RVE7cUJBc0JhOzs7bURBL1NuQ0E7c0JBOFNnQztzQkFGYTtzQkFBaEI7c0JBRlk7NkVBTW1EO21CQXZCdEU7cUJBZVc7O3NCQURIOzZEQTExQjlCakQ7c0JBeTFCaUM7c0JBREg7NkRBeDFCOUJBO3NCQXUxQjJCOzRFQUkyQzttQkFmaEQ7MkVBdUJ1RTtpQkFuRy9FO21CQW9EUTtxQkFxQmE7OzttREF0Um5DaUQ7c0JBcVJnQztzQkFGYTtzQkFBaEI7c0JBRlk7NkVBTW1EO21CQXRCdEU7cUJBY1c7O3NCQURIOzZEQWowQjlCakQ7c0JBZzBCaUM7c0JBREg7NkRBL3pCOUJBO3NCQTh6QjJCOzRFQUkyQzttQkFkaEQ7MkVBc0J1RTtpQkExRS9FO21CQTRCUTtxQkFxQmE7OzttREE5UG5DaUQ7c0JBNlBnQztzQkFGYTtzQkFBaEI7c0JBRlk7NkVBTW1EO21CQXRCdEU7cUJBY1c7O3NCQURIOzZEQXp5QjlCakQ7c0JBd3lCaUM7c0JBREg7NkRBdnlCOUJBO3NCQXN5QjJCOzRFQUkyQzttQkFkaEQ7MkVBc0J1RTtpQkFsRC9FOzs7O3NCQUlRO3dCQXFCYTs7O3NEQXRPbkNpRDt5QkFxT2dDO3lCQUZhO3lCQUFoQjt5QkFGWTtnRkFNbUQ7c0JBdEJ0RTt3QkFjVzs7eUJBREg7Z0VBanhCOUJqRDt5QkFneEJpQzt5QkFESDtnRUEvd0I5QkE7eUJBOHdCMkI7K0VBSTJDO3NCQWRoRDs4RUFzQnVFOzs7O2lCQTFCL0U7MkVBcUdxQztlQTFHMUMsc0JBR29CLFFBQUk7ZUFIeEI7dUVBMEcyQztXQTlHcEQ7Ozs7V0ErSFk7O1FBL2J3QjtTQTRUcENvRDtVQUE0Qjs7Ozs7OztVQTRJNUI7aUNBd0NxQixRQUFLOzs7Y0FMTCxtREFJNkM7Ozs7ZUFuQ3pELHNCQThCb0IsUUFBSTtlQTlCeEI7aUJBeUJvQixtREFJd0M7ZUE3QjVEOzs7O29CQUlRLHNCQW9Cb0IsUUFBSztvQkFwQnpCO3NCQW1CVzs7dUJBRkE7O29EQXJXNUJIO3VCQW9XeUI7dUJBRkg7OzswQkF4YXRCSjs7c0JBd2FzQix1REFLZ0M7b0JBbkJyQzs0RUFvQjBCO2VBeEJsQzt5RUE4QnlCO1dBbENsQzs7OztXQTBDWTs7UUFsZndCO1NBb2NIOzs7Ozs7OzttQkFzRDdCeEI7WUFDSDtjQUNFO3FDQTJFcUIsUUFBSzs7O2tCQU5MLG1EQUs2Qzs7OzttQkF0RXpELHNCQWdFb0IsUUFBSTttQkFoRXhCO3FCQTJEYzs7OzZEQW55RTVCNUMsYUFrdUVNNEM7c0JBZ0VzRTs7eUJBSGxDOzs7MkJBbmdCeENzQjs7c0JBK2YwQjs7Ozs7OztzQkFIQTtzQkFGSCwyQ0FwRG5CdEI7c0JBbURzQjtzQkFKRzs7Ozt5QkEvQ3pCQTt5QkFyY0p1QjtzQkFtZjBCO21FQS85QjFCNUM7c0JBODlCdUI7c0JBREg7c0JBRmUsMkNBMTlCbkM2QjtzQkEwOUJvQjs7Ozt5QkFybkJwQks7c0JBb25CaUI7NEVBNEIwQzttQkEvRC9DOzs7O3dCQUlRLHNCQW9Cb0IsUUFBSzt3QkFwQnpCOzBCQW1CVzs7MkJBRkE7O3dEQXpaL0JlOzJCQXdaNEI7MkJBRkg7Ozs4QkE1ZHpCSjs7MEJBNGR5Qix1REFLZ0M7d0JBbkJyQztnRkFvQjBCO21CQXhCbEM7NkVBZ0V5QjtlQXBFbEM7Ozs7OztlQTZFWTtjQXJIc0IsWUF5SEg7U0F0Rlk7Ozs7Ozs7O1VBNEY5Qzs7O2NBZVc7O2VBRkE7OzRDQXBlWEk7Y0FtZVE7Z0JBV1M7O2lCQUZBOzs4Q0E1ZWpCQTtpQkEyZWM7aUJBREg7aUJBREc7aUJBREg7OytDQWptQlhYO2dCQWltQlc7Y0FPSCxvREFBMkI7OztjQXJCZCxtREFNVjtXQVRYOzs7O1dBMEJZOztRQTdtQndCO1NBOGtCcENpQjtVQUFnRTs7Ozs7OztVQXlDaEU7OztjQTRUVzs7ZUFGQTs7NENBcnpCWE47Y0FvekJRO2dCQUlrQzs7b0RBajdCMUNYO2NBazdCYSxvREFBMkI7OztjQWRuQixtREFNVjs7OztlQWxURjtpQkFLSyxzQkFzU29CLDhCQUFnQjtpQkF0U3BDLHNCQXFTb0IsUUFBSztpQkFyU3pCO21CQXlRUTtxQkF3QlU7O3NCQUZBOzttREFueUJoQ1c7cUJBa3lCNkI7dUJBS0c7OzJEQWg2QmhDWDtxQkFpNkI2QixvREFBMkI7bUJBM0JsQztxQkFrQmM7O3NCQURIOzZEQWoxQ2pDdEM7c0JBZzFDb0M7c0JBREg7NkRBLzBDakNBO3NCQTgwQzhCO3NCQUZBLDJDQTcwQzlCUTtzQkE0MEMyQjs0RUFPK0M7bUJBbEJwRDsyRUEyQm1DO2lCQXBTM0M7bUJBNE9RO3FCQXdCVTs7c0JBRkE7O21EQXR3QmhDeUM7cUJBcXdCNkI7dUJBS0c7OzJEQW40QmhDWDtxQkFvNEI2QixvREFBMkI7bUJBM0JsQztxQkFrQmM7O3NCQURIOzZEQXB6Q2pDdEM7c0JBbXpDb0M7c0JBREg7NkRBbHpDakNBO3NCQWl6QzhCO3NCQUZBLDJDQWh6QzlCUTtzQkEreUMyQjs0RUFPK0M7bUJBbEJwRDsyRUEyQm1DO2lCQXZRM0M7bUJBK01RO3FCQXdCVTs7c0JBRkE7O21EQXp1QmhDeUM7cUJBd3VCNkI7dUJBS0c7OzJEQXQyQmhDWDtxQkF1MkI2QixvREFBMkI7bUJBM0JsQztxQkFrQmM7O3NCQURIOzZEQXZ4Q2pDdEM7c0JBc3hDb0M7c0JBREg7NkRBcnhDakNBO3NCQW94QzhCO3NCQUZBLDJDQW54QzlCUTtzQkFreEMyQjs0RUFPK0M7bUJBbEJwRDsyRUEyQm1DO2lCQTFPM0M7bUJBa0xRO3FCQXdCVTs7c0JBRkE7O21EQTVzQmhDeUM7cUJBMnNCNkI7dUJBS0c7OzJEQXowQmhDWDtxQkEwMEI2QixvREFBMkI7bUJBM0JsQztxQkFrQmM7O3NCQURIOzZEQTF2Q2pDdEM7c0JBeXZDb0M7c0JBREg7NkRBeHZDakNBO3NCQXV2QzhCO3NCQUZBLDJDQXR2QzlCUTtzQkFxdkMyQjs0RUFPK0M7bUJBbEJwRDsyRUEyQm1DO2lCQTdNM0M7bUJBcUpRO3FCQXdCVTs7c0JBRkE7O21EQS9xQmhDeUM7cUJBOHFCNkI7dUJBS0c7OzJEQTV5QmhDWDtxQkE2eUI2QixvREFBMkI7bUJBM0JsQztxQkFrQmM7O3NCQURIOzZEQTd0Q2pDdEM7c0JBNHRDb0M7c0JBREg7NkRBM3RDakNBO3NCQTB0QzhCO3NCQUZBLDJDQXp0QzlCUTtzQkF3dEMyQjs0RUFPK0M7bUJBbEJwRDsyRUEyQm1DO2lCQWhMM0M7bUJBd0hRO3FCQXdCVTs7c0JBRkE7O21EQWxwQmhDeUM7cUJBaXBCNkI7dUJBS0c7OzJEQS93QmhDWDtxQkFneEI2QixvREFBMkI7bUJBM0JsQztxQkFrQmM7O3NCQURIOzZEQWhzQ2pDdEM7c0JBK3JDb0M7c0JBREg7NkRBOXJDakNBO3NCQTZyQzhCO3NCQUZBLDJDQTVyQzlCUTtzQkEyckMyQjs0RUFPK0M7bUJBbEJwRDsyRUEyQm1DO2lCQW5KM0M7bUJBMkZRO3FCQXdCVTs7c0JBRkE7O21EQXJuQmhDeUM7cUJBb25CNkI7dUJBS0c7OzJEQWx2QmhDWDtxQkFtdkI2QixvREFBMkI7bUJBM0JsQztxQkFrQmM7O3NCQURIOzZEQW5xQ2pDdEM7c0JBa3FDb0M7c0JBREg7NkRBanFDakNBO3NCQWdxQzhCO3NCQUZBLDJDQS9wQzlCUTtzQkE4cEMyQjs0RUFPK0M7bUJBbEJwRDsyRUEyQm1DO2lCQXRIM0M7bUJBOERRO3FCQXdCVTs7c0JBRkE7O21EQXhsQmhDeUM7cUJBdWxCNkI7dUJBS0c7OzJEQXJ0QmhDWDtxQkFzdEI2QixvREFBMkI7bUJBM0JsQztxQkFrQmM7O3NCQURIOzZEQXRvQ2pDdEM7c0JBcW9Db0M7c0JBREg7NkRBcG9DakNBO3NCQW1vQzhCO3NCQUZBLDJDQWxvQzlCUTtzQkFpb0MyQjs0RUFPK0M7bUJBbEJwRDsyRUEyQm1DO2lCQXpGM0M7bUJBaUNRO3FCQXdCVTs7c0JBRkE7O21EQTNqQmhDeUM7cUJBMGpCNkI7dUJBS0c7OzJEQXhyQmhDWDtxQkF5ckI2QixxREFBMkI7bUJBM0JsQztxQkFrQmM7O3NCQURIOzZEQXptQ2pDdEM7c0JBd21Db0M7c0JBREg7NkRBdm1DakNBO3NCQXNtQzhCO3NCQUZBLDJDQXJtQzlCUTtzQkFvbUMyQjs0RUFPK0M7bUJBbEJwRDsyRUEyQm1DO2lCQTVEM0M7Ozs7c0JBSVE7d0JBd0JVOzt5QkFGQTs7c0RBOWhCaEN5Qzt3QkE2aEI2QjswQkFLRzs7Ozs4REEzcEJoQ1g7d0JBNHBCNkIscURBQTJCO3NCQTNCbEM7d0JBa0JjOzt5QkFESDtnRUE1a0NqQ3RDO3lCQTJrQ29DO3lCQURIO2dFQTFrQ2pDQTt5QkF5a0M4Qjt5QkFGQSwyQ0F4a0M5QlE7eUJBdWtDMkI7K0VBTytDO3NCQWxCcEQ7OEVBMkJtQzs7Ozs7Ozs7OztpQkEvQjNDOzJFQXNTcUM7ZUEzUzFDLHNCQUdvQixRQUFJO2VBSHhCO3VFQTJTMkM7V0EvU3BEOzs7O1dBZ1VZOztRQXY3QndCO1NBa25CcENnRDtVQUF3RDs7Ozs7OztVQThVeEQ7OztjQWNROzs7NENBbDFCUlA7Y0FrMUJRLGtEQUE4RDs7O2NBWGpELG1EQVF5QztXQVg5RDs7OztXQWdCWTs7UUFoOUJ3QjtTQTQ3QnBDUTtVQUFpQzs7Ozs7OztVQTZCakM7OztjQWFNLGVBSVdwQztnQkFRaUI7Ozt3REExdEZwQzVDLGFBa3RGbUI0QztpQkFRZ0I7O29CQUZRLDBDQXA2Q3pDVTs7aUJBaTZDZ0I7Ozs7O29CQTUxRmxCcEU7O2lCQTAxRnNCOzt5QkFZd0I7eUJBQ0E7O21CQUNKLHNEQUF3QjtjQWhCeEQ7Ozs7O2tCQTcyQlJzRjtlQTQyQnNDOzZCQUR4QlMsS0FBaUJDO2dCQUNwQiw0Q0FER0QsS0FBaUJDLEtBQ0s7Y0FBRSw4REFrQnlCOzs7Y0E5QjFDLG1EQVF5QztXQVg5RDs7OztXQW1DWTs7UUE1L0J3QjtTQXE5QnBDQztVQUFpQzs7Ozs7OztVQWdEakM7OztjQWlicUIscURBQXlCOzs7Y0FUekIsbURBUXlDOzs7Y0E5QnJEO2dCQXFCTzs7b0RBejZDaEJ0Qix1QkF5NkM0QztjQXJCbkM7Z0JBa0JXOztpQkFGQTs7OENBM3lDcEJXO2lCQTB5Q2lCO2lCQUZIOzs7b0JBOTJDZEo7O2dCQTgyQ2MsdURBS2dDO2NBbEJyQztzRUFxQm9DOzs7O2VBbmFwQztpQkF5WVU7O2tCQUZBOzsrQ0FweENuQkk7aUJBbXhDZ0I7bUJBS0c7Ozs7dURBajVDbkJYO2lCQWs1Q2dCLHFEQUEyQjtlQTVZbEM7aUJBbVlLOzt3REFwMERkOUI7aUJBbzBEYyx1REFBNEM7ZUFuWWpEOzs7O29CQUlRO3NCQUtLLHNCQWtYb0IsOEJBQWdCO3NCQWxYcEMsc0JBaVhvQixRQUFLO3NCQWpYekI7d0JBeVZROzBCQXFCVTs7MkJBRkE7O3dEQWx3Q3hDeUM7MEJBaXdDcUM7bUNBSUE7bUNBQ0ssOENBQTJCO3dCQXZCdkM7MEJBYVE7c0VBaHpEdEN6QzsyQkEreURtQzs7Ozs4QkE1eURuQ3NCOzBCQTR5RG1DLHVEQUdrRDt3QkFmdkQ7Z0ZBdUJ3QztzQkFoWGhEO3dCQXVUUTswQkE2QlU7OzJCQUZBOzt3REF4dUN4Q21COzBCQXV1Q3FDOzRCQUtHOztnRUFyMkN4Q1g7MEJBczJDMEMscURBQTJCO3dCQWhDdkM7MEJBc0JjOzs7d0RBcHhENUNSOzJCQW14RCtDOzJCQUZIO2tFQW54RDVDOUI7MkJBa3hEeUM7MkJBREc7MkJBREg7a0VBaHhEekNBOzJCQSt3RHNDOzJCQUZBLDJDQTl3RHRDUTsyQkE2d0RtQztpRkFXOEQ7d0JBdkJuRTtnRkFnQ3dDO3NCQXZWaEQ7d0JBcVJROzBCQTZCVTs7MkJBRkE7O3dEQXRzQ3hDeUM7MEJBcXNDcUM7NEJBS0c7O2dFQW4wQ3hDWDswQkFvMEMwQyxxREFBMkI7d0JBaEN2QzswQkFzQmM7Ozt3REFsdkQ1Q1I7MkJBaXZEK0M7MkJBRkg7a0VBanZENUM5QjsyQkFndkR5QzsyQkFERzsyQkFESDtrRUE5dUR6Q0E7MkJBNnVEc0M7MkJBRkEsMkNBNXVEdENROzJCQTJ1RG1DO2lGQVc4RDt3QkF2Qm5FO2dGQWdDd0M7c0JBclRoRDt3QkFtUFE7MEJBNkJVOzsyQkFGQTs7d0RBcHFDeEN5QzswQkFtcUNxQzs0QkFLRzs7Z0VBanlDeENYOzBCQWt5QzBDLHFEQUEyQjt3QkFoQ3ZDOzBCQXNCYzs7O3dEQWh0RDVDUjsyQkErc0QrQzsyQkFGSDtrRUEvc0Q1QzlCOzJCQThzRHlDOzJCQURHOzJCQURIO2tFQTVzRHpDQTsyQkEyc0RzQzsyQkFGQSwyQ0Exc0R0Q1E7MkJBeXNEbUM7aUZBVzhEO3dCQXZCbkU7Z0ZBZ0N3QztzQkFuUmhEO3dCQWlOUTswQkE2QlU7OzJCQUZBOzt3REFsb0N4Q3lDOzBCQWlvQ3FDOzRCQUtHOztnRUEvdkN4Q1g7MEJBZ3dDMEMscURBQTJCO3dCQWhDdkM7MEJBc0JjOzs7d0RBOXFENUNSOzJCQTZxRCtDOzJCQUZIO2tFQTdxRDVDOUI7MkJBNHFEeUM7MkJBREc7MkJBREg7a0VBMXFEekNBOzJCQXlxRHNDOzJCQUZBLDJDQXhxRHRDUTsyQkF1cURtQztpRkFXOEQ7d0JBdkJuRTtnRkFnQ3dDO3NCQWpQaEQ7d0JBK0tROzBCQTZCVTs7MkJBRkE7O3dEQWhtQ3hDeUM7MEJBK2xDcUM7NEJBS0c7O2dFQTd0Q3hDWDswQkE4dEMwQyxxREFBMkI7d0JBaEN2QzswQkFzQmM7Ozt3REE1b0Q1Q1I7MkJBMm9EK0M7MkJBRkg7a0VBM29ENUM5QjsyQkEwb0R5QzsyQkFERzsyQkFESDtrRUF4b0R6Q0E7MkJBdW9Ec0M7MkJBRkEsMkNBdG9EdENROzJCQXFvRG1DO2lGQVc4RDt3QkF2Qm5FO2dGQWdDd0M7c0JBL01oRDt3QkE2SVE7MEJBNkJVOzsyQkFGQTs7d0RBOWpDeEN5QzswQkE2akNxQzs0QkFLRzs7Z0VBM3JDeENYOzBCQTRyQzBDLHFEQUEyQjt3QkFoQ3ZDOzBCQXNCYzs7O3dEQTFtRDVDUjsyQkF5bUQrQzsyQkFGSDtrRUF6bUQ1QzlCOzJCQXdtRHlDOzJCQURHOzJCQURIO2tFQXRtRHpDQTsyQkFxbURzQzsyQkFGQSwyQ0FwbUR0Q1E7MkJBbW1EbUM7aUZBVzhEO3dCQXZCbkU7Z0ZBZ0N3QztzQkE3S2hEO3dCQTJHUTswQkE2QlU7OzJCQUZBOzt3REE1aEN4Q3lDOzBCQTJoQ3FDOzRCQUtHOztnRUF6cEN4Q1g7MEJBMHBDMEMscURBQTJCO3dCQWhDdkM7MEJBc0JjOzs7d0RBeGtENUNSOzJCQXVrRCtDOzJCQUZIO2tFQXZrRDVDOUI7MkJBc2tEeUM7MkJBREc7MkJBREg7a0VBcGtEekNBOzJCQW1rRHNDOzJCQUZBLDJDQWxrRHRDUTsyQkFpa0RtQztpRkFXOEQ7d0JBdkJuRTtnRkFnQ3dDO3NCQTNJaEQ7d0JBeUVROzBCQTZCVTs7MkJBRkE7O3dEQTEvQnhDeUM7MEJBeS9CcUM7NEJBS0c7O2dFQXZuQ3hDWDswQkF3bkMwQyxxREFBMkI7d0JBaEN2QzswQkFzQmM7Ozt3REF0aUQ1Q1I7MkJBcWlEK0M7MkJBRkg7a0VBcmlENUM5QjsyQkFvaUR5QzsyQkFERzsyQkFESDtrRUFsaUR6Q0E7MkJBaWlEc0M7MkJBRkEsMkNBaGlEdENROzJCQStoRG1DO2lGQVc4RDt3QkF2Qm5FO2dGQWdDd0M7c0JBekdoRDt3QkF1Q1E7MEJBNkJVOzsyQkFGQTs7d0RBeDlCeEN5QzswQkF1OUJxQzs0QkFLRzs7Z0VBcmxDeENYOzBCQXNsQzBDLHFEQUEyQjt3QkFoQ3ZDOzBCQXNCYzs7O3dEQXBnRDVDUjsyQkFtZ0QrQzsyQkFGSDtrRUFuZ0Q1QzlCOzJCQWtnRHlDOzJCQURHOzJCQURIO2tFQWhnRHpDQTsyQkErL0NzQzsyQkFGQSwyQ0E5L0N0Q1E7MkJBNi9DbUM7aUZBVzhEO3dCQXZCbkU7Z0ZBZ0N3QztzQkF2RWhEOzs7OzJCQUtROzZCQTZCVTs7OEJBRkE7OzJEQXQ3QnhDeUM7NkJBcTdCcUM7K0JBS0c7O21FQW5qQ3hDWDs2QkFvakMwQyxxREFBMkI7MkJBaEN2Qzs2QkFzQmM7OzsyREFsK0M1Q1I7OEJBaStDK0M7OEJBRkg7cUVBaitDNUM5Qjs4QkFnK0N5Qzs4QkFERzs4QkFESDtxRUE5OUN6Q0E7OEJBNjlDc0M7OEJBRkEsMkNBNTlDdENROzhCQTI5Q21DO29GQVc4RDsyQkF2Qm5FO21GQWdDd0M7Ozs7Ozs7Ozs7O3NCQXJDaEQ7Z0ZBa1hxQztvQkF2WDFDLHNCQUcwQixRQUFJO29CQUg5Qjs0RUF1WDJDO2VBM1huRDt5RUE0WW1DOztXQWhaNUM7Ozs7V0FtYlk7O1FBeDdDd0I7U0FpZ0NwQ3FEO1VBQThDOzs7Ozs7O1VBZ2M5QztpQ0FzRnFCLFFBQUs7OztjQUxMLG1EQUk2Qzs7OztlQWpGekQsc0JBNEVxRCxRQUFJO2VBNUV6RDtpQkE0RVE7O2tCQUZBOzsrQ0FuNUNqQlo7a0JBazVDYzt3RUFHNEI7ZUE1RWpDOzs7O29CQUlRO3NCQUtLLHNCQXFEb0IsOEJBQWdCO3NCQXJEcEMsc0JBb0RvQixRQUFLO3NCQXBEekI7Ozs7MkJBS1Esc0JBOENvQixRQUFJOzJCQTlDeEI7NkJBNkNXOzs4QkFGQTs7MkRBbDRDekNBOzhCQWk0Q3NDOzhCQUZIOzs7aUNBcjhDbkNKOzs2QkFxOENtQyx1REFLZ0M7MkJBN0NyQzs7OztnQ0FNUSxzQkF1Qm9CLFFBQUk7Z0NBdkJ4QjtrQ0FxQlc7O21DQUZBOztnRUFoM0NqREk7bUNBKzJDOEM7bUNBSEEsMkNBaDZEOUN6QzttQ0ErNUQyQzt5RkFRYTtnQ0F0QmxCO3dGQXVCeUI7MkJBN0JqQztxRkE4Q3lCO3NCQW5EakM7Z0ZBcURxQztvQkExRDFDLHNCQUcwQixRQUFJO29CQUg5Qjs0RUEwRDJDO2VBOURuRDt5RUE0RTBEO1dBaEZuRTs7OztXQXdGWTs7UUF6aER3QjtTQTY3Q1Q7Ozs7Ozs7O21CQW9HdkJhO1lBQ0g7Y0FDRTtxQ0FzR3FCLFFBQUs7OztrQkFOTCxtREFLNkM7Ozs7bUJBakd6RCxzQkEyRm9CLFFBQUk7bUJBM0Z4QjtxQkFzRmM7Ozs2REFyMkc1QjVDLGFBeXdHTTRDO3NCQTJGbUQ7O3lCQUhYOzBEQTFpRDVDOUI7O3NCQXNpRDBCOzs7Ozs7O3NCQUhBO3NCQUZIOzhEQS9FbkI4QjtzQkE4RWdCO21FQXRpRXBCckI7c0JBaWlFdUI7OzZEQWwxR3pCdkIsYUF5d0dNNEM7c0JBd0UyQzs7eUJBSHZCOzBEQXQ4Q3hCNkI7O3NCQWs4Q3VCOzs7Ozs7O3NCQUhJO3NCQUFQO3NCQURIOzRFQW1DeUQ7bUJBMUY5RDs7Ozt3QkFJUSxzQkF3Q29CLFFBQUk7d0JBeEN4QjswQkFrQ2M7OztrRUFyekdwQ3pFLGFBeXdHTTRDOzJCQTJDMkQ7OzhCQUg1QjsrREExL0NuQzlCOzsyQkFxL0NrQzs7Ozs7OzsyQkFIQTsyQkFGSDttRUE5QjNCOEI7MkJBNkJ3Qjt3RUFyL0Q1QnJCOzJCQWsvRCtCOzt3REEvN0MvQmlEOzJCQTg3QzRCOzs7OzhCQWxxRDVCaEI7MkJBaXFEeUI7aUZBeUIwQzt3QkF2Qy9DO2dGQXdDeUI7bUJBNUNqQzs2RUEyRnlCO2VBL0ZsQzs7Ozs7O2VBd0dZO2NBL0w0QixZQW1NVDtTQWpIVzs7Ozs7Ozs7bUJBcUh6QytCO1lBQ0g7Y0FDRTs7O2tCQXNGcUIscURBQXlCOzs7a0JBVnpCLG1EQVN5Qzs7OzttQkFqRnJEO3FCQUtLLHNCQWtFb0IsOEJBQWdCO3FCQWxFcEMsc0JBaUVvQixRQUFLO3FCQWpFekI7dUJBbUNRO3lCQTZCVTs7MEJBRFk7MEJBQWY7MEJBRlM7MEJBREg7aUVBdkVsQ0E7MEJBc0UrQjs7dURBcmlEbkNiOzBCQW9pRGdDOzs2REFqcEVoQ3ZCO3lCQWlwRWdDLHlEQU02Qjt1QkE3QnBDO3lCQW9CaUI7OzBCQURIO2lFQWpFbkNvQzswQkFnRWdDOzt1REEvaERwQ2I7MEJBOGhEaUM7O3dEQTNvRWpDdkI7MEJBeW9FaUM7Ozs2QkF6b0VqQ0E7NkJBNm1CQXVCOzBCQTJoRDhCO2dGQU0wQzt1QkFwQi9DOytFQTZCcUM7cUJBaEU3Qzs7OzswQkFJUTs0QkE2QlU7OzZCQURZOzZCQUFmOzZCQUZTOzZCQURIO29FQXhDbENhOzZCQXVDK0I7bUVBOTNDbkNaOzZCQTYzQ2dDOztnRUFsbkVoQ3hCOzRCQWtuRWdDLHlEQU02QjswQkE3QnBDOzRCQW9CaUI7OzZCQURIO29FQWxDbkNvQzs2QkFpQ2dDO21FQXgzQ3BDWjs2QkF1M0NpQzs7MkRBNW1FakN4Qjs2QkEwbUVpQzs7O2dDQTFtRWpDQTtnQ0FxdkJBd0I7NkJBbzNDOEI7bUZBTTBDOzBCQXBCL0M7a0ZBNkJxQzs7cUJBakM3QzsrRUFrRXFDO21CQXZFMUMsc0JBR29CLFFBQUk7bUJBSHhCOzJFQXVFMkM7ZUEzRXBEOzs7Ozs7ZUF3Rlk7Y0E5THlCLFlBa01OO1NBakdNOzs7Ozs7OztVQXNHeEM7OztjQUtNLHNCQThENkMsOEJBQWdCO2NBOUQ3RCxzQkE4RG9CLFFBQUs7Y0E5RHpCO2dCQTRDUTtrQkFpQk87O3NEQXJ6RHJCZCx1QkFxekRrRDtnQkFqQnBDO2tCQWFLOzs7O3NCQTd1RW5CVjtzQkE2bUJBdUI7a0JBZ29EbUIsdURBQ3lCO2dCQWQ5Qjt3RUFpQnFDO2NBN0Q3QztnQkFzQlE7a0JBb0JPOztzREFseURyQmIsdUJBa3lEa0Q7Z0JBcEJwQztrQkFnQlE7Ozs7c0JBMXRFdEJWO3NCQTZtQkF1QjttQkEybURzQjs7O3NCQXh0RXRCdkI7c0JBcXZCQXdCO21CQWsrQ21CO3lFQUk2QjtnQkFqQmxDO3dFQW9CcUM7Y0ExQzdDOzs7O21CQUlRO3FCQWdCTzs7Ozt5REE1d0RyQmQsdUJBNHdEa0Q7bUJBaEJwQztxQkFhSzs7Ozt5QkFyc0VuQlY7eUJBcXZCQXdCO3FCQWc5Q21CLHVEQUFzRDttQkFiM0Q7MkVBZ0JxQzs7O2NBcEI3Qzt3RUE4RDhEO2lDQWhFL0MsUUFBSTtXQUh6Qjs7OztXQXFFWTs7UUEzekR3QjtTQWt2RHBDYztVQUErQzs7Ozs7OztVQW1GL0M7OztjQUtNLHNCQWtHNkMsOEJBQWdCO2NBbEc3RCxzQkFrR29CLFFBQUs7Y0FsR3pCO2dCQW9FUTtrQkFvQlU7O21CQUZBOztnREFweUR4QmpCO2tCQW15RHFCO29CQVdTOztxQkFGQTs7a0RBNXlEOUJBO3FCQTJ5RDJCO3FCQURIO3FCQURHO3FCQURIOzttREFqNkR4Qlg7b0JBaTZEd0I7a0JBT0gscURBQTJCO2dCQTdCbEM7a0JBYUs7Ozs7c0JBcDFFbkJWO3NCQTZtQkF1QjtrQkF1dURtQix1REFDeUI7Z0JBZDlCO3dFQTZCbUM7Y0FqRzNDO2dCQWtDUTtrQkF1QlU7O21CQUZBOztnREFyd0R4QkY7a0JBb3dEcUI7b0JBV1M7O3FCQUZBOztrREE3d0Q5QkE7cUJBNHdEMkI7cUJBREg7cUJBREc7cUJBREg7O21EQWw0RHhCWDtvQkFrNER3QjtrQkFPSCxxREFBMkI7Z0JBaENsQztrQkFnQlE7Ozs7c0JBcnpFdEJWO3NCQTZtQkF1QjttQkFzc0RzQjs7O3NCQW56RXRCdkI7c0JBcXZCQXdCO21CQTZqRG1CO3lFQUk2QjtnQkFqQmxDO3dFQWdDbUM7Y0FsRTNDOzs7O21CQUlRO3FCQW1CVTs7c0JBRkE7O21EQW51RHhCSDtxQkFrdURxQjt1QkFXUzs7d0JBRkE7O3FEQTN1RDlCQTt3QkEwdUQyQjt3QkFESDt3QkFERzt3QkFESDs7c0RBaDJEeEJYO3VCQWcyRHdCO3FCQU9ILHFEQUEyQjttQkE1QmxDO3FCQWFLOzs7O3lCQXB4RW5CVjt5QkFxdkJBd0I7cUJBK2hEbUIsdURBQXNEO21CQWIzRDsyRUE0Qm1DOzs7Y0FoQzNDO3dFQWtHOEQ7aUNBcEcvQyxRQUFJO1dBSHpCOzs7O1dBeUdZOztRQTk2RHdCO1NBZzBEcENlO1VBQXdEOzs7Ozs7O1VBdUh4RDs7O2NBa1ZNLHNCQWdGNkMsOEJBQWdCO2NBaEY3RCxzQkFnRm9CLFFBQUs7Y0FoRnpCO2dCQXdEUTtrQkFvQlU7O21CQUZBOztnREF2dEV4QmxCO2tCQXN0RXFCO29CQUtHOzt3REFwMUV4Qlg7a0JBcTFFcUIscURBQTJCO2dCQXZCbEM7a0JBYUs7Ozs7c0JBdndGbkJWO3NCQTZtQkF1QjtrQkEwcEVtQix1REFDeUI7Z0JBZDlCO3dFQXVCbUM7Y0EvRTNDO2dCQTRCUTtrQkF1QlU7O21CQUZBOztnREE5ckV4QkY7a0JBNnJFcUI7b0JBS0c7O3dEQTN6RXhCWDtrQkE0ekVxQixxREFBMkI7Z0JBMUJsQztrQkFnQlE7Ozs7c0JBOXVGdEJWO3NCQTZtQkF1QjttQkErbkVzQjs7O3NCQTV1RnRCdkI7c0JBcXZCQXdCO21CQXMvRG1CO3lFQUk2QjtnQkFqQmxDO3dFQTBCbUM7Y0F0RDNDOzs7O21CQUlRO3FCQW1CVTs7c0JBRkE7O21EQWxxRXhCSDtxQkFpcUVxQjt1QkFLRzs7MkRBL3hFeEJYO3FCQWd5RXFCLHFEQUEyQjttQkF0QmxDO3FCQWFLOzs7O3lCQW50Rm5CVjt5QkFxdkJBd0I7cUJBODlEbUIsdURBQXNEO21CQWIzRDsyRUFzQm1DOzs7Y0ExQjNDO3dFQWdGOEQ7aUNBbEYvQyxRQUFJOzs7O2VBNVVoQjtpQkF3VVU7O2tCQUZBOzsrQ0Fyb0VuQkg7aUJBb29FZ0I7bUJBS0c7O3VEQWx3RW5CWDtpQkFtd0VnQixxREFBMkI7ZUEzVWxDO2lCQWtVSzs7d0RBcnJGZDlCO2lCQXFyRmMsdURBQTRDO2VBbFVqRDs7OztvQkFJUTtzQkFLSyxzQkFpVG9CLDhCQUFnQjtzQkFqVHBDLHNCQWdUb0IsUUFBSztzQkFoVHpCO3dCQW1SUTswQkF5QlU7OzJCQUZBOzt3REFsbkV4Q3lDOzBCQWluRXFDOzRCQUtHOztnRUEvdUV4Q1g7MEJBZ3ZFMEMscURBQTJCO3dCQTVCdkM7MEJBbUJjOzsyQkFESDtrRUFocUZ6Q3RDOzJCQStwRjRDOzJCQURIO2tFQTlwRnpDQTsyQkE2cEZzQzsyQkFGQSwyQ0E1cEZ0Q1E7MkJBMnBGbUM7aUZBTytDO3dCQW5CcEQ7Z0ZBNEJ3QztzQkEvU2hEO3dCQXFQUTswQkF5QlU7OzJCQUZBOzt3REFwbEV4Q3lDOzBCQW1sRXFDOzRCQUtHOztnRUFqdEV4Q1g7MEJBa3RFMEMscURBQTJCO3dCQTVCdkM7MEJBbUJjOzsyQkFESDtrRUFsb0Z6Q3RDOzJCQWlvRjRDOzJCQURIO2tFQWhvRnpDQTsyQkErbkZzQzsyQkFGQSwyQ0E5bkZ0Q1E7MkJBNm5GbUM7aUZBTytDO3dCQW5CcEQ7Z0ZBNEJ3QztzQkFqUmhEO3dCQXVOUTswQkF5QlU7OzJCQUZBOzt3REF0akV4Q3lDOzBCQXFqRXFDOzRCQUtHOztnRUFuckV4Q1g7MEJBb3JFMEMscURBQTJCO3dCQTVCdkM7MEJBbUJjOzsyQkFESDtrRUFwbUZ6Q3RDOzJCQW1tRjRDOzJCQURIO2tFQWxtRnpDQTsyQkFpbUZzQzsyQkFGQSwyQ0FobUZ0Q1E7MkJBK2xGbUM7aUZBTytDO3dCQW5CcEQ7Z0ZBNEJ3QztzQkFuUGhEO3dCQXlMUTswQkF5QlU7OzJCQUZBOzt3REF4aEV4Q3lDOzBCQXVoRXFDOzRCQUtHOztnRUFycEV4Q1g7MEJBc3BFMEMscURBQTJCO3dCQTVCdkM7MEJBbUJjOzsyQkFESDtrRUF0a0Z6Q3RDOzJCQXFrRjRDOzJCQURIO2tFQXBrRnpDQTsyQkFta0ZzQzsyQkFGQSwyQ0Fsa0Z0Q1E7MkJBaWtGbUM7aUZBTytDO3dCQW5CcEQ7Z0ZBNEJ3QztzQkFyTmhEO3dCQTJKUTswQkF5QlU7OzJCQUZBOzt3REExL0R4Q3lDOzBCQXkvRHFDOzRCQUtHOztnRUF2bkV4Q1g7MEJBd25FMEMscURBQTJCO3dCQTVCdkM7MEJBbUJjOzsyQkFESDtrRUF4aUZ6Q3RDOzJCQXVpRjRDOzJCQURIO2tFQXRpRnpDQTsyQkFxaUZzQzsyQkFGQSwyQ0FwaUZ0Q1E7MkJBbWlGbUM7aUZBTytDO3dCQW5CcEQ7Z0ZBNEJ3QztzQkF2TGhEO3dCQTZIUTswQkF5QlU7OzJCQUZBOzt3REE1OUR4Q3lDOzBCQTI5RHFDOzRCQUtHOztnRUF6bEV4Q1g7MEJBMGxFMEMscURBQTJCO3dCQTVCdkM7MEJBbUJjOzsyQkFESDtrRUExZ0Z6Q3RDOzJCQXlnRjRDOzJCQURIO2tFQXhnRnpDQTsyQkF1Z0ZzQzsyQkFGQSwyQ0F0Z0Z0Q1E7MkJBcWdGbUM7aUZBTytDO3dCQW5CcEQ7Z0ZBNEJ3QztzQkF6SmhEO3dCQStGUTswQkF5QlU7OzJCQUZBOzt3REE5N0R4Q3lDOzBCQTY3RHFDOzRCQUtHOztnRUEzakV4Q1g7MEJBNGpFMEMscURBQTJCO3dCQTVCdkM7MEJBbUJjOzsyQkFESDtrRUE1K0V6Q3RDOzJCQTIrRTRDOzJCQURIO2tFQTErRXpDQTsyQkF5K0VzQzsyQkFGQSwyQ0F4K0V0Q1E7MkJBdStFbUM7aUZBTytDO3dCQW5CcEQ7Z0ZBNEJ3QztzQkEzSGhEO3dCQWlFUTswQkF5QlU7OzJCQUZBOzt3REFoNkR4Q3lDOzBCQSs1RHFDOzRCQUtHOztnRUE3aEV4Q1g7MEJBOGhFMEMscURBQTJCO3dCQTVCdkM7MEJBbUJjOzsyQkFESDtrRUE5OEV6Q3RDOzJCQTY4RTRDOzJCQURIO2tFQTU4RXpDQTsyQkEyOEVzQzsyQkFGQSwyQ0ExOEV0Q1E7MkJBeThFbUM7aUZBTytDO3dCQW5CcEQ7Z0ZBNEJ3QztzQkE3RmhEO3dCQW1DUTswQkF5QlU7OzJCQUZBOzt3REFsNER4Q3lDOzBCQWk0RHFDOzRCQUtHOztnRUEvL0R4Q1g7MEJBZ2dFMEMscURBQTJCO3dCQTVCdkM7MEJBbUJjOzsyQkFESDtrRUFoN0V6Q3RDOzJCQSs2RTRDOzJCQURIO2tFQTk2RXpDQTsyQkE2NkVzQzsyQkFGQSwyQ0E1NkV0Q1E7MkJBMjZFbUM7aUZBTytDO3dCQW5CcEQ7Z0ZBNEJ3QztzQkEvRGhEOzs7OzJCQUtROzZCQXlCVTs7OEJBRkE7OzJEQXAyRHhDeUM7NkJBbTJEcUM7K0JBS0c7O21FQWorRHhDWDs2QkFrK0QwQyxxREFBMkI7MkJBNUJ2Qzs2QkFtQmM7OzhCQURIO3FFQWw1RXpDdEM7OEJBaTVFNEM7OEJBREg7cUVBaDVFekNBOzhCQSs0RXNDOzhCQUZBLDJDQTk0RXRDUTs4QkE2NEVtQztvRkFPK0M7MkJBbkJwRDttRkE0QndDOzs7Ozs7Ozs7O3NCQWpDaEQ7Z0ZBaVRxQztvQkF0VDFDLHNCQUcwQixRQUFJO29CQUg5Qjs0RUFzVDJDO2VBMVRuRDt5RUEyVW1DO1dBL1U1Qzs7OztXQW9hWTs7UUEzMUV3QjtTQW03RHBDNEQ7VUFBK0M7Ozs7Ozs7VUFpYi9DOzs7Y0Fhc0M7Y0FBNUI7a0RBcjdDVlg7dUJBczdDUTt1QkFDQTs7eUJBOTVDUkc7eUJBekJBSCxxQkF1N0NtRTs7O2NBWjlDLG1EQVF5QztXQVg5RDs7OztXQWlCWTs7UUFyM0V3QjtTQWcyRUk7Ozs7Ozs7O21CQTZCcENwQztZQUNIO2NBQ0U7OztrQkFLTSxzQkE2STZDLDhCQUFnQjtrQkE3STdELHNCQTZJb0IsUUFBSztrQkE3SXpCO29CQW1IUTtzQkF5Qm9CLHFEQUF5QjtvQkF6QjdDO3NCQW9CUTs7OzhEQW52STNCNUMsYUFxbUlNNEM7dUJBNkk4Qzs7MEJBSFg7MkRBeitCdkMwQzs7dUJBcStCeUI7Ozs7Ozs7dUJBSEk7dUJBQVA7NkVBZWtDO29CQXhCdkM7NEVBeUI4QztrQkE1SXREO29CQStFUTtzQkFrQ087OzBEQWwvRXhCekIsdUJBay9Fa0Q7b0JBbENqQztzQkEyQlE7Ozs4REF0dEkzQjdELGFBcW1JTTRDO3VCQWdIOEM7OzBCQUhYOzJEQTU4QnZDMEM7O3VCQXc4QnlCOzs7Ozs7O3VCQUh5Qjt1QkFEekI7OzswQkEzNUZ6Qm5DOzBCQTZtQkF1Qjt1QkE2eUVzQjs2RUFpQmtDO29CQS9CdkM7NEVBa0NrQztrQkFqSDFDO29CQXdDUTtzQkFxQ087OzBEQTk4RXhCYix1QkE4OEVrRDtvQkFyQ2pDO3NCQThCUTs7OzhEQWxySTNCN0QsYUFxbUlNNEM7dUJBNEU4Qzs7MEJBSFg7MkRBeDZCdkMwQzs7dUJBbzZCeUI7Ozs7Ozs7dUJBSDZCO3VCQUQxQjs7OzBCQXYzRjVCbkM7MEJBNm1CQXVCO3VCQXd3RTRCOzs7MEJBcjNGNUJ2QjswQkFxdkJBd0I7dUJBK25FeUI7dUJBREg7NkVBb0JrQztvQkFsQ3ZDOzRFQXFDa0M7a0JBN0UxQzs7Ozt1QkFJUTt5QkFrQ087OzZEQXY2RXhCZCx1QkF1NkVrRDt1QkFsQ2pDO3lCQTJCUTs7O2lFQTNvSTNCN0QsYUFxbUlNNEM7MEJBcUM4Qzs7NkJBSFg7OERBajRCdkMwQzs7MEJBNjNCeUI7Ozs7Ozs7MEJBSHVCOzBCQUR2Qjs7OzZCQWgxRnpCbkM7NkJBcXZCQXdCOzBCQTBsRXNCO2dGQWlCa0M7dUJBL0J2QzsrRUFrQ2tDOzs7O2tCQXRDMUM7NEVBNkk4RDtxQ0EvSS9DLFFBQUk7ZUFIekI7Ozs7OztlQW9KWTtjQTVLTSxZQWdMYTtTQTdKeUI7Ozs7Ozs7O1VBa0szRDs7O2NBYU0sZUFJaUIvQjtnQkFXSDs7O3dEQWh5SXRCNUMsYUFxeEl5QjRDO2lCQVV1Qjs7b0JBSHpCO3FEQTdqRXJCaUM7O2lCQXlqRW9COzs7Ozs7O3VFQVk0QjtjQWhCbEM7OzJEQWwrRmR6QjtlQWkrRlc7ZUFESDs7O3VCQXh6QlJxQzs2QkEwMEJzRTs7O2NBN0JqRCxtREFReUM7V0FYOUQ7Ozs7V0FrQ1k7O1FBOWpGd0I7U0F3aEZwQ0s7VUFBb0M7Ozs7Ozs7VUErQ3BDOzs7Y0FvRU07O3VCQXh0Qk5IO3VCQW5IQUQsaUNBNDBCc0Q7OztjQVhqQyxtREFReUM7Ozs7ZUE5RHJEO2lCQUtLLHNCQWdEb0IsOEJBQWdCO2lCQWhEcEMsc0JBK0NvQixRQUFLO2lCQS9DekI7bUJBMkJRO3FCQWVVOzs7O3lCQXpuRGhDTjt5QkFrN0JBTztzQkFzc0I2Qjs7Ozt5QkF2Z0U3Qlo7cUJBdWdFNkI7Ozs4QkEzaUU3QkQsK0JBZ2pFbUY7bUJBbkI3RDtxQkFXSzs7NERBOWlHM0IvQztxQkE4aUcyQix1REFBNEM7bUJBWGpEOzJFQW1COEQ7aUJBOUN0RTs7OztzQkFJUTt3QkFxQkssT0F4bUQzQnFELDhCQXdtRCtEO3NCQXJCekM7d0JBbUJXOzt5QkFGQTs7c0RBeitFakNaO3lCQXcrRThCO3lCQUZIOzs7NEJBNWlGM0JKOzt3QkE0aUYyQix1REFLZ0M7c0JBbkJyQzs4RUFxQjBDOztpQkF6QmxEOzJFQWdEcUM7ZUFyRDFDLHNCQUdvQixRQUFJO2VBSHhCO3VFQXFEMkM7V0F6RHBEOzs7O1dBdUVZOztRQTlvRndCO1NBbWtGTDs7Ozs7Ozs7bUJBbUYzQnhCO1lBQ0g7Y0FDRTs7O2tCQW9JTTs7OzBEQXBnSlg1QyxhQTgzSU00QzttQkFxSTJDOztzQkFIckM7Ozt3QkE5WlZpRDs7bUJBMFpTOzs7Ozs7O3lFQVlhOzs7a0JBeEJFLG1EQVF5Qzs7OzttQkFwSHJEO3FCQUtLLHNCQXNHb0IsOEJBQWdCO3FCQXRHcEMsc0JBcUdvQixRQUFLO3FCQXJHekI7dUJBd0RRO3lCQTRDTzs7NkRBbHdGaENoQyx1QkFrd0Y0RDt1QkE1Q25DO3lCQXdDb0I7OzBCQUZIO2tFQXpHdENqQjswQkF3R21DO3VFQXJyR3ZDckI7MEJBb3JHMEM7MEJBRkE7O3VEQS9uRjFDaUQ7MEJBOG5GdUM7MEJBREg7MEJBRkg7Ozs2QkFqc0ZqQ0o7OzBCQTRyRmlDOztpRUExOUluQ3BFLGFBODNJTTRDOzBCQTJGc0Q7OzZCQUhYOzhEQWh0Qy9DMEM7OzBCQTRzQ2lDOzs7Ozs7OzBCQUhJOzBCQUFQO2dGQTJCK0I7dUJBekNwQzsrRUE0Q29DO3FCQXBHNUM7Ozs7MEJBSVE7NEJBa0RPOztnRUFwdEZoQ3pCLHVCQW90RjREOzBCQWxEbkM7NEJBOEN1Qjs7NkJBRkg7cUVBM0R6Q2pCOzZCQTBEc0M7MEVBdm9HMUNyQjs2QkFxb0dnRDs2QkFGSDtxRUF0RHpDcUI7NkJBcURzQzswRUFsb0cxQ3JCOzZCQWlvR3VDOzZCQURHOzZCQUZBOzswREEza0YxQ2lEOzZCQTBrRnVDOzZCQURIOzZCQUZIOzs7Z0NBN29GakNKOzs2QkF3b0ZpQzs7b0VBdDZJbkNwRSxhQTgzSU00Qzs2QkF1Q3NEOztnQ0FIWDtpRUE1cEMvQzBDOzs2QkF3cENpQzs7Ozs7Ozs2QkFISTs2QkFBUDttRkFpQ21DOzBCQS9DeEM7a0ZBa0RvQzs7cUJBdEQ1QzsrRUFzR3FDO21CQTNHMUMsc0JBR29CLFFBQUk7bUJBSHhCOzJFQTJHMkM7ZUEvR3BEOzs7Ozs7ZUEwSVk7Y0FwTmMsWUF3Tks7U0FuSmU7Ozs7Ozs7O1VBd0pqRDs7O2NBeUZxQixxREFBeUI7OztjQVR6QixtREFReUM7Ozs7ZUFwRnJEO2lCQUtLLHNCQXNFb0IsOEJBQWdCO2lCQXRFcEMsc0JBcUVvQixRQUFLO2lCQXJFekI7bUJBcUNRO3FCQStCVTs7c0JBRFk7c0JBQWY7c0JBRlM7c0JBRkg7O29EQTNWbkNRO3NCQTBWZ0M7O21EQTlyRmhDcEI7c0JBNnJGNkI7O3lEQTF5RzdCdkI7cUJBMHlHNkIseURBTzZCO21CQS9CcEM7cUJBcUJpQjs7c0JBRkg7O29EQXBWcEMyQztzQkFtVmlDOzttREF2ckZqQ3BCO3NCQXNyRjhCOztvREFueUc5QnZCO3NCQWl5RzhCOzs7eUJBanlHOUJBO3lCQTZtQkF1QjtzQkFtckYyQjs0RUFPMEM7bUJBckIvQzsyRUErQnFDO2lCQXBFN0M7Ozs7c0JBSVE7d0JBK0JVOzt5QkFEWTt5QkFBZjt5QkFGUzt5QkFGSDs7dURBMVRuQ29CO3lCQXlUZ0M7K0RBcmhGaENuQjt5QkFvaEY2Qjs7NERBendHN0J4Qjt3QkF5d0c2Qix5REFPNkI7c0JBL0JwQzt3QkFxQmlCOzt5QkFGSDs7dURBblRwQzJDO3lCQWtUaUM7K0RBOWdGakNuQjt5QkE2Z0Y4Qjs7dURBbHdHOUJ4Qjt5QkFnd0c4Qjs7OzRCQWh3RzlCQTs0QkFxdkJBd0I7eUJBMGdGMkI7K0VBTzBDO3NCQXJCL0M7OEVBK0JxQzs7aUJBbkM3QzsyRUFzRXFDO2VBM0UxQyxzQkFHb0IsUUFBSTtlQUh4Qjt1RUEyRTJDO1dBL0VwRDs7OztXQTJGWTs7UUF0NEZ3QjtTQXV5RnBDc0I7VUFBb0Q7Ozs7Ozs7VUF3R3BEOzs7Y0FhTTs7dUJBelZORjt1QkFuT0FILDRCQTRqQnVFOzs7Y0FWbEQsbURBUXlDO1dBWDlEOzs7O1dBZVk7O1FBOTVGd0I7U0EyNEZPOzs7Ozs7OzttQkEyQnZDaEQ7WUFDSDtjQUNFOzs7a0JBK0I2Qjs7OzBEQS9xSmxDNUMsYUE4b0pNNEM7bUJBaUMyQjs7c0JBRlEsMENBejNHdkNVOzttQkFzM0djOzs7OztzQkFqekpoQnBFOzttQkEreUpvQjs7OytCQVl3Qjs7OytCQUNBOzs7K0JBQ0o7a0JBUE47bUJBWFE7OzBEQXBxSjFDYyxhQThvSk00QzttQkFzQm1DOztzQkFGM0I7dURBdlNab0Q7O21CQW9TVzs7Ozs7OzttQkFGYTsyRUF5QnVDOzs7a0JBbkN2QyxtREFReUM7ZUFYOUQ7Ozs7OztlQXdDWTtjQTlETSxZQWtFYTtTQWpEMkI7Ozs7Ozs7O1VBc0Q3RDs7O2NBUU8sT0FwaURQWDt1QkE4OENBYTt1QkF1RmEsOENBQTJCOzs7Y0FObkIsbURBR3dDO1dBTjdEOzs7O1dBV1k7O1FBcCtGd0I7U0FxOUZwQ0U7VUFBNkI7Ozs7Ozs7VUF3QjdCOzs7Y0FRTyxHQXhqRFBmO2dCQXlqRFE7OzJCQUlZekM7b0JBV0g7Ozs0REE3dUpuQjVDLGFBa3VKc0I0QztxQkFVcUM7O3dCQUh2Qzs7OzBCQTlGbEJ1RDs7cUJBMEZpQjs7Ozs7OzsyRUFZYTtpQkFoQm5COzZEQS82R1gvQztpQkE4Nkd5Qzs7MkJBRHhCNkIsS0FBZUM7b0JBQ2xCLDRDQURHRCxLQUFlQyxLQUNPO2dCQUFFO2NBa0JqQyxxREFBMkI7OztjQTFCZCxtREFHd0M7V0FON0Q7Ozs7V0ErQlk7O1FBNWdHd0I7U0F5K0ZwQ21CO1VBQW1DOzs7Ozs7O1VBNkNuQzs7O2NBYU07O3VCQTlFTkQ7dUJBb0JBQyx5QkEwRGlFOzs7Y0FWNUMsbURBUXlDO1dBWDlEOzs7O1dBZVk7O1FBcmlHd0I7U0FpaEdwQ0M7VUFBMEQ7Ozs7Ozs7VUE4QjFEOzs7Y0FhTyxHQXhuRlAxQjtnQkFnb0ZpQzs7Ozs7OztvQkFuRGpDMEI7aUJBbURnQzs7b0JBRnJCO3FEQWw3Q1hkOztpQkErNkNVOzs7Ozs7OztjQVNGLHFEQUEyQjs7O2NBdEJkLG1EQVF5QztXQVg5RDs7OztXQTJCWTs7UUExa0d3QjtTQTBpR3BDZTtVQUEyRDs7Ozs7OztVQXlDM0Q7OztjQVFPLEdBOXBEUGxCO2dCQWtxRGlCOzs7O29CQTFJakJlO29CQW9CQUM7aUJBcUhjOztvREF0a0JkUDtpQkFxa0JXOzs7O29CQW5EWFM7Z0JBbURXOzs7eUJBdFRYTjtjQTZUUSxxREFBMkI7OztjQWRkLG1EQUd3QztXQU43RDs7OztXQW1CWTs7UUF0bUd3QjtTQStrR3BDTztVQUF3Qjs7Ozs7O2tCQW4yR3hCakQsVUFtMkdBaUQ7TUEvbUdZLHVDQTRvR3dDO0lBdmdLbkMsU0F5Z0tuQkMsK0JBQWtDQTtNQUNwQzt1QkFEb0NBO09BQ3BDLFVBRG9DQTtPQUNwQyxvQkFEb0NBO09BQ3BDLFlBRG9DQTtPQUNwQywrQkFEb0NBO09BQ3BDLGlDQURvQ0E7T0FDcEMsK0JBRG9DQTtNQUNwQztRQVdJOzs7WUFTTSxlQUNRN0Q7Y0FDSDtxQkFER0E7ZUFDSCxNQURHQTtlQUNILE1BREdBO2VBQ0gsTUFER0E7ZUFDSCxNQURHQTtlQU9XO2VBRkgsNkNBTFJBO2NBSUssK0NBekJuQjhEOzs7ZUFtQzRCOztnQkFGSCw2Q0FaWDlEO2dCQVdROzZEQWhDdEI4RDs7O3dCQXFCYzlELDhDQTJCK0U7WUE1QnZGLGtEQW5CTitELFVBZ0RrQjs7MEJBbkNHLG1EQUlxQjtTQVAxQzs7OztTQXdDWTs7TUFuRGhCO09BU3NDLDJDQWgySnBDM0c7T0E4MUpzQzs7O1FBcURwQzsrQkFrQnFCLFFBQUs7OzBCQUpMLG1EQUc4Qzs7OzthQWIxRCxzQkFTb0IsUUFBSTthQVR4QjtlQUdvQjs7O3dCQS9EN0I4RywrQkFvRWlFO2FBUnhELGlFQVN5QjtTQWJsQztTQUpFOzs7Ozs7Ozs7O1NBd0JVOztNQUloQjtRQUtJOytCQWtCcUIsUUFBSzs7MEJBSkwsbURBRzhDOzs7O2FBYjFELHNCQVNvQixRQUFJO2FBVHhCO2VBR29COzs7d0JBM0Y3QkMsaUNBZ0d1RTthQVI5RCxpRUFTeUI7U0FibEM7U0FKRTs7Ozs7Ozs7OztTQXdCVTs7TUFJaEI7UUFLSTsrQkFPcUIsT0EzSHJCSCxtQkEySHlDOzswQkFKcEIsbURBRzhDO1NBTm5FO1NBSkU7Ozs7Ozs7Ozs7U0FhVTs7TUFJaEI7UUFJSTsrQkFPcUIsT0EzSXJCQyxXQTJJaUM7OzBCQUpaLG1EQUc4QztTQU5uRTtTQUhFOztnREFoa0tKekg7Ozs7U0E0a0tjOztNQUloQjtRQUtJOytCQU9xQixPQWhLckJzSCxlQWdLcUM7OzBCQUpoQixtREFHOEM7U0FObkU7U0FKRTs7Ozs7Ozs7OztTQWFVOztNQUloQjtRQUtJOytCQU9xQixPQTNLckJ0RCxnQkEyS3NDOzswQkFKakIsbURBRzhDO1NBTm5FO1NBRGlCLDJDQWpnS25CcEQ7U0E4L0pJOzs7OztTQWFVOztNQUloQjtRQUtJOytCQWtCcUIsUUFBSzs7MEJBSkwsbURBRzhDOzs7O2FBYjFELHNCQVNvQixRQUFJO2FBVHhCO2VBR29COzs7d0JBOUw3QmdILCtCQW1NOEQ7YUFSckQsaUVBU3lCO1NBYmxDO1NBSkU7Ozs7Ozs7Ozs7U0F3QlU7O01Bak5oQjtPQXlOb0Q7O1VBRnRCLDBDQWx3SDVCakU7O1dBa21IRWtFO1dBNkJBQztXQTZCQUM7V0FrQkFDO1dBaUJBQztXQWtCQUM7V0FrQkFDO09BNkJtQztzQ0FBbkMvRTtNQUFtQztRQTBCbkM7K0JBT3FCLE9BWnJCZ0YsOEJBWThEOzswQkFKekMsbURBRzhDO1NBTm5FOzs7O1NBU1k7O01BeFBoQjtPQTJPSUM7UUFBMEI7O2dCQUExQkEsZ0JBaUIrRDtJQXR3SzlDOzs7O09BU25CL0k7O09Bb0JBTzs7T0FlQUM7O09BYUFDOztPQXFCQUM7O09BaUJBSzs7T0FTQUM7O09BU0FDOztPQVFBQzs7T0FPQUM7O09BUUFDOztPQWdCQUM7O09BMkJBQzs7T0F1QkFDOztPQVVBQzs7T0FhQUM7O09BZUFDOztPQVdBQzs7T0FNQUM7O09BZ0JBQzs7T0F5QkFDOztPQWlCQUM7O09BWUFDOztPQVNBQzs7T0FpQkFDO09Bb0JBQztPQTJCQUU7T0FnREFNO09BNEJBSztPQTJCQUc7T0F5aEJBSTtPQWtIQUU7T0E2VkFZO09BMGlIQTBEO0lBemdLbUI7Ozs7YUNtQm5CaUI7TUFDQTs7YUFDZ0NDOzs7YUFJREM7OzthQUlUQzs7O2FBSW9CQzs7OzthQUlRQzs7a0NBRy9DO2FBRUhDLHdCQUF5QkM7TUFFQyxJQVUxQkMsS0FWMEIsd0JBRkREO01BRUMsd0JBVTFCQzs7Ozs7Z0JBRUUsMkNBRkZBO2dCQUVFO2NBSEY7WUFGQTtVQUxBO1FBRUE7TUFDMkIsV0FRMkM7YUFldEVDO01BRUE7bUJBQ01SO21CQUlFQztvQkFJRkMsdURBR0g7YUFFSE8saUNBQ0RDO01BRXlDLElBSXhDSCxLQUp3Qyx3QkFGekNHO01BRXlDLHdCQUl4Q0g7OztZQUVFLDJDQUZGQTtZQUVFO1VBSlc7UUFERjtNQUVBLFdBS0Y7YUFlVEk7TUFDQTttQkFDU1g7bUJBSUFDO29CQUlKQyxzREFHRjthQUVIVSx3QkFBeUJqRjtNQUVDLElBSTFCNEUsS0FKMEIsd0JBRkQ1RTtNQUVDLHdCQUkxQjRFOzs7WUFFRSwyQ0FGRkE7WUFFRTtVQUhRO1FBREk7TUFEQSxXQU13RDthQWN0RU07TUFFQTtZQUNPYjtVQUk0QkM7MEVBR2hDO2FBRUhhLDhCQUNEQztNQUVpQyxJQUloQ1IsS0FKZ0Msd0JBRmpDUTtNQUVpQyx3QkFJaENSOztVQUVFLDJDQUZGQTtVQUVFO1FBTFU7TUFFWixXQUtTO2FBcUJUUztNQUNBO21CQUNXaEI7bUJBSUpDOzthQUlJQzttQkFJREM7O2FBSU1DOzthQUlKYTttQkFJRkM7O2FBSVlDOztvQkFJZEMseURBR0w7YUFFSEMscUJBQXNCQztNQUVDLElBVXZCZixLQVZ1Qix3QkFGRGU7TUFFQyx3QkFVdkJmOzs7Ozs7Ozs7d0JBRUUsMkNBRkZBO3dCQUVFO3NCQUp5QjtvQkFGVjtrQkFESTtnQkFFTjtjQUVGO1lBTkc7VUFDRDtRQUZIO01BREksV0FZcUQ7YUFRbkVnQixpQ0FDRHJJO01BSUc7OzJDQUpIQTs7YUFNQ3NJLGlDQUNEdEk7TUFJRzs7O2dCQUpIQSx1REFNQTthQUtDdUksaUNBQ0QvSDtNQUtHLFlBTEhBOzthQU9DZ0ksaUNBQ0RoSTtNQUt1RSxVQUx2RUEsc0RBTUE7YUFLQ2lJLCtCQUFzQzVIO01BR25CLFlBSG1CQTthQUt0QzZILCtCQUNEN0g7TUFFc0UsVUFGdEVBLDhDQUdBO2FBS0M4SCxhQUFjM0g7TUFHVSw2Q0FIVkE7O2FBS2Q0SCxhQUFjNUg7TUFHUSwrQ0FIUkE7TUFHWixzREFFSDthQUtDNkgsaUNBQ0R6SDtNQUt5Qjs7O29DQUx6QkE7O2FBT0MwSCxpQ0FDRDFIO01BS3VCOzs7b0NBTHZCQTtNQUtHLHNEQUVIO2FBS0MySCxpQ0FDRG5EO01BSXlCOzs7b0NBSnpCQTs7YUFNQ29ELGlDQUNEcEQ7TUFLdUI7Ozs7VUFMdkJBO01BS0csc0RBRUg7YUFhQ3FELHNCQUF1QkM7TUFZckI7ZUFacUJBO09BVXJCLFFBVnFCQTtPQVFyQiw0QkFScUJBO09BTUEsdUNBTkFBO09BS0MseUNBTERBO09BR0oseUNBSElBOzs7Ozs7O2FBY3ZCQyxzQkFBdUJEO01BYzRDO2FBZDVDQTtPQVcrQyxNQVgvQ0E7T0FTckIsOEJBVHFCQTtPQU9EOzJDQVBDQTtPQUtEOztvQ0FMQ0E7T0FLckI7TUFGYzttREFIT0E7Ozs7O29CQWV4QjthQWVDRSxlQUFnQnJIO01BWWQ7ZUFaY0E7T0FVZCxRQVZjQTtPQVFJLDRCQVJKQTtPQU9NLHVDQVBOQTtPQU1RLHlDQU5SQTtPQUlkLG1DQUpjQTtPQUVFLHlDQUZGQTs7Ozs7Ozs7YUFjaEJzSCxlQUFnQnRIO01BYW9EO2FBYnBEQTtPQVc4QyxNQVg5Q0E7T0FTRSw4QkFURkE7T0FRSSx5Q0FSSkE7T0FNTTs2Q0FOTkE7T0FNZDtPQUZBLHVDQUpjQTtNQUVGO21EQUZFQTs7Ozs7O29CQWNqQjthQVFDdUgsK0JBQWdDcEg7TUFVUiw2Q0FWUUE7TUFVMkM7UUFOekU7Z0NBQ1NxSDttQkFFUCx5QkFGT0E7bUJBQ3VCO3VDQU5GckgsaUNBUVQsRUFBQzs7YUFJeEJzSCwrQkFDRHRIO01BS3VCOzs7b0NBTHZCQTtPQUtHO01BRlUscUVBSWI7YUFLQ3VILDJCQUE0QnZKO01BR1osdUJBSFlBO2FBSzVCd0osMkJBQ0R4SjtNQUNjLHlCQURkQSw4QkFFQTthQVdDeUosK0JBQWdDckk7TUFlOUI7ZUFmOEJBO09BYWhCLHVDQWJnQkE7TUFhaEI7UUFKZDtnQ0FDU2lJO21CQUM2Qyx5QkFEN0NBO21CQUVnRSxXQUQvRCxXQVhvQmpJLGdDQVkyQyxFQUFDO01BQzVEO1FBVGQ7Z0NBQ1NpSTttQkFDc0MseUJBRHRDQTttQkFFeUQsV0FEeEQsV0FOb0JqSSxnQ0FPb0MsRUFBQzs7Ozs7YUFVckVzSSwrQkFDRHRJO01BTzBEO2FBUDFEQTtPQUtnQjsyQ0FMaEJBO09BSXVCO01BRFA7Ozs7b0JBS2hCO2FBT0N1SSwrQkFBbUN0STtNQU1qQztnQ0FOaUNBO09BSWpDLHVDQUppQ0E7O2FBUW5DdUksK0JBQ0R2STtNQU1HLCtCQU5IQTtNQUlHOzs7Z0JBSkhBO29CQU9BO2FBSUR3SSx3Q0YvaUJMO2FFZ2pCS0Msd0NBQStILFFBQUU7YUFJL0hDLDhCQUErQjlKO01GcGpCdEMsVUVvakJzQ0E7cUJBSUZyQyxHQUFLLHNCQUFMQSxFQUFxQjtNQUFrQyw0QkFBdEU7O2FBRWRvTSw4QkFDRC9KO01BS3NDLDJCQUx0Q0E7TUFLc0MsZUFEcEJyQyxHQUFLLHNCQUFMQSxFQUFxQjtNQUFDLHFCQUFyQywwQ0FFSDthQWVDcU0sK0JBQW1DaEk7TUFnQmpDO2dCQWhCaUNBO09BZ0JqQyxNQWhCaUNBO01BZ0JqQyxlQUYyQnJFLEdBQUssc0JBQUxBLEVBQXFCO01BQStDOytCQUFuRjtPQUZaLHdDQVppQ3FFO09BVWpDLDBCQVZpQ0E7T0FRWCwwQ0FSV0E7T0FNakMsU0FOaUNBO09BSWpDLFNBSmlDQTs7Ozs7Ozs7YUFrQm5DaUksK0JBQ0RqSTtNQXVCd0U7O1FBdkJ4RUE7OztPQW9CaUQsdUJBcEJqREE7TUFvQmlELGVBRC9CckUsR0FBSyxzQkFBTEEsRUFBcUI7TUFBQzt3QkFBckM7T0FGQTs7a0NBakJIcUU7T0FlRywyQkFmSEE7T0FZdUI7OztVQVp2QkE7T0FZRztNQU5pRDtjQU5wREE7Ozs7Ozs7Ozs7b0JBd0JBO2FBUUNrSSxpQ0FDRDdKO01BU0c7OzJDQVRIQTtPQU9HOzJDQVBIQTtPQUtHOzJDQUxIQTs7YUFXQzhKLGlDQUNEOUo7TUFVRzs7O2tDQVZIQTtPQVFHOzs7VUFSSEE7TUFLRzs7O2dCQUxIQTs7b0JBV0E7YUFRQ00sK0JBQ0RBO01BUUc7OzJDQVJIQTtPQU1HOzJDQU5IQTtPQUlHOzJDQUpIQTs7YUFVQ3lKLGlDQUNEeko7TUFPYTs7O2tDQVBiQTtPQU1HOzs7VUFOSEE7TUFJRzs7O2dCQUpIQTs7b0JBUUE7YUFPQzBKLGdCQUFpQnZKO01BR0M7aUNBSERBO09BRUksd0NBRkpBOzthQUtqQndKLGdCQUFpQnhKO01BR0YsK0JBSEVBO01BRUU7aURBRkZBO29CQUlsQjthQUtDeUosaUNBQ0R0SjtNQUtHOzsyQ0FMSEE7O2FBT0N1SixpQ0FDRHZKO01BS0c7OztnQkFMSEEsK0NBT0E7YUFlQ3dKLGlDQUNEaEY7TUFpQkc7Z0JBakJIQTtPQWVHLFNBZkhBO09BYUcsU0FiSEE7T0FXRywwQkFYSEE7T0FTeUI7O29DQVR6QkE7T0FTa0csTUFUbEdBO01BU2tHLGVBRnBFOUgsR0FBSyw2QkFBTEEsRUFBNEI7TUFBa0Q7K0JBQTdGO09BRlo7MkNBTEg4SDs7Ozs7Ozs7YUFtQkNpRixpQ0FDRGpGO01BMEJnRDs7UUExQmhEQTs7O09Bc0J5RDtRQXRCekRBOzs7T0FrQnFEO1FBbEJyREE7OztPQWFHLDJCQWJIQTtPQVV1Qjs7O1VBVnZCQTtPQVVHO09BRmtELHVCQVJyREE7TUFRcUQsZUFEbkM5SCxHQUFLLDZCQUFMQSxFQUE0QjtNQUFDLHFCQUE1QztNQUZBOzs7Z0JBTEg4SDs7Ozs7O29CQTJCQTthQUtEa0Y7TUFDRHhDO01BRUQ7aURBRzBDO2FBR3hDeUMscUJBQW9CNUs7TUFFdEI7OytDQUZzQkEsd0JBS087YUFHM0I2SztNQUNEeEM7TUFFRDs7O21CQUZDQSxtQ0FLOEM7YUFHN0N5QywrQkFDRG5LO01BRUQ7OzttQkFGQ0EsaUNBS3NDO2FBR3JDb0ssT0FBTWpLO01BRVIseUNBRlFBLFVBRTBDO2FBR2hEa0s7TUFDRHJDO01BRUQ7OzttQkFGQ0EsbUNBSytDO2FBRzlDc0MseUJBQ0Q3SjtNQUVEOztnREFGQ0EsNEJBS2dDO2FBRy9COEoseUJBQ0RsSjtNQUVEOztnREFGQ0EsNEJBS2dDO2FBRy9CbUo7TUFDRHRDO01BRUQ7OzttQkFGQ0EsbUNBSzBDOztNQWdDckMsNkJBdENKc0MsaUNBc0NxRDs7TUFIakQsNkJBNUNKRCx5QkE0QzJDOztNQUh2Qyw2QkFsREpELHlCQWtEMkM7O01BSHZDLDZCQXhESkQsaUNBd0QwRDt5QkFIdEQsNkJBMURKRCxPQTBEeUI7O01BSHJCLDZCQWhFSkQsK0JBZ0VpRDs7TUFIN0MsNkJBdEVKRCxpQ0FzRXlEO3lCQUhyRCw2QkEzRUpELHFCQTJFdUM7O01BSG5DLDZCQWpGSkQsaUNBaUZvRDtJQUpyRDs7Ozs7Ozs7Ozs7Ozs7O09BbjFCQ2pFO09BdUJBTTtPQThCQUc7T0FnQkFDO09BMEJBRTtPQWVBQztPQXVCQUM7T0FZQUM7T0FnQ0FFO09BdUNBSztPQXVCRUU7T0FPQUM7T0FZQUM7T0FRQUM7T0FZQUM7T0FLQUM7T0FTQUM7T0FLQUM7T0FVQUM7T0FRQUM7T0FhQUM7T0FPQUM7T0FxQkFDO09BY0FFO09BOEJBQztPQWNBQztPQXNCQUM7T0FZQUU7T0FhQUM7T0FLQUM7T0FjQUM7T0FpQkFDO09BZ0JBQztPQVFBQztPQVlGQztPQUNBQztPQUlFQztPQU1BQztPQXNCQUM7T0FrQkFDO09BaUNBQztPQVlBQztPQW9CQXhKO09BV0F5SjtPQWdCQUM7T0FLQUM7T0FTQUM7T0FRQUM7T0F1QkFDO09Bb0JBQztPQWlDRkM7T0FTQUM7T0FRQUM7T0FTQUM7T0FTQUM7T0FLQUM7T0FTQUM7T0FTQUM7T0FTQUM7SUFVRDs7Ozs7SUN0MkJlLFNBU2RDLGdCQUFpQnpOO01BQ25CLE9BRG1CQTs7U0FHRjtjQUhFQTsrQkFHVSxxQ0FBakJDOzs7U0FDUTtjQUpERDtrQ0FJZ0IscUNBQXBCRTs7O1NBQ0k7Y0FMQUY7aUNBS2MscUNBQW5CRzs7O1NBQ0s7Y0FOQUg7aUNBTWMscUNBQW5CSTs7O1NBQ0M7Y0FQSUo7NkJBT00scUNBQWZLOzJCQUE2QjtJQWhCdkI7YUF5QmRxTixxQkFBc0IxTjtNQUN4QixTQUR3QkE7T0FHTDtZQUhLQTsrQkFHUyxxQ0FBbkJDOztPQUVWO1lBTG9CRDs7OztVQUsrQixxQ0FESkU7MkJBQ2tCO0lBOUJyRDthQXdDZHlOLCtCQUFxQzNOO01BRXZDLE9BRnVDQTs7U0FLbkM7Y0FMbUNBOzs7O1lBS0MscUNBREpDOzs7U0FHaEM7Y0FQbUNEOzs7O1lBT1MscUNBRE5FOzs7U0FFcEI7Y0FSaUJGO29DQVFBLHFDQUF0Qkc7MkJBQW9DO0lBaERyQzthQTJEZHlOLCtCQUFvQzVOO01BRXRDLE9BRnNDQTs7U0FJTDtjQUpLQTs7OztZQUl3QixxQ0FBbENDOzs7U0FDRztjQUxPRDs7OztZQUtvQixxQ0FBaENFOzs7U0FFdEI7Y0FQa0NGOzs7O1lBT0cscUNBREpHOzs7U0FFZjtjQVJnQkg7O2lDQVFDLHFDQUF0Qkk7MkJBQW9DO0lBbkVyQzthQTJFZHlOLDRCQUE2QjdOO01BQy9CLFNBRCtCQTtPQUdsQjtZQUhrQkE7eUJBR1YscUNBQWJDOztPQUNLO1lBSmtCRDt5QkFJVixxQ0FBYkU7MkJBQTJCO0lBL0VuQjthQXVGZDROLHFCQUFzQjlOO01BQ3hCLFNBRHdCQTtPQUdSO1lBSFFBOzRCQUdHLHFDQUFoQkM7O09BQ0s7WUFKUUQ7NEJBSUcscUNBQWhCRTsyQkFBOEI7SUEzRnpCO2FBbUdkNk4sNkJBQThCL047TUFFaEMsU0FGZ0NBO09BSWhCO1lBSmdCQTs4QkFJTCxxQ0FBaEJDOztPQUNLO1lBTGdCRDs4QkFLTCxxQ0FBaEJFOzJCQUE4QjtJQXhHekI7YUFtSGQ4Tix1QkFBd0JoTztNQUMxQixPQUQwQkE7O1NBR0s7Y0FITEE7Ozs7WUFHK0IscUNBQS9CQzs7O1NBQ0U7Y0FKRkQ7Ozs7WUFJMEIscUNBQTdCRTs7O1NBRW5CO2NBTnNCRjs7OztZQU1RLHFDQURKRzs7O1NBRzFCO2NBUnNCSDs7OztZQVFnQixxQ0FETEk7MkJBQ21CO0lBM0h4QzthQW9JZDZOLHNCQUF1QmpPO01BQ3pCLFNBRHlCQTtPQUlyQjtZQUpxQkE7Ozs7VUFJK0IscUNBRE5DOztPQUVuQztZQUxVRDs2QkFLQSxxQ0FBZkU7MkJBQTZCO0lBekl2QjthQWtKZGdPLCtCQUFnQ2xPO01BRWxDLFNBRmtDQTtPQUlOO1lBSk1BOzttQ0FJa0IscUNBQTdCQzs7T0FFbkI7WUFOOEJEOzs7O1VBTWEscUNBRExFOzJCQUNzQjtJQXhKaEQ7YUFrS2RpTyxjQUFlbk87TUFDakIsT0FEaUJBOztTQUdFO2NBSEZBO2lDQUdnQixxQ0FBbkJDOzs7U0FDTTtjQUpIRDtrQ0FJa0IscUNBQXBCRTs7O1NBRVg7Y0FOYUY7Ozs7WUFNNEIscUNBRFJHOzJCQUNzQjtJQXhLM0M7YUFrTGRpTywrQkFDRHBPO01BQ0QsT0FEQ0E7O1NBR3dCO2NBSHhCQTs7a0NBRzRDLHFDQUF6QkM7OztTQUVoQjtjQUxIRDs7OztZQUswRCxxQ0FETEU7OztTQUdsRDtjQVBIRjs7OztZQU8yRCxxQ0FETkc7MkJBQ29CO0lBMUwxRDthQW1NZGtPLHdCQUF5QnJPO01BQzNCLE9BRDJCQTs7U0FHWjtjQUhZQTs2QkFHRixxQ0FBZkM7OztTQUNLO2NBSllEOzZCQUlGLHFDQUFmRTs7O1NBQ0s7Y0FMWUY7NkJBS0YscUNBQWZHOzJCQUE2QjtJQXhNdkI7YUFrTmRtTyxrQkFBbUJ0TztNQUNyQixPQURxQkE7O1NBR0g7Y0FIR0E7Z0NBR1UscUNBQWxCQzs7O1NBQ1M7Y0FKREQ7b0NBSW9CLHFDQUF4QkU7OztTQUNjO2NBTFZGOzs7O1lBS3NDLHFDQUFqQ0c7MkJBQStDO0lBdk56RDthQWlPZG9PLHVCQUF3QnZPO01BQzFCLE9BRDBCQTs7U0FHSTtjQUhKQTs7OztZQUcrQixxQ0FBaENDOzs7U0FDTDtjQUpNRDtpQ0FJVSxxQ0FBckJFOzs7U0FDQTtjQUxXRjs2QkFLRCxxQ0FBZkc7MkJBQThCO0lBdE94QjthQThPZHFPLDZCQUE4QnhPO01BRWhDLFNBRmdDQTtPQUlYO1lBSldBO2lDQUlNLHFDQUF0QkM7O09BQ0k7WUFMWUQ7Z0NBS0sscUNBQXRCRTsyQkFBb0M7SUFuUG5DO2FBNlBkdU8sK0JBQ0R6TztNQUNELE9BRENBOztTQUdvQjtjQUhwQkE7bUNBR3FDLHFDQUF0QkM7OztTQUVaO2NBTEhEOzs7O1lBS21DLHFDQURKRTs7O1NBRzVCO2NBUEhGOzs7O1lBT2lDLHFDQURKRzsyQkFDa0I7SUFyUWhDO2FBNlFkdU8sK0JBQ0QxTztNQUNELFNBRENBO09BR2U7WUFIZkE7NEJBRzBCLHFDQUFoQkM7O09BQ1M7WUFKbkJEO2dDQUlrQyxxQ0FBcEJFOzJCQUFrQztJQWxSakM7YUE0UmR5TywrQkFBdUMzTztNQUV6QyxPQUZ5Q0E7O1NBS3JDO2NBTHFDQTs7OztZQUtOLHFDQURMQzs7O1NBRzFCO2NBUHFDRDs7OztZQU9MLHFDQURKRTs7O1NBRzVCO2NBVHFDRjs7OztZQVNQLHFDQURKRzsyQkFDa0I7SUFyU2hDO2FBa1RkeU8sMEJBQTJCNU87TUFDN0IsT0FENkJBOztTQUdSO2NBSFFBO21DQUdTLHFDQUF0QkM7OztTQUNBO2NBSmFEOzhCQUlELHFDQUFqQkU7OztTQUNLO2NBTGFGOzhCQUtELHFDQUFqQkc7OztTQUNRO2NBTlVIO2lDQU1JLHFDQUFuQkk7OztTQUVWO2NBUnlCSjs7OztZQVFNLHFDQURQSzs7O1NBR3hCO2NBVnlCTDs7OztZQVVTLHFDQUROVTsyQkFDb0I7SUE1VHBDO2FBdVVkbU8sMEJBQTJCN087TUFDN0IsT0FENkJBOztTQUl6QjtjQUp5QkE7Ozs7WUFJa0IscUNBRFBDOzs7U0FFZDtjQUxHRDs7bUNBS21CLHFDQUEzQkU7OztTQUVqQjtjQVB5QkY7Ozs7WUFPeUMscUNBRExHOzs7U0FFbEQ7Y0FSY0g7K0JBUUoscUNBQWZJOzJCQUE2QjtJQS9VdkI7YUEwVmQwTywrQkFDRDlPO01BQ0QsT0FEQ0E7O1NBSUc7Y0FKSEE7Ozs7WUFJb0MscUNBRE5DOzs7U0FHM0I7Y0FOSEQ7Ozs7WUFNaUQscUNBRFJFOzs7U0FHdEM7Y0FSSEY7Ozs7WUFRdUMscUNBRE5HOzs7U0FFVDtjQVR4Qkg7O2tDQVM0QyxxQ0FBekJJOzJCQUF1QztJQXBXM0M7YUE0V2QyTywrQkFBd0MvTztNQUUxQyxTQUYwQ0E7T0FJbkI7WUFKbUJBO21DQUlELHFDQUF2QkM7O09BQ0Y7WUFMMEJEOzRCQUtmLHFDQUFoQkU7MkJBQThCO0lBalh6QjthQWlZZDhPLHFCQUFvQmhQO01BQ3RCLE9BRHNCQTs7U0FHRjtjQUhFQTtvQ0FHYSxxQ0FBcEJDOzs7U0FDQztjQUpNRDtnQ0FJSyxxQ0FBaEJFOzs7U0FDUztjQUxFRjtvQ0FLYSxxQ0FBcEJHOzs7U0FDSTtjQU5HSDttQ0FNWSxxQ0FBcEJJOzs7U0FDVztjQVBISjs7b0NBT3dCLHFDQUExQks7OztTQUNDO2NBUkNMOztnQ0FRZSxxQ0FBckJVOzs7U0FDRztjQVRHVjttQ0FTWSxxQ0FBcEJXOzs7U0FDaUI7Y0FWVFg7Ozs7WUFVbUMscUNBQS9CWTs7O1NBQ1Q7Y0FYS1o7aUNBV08scUNBQWpCYTsyQkFBK0I7SUE1WTNCO2FBcVpkb08saUNBQXFDalA7TUFFdkMsT0FGdUNBOztTQUl4QjtjQUp3QkE7K0JBSWQscUNBQWZDOzs7U0FDTztjQUxzQkQ7aUNBS1YscUNBQWpCRTs7O1NBQ0c7Y0FOd0JGOytCQU1iLHFDQUFoQkc7MkJBQThCO0lBM1p4QjthQW9hZCtPLCtCQUFrQ2xQO01BSU87Ozs7OytDQUpQQTs7TUFFVTs7Ozs7cURBRlZBO3NCQUs2QjtJQXphakQ7YUErYWRtUCx5QkFBMEJuUDtNQUV1Qjs7Ozs7cURBRnZCQTtrQkFHc0M7SUFsYmxEO2FBMmJkb1AsNkJBQThCcFA7TUFJRjs7Ozs7K0NBSkVBOztNQUVXOzs7OztxREFGWEE7c0JBS21CO0lBaGNuQzthQXljZHFQLDJCQUE0QnJQO01BSWdCOzs7OzsrQ0FKaEJBOztNQUUyQjs7Ozs7cURBRjNCQTtzQkFLb0M7SUE5Y2xEO2FBeWRkc1AsK0JBQStDdFA7TUFTL0M7Ozs7O3lFQVQrQ0E7O09BTUM7Ozs7K0NBTkRBOztPQUk3QjtpRUFKNkJBO01BRTlCOzs7OztxREFGOEJBO3NCQVU0QztJQW5lN0U7YUF5ZWR1UCwrQkFBeUN2UDtNQUlSOzs7OzsrQ0FKUUE7O01BRXhCOzs7dUVBRndCQTtzQkFLcUI7SUE5ZWhEO2FBb2Zkd1AsK0JBQXlEeFA7TUFFOUM7OztxRUFGOENBO2tCQUdDO0lBdmY1QzthQXFnQmR5UCwrQkFBa0R6UDtNQWN2Qjs7Ozs7K0NBZHVCQTs7T0FZMUI7Ozs7K0NBWjBCQTs7T0FVcEI7Ozs7K0NBVm9CQTs7T0FRbkI7Ozs7K0NBUm1CQTs7T0FNdkI7Ozs7K0NBTnVCQTs7T0FJdEI7Ozs7K0NBSnNCQTs7TUFFWDs7Ozs7cURBRldBO3NCQWVnQjtJQXBoQnBEO2FBMGhCZDBQLCtCQUF5QzFQO01BRTlCOzs7cUVBRjhCQTtrQkFFeUI7SUE1aEJwRDthQWtpQmQyUCwrQkFBeUMzUDtNQUVmOzs7OztxREFGZUE7a0JBR2dCO0lBcmlCM0M7YUFxakJkNFAsaUNBQWdENVA7TUFrQnJCOzs7OzsrQ0FsQnFCQTs7T0FnQnhCOzs7OytDQWhCd0JBOztPQWNSOzs7OytDQWRRQTs7T0FZaEI7Ozs7K0NBWmdCQTs7T0FVUDs7OzsrQ0FWT0E7O09BUWY7Ozs7K0NBUmVBOztPQU1yQjs7OzsrQ0FOcUJBOztPQUl0Qjs7OzsrQ0FKc0JBOztNQUVWOzs7OztxREFGVUE7c0JBbUJnQjtJQXhrQmxEO2FBOGtCZDZQLCtCQUErQzdQO01BRXJCOzs7OztxREFGcUJBO2tCQUdnQjtJQWpsQmpEO2FBNmxCZDhQLGlDQUE4RDlQO01BVW5DOzs7OzsrQ0FWbUNBOztPQVF0Qzs7OzsrQ0FSc0NBOztPQU10Qjs7OzsrQ0FOc0JBOztPQUlyQzs7d0VBSnFDQTs7TUFFckM7Ozs7O3FEQUZxQ0E7c0JBV2U7SUF4bUIvRDthQWluQmQrUCwrQkFBc0MvUDtNQUlYOzs7OzsrQ0FKV0E7O01BRWY7Ozs7O3FEQUZlQTtzQkFLaUI7SUF0bkJ6QzthQStuQmRnUSxpQ0FBMENoUTtNQUlmOzs7OzsrQ0FKZUE7O01BRW5COzs7OztxREFGbUJBO3NCQUtpQjtJQXBvQjdDO2FBNm9CZGlRLCtCQUF3Q2pRO01BSVA7Ozs7OytDQUpPQTs7TUFFZDs7Ozs7cURBRmNBO3NCQUtzQjtJQWxwQmhEO2FBZ3FCZGtRLCtCQUEwQ2xRO01BY1o7Ozs7OytDQWRZQTs7T0FZWDs7OzsrQ0FaV0E7O09BVWY7Ozs7K0NBVmVBOztPQVFkOzs7OytDQVJjQTs7T0FNRjs7OzsrQ0FORUE7O09BSWY7Ozs7K0NBSmVBOztNQUVuQjs7Ozs7cURBRm1CQTtzQkFlb0I7SUEvcUJoRDthQTJyQmRtUSxpQ0FBc0RuUTtNQVUzQjs7Ozs7K0NBVjJCQTs7T0FROUI7Ozs7K0NBUjhCQTs7T0FNdEI7Ozs7K0NBTnNCQTs7T0FJN0I7Ozs7K0NBSjZCQTs7TUFFN0I7Ozs7O3FEQUY2QkE7c0JBV2dCO0lBdHNCeEQ7YUFtdEJkb1EsaUNBQXdDcFE7TUFZYjs7Ozs7K0NBWmFBOztPQVVoQjs7OzsrQ0FWZ0JBOztPQVF0Qjs7bUVBUnNCQTs7T0FNUjs7OzsrQ0FOUUE7O09BSWpCOztzRUFKaUJBOztNQUVUOzs7OztxREFGU0E7c0JBYWlCO0lBaHVCM0M7YUF5dUJkcVEsaUNBQWtDclE7TUFJUDs7Ozs7K0NBSk9BOztNQUVYOzs7OztxREFGV0E7c0JBS2tCO0lBOXVCdEM7YUFvdkJkc1EsK0JBQWlDdFE7TUFFVDs7Ozs7cURBRlNBO2tCQUdlO0lBdnZCbEM7YUE2dkJkdVEsOEJBQStCdlE7TUFFWjs7Ozs7cURBRllBO2tCQUV5QztJQS92QjFEO2FBMHdCZHdRLCtCQUFvQ3hRO01BU3BDOzs7Ozt5RUFUb0NBOztPQU1UOzs7OytDQU5TQTs7T0FJWjs7OzsrQ0FKWUE7O01BRW5COzs7dUVBRm1CQTtzQkFVNEM7SUFweEJsRTthQTB4QmR5USxpQ0FBbUR6UTtNQUluQzs7bUVBSm1DQTtNQUVsQzs7O3VFQUZrQ0E7c0JBS0k7SUEveEJ6QzthQXF5QmQwUSxpQ0FBNkMxUTtNQUVsQzs7O3FFQUZrQ0E7a0JBRXlCO0lBdnlCeEQ7YUE2eUJkMlEsaUNBQTRDM1E7TUFFakI7Ozs7O3FEQUZpQkE7a0JBR2M7SUFoekI1QzthQXN6QmQ0USxpQ0FBb0M1UTtNQUVsQjs7Ozs7cURBRmtCQTtrQkFFcUM7SUF4ekIzRDthQTh6QmQ2USxhQUFZN1E7TUFDSTs7Ozs7cURBREpBO2tCQUNzQztJQS96QnBDO2FBdTBCZDhRLHFCQUFzQjlRO01BQ3hCLFNBRHdCQTtPQUdWO1lBSFVBOzBCQUdELHFDQUFkQzs7T0FDTyxRQUpRRCx5QkFJRyw0QkFBaEJFOzJCQUErQztJQTMwQjFDO2FBaTFCZDZRLHFCQUFzQi9RO01BSWI7aUVBSmFBO09BR2QseURBSGNBO01BRWQsbURBRmNBLGNBSXdCO0lBcjFCaEM7YUEyMUJkZ1IsNkJBQThCaFI7TUFJckI7bUVBSnFCQTtPQUd0Qjs2REFIc0JBO01BRXRCOzs0REFGc0JBLGNBSXVCO0lBLzFCdkM7YUE2MkJkaVIsOEJBQStCalI7TUFlVTs7Ozs7K0NBZlZBOztPQWFnQjs7OzsrQ0FiaEJBOztPQVdtQjs7OzsrQ0FYbkJBOztPQVNsQixxQ0FUa0JBO09BTy9COzs7OytDQVArQkE7O09BSWhCOztnRUFKZ0JBOztNQUViOzs7OztxREFGYUE7c0JBZ0I2QjtJQTczQjlDO2FBczRCZGtSLCtCQUNEbFI7TUFDRCxTQURDQTtPQUc0QjtZQUg1QkE7O29DQUdvRCxxQ0FBN0JDOztPQUVwQjtZQUxIRDt3Q0FLMEIsK0JBREpFOzJCQUNvRDtJQTU0QjNEO2FBczVCZGlSLCtCQUF1Q25SO01BT3ZDOzs7Ozt5RUFQdUNBOztPQUlTOzs7OytDQUpUQTs7TUFFdEI7OztpRUFGc0JBO3NCQVE2QztJQTk1QnRFO2FBMDZCZG9SLFdBQVlwUjtNQU1aOzs7Ozt5Q0FOWUE7O09BR1Esb0RBSFJBO09BRU87O29FQUZQQTs7TUFDRSxtREFERkEsY0FPNEM7SUFqN0IxQzthQXM4QmRxUixxQkFBc0JyUjtNQTJCUDs7a0VBM0JPQTtPQXlCRzs7OzsrQ0F6QkhBOztPQXVCTTs7OzsrQ0F2Qk5BOztPQXFCK0I7Ozs7K0NBckIvQkE7O09BbUJ0Qjs7Ozt5Q0FuQnNCQTs7T0FnQlI7aUVBaEJRQTtPQWNvQjs7OzsrQ0FkcEJBOztPQVlJOzs7OytDQVpKQTs7T0FVZTs7OzsrQ0FWZkE7O09BUXVCOzs7OytDQVJ2QkE7O09BTVM7Ozs7K0NBTlRBOztPQUlpQjs7OzsrQ0FKakJBOztNQUVkLHdEQUZjQSxjQTJCaUM7SUFqK0J6QzthQTYrQmRzUiwrQkFBcUN0UjtNQVVnQjs7Ozs7K0NBVmhCQTs7T0FRZjs7OzsrQ0FSZUE7O09BTVQ7Ozs7K0NBTlNBOztPQUliOzt1RUFKYUE7O01BRXRCOzs7OztxREFGc0JBO3NCQVcwQztJQXgvQmpFO2FBa2dDZHVSLG9CQUFxQnZSO01BQ3ZCLE9BRHVCQTs7U0FJbkI7Y0FKbUJBO3NDQUlBLCtCQURKQzs7O1NBR2Y7Y0FObUJEOzs2Q0FNMEIseUJBRExFOzs7U0FFckI7Y0FQQUY7b0NBT21CLHFDQUF4Qkc7MkJBQXNDO0lBemdDeEM7YUFpaENkcVIsK0JBQXFDeFI7TUFFdkMsU0FGdUNBO09BSTFCO1lBSjBCQTsyQkFJbEIscUNBQWJDOztPQUNLLFFBTDBCRCx3QkFLbEIsNkJBQWJFOzJCQUE2QztJQXRoQ3JDO2FBOGhDZHVSLGtCQUFtQnpSO01BQ3JCLFNBRHFCQTtPQUdGO1lBSEVBOytCQUdhLHFDQUFwQkM7O09BQ0ssUUFKRUQsMkJBSWMsMkJBQXJCRTsyQkFBbUQ7SUFsaUNqRDthQTJpQ2R3UiwrQkFBa0MxUjtNQUVwQyxTQUZvQ0E7T0FLaEM7WUFMZ0NBO2dDQUtqQiwrQkFESkM7O09BRVU7WUFOV0Q7O2dDQU1TLHFDQUF6QkU7MkJBQXVDO0lBampDM0M7YUEyakNkeVIsK0JBQTBDM1I7TUFNMUM7Ozs7O3lDQU4wQ0E7O01BRzFDOzs7OztxREFIMENBO3NCQU82QztJQWxrQ3pFO2FBcWxDZDRSLG1CQUFvQjVSO01BdUJwQjs7Ozs7K0NBdkJvQkE7O09Bb0JWLGdDQXBCVUE7T0FrQkssd0RBbEJMQTtPQWdCUTs7OzsrQ0FoQlJBOztPQWNGOztnRUFkRUE7O09BWTRCOzs7OytDQVo1QkE7O09BVWE7Ozs7eUNBVmJBOztPQVFjOzs7O3lDQVJkQTs7T0FNTTs7OzsrQ0FOTkE7O09BSVM7Ozs7K0NBSlRBOztNQUVNOzs7OztxREFGTkE7c0JBd0JrRTtJQTdtQ3hFO2FBd25DZDZSLCtCQUEwQzdSO01BUWI7Ozs7OytDQVJhQTs7T0FNakI7Ozs7K0NBTmlCQTs7T0FJekI7O29FQUp5QkE7O01BRXpCOzs7OztxREFGeUJBO3NCQVNtQjtJQWpvQy9DO2FBOG9DZDhSLGdCQUFpQjlSO01BVWpCOzs7OzsrQ0FWaUJBOztPQU93Qzs7OzsrQ0FQeENBOztPQUtqQjs7OzsrQ0FMaUJBOztPQUVBLDZDQUZBQTtNQUNDOzs7OztxREFEREE7c0JBV3NFO0lBenBDekU7YUF3cUNkK1Isc0JBQXVCL1I7TUFpQnZCOzs7OzsrQ0FqQnVCQTs7T0FjTzs7d0VBZFBBOztPQVlDOzt1RUFaREE7O09BVUs7Ozs7K0NBVkxBOztPQVFEOzs7OytDQVJDQTs7T0FNOEI7Ozs7K0NBTjlCQTs7T0FJTiwrQ0FKTUE7TUFFUjs7Ozs7cURBRlFBO3NCQWtCMEQ7SUExckNuRTthQXlzQ2RnUyxlQUFnQmhTO01BZWU7Ozs7O3lDQWZmQTs7T0FhWTs7OzsrQ0FiWkE7O09BV2hCOzs7OytDQVhnQkE7O09BUUQ7O2tFQVJDQTs7T0FNUzs7OzsrQ0FOVEE7O09BSXFDOzs7OytDQUpyQ0E7O09BRUk7O3FFQUZKQTs7TUFDSixzREFESUEsY0FnQndCO0lBenRDMUI7YUFrdUNkaVMsd0JBQXlCalM7TUFDM0IsU0FEMkJBO09BR0osUUFISUEsZ0NBR2Usc0JBQXhCQzs7T0FFZDtZQUx1QkQ7MENBS0csOEJBRExFOzJCQUNzQztJQXZ1Qy9DO2FBaXZDZGdTLDZCQUE4QmxTO01BQ2hDLE9BRGdDQTtlQUdkLFFBSGNBLDJCQUdELGVBQWxCQzs7U0FDZSxRQUpJRCxvQ0FJcUIsbUJBQTlCRTs7O1NBQ0EsUUFMU0YsZ0NBS1MscUJBQXZCRzsyQkFBK0M7SUF0dkNqRDthQWt3Q2RnUyxzQkFBdUJuUztNQUN6QixPQUR5QkE7ZUFHTixRQUhNQSw0QkFHUSxlQUFuQkM7O1NBRVY7Y0FMcUJEOzZDQUtNLHFCQURMRTs7O1NBR3RCO2NBUHFCRjtrREFPZ0MsbUJBRE5HOzs7U0FFNUIsUUFSRUgsZ0NBUWdCLGVBQXZCSTs7U0FDUyxRQVRGSixvQ0FTd0IsbUJBQTNCSzsyQkFBaUQ7SUEzd0N2RDthQXV4Q2QrUiwrQkFBOENwUztNQVd2Qjs7O3dFQVh1QkE7O09BUzlDOzs7O3lFQVQ4Q0E7O09BTUU7Ozs7K0NBTkZBOztPQUk1Qjs7aUVBSjRCQTs7TUFFN0I7Ozs7O3FEQUY2QkE7c0JBWWE7SUFueUM3QzthQWt6Q2RxUyxlQUFnQnJTO01BY1A7b0RBZE9BO09BYU07O3NFQWJOQTs7T0FXWTs7OzsrQ0FYWkE7O09BU0gsK0NBVEdBO09BT3FCOzs7O3lDQVByQkE7O09BS0UsbURBTEZBO09BR0ksc0RBSEpBO01BQ1M7Ozs7O3FEQURUQTtzQkFjbUM7SUFoMENyQzthQWcxQ2RzUyxhQUFjdFM7TUFnQkM7c0RBaEJEQTtPQWNrQzs7OzsrQ0FkbENBOztPQVl5Qzs7OzsrQ0FaekNBOztPQVVrQzs7OzsrQ0FWbENBOztPQVFVO2dFQVJWQTtPQU11Qjs7OzsrQ0FOdkJBOztPQUlVOzs7OytDQWxIeEJpUyx3QkE4R2NqUzs7T0FHRCx3Q0FIQ0E7TUFDUzs7Ozs7OzRDQTl0Q3ZCZ08sdUJBNnRDY2hPO3NCQWdCeUM7SUFoMkN6QzthQTYyQ2R1UyxpQ0FBaUR2UztNQVlOOzs7OzsrQ0FaTUE7O09BVWY7Ozs7K0NBVmVBOztPQVFEOzs7OytDQVJDQTs7T0FNNUI7O3dFQU40QkE7O09BSWhDLDZDQUpnQ0E7TUFFbkMsZ0RBRm1DQSxjQWE2QjtJQTEzQ2hFO2FBbzRDZHdTLGlDQUFrRHhTO01BTTdCOzs7d0VBTjZCQTs7T0FJakMsK0NBSmlDQTtNQUVwQyxrREFGb0NBLGNBT1U7SUEzNEM5QzthQXM1Q2R5UyxpQ0FBMEN6UztNQVFNOzs7OzsrQ0FSTkE7O09BTXpCLCtDQU55QkE7T0FJM0IseUNBSjJCQTtNQUV0Qjs7Ozs7cURBRnNCQTtzQkFTbUM7SUEvNUMvRDthQTQ2Q2QwUyxpQ0FBNEMxUztNQVlPOzs7OzsrQ0FaUEE7O09BVXZCOzt3RUFWdUJBOztPQVEzQiwrQ0FSMkJBO09BTTdCLHlDQU42QkE7T0FJbEI7Ozs7K0NBSmtCQTs7TUFFekI7OztxRUFGeUJBO3NCQWFvQztJQXo3Q2xFO2FBKzdDZDJTLGlDQUE0RDNTO01BSWhELGlEQUpnREE7TUFFeEM7Ozs7O3FEQUZ3Q0E7c0JBS0E7SUFwOEM5QzthQXk5Q2Q0UyxpQ0FBcUQ1UztNQThCbkM7MkRBOUJtQ0E7T0E0QnRCOzs7OytDQTVCc0JBOztPQTBCakI7Ozs7K0NBMUJpQkE7O09Bd0JuQzs7bUVBeEJtQ0E7O09Bc0JwQzs4REF0Qm9DQTtPQW9CckQ7Ozs7K0NBcEJxREE7O09BaUJ6Qjs7OzsrQ0FqQnlCQTs7T0FlekMsZ0RBZnlDQTtPQWFyRDs7Ozt5Q0FicURBOztPQVVuQjs7OzsrQ0FWbUJBOztPQVFoQzs7OzsrQ0FSZ0NBOztPQU1HOzs7OytDQU5IQTs7T0FJakI7Ozs7K0NBSmlCQTs7TUFFMUI7Ozs7O3FEQUYwQkE7c0JBK0JLO0lBeC9DNUM7YUFtZ0RkNlMsaUNBQTRDN1M7TUFRZDs7Ozs7K0NBUmNBOztPQU1mOzs7OytDQU5lQTs7T0FJUjs7OzsrQ0FKUUE7O01BRXhCOzs7OztxREFGd0JBO3NCQVNtQjtJQTVnRGpEO2FBd2hEZDhTLGlDQUE0QzlTO01BV0s7Ozs7OytDQVhMQTs7T0FTNUM7Ozs7eUNBVDRDQTs7T0FNVjs7OzsrQ0FOVUE7O09BSWY7Ozs7K0NBSmVBOztNQUV4Qjs7Ozs7cURBRndCQTtzQkFZb0M7SUFwaURsRTthQXdqRGQrUyxpQ0FBbUQvUztNQTJCckI7Ozs7OytDQTNCcUJBOztPQXlCRjs7OzsrQ0F6QkVBOztPQXVCdEI7Ozs7K0NBdkJzQkE7O09BcUJsQzs7a0VBckJrQ0E7O09BbUI5Qjs7OzsrQ0FuQjhCQTs7T0FpQnZDLGtEQWpCdUNBO09BZW5EOzs7O3lDQWZtREE7O09BWWpCOzs7OytDQVppQkE7O09BVWY7Ozs7K0NBVmVBOztPQVF0Qjs7OzsrQ0FSc0JBOztPQU14Qjs7aUVBTndCQTs7T0FJVDs7OzsrQ0FKU0E7O01BRWxDOzs0REFGa0NBLGNBNEJrQjtJQXBsRHZEO2FBNmxEZGdULGlDQUFrRGhUO01BS2xEOzs7Ozt5Q0FMa0RBOztNQUVqQjs7Ozs7cURBRmlCQTtzQkFNMEI7SUFubUQ5RDthQXluRGRpVCxpQ0FBaUVqVDtNQStCL0M7MkRBL0IrQ0E7T0E2QjVDOzs7OytDQTdCNENBOztPQTJCckM7NkRBM0JxQ0E7T0F5Qi9DLDZDQXpCK0NBO09BdUJyRCxrREF2QnFEQTtPQXFCbEM7Ozs7K0NBckJrQ0E7O09BbUI1Qzs7bUVBbkI0Q0E7O09BaUJwQzs7OzsrQ0FqQm9DQTs7T0FlZDs7OzsrQ0FmY0E7O09BYXJDOzs7OytDQWJxQ0E7O09BV3BDOzt3RUFYb0NBOztPQVNqRTs7Ozt5Q0FUaUVBOztPQU0vQjs7OzsrQ0FOK0JBOztPQUk3Qjs7OzsrQ0FKNkJBOztNQUVwQzs7Ozs7cURBRm9DQTtzQkFnQ0k7SUF6cER2RDthQXdxRGRrVCxpQ0FBNkNsVDtNQWdCM0I7MkRBaEIyQkE7T0FjeEI7Ozs7K0NBZHdCQTs7T0FZakMsa0RBWmlDQTtPQVVYOzs7OytDQVZXQTs7T0FRbEI7O2lFQVJrQkE7O09BTU47Ozs7K0NBTk1BOztPQUk1QjtnRUFKNEJBO01BRXZCOztpRUFGdUJBLGNBaUJNO0lBenJEckM7YUErc0RkbVQsaUNBQTZDblQ7TUFnQ1g7Ozs7O3lDQWhDV0E7O09BOEIzQixvREE5QjJCQTtPQTRCZDs7OzsrQ0E1QmNBOztPQTBCVDs7OzsrQ0ExQlNBOztPQXdCM0I7O3FFQXhCMkJBOztPQXNCNUI7Z0VBdEI0QkE7T0FvQjdDOzs7OytDQXBCNkNBOztPQWlCakI7Ozs7K0NBakJpQkE7O09BZWpDLGtEQWZpQ0E7T0FhN0M7Ozs7eUNBYjZDQTs7T0FVWDs7OzsrQ0FWV0E7O09BUXhCOzs7OytDQVJ3QkE7O09BTVc7Ozs7K0NBTlhBOztPQUlUOzs7OytDQUpTQTs7TUFFdkI7Ozs7O3FEQUZ1QkE7c0JBaUN1QjtJQWh2RHREO2FBdXdEZG9ULGlDQUF5RHBUO01BZ0N6RDs7Ozs7K0NBaEN5REE7O09BNkJwQzs7cUVBN0JvQ0E7O09BMkJ6Qjs7OzsrQ0EzQnlCQTs7T0F5QjVCOzs7OytDQXpCNEJBOztPQXVCTjs7OzsrQ0F2Qk1BOztPQXFCNUI7Ozs7eUNBckI0QkE7O09BbUI3Qjs7OzsrQ0FuQjZCQTs7T0FpQjFCOzs7OytDQWpCMEJBOztPQWUzQjs7OzsrQ0FmMkJBOztPQWFwQzs7OzsrQ0Fib0NBOztPQVd2QyxvREFYdUNBO09BUzdDLGtEQVQ2Q0E7T0FPekQ7Ozs7eUNBUHlEQTs7T0FJdkI7Ozs7K0NBSnVCQTs7TUFFakI7Ozs7O3FEQUZpQkE7c0JBaUNnRTtJQXh5RDNHO2FBMnpEZHFULGlDQUEyQ3JUO01Bd0IzQzs7Ozs7eUNBeEIyQ0E7O09BcUJ0Qjs7OzsrQ0FyQnNCQTs7T0FtQi9CLGtEQW5CK0JBO09BaUIzQzs7Ozt5Q0FqQjJDQTs7T0FjVDs7OzsrQ0FkU0E7O09BWVA7Ozs7K0NBWk9BOztPQVUxQjs7b0VBVjBCQTs7T0FRekIsb0RBUnlCQTtPQU1kOzs7OytDQU5jQTs7T0FJRDs7OzsrQ0FKQ0E7O01BRWpCOzs7OzswQ0FGaUJBO3NCQXlCZ0M7SUFwMUQ3RDthQW0yRGRzVCxpQ0FBcUN0VDtNQWdCbkI7MkRBaEJtQkE7T0FjcEI7Z0VBZG9CQTtPQVloQjs7OzsrQ0FaZ0JBOztPQVV6QixrREFWeUJBO09BUUg7Ozs7K0NBUkdBOztPQU1WOzttRUFOVUE7O09BSUU7Ozs7K0NBSkZBOztNQUVmOzs7aUVBRmVBO3NCQWlCTztJQXAzRDlCO2FBMDNEZHVULGlDQUFvQ3ZUO01BRVA7Ozs7O3FEQUZPQTtrQkFHbUI7SUE3M0R6QzthQTA0RGR3VCwrQkFBa0N4VDtNQVliOzs7c0VBWmFBOztPQVVUOzZEQVZTQTtPQVFYOzt3RUFSV0E7O09BTWY7O29FQU5lQTs7T0FJZCxpREFKY0E7TUFFWjs7O2lFQUZZQTtzQkFhVztJQXY1RC9CO2FBazZEZHlULGlDQUF1Q3pUO01BUUk7Ozs7OytDQVJKQTs7T0FNbEI7Ozs7K0NBTmtCQTs7T0FJdEIsK0NBSnNCQTtNQUV6QixrREFGeUJBLGNBUytCO0lBMzZEeEQ7YUFzN0RkMFQsaUNBQXNEMVQ7TUFRWDs7Ozs7K0NBUldBOztPQU1qQzs7OzsrQ0FOaUNBOztPQUlyQywrQ0FKcUNBO01BRXhDLGtEQUZ3Q0EsY0FTNkI7SUEvN0RyRTthQXE4RGQyVCxpQ0FBZ0QzVDtNQUU1Qjs7Ozs7cURBRjRCQTtrQkFHVTtJQXg4RDVDO2FBazlEZDRULGlDQUErQzVUO01BTWhDOzttRUFOZ0NBO09BSTFCOzs7OytDQUowQkE7O01BRTFCOzs7OztxREFGMEJBO3NCQU9DO0lBejlEbEM7YUFtK0RkNlQsaUNBQXVDN1Q7TUFNeEI7O21FQU53QkE7T0FJbEI7Ozs7K0NBSmtCQTs7TUFFbEI7Ozs7O3FEQUZrQkE7c0JBTWlDO0lBeitEMUQ7YUErK0RkOFQsZ0JBQWU5VDtNQUdHLHlEQUhIQTtNQUNLOzs7OztxREFETEE7c0JBRzhDO0lBbC9EL0M7YUE0L0RkK1QsaUNBQTZDL1Q7TUFNeEI7OztvRUFOd0JBOztPQUkzQixxREFKMkJBO01BRXpCOzs7OztxREFGeUJBO3NCQU9VO0lBbmdFekMsU0F3Z0VkZ1UsK0JBQW1EQTtNQUNyRDtxQkFEcURBO09BQ3JELEtBRHFEQTtNQUNyRDtRQU1JOytCQXdCcUIsUUFBSzs7MEJBTkwsbURBS3dDOzs7O2FBbkJwRCxzQkFhb0IsUUFBSTthQWJ4QjtlQUdvQixtREFTeUM7YUFaN0QsaUVBYXlCO1NBakJsQzs7OztTQTBCWTs7TUFoQ2hCO09BRUlFO1FBQXFCOzs7UUF1Q0o7O1NBREgsNENBeENkdFI7Ozs7U0EyQzBCOztNQU9kO1FBT2hCO1VBSUk7OztjQVVxQixzREFBeUI7OztjQURWOztlQUE5QjtzREF0RU5BO2NBc0VNLHVEQUFnRTtXQVR0RTs7OztXQVlZOztRQWhCVTtTQUF0QnVSO1VBQXNCOzs7Ozs7UUE4QkwsR0FyRmpCRDtVQTRGSjs7cUJBR1FFO2NBQ0g7Z0JBQ0U7OztvQkF3Q3FCO3dEQTFDcEJBLFlBeENKRCxVQWtGOEQ7OztvQkFEdkI7O3FCQUE5Qjs0REExSVR2UjtvQkEwSVMsdURBQWdFOzs7O3FCQW5DN0Q7dUJBNEJvQixxREFBeUI7cUJBNUI3Qzt1QkFHb0IsT0F6R2hDcVI7Ozs7Ozs7Ozs7dUJBc0h1Qjs7d0JBREg7K0RBdEhwQnJSO3dCQXFIaUI7OEVBYXdDO3FCQTNCN0M7NkVBNEI4QztpQkFoQ3ZEOzs7Ozs7aUJBMENZO2dCQTdFTSxZQWtGaUM7V0FwRDNCOzs7Ozs7O29CQUEzQlc7UUFOWTtNQXJDQSx1Q0FnR2tEO0lBNXBFbEQsU0E4cEVkOFEsK0JBQW1DQTtNQUNyQztxQkFEcUNBO09BQ3JDLDRCQURxQ0E7T0FDckMsc0JBRHFDQTtPQUNyQyx1QkFEcUNBO01BQ3JDO1FBUUk7OztZQVdPLE9BakJQRTtxQkFpQnNDO3FCQUN6Qiw4Q0FBOEI7OztZQUhSOzthQUE3Qiw0Q0FqQk4zUjtZQWlCTSx1REFBZ0U7U0FUdEU7Ozs7U0FjWTs7TUF0QmhCO09BSUk2UjtRQUFzQzs7O1FBOEJ0Qzs7O1lBNEVpQzs7YUFERDs7YUFGQzthQUREO2FBREU7Ozs7O2FBRkQ7YUFERDthQURFOzs7OzthQUZEO2FBREQ7YUFERTs7Ozs7YUFGRDthQUREO2FBREU7Ozs7O2FBRkQ7YUFERDtZQURFOzs7Ozs7Ozs7MEJBcUI2Qjs7O1lBeEI1Qjs7YUFBN0IsNENBdEZON1I7WUFzRk0sdURBQWdFOzs7O2FBaEQ3RDtlQXlDZ0M7O2dCQUZEOzs7OztnQkFGQztnQkFGRDtnQkFGRTs7Ozs7Z0JBRkQ7Z0JBRkQ7Z0JBRkU7Ozs7O2dCQUZEO2dCQUZEO2dCQUZFOzs7OztnQkFGRDtnQkFERDtlQUZFOzs7Ozs7Ozs2QkF5QjhCO2FBekMvRDtlQVlXOztnQkFESDt1REFqRGpCQTtnQkFnRGM7O21EQTlDZDJSO2VBOENjLHVEQUcyQjthQWJoQyxpRUF5Q2dFO1NBN0N6RTs7OztTQThFWTs7TUFoSGhCO09BK0JzQywyQ0E3MkNwQ3hEO09BMjJDcUQ7OztRQStGbkQ7OztZQWdCTSxlQUNRNEQ7Y0FDSDtxQkFER0E7ZUFZSywyQ0FaTEE7ZUFXRTs7bURBckpoQkg7ZUFxSmdCLE1BWEZHO2NBV0U7ZUFORzs7Z0JBQ21CLDJDQUZBQzs7O2tCQUVoQjtxREFoSnRCSjs7OzBDQXdKd0U7WUFmbEU7cURBL0dORSx5QkErSGlDOzswQkE3QlosbURBV1Y7U0FkWDs7OztTQWtDWTs7TUE5SmhCO09BMEhtQjs2Q0E5N0NqQjFEO09BMjdDd0U7OztRQWtEdEU7OztZQWdGUzs7OzBDQXhQVHNEO2FBaVM0QzthQUQxQjs7MENBN1JsQkc7YUE0UmU7O2lEQTdSZkQ7WUE2UmUsZUE3QllHO2NBRUQ7OztrQkFiZkc7a0JBV2dCSDtlQUlEO2NBQ0EsVUFMQ0E7Y0FLRDtnQkFHSyxJQUQwQkM7Z0JBRXZCOzs7b0JBcEJ2QkU7b0JBa0I4Q0Y7a0JBS3ZCO3lCQVpQRDttQkFhVTs7Z0RBTm9CQyxhQVA5QkQ7a0JBYVU7Z0JBTE47aUJBU0csTUFqQlBBO2lCQWtCVTs7O29CQTdCMUJHO29CQVdnQkg7Z0JBa0JVO2NBYlg7ZUFrQkssTUF2QkpBO2VBd0JPOzs7a0JBbkN2Qkc7a0JBV2dCSDtjQXdCTyx5REFHc0M7WUE1QnREOzs7OztnQkEzSWxCRTthQTBJa0I7MkJBRk12TyxLQUFpQkM7Y0FDcEIsNENBREdELEtBQWlCQyxLQUNLO1lBRi9COzthQURIO2FBREg7OERBc0MrRDs7MEJBdkRuRCxtREFXVjs7OzthQXpFRjtlQWtCUTs7OzZDQTlMakIrTjtnQkF5T29CO2dCQURHOzs2Q0FyT3ZCRztlQXFPdUIsZUFoQ1lFO2lCQUVEOzs7cUJBYmZHO3FCQVdnQkg7a0JBS0k7aUJBQ0wsVUFOQ0E7aUJBTUQ7bUJBSUssSUFEMEJDO21CQUV2Qjs7O3VCQXRCdkJFO3VCQW9COENGO3FCQUt2Qjs0QkFkUEQ7c0JBZVU7O21EQU5vQkMsYUFUOUJEO3FCQWVVO21CQUxOO29CQVVHLE1BcEJQQTtvQkFxQlU7Ozt1QkFoQzFCRzt1QkFXZ0JIO21CQXFCVTtpQkFmWDtrQkFvQkssTUExQkpBO2tCQTJCTzs7O3FCQXRDdkJHO3FCQVdnQkg7aUJBMkJPLHlEQUdzQztlQS9CdEQ7Ozs7O21CQWpGMUJFO2dCQWdGMEI7OEJBRk12TyxLQUFpQkM7aUJBQ3BCLDRDQURHRCxLQUFpQkMsS0FDSztlQUYvQjs7Z0JBREg7Z0JBREg7aUVBd0MrQjthQTdEdkM7ZUFHb0I7dURBOUs3QmdPLHNCQTBMcUM7YUFmNUIsaUVBNkR3QztTQWpFakQ7Ozs7U0EySFk7O01BcFNoQjtPQXFLSWhSO1FBQWtCOztnQkFBbEJBLFFBc0krQztJQTE4RW5DLFNBNDhFZHdSLCtCQUFtQ0E7TUFDckM7cUJBRHFDQTtPQUNyQyxzQkFEcUNBO09BQ3JDLDBCQURxQ0E7T0FDckMsK0JBRHFDQTtPQUNyQywrQkFEcUNBO01BQ3JDO1FBVUk7OztZQU1NLHNCQVdvQixRQUFLO1lBWHpCO2NBR29CLG1EQU93QztZQVY1RCxpRUFXMEI7K0JBYlgsUUFBSTs7OzthQURELGtCQVR4QkcsaUNBU29FO1NBSHBFOzs7O1NBbUJZOztNQTdCaEI7T0FLSUM7UUFBa0Q7OztRQW1DbEQ7OztZQXVEMkM7WUFBakM7OzBDQTdGVkg7YUErRlEsYUE5RlJDO3NCQWlHYTtzQkFFQTtZQVA4QixVQVFHO1lBQWpDOzswQ0FyR2JEO2FBc0dnQjtZQVQyQixVQVdJO1lBQWpDOzswQ0F4R2RBO2FBeUdtQjtZQVp3QixVQWNPO1lBQWpDO2dEQTNHakJBO3FCQTRHK0I7cUJBQ2QsNkNBQTRCOzswQkE3QnhCLG1EQVdWOzs7O2FBakRGO2VBa0J3QztlQUFqQzs7NkNBNURoQkE7Z0JBOERnQixhQTdEaEJDO3lCQWdFcUI7eUJBRUE7ZUFQNEIsVUFTRztlQUFqQzs7NkNBckVuQkQ7Z0JBc0VpQztlQVZnQixVQWF4QjtlQURIOzs2Q0F4RXRCQTtnQkEwRXNCO2VBZDJCLFVBaUJyQjtlQURIO21EQTVFekJBO3dCQThFeUI7d0JBQ0EsK0NBQTRCO2FBckM1QztlQUdvQjt1REE5QzdCVCxzQkEwRHFDO2FBZjVCLGlFQXFDNkM7U0F6Q3REOzs7O1NBeUVZOztNQWpIaEI7T0FvQ0lhO1FBQXdDOzs7UUF3RnhDOzs7WUFxRWlEO1lBQXpDOzsyQ0EvTFJKO2NBb01pQjs7ZUFESDs7NENBbk1kQTtlQWtNVztlQURhOztZQUloQixxREFBd0I7OzBCQXBCWCxtREFXVjs7OzthQTlERjtlQTZDVTtlQURIOzs4Q0ExS2hCQTtpQkErS3lCOztrQkFESDs7K0NBOUt0QkE7a0JBNkttQjtrQkFEYTs7ZUFJaEIscURBQXdCO2FBbEQvQjtlQTZCb0I7dURBNUo3QlQsc0JBd0txQzthQXpDNUI7Ozs7a0JBSVE7b0JBd0JvQixxREFBc0I7a0JBeEIxQztvQkF1QmM7O3FCQURIOzttREF4SjVCUztxQkFzSnlCOzs7d0JBbkp6Qkc7O3FCQWtKK0I7cUJBREg7NERBdEo1QnZTO3FCQXFKK0I7cUJBREg7NERBcEo1QkE7cUJBbUp5QjtxQkFESDsyRUFTb0M7a0JBdkJ6QzswRUF3QjJDO2FBNUJuRDt1RUFrRGdDO1NBdER6Qzs7OztTQTZFWTs7TUF6TWhCO09Bd0hJeVM7UUFBOEM7OztRQTRGOUM7OztZQWdCTTs7cUJBaE1ORDtxQkFvRkFDLCtCQTZHMEM7OzBCQWRyQixtREFXVjtTQWRYOzs7O1NBbUJZOztNQXZPaEI7T0FnTkliO1FBQW1DOztnQkFBbkNBLHVCQStCdUI7SUE1ckZYLFNBOHJGZGMsK0JBQXlDQTtNQUMzQztpQ0FEMkNBO09BQzNDLCtCQUQyQ0E7TUFDM0M7UUFNSTs7O1lBZTJDO1lBQWpDOzswQ0FyQlZOO2FBdUJRLGFBdEJSQztzQkF5QmE7c0JBRUE7WUFQOEIsVUFRRztZQUFqQzs7MENBN0JiRDthQThCZ0I7WUFUMkIsVUFXSTtZQUFqQzs7MENBaENkQTthQWlDbUI7WUFad0IsVUFjTztZQUFqQzs7MENBbkNqQkE7YUFvQytCO1lBZlksVUFpQlU7WUFBakM7OzBDQXRDcEJBO2FBdUNrQztZQWxCUzthQXVCWDthQURIOzswQ0EzQzdCQTthQTBDMEI7YUFEYTthQUFoQjthQURZO29FQUk0Qjs7MEJBbkMxQyxtREFVVjtTQWJYOzs7O1NBd0NZOztNQTlDaEI7T0FFSU87UUFBbUM7O2dCQUFuQ0EsdUJBb0R1QjtJQXJ2RlgsU0F1dkZkQywwQkFBMkJDO01BQzdCLElBQUlDLHNCQUR5QkQ7TUFDN0I7UUFLSTs7O1lBS00sc0JBc0k2Qyw4QkFBZ0I7WUF0STdELHNCQXNJb0IsUUFBSztZQXRJekI7Y0FpSFE7Z0JBb0JPOztpQkFEWTt3RUFDcUI7Y0FwQnhDO2dCQWlCUTs7aUJBREc7dURBM0l6QkM7aUJBMkltQjt1RUFDK0I7Y0FqQnBDO3NFQW9CeUM7WUFySWpEO2NBMkZRO2dCQW9CTzs7aUJBRFk7d0VBQ3FCO2NBcEJ4QztnQkFpQlE7O2lCQURHO3VEQXJIekJBO2lCQXFIbUI7dUVBQytCO2NBakJwQztzRUFvQnlDO1lBL0dqRDtjQXFFUTtnQkFvQk87O2lCQURZO3dFQUNxQjtjQXBCeEM7Z0JBaUJROztpQkFERzt1REEvRnpCQTtpQkErRm1CO3VFQUMrQjtjQWpCcEM7c0VBb0J5QztZQXpGakQ7Y0E0Q1E7Z0JBdUJPOztpQkFEWTt3RUFDcUI7Y0F2QnhDO2dCQW9CVzs7aUJBREg7OytDQXpFdEJBO2lCQXdFeUI7aUJBREg7OytDQXZFdEJBO2lCQXNFbUI7dUVBSTJDO2NBcEJoRDtzRUF1QnlDO1lBbkVqRDtjQXdCUTtnQkFrQm9CLG1EQUFnQztjQWxCcEQ7Z0JBaUJROztpQkFESDs7K0NBbERuQkE7Z0JBa0RtQix1REFDcUM7Y0FqQjFDO3NFQWtCcUQ7WUExQzdEOzs7O2lCQUlRO21CQWtCb0IsbURBQWdDO2lCQWxCcEQ7bUJBaUJROztvQkFESDs7a0RBOUJuQkE7bUJBOEJtQix1REFDcUM7aUJBakIxQzt5RUFrQnFEOzs7Ozs7WUF0QjdEO3NFQXNJOEQ7K0JBeEkvQyxRQUFJO1NBSHpCOzs7O1NBNklZOztNQWxKaEI7T0FDSUM7UUFBaUM7O2dCQUFqQ0Esb0JBdUpnRTtJQWg1RnBELFNBazVGZEMsd0JBQXlCQztNQUMzQjt1QkFEMkJBO09BQzNCLFlBRDJCQTtPQUMzQixZQUQyQkE7T0FDM0IsZ0JBRDJCQTtPQUMzQixpQkFEMkJBO09BQzNCLGNBRDJCQTtNQUMzQjtRQVVJOzs7WUFlTSxPQXpCTkM7cUJBNEJVO3FCQUVBO3FCQUVBO3FCQUVBO3NCQUVBLFlBQXFDOzswQkF2QjFCLG1EQVVWO1NBYlg7Ozs7U0E0Qlk7O01BdENoQjtPQU1JTTtRQUFrRDs7OztVQTNxRnBENUg7O01BMnFGb0Q7UUEwQ2xEOzs7WUFLTSxzQkE2QzZDLDhCQUFnQjtZQTdDN0Qsc0JBNkNvQixRQUFLO1lBN0N6Qjs7OztpQkFJUSxzQkF3Q29CLE9BN0ZsQzBILGdCQTZGbUQ7aUJBeENyQzttQkF5Qm9CLGdCQTVFbENFOzBFQTBGa0U7aUJBdkNwRDs7OztzQkFJUSxzQkFvQm9CLE9BN0UxQ0YsZ0JBNkUyRDtzQkFwQnJDO3dCQUlvQixnQkEzRDFDRTsrRUEwRXlFO3NCQW5CbkQ7OEVBb0JzQztpQkF4QjlDOzJFQXdDc0M7WUE1QzlDO3NFQTZDOEQ7K0JBL0MvQyxRQUFJO1NBSHpCOzs7O1NBb0RZOztNQXBHaEI7T0E0Q0lDO1FBQTZDOzhDQTl0Ri9DOUg7TUE4dEYrQztRQWtFN0M7OztZQUtNLHNCQWdFNkMsOEJBQWdCO1lBaEU3RCxzQkFnRW9CLFFBQUs7WUFoRXpCO2NBaUNRO2dCQW1CSyxPQW5LbkIySDs7bUJBeUtnQztvQkFKMEJJLGdCQXJLMURKO29CQXlLZ0M7b0JBREg7MkRBMUs3QkY7bUJBeUswQjtnRUFGZ0NNOzttQkFNbkMsSUFEeUJDLFdBMUtoREw7bUJBNEswQjtnRUFGc0JLLFdBNUtoRFA7MEJBZ0x1QixJQURvQlEsTUE3SzNDTixvQkE4S3VCLFVBRG9CTSxPQUNVO2NBOUJ2QztnQkFHb0IsZ0JBakpsQ0o7dUVBK0ppRTtjQWpCbkQ7c0VBOEJ3QztZQS9EaEQ7Ozs7aUJBSVE7bUJBbUJLLE9BOUZuQkM7O3NCQWlHdUIsSUFEbUNJLE1BaEcxREosMEJBaUd1QixVQURtQ0k7O3NCQUduQyxJQUR5QkYsV0FsR2hERjtzQkFtR3VCLFVBRHlCRTs7c0JBR3pCLElBRG9CRyxjQXBHM0NMO3NCQXNHMEI7OzBEQUZpQkssY0E5STNDVixjQWdKc0U7aUJBM0J4RDttQkFHb0IsZ0JBcEhsQ0k7MEVBa0lrRTtpQkFqQnBEO3lFQTJCeUQ7O1lBL0JqRTtzRUFnRThEOytCQWxFL0MsUUFBSTtTQUh6Qjs7OztTQXVFWTs7TUFyTGhCO09BMEdJTztRQUE2Qzs4Q0E1eEYvQ3BJO01BNHhGK0M7UUFxRjdDOzs7WUFLTSxzQkFxSm9CLDhCQUFnQjtZQXJKcEMsc0JBb0o2QyxRQUFLO1lBcEpsRDtjQWlIUTtnQkF5QkssT0FwT25Cb0k7O21CQXlPNkI7b0JBSDZCQyxvQkF0TzFERDtvQkF5TzZCO29CQURZO29CQUFmOzt1REFGZ0NDOzttQkFNaEM7b0JBRnNCQyxpQkExT2hERjtvQkE0TzBCOzt1REFGc0JFOzttQkFHQSxzREFDckI7Y0FuQ2I7Z0JBR29CLE9BdlRsQ2Q7Ozs7Z0JBa1VtQjs2QkE3VG5CSztpQkE2VG1CO3VFQVNtRDtjQXZCeEQ7c0VBbUNjO1lBcEp0QjtjQTRFUTtnQkF5QkssT0E3UG5CQzs7bUJBa1E2QjtvQkFINkJTLG9CQS9QMURUO29CQWtRNkI7b0JBRFk7b0JBQWY7O3VEQUZnQ1M7O21CQU1oQztvQkFGc0JDLGlCQW5RaERWO29CQXFRMEI7O3VEQUZzQlU7O21CQUdBLHNEQUNyQjtjQW5DYjtnQkFHb0IsT0FsUmxDaEI7Ozs7Z0JBNlJtQjs2QkF4Um5CSztpQkF3Um1CO3VFQVNvRDtjQXZCekQ7c0VBbUNjO1lBL0d0QjtjQXdDUTtnQkF5QkssT0EzSm5CTzs7bUJBOEp1Qjs7bUJBRUE7O21CQUlHO29CQUhpQkssVUFqSzNDTDtvQkFvSzBCO29CQURBOztpREFGaUJLLFVBeFEzQ2Y7bUJBMFEwQiwwREFDeUI7Y0FsQ3JDO2dCQUdvQixPQTlPbENGOzs7O2dCQXlQbUI7NkJBcFBuQks7aUJBb1BtQjt1RUFTb0Q7Y0F2QnpEO3NFQWtDc0M7WUExRTlDOzs7O2lCQUlRO21CQXlCSyxPQXJMbkJDOztzQkF3THVCOztzQkFFQTs7c0JBSUc7dUJBSGlCWSxXQTNMM0NaO3VCQThMMEI7dUJBREE7O29EQUZpQlksV0FwTzNDaEI7c0JBc08wQiwwREFDeUI7aUJBbENyQzttQkFHb0IsT0ExTWxDRjs7OzttQkFxTm1CO2dDQWhObkJLO29CQWdObUI7MEVBU29EO2lCQXZCekQ7eUVBa0NzQzs7OztZQXRDOUM7c0VBcUpxQzsrQkF2SnRCLFFBQUk7U0FIekI7Ozs7U0E0Slk7O01BM1ZoQjtPQTJMSWM7UUFBMkM7OztRQTBLM0M7OztZQUtNLHNCQXNENkMsOEJBQWdCO1lBdEQ3RCxzQkFzRG9CLFFBQUs7WUF0RHpCOzs7O2lCQUlRO21CQStDTzs7NkJBeFpyQmY7NkJBc0xBZTs0QkF0TEFmOzRCQTBaeUMsOENBQTJCO2lCQWpEdEQ7bUJBOEJvQixnQkF0WWxDQzswRUFvWmtFO2lCQTVDcEQ7Ozs7c0JBSVE7d0JBc0JPOztrQ0FuWTdCRDtrQ0FzTEFlO2lDQXRMQWY7aUNBc1k2Qiw4Q0FBMkI7c0JBekJsQzt3QkFJb0IsZ0JBaFgxQ0M7K0VBK1h5RTtzQkFuQm5EOzhFQXlCbUM7aUJBN0IzQzsyRUFpRHVEO1lBckQvRDtzRUFzRDhEOytCQXhEL0MsUUFBSTtTQUh6Qjs7OztTQTZEWTs7TUFsYWhCO09BaVdJZTtRQUF5Qjs7Z0JBQXpCQSxlQXVFb0Q7SUEzekd4QyxTQTZ6R2RDLGlDQUF1QzlUO01BQ3pDLElBQUlWLGNBRHFDVTtNQUN6QztRQUlxQjs7U0FESCw0Q0FIZFY7Ozs7U0FNMEI7O01BS1Q7UUFLckI7VUFJSTs7O2NBS00sc0JBZ0Y2Qyw4QkFBZ0I7Y0FoRjdELHNCQWdGb0IsUUFBSztjQWhGekI7Z0JBb0VRO2tCQVdvQix3REFBNkI7Z0JBWGpEO2tCQVVROzttQkFESDswREF0R25CQTtrQkFzR21CLHVEQUNxQztnQkFWMUM7d0VBV2tEO2NBL0UxRDtnQkFvRFE7a0JBY29CLHdEQUE2QjtnQkFkakQ7a0JBYVc7O21CQURIOzBEQXpGdEJBO21CQXdGeUI7bUJBREg7MERBdkZ0QkE7bUJBc0ZtQjt5RUFJeUM7Z0JBYjlDO3dFQWNrRDtjQWxFMUQ7Z0JBb0NRO2tCQWNvQix3REFBNkI7Z0JBZGpEO2tCQWFXOzttQkFESDswREF6RXRCQTttQkF3RXlCO21CQURIOzBEQXZFdEJBO21CQXNFbUI7eUVBSXlDO2dCQWI5Qzt3RUFja0Q7Y0FsRDFEO2dCQW9CUTtrQkFjb0Isd0RBQTZCO2dCQWRqRDtrQkFhVzs7bUJBREg7MERBekR0QkE7bUJBd0R5QjttQkFESDswREF2RHRCQTttQkFzRG1CO3lFQUl5QztnQkFiOUM7d0VBY2tEO2NBbEMxRDs7OzttQkFJUTtxQkFjb0Isd0RBQTZCO21CQWRqRDtxQkFhVzs7c0JBREg7NkRBekN0QkE7c0JBd0N5QjtzQkFESDs2REF2Q3RCQTtzQkFzQ21COzRFQUl5QzttQkFiOUM7MkVBY2tEOzs7OztjQWxCMUQ7d0VBZ0Y4RDtpQ0FsRi9DLFFBQUk7V0FIekI7Ozs7V0F1Rlk7O1FBM0ZNO1NBQWxCVztVQUFrQjs7Ozs7O2tCQUFsQkE7TUFKWSx1Q0FtR3VDO0lBNzZHdkMsU0ErNkdkOFQsaUNBQXNDM1U7TUFDeEM7c0JBRHdDQTtPQUN4QyxjQUR3Q0E7T0FDeEMsT0FEd0NBO01BQ3hDO1FBT0k7OztZQVVvQjs7cURBakJwQkMsZUFFQUU7WUFlb0IsbURBaEJwQkQsY0FpQnNCOzswQkFSRCxtREFLVjtTQVJYOzs7O1NBYVk7O01BcEJoQjtPQUdJRTtRQUErQjs7Z0JBQS9CQSxzQkFzQnNCO0lBejhHVixTQTI4R2R3VSwrQkFBOEJ0VTtNQUNoQztzQkFEZ0NBO09BQ2hDLGNBRGdDQTtPQUNoQyxPQURnQ0E7TUFDaEM7UUFPSTs7O1lBVW1COztxREFqQm5CTCxlQUVBRTtZQWVtQixtREFoQm5CRCxjQWlCc0I7OzBCQVJELG1EQUtWO1NBUlg7Ozs7U0FhWTs7TUFwQmhCO09BR0lLO1FBQXVCOztnQkFBdkJBLGNBcUJzRDtJQXArRzFDLFNBcytHZHNVLE9BQU1wVTtNQUNSLGtCQURRQSxXQUNSLFVBRFFBO01BQ1I7UUFLcUI7O1NBREgsNENBSmRQOzs7O1NBTzBCOztNQU1UO1FBTXJCO1VBSUk7OztjQUtNLHNCQW9mNkMsOEJBQWdCO2NBcGY3RCxzQkFvZm9CLFFBQUs7Y0FwZnpCO2dCQXFlUTtrQkFjb0Isc0RBQTJCO2dCQWQvQztrQkFhUTs4REE3Z0J0QlE7bUJBNGdCeUI7bUJBREg7MERBNWdCdEJSO21CQTJnQm1CO3lFQUdnRDtnQkFickQ7d0VBY2dEO2NBbmZ4RDtnQkE2YlE7a0JBc0NvQix1REFBNEI7Z0JBdENoRDtrQkFtQzZCOzhEQTNmM0NRO21CQXdmMkMsMkNBeGYzQ0E7bUJBdWZ3QzttQkFIQSwyQ0FwZnhDQTttQkFtZnFDO21CQUZBLDJDQWpmckNBO21CQWdma0M7bUJBRkEsMkNBOWVsQ0E7bUJBNmUrQjttQkFGQSwyQ0EzZS9CQTttQkEwZTRCO21CQUZBLDJDQXhlNUJBO21CQXVleUI7bUJBREEsMkNBdGV6QkE7bUJBcWVzQjttQkFERzttQkFESDswREFwZXRCUjttQkFtZW1CO3lFQTJCMkM7Z0JBckNoRDt3RUFzQ2lEO2NBbmV6RDtnQkEwYVE7a0JBaUJvQixzREFBMkI7Z0JBakIvQztrQkFnQlc7OERBcmR6QlE7bUJBb2Q0QjttQkFESDswREFwZHpCUjttQkFtZHNCO21CQURHO21CQURIOzBEQWpkdEJBO21CQWdkbUI7eUVBTW9EO2dCQWhCekQ7d0VBaUJnRDtjQTNieEQ7Z0JBOFhRO2tCQTBDb0IsdURBQTRCO2dCQTFDaEQ7a0JBdUNnQzs4REFoYzlDUTttQkE2YjhDLDJDQTdiOUNBO21CQTRiMkM7bUJBSEEsMkNBemIzQ0E7bUJBd2J3QzttQkFGQSwyQ0F0YnhDQTttQkFxYnFDO21CQUZBLDJDQW5ickNBO21CQWtia0M7bUJBRkEsMkNBaGJsQ0E7bUJBK2ErQjttQkFGQSwyQ0E3YS9CQTttQkE0YTRCO21CQUZBLDJDQTFhNUJBO21CQXlheUI7bUJBREc7bUJBREg7MERBeGF6QlI7bUJBdWFzQjttQkFERzttQkFESDswREFyYXRCQTttQkFvYW1CO3lFQStCK0M7Z0JBekNwRDt3RUEwQ2lEO2NBeGF6RDtnQkEyV1E7a0JBaUJvQixzREFBMkI7Z0JBakIvQztrQkFnQlc7OERBdFp6QlE7bUJBcVo0QjttQkFESDswREFyWnpCUjttQkFvWnNCO21CQURHO21CQURIOzBEQWxadEJBO21CQWlabUI7eUVBTW9EO2dCQWhCekQ7d0VBaUJnRDtjQTVYeEQ7Z0JBK1RRO2tCQTBDb0IsdURBQTRCO2dCQTFDaEQ7a0JBdUNnQzs4REFqWTlDUTttQkE4WDhDLDJDQTlYOUNBO21CQTZYMkM7bUJBSEEsMkNBMVgzQ0E7bUJBeVh3QzttQkFGQSwyQ0F2WHhDQTttQkFzWHFDO21CQUZBLDJDQXBYckNBO21CQW1Ya0M7bUJBRkEsMkNBalhsQ0E7bUJBZ1grQjttQkFGQSwyQ0E5Vy9CQTttQkE2VzRCO21CQUZBLDJDQTNXNUJBO21CQTBXeUI7bUJBREc7bUJBREg7MERBeld6QlI7bUJBd1dzQjttQkFERzttQkFESDswREF0V3RCQTttQkFxV21CO3lFQStCK0M7Z0JBekNwRDt3RUEwQ2lEO2NBeld6RDtnQkE0U1E7a0JBaUJvQixzREFBMkI7Z0JBakIvQztrQkFnQlc7OERBdlZ6QlE7bUJBc1Y0QjttQkFESDswREF0VnpCUjttQkFxVnNCO21CQURHO21CQURIOzBEQW5WdEJBO21CQWtWbUI7eUVBTW9EO2dCQWhCekQ7d0VBaUJnRDtjQTdUeEQ7Z0JBZ1FRO2tCQTBDb0IsdURBQTRCO2dCQTFDaEQ7a0JBdUNnQzs4REFsVTlDUTttQkErVDhDLDJDQS9UOUNBO21CQThUMkM7bUJBSEEsMkNBM1QzQ0E7bUJBMFR3QzttQkFGQSwyQ0F4VHhDQTttQkF1VHFDO21CQUZBLDJDQXJUckNBO21CQW9Ua0M7bUJBRkEsMkNBbFRsQ0E7bUJBaVQrQjttQkFGQSwyQ0EvUy9CQTttQkE4UzRCO21CQUZBLDJDQTVTNUJBO21CQTJTeUI7bUJBREc7bUJBREg7MERBMVN6QlI7bUJBeVNzQjttQkFERzttQkFESDswREF2U3RCQTttQkFzU21CO3lFQStCK0M7Z0JBekNwRDt3RUEwQ2lEO2NBMVN6RDtnQkE2T1E7a0JBaUJvQixzREFBMkI7Z0JBakIvQztrQkFnQlc7OERBeFJ6QlE7bUJBdVI0QjttQkFESDswREF2UnpCUjttQkFzUnNCO21CQURHO21CQURIOzBEQXBSdEJBO21CQW1SbUI7eUVBTW9EO2dCQWhCekQ7d0VBaUJnRDtjQTlQeEQ7Z0JBaU1RO2tCQTBDb0IsdURBQTRCO2dCQTFDaEQ7a0JBdUNnQzs4REFuUTlDUTttQkFnUThDLDJDQWhROUNBO21CQStQMkM7bUJBSEEsMkNBNVAzQ0E7bUJBMlB3QzttQkFGQSwyQ0F6UHhDQTttQkF3UHFDO21CQUZBLDJDQXRQckNBO21CQXFQa0M7bUJBRkEsMkNBblBsQ0E7bUJBa1ArQjttQkFGQSwyQ0FoUC9CQTttQkErTzRCO21CQUZBLDJDQTdPNUJBO21CQTRPeUI7bUJBREc7bUJBREg7MERBM096QlI7bUJBME9zQjttQkFERzttQkFESDswREF4T3RCQTttQkF1T21CO3lFQStCK0M7Z0JBekNwRDt3RUEwQ2lEO2NBM096RDtnQkE4S1E7a0JBaUJvQixzREFBMkI7Z0JBakIvQztrQkFnQlc7OERBek56QlE7bUJBd040QjttQkFESDswREF4TnpCUjttQkF1TnNCO21CQURHO21CQURIOzBEQXJOdEJBO21CQW9ObUI7eUVBTW9EO2dCQWhCekQ7d0VBaUJnRDtjQS9MeEQ7Z0JBa0lRO2tCQTBDb0IsdURBQTRCO2dCQTFDaEQ7a0JBdUNnQzs4REFwTTlDUTttQkFpTThDLDJDQWpNOUNBO21CQWdNMkM7bUJBSEEsMkNBN0wzQ0E7bUJBNEx3QzttQkFGQSwyQ0ExTHhDQTttQkF5THFDO21CQUZBLDJDQXZMckNBO21CQXNMa0M7bUJBRkEsMkNBcExsQ0E7bUJBbUwrQjttQkFGQSwyQ0FqTC9CQTttQkFnTDRCO21CQUZBLDJDQTlLNUJBO21CQTZLeUI7bUJBREc7bUJBREg7MERBNUt6QlI7bUJBMktzQjttQkFERzttQkFESDswREF6S3RCQTttQkF3S21CO3lFQStCK0M7Z0JBekNwRDt3RUEwQ2lEO2NBNUt6RDtnQkErR1E7a0JBaUJvQixzREFBMkI7Z0JBakIvQztrQkFnQlc7OERBMUp6QlE7bUJBeUo0QjttQkFESDswREF6SnpCUjttQkF3SnNCO21CQURHO21CQURIOzBEQXRKdEJBO21CQXFKbUI7eUVBTW9EO2dCQWhCekQ7d0VBaUJnRDtjQWhJeEQ7Z0JBbUVRO2tCQTBDb0IsdURBQTRCO2dCQTFDaEQ7a0JBdUNnQzs4REFySTlDUTttQkFrSThDLDJDQWxJOUNBO21CQWlJMkM7bUJBSEEsMkNBOUgzQ0E7bUJBNkh3QzttQkFGQSwyQ0EzSHhDQTttQkEwSHFDO21CQUZBLDJDQXhIckNBO21CQXVIa0M7bUJBRkEsMkNBckhsQ0E7bUJBb0grQjttQkFGQSwyQ0FsSC9CQTttQkFpSDRCO21CQUZBLDJDQS9HNUJBO21CQThHeUI7bUJBREc7bUJBREg7MERBN0d6QlI7bUJBNEdzQjttQkFERzttQkFESDswREExR3RCQTttQkF5R21CO3lFQStCK0M7Z0JBekNwRDt3RUEwQ2lEO2NBN0d6RDtnQkFnRFE7a0JBaUJvQixzREFBMkI7Z0JBakIvQztrQkFnQlc7OERBM0Z6QlE7bUJBMEY0QjttQkFESDswREExRnpCUjttQkF5RnNCO21CQURHO21CQURIOzBEQXZGdEJBO21CQXNGbUI7eUVBTW9EO2dCQWhCekQ7d0VBaUJnRDtjQWpFeEQ7Ozs7bUJBSVE7cUJBMENvQix1REFBNEI7bUJBMUNoRDtxQkF1Q2dDO2lFQXRFOUNRO3NCQW1FOEMsMkNBbkU5Q0E7c0JBa0UyQztzQkFIQSwyQ0EvRDNDQTtzQkE4RHdDO3NCQUZBLDJDQTVEeENBO3NCQTJEcUM7c0JBRkEsMkNBekRyQ0E7c0JBd0RrQztzQkFGQSwyQ0F0RGxDQTtzQkFxRCtCO3NCQUZBLDJDQW5EL0JBO3NCQWtENEI7c0JBRkEsMkNBaEQ1QkE7c0JBK0N5QjtzQkFERztzQkFESDs2REE5Q3pCUjtzQkE2Q3NCO3NCQURHO3NCQURIOzZEQTNDdEJBO3NCQTBDbUI7NEVBK0IrQzttQkF6Q3BEOzJFQTBDaUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Y0E5Q3pEO3dFQW9mOEQ7aUNBdGYvQyxRQUFJO1dBSHpCOzs7O1dBMmZZOztRQS9mVztTQUF2QlM7VUFBdUI7Ozs7OztrQkFBdkJBO01BTFksdUNBd2dCbUI7SUE3L0huQixTQSsvSGRtVSw0QkFDR2hUO01BS29DOztPQUEvQjtPQURtQztPQUFuQyw0Q0FKTEE7T0FHRTtPQURIOytEQUcrRDtJQXJnSW5ELFNBdWdJZGlULDZCQUNHckQ7TUFBd0IscURBQXlCO0lBeGdJdEMsU0EwZ0lkc0Q7TUFFR3RELFlBQXNCaFIsVUFDeEJSO01BZ0JxQzs7T0FBOUIsNENBaEJQQTtPQWVxQztPQUE5Qiw0Q0FmUEE7T0FjSTthQWZvQlE7Ozs7Ozs7Ozs7TUFHdkI7UUFxQjRDOztTQUE3QiwyQ0F2QmhCUjtTQXNCNEI7U0FBZjtTQURIO1NBREg7U0FEWTtTQUFmO3FEQXBCRndSO01BeUJJLE9BekJKQSxXQXlCZ0I7SUFyaUlMLFNBdWlJZHVELCtCQUEwQ0E7TUFDNUM7aUJBRDRDQTtPQUM1QywrQkFENENBO09BQzVDLG9CQUQ0Q0E7T0FDNUMsc0JBRDRDQTtPQUM1Qyw0QkFENENBO09BQzVDLDBCQUQ0Q0E7T0FDNUMsK0JBRDRDQTtPQUM1QyxLQUQ0Q0E7T0FDNUMsY0FENENBO09BQzVDLFVBRDRDQTtPQUM1QyxzQkFENENBO09BQzVDLCtCQUQ0Q0E7T0FDNUMsdUJBRDRDQTtNQUM1QztRQWtCSTs7O1lBTU0sc0JBV29CLFFBQUs7WUFYekI7Y0FHb0IsbURBT3dDO1lBVjVELGlFQVcwQjsrQkFiWCxRQUFJOzs7O2FBREQsa0JBVnhCekMsaUNBVW9FO1NBSHBFOzs7O1NBbUJZOztNQXJDaEI7T0FhSUM7UUFBa0Q7OztRQWtDakM7O1NBREgsNENBdENkdlM7Ozs7U0F5QzBCOztNQVFkO1FBUWhCO1VBS0k7aUNBVXFCLE9BeEVyQkEsYUF3RW1DOzs7Y0FQZCxtREFNd0M7V0FUN0Q7V0FKRTs7Ozs7Ozs7OztXQWdCVTs7UUFPaEI7VUFLSTtpQ0FVcUIsT0F4R3JCUSxTQXdHK0I7OztjQVBWLG1EQU13QztXQVQ3RDtXQUpFOztrREFqd0hKNEw7Ozs7V0FpeEhjOztRQVlvQzs7O1lBSEU7NkNBbnBFcERnRjtlQWltRUVpRSwrQkF3QkFDO1NBd0IyRDt3Q0FBM0RyVTtRQUEyRDtVQWUzRDs7O2NBVXFCLHFEQUE0Qjs7O2NBRGI7O2VBQTlCO3NEQWpJTmpCO2NBaUlNLHVEQUFpRTtXQVR2RTs7OztXQVlZOztRQXRCb0M7U0FNaER3VjtVQUF1Qzs7Ozs7OztVQTJCdkM7OztjQVVxQixvREFBMkI7OztjQURaOztlQUE5QjtzREF4Sk54VjtjQXdKTSx1REFBaUU7V0FUdkU7Ozs7V0FZWTs7UUE3Q29DO1NBNkJoRHlWO1VBQXNDOzs7Ozs7O1VBNEJ0Qzs7O2NBS00sc0JBdVU2Qyw4QkFBZ0I7Y0F2VTdELHNCQXVVb0IsUUFBSztjQXZVekI7Z0JBMk5RO2tCQWdCSyxPQXhabkJOOztxQkE2WjZCO3FCQURIOzttREE5WjFCL0M7c0JBZ2EwQixhQS9aMUJDOytCQWthK0I7K0JBRUE7cUJBTkYsVUFTRztxQkFESDs7bURBdmE3QkQ7c0JBeWE2QjtxQkFWQSxVQWFNO3FCQURIOzttREEzYWhDQTtzQkE2YWdDO3FCQWRILFVBaUJTO3FCQURIOzttREEvYW5DQTtzQkFpYm1DO3FCQWxCTjtzQkEwQmtCO3NCQUZIOzttREF2YjVDQTtzQkFzYnlDO3NCQURBO3NCQURIO3NCQURBOzs7cUJBVVQ7cUJBREg7O21EQTViMUJBO3NCQThiMEIsYUE3YjFCQzsrQkFnYytCOytCQUVBO3FCQU5GLFVBU0c7cUJBREg7O21EQXJjN0JEO3NCQXVjNkI7cUJBVkEsVUFhTTtxQkFESDs7bURBemNoQ0E7c0JBMmNnQztxQkFkSCxVQWlCUztxQkFESDs7bURBN2NuQ0E7c0JBK2NtQztxQkFsQk47c0JBMEJrQjtzQkFGSDs7bURBcmQ1Q0E7c0JBb2R5QztzQkFEQTtzQkFESDtzQkFEQTs7O3FCQVVUO3FCQURIOzttREExZDFCQTtzQkE0ZDBCLGFBM2QxQkM7K0JBOGQrQjsrQkFFQTtxQkFORixVQVNHO3FCQURIOzttREFuZTdCRDtzQkFxZTZCO3FCQVZBLFVBYU07cUJBREg7O21EQXZlaENBO3NCQXllZ0M7cUJBZEgsVUFpQlM7cUJBREg7O21EQTNlbkNBO3NCQTZlbUM7cUJBbEJOO3NCQTBCa0I7c0JBRkg7O21EQW5mNUNBO3NCQWtmeUM7c0JBREE7c0JBREg7c0JBREE7OEVBTXdDO2dCQTNHaEU7a0JBY1c7O21CQURIOzBEQXBadEJwUzttQkFtWnlCO21CQURIOzBEQWxadEJBO21CQWlabUI7eUVBSTBDO2dCQWQvQzt3RUEyR2lFO2NBdFV6RTtnQkE4R1E7a0JBZ0JLLE9BM1NuQm1WOztxQkFnVDZCO3FCQURIOzttREFqVDFCL0M7c0JBbVQwQixhQWxUMUJDOytCQXFUK0I7K0JBRUE7cUJBTkYsVUFTRztxQkFESDs7bURBMVQ3QkQ7c0JBNFQ2QjtxQkFWQSxVQWFNO3FCQURIOzttREE5VGhDQTtzQkFnVWdDO3FCQWRILFVBaUJTO3FCQURIOzttREFsVW5DQTtzQkFvVW1DO3FCQWxCTjtzQkEwQmtCO3NCQUZIOzttREExVTVDQTtzQkF5VXlDO3NCQURBO3NCQURIO3NCQURBOzs7cUJBVVQ7cUJBREg7O21EQS9VMUJBO3NCQWlWMEIsYUFoVjFCQzsrQkFtVitCOytCQUVBO3FCQU5GLFVBU0c7cUJBREg7O21EQXhWN0JEO3NCQTBWNkI7cUJBVkEsVUFhTTtxQkFESDs7bURBNVZoQ0E7c0JBOFZnQztxQkFkSCxVQWlCUztxQkFESDs7bURBaFduQ0E7c0JBa1dtQztxQkFsQk47c0JBMEJrQjtzQkFGSDs7bURBeFc1Q0E7c0JBdVd5QztzQkFEQTtzQkFESDtzQkFEQTs7O3FCQVVUO3FCQURIOzttREE3VzFCQTtzQkErVzBCLGFBOVcxQkM7K0JBaVgrQjsrQkFFQTtxQkFORixVQVNHO3FCQURIOzttREF0WDdCRDtzQkF3WDZCO3FCQVZBLFVBYU07cUJBREg7O21EQTFYaENBO3NCQTRYZ0M7cUJBZEgsVUFpQlM7cUJBREg7O21EQTlYbkNBO3NCQWdZbUM7cUJBbEJOO3NCQTBCa0I7c0JBRkg7O21EQXRZNUNBO3NCQXFZeUM7c0JBREE7c0JBREg7c0JBREE7OEVBTXdDO2dCQTNHaEU7a0JBY1c7O21CQURIOzBEQXZTdEJwUzttQkFzU3lCO21CQURIOzBEQXJTdEJBO21CQW9TbUI7eUVBSXlDO2dCQWQ5Qzt3RUEyR2lFO2NBek56RTs7OzttQkFJUTtxQkFhSyxPQTlMbkJtVjs7d0JBbU02Qjt3QkFESDs7c0RBcE0xQi9DO3lCQXNNMEIsYUFyTTFCQztrQ0F3TStCO2tDQUVBO3dCQU5GLFVBU0c7d0JBREg7O3NEQTdNN0JEO3lCQStNNkI7d0JBVkEsVUFhTTt3QkFESDs7c0RBak5oQ0E7eUJBbU5nQzt3QkFkSCxVQWlCUzt3QkFESDs7c0RBck5uQ0E7eUJBdU5tQzt3QkFsQk47eUJBMEJrQjt5QkFGSDs7c0RBN041Q0E7eUJBNE55Qzt5QkFEQTt5QkFESDt5QkFEQTs7O3dCQVVUO3dCQURIOztzREFsTzFCQTt5QkFvTzBCLGFBbk8xQkM7a0NBc08rQjtrQ0FFQTt3QkFORixVQVNHO3dCQURIOztzREEzTzdCRDt5QkE2TzZCO3dCQVZBLFVBYU07d0JBREg7O3NEQS9PaENBO3lCQWlQZ0M7d0JBZEgsVUFpQlM7d0JBREg7O3NEQW5QbkNBO3lCQXFQbUM7d0JBbEJOO3lCQTBCa0I7eUJBRkg7O3NEQTNQNUNBO3lCQTBQeUM7eUJBREE7eUJBREg7eUJBREE7Ozt3QkFVVDt3QkFESDs7c0RBaFExQkE7eUJBa1EwQixhQWpRMUJDO2tDQW9RK0I7a0NBRUE7d0JBTkYsVUFTRzt3QkFESDs7c0RBelE3QkQ7eUJBMlE2Qjt3QkFWQSxVQWFNO3dCQURIOztzREE3UWhDQTt5QkErUWdDO3dCQWRILFVBaUJTO3dCQURIOztzREFqUm5DQTt5QkFtUm1DO3dCQWxCTjt5QkEwQmtCO3lCQUZIOztzREF6UjVDQTt5QkF3UnlDO3lCQURBO3lCQURIO3lCQURBO2lGQU13QzttQkF4R2hFO3FCQVdROztzQkFESDs2REExTG5CcFM7cUJBMExtQix1REFDcUM7bUJBWDFDOzJFQXdHaUU7OztjQTVHekU7d0VBdVU4RDtpQ0F6VS9DLFFBQUk7V0FIekI7Ozs7V0E4VVk7O1FBdllvQztTQW9EaEQwVjtVQUE2Qzs7Ozs7OztVQThWN0M7OztjQVVxQix1REFBOEI7OztjQURmOztlQUE5QjtzREF6Z0JOMVY7Y0F5Z0JNLHVEQUFpRTtXQVR2RTs7OztXQVlZOztRQTlab0M7U0E4WWhEMlY7VUFBZ0M7Ozs7Ozs7VUEyQmhDOzs7Y0FNTTtnQkE4Q0ssT0FqbEJYVjs7O21CQTJsQnFCOzs7cUJBREg7a0RBemxCbEJDOzs7O2dCQW1sQm1COztpQkFESDs7K0NBbGxCaEJBO2lCQWlsQmE7OztvQkFubEJiRjs7Z0JBbWxCYSx3REFZc0M7Y0EzRDdDO2dCQWdDb0IsbURBWVY7Y0E1Q1Y7Ozs7bUJBSVEsc0JBMkJvQixRQUFLO21CQTNCekI7cUJBR29CLE9BNWlCbEN4VTs7Ozs7Ozs7OztxQkF3akJ5Qjs7c0JBREg7NkRBL2lCdEJSO3NCQThpQm1COzRFQWF1QzttQkExQjVDOzJFQTJCMEI7Y0EvQmxDO3dFQTJEOEM7aUNBN0QvQixRQUFJOzsrQkFERCxrQkF4aEJ4QjJSLHdCQXdoQmlEO1dBSGpEOzs7O1dBbUVZOztRQTVlb0M7U0FxYWpCOzs7Ozs7OzttQkFrRjNCSDtZQUNIO2NBQ0U7OztrQkFvQlc7O21CQURBOzs7c0JBckJWQTtzQkExZEppRTtrQkE4ZVc7MkJBR0E7OzZCQXZCUGpFOzZCQTFkSmlFOzJCQWtmZ0IsOENBQTJCOzs7a0JBbkJuQixtREFZVjtlQWZYOzs7Ozs7ZUF3Qlk7Y0FyR1MsWUEyRzhCO1NBcENXOzs7Ozs7OztVQXlDakU7OztjQWlCUTs7d0JBMXBCUkw7d0JBaUtBTTs7dUJBaktBTixTQTJwQmdFOzs7Y0FmM0MsbURBV1Y7V0FkWDs7OztXQW9CWTs7UUFoakJvQztTQXdoQmhEVTtVQUFxQzs7Ozs7OztVQW9DckM7aUNBYytCLE9BeHJCL0I5VixhQXdyQjZDOzs7Y0FYeEIsbURBV1Y7V0FkWDtXQUpFOzs7Ozs7Ozs7O1dBb0JVOztRQVdoQjtVQUtJO2lDQWMrQixPQXJNL0I0Vix1QkFxTXFEOzs7Y0FYaEMsbURBV1Y7V0FkWDtXQUpFOzs7Ozs7Ozs7O1dBb0JVOztRQVdoQjtVQUtJO2lDQWMrQixPQTN2Qi9CeEQseUJBMnZCeUQ7OztjQVhwQyxtREFXVjtXQWRYO1dBSkU7Ozs7Ozs7Ozs7V0FvQlU7O1FBV2hCO1VBTUk7aUNBYytCLE9BM3hCL0JDLDhCQTJ4QjhEOzs7Y0FYekMsbURBV1Y7V0FkWDtXQUxFOzs7OztjQTE4SUpsRzs7Ozs7V0ErOUljOztRQTdxQm9DO1NBd3JCcEQ7O1lBQ2tDLHNCQXlCTSxRQUFJO1lBekJWO2NBdUJBOztlQURIO3NEQTd6QjNCbk07ZUE0ekI4QjtlQURIO3NEQTN6QjNCQTtlQTB6QndCO2VBREg7Ozs7a0JBcHpCckJ1UztjQW96QnFCLHVEQU04QztZQXBCcEQ7Ozs7Ozs7OzJCQXFCNEI7U0FLd0I7O1lBRmpDOzZDQXY2RXBDSjs7YUF5d0VFNEQ7YUFnQ0FDO2FBZ0NBQzthQWdDQUM7YUFpQ0FDO1NBMkIyQzt3Q0FBM0M5VDtRQUEyQztVQW9CM0M7OztjQVdPLE9BN1VQdVQ7dUJBNlVzQzt1QkFDekIsOENBQThCOzs7Y0FIUDs7ZUFBOUI7c0RBOTFCTjVWO2NBODFCTSx1REFBaUU7V0FUdkU7Ozs7V0FjWTs7UUFydkJvQztTQW11QmhEcVc7VUFBc0M7Ozs7Ozs7VUE4QnRDOzs7Y0FXTyxPQXZXUFQ7dUJBdVdzQzt1QkFDekIsaURBQWlDOzs7Y0FIVjs7ZUFBOUI7c0RBeDNCTjVWO2NBdzNCTSx1REFBaUU7V0FUdkU7Ozs7V0FjWTs7UUEvd0JvQztTQTR2Qkg7Ozs7Ozs7O21CQThCekN1VztZQUNIO2NBQ0U7OztrQkFpQk07OzJCQXJSVFQ7MkJBa1FJUyxxQkFvQjRCOzs7a0JBZlIsbURBWVY7ZUFmWDs7Ozs7O2VBb0JZO2NBNUNNLFlBa0RpQztTQWhDSjs7Ozs7Ozs7VUFxQ2xEOzs7Y0FNTSxzQkFpQkssT0FoSFhILDhCQWdIMEQ7Y0FqQnBEO2dCQUdvQixtREFZVjtjQWZWO3NFQWlCcUQ7aUNBbkJ0QyxRQUFJOzsrQkFERCxrQkF4NkJ4QnhFLHlCQXc2QmtEO1dBSGxEOzs7O1dBeUJZOztRQXAxQm9DO1NBdXpCYjs7Ozs7Ozs7bUJBd0MvQjJFO1lBQ0g7Y0FDRTs7O2tCQTJCMEM7Ozs7Ozs7c0JBN0J6Q0E7bUJBNkJ3Qzs7c0JBSC9COzs7d0JBbkdiQzs7bUJBK0ZZOzs7Ozs7O21CQUhvQzs7a0JBaUJwQzs7NEJBakJFRTs0QkEvSWRMOzJCQWtLWTs7NkJBbEtaQTs2QkErSWNLOzJCQXFCRiwrQ0FBNkI7OztrQkFuQ2pCLG1EQVlWO2VBZlg7Ozs7OztlQXdDWTtjQTNFUyxZQWlGOEI7U0FwRE87Ozs7Ozs7O1VBMEQ3RDtpQ0FVcUIsT0E3Z0NyQjFXLGFBNmdDbUM7OztjQVBkLG1EQU13QztXQVQ3RDtXQUpFOzs7Ozs7Ozs7O1dBZ0JVOztRQU9oQjtVQUtJO2lDQWMrQixPQTdpQy9CMFIsMkJBNmlDMkQ7OztjQVh0QyxtREFXVjtXQWRYO1dBSkU7Ozs7Ozs7Ozs7V0FvQlU7O1FBV2hCO1VBS0k7aUNBYytCLE9BdGpCL0JrRSx1QkFzakJxRDs7O2NBWGhDLG1EQVdWO1dBZFg7V0FKRTs7Ozs7Ozs7OztXQW9CVTs7UUFXaEI7VUFLSTtpQ0FjK0IsT0FwTS9CYSx3QkFvTXNEOzs7Y0FYakMsbURBV1Y7V0FkWDtXQUpFOzs7Ozs7Ozs7O1dBb0JVOztRQTcvQm9DO1NBOGdDcUI7O1lBSGpDOzZDQTNnR3RDaEY7O2FBZzVGRW1GO2FBd0JBQzthQWdDQUM7YUFnQ0FDO1NBZ0M0QzswQ0FBNUN0VTtRQUE0QztVQXFCNUM7OztjQXdDWTs7OztrQkF2ckJaa1Q7a0JBeWFBYztlQTZRUzs7NENBdHJDVC9FO2VBMnJDMEM7ZUFBNUI7c0RBTkh1RjtrQkFPTTtrQkFQTkE7ZUFXQzs7O2tCQWxWWlg7a0JBMkRBRztlQXNSUztzREFMRVM7ZUFJVTtzRUFHc0I7OztjQXpCdEIsbURBV1Y7Ozs7ZUFoQ0Y7aUJBbUJVOzs7O3FCQXhUbkJaO3FCQTJEQUc7a0JBNFBnQjs7O3FCQXJxQ2hCL0U7O2tCQW9xQzRCO3lFQUdtQjtlQXBCdEM7aUJBR29CO3lEQS9uQjdCa0Usd0JBMm9CcUM7ZUFmNUI7dUVBb0J1QztXQXhCaEQ7Ozs7V0FvRFk7O1FBamxDb0M7U0F3aENROzs7Ozs7OzttQkFvRXBEcEU7WUFDSDtjQUNFOzs7a0JBNEJTOzs7Ozs7O3NCQTlCUkE7bUJBNkJ1RDs7c0JBSGhDOzs7d0JBbm9CM0JxRTs7bUJBK25CWTs7Ozs7OzttQkFIeUI7O21CQTZCdEI7Ozs7OztzQkE3QkR1QjttQkE0QjRDOztzQkFINUI7Ozt3QkE3UzlCVDs7bUJBeVNlOzs7Ozs7O21CQUh5QjttQkFBNUI7eURBbEJFUzttQkFtQzRCO2tCQUE1Qjt1REFsQkFDOzsyQkFtQnFCLCtDQUE4Qjs7O2tCQWxEekMsbURBWVY7ZUFmWDs7Ozs7O2VBdURZO2NBakhjLFlBdUh5QjtTQW5FRDs7Ozs7Ozs7VUF3RXJEO2lDQWVxQixPQXhKckJMLGdDQXdKbUU7OztjQVo5QyxtREFXVjtXQWRYOzs7O1dBaUJZOztRQWpyQ29DO1NBNHBDaERPO1VBQXFDOzs7Ozs7O1VBaUNyQzs7O2NBZ0QyQzs7ZUFBN0I7ZUFERztlQUZIOzs7a0JBbE5kSjs7ZUFpTlc7ZUFESDt1RUFLNkQ7OztjQW5CaEQsbURBV1Y7Ozs7ZUFwQ0Y7aUJBd0JPOztrQkFETTtrQkFERztrQkFGSDs7O3FCQTdMdEJBOztrQkE0TG1CO2tCQURIOzBFQU0wQjtlQXhCakM7aUJBR29CO3lEQS94QjdCdkIsd0JBMnlCcUM7ZUFmNUI7dUVBd0JrQztXQTVCM0M7Ozs7V0FrRFk7O1FBL3VDb0M7U0F3ckNjOzs7Ozs7OzttQkFrRTFEcEU7WUFDSDtjQUNFOzs7a0JBNEJTOzs7Ozs7O3NCQTlCUkE7bUJBNkIyQzs7c0JBSGxDOzs7d0JBNUxiOEY7O21CQXdMWTs7Ozs7OzttQkFIeUI7O21CQXlCekI7Ozs7OztzQkF6QkVGO21CQXdCK0M7O3NCQUZsQzs7O3dCQTl4QzNCN0I7O21CQTJ4Q3lCOzs7Ozs7O21CQUZLO21CQWdCWjttQkFEWTt5REFoQ2hCNkIsY0FpQkFLO21CQWVDO21CQURIOzttQkFPRzttQkFEQTs7O3NCQVBEQztzQkFiQUQ7a0JBbUJGOzJCQUdBOzs2QkFURUM7NkJBYkFEOzJCQXVCRiwrQ0FBK0I7OztrQkF0RG5CLG1EQVlWO2VBZlg7Ozs7OztlQTJEWTtjQW5IYyxZQXlIeUI7U0F2RW1COzs7Ozs7OztVQTZFekU7OztjQTJDVztjQUZIOzt3QkFwTFJEOzt1QkFzTDRDO3VCQXRMNUNBLGdDQXVMK0Q7OztjQWpCMUMsbURBV1Y7Ozs7ZUFsQ0Y7aUJBb0JVO2lCQUZIOzsyQkFqS2hCQTs7MEJBb0tnQjswQkFwS2hCQSxnQ0FxS2tFO2VBdEJ6RDtpQkFHb0I7eURBcjZCN0I1Qix3QkFpN0JxQztlQWY1Qjt1RUFzQjBEO1dBMUJuRTs7OztXQThDWTs7UUFqM0NvQztTQTh6Q007Ozs7Ozs7O21CQThEbERwRTtZQUNIO2NBQ0U7OztrQkE0QlM7Ozs7Ozs7c0JBOUJSQTttQkE2QitEOztzQkFIeEM7Ozt3QkFoSzNCbUc7O21CQTRKWTs7Ozs7OzttQkFIeUI7O2tCQWlCdkI7OzRCQWpCQVA7NEJBejRDZDVCOzJCQTI1Q2lCOzJCQWxCSDRCLGFBa0JrRDs7O2tCQWhDeEMsbURBWVY7ZUFmWDs7Ozs7O2VBcUNZO2NBekZjLFlBK0Z5QjtTQWpESTs7Ozs7Ozs7VUFzRDFEOzs7Y0FrQlk7Ozs7a0JBeDZCWnRCO2tCQW9vQkF5QjtlQW1TUzs7OztrQkFqSVRLO2VBc0lzQztjQUEzQiw2Q0FOQXBHO3VCQU9GO3VCQVBFQSxXQU82Qzs7O2NBcEJuQyxtREFXVjtXQWRYOzs7O1dBeUJZOztRQXY4Q29DO1NBMDZDaERzRztVQUE4Qjs7Ozs7OztnQkE5cUI5QnhCO2dCQTlXQVg7Z0JBeWFBYztnQkEvUkFYO2dCQXBlQUo7Z0JBd21DQTZCO2dCQWtLQUs7Z0JBNEdBRTtnQkFsREFEO01BcDdDWSx1Q0EyaEQ2QjtJQTduTDdCLFNBK25MZEUsaUNBQXdEaEQ7TUFDMUQ7NkJBRDBEQTtPQUMxRCw0QkFEMERBO09BQzFELDBCQUQwREE7T0FDMUQsK0JBRDBEQTtPQUMxRCxzQkFEMERBO09BQzFELG9CQUQwREE7T0FDMUQsK0JBRDBEQTtPQUMxRCxxQkFEMERBO09BQzFELFlBRDBEQTtPQUMxRCx3QkFEMERBO09BQzFELEtBRDBEQTtPQUMxRCxVQUQwREE7T0FDMUQsb0JBRDBEQTtPQUMxRCxjQUQwREE7T0FDMUQsVUFEMERBO01BQzFEO1FBb0JJOzs7WUFXUTs7YUFEWTtxRUFDaUI7OzBCQVJoQixtREFLVjtTQVJYOzs7O1NBYVk7O01BakNoQjtPQWVJMEQ7UUFBbUM7OztRQThCbkM7K0JBYStCLE9BeEQvQnJHLHlCQXdEeUQ7OzBCQVZwQyxtREFVVjtTQWJYO1NBSkU7Ozs7Ozs7Ozs7U0FtQlU7O01BVWhCO1FBTUk7K0JBYStCLE9BdEYvQkMsOEJBc0Y4RDs7MEJBVnpDLG1EQVVWO1NBYlg7U0FMRTs7Ozs7WUEzMUtKbEc7Ozs7O1NBKzJLYzs7TUEzRmhCO09BMkcwQzs7VUFIdkM7MkNBMWlHRHVHO2FBMCtGRXVELCtCQThCQUM7T0ErQmlEO3NDQUFqRGpWO01BQWlEO1FBZWhDOztTQURILDRDQXRHZGpCOzs7O1NBeUcwQjs7TUFRZDtRQVFoQjtVQUtJOzs7Y0FVcUIsc0RBQXlCOzs7Y0FEVjs7ZUFBOUI7c0RBdklOQTtjQXVJTSx1REFBaUU7V0FUdkU7Ozs7V0FZWTs7UUFqQmtDO1NBQTlDMFk7VUFBOEM7Ozs7Ozs7VUE2QjlDOzs7Y0FVcUIsd0RBQXlCOzs7Y0FEVjs7ZUFBOUI7c0RBL0pOMVk7Y0ErSk0sdURBQWlFO1dBVHZFOzs7O1dBWVk7O1FBekNrQztTQXdCOUMyWTtVQUE4Qzs7Ozs7OztVQTZCOUM7OztjQVVxQix1REFBOEI7OztjQURmOztlQUE5QjtzREF2TE4zWTtjQXVMTSx1REFBaUU7V0FUdkU7Ozs7V0FZWTs7UUFqRWtDO1NBZ0Q5QzRZO1VBQTRDOzs7Ozs7O1VBNkI1Qzs7O2NBVXFCLHNEQUF5Qjs7O2NBRFY7O2VBQTlCO3NEQS9NTjVZO2NBK01NLHVEQUFpRTtXQVR2RTs7OztXQVlZOztRQXpGa0M7U0F3RTlDc1c7VUFBK0M7Ozs7Ozs7VUE2Qi9DOzs7Y0FVcUIsd0RBQStCOzs7Y0FEaEI7O2VBQTlCO3NEQXZPTnRXO2NBdU9NLHVEQUFpRTtXQVR2RTs7OztXQVlZOztRQWpIa0M7U0FnRzlDNlk7VUFBNkM7Ozs7Ozs7VUE2QjdDOzs7Y0FXTSxTQWxRTkw7Z0JBdVFnQjtnQkFESDtxREE3UWJOO3lCQStRYTt5QkFDQTtjQUVILElBRGtCWSxzQkExUTVCTjtjQTJRVSxTQURrQk07ZUFHYztjQUZoQyxVQU1XO2NBREg7bURBdlJsQlo7dUJBeVJrQjt1QkFDQSxrREFBOEI7OztjQW5CWjs7ZUFBOUI7c0RBL1BObFk7Y0ErUE0sdURBQWlFO1dBVHZFOzs7O1dBOEJZOztRQTNKa0M7U0F3SDlDK1k7VUFBaUQ7Ozs7Ozs7VUErQ2pEOzs7Y0FVcUIsdURBQTRCOzs7Y0FEYjs7ZUFBOUI7c0RBelNOL1k7Y0F5U00sdURBQWlFO1dBVHZFOzs7O1dBWVk7O1FBbkxrQztTQWtLOUNnWjtVQUF1Qzs7Ozs7OztVQTZCdkM7OztjQVVxQixzREFBMkI7OztjQURaOztlQUE5QjtzREFqVU5oWjtjQWlVTSx1REFBaUU7V0FUdkU7Ozs7V0FZWTs7UUEzTWtDO1NBMEw5Q2laO1VBQXNDOzs7Ozs7O1VBNkJ0Qzs7O2NBdUdNLHNCQTRENkMsOEJBQWdCO2NBNUQ3RCxzQkE0RG9CLFFBQUs7Y0E1RHpCO2dCQXlDUTtrQkFrQlU7OztnREE3ZnhCN0c7bUJBNGZxQzttQkFBaEI7bUJBRFk7MEVBRWdDO2dCQWxCbkQ7a0JBY1c7O21CQURIOzBEQTdldEJwUzttQkE0ZXlCO21CQURIOzBEQTNldEJBO21CQTBlbUI7eUVBSTBDO2dCQWQvQzt3RUFrQm9EO2NBM0Q1RDtnQkFxQlE7a0JBa0JVOzs7Z0RBemV4Qm9TO21CQXdlcUM7bUJBQWhCO21CQURZOzBFQUVnQztnQkFsQm5EO2tCQWNXOzttQkFESDswREF6ZHRCcFM7bUJBd2R5QjttQkFESDswREF2ZHRCQTttQkFzZG1CO3lFQUl5QztnQkFkOUM7d0VBa0JvRDtjQXZDNUQ7Ozs7bUJBSVE7cUJBZVU7OzttREFyZHhCb1M7c0JBb2RxQztzQkFBaEI7c0JBRFk7NkVBRWdDO21CQWZuRDtxQkFXUTs7c0JBREg7NkRBcmNuQnBTO3FCQXFjbUIsdURBQ3FDO21CQVgxQzsyRUFlb0Q7OztjQW5CNUQ7d0VBNEQ4RDtpQ0E5RC9DLFFBQUk7Ozs7ZUFqR2hCO2lCQUtLLHNCQTJGb0IsOEJBQWdCO2lCQTNGcEMsc0JBMEZvQixRQUFLO2lCQTFGekI7bUJBNkRRO3FCQTRCVTs7O21EQTdiaENvUztzQkEyYjZDO3NCQUFoQjs7NkJBMWI3QkM7eUJBdWJrQzt5QkFFQTs2RUFHdUM7bUJBNUJuRDtxQkFnQmM7O3NCQURIOzZEQXJhakNyUztzQkFvYW9DO3NCQURIOzZEQW5hakNBO3NCQWthOEI7c0JBREg7a0VBdGEzQnFZO3FCQXNhMkIsdURBTWlCO21CQWpCdEI7MkVBNEJvRDtpQkF6RjVEO21CQStCUTtxQkE0QlU7OzttREEvWmhDakc7c0JBNlo2QztzQkFBaEI7OzZCQTVaN0JDO3lCQXlaa0M7eUJBRUE7NkVBR3VDO21CQTVCbkQ7cUJBZ0JjOztzQkFESDs2REF2WWpDclM7c0JBc1lvQztzQkFESDs2REFyWWpDQTtzQkFvWThCO3NCQURIO2tFQXhZM0JxWTtxQkF3WTJCLHVEQU1pQjttQkFqQnRCOzJFQTRCb0Q7aUJBM0Q1RDs7OztzQkFJUTt3QkF5QlU7OztzREFqWWhDakc7eUJBK1g2Qzt5QkFBaEI7O2dDQTlYN0JDOzRCQTJYa0M7NEJBRUE7Z0ZBR3VDO3NCQXpCbkQ7d0JBYVc7O3lCQURIO2dFQXpXOUJyUzt5QkF3VzJCO3FFQTdXM0JxWTt3QkE2VzJCLHVEQUdpQjtzQkFkdEI7OEVBeUJvRDs7O2lCQTdCNUQ7MkVBMkZxQztlQWhHMUMsc0JBR29CLFFBQUk7ZUFIeEI7dUVBZ0cyQztXQXBHcEQ7Ozs7V0FxS1k7O1FBNVhrQztTQWtOOUNhO1VBQThDOzs7Ozs7O1VBc0w5QztpQ0FVcUIsT0EzZ0JyQmxaLGFBMmdCbUM7OztjQVBkLG1EQU13QztXQVQ3RDtXQUpFOzs7Ozs7Ozs7O1dBZ0JVOztRQU9oQjtVQUtJO2lDQVVxQixPQWxpQnJCUSxTQWtpQitCOzs7Y0FQVixtREFNd0M7V0FUN0Q7V0FKRTs7a0RBanlMSjRMOzs7O1dBaXpMYzs7UUE1YWtDO1NBMGJFOztZQUpFOzZDQXBySXBEZ0Y7ZUFpb0lFaUUsK0JBd0JBQztTQXdCMkQ7d0NBQTNEalQ7U0FBMkQ7bUJBaUJ2RDZWO1lBQ0g7Y0FDRTtxQ0E4Z0txQiw4QkFBZ0I7OztrQkFSaEIsbURBT3lDOzs7a0JBMWVyRDtvQkFLSyxzQkE2ZG9CLDhCQUFnQjtvQkE3ZHBDLHNCQTRkb0IsUUFBSztvQkE1ZHpCO3NCQTJXUTt3QkErQkssT0FwL0s5Qi9DOzsyQkEyL0syQzsyQkFGSDs7eURBamdMeEMvQzs0QkFxZ0x3Qzs7b0NBcGdMeENDO2dDQXdnTDZDO2dDQUdBOzs0QkFXTzs7NkJBRkg7OzBEQXJoTGpERDs2QkFvaEw4Qzs2QkFGQTs2QkFESDs2QkFGQTttQ0FESDs7OzJCQWVHOzJCQUZIOzt5REEzaEx4Q0E7NEJBK2hMd0M7O29DQTloTHhDQztnQ0FraUw2QztnQ0FHQTs7NEJBV087OzZCQUZIOzswREEvaUxqREQ7NkJBOGlMOEM7NkJBRkE7NkJBREg7NkJBRkE7bUNBREg7OzsyQkFlRzsyQkFGSDs7eURBcmpMeENBOzRCQXlqTHdDOztvQ0F4akx4Q0M7Z0NBNGpMNkM7Z0NBR0E7OzRCQVdPOzs2QkFGSDs7MERBemtMakREOzZCQXdrTDhDOzZCQUZBOzZCQURIOzZCQUZBO21DQURIOztrRUFyakx4Q3FHLHVCQWdrTHVEO3NCQWhIOUI7d0JBSW9CLE9BeDlLN0NGOzs7Ozs7d0JBcStLb0M7cUNBcCtLcENDO3lCQW8rS29DO3lCQURHO3lCQURIOzt1REFwNkpoQ047eUJBbTZKNkI7eUJBREc7eUJBREg7Z0VBOTlLakNsWTt5QkE2OUs4QjsrRUFrQjBDO3NCQTdCL0M7OEVBZ0grQjtvQkEzZHZDO3NCQXdQUTt3QkFnQ0ssT0FsNEs5Qm1WOzsyQkF5NEsyQzsyQkFGSDs7eURBLzRLeEMvQzs0QkFtNUt3Qzs7b0NBbDVLeENDO2dDQXM1SzZDO2dDQUdBOzs0QkFXTzs7NkJBRkg7OzBEQW42S2pERDs2QkFrNks4Qzs2QkFGQTs2QkFESDs2QkFGQTttQ0FESDs7OzJCQWVHOzJCQUZIOzt5REF6Nkt4Q0E7NEJBNjZLd0M7O29DQTU2S3hDQztnQ0FnN0s2QztnQ0FHQTs7NEJBV087OzZCQUZIOzswREE3N0tqREQ7NkJBNDdLOEM7NkJBRkE7NkJBREg7NkJBRkE7bUNBREg7OzsyQkFlRzsyQkFGSDs7eURBbjhLeENBOzRCQXU4S3dDOztvQ0F0OEt4Q0M7Z0NBMDhLNkM7Z0NBR0E7OzRCQVdPOzs2QkFGSDs7MERBdjlLakREOzZCQXM5SzhDOzZCQUZBOzZCQURIOzZCQUZBO21DQURIOztrRUFuOEt4Q3FHLHVCQTg4S3VEO3NCQWpIOUI7d0JBSW9CLE9BcjJLN0NGOzs7Ozs7d0JBazNLb0M7cUNBajNLcENDO3lCQWkzS29DO3lCQURHO3lCQURIOzt1REFqekpoQ047eUJBZ3pKNkI7eUJBREc7eUJBREg7Z0VBMzJLakNsWTt5QkEwMks4QjsrRUFtQjBDO3NCQTlCL0M7OEVBaUgrQjtvQkF6V3ZDO3NCQThIUTt3QkF1Q0ssT0Evd0s5Qm1WOzsyQkFzeEsyQzsyQkFGSDs7eURBNXhLeEMvQzs0QkFneUt3Qzs7b0NBL3hLeENDO2dDQW15SzZDO2dDQUdBOzs0QkFXTzs7NkJBRkg7OzBEQWh6S2pERDs2QkEreUs4Qzs2QkFGQTs2QkFESDs2QkFGQTttQ0FESDs7OzJCQWVHOzJCQUZIOzt5REF0ekt4Q0E7NEJBMHpLd0M7O29DQXp6S3hDQztnQ0E2eks2QztnQ0FHQTs7NEJBV087OzZCQUZIOzswREExMEtqREQ7NkJBeTBLOEM7NkJBRkE7NkJBREg7NkJBRkE7bUNBREg7OzsyQkFlRzsyQkFGSDs7eURBaDFLeENBOzRCQW8xS3dDOztvQ0FuMUt4Q0M7Z0NBdTFLNkM7Z0NBR0E7OzRCQVdPOzs2QkFGSDs7MERBcDJLakREOzZCQW0ySzhDOzZCQUZBOzZCQURIOzZCQUZBO21DQURIOztrRUFoMUt4Q3FHLHVCQTIxS3VEO3NCQXhIOUI7d0JBSW9CLE9BM3VLN0NGOzs7Ozs7d0JBNHZLdUM7cUNBM3ZLdkNDO3lCQTJ2S3VDO3lCQURHO3lCQUZIOzt1REExckpuQ047eUJBeXJKZ0M7eUJBREc7eUJBREg7O3VEQXZySmhDQTt5QkFzcko2Qjt5QkFERzt5QkFESDtnRUFqdktqQ2xZO3lCQWd2SzhCOytFQTBCOEM7c0JBckNuRDs4RUF3SCtCO29CQXRQdkM7Ozs7eUJBSVE7MkJBdUNLLE9BcnBLOUJtVjs7OEJBNHBLMkM7OEJBRkg7OzREQWxxS3hDL0M7K0JBc3FLd0M7O3VDQXJxS3hDQzttQ0F5cUs2QzttQ0FHQTs7K0JBV087O2dDQUZIOzs2REF0cktqREQ7Z0NBcXJLOEM7Z0NBRkE7Z0NBREg7Z0NBRkE7c0NBREg7Ozs4QkFlRzs4QkFGSDs7NERBNXJLeENBOytCQWdzS3dDOzt1Q0Evckt4Q0M7bUNBbXNLNkM7bUNBR0E7OytCQVdPOztnQ0FGSDs7NkRBaHRLakREO2dDQStzSzhDO2dDQUZBO2dDQURIO2dDQUZBO3NDQURIOzs7OEJBZUc7OEJBRkg7OzREQXR0S3hDQTsrQkEwdEt3Qzs7dUNBenRLeENDO21DQTZ0SzZDO21DQUdBOzsrQkFXTzs7Z0NBRkg7OzZEQTF1S2pERDtnQ0F5dUs4QztnQ0FGQTtnQ0FESDtnQ0FGQTtzQ0FESDs7cUVBdHRLeENxRyx1QkFpdUt1RDt5QkF4SDlCOzJCQUlvQixPQWpuSzdDRjs7Ozs7OzJCQWtvS3VDO3dDQWpvS3ZDQzs0QkFpb0t1Qzs0QkFERzs0QkFGSDs7MERBaGtKbkNOOzRCQStqSmdDOzRCQURHOzRCQURIOzswREE3akpoQ0E7NEJBNGpKNkI7NEJBREc7NEJBREg7bUVBdm5LakNsWTs0QkFzbks4QjtrRkEwQjhDO3lCQXJDbkQ7aUZBd0grQjs7OztvQkE1SHZDOzhFQTZkcUM7a0JBbGUxQyxzQkFHb0IsUUFBSTtrQkFIeEI7MEVBa2UyQzs7OzttQkFqZ0szQztxQkF5RUssc0JBbzlJb0IsOEJBQWdCO3FCQXA5SXBDLHNCQW05SW9CLFFBQUs7cUJBbjlJekI7dUJBbzJJUTt5QkF3Q0ssT0EzaEs5Qm1WOzs0QkFnaUt3Qzs0QkFESDs7MERBdmlLckMvQzs2QkF5aUtxQyxhQXhpS3JDQztzQ0E0aUswQztzQ0FHQTs0QkFSRjs2QkFrQlM7NkJBRkg7OzBEQXhqSzlDRDs2QkF1aksyQzs2QkFGQTs2QkFESDs2QkFEQTs7OzRCQVlBOzRCQURIOzswREE5aktyQ0E7NkJBZ2tLcUMsYUEvaktyQ0M7c0NBbWtLMEM7c0NBR0E7NEJBUkY7NkJBa0JTOzZCQUZIOzswREEva0s5Q0Q7NkJBOGtLMkM7NkJBRkE7NkJBREg7NkJBREE7Ozs0QkFZQTs0QkFESDs7MERBcmxLckNBOzZCQXVsS3FDLGFBdGxLckNDO3NDQTBsSzBDO3NDQUdBOzRCQVJGOzZCQWtCUzs2QkFGSDs7MERBdG1LOUNEOzZCQXFtSzJDOzZCQUZBOzZCQURIOzZCQURBO3FGQVFrQjt1QkE5R2pDO3lCQUlvQixPQXQvSjdDbUc7Ozs7Ozt5QkF1Z0t1QztzQ0F0Z0t2Q0M7MEJBc2dLdUM7MEJBREc7MEJBRkg7O3dEQXI4SW5DTjswQkFvOElnQzswQkFERzswQkFESDtpRUEvL0pwQ2xZOzBCQTgvSmlDOzBCQURHOzBCQURIO2lFQTUvSmpDQTswQkEyL0o4QjtnRkEyQjhDO3VCQXRDbkQ7K0VBOEdrQztxQkFsOUkxQzt1QkFvdklRO3lCQXdDSyxPQTM2SjlCbVY7OzRCQWc3SndDOzRCQURIOzswREF2N0pyQy9DOzZCQXk3SnFDLGFBeDdKckNDO3NDQTQ3SjBDO3NDQUdBOzRCQVJGOzZCQWtCUzs2QkFGSDs7MERBeDhKOUNEOzZCQXU4SjJDOzZCQUZBOzZCQURIOzZCQURBOzs7NEJBWUE7NEJBREg7OzBEQTk4SnJDQTs2QkFnOUpxQyxhQS84SnJDQztzQ0FtOUowQztzQ0FHQTs0QkFSRjs2QkFrQlM7NkJBRkg7OzBEQS85SjlDRDs2QkE4OUoyQzs2QkFGQTs2QkFESDs2QkFEQTs7OzRCQVlBOzRCQURIOzswREFyK0pyQ0E7NkJBdStKcUMsYUF0K0pyQ0M7c0NBMCtKMEM7c0NBR0E7NEJBUkY7NkJBa0JTOzZCQUZIOzswREF0L0o5Q0Q7NkJBcS9KMkM7NkJBRkE7NkJBREg7NkJBREE7cUZBUWtCO3VCQTlHakM7eUJBSW9CLE9BdDRKN0NtRzs7Ozs7O3lCQXU1SnVDO3NDQXQ1SnZDQzswQkFzNUp1QzswQkFERzswQkFGSDs7d0RBcjFJbkNOOzBCQW8xSWdDOzBCQURHOzBCQURIO2lFQS80SnBDbFk7MEJBODRKaUM7MEJBREc7MEJBREg7aUVBNTRKakNBOzBCQTI0SjhCO2dGQTJCOEM7dUJBdENuRDsrRUE4R2tDO3FCQWwySTFDO3VCQThuSVE7eUJBOENLLE9BM3pKOUJtVjs7NEJBZzBKd0M7NEJBREg7OzBEQXYwSnJDL0M7NkJBeTBKcUMsYUF4MEpyQ0M7c0NBNDBKMEM7c0NBR0E7NEJBUkY7NkJBa0JTOzZCQUZIOzswREF4MUo5Q0Q7NkJBdTFKMkM7NkJBRkE7NkJBREg7NkJBREE7Ozs0QkFZQTs0QkFESDs7MERBOTFKckNBOzZCQWcySnFDLGFBLzFKckNDO3NDQW0ySjBDO3NDQUdBOzRCQVJGOzZCQWtCUzs2QkFGSDs7MERBLzJKOUNEOzZCQTgySjJDOzZCQUZBOzZCQURIOzZCQURBOzs7NEJBWUE7NEJBREg7OzBEQXIzSnJDQTs2QkF1M0pxQyxhQXQzSnJDQztzQ0EwM0owQztzQ0FHQTs0QkFSRjs2QkFrQlM7NkJBRkg7OzBEQXQ0SjlDRDs2QkFxNEoyQzs2QkFGQTs2QkFESDs2QkFEQTtxRkFRa0I7dUJBcEhqQzt5QkFJb0IsT0FoeEo3Q21HOzs7Ozs7eUJBcXlKMEM7c0NBcHlKMUNDOzBCQW95SjBDOzBCQURHOzBCQUZIOzt3REFudUl0Q047MEJBa3VJbUM7MEJBREc7MEJBRkg7O3dEQS90SW5DQTswQkE4dElnQzswQkFERzswQkFESDtpRUF6eEpwQ2xZOzBCQXd4SmlDOzBCQURHOzBCQURIO2lFQXR4SmpDQTswQkFxeEo4QjtnRkFpQ2dDO3VCQTVDckM7K0VBb0hrQztxQkFsdkkxQzt1QkF3Z0lRO3lCQThDSyxPQXJzSjlCbVY7OzRCQTBzSndDOzRCQURIOzswREFqdEpyQy9DOzZCQW10SnFDLGFBbHRKckNDO3NDQXN0SjBDO3NDQUdBOzRCQVJGOzZCQWtCUzs2QkFGSDs7MERBbHVKOUNEOzZCQWl1SjJDOzZCQUZBOzZCQURIOzZCQURBOzs7NEJBWUE7NEJBREg7OzBEQXh1SnJDQTs2QkEwdUpxQyxhQXp1SnJDQztzQ0E2dUowQztzQ0FHQTs0QkFSRjs2QkFrQlM7NkJBRkg7OzBEQXp2SjlDRDs2QkF3dkoyQzs2QkFGQTs2QkFESDs2QkFEQTs7OzRCQVlBOzRCQURIOzswREEvdkpyQ0E7NkJBaXdKcUMsYUFod0pyQ0M7c0NBb3dKMEM7c0NBR0E7NEJBUkY7NkJBa0JTOzZCQUZIOzswREFoeEo5Q0Q7NkJBK3dKMkM7NkJBRkE7NkJBREg7NkJBREE7cUZBUWtCO3VCQXBIakM7eUJBSW9CLE9BMXBKN0NtRzs7Ozs7O3lCQStxSjBDO3NDQTlxSjFDQzswQkE4cUowQzswQkFERzswQkFGSDs7d0RBN21JdENOOzBCQTRtSW1DOzBCQURHOzBCQUZIOzt3REF6bUluQ0E7MEJBd21JZ0M7MEJBREc7MEJBREg7aUVBbnFKcENsWTswQkFrcUppQzswQkFERzswQkFESDtpRUFocUpqQ0E7MEJBK3BKOEI7Z0ZBaUNnQzt1QkE1Q3JDOytFQW9Ia0M7cUJBNW5JMUM7dUJBazVIUTt5QkE4Q0ssT0Eva0o5Qm1WOzs0QkFvbEp3Qzs0QkFESDs7MERBM2xKckMvQzs2QkE2bEpxQyxhQTVsSnJDQztzQ0FnbUowQztzQ0FHQTs0QkFSRjs2QkFrQlM7NkJBRkg7OzBEQTVtSjlDRDs2QkEybUoyQzs2QkFGQTs2QkFESDs2QkFEQTs7OzRCQVlBOzRCQURIOzswREFsbkpyQ0E7NkJBb25KcUMsYUFubkpyQ0M7c0NBdW5KMEM7c0NBR0E7NEJBUkY7NkJBa0JTOzZCQUZIOzswREFub0o5Q0Q7NkJBa29KMkM7NkJBRkE7NkJBREg7NkJBREE7Ozs0QkFZQTs0QkFESDs7MERBem9KckNBOzZCQTJvSnFDLGFBMW9KckNDO3NDQThvSjBDO3NDQUdBOzRCQVJGOzZCQWtCUzs2QkFGSDs7MERBMXBKOUNEOzZCQXlwSjJDOzZCQUZBOzZCQURIOzZCQURBO3FGQVFrQjt1QkFwSGpDO3lCQUlvQixPQXBpSjdDbUc7Ozs7Ozt5QkF5akowQztzQ0F4akoxQ0M7MEJBd2pKMEM7MEJBREc7MEJBRkg7O3dEQXYvSHRDTjswQkFzL0htQzswQkFERzswQkFGSDs7d0RBbi9IbkNBOzBCQWsvSGdDOzBCQURHOzBCQURIO2lFQTdpSnBDbFk7MEJBNGlKaUM7MEJBREc7MEJBREg7aUVBMWlKakNBOzBCQXlpSjhCO2dGQWlDZ0M7dUJBNUNyQzsrRUFvSGtDO3FCQXRnSTFDO3VCQTR4SFE7eUJBOENLLE9BejlJOUJtVjs7NEJBODlJd0M7NEJBREg7OzBEQXIrSXJDL0M7NkJBdStJcUMsYUF0K0lyQ0M7c0NBMCtJMEM7c0NBR0E7NEJBUkY7NkJBa0JTOzZCQUZIOzswREF0L0k5Q0Q7NkJBcS9JMkM7NkJBRkE7NkJBREg7NkJBREE7Ozs0QkFZQTs0QkFESDs7MERBNS9JckNBOzZCQTgvSXFDLGFBNy9JckNDO3NDQWlnSjBDO3NDQUdBOzRCQVJGOzZCQWtCUzs2QkFGSDs7MERBN2dKOUNEOzZCQTRnSjJDOzZCQUZBOzZCQURIOzZCQURBOzs7NEJBWUE7NEJBREg7OzBEQW5oSnJDQTs2QkFxaEpxQyxhQXBoSnJDQztzQ0F3aEowQztzQ0FHQTs0QkFSRjs2QkFrQlM7NkJBRkg7OzBEQXBpSjlDRDs2QkFtaUoyQzs2QkFGQTs2QkFESDs2QkFEQTtxRkFRa0I7dUJBcEhqQzt5QkFJb0IsT0E5Nkk3Q21HOzs7Ozs7eUJBbThJMEM7c0NBbDhJMUNDOzBCQWs4STBDOzBCQURHOzBCQUZIOzt3REFqNEh0Q047MEJBZzRIbUM7MEJBREc7MEJBRkg7O3dEQTczSG5DQTswQkE0M0hnQzswQkFERzswQkFESDtpRUF2N0lwQ2xZOzBCQXM3SWlDOzBCQURHOzBCQURIO2lFQXA3SWpDQTswQkFtN0k4QjtnRkFpQ2dDO3VCQTVDckM7K0VBb0hrQztxQkFoNUgxQzt1QkFzcUhRO3lCQThDSyxPQW4ySTlCbVY7OzRCQXcySXdDOzRCQURIOzswREEvMklyQy9DOzZCQWkzSXFDLGFBaDNJckNDO3NDQW8zSTBDO3NDQUdBOzRCQVJGOzZCQWtCUzs2QkFGSDs7MERBaDRJOUNEOzZCQSszSTJDOzZCQUZBOzZCQURIOzZCQURBOzs7NEJBWUE7NEJBREg7OzBEQXQ0SXJDQTs2QkF3NElxQyxhQXY0SXJDQztzQ0EyNEkwQztzQ0FHQTs0QkFSRjs2QkFrQlM7NkJBRkg7OzBEQXY1STlDRDs2QkFzNUkyQzs2QkFGQTs2QkFESDs2QkFEQTs7OzRCQVlBOzRCQURIOzswREE3NUlyQ0E7NkJBKzVJcUMsYUE5NUlyQ0M7c0NBazZJMEM7c0NBR0E7NEJBUkY7NkJBa0JTOzZCQUZIOzswREE5Nkk5Q0Q7NkJBNjZJMkM7NkJBRkE7NkJBREg7NkJBREE7cUZBUWtCO3VCQXBIakM7eUJBSW9CLE9BeHpJN0NtRzs7Ozs7O3lCQTYwSTBDO3NDQTUwSTFDQzswQkE0MEkwQzswQkFERzswQkFGSDs7d0RBM3dIdENOOzBCQTB3SG1DOzBCQURHOzBCQUZIOzt3REF2d0huQ0E7MEJBc3dIZ0M7MEJBREc7MEJBREg7aUVBajBJcENsWTswQkFnMElpQzswQkFERzswQkFESDtpRUE5eklqQ0E7MEJBNnpJOEI7Z0ZBaUNnQzt1QkE1Q3JDOytFQW9Ia0M7cUJBMXhIMUM7dUJBZ2pIUTt5QkE4Q0ssT0E3dUk5Qm1WOzs0QkFrdkl3Qzs0QkFESDs7MERBenZJckMvQzs2QkEydklxQyxhQTF2SXJDQztzQ0E4dkkwQztzQ0FHQTs0QkFSRjs2QkFrQlM7NkJBRkg7OzBEQTF3STlDRDs2QkF5d0kyQzs2QkFGQTs2QkFESDs2QkFEQTs7OzRCQVlBOzRCQURIOzswREFoeElyQ0E7NkJBa3hJcUMsYUFqeElyQ0M7c0NBcXhJMEM7c0NBR0E7NEJBUkY7NkJBa0JTOzZCQUZIOzswREFqeUk5Q0Q7NkJBZ3lJMkM7NkJBRkE7NkJBREg7NkJBREE7Ozs0QkFZQTs0QkFESDs7MERBdnlJckNBOzZCQXl5SXFDLGFBeHlJckNDO3NDQTR5STBDO3NDQUdBOzRCQVJGOzZCQWtCUzs2QkFGSDs7MERBeHpJOUNEOzZCQXV6STJDOzZCQUZBOzZCQURIOzZCQURBO3FGQVFrQjt1QkFwSGpDO3lCQUlvQixPQWxzSTdDbUc7Ozs7Ozt5QkF1dEkwQztzQ0F0dEkxQ0M7MEJBc3RJMEM7MEJBREc7MEJBRkg7O3dEQXJwSHRDTjswQkFvcEhtQzswQkFERzswQkFGSDs7d0RBanBIbkNBOzBCQWdwSGdDOzBCQURHOzBCQURIO2lFQTNzSXBDbFk7MEJBMHNJaUM7MEJBREc7MEJBREg7aUVBeHNJakNBOzBCQXVzSThCO2dGQWlDZ0M7dUJBNUNyQzsrRUFvSGtDO3FCQXBxSDFDO3VCQTA3R1E7eUJBOENLLE9Bdm5JOUJtVjs7NEJBNG5Jd0M7NEJBREg7OzBEQW5vSXJDL0M7NkJBcW9JcUMsYUFwb0lyQ0M7c0NBd29JMEM7c0NBR0E7NEJBUkY7NkJBa0JTOzZCQUZIOzswREFwcEk5Q0Q7NkJBbXBJMkM7NkJBRkE7NkJBREg7NkJBREE7Ozs0QkFZQTs0QkFESDs7MERBMXBJckNBOzZCQTRwSXFDLGFBM3BJckNDO3NDQStwSTBDO3NDQUdBOzRCQVJGOzZCQWtCUzs2QkFGSDs7MERBM3FJOUNEOzZCQTBxSTJDOzZCQUZBOzZCQURIOzZCQURBOzs7NEJBWUE7NEJBREg7OzBEQWpySXJDQTs2QkFtcklxQyxhQWxySXJDQztzQ0FzckkwQztzQ0FHQTs0QkFSRjs2QkFrQlM7NkJBRkg7OzBEQWxzSTlDRDs2QkFpc0kyQzs2QkFGQTs2QkFESDs2QkFEQTtxRkFRa0I7dUJBcEhqQzt5QkFJb0IsT0E1a0k3Q21HOzs7Ozs7eUJBaW1JMEM7c0NBaG1JMUNDOzBCQWdtSTBDOzBCQURHOzBCQUZIOzt3REEvaEh0Q047MEJBOGhIbUM7MEJBREc7MEJBRkg7O3dEQTNoSG5DQTswQkEwaEhnQzswQkFERzswQkFESDtpRUFybElwQ2xZOzBCQW9sSWlDOzBCQURHOzBCQURIO2lFQWxsSWpDQTswQkFpbEk4QjtnRkFpQ2dDO3VCQTVDckM7K0VBb0hrQztxQkE5aUgxQzt1QkFvMEdRO3lCQThDSyxPQWpnSTlCbVY7OzRCQXNnSXdDOzRCQURIOzswREE3Z0lyQy9DOzZCQStnSXFDLGFBOWdJckNDO3NDQWtoSTBDO3NDQUdBOzRCQVJGOzZCQWtCUzs2QkFGSDs7MERBOWhJOUNEOzZCQTZoSTJDOzZCQUZBOzZCQURIOzZCQURBOzs7NEJBWUE7NEJBREg7OzBEQXBpSXJDQTs2QkFzaUlxQyxhQXJpSXJDQztzQ0F5aUkwQztzQ0FHQTs0QkFSRjs2QkFrQlM7NkJBRkg7OzBEQXJqSTlDRDs2QkFvakkyQzs2QkFGQTs2QkFESDs2QkFEQTs7OzRCQVlBOzRCQURIOzswREEzaklyQ0E7NkJBNmpJcUMsYUE1aklyQ0M7c0NBZ2tJMEM7c0NBR0E7NEJBUkY7NkJBa0JTOzZCQUZIOzswREE1a0k5Q0Q7NkJBMmtJMkM7NkJBRkE7NkJBREg7NkJBREE7cUZBUWtCO3VCQXBIakM7eUJBSW9CLE9BdDlIN0NtRzs7Ozs7O3lCQTIrSDBDO3NDQTErSDFDQzswQkEwK0gwQzswQkFERzswQkFGSDs7d0RBejZHdENOOzBCQXc2R21DOzBCQURHOzBCQUZIOzt3REFyNkduQ0E7MEJBbzZHZ0M7MEJBREc7MEJBREg7aUVBLzlIcENsWTswQkE4OUhpQzswQkFERzswQkFESDtpRUE1OUhqQ0E7MEJBMjlIOEI7Z0ZBaUNnQzt1QkE1Q3JDOytFQW9Ia0M7cUJBeDdHMUM7dUJBOHNHUTt5QkE4Q0ssT0EzNEg5Qm1WOzs0QkFnNUh3Qzs0QkFESDs7MERBdjVIckMvQzs2QkF5NUhxQyxhQXg1SHJDQztzQ0E0NUgwQztzQ0FHQTs0QkFSRjs2QkFrQlM7NkJBRkg7OzBEQXg2SDlDRDs2QkF1NkgyQzs2QkFGQTs2QkFESDs2QkFEQTs7OzRCQVlBOzRCQURIOzswREE5NkhyQ0E7NkJBZzdIcUMsYUEvNkhyQ0M7c0NBbTdIMEM7c0NBR0E7NEJBUkY7NkJBa0JTOzZCQUZIOzswREEvN0g5Q0Q7NkJBODdIMkM7NkJBRkE7NkJBREg7NkJBREE7Ozs0QkFZQTs0QkFESDs7MERBcjhIckNBOzZCQXU4SHFDLGFBdDhIckNDO3NDQTA4SDBDO3NDQUdBOzRCQVJGOzZCQWtCUzs2QkFGSDs7MERBdDlIOUNEOzZCQXE5SDJDOzZCQUZBOzZCQURIOzZCQURBO3FGQVFrQjt1QkFwSGpDO3lCQUlvQixPQWgySDdDbUc7Ozs7Ozt5QkFxM0gwQztzQ0FwM0gxQ0M7MEJBbzNIMEM7MEJBREc7MEJBRkg7O3dEQW56R3RDTjswQkFrekdtQzswQkFERzswQkFGSDs7d0RBL3lHbkNBOzBCQTh5R2dDOzBCQURHOzBCQURIO2lFQXoySHBDbFk7MEJBdzJIaUM7MEJBREc7MEJBREg7aUVBdDJIakNBOzBCQXEySDhCO2dGQWlDZ0M7dUJBNUNyQzsrRUFvSGtDO3FCQWwwRzFDO3VCQXdsR1E7eUJBOENLLE9BcnhIOUJtVjs7NEJBMHhId0M7NEJBREg7OzBEQWp5SHJDL0M7NkJBbXlIcUMsYUFseUhyQ0M7c0NBc3lIMEM7c0NBR0E7NEJBUkY7NkJBa0JTOzZCQUZIOzswREFsekg5Q0Q7NkJBaXpIMkM7NkJBRkE7NkJBREg7NkJBREE7Ozs0QkFZQTs0QkFESDs7MERBeHpIckNBOzZCQTB6SHFDLGFBenpIckNDO3NDQTZ6SDBDO3NDQUdBOzRCQVJGOzZCQWtCUzs2QkFGSDs7MERBejBIOUNEOzZCQXcwSDJDOzZCQUZBOzZCQURIOzZCQURBOzs7NEJBWUE7NEJBREg7OzBEQS8wSHJDQTs2QkFpMUhxQyxhQWgxSHJDQztzQ0FvMUgwQztzQ0FHQTs0QkFSRjs2QkFrQlM7NkJBRkg7OzBEQWgySDlDRDs2QkErMUgyQzs2QkFGQTs2QkFESDs2QkFEQTtxRkFRa0I7dUJBcEhqQzt5QkFJb0IsT0ExdUg3Q21HOzs7Ozs7eUJBK3ZIMEM7c0NBOXZIMUNDOzBCQTh2SDBDOzBCQURHOzBCQUZIOzt3REE3ckd0Q047MEJBNHJHbUM7MEJBREc7MEJBRkg7O3dEQXpyR25DQTswQkF3ckdnQzswQkFERzswQkFESDtpRUFudkhwQ2xZOzBCQWt2SGlDOzBCQURHOzBCQURIO2lFQWh2SGpDQTswQkErdUg4QjtnRkFpQ2dDO3VCQTVDckM7K0VBb0hrQztxQkE1c0cxQzt1QkFrK0ZRO3lCQThDSyxPQS9wSDlCbVY7OzRCQW9xSHdDOzRCQURIOzswREEzcUhyQy9DOzZCQTZxSHFDLGFBNXFIckNDO3NDQWdySDBDO3NDQUdBOzRCQVJGOzZCQWtCUzs2QkFGSDs7MERBNXJIOUNEOzZCQTJySDJDOzZCQUZBOzZCQURIOzZCQURBOzs7NEJBWUE7NEJBREg7OzBEQWxzSHJDQTs2QkFvc0hxQyxhQW5zSHJDQztzQ0F1c0gwQztzQ0FHQTs0QkFSRjs2QkFrQlM7NkJBRkg7OzBEQW50SDlDRDs2QkFrdEgyQzs2QkFGQTs2QkFESDs2QkFEQTs7OzRCQVlBOzRCQURIOzswREF6dEhyQ0E7NkJBMnRIcUMsYUExdEhyQ0M7c0NBOHRIMEM7c0NBR0E7NEJBUkY7NkJBa0JTOzZCQUZIOzswREExdUg5Q0Q7NkJBeXVIMkM7NkJBRkE7NkJBREg7NkJBREE7cUZBUWtCO3VCQXBIakM7eUJBSW9CLE9BcG5IN0NtRzs7Ozs7O3lCQXlvSDBDO3NDQXhvSDFDQzswQkF3b0gwQzswQkFERzswQkFGSDs7d0RBdmtHdENOOzBCQXNrR21DOzBCQURHOzBCQUZIOzt3REFua0duQ0E7MEJBa2tHZ0M7MEJBREc7MEJBREg7aUVBN25IcENsWTswQkE0bkhpQzswQkFERzswQkFESDtpRUExbkhqQ0E7MEJBeW5IOEI7Z0ZBaUNnQzt1QkE1Q3JDOytFQW9Ia0M7cUJBdGxHMUM7dUJBNDJGUTt5QkE4Q0ssT0F6aUg5Qm1WOzs0QkE4aUh3Qzs0QkFESDs7MERBcmpIckMvQzs2QkF1akhxQyxhQXRqSHJDQztzQ0EwakgwQztzQ0FHQTs0QkFSRjs2QkFrQlM7NkJBRkg7OzBEQXRrSDlDRDs2QkFxa0gyQzs2QkFGQTs2QkFESDs2QkFEQTs7OzRCQVlBOzRCQURIOzswREE1a0hyQ0E7NkJBOGtIcUMsYUE3a0hyQ0M7c0NBaWxIMEM7c0NBR0E7NEJBUkY7NkJBa0JTOzZCQUZIOzswREE3bEg5Q0Q7NkJBNGxIMkM7NkJBRkE7NkJBREg7NkJBREE7Ozs0QkFZQTs0QkFESDs7MERBbm1IckNBOzZCQXFtSHFDLGFBcG1IckNDO3NDQXdtSDBDO3NDQUdBOzRCQVJGOzZCQWtCUzs2QkFGSDs7MERBcG5IOUNEOzZCQW1uSDJDOzZCQUZBOzZCQURIOzZCQURBO3FGQVFrQjt1QkFwSGpDO3lCQUlvQixPQTkvRzdDbUc7Ozs7Ozt5QkFtaEgwQztzQ0FsaEgxQ0M7MEJBa2hIMEM7MEJBREc7MEJBRkg7O3dEQWo5RnRDTjswQkFnOUZtQzswQkFERzswQkFGSDs7d0RBNzhGbkNBOzBCQTQ4RmdDOzBCQURHOzBCQURIO2lFQXZnSHBDbFk7MEJBc2dIaUM7MEJBREc7MEJBREg7aUVBcGdIakNBOzBCQW1nSDhCO2dGQWlDZ0M7dUJBNUNyQzsrRUFvSGtDO3FCQWgrRjFDO3VCQXN2RlE7eUJBOENLLE9BbjdHOUJtVjs7NEJBdzdHd0M7NEJBREg7OzBEQS83R3JDL0M7NkJBaThHcUMsYUFoOEdyQ0M7c0NBbzhHMEM7c0NBR0E7NEJBUkY7NkJBa0JTOzZCQUZIOzswREFoOUc5Q0Q7NkJBKzhHMkM7NkJBRkE7NkJBREg7NkJBREE7Ozs0QkFZQTs0QkFESDs7MERBdDlHckNBOzZCQXc5R3FDLGFBdjlHckNDO3NDQTI5RzBDO3NDQUdBOzRCQVJGOzZCQWtCUzs2QkFGSDs7MERBditHOUNEOzZCQXMrRzJDOzZCQUZBOzZCQURIOzZCQURBOzs7NEJBWUE7NEJBREg7OzBEQTcrR3JDQTs2QkErK0dxQyxhQTkrR3JDQztzQ0FrL0cwQztzQ0FHQTs0QkFSRjs2QkFrQlM7NkJBRkg7OzBEQTkvRzlDRDs2QkE2L0cyQzs2QkFGQTs2QkFESDs2QkFEQTtxRkFRa0I7dUJBcEhqQzt5QkFJb0IsT0F4NEc3Q21HOzs7Ozs7eUJBNjVHMEM7c0NBNTVHMUNDOzBCQTQ1RzBDOzBCQURHOzBCQUZIOzt3REEzMUZ0Q047MEJBMDFGbUM7MEJBREc7MEJBRkg7O3dEQXYxRm5DQTswQkFzMUZnQzswQkFERzswQkFESDtpRUFqNUdwQ2xZOzBCQWc1R2lDOzBCQURHOzBCQURIO2lFQTk0R2pDQTswQkE2NEc4QjtnRkFpQ2dDO3VCQTVDckM7K0VBb0hrQztxQkExMkYxQzt1QkFnb0ZRO3lCQThDSyxPQTd6RzlCbVY7OzRCQWswR3dDOzRCQURIOzswREF6MEdyQy9DOzZCQTIwR3FDLGFBMTBHckNDO3NDQTgwRzBDO3NDQUdBOzRCQVJGOzZCQWtCUzs2QkFGSDs7MERBMTFHOUNEOzZCQXkxRzJDOzZCQUZBOzZCQURIOzZCQURBOzs7NEJBWUE7NEJBREg7OzBEQWgyR3JDQTs2QkFrMkdxQyxhQWoyR3JDQztzQ0FxMkcwQztzQ0FHQTs0QkFSRjs2QkFrQlM7NkJBRkg7OzBEQWozRzlDRDs2QkFnM0cyQzs2QkFGQTs2QkFESDs2QkFEQTs7OzRCQVlBOzRCQURIOzswREF2M0dyQ0E7NkJBeTNHcUMsYUF4M0dyQ0M7c0NBNDNHMEM7c0NBR0E7NEJBUkY7NkJBa0JTOzZCQUZIOzswREF4NEc5Q0Q7NkJBdTRHMkM7NkJBRkE7NkJBREg7NkJBREE7cUZBUWtCO3VCQXBIakM7eUJBSW9CLE9BbHhHN0NtRzs7Ozs7O3lCQXV5RzBDO3NDQXR5RzFDQzswQkFzeUcwQzswQkFERzswQkFGSDs7d0RBcnVGdENOOzBCQW91Rm1DOzBCQURHOzBCQUZIOzt3REFqdUZuQ0E7MEJBZ3VGZ0M7MEJBREc7MEJBREg7aUVBM3hHcENsWTswQkEweEdpQzswQkFERzswQkFESDtpRUF4eEdqQ0E7MEJBdXhHOEI7Z0ZBaUNnQzt1QkE1Q3JDOytFQW9Ia0M7cUJBcHZGMUM7dUJBMGdGUTt5QkE4Q0ssT0F2c0c5Qm1WOzs0QkE0c0d3Qzs0QkFESDs7MERBbnRHckMvQzs2QkFxdEdxQyxhQXB0R3JDQztzQ0F3dEcwQztzQ0FHQTs0QkFSRjs2QkFrQlM7NkJBRkg7OzBEQXB1RzlDRDs2QkFtdUcyQzs2QkFGQTs2QkFESDs2QkFEQTs7OzRCQVlBOzRCQURIOzswREExdUdyQ0E7NkJBNHVHcUMsYUEzdUdyQ0M7c0NBK3VHMEM7c0NBR0E7NEJBUkY7NkJBa0JTOzZCQUZIOzswREEzdkc5Q0Q7NkJBMHZHMkM7NkJBRkE7NkJBREg7NkJBREE7Ozs0QkFZQTs0QkFESDs7MERBandHckNBOzZCQW13R3FDLGFBbHdHckNDO3NDQXN3RzBDO3NDQUdBOzRCQVJGOzZCQWtCUzs2QkFGSDs7MERBbHhHOUNEOzZCQWl4RzJDOzZCQUZBOzZCQURIOzZCQURBO3FGQVFrQjt1QkFwSGpDO3lCQUlvQixPQTVwRzdDbUc7Ozs7Ozt5QkFpckcwQztzQ0FockcxQ0M7MEJBZ3JHMEM7MEJBREc7MEJBRkg7O3dEQS9tRnRDTjswQkE4bUZtQzswQkFERzswQkFGSDs7d0RBM21GbkNBOzBCQTBtRmdDOzBCQURHOzBCQURIO2lFQXJxR3BDbFk7MEJBb3FHaUM7MEJBREc7MEJBREg7aUVBbHFHakNBOzBCQWlxRzhCO2dGQWlDZ0M7dUJBNUNyQzsrRUFvSGtDO3FCQTluRjFDO3VCQW81RVE7eUJBOENLLE9BamxHOUJtVjs7NEJBc2xHd0M7NEJBREg7OzBEQTdsR3JDL0M7NkJBK2xHcUMsYUE5bEdyQ0M7c0NBa21HMEM7c0NBR0E7NEJBUkY7NkJBa0JTOzZCQUZIOzswREE5bUc5Q0Q7NkJBNm1HMkM7NkJBRkE7NkJBREg7NkJBREE7Ozs0QkFZQTs0QkFESDs7MERBcG5HckNBOzZCQXNuR3FDLGFBcm5HckNDO3NDQXluRzBDO3NDQUdBOzRCQVJGOzZCQWtCUzs2QkFGSDs7MERBcm9HOUNEOzZCQW9vRzJDOzZCQUZBOzZCQURIOzZCQURBOzs7NEJBWUE7NEJBREg7OzBEQTNvR3JDQTs2QkE2b0dxQyxhQTVvR3JDQztzQ0FncEcwQztzQ0FHQTs0QkFSRjs2QkFrQlM7NkJBRkg7OzBEQTVwRzlDRDs2QkEycEcyQzs2QkFGQTs2QkFESDs2QkFEQTtxRkFRa0I7dUJBcEhqQzt5QkFJb0IsT0F0aUc3Q21HOzs7Ozs7eUJBMmpHMEM7c0NBMWpHMUNDOzBCQTBqRzBDOzBCQURHOzBCQUZIOzt3REF6L0V0Q047MEJBdy9FbUM7MEJBREc7MEJBRkg7O3dEQXIvRW5DQTswQkFvL0VnQzswQkFERzswQkFESDtpRUEvaUdwQ2xZOzBCQThpR2lDOzBCQURHOzBCQURIO2lFQTVpR2pDQTswQkEyaUc4QjtnRkFpQ2dDO3VCQTVDckM7K0VBb0hrQztxQkF4Z0YxQzt1QkE4eEVRO3lCQThDSyxPQTM5RjlCbVY7OzRCQWcrRndDOzRCQURIOzswREF2K0ZyQy9DOzZCQXkrRnFDLGFBeCtGckNDO3NDQTQrRjBDO3NDQUdBOzRCQVJGOzZCQWtCUzs2QkFGSDs7MERBeC9GOUNEOzZCQXUvRjJDOzZCQUZBOzZCQURIOzZCQURBOzs7NEJBWUE7NEJBREg7OzBEQTkvRnJDQTs2QkFnZ0dxQyxhQS8vRnJDQztzQ0FtZ0cwQztzQ0FHQTs0QkFSRjs2QkFrQlM7NkJBRkg7OzBEQS9nRzlDRDs2QkE4Z0cyQzs2QkFGQTs2QkFESDs2QkFEQTs7OzRCQVlBOzRCQURIOzswREFyaEdyQ0E7NkJBdWhHcUMsYUF0aEdyQ0M7c0NBMGhHMEM7c0NBR0E7NEJBUkY7NkJBa0JTOzZCQUZIOzswREF0aUc5Q0Q7NkJBcWlHMkM7NkJBRkE7NkJBREg7NkJBREE7cUZBUWtCO3VCQXBIakM7eUJBSW9CLE9BaDdGN0NtRzs7Ozs7O3lCQXE4RjBDO3NDQXA4RjFDQzswQkFvOEYwQzswQkFERzswQkFGSDs7d0RBbjRFdENOOzBCQWs0RW1DOzBCQURHOzBCQUZIOzt3REEvM0VuQ0E7MEJBODNFZ0M7MEJBREc7MEJBREg7aUVBejdGcENsWTswQkF3N0ZpQzswQkFERzswQkFESDtpRUF0N0ZqQ0E7MEJBcTdGOEI7Z0ZBaUNnQzt1QkE1Q3JDOytFQW9Ia0M7cUJBbDVFMUM7dUJBd3FFUTt5QkE4Q0ssT0FyMkY5Qm1WOzs0QkEwMkZ3Qzs0QkFESDs7MERBajNGckMvQzs2QkFtM0ZxQyxhQWwzRnJDQztzQ0FzM0YwQztzQ0FHQTs0QkFSRjs2QkFrQlM7NkJBRkg7OzBEQWw0RjlDRDs2QkFpNEYyQzs2QkFGQTs2QkFESDs2QkFEQTs7OzRCQVlBOzRCQURIOzswREF4NEZyQ0E7NkJBMDRGcUMsYUF6NEZyQ0M7c0NBNjRGMEM7c0NBR0E7NEJBUkY7NkJBa0JTOzZCQUZIOzswREF6NUY5Q0Q7NkJBdzVGMkM7NkJBRkE7NkJBREg7NkJBREE7Ozs0QkFZQTs0QkFESDs7MERBLzVGckNBOzZCQWk2RnFDLGFBaDZGckNDO3NDQW82RjBDO3NDQUdBOzRCQVJGOzZCQWtCUzs2QkFGSDs7MERBaDdGOUNEOzZCQSs2RjJDOzZCQUZBOzZCQURIOzZCQURBO3FGQVFrQjt1QkFwSGpDO3lCQUlvQixPQTF6RjdDbUc7Ozs7Ozt5QkErMEYwQztzQ0E5MEYxQ0M7MEJBODBGMEM7MEJBREc7MEJBRkg7O3dEQTd3RXRDTjswQkE0d0VtQzswQkFERzswQkFGSDs7d0RBendFbkNBOzBCQXd3RWdDOzBCQURHOzBCQURIO2lFQW4wRnBDbFk7MEJBazBGaUM7MEJBREc7MEJBREg7aUVBaDBGakNBOzBCQSt6RjhCO2dGQWlDZ0M7dUJBNUNyQzsrRUFvSGtDO3FCQTV4RTFDO3VCQWtqRVE7eUJBOENLLE9BL3VGOUJtVjs7NEJBb3ZGd0M7NEJBREg7OzBEQTN2RnJDL0M7NkJBNnZGcUMsYUE1dkZyQ0M7c0NBZ3dGMEM7c0NBR0E7NEJBUkY7NkJBa0JTOzZCQUZIOzswREE1d0Y5Q0Q7NkJBMndGMkM7NkJBRkE7NkJBREg7NkJBREE7Ozs0QkFZQTs0QkFESDs7MERBbHhGckNBOzZCQW94RnFDLGFBbnhGckNDO3NDQXV4RjBDO3NDQUdBOzRCQVJGOzZCQWtCUzs2QkFGSDs7MERBbnlGOUNEOzZCQWt5RjJDOzZCQUZBOzZCQURIOzZCQURBOzs7NEJBWUE7NEJBREg7OzBEQXp5RnJDQTs2QkEyeUZxQyxhQTF5RnJDQztzQ0E4eUYwQztzQ0FHQTs0QkFSRjs2QkFrQlM7NkJBRkg7OzBEQTF6RjlDRDs2QkF5ekYyQzs2QkFGQTs2QkFESDs2QkFEQTtxRkFRa0I7dUJBcEhqQzt5QkFJb0IsT0Fwc0Y3Q21HOzs7Ozs7eUJBeXRGMEM7c0NBeHRGMUNDOzBCQXd0RjBDOzBCQURHOzBCQUZIOzt3REF2cEV0Q047MEJBc3BFbUM7MEJBREc7MEJBRkg7O3dEQW5wRW5DQTswQkFrcEVnQzswQkFERzswQkFESDtpRUE3c0ZwQ2xZOzBCQTRzRmlDOzBCQURHOzBCQURIO2lFQTFzRmpDQTswQkF5c0Y4QjtnRkFpQ2dDO3VCQTVDckM7K0VBb0hrQztxQkF0cUUxQzt1QkE0N0RRO3lCQThDSyxPQXpuRjlCbVY7OzRCQThuRndDOzRCQURIOzswREFyb0ZyQy9DOzZCQXVvRnFDLGFBdG9GckNDO3NDQTBvRjBDO3NDQUdBOzRCQVJGOzZCQWtCUzs2QkFGSDs7MERBdHBGOUNEOzZCQXFwRjJDOzZCQUZBOzZCQURIOzZCQURBOzs7NEJBWUE7NEJBREg7OzBEQTVwRnJDQTs2QkE4cEZxQyxhQTdwRnJDQztzQ0FpcUYwQztzQ0FHQTs0QkFSRjs2QkFrQlM7NkJBRkg7OzBEQTdxRjlDRDs2QkE0cUYyQzs2QkFGQTs2QkFESDs2QkFEQTs7OzRCQVlBOzRCQURIOzswREFuckZyQ0E7NkJBcXJGcUMsYUFwckZyQ0M7c0NBd3JGMEM7c0NBR0E7NEJBUkY7NkJBa0JTOzZCQUZIOzswREFwc0Y5Q0Q7NkJBbXNGMkM7NkJBRkE7NkJBREg7NkJBREE7cUZBUWtCO3VCQXBIakM7eUJBSW9CLE9BOWtGN0NtRzs7Ozs7O3lCQW1tRjBDO3NDQWxtRjFDQzswQkFrbUYwQzswQkFERzswQkFGSDs7d0RBamlFdENOOzBCQWdpRW1DOzBCQURHOzBCQUZIOzt3REE3aEVuQ0E7MEJBNGhFZ0M7MEJBREc7MEJBREg7aUVBdmxGcENsWTswQkFzbEZpQzswQkFERzswQkFESDtpRUFwbEZqQ0E7MEJBbWxGOEI7Z0ZBaUNnQzt1QkE1Q3JDOytFQW9Ia0M7cUJBaGpFMUM7dUJBczBEUTt5QkE4Q0ssT0FuZ0Y5Qm1WOzs0QkF3Z0Z3Qzs0QkFESDs7MERBL2dGckMvQzs2QkFpaEZxQyxhQWhoRnJDQztzQ0FvaEYwQztzQ0FHQTs0QkFSRjs2QkFrQlM7NkJBRkg7OzBEQWhpRjlDRDs2QkEraEYyQzs2QkFGQTs2QkFESDs2QkFEQTs7OzRCQVlBOzRCQURIOzswREF0aUZyQ0E7NkJBd2lGcUMsYUF2aUZyQ0M7c0NBMmlGMEM7c0NBR0E7NEJBUkY7NkJBa0JTOzZCQUZIOzswREF2akY5Q0Q7NkJBc2pGMkM7NkJBRkE7NkJBREg7NkJBREE7Ozs0QkFZQTs0QkFESDs7MERBN2pGckNBOzZCQStqRnFDLGFBOWpGckNDO3NDQWtrRjBDO3NDQUdBOzRCQVJGOzZCQWtCUzs2QkFGSDs7MERBOWtGOUNEOzZCQTZrRjJDOzZCQUZBOzZCQURIOzZCQURBO3FGQVFrQjt1QkFwSGpDO3lCQUlvQixPQXg5RTdDbUc7Ozs7Ozt5QkE2K0UwQztzQ0E1K0UxQ0M7MEJBNCtFMEM7MEJBREc7MEJBRkg7O3dEQTM2RHRDTjswQkEwNkRtQzswQkFERzswQkFGSDs7d0RBdjZEbkNBOzBCQXM2RGdDOzBCQURHOzBCQURIO2lFQWorRXBDbFk7MEJBZytFaUM7MEJBREc7MEJBREg7aUVBOTlFakNBOzBCQTY5RThCO2dGQWlDZ0M7dUJBNUNyQzsrRUFvSGtDO3FCQTE3RDFDO3VCQWd0RFE7eUJBOENLLE9BNzRFOUJtVjs7NEJBazVFd0M7NEJBREg7OzBEQXo1RXJDL0M7NkJBMjVFcUMsYUExNUVyQ0M7c0NBODVFMEM7c0NBR0E7NEJBUkY7NkJBa0JTOzZCQUZIOzswREExNkU5Q0Q7NkJBeTZFMkM7NkJBRkE7NkJBREg7NkJBREE7Ozs0QkFZQTs0QkFESDs7MERBaDdFckNBOzZCQWs3RXFDLGFBajdFckNDO3NDQXE3RTBDO3NDQUdBOzRCQVJGOzZCQWtCUzs2QkFGSDs7MERBajhFOUNEOzZCQWc4RTJDOzZCQUZBOzZCQURIOzZCQURBOzs7NEJBWUE7NEJBREg7OzBEQXY4RXJDQTs2QkF5OEVxQyxhQXg4RXJDQztzQ0E0OEUwQztzQ0FHQTs0QkFSRjs2QkFrQlM7NkJBRkg7OzBEQXg5RTlDRDs2QkF1OUUyQzs2QkFGQTs2QkFESDs2QkFEQTtxRkFRa0I7dUJBcEhqQzt5QkFJb0IsT0FsMkU3Q21HOzs7Ozs7eUJBdTNFMEM7c0NBdDNFMUNDOzBCQXMzRTBDOzBCQURHOzBCQUZIOzt3REFyekR0Q047MEJBb3pEbUM7MEJBREc7MEJBRkg7O3dEQWp6RG5DQTswQkFnekRnQzswQkFERzswQkFESDtpRUEzMkVwQ2xZOzBCQTAyRWlDOzBCQURHOzBCQURIO2lFQXgyRWpDQTswQkF1MkU4QjtnRkFpQ2dDO3VCQTVDckM7K0VBb0hrQztxQkFwMEQxQzt1QkEwbERRO3lCQThDSyxPQXZ4RTlCbVY7OzRCQTR4RXdDOzRCQURIOzswREFueUVyQy9DOzZCQXF5RXFDLGFBcHlFckNDO3NDQXd5RTBDO3NDQUdBOzRCQVJGOzZCQWtCUzs2QkFGSDs7MERBcHpFOUNEOzZCQW16RTJDOzZCQUZBOzZCQURIOzZCQURBOzs7NEJBWUE7NEJBREg7OzBEQTF6RXJDQTs2QkE0ekVxQyxhQTN6RXJDQztzQ0ErekUwQztzQ0FHQTs0QkFSRjs2QkFrQlM7NkJBRkg7OzBEQTMwRTlDRDs2QkEwMEUyQzs2QkFGQTs2QkFESDs2QkFEQTs7OzRCQVlBOzRCQURIOzswREFqMUVyQ0E7NkJBbTFFcUMsYUFsMUVyQ0M7c0NBczFFMEM7c0NBR0E7NEJBUkY7NkJBa0JTOzZCQUZIOzswREFsMkU5Q0Q7NkJBaTJFMkM7NkJBRkE7NkJBREg7NkJBREE7cUZBUWtCO3VCQXBIakM7eUJBSW9CLE9BNXVFN0NtRzs7Ozs7O3lCQWl3RTBDO3NDQWh3RTFDQzswQkFnd0UwQzswQkFERzswQkFGSDs7d0RBL3JEdENOOzBCQThyRG1DOzBCQURHOzBCQUZIOzt3REEzckRuQ0E7MEJBMHJEZ0M7MEJBREc7MEJBREg7aUVBcnZFcENsWTswQkFvdkVpQzswQkFERzswQkFESDtpRUFsdkVqQ0E7MEJBaXZFOEI7Z0ZBaUNnQzt1QkE1Q3JDOytFQW9Ia0M7cUJBOXNEMUM7dUJBbytDUTt5QkE4Q0ssT0FqcUU5Qm1WOzs0QkFzcUV3Qzs0QkFESDs7MERBN3FFckMvQzs2QkErcUVxQyxhQTlxRXJDQztzQ0FrckUwQztzQ0FHQTs0QkFSRjs2QkFrQlM7NkJBRkg7OzBEQTlyRTlDRDs2QkE2ckUyQzs2QkFGQTs2QkFESDs2QkFEQTs7OzRCQVlBOzRCQURIOzswREFwc0VyQ0E7NkJBc3NFcUMsYUFyc0VyQ0M7c0NBeXNFMEM7c0NBR0E7NEJBUkY7NkJBa0JTOzZCQUZIOzswREFydEU5Q0Q7NkJBb3RFMkM7NkJBRkE7NkJBREg7NkJBREE7Ozs0QkFZQTs0QkFESDs7MERBM3RFckNBOzZCQTZ0RXFDLGFBNXRFckNDO3NDQWd1RTBDO3NDQUdBOzRCQVJGOzZCQWtCUzs2QkFGSDs7MERBNXVFOUNEOzZCQTJ1RTJDOzZCQUZBOzZCQURIOzZCQURBO3FGQVFrQjt1QkFwSGpDO3lCQUlvQixPQXRuRTdDbUc7Ozs7Ozt5QkEyb0UwQztzQ0Exb0UxQ0M7MEJBMG9FMEM7MEJBREc7MEJBRkg7O3dEQXprRHRDTjswQkF3a0RtQzswQkFERzswQkFGSDs7d0RBcmtEbkNBOzBCQW9rRGdDOzBCQURHOzBCQURIO2lFQS9uRXBDbFk7MEJBOG5FaUM7MEJBREc7MEJBREg7aUVBNW5FakNBOzBCQTJuRThCO2dGQWlDZ0M7dUJBNUNyQzsrRUFvSGtDO3FCQXhsRDFDO3VCQTgyQ1E7eUJBOENLLE9BM2lFOUJtVjs7NEJBZ2pFd0M7NEJBREg7OzBEQXZqRXJDL0M7NkJBeWpFcUMsYUF4akVyQ0M7c0NBNGpFMEM7c0NBR0E7NEJBUkY7NkJBa0JTOzZCQUZIOzswREF4a0U5Q0Q7NkJBdWtFMkM7NkJBRkE7NkJBREg7NkJBREE7Ozs0QkFZQTs0QkFESDs7MERBOWtFckNBOzZCQWdsRXFDLGFBL2tFckNDO3NDQW1sRTBDO3NDQUdBOzRCQVJGOzZCQWtCUzs2QkFGSDs7MERBL2xFOUNEOzZCQThsRTJDOzZCQUZBOzZCQURIOzZCQURBOzs7NEJBWUE7NEJBREg7OzBEQXJtRXJDQTs2QkF1bUVxQyxhQXRtRXJDQztzQ0EwbUUwQztzQ0FHQTs0QkFSRjs2QkFrQlM7NkJBRkg7OzBEQXRuRTlDRDs2QkFxbkUyQzs2QkFGQTs2QkFESDs2QkFEQTtxRkFRa0I7dUJBcEhqQzt5QkFJb0IsT0FoZ0U3Q21HOzs7Ozs7eUJBcWhFMEM7c0NBcGhFMUNDOzBCQW9oRTBDOzBCQURHOzBCQUZIOzt3REFuOUN0Q047MEJBazlDbUM7MEJBREc7MEJBRkg7O3dEQS84Q25DQTswQkE4OENnQzswQkFERzswQkFESDtpRUF6Z0VwQ2xZOzBCQXdnRWlDOzBCQURHOzBCQURIO2lFQXRnRWpDQTswQkFxZ0U4QjtnRkFpQ2dDO3VCQTVDckM7K0VBb0hrQztxQkFsK0MxQzt1QkF3dkNRO3lCQThDSyxPQXI3RDlCbVY7OzRCQTA3RHdDOzRCQURIOzswREFqOERyQy9DOzZCQW04RHFDLGFBbDhEckNDO3NDQXM4RDBDO3NDQUdBOzRCQVJGOzZCQWtCUzs2QkFGSDs7MERBbDlEOUNEOzZCQWk5RDJDOzZCQUZBOzZCQURIOzZCQURBOzs7NEJBWUE7NEJBREg7OzBEQXg5RHJDQTs2QkEwOURxQyxhQXo5RHJDQztzQ0E2OUQwQztzQ0FHQTs0QkFSRjs2QkFrQlM7NkJBRkg7OzBEQXorRDlDRDs2QkF3K0QyQzs2QkFGQTs2QkFESDs2QkFEQTs7OzRCQVlBOzRCQURIOzswREEvK0RyQ0E7NkJBaS9EcUMsYUFoL0RyQ0M7c0NBby9EMEM7c0NBR0E7NEJBUkY7NkJBa0JTOzZCQUZIOzswREFoZ0U5Q0Q7NkJBKy9EMkM7NkJBRkE7NkJBREg7NkJBREE7cUZBUWtCO3VCQXBIakM7eUJBSW9CLE9BMTREN0NtRzs7Ozs7O3lCQSs1RDBDO3NDQTk1RDFDQzswQkE4NUQwQzswQkFERzswQkFGSDs7d0RBNzFDdENOOzBCQTQxQ21DOzBCQURHOzBCQUZIOzt3REF6MUNuQ0E7MEJBdzFDZ0M7MEJBREc7MEJBREg7aUVBbjVEcENsWTswQkFrNURpQzswQkFERzswQkFESDtpRUFoNURqQ0E7MEJBKzREOEI7Z0ZBaUNnQzt1QkE1Q3JDOytFQW9Ia0M7cUJBNTJDMUM7dUJBa29DUTt5QkE4Q0ssT0EvekQ5Qm1WOzs0QkFvMER3Qzs0QkFESDs7MERBMzBEckMvQzs2QkE2MERxQyxhQTUwRHJDQztzQ0FnMUQwQztzQ0FHQTs0QkFSRjs2QkFrQlM7NkJBRkg7OzBEQTUxRDlDRDs2QkEyMUQyQzs2QkFGQTs2QkFESDs2QkFEQTs7OzRCQVlBOzRCQURIOzswREFsMkRyQ0E7NkJBbzJEcUMsYUFuMkRyQ0M7c0NBdTJEMEM7c0NBR0E7NEJBUkY7NkJBa0JTOzZCQUZIOzswREFuM0Q5Q0Q7NkJBazNEMkM7NkJBRkE7NkJBREg7NkJBREE7Ozs0QkFZQTs0QkFESDs7MERBejNEckNBOzZCQTIzRHFDLGFBMTNEckNDO3NDQTgzRDBDO3NDQUdBOzRCQVJGOzZCQWtCUzs2QkFGSDs7MERBMTREOUNEOzZCQXk0RDJDOzZCQUZBOzZCQURIOzZCQURBO3FGQVFrQjt1QkFwSGpDO3lCQUlvQixPQXB4RDdDbUc7Ozs7Ozt5QkF5eUQwQztzQ0F4eUQxQ0M7MEJBd3lEMEM7MEJBREc7MEJBRkg7O3dEQXZ1Q3RDTjswQkFzdUNtQzswQkFERzswQkFGSDs7d0RBbnVDbkNBOzBCQWt1Q2dDOzBCQURHOzBCQURIO2lFQTd4RHBDbFk7MEJBNHhEaUM7MEJBREc7MEJBREg7aUVBMXhEakNBOzBCQXl4RDhCO2dGQWlDZ0M7dUJBNUNyQzsrRUFvSGtDO3FCQXR2QzFDO3VCQWlnQ1E7eUJBOENLLE9BOXJEOUJtVjs7NEJBcXNEMkM7NEJBRkg7OzBEQTNzRHhDL0M7NkJBK3NEd0M7O3FDQTlzRHhDQztpQ0FrdEQ2QztpQ0FHQTs7NkJBV087OzhCQUZIOzsyREEvdERqREQ7OEJBOHREOEM7OEJBRkE7OEJBREg7OEJBRkE7b0NBREg7Ozs0QkFlRzs0QkFGSDs7MERBcnVEeENBOzZCQXl1RHdDOztxQ0F4dUR4Q0M7aUNBNHVENkM7aUNBR0E7OzZCQVdPOzs4QkFGSDs7MkRBenZEakREOzhCQXd2RDhDOzhCQUZBOzhCQURIOzhCQUZBO29DQURIOzs7NEJBZUc7NEJBRkg7OzBEQS92RHhDQTs2QkFtd0R3Qzs7cUNBbHdEeENDO2lDQXN3RDZDO2lDQUdBOzs2QkFXTzs7OEJBRkg7OzJEQW54RGpERDs4QkFreEQ4Qzs4QkFGQTs4QkFESDs4QkFGQTtvQ0FESDs7bUVBL3ZEeENxRyx1QkEwd0R1RDt1QkEvSDlCO3lCQUlvQixPQW5wRDdDRjs7Ozs7O3lCQXdxRDBDO3NDQXZxRDFDQzswQkF1cUQwQzswQkFERzswQkFGSDs7d0RBdG1DdENOOzBCQXFtQ21DOzBCQURHOzBCQUZIOzt3REFsbUNuQ0E7MEJBaW1DZ0M7MEJBREc7MEJBREg7aUVBNXBEcENsWTswQkEycERpQzswQkFERzswQkFESDtpRUF6cERqQ0E7MEJBd3BEOEI7Z0ZBaUNnQzt1QkE1Q3JDOytFQStIK0I7cUJBaG9DdkM7dUJBMjRCUTt5QkE4Q0ssT0F4a0Q5Qm1WOzs0QkE2a0R3Qzs0QkFESDs7MERBcGxEckMvQzs2QkFzbERxQyxhQXJsRHJDQztzQ0F5bEQwQztzQ0FHQTs0QkFSRjs2QkFrQlM7NkJBRkg7OzBEQXJtRDlDRDs2QkFvbUQyQzs2QkFGQTs2QkFESDs2QkFEQTs7OzRCQVlBOzRCQURIOzswREEzbURyQ0E7NkJBNm1EcUMsYUE1bURyQ0M7c0NBZ25EMEM7c0NBR0E7NEJBUkY7NkJBa0JTOzZCQUZIOzswREE1bkQ5Q0Q7NkJBMm5EMkM7NkJBRkE7NkJBREg7NkJBREE7Ozs0QkFZQTs0QkFESDs7MERBbG9EckNBOzZCQW9vRHFDLGFBbm9EckNDO3NDQXVvRDBDO3NDQUdBOzRCQVJGOzZCQWtCUzs2QkFGSDs7MERBbnBEOUNEOzZCQWtwRDJDOzZCQUZBOzZCQURIOzZCQURBO3FGQVFrQjt1QkFwSGpDO3lCQUlvQixPQTdoRDdDbUc7Ozs7Ozt5QkFrakQwQztzQ0FqakQxQ0M7MEJBaWpEMEM7MEJBREc7MEJBRkg7O3dEQWgvQnRDTjswQkErK0JtQzswQkFERzswQkFGSDs7d0RBNStCbkNBOzBCQTIrQmdDOzBCQURHOzBCQURIO2lFQXRpRHBDbFk7MEJBcWlEaUM7MEJBREc7MEJBREg7aUVBbmlEakNBOzBCQWtpRDhCO2dGQWlDZ0M7dUJBNUNyQzsrRUFvSGtDO3FCQS8vQjFDO3VCQTB3QlE7eUJBOENLLE9BdjhDOUJtVjs7NEJBODhDMkM7NEJBRkg7OzBEQXA5Q3hDL0M7NkJBdzlDd0M7O3FDQXY5Q3hDQztpQ0EyOUM2QztpQ0FHQTs7NkJBV087OzhCQUZIOzsyREF4K0NqREQ7OEJBdStDOEM7OEJBRkE7OEJBREg7OEJBRkE7b0NBREg7Ozs0QkFlRzs0QkFGSDs7MERBOStDeENBOzZCQWsvQ3dDOztxQ0FqL0N4Q0M7aUNBcS9DNkM7aUNBR0E7OzZCQVdPOzs4QkFGSDs7MkRBbGdEakREOzhCQWlnRDhDOzhCQUZBOzhCQURIOzhCQUZBO29DQURIOzs7NEJBZUc7NEJBRkg7OzBEQXhnRHhDQTs2QkE0Z0R3Qzs7cUNBM2dEeENDO2lDQStnRDZDO2lDQUdBOzs2QkFXTzs7OEJBRkg7OzJEQTVoRGpERDs4QkEyaEQ4Qzs4QkFGQTs4QkFESDs4QkFGQTtvQ0FESDs7bUVBeGdEeENxRyx1QkFtaER1RDt1QkEvSDlCO3lCQUlvQixPQTU1QzdDRjs7Ozs7O3lCQWk3QzBDO3NDQWg3QzFDQzswQkFnN0MwQzswQkFERzswQkFGSDs7d0RBLzJCdENOOzBCQTgyQm1DOzBCQURHOzBCQUZIOzt3REEzMkJuQ0E7MEJBMDJCZ0M7MEJBREc7MEJBREg7aUVBcjZDcENsWTswQkFvNkNpQzswQkFERzswQkFESDtpRUFsNkNqQ0E7MEJBaTZDOEI7Z0ZBaUNnQzt1QkE1Q3JDOytFQStIK0I7cUJBejRCdkM7dUJBeW9CUTt5QkE4Q0ssT0F0MEM5Qm1WOzs0QkE2MEMyQzs0QkFGSDs7MERBbjFDeEMvQzs2QkF1MUN3Qzs7cUNBdDFDeENDO2lDQTAxQzZDO2lDQUdBOzs2QkFXTzs7OEJBRkg7OzJEQXYyQ2pERDs4QkFzMkM4Qzs4QkFGQTs4QkFESDs4QkFGQTtvQ0FESDs7OzRCQWVHOzRCQUZIOzswREE3MkN4Q0E7NkJBaTNDd0M7O3FDQWgzQ3hDQztpQ0FvM0M2QztpQ0FHQTs7NkJBV087OzhCQUZIOzsyREFqNENqREQ7OEJBZzRDOEM7OEJBRkE7OEJBREg7OEJBRkE7b0NBREg7Ozs0QkFlRzs0QkFGSDs7MERBdjRDeENBOzZCQTI0Q3dDOztxQ0ExNEN4Q0M7aUNBODRDNkM7aUNBR0E7OzZCQVdPOzs4QkFGSDs7MkRBMzVDakREOzhCQTA1QzhDOzhCQUZBOzhCQURIOzhCQUZBO29DQURIOzttRUF2NEN4Q3FHLHVCQWs1Q3VEO3VCQS9IOUI7eUJBSW9CLE9BM3hDN0NGOzs7Ozs7eUJBZ3pDMEM7c0NBL3lDMUNDOzBCQSt5QzBDOzBCQURHOzBCQUZIOzt3REE5dUJ0Q047MEJBNnVCbUM7MEJBREc7MEJBRkg7O3dEQTF1Qm5DQTswQkF5dUJnQzswQkFERzswQkFESDtpRUFweUNwQ2xZOzBCQW15Q2lDOzBCQURHOzBCQURIO2lFQWp5Q2pDQTswQkFneUM4QjtnRkFpQ2dDO3VCQTVDckM7K0VBK0grQjtxQkF4d0J2Qzt1QkF3Z0JRO3lCQThDSyxPQXJzQzlCbVY7OzRCQTRzQzJDOzRCQUZIOzswREFsdEN4Qy9DOzZCQXN0Q3dDOztxQ0FydEN4Q0M7aUNBeXRDNkM7aUNBR0E7OzZCQVdPOzs4QkFGSDs7MkRBdHVDakREOzhCQXF1QzhDOzhCQUZBOzhCQURIOzhCQUZBO29DQURIOzs7NEJBZUc7NEJBRkg7OzBEQTV1Q3hDQTs2QkFndkN3Qzs7cUNBL3VDeENDO2lDQW12QzZDO2lDQUdBOzs2QkFXTzs7OEJBRkg7OzJEQWh3Q2pERDs4QkErdkM4Qzs4QkFGQTs4QkFESDs4QkFGQTtvQ0FESDs7OzRCQWVHOzRCQUZIOzswREF0d0N4Q0E7NkJBMHdDd0M7O3FDQXp3Q3hDQztpQ0E2d0M2QztpQ0FHQTs7NkJBV087OzhCQUZIOzsyREExeENqREQ7OEJBeXhDOEM7OEJBRkE7OEJBREg7OEJBRkE7b0NBREg7O21FQXR3Q3hDcUcsdUJBaXhDdUQ7dUJBL0g5Qjt5QkFJb0IsT0ExcEM3Q0Y7Ozs7Ozt5QkErcUMwQztzQ0E5cUMxQ0M7MEJBOHFDMEM7MEJBREc7MEJBRkg7O3dEQTdtQnRDTjswQkE0bUJtQzswQkFERzswQkFGSDs7d0RBem1CbkNBOzBCQXdtQmdDOzBCQURHOzBCQURIO2lFQW5xQ3BDbFk7MEJBa3FDaUM7MEJBREc7MEJBREg7aUVBaHFDakNBOzBCQStwQzhCO2dGQWlDZ0M7dUJBNUNyQzsrRUErSCtCO3FCQXZvQnZDO3VCQXVZUTt5QkE4Q0ssT0Fwa0M5Qm1WOzs0QkEya0MyQzs0QkFGSDs7MERBamxDeEMvQzs2QkFxbEN3Qzs7cUNBcGxDeENDO2lDQXdsQzZDO2lDQUdBOzs2QkFXTzs7OEJBRkg7OzJEQXJtQ2pERDs4QkFvbUM4Qzs4QkFGQTs4QkFESDs4QkFGQTtvQ0FESDs7OzRCQWVHOzRCQUZIOzswREEzbUN4Q0E7NkJBK21Dd0M7O3FDQTltQ3hDQztpQ0FrbkM2QztpQ0FHQTs7NkJBV087OzhCQUZIOzsyREEvbkNqREQ7OEJBOG5DOEM7OEJBRkE7OEJBREg7OEJBRkE7b0NBREg7Ozs0QkFlRzs0QkFGSDs7MERBcm9DeENBOzZCQXlvQ3dDOztxQ0F4b0N4Q0M7aUNBNG9DNkM7aUNBR0E7OzZCQVdPOzs4QkFGSDs7MkRBenBDakREOzhCQXdwQzhDOzhCQUZBOzhCQURIOzhCQUZBO29DQURIOzttRUFyb0N4Q3FHLHVCQWdwQ3VEO3VCQS9IOUI7eUJBSW9CLE9BemhDN0NGOzs7Ozs7eUJBOGlDMEM7c0NBN2lDMUNDOzBCQTZpQzBDOzBCQURHOzBCQUZIOzt3REE1ZXRDTjswQkEyZW1DOzBCQURHOzBCQUZIOzt3REF4ZW5DQTswQkF1ZWdDOzBCQURHOzBCQURIO2lFQWxpQ3BDbFk7MEJBaWlDaUM7MEJBREc7MEJBREg7aUVBL2hDakNBOzBCQThoQzhCO2dGQWlDZ0M7dUJBNUNyQzsrRUErSCtCO3FCQXRnQnZDO3VCQXNRUTt5QkE4Q0ssT0FuOEI5Qm1WOzs0QkEwOEIyQzs0QkFGSDs7MERBaDlCeEMvQzs2QkFvOUJ3Qzs7cUNBbjlCeENDO2lDQXU5QjZDO2lDQUdBOzs2QkFXTzs7OEJBRkg7OzJEQXArQmpERDs4QkFtK0I4Qzs4QkFGQTs4QkFESDs4QkFGQTtvQ0FESDs7OzRCQWVHOzRCQUZIOzswREExK0J4Q0E7NkJBOCtCd0M7O3FDQTcrQnhDQztpQ0FpL0I2QztpQ0FHQTs7NkJBV087OzhCQUZIOzsyREE5L0JqREQ7OEJBNi9COEM7OEJBRkE7OEJBREg7OEJBRkE7b0NBREg7Ozs0QkFlRzs0QkFGSDs7MERBcGdDeENBOzZCQXdnQ3dDOztxQ0F2Z0N4Q0M7aUNBMmdDNkM7aUNBR0E7OzZCQVdPOzs4QkFGSDs7MkRBeGhDakREOzhCQXVoQzhDOzhCQUZBOzhCQURIOzhCQUZBO29DQURIOzttRUFwZ0N4Q3FHLHVCQStnQ3VEO3VCQS9IOUI7eUJBSW9CLE9BeDVCN0NGOzs7Ozs7eUJBNjZCMEM7c0NBNTZCMUNDOzBCQTQ2QjBDOzBCQURHOzBCQUZIOzt3REEzV3RDTjswQkEwV21DOzBCQURHOzBCQUZIOzt3REF2V25DQTswQkFzV2dDOzBCQURHOzBCQURIO2lFQWo2QnBDbFk7MEJBZzZCaUM7MEJBREc7MEJBREg7aUVBOTVCakNBOzBCQTY1QjhCO2dGQWlDZ0M7dUJBNUNyQzsrRUErSCtCO3FCQXJZdkM7dUJBcUlRO3lCQThDSyxPQWwwQjlCbVY7OzRCQXkwQjJDOzRCQUZIOzswREEvMEJ4Qy9DOzZCQW0xQndDOztxQ0FsMUJ4Q0M7aUNBczFCNkM7aUNBR0E7OzZCQVdPOzs4QkFGSDs7MkRBbjJCakREOzhCQWsyQjhDOzhCQUZBOzhCQURIOzhCQUZBO29DQURIOzs7NEJBZUc7NEJBRkg7OzBEQXoyQnhDQTs2QkE2MkJ3Qzs7cUNBNTJCeENDO2lDQWczQjZDO2lDQUdBOzs2QkFXTzs7OEJBRkg7OzJEQTczQmpERDs4QkE0M0I4Qzs4QkFGQTs4QkFESDs4QkFGQTtvQ0FESDs7OzRCQWVHOzRCQUZIOzswREFuNEJ4Q0E7NkJBdTRCd0M7O3FDQXQ0QnhDQztpQ0EwNEI2QztpQ0FHQTs7NkJBV087OzhCQUZIOzsyREF2NUJqREQ7OEJBczVCOEM7OEJBRkE7OEJBREg7OEJBRkE7b0NBREg7O21FQW40QnhDcUcsdUJBODRCdUQ7dUJBL0g5Qjt5QkFJb0IsT0F2eEI3Q0Y7Ozs7Ozt5QkE0eUIwQztzQ0EzeUIxQ0M7MEJBMnlCMEM7MEJBREc7MEJBRkg7O3dEQTFPdENOOzBCQXlPbUM7MEJBREc7MEJBRkg7O3dEQXRPbkNBOzBCQXFPZ0M7MEJBREc7MEJBREg7aUVBaHlCcENsWTswQkEreEJpQzswQkFERzswQkFESDtpRUE3eEJqQ0E7MEJBNHhCOEI7Z0ZBaUNnQzt1QkE1Q3JDOytFQStIK0I7cUJBcFF2Qzs7OzswQkFJUTs0QkE4Q0ssT0Fqc0I5Qm1WOzsrQkF3c0IyQzsrQkFGSDs7NkRBOXNCeEMvQztnQ0FrdEJ3Qzs7d0NBanRCeENDO29DQXF0QjZDO29DQUdBOztnQ0FXTzs7aUNBRkg7OzhEQWx1QmpERDtpQ0FpdUI4QztpQ0FGQTtpQ0FESDtpQ0FGQTt1Q0FESDs7OytCQWVHOytCQUZIOzs2REF4dUJ4Q0E7Z0NBNHVCd0M7O3dDQTN1QnhDQztvQ0ErdUI2QztvQ0FHQTs7Z0NBV087O2lDQUZIOzs4REE1dkJqREQ7aUNBMnZCOEM7aUNBRkE7aUNBREg7aUNBRkE7dUNBREg7OzsrQkFlRzsrQkFGSDs7NkRBbHdCeENBO2dDQXN3QndDOzt3Q0Fyd0J4Q0M7b0NBeXdCNkM7b0NBR0E7O2dDQVdPOztpQ0FGSDs7OERBdHhCakREO2lDQXF4QjhDO2lDQUZBO2lDQURIO2lDQUZBO3VDQURIOztzRUFsd0J4Q3FHLHVCQTZ3QnVEOzBCQS9IOUI7NEJBSW9CLE9BdHBCN0NGOzs7Ozs7NEJBMnFCMEM7eUNBMXFCMUNDOzZCQTBxQjBDOzZCQURHOzZCQUZIOzsyREF6R3RDTjs2QkF3R21DOzZCQURHOzZCQUZIOzsyREFyR25DQTs2QkFvR2dDOzZCQURHOzZCQURIO29FQS9wQnBDbFk7NkJBOHBCaUM7NkJBREc7NkJBREg7b0VBNXBCakNBOzZCQTJwQjhCO21GQWlDZ0M7MEJBNUNyQztrRkErSCtCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztxQkFuSXZDOytFQW85SXFDO21CQTdoSjFDLHNCQXVFb0IsUUFBSTttQkF2RXhCOzs7O3dCQUlROzBCQWtEYTswQkFESDs7d0RBbm9COUJvUzsyQkFxb0I4Qjs7bUNBcG9COUJDOytCQXVvQm1DOytCQUVBOzsyQkFTTzs7NEJBRkg7O3lEQWpwQnZDRDs0QkFncEJvQzs0QkFGYTs0QkFBaEI7NEJBRlk7a0NBQWY7MEJBT3VDO29FQXRvQnJFcUcsdUJBdW9Ca0Q7d0JBbEU5QjswQkFJb0IsT0E3a0J4Q0Y7Ozs7OzttQ0FDQUM7OzsyQkFxbUI2QztrREFybUI3Q0E7NEJBcW1CNkMsWUFEa0JNOzswQkFKMUI7OzJCQURHOzJCQUZIOzt5REEvQmpDWjsyQkE4QjhCOzJCQURHOzJCQURIOzt5REE1QjlCQTsyQkEyQjJCOzJCQURHOzJCQURIO2tFQXRsQi9CbFk7MkJBcWxCNEI7MkJBREc7MkJBREg7a0VBbmxCNUJBOzJCQWtsQnlCO2lGQWtDa0Q7d0JBN0N2RDtnRkFrRStCO21CQXRFdkM7NkVBNmhKMkM7O2VBamlKcEQ7Ozs7OztlQWdoS1k7Y0FuaktNLFlBeWpLaUM7U0E1aEtBOzs7Ozs7OztVQWtpS3REO2lDQWNxQixPQXRnTHJCb1csOEJBc2dMb0U7OztjQVgvQyxtREFVVjtXQWJYOzs7O1dBZ0JZOztRQWwvS2tDO1NBNjlLOUN6RDtVQUFtQzs7Ozs7OztVQWlDbkM7OztjQWtDVzs7OztrQkF0cUxYcUY7a0JBOE1BMUI7Y0F1OUtROzt3QkFwcUxSNUU7O3VCQXVxTFE7O3lCQXhxTFJzRzt5QkE4TUExQjt1QkE3TUE1RSwyQkF5cUxvQzs7O2NBbEJmLG1EQVVWOzs7O2VBMUJGLHNCQWVvQixPQXRwTDdCQSwyQkFzcEx5RDtlQWZoRDtpQkFHb0I7eURBbG9MN0I0Ryx3QkE2b0x1QztlQWQ5Qjt1RUFlaUQ7V0FuQjFEOzs7O1dBd0NZOztRQXRpTGtDO1NBeS9LTDs7Ozs7Ozs7bUJBd0RyQzlHO1lBQ0g7Y0FDRTs7O2tCQW1CVzs7bUJBREE7OztzQkFwQlZBO3NCQXYzS0p5SDtrQkEwNEtXOzJCQUdBOzs2QkF0QlB6SDs2QkF2M0tKeUg7MkJBODRLZ0IsK0NBQTJCOzs7a0JBbEJuQixtREFXVjtlQWRYOzs7Ozs7ZUF1Qlk7Y0FyRWMsWUEyRXlCO1NBbkNXOzs7Ozs7OzttQkF3QzdEMUM7WUFDSDtjQUNFOzs7a0JBc0NNOzsyQkFud0xUeUI7MkJBMnRMSXpCLHFCQXdDK0Q7OztrQkFiM0MsbURBV1Y7Ozs7bUJBaENGO3FCQWtCTzs7Ozt5QkFudkxuQnlCO3lCQXdWQWtCO3FCQTI1S21COzhEQXhCZjNDLHFCQTBCb0M7bUJBcEI1QjtxQkFlUTs7c0JBREg7O29EQTF1TGpCMkI7cUJBMHVMaUIsdURBQ3NDO21CQWYzQzsyRUFvQjZCO2VBeEJ0Qzs7Ozs7O2VBd0NZO2NBekVTLFlBK0U4QjtTQXBESjs7Ozs7Ozs7VUEwRGxEOzs7Y0E0RTRDOzs7Ozs7O2tCQXgxTDVDQTtlQXcxTDJDOztrQkFIYTs7O29CQXB4S3hEaUI7O2VBaXhLTTs7Ozs7OztxRUFVMEI7OztjQXhCWCxtREFVVjs7OztlQTlERjtpQkEyQlE7Ozs7Ozs7cUJBM3lMakJqQjtrQkEweUxzRDs7cUJBSHBDOzs7dUJBdHVLbEJpQjs7a0JBa3VLaUI7Ozs7Ozs7a0JBSCtCOztrQkE0Qi9COzs7Ozs7cUJBMXpMakJmO2tCQXl6THNEOztxQkFIcEM7Ozt1QkF2dktsQmU7O2tCQW12S2lCOzs7Ozs7O2tCQUg0Qjs7aUJBaUIxQjs7MkJBbENBRzsyQkFpQkFDOzswQkFqQkFELGlCQW1DNkM7ZUFuRHZEO2lCQUdvQjs7OzBCQWx4TDdCbkIsK0JBNnhMdUQ7ZUFkOUM7dUVBbUR3RDtXQXZEakU7Ozs7V0FrRlk7O1FBN3RMa0M7U0Fzb0w5Q3FCO1VBQTRDOzs7Ozs7O1VBbUc1QztpQ0FVcUIsT0E1MkxyQnhaLGFBNDJMbUM7OztjQVBkLG1EQU13QztXQVQ3RDtXQUpFOzs7Ozs7Ozs7O1dBZ0JVOztRQU9oQjtVQUtJO2lDQWErQixPQW41TC9CMFIsMkJBbTVMMkQ7OztjQVZ0QyxtREFVVjtXQWJYO1dBSkU7Ozs7Ozs7Ozs7V0FtQlU7O1FBVWhCO1VBS0k7aUNBYStCLFFBQUs7OztjQVZmLG1EQVVWO1dBYlg7V0FKRTs7Ozs7Ozs7OztXQW1CVTs7UUFVaEI7VUFLSTtpQ0FhK0IsT0E3Vy9CaUIsc0JBNldzRDs7O2NBVmpDLG1EQVVWO1dBYlg7V0FKRTs7Ozs7Ozs7OztXQW1CVTs7UUE1MExrQztTQTQxTHVCOztZQUhqQzs2Q0FqOFN0Q2xCOzthQTQwU0VtRjthQXdCQUM7YUE4QkFDO2FBOEJBQztTQThCNEM7MENBQTVDdFU7UUFBNEM7VUFxQjVDOzs7Y0FpQlc7Ozs7a0JBNXhMWG9XO2tCQTYzS0FsRztlQThaUTs7O2tCQWhnTVJqQjs7ZUErL0xvQjtzRUFHbUI7OztjQWZsQixtREFVVjtXQWJYOzs7O1dBb0JZOztRQS8zTGtDO1NBczJMVTs7Ozs7Ozs7bUJBb0NwRDZFO1lBQ0g7Y0FDRTs7O2tCQTBCMEM7Ozs7Ozs7c0JBNUJ6Q0E7bUJBNEJ3Qzs7c0JBSC9COzs7d0JBbFZiOEM7O21CQThVWTs7Ozs7OzttQkFIb0M7O21CQWtCakM7OztzQkFyYmZEO3NCQWo0S0FMO2tCQXF6TFk7O2lEQWpCRXJDO29CQXFCQzs7Ozt3QkF4YmYwQzt3QkFqNEtBTDtvQkF5ekxlOzZEQXJCRHJDO2tCQXdCRixzREFBNkI7OztrQkFyQ2pCLG1EQVdWO2VBZFg7Ozs7OztlQTBDWTtjQXhFTSxZQThFaUM7U0F0RE87Ozs7Ozs7O1VBNEQ3RDs7O2NBS00sc0JBcUU2Qyw4QkFBZ0I7Y0FyRTdELHNCQXFFb0IsUUFBSztjQXJFekI7Ozs7bUJBSVE7cUJBNkRNLEdBdG9NcEIyQjt1QkF3b013Qjs7O2dDQXBZeEJtQjs7cUJBcVlxQixPQXJZckJBLDhCQXFZdUQ7bUJBaEV6QztxQkEyRFE7O3NCQURIOzZEQTluTW5CeFo7cUJBOG5NbUIsdURBQ3FDO21CQTNEMUM7Ozs7d0JBSVE7MEJBMENNLEdBdm5NNUJxWTs0QkEwbk1nQzs7O3FDQXRYaENtQjs7MEJBdVg2QixPQXZYN0JBLDhCQXVYK0Q7d0JBOUN6QzswQkF3Q1c7OzJCQURIO2tFQS9tTTlCeFo7MkJBOG1NaUM7MkJBREg7a0VBN21NOUJBOzJCQTRtTTJCO2lGQUl5Qzt3QkF4QzlDOzs7OzZCQUtROytCQWtCTSxHQXBtTXBDcVk7aUNBdW1Nd0M7OzswQ0FuV3hDbUI7OytCQXFXcUMsT0FyV3JDQSw4QkFxV3VFOzZCQXZCekM7K0JBZ0JXOztnQ0FESDt1RUE1bE10Q3haO2dDQTJsTXlDO2dDQURIO3VFQTFsTXRDQTtnQ0F5bE1tQztzRkFJMEM7NkJBaEIvQztxRkF1QjBDO3dCQTVCbEQ7a0ZBOEMwQzttQkFsRGxEOzZFQWdFMEM7Y0FwRWxEO3dFQXFFOEQ7aUNBdkUvQyxRQUFJO1dBSHpCOzs7O1dBNEVZOztRQTlnTWtDO1NBNjdMOUN5WjtVQUF1RDs7Ozs7OztVQTZGdkQ7OztjQUtNLHNCQW1HNkMsOEJBQWdCO2NBbkc3RCxzQkFtR29CLFFBQUs7Y0FuR3pCO2dCQTRFUSxzQkFzQkssT0E1Um5CekMsZ0NBNFJpRTtnQkF0Qm5EO2tCQUdvQixPQWh2TWxDaUI7Ozs7eUVBaXdNeUU7Z0JBcEIzRDt3RUFzQm9EO2NBbEc1RDs7OzttQkFJUTtxQkFpQ1E7OzttREF6c010QnZHO3NCQTRzTXNCOzttREF2aE10QmtIO3NCQXlqTXlCO3NCQVpTOzs7eUJBdkJWYzt5QkF6bUJ4Qi9HO3FCQThuQitCOzs7eUJBeEJQVDs7Ozt3QkE2Qk87OzBCQTdCUEE7MEJBM2lNeEJ5Rzs7c0JBNmtNa0M7Ozs7MEJBL0JWZTswQkF6bUJ4Qi9HOzt3QkF1b0IrQjs7OzBCQTVrTS9CZ0c7cUJBNGlNc0I7O3VCQVdZOzt5QkFUVmU7eUJBem1CeEIvRztxQkFnbkIrQjs7O3lCQVZQVDs7c0JBa0JhOzs7OzBCQWZid0g7MEJBem1CeEIvRzt1QkFzbkJrQzs7OzBCQWhCVlQ7Ozt3QkFlTzs7OzBCQWxsTS9Cd0c7O2dDQXlsTW9DO3FCQXJCZDtzQkFPRztzQkFESDt1RUErQmdDO21CQXRFeEM7cUJBR29CLE9BeHFNbENUOzs7Ozs7OztxQkFtck1tQjs0RUFnQmU7bUJBOUJwQjsyRUFzRXlDOztjQTFFakQ7d0VBbUc4RDtpQ0FyRy9DLFFBQUk7V0FIekI7Ozs7V0EwR1k7O1FBcG9Na0M7U0FxaE05QzBCO1VBQThCOzs7Ozs7O1VBMkg5Qjs7O2NBcUIyQzs7ZUFBN0I7ZUFERztlQUZIOzs7a0JBNVRkeEM7O2VBMlRXO2VBREg7dUVBSzZEOzs7Y0FsQmhELG1EQVVWO1dBYlg7Ozs7V0F1Qlk7O1FBdnFNa0M7U0Eyb01nQjs7Ozs7Ozs7bUJBdUMxRDNGO1lBQ0g7Y0FDRTs7O2tCQTJCUzs7Ozs7OztzQkE3QlJBO21CQTRCdUQ7O3NCQUhoQzs7O3dCQTlwQjNCcUU7O21CQTBwQlk7Ozs7Ozs7bUJBSHlCOzttQkE2QnRCOzs7Ozs7c0JBN0JEdUI7bUJBNEI0Qzs7c0JBSDVCOzs7d0JBdlY5QlQ7O21CQW1WZTs7Ozs7OzttQkFIeUI7bUJBQTVCO3lEQWxCRVM7bUJBbUM0QjtrQkFBNUI7dURBbEJBQzs7MkJBbUJxQiwrQ0FBOEI7OztrQkFqRHpDLG1EQVdWO2VBZFg7Ozs7OztlQXNEWTtjQXZGTSxZQTZGaUM7U0FsRUQ7Ozs7Ozs7O1VBd0VyRDs7O2NBZ0JROzt3QkE1NE1SVzt3QkFta01BeUI7O3VCQW5rTUF6QixxQkErNE04Qjs7O2NBaEJULG1EQVVWO1dBYlg7Ozs7V0FxQlk7O1FBM3dNa0M7U0Fpdk05QzRCO1VBQThCOzs7Ozs7O1VBc0M5Qjs7O2NBa0JXO2NBRkg7O3dCQTVKUnBDOzt1QkE4SjRDO3VCQTlKNUNBLGdDQStKK0Q7OztjQWhCMUMsbURBVVY7V0FiWDs7OztXQXFCWTs7UUE1eU1rQztTQWt4TVE7Ozs7Ozs7O21CQXFDbERoRztZQUNIO2NBQ0U7OztrQkEyQlM7Ozs7Ozs7c0JBN0JSQTttQkE0QjJDOztzQkFIbEM7Ozt3QkFsS2I4Rjs7bUJBOEpZOzs7Ozs7O21CQUh5Qjs7bUJBeUJ6Qjs7Ozs7O3NCQXpCRUY7bUJBd0IrQzs7c0JBRmxDOzs7d0JBaDZMM0I3Qjs7bUJBNjVMeUI7Ozs7Ozs7bUJBRks7bUJBZ0JaO21CQURZO3lEQWhDaEI2QixjQWlCQUs7bUJBZUM7bUJBREg7O21CQU9HO21CQURBOzs7c0JBUERDO3NCQWJBRDtrQkFtQkY7MkJBR0E7OzZCQVRFQzs2QkFiQUQ7MkJBdUJGLCtDQUErQjs7O2tCQXJEbkIsbURBV1Y7ZUFkWDs7Ozs7O2VBMERZO2NBekZNLFlBK0ZpQztTQXRFbUI7Ozs7Ozs7O1VBNEV6RTs7O2NBa0JlOzs7O2tCQWhLZm1DO2tCQS9oTUFWO2VBOHJNWTs7a0RBM1haUztlQTBYUzs7OztrQkE3SFQvQjtlQW9Jc0M7Y0FBM0IsNkNBUkFwRzt1QkFTRjt1QkFURUEsV0FTNkM7OztjQXJCbkMsbURBVVY7V0FiWDs7OztXQTBCWTs7UUF6NU1rQztTQTAzTWhCOzs7Ozs7OzttQkEwQzFCQTtZQUNIO2NBQ0U7OztrQkEyQlM7Ozs7Ozs7c0JBN0JSQTttQkE0QitEOztzQkFIeEM7Ozt3QkExSTNCbUc7O21CQXNJWTs7Ozs7OzttQkFIeUI7O2tCQWlCdkI7OzRCQWpCQVA7NEJBcHhNZDRCOzJCQXN5TWlCOzJCQWxCSDVCLGFBa0JrRDs7O2tCQS9CeEMsbURBV1Y7ZUFkWDs7Ozs7O2VBb0NZO2NBeEVNLFlBOEVpQztTQWhESTs7Ozs7Ozs7Z0JBL0sxRHdDO2dCQTVOQUQ7Z0JBNlBBL0I7Z0JBd0dBRTtnQkFzQ0FEO01BdjZNWSx1Q0FpK002QjtJQWh1WTdCLFNBa3VZZGdDLCtCQUFvQ0E7TUFDdEM7cUJBRHNDQTtPQUN0QyxVQURzQ0E7T0FDdEMsYUFEc0NBO01BQ3RDO1FBT0k7OztZQUtNO2NBYW9CLG1EQUFnQztZQWJwRDtjQUdvQixtREFTeUM7WUFaN0QsaUVBYXFEOytCQWZJLFFBQUk7a0NBQTNDLGtCQVJ4Qi9ZLGVBUXdDO1NBSHhDOzs7O1NBb0JZOztNQTNCaEI7T0FHSWdaO1FBQTBCOzs7UUFnQzFCOytCQU9xQixPQTFDckI5WixhQTBDbUM7OzBCQUpkLG1EQUc0QztTQU5qRTtTQUhFOzs7Ozs7Ozs7O1NBWVU7O01BSWhCO1FBSUk7K0JBT3FCLE9BMURyQlEsU0EwRCtCOzswQkFKVixtREFHNEM7U0FOakU7U0FIRTs7Z0RBbjVYSjRMOzs7O1NBKzVYYzs7TUE3RGhCO09BbUU4RDs7VUFESiwwQ0EvelJ4RHVJO2FBNHhSRTVULHVCQWlCQUM7T0FpQmtCOzZCQUFsQkM7TUFBa0I7UUFVbEI7K0JBaUNxQixRQUFLOzswQkFKTCxtREFHNEM7Ozs7YUE1QnhELHNCQXdCb0IsUUFBSTthQXhCeEI7ZUFzQm9COzJEQXBHN0JUO2dCQWtHNkIsMkNBbEc3QkE7Z0JBaUcwQjtnQkFEQSwyQ0FoRzFCQTtnQkErRnVCO2dCQURBLDJDQTlGdkJBO2dCQTZGb0I7Z0JBREcsMkNBNUZ2QkE7Z0JBNEZpQjtnQkFERywyQ0EzRnBCQTtnQkEyRmM7c0VBVXNEO2FBdkIzRCxpRUF3QnlCO1NBNUJsQzs7OztTQW1DWTs7TUE5R2hCO09BdUVJVztRQUFpQzs7O1FBK0NqQzs7O1lBbUN1Qzs7YUFBNUI7YUFESDs7MkNBbEZSRDtZQWtGUSx5REFDeUQ7OzBCQVo1QyxtREFReUM7Ozs7YUEzQnJEO2VBa0JPOztnQkFERztnQkFESDs7OENBcEVoQkE7ZUFvRWdCLHlEQUUwQjthQWxCakM7ZUFHb0I7dURBdEQ3QkMsd0JBZ0V1QzthQWI5QixpRUFrQmtDO1NBdEIzQzs7OztTQXFDWTs7TUEzSmhCO09Ba0hJQztRQUEyQjs7cUJBZ0R2QkM7UUFDSDtVQUNFO2lDQW9EcUIsUUFBSzs7O2NBSkwsbURBRzRDOzs7O2VBL0N4RCxzQkEyQ21ELFFBQUk7ZUEzQ3ZEO2lCQXlDUTs7O2dEQS9DaEJBLFVBaERKRDtpQkErRm9CLE9BL0NoQkM7Ozs7Ozs7O2lCQStDZ0IsVUFuQkc7d0JBNUJuQkE7Ozs7aUJBK0NnQjtrQkEzQkE7a0JBREg7d0VBOEIwQjtlQTNDL0I7dUVBMkN3RDtXQS9DakU7Ozs7O1dBc0RZO1VBN0ZjLFlBZ0c2QjtNQTlESTtPQUE5REM7UUFBOEQ7O3FCQWtFMUREO1FBQ0g7VUFDRTtpQ0F1THFCLFFBQUs7OztjQUpMLG1EQUc0Qzs7OztlQWxMeEQ7aUJBS0ssc0JBeUtvQiw4QkFBZ0I7aUJBektwQyxzQkF3S29CLFFBQUs7aUJBeEt6Qjs7OztzQkFJUSxzQkFtS3lDLFFBQUk7c0JBbks3Qzt3QkF1SW9CLE9BdEp6Q0E7Ozs7Ozs7O3dCQWdLMEI7K0VBa0JnQjtzQkFuS3JCOzs7OzJCQUtRLHNCQWlJb0IsUUFBSTsyQkFqSXhCOzZCQW9DZTs7Ozs7O2lDQXpoVmxENFA7b0NBaStVTTVQLFVBak9KckIsY0FHQThaOzhCQXFSNkU7O2lDQUgxQjs7O21DQTdpU3JEcEY7OzhCQWdqUytFLFlBTDNCelQ7NkJBcUZIOzZCQS9FQzs4QkF3RUo7Ozs7O2lDQTl3WDlDK007aUNBcXdYbUQzTDs4QkFNTDs4QkE5RUE7OzREQS9DeENoQixVQS9HSkQ7OEJBNkp5QztvQ0E5Q3JDQzs7Ozs2QkF3RDRDLFVBcEJWO29GQWdId0U7MkJBaEk3RTttRkFpSXlCO3NCQXRJakM7Z0ZBbUs4QztpQkF2S3REOzJFQXlLcUM7ZUE5SzFDLHNCQUdvQixRQUFJO2VBSHhCO3VFQThLMkM7V0FsTHBEOzs7OztXQXlMWTtVQWpQaUIsWUFvUDBCO01Bak1IO09BQXZERTtRQUF1RDs7O2NBM052RHVZO2NBMk5Bdlk7Y0EvREFEO2NBeEZBSCx3QkE4VjBCO0lBeG9aZCxTQTBvWmQ0WSxpQ0FBNENoRjtNQUM5Qzs0QkFEOENBO09BQzlDLDRCQUQ4Q0E7T0FDOUMsK0JBRDhDQTtPQUM5QyxjQUQ4Q0E7T0FDOUMsMEJBRDhDQTtPQUM5QywrQkFEOENBO09BQzlDLEtBRDhDQTtPQUM5QyxxQkFEOENBO09BQzlDLCtCQUQ4Q0E7T0FDOUMsVUFEOENBO09BQzlDLFdBRDhDQTtPQUM5QywyQkFEOENBO09BQzlDLHVCQUQ4Q0E7T0FDOUMsVUFEOENBO01BQzlDO1FBa0JJOzs7WUFjK0IscURBQXdCOzswQkFYbEMsbURBV1Y7U0FkWDs7OztTQWdCWTs7TUFsQ2hCO09BY0l5RjtRQUE0Qjs7O1FBOEJYOztTQURILDRDQXhDZHhhOzs7O1NBMkMwQjs7TUFRZDtRQVFoQjtVQUtJOzs7Y0FVcUIsc0RBQTJCOzs7Y0FEWjs7ZUFBOUI7c0RBekVOQTtjQXlFTSx1REFBaUU7V0FUdkU7Ozs7V0FZWTs7UUFqQjBCO1NBQXRDeWE7VUFBc0M7Ozs7Ozs7VUEyQnJCOztXQURIOzt5Q0FwRmRySTs7OztXQXVGMEI7O1FBUWQ7VUFRaEI7WUFLSTs7O2dCQUtNLHNCQTBENkMsOEJBQWdCO2dCQTFEN0Qsc0JBMERvQixRQUFLO2dCQTFEekI7Ozs7cUJBSVE7dUJBcURLOzBEQTFLbkJBLDBCQTBLeUQ7cUJBckQzQzt1QkFtRFE7O3dCQURIOytEQXhLbkJwUzt1QkF3S21CLHVEQUNxQztxQkFuRDFDOzs7OzBCQUlROzRCQXNDSzsrREEvSjNCb1MsMEJBK0ppRTswQkF0QzNDOzRCQW9DVzs7NkJBREg7b0VBN0o5QnBTOzZCQTRKaUM7NkJBREg7b0VBM0o5QkE7NkJBMEoyQjttRkFJeUM7MEJBcEM5Qzs7OzsrQkFLUTtpQ0FrQks7b0VBaEpuQ29TLDBCQWlKK0Q7K0JBbkJqQztpQ0FnQlc7O2tDQURIO3lFQTlJdENwUztrQ0E2SXlDO2tDQURIO3lFQTVJdENBO2tDQTJJbUM7d0ZBSTBDOytCQWhCL0M7dUZBbUJrQzswQkF4QjFDO29GQXNDNEM7cUJBMUNwRDsrRUFxRDRDO2dCQXpEcEQ7MEVBMEQ4RDttQ0E1RC9DLFFBQUk7YUFIekI7Ozs7YUFpRVk7O1VBdEUwQztXQUF0RDBhO1lBQXNEOzs7Ozs7O1lBa0Z0RDs7O2dCQVdNLE9BL0xOTjs7bUJBa01VOzttQkFFQTs7bUJBRUEsd0RBQThCOzs7Z0JBVEo7O2lCQUE5Qjt3REFuTU5wYTtnQkFtTU0sdURBQWlFO2FBVHZFOzs7O2FBb0JZOztVQXRHMEM7V0E2RXREMmE7WUFBdUM7Ozs7Ozs7WUFpQ2hCOzs7MENBbE52QlQscUJBR0FHO2FBK01nQjs7OzthQUNVOztVQVFkO1lBUWhCO2NBS0k7OztrQkFlTyxHQWxQUEU7b0JBcVBjOztxQkFEWTtxQkFBZjs7d0RBaFFYUDtrQkFpUThDLE9BalE5Q0Esb0JBaVFtRTs7O2tCQWY5QyxtREFVVjtlQWJYOzs7OztlQW9CWTs7WUF6Qm9DO2FBQWhEWTtjQUFnRDs7Ozs7OztjQXFDaEQ7cUNBVXFCLE9BdFJyQjVhLGFBc1JtQzs7O2tCQVBkLG1EQU13QztlQVQ3RDs7ZUFKRTs7Ozs7Ozs7OztlQWdCVTs7WUFPaEI7Y0FLSTtxQ0FVcUIsT0FwU3JCUSxTQW9TK0I7OztrQkFQVixtREFNd0M7ZUFUN0Q7O2VBSkU7Ozs7O2tCQTdpWko0TDs7Ozs7ZUE2alpjOztZQXpFb0M7YUFxRkE7O2dCQUhFOzs7a0JBLzdWcERnRjs7aUJBNjRWRWlFO2lCQXdCQUM7YUF3QjJEOzRDQUEzRHJVO1lBQTJEO2NBZTNEOzs7a0JBdWpCTSxzQkFrTjZDLDhCQUFnQjtrQkFsTjdELHNCQWtOb0IsUUFBSztrQkFsTnpCOzs7O3VCQUlRO3lCQXFLVTt5QkFESDs7dURBcGlDckJtUjswQkFzaUNxQixhQXJpQ3JCQzttQ0F3aUMwQjttQ0FFQTt5QkFORixVQVNHO3lCQURIOzt1REE3aUN4QkQ7MEJBK2lDd0I7eUJBVkEsVUFhTTt5QkFESDs7dURBampDM0JBOzBCQW1qQzJCO3lCQWRILFVBaUJTO3lCQURIOzt1REFyakM5QkE7MEJBdWpDOEI7eUJBbEJOLFVBcUJZO3lCQURIOzt1REF6akNqQ0E7MEJBMmpDaUM7eUJBdEJULFVBeUJlO3lCQURIOzt1REE3akNwQ0E7MEJBK2pDb0M7eUJBMUJaLFVBNkJrQjt5QkFESDs7dURBamtDdkNBOzBCQW1rQ3VDO3lCQTlCZjswQkF1QzJCOzBCQUZIOzt1REExa0NoREE7MEJBeWtDNkM7MEJBREE7MEJBREg7MEJBREE7aUZBT3VCO3VCQTdNbkQ7eUJBaUtROzswQkFESDtpRUFqaUNuQnBTO3lCQWlpQ21CLHVEQUNxQzt1QkFqSzFDOzs7OzRCQUlROzhCQW9HVTs4QkFESDs7NERBditCN0JvUzsrQkF5K0I2QixhQXgrQjdCQzt3Q0EyK0JrQzt3Q0FFQTs4QkFORixVQVNHOzhCQURIOzs0REFoL0JoQ0Q7K0JBay9CZ0M7OEJBVkEsVUFhTTs4QkFESDs7NERBcC9CbkNBOytCQXMvQm1DOzhCQWRILFVBaUJTOzhCQURIOzs0REF4L0J0Q0E7K0JBMC9Cc0M7OEJBbEJOLFVBc0JZOzhCQUZIOzs0REE1L0J6Q0E7K0JBZ2dDeUM7OEJBeEJULFVBNkJlOzhCQUZIOzs0REFuZ0M1Q0E7K0JBdWdDNEM7OEJBL0JaLFVBb0NrQjs4QkFGSDs7NERBMWdDL0NBOytCQThnQytDOzhCQXRDZjsrQkErQzJCOytCQUZIOzs0REFyaEN4REE7K0JBb2hDcUQ7K0JBREE7K0JBREg7K0JBREE7c0ZBT3VCOzRCQXBKbkQ7OEJBZ0dXOzsrQkFESDtzRUFwK0I5QnBTOytCQW0rQmlDOytCQURIO3NFQWwrQjlCQTsrQkFpK0IyQjtxRkFJeUM7NEJBaEc5Qzs7OztpQ0FLUTttQ0FvQlU7bUNBREg7O2lFQTU1QnJDb1M7b0NBODVCcUMsYUE3NUJyQ0M7NkNBaTZCMEM7NkNBRUE7bUNBUEYsVUFZRzttQ0FGSDs7aUVBdjZCeENEO29DQTI2QndDO21DQWRBLFVBbUJNO21DQUZIOztpRUE5NkIzQ0E7b0NBazdCMkM7bUNBckJILFVBMEJTO21DQUZIOztpRUFyN0I5Q0E7b0NBeTdCOEM7bUNBNUJOLFVBaUNZO21DQUZIOztpRUE1N0JqREE7b0NBZzhCaUQ7bUNBbkNULFVBd0NlO21DQUZIOztpRUFuOEJwREE7b0NBdThCb0Q7bUNBMUNaLFVBK0NrQjttQ0FGSDs7aUVBMThCdkRBO29DQTg4QnVEO21DQWpEZjtvQ0EwRHNCO29DQUZBOztpRUFyOUI5REE7b0NBbzlCNkQ7b0NBREE7b0NBREg7b0NBREE7MkZBT2tCO2lDQS9FOUM7bUNBZ0JXOztvQ0FESDsyRUF6NUJ0Q3BTO29DQXc1QnlDO29DQURIOzJFQXY1QnRDQTtvQ0FzNUJtQzswRkFJMEM7aUNBaEIvQzt5RkErRStDOzRCQXBGdkQ7c0ZBb0pvRDt1QkF4SjVEO2lGQTZNb0Q7a0JBak41RDs0RUFrTjhEO3FDQXBOL0MsUUFBSTs7OzttQkFqakJoQjtxQkFLSyxzQkEyaUJvQiw4QkFBZ0I7cUJBM2lCcEMsc0JBMGlCb0IsUUFBSztxQkExaUJ6Qjt1QkEwRlE7eUJBOGFVO3lCQURIOzt1REFyMUI3Qm9TOzBCQXUxQjZCLGFBdDFCN0JDO21DQXkxQmtDO21DQUVBO3lCQU5GLFVBU0c7eUJBREg7O3VEQTkxQmhDRDswQkFnMkJnQzt5QkFWQSxVQWFNO3lCQURIOzt1REFsMkJuQ0E7MEJBbzJCbUM7eUJBZEgsVUFpQlM7eUJBREg7O3VEQXQyQnRDQTswQkF3MkJzQzt5QkFsQk4sVUFzQlk7eUJBRkg7O3VEQTEyQnpDQTswQkE4MkJ5Qzt5QkF4QlQsVUE2QmU7eUJBRkg7NkRBajNCNUNBO2tDQXEzQjRDO2tDQUVBLGdEQUFpQzt1QkEvY3ZEO3lCQWtab0IsT0FqekIxQzVSOzs7Ozs7Ozs7O3lCQTZ6Qm9DOzswQkFESDtpRUF0MEJqQ1I7MEJBcTBCb0M7MEJBREg7aUVBcDBCakNBOzBCQW0wQjhCOzBCQURIO2dGQWlCdUM7dUJBMWE1Qzs7Ozs0QkFLUTs4QkFnV1U7OEJBREg7OzREQTV3QnJDb1M7K0JBOHdCcUMsYUE3d0JyQ0M7d0NBaXhCMEM7d0NBRUE7OEJBUEYsVUFZRzs4QkFGSDs7NERBdnhCeENEOytCQTJ4QndDOzhCQWRBLFVBbUJNOzhCQUZIOzs0REE5eEIzQ0E7K0JBa3lCMkM7OEJBckJILFVBMEJTOzhCQUZIOzs0REFyeUI5Q0E7K0JBeXlCOEM7OEJBNUJOLFVBaUNZOzhCQUZIOzs0REE1eUJqREE7K0JBZ3pCaUQ7OEJBbkNULFVBd0NlOzhCQUZIO2tFQW56QnBEQTt1Q0F1ekJvRDt1Q0FFQSxrREFBaUM7NEJBNVl2RDs4QkE4VG9CLE9BbHVCbEQ1Ujs7Ozs7Ozs7Ozs4QkE4dUI0Qzs7K0JBREg7c0VBdnZCekNSOytCQXN2QjRDOytCQURIO3NFQXJ2QnpDQTsrQkFvdkJzQzsrQkFESDtxRkF1QnVDOzRCQTVWNUM7Ozs7aUNBTVE7bUNBeVFVO21DQUZIOztpRUExckI3Q29TO29DQThyQjZDLGFBN3JCN0NDOzZDQWlzQmtEOzZDQUVBO21DQVJGLFVBYUc7bUNBRkg7O2lFQXZzQmhERDtvQ0Eyc0JnRDttQ0FmQSxVQW9CTTttQ0FGSDs7aUVBOXNCbkRBO29DQWt0Qm1EO21DQXRCSCxVQTJCUzttQ0FGSDs7aUVBcnRCdERBO29DQXl0QnNEO21DQTdCTixVQWtDWTttQ0FGSDs7aUVBNXRCekRBO29DQWd1QnlEO21DQXBDVCxVQXlDYzttQ0FGRjt1RUFudUI1REE7NENBd3VCNEQ7NENBRUEsa0RBQWlDO2lDQXZUdkQ7bUNBaU9LLE9BM29CM0M1Ujs7Ozs7Ozs7OzttQ0EwcEJvRDs7b0NBRkg7MkVBbHFCakRSO29DQWlxQm9EO29DQUZIOzJFQS9wQmpEQTtvQ0E4cEI4QztvQ0FESDswRkEyQmU7aUNBcFFwQjs7OztzQ0FNUTt3Q0F3S1U7d0NBRkg7O3NFQS9sQnJEb1M7eUNBbW1CcUQsYUFsbUJyREM7a0RBc21CMEQ7a0RBRUE7d0NBUkYsVUFhRzt3Q0FGSDs7c0VBNW1CeEREO3lDQWduQndEO3dDQWZBLFVBb0JNO3dDQUZIOztzRUFubkIzREE7eUNBd25CMkQ7d0NBdkJILFVBNEJNO3dDQUZBOztzRUEzbkI5REE7eUNBZ29COEQ7d0NBL0JOLFVBb0NNO3dDQUZBOztzRUFub0I5REE7eUNBd29COEQ7d0NBdkNOLFVBNENNO3dDQUZBOzRFQTNvQjlEQTtpREFncEI4RDtpREFFQSxrREFBaUM7c0NBek5qRDt3Q0ErSEssT0EvaUJuRDVSOzs7Ozs7Ozs7O3dDQStqQjREOzt5Q0FGSDtnRkF2a0J6RFI7eUNBc2tCNEQ7eUNBRkg7Z0ZBcGtCekRBO3lDQW1rQnNEO3lDQURIOytGQTJCZTtzQ0FuS3BCOzs7OzJDQVFROzZDQWdFUTs2Q0FGRDs7MkVBL2Y3RG9TOzhDQW9nQjZELGFBbmdCN0RDO3VEQXdnQjhEO3VEQUdBOzZDQVhBLFVBZ0JBOzZDQUZBOzsyRUEvZ0I5REQ7OENBb2hCOEQ7NkNBbkJBLFVBd0JBOzZDQUZBOzsyRUF2aEI5REE7OENBNGhCOEQ7NkNBM0JBLFVBZ0NBOzZDQUZBOzsyRUEvaEI5REE7OENBb2lCOEQ7NkNBbkNBLFVBd0NBOzZDQUZBOzsyRUF2aUI5REE7OENBNGlCOEQ7NkNBM0NBLFVBZ0RBOzZDQUZBO2lGQS9pQjlEQTtzREFvakI4RDtzREFFQSxrREFBaUM7MkNBckh6Qzs2Q0FVSyxPQWxjM0Q1Ujs7Ozs7Ozs7Ozs2Q0FtZDhEOzs4Q0FGQTtxRkEzZDlEUjs4Q0EwZDhEOzhDQUZBO3FGQXhkOURBOzhDQXNkOEQ7OENBREg7b0dBdUNVOzJDQTFEZjttR0FxSDBDO3NDQTdIbEQ7Z0dBeU5rRDtpQ0EvTjFEOzJGQXVUd0Q7NEJBN1RoRTtzRkE0WXdEO3VCQWpaaEU7aUZBK2N3RDtxQkF6aUJoRTs7OzswQkFJUTs0QkE2QlU7NEJBREg7OzBEQTlXN0JvUzs2QkFnWDZCLGFBL1c3QkM7c0NBa1hrQztzQ0FFQTs0QkFORixVQVNHOzRCQURIOzswREF2WGhDRDs2QkF5WGdDOzRCQVZBLFVBYU07NEJBREg7OzBEQTNYbkNBOzZCQTZYbUM7NEJBZEgsVUFpQlM7NEJBREg7OzBEQS9YdENBOzZCQWlZc0M7NEJBbEJOLFVBc0JZOzRCQUZIOzswREFuWXpDQTs2QkF1WXlDOzRCQXhCVCxVQTZCZTs0QkFGSDs7MERBMVk1Q0E7NkJBOFk0Qzs0QkEvQlosVUFvQ2tCOzRCQUZIOzswREFqWi9DQTs2QkFxWitDOzRCQXRDZixVQTJDcUI7NEJBRkg7OzBEQXhabERBOzZCQTRaa0Q7NEJBN0NsQjs2QkFzRDhCOzZCQUZIOzswREFuYTNEQTs2QkFrYXdEOzZCQURBOzZCQURIOzZCQURBO29GQU93QjswQkFwRnZEOzRCQUlvQixPQTdVMUM1Ujs7Ozs7Ozs7Ozs0QkFzVmlDOzs2QkFESDtvRUEvVjlCUjs2QkE4VjJCO21GQWN1QzswQkF6QjVDO2tGQW9Gd0Q7O3FCQXhGaEU7K0VBMmlCcUM7bUJBaGpCMUMsc0JBR29CLFFBQUk7bUJBSHhCOzJFQWdqQjJDO2VBcGpCcEQ7Ozs7O2VBMndCWTs7WUExMkJvQzthQTJGaEQ2YTtjQUF1Qzs7Ozs7OztjQTJ4QnZDOzs7a0JBNlFNLHNCQTJGNkMsOEJBQWdCO2tCQTNGN0Qsc0JBMkZvQixRQUFLO2tCQTNGekI7Ozs7dUJBSVE7eUJBc0ZVOzswQkFESDs7dURBbDhDckJ6STt5QkFrOENxQixrREFDMkI7dUJBdEZsQzt5QkFrRlE7OzBCQURIO2lFQS83Q25CcFM7eUJBKzdDbUIsdURBQ3FDO3VCQWxGMUM7Ozs7NEJBSVE7OEJBcUVVOzsrQkFESDs7NERBcjdDN0JvUzs4QkFxN0M2QixrREFDMkI7NEJBckVsQzs4QkFpRVc7OytCQURIO3NFQWw3QzlCcFM7K0JBaTdDaUM7K0JBREg7c0VBaDdDOUJBOytCQSs2QzJCO3FGQUkyQzs0QkFqRWhEOzs7O2lDQUtRO21DQWdEVTs7b0NBRkg7O2lFQXA2Q3JDb1M7bUNBbzZDcUMsa0RBRTJCO2lDQWhEbEM7bUNBMkNXOztvQ0FESDsyRUFqNkN0Q3BTO29DQWc2Q3lDO29DQURIOzJFQS81Q3RDQTtvQ0E4NUNtQzswRkFJeUM7aUNBM0M5Qzs7OztzQ0FNUTt3Q0F5QlU7O3lDQUZIOztzRUFuNUM3Q29TO3dDQW01QzZDLGtEQUUyQjtzQ0F6QmxDO3dDQW9CVzs7eUNBRkg7Z0ZBLzRDOUNwUzt5Q0E4NENpRDt5Q0FGSDtnRkE1NEM5Q0E7eUNBMjRDMkM7K0ZBTXlDO3NDQXBCOUM7OEZBeUJtQztpQ0EvQjNDOzJGQWdEbUM7NEJBckQzQztzRkFxRW1DO3VCQXpFM0M7aUZBc0ZtQztrQkExRjNDOzRFQTJGOEQ7cUNBN0YvQyxRQUFJOzs7O21CQXZRaEI7cUJBS0ssc0JBaVFvQiw4QkFBZ0I7cUJBalFwQyxzQkFnUW9CLFFBQUs7cUJBaFF6Qjs7OzswQkFJUTs0QkEyUG9CLHNEQUFzQjswQkEzUDFDOzRCQTBQYzs7NkJBRkg7OzJEQWoyQ2pDb1M7NEJBaTJDaUMsT0F4MUNqQzVSOzs7Ozs7Ozs7OzRCQTAxQ29DOzZCQWhCTjs2QkFETTs2QkFESDtvRUFsMUNqQ1I7NkJBaTFDb0M7NkJBREg7b0VBaDFDakNBOzZCQSswQzhCOzZCQURIO21GQXNCb0M7MEJBMVB6Qzs7OzsrQkFLUTtpQ0F1Tkssc0RBQXNCOytCQXZOM0I7aUNBcU5jOztrQ0FGSDs7Z0VBajBDekNvUztpQ0FpMEN5QyxPQXh6Q3pDNVI7Ozs7Ozs7Ozs7aUNBMHpDNEM7a0NBdkJOO2tDQURNO2tDQURIO3lFQTN5Q3pDUjtrQ0EweUM0QztrQ0FESDt5RUF6eUN6Q0E7a0NBd3lDc0M7a0NBREg7d0ZBNkJvQzsrQkFyTnpDOzs7O29DQU1RO3NDQTBLSyxzREFBc0I7b0NBMUszQjtzQ0F1S2M7O3VDQUZIOztxRUF6eENqRG9TO3NDQXl4Q2lELE9BaHhDakQ1Ujs7Ozs7Ozs7OztzQ0FreENvRDt1Q0F2Qk47dUNBRE07dUNBRkg7OEVBbHdDakRSO3VDQWl3Q29EO3VDQUZIOzhFQS92Q2pEQTt1Q0E4dkM4Qzt1Q0FESDs2RkFnQ2lCO29DQXhLdEI7Ozs7eUNBTVE7MkNBd0hLLHNEQUFzQjt5Q0F4SDNCOzJDQXFIYzs7NENBRkg7OzBFQTd1Q3pEb1M7MkNBNnVDeUQsT0FwdUN6RDVSOzs7Ozs7Ozs7OzJDQXN1QzREOzRDQXhCTjs0Q0FETTs0Q0FGSDttRkFydEN6RFI7NENBb3RDNEQ7NENBRkg7bUZBbHRDekRBOzRDQWl0Q3NEOzRDQURIO2tHQWlDaUI7eUNBdEh0Qjs7Ozs4Q0FRUTtnREFrRUssc0RBQXNCOzhDQWxFM0I7Z0RBOERROztpREFGQTs7K0VBOXJDOURvUztnREE4ckM4RCxPQXJyQzlENVI7Ozs7Ozs7Ozs7Z0RBdXJDOEQ7aURBbENBO2lEQURBO2lEQUZBO3dGQTVwQzlEUjtpREEycEM4RDtpREFGQTt3RkF6cEM5REE7aURBdXBDOEQ7aURBREg7dUdBNENXOzhDQS9EaEI7c0dBa0U0Qjt5Q0ExRXBDO21HQXdINEI7b0NBOUhwQzs4RkEwSzRCOytCQWhMcEM7eUZBdU40QjswQkE1TnBDO29GQTJQMkM7cUJBL1BuRDsrRUFpUXFDO21CQXRRMUMsc0JBR29CLFFBQUk7bUJBSHhCOzJFQXNRMkM7ZUExUXBEOzs7OztlQTBXWTs7WUFodUNvQzthQWkzQmhEOGE7Y0FBeUM7Ozs7Ozs7Y0EyWHpDOzs7a0JBNlFNLHNCQWdFNkMsOEJBQWdCO2tCQWhFN0Qsc0JBZ0VvQixRQUFLO2tCQWhFekI7Ozs7dUJBSVE7eUJBMkRVOzswQkFESDs7dURBN3hEckIxSTt5QkE2eERxQixrREFDMkI7dUJBM0RsQzt5QkF1RFE7OzBCQURIO2lFQTF4RG5CcFM7eUJBMHhEbUIsdURBQ3FDO3VCQXZEMUM7Ozs7NEJBSVE7OEJBMENVOzsrQkFESDs7NERBaHhEN0JvUzs4QkFneEQ2QixrREFDMkI7NEJBMUNsQzs4QkFzQ1c7OytCQURIO3NFQTd3RDlCcFM7K0JBNHdEaUM7K0JBREg7c0VBM3dEOUJBOytCQTB3RDJCO3FGQUl5Qzs0QkF0QzlDOzs7O2lDQUtRO21DQXFCVTs7b0NBRkg7O2lFQS92RHJDb1M7bUNBK3ZEcUMsa0RBRTJCO2lDQXJCbEM7bUNBZ0JXOztvQ0FESDsyRUE1dkR0Q3BTO29DQTJ2RHlDO29DQURIOzJFQTF2RHRDQTtvQ0F5dkRtQzswRkFJMEM7aUNBaEIvQzt5RkFxQm1DOzRCQTFCM0M7c0ZBMENtQzt1QkE5QzNDO2lGQTJEbUM7a0JBL0QzQzs0RUFnRThEO3FDQWxFL0MsUUFBSTs7OzttQkF2UWhCO3FCQUtLLHNCQWlRb0IsOEJBQWdCO3FCQWpRcEMsc0JBZ1FvQixRQUFLO3FCQWhRekI7Ozs7MEJBSVE7NEJBMlBvQixvREFBc0I7MEJBM1AxQzs0QkEwUGM7OzZCQUZIOzsyREF2dERqQ29TOzRCQXV0RGlDLE9BOXNEakM1Ujs7Ozs7Ozs7Ozs0QkFndERvQzs2QkFoQk47NkJBRE07NkJBREg7b0VBeHNEakNSOzZCQXVzRG9DOzZCQURIO29FQXRzRGpDQTs2QkFxc0Q4Qjs2QkFESDttRkFzQm9DOzBCQTFQekM7Ozs7K0JBS1E7aUNBdU5LLG9EQUFzQjsrQkF2TjNCO2lDQXFOYzs7a0NBRkg7O2dFQXZyRHpDb1M7aUNBdXJEeUMsT0E5cUR6QzVSOzs7Ozs7Ozs7O2lDQWdyRDRDO2tDQXZCTjtrQ0FETTtrQ0FESDt5RUFqcUR6Q1I7a0NBZ3FENEM7a0NBREg7eUVBL3BEekNBO2tDQThwRHNDO2tDQURIO3dGQTZCb0M7K0JBck56Qzs7OztvQ0FNUTtzQ0EwS0sscURBQXNCO29DQTFLM0I7c0NBdUtjOzt1Q0FGSDs7cUVBL29EakRvUztzQ0Erb0RpRCxPQXRvRGpENVI7Ozs7Ozs7Ozs7c0NBd29Eb0Q7dUNBdkJOO3VDQURNO3VDQUZIOzhFQXhuRGpEUjt1Q0F1bkRvRDt1Q0FGSDs4RUFybkRqREE7dUNBb25EOEM7dUNBREg7NkZBZ0NpQjtvQ0F4S3RCOzs7O3lDQU1ROzJDQXdISyxxREFBc0I7eUNBeEgzQjsyQ0FxSGM7OzRDQUZIOzswRUFubUR6RG9TOzJDQW1tRHlELE9BMWxEekQ1Ujs7Ozs7Ozs7OzsyQ0E0bEQ0RDs0Q0F4Qk47NENBRE07NENBRkg7bUZBM2tEekRSOzRDQTBrRDREOzRDQUZIO21GQXhrRHpEQTs0Q0F1a0RzRDs0Q0FESDtrR0FpQ2lCO3lDQXRIdEI7Ozs7OENBUVE7Z0RBa0VLLHFEQUFzQjs4Q0FsRTNCO2dEQThEUTs7aURBRkE7OytFQXBqRDlEb1M7Z0RBb2pEOEQsT0EzaUQ5RDVSOzs7Ozs7Ozs7O2dEQTZpRDhEO2lEQWxDQTtpREFEQTtpREFGQTt3RkFsaEQ5RFI7aURBaWhEOEQ7aURBRkE7d0ZBL2dEOURBO2lEQTZnRDhEO2lEQURIO3VHQTRDVzs4Q0EvRGhCO3NHQWtFNEI7eUNBMUVwQzttR0F3SDRCO29DQTlIcEM7OEZBMEs0QjsrQkFoTHBDO3lGQXVONEI7MEJBNU5wQztvRkEyUDJDO3FCQS9QbkQ7K0VBaVFxQzttQkF0UTFDLHNCQUdvQixRQUFJO21CQUh4QjsyRUFzUTJDO2VBMVFwRDs7Ozs7ZUErVVk7O1lBM2pEb0M7YUF1dUNoRCthO2NBQXNEOzs7Ozs7O2NBZ1d0RDs7O2tCQTZRTSxzQkE4SDZDLDhCQUFnQjtrQkE5SDdELHNCQThIb0IsUUFBSztrQkE5SHpCOzs7O3VCQUlRO3lCQXlIVTs7MEJBREg7O3VEQXRyRXJCM0k7eUJBc3JFcUIsa0RBQzJCO3VCQXpIbEM7eUJBcUhROzswQkFESDtpRUFuckVuQnBTO3lCQW1yRW1CLHVEQUNxQzt1QkFySDFDOzs7OzRCQUlROzhCQXdHVTs7K0JBREg7OzREQXpxRTdCb1M7OEJBeXFFNkIsa0RBQzJCOzRCQXhHbEM7OEJBb0dXOzsrQkFESDtzRUF0cUU5QnBTOytCQXFxRWlDOytCQURIO3NFQXBxRTlCQTsrQkFtcUUyQjtxRkFJeUM7NEJBcEc5Qzs7OztpQ0FLUTttQ0FtRlU7O29DQUZIOztpRUF4cEVyQ29TO21DQXdwRXFDLGtEQUUyQjtpQ0FuRmxDO21DQTZFYzs7b0NBREg7MkVBcHBFekNwUztvQ0FtcEVzQyxpREE1b0V0Q3FhO29DQTJvRXlDO29DQURIOzJFQWpwRXRDcmE7b0NBZ3BFbUM7MEZBTW9CO2lDQTlFekI7Ozs7c0NBTVE7d0NBMERVOzt5Q0FGSDs7c0VBcm9FN0NvUzt3Q0Fxb0U2QyxrREFFMkI7c0NBMURsQzt3Q0FxRFc7O3lDQUZIO2dGQWpvRTlDcFM7eUNBZ29FaUQ7eUNBRkg7Z0ZBOW5FOUNBO3lDQTZuRTJDOytGQU0wQztzQ0FyRC9DOzs7OzJDQU1ROzZDQThCVTs7OENBRkg7OzJFQS9tRXJEb1M7NkNBK21FcUQsa0RBR1E7MkNBL0JmOzZDQXdCYzs7OENBRkg7cUZBMW1FekRwUzs4Q0F5bUVzRCxpREFsbUV0RHFhOzhDQWltRXlEOzhDQUZIO3FGQXRtRXREcmE7OENBcW1FbUQ7b0dBUW9COzJDQXpCekI7bUdBK0JnQjtzQ0FyQ3hCO2dHQTBEbUM7aUNBaEUzQzsyRkFtRm1DOzRCQXhGM0M7c0ZBd0dtQzt1QkE1RzNDO2lGQXlIbUM7a0JBN0gzQzs0RUE4SDhEO3FDQWhJL0MsUUFBSTs7OzttQkF2UWhCO3FCQUtLLHNCQWlRb0IsOEJBQWdCO3FCQWpRcEMsc0JBZ1FvQixRQUFLO3FCQWhRekI7Ozs7MEJBSVE7NEJBMlBvQixxREFBc0I7MEJBM1AxQzs0QkEwUGM7OzZCQUZIOzsyREFsakVqQ29TOzRCQWtqRWlDLE9BemlFakM1Ujs7Ozs7Ozs7Ozs0QkEyaUVvQzs2QkFoQk47NkJBRE07NkJBREg7b0VBbmlFakNSOzZCQWtpRW9DOzZCQURIO29FQWppRWpDQTs2QkFnaUU4Qjs2QkFESDttRkFzQm9DOzBCQTFQekM7Ozs7K0JBS1E7aUNBdU5LLHFEQUFzQjsrQkF2TjNCO2lDQXFOYzs7a0NBRkg7O2dFQWxoRXpDb1M7aUNBa2hFeUMsT0F6Z0V6QzVSOzs7Ozs7Ozs7O2lDQTJnRTRDO2tDQXZCTjtrQ0FETTtrQ0FESDt5RUE1L0R6Q1I7a0NBMi9ENEM7a0NBREg7eUVBMS9EekNBO2tDQXkvRHNDO2tDQURIO3dGQTZCb0M7K0JBck56Qzs7OztvQ0FNUTtzQ0EwS0sscURBQXNCO29DQTFLM0I7c0NBdUtjOzt1Q0FGSDs7cUVBMStEakRvUztzQ0EwK0RpRCxPQWorRGpENVI7Ozs7Ozs7Ozs7c0NBbStEb0Q7dUNBdkJOO3VDQURNO3VDQUZIOzhFQW45RGpEUjt1Q0FrOURvRDt1Q0FGSDs4RUFoOURqREE7dUNBKzhEOEM7dUNBREg7NkZBZ0NpQjtvQ0F4S3RCOzs7O3lDQU1ROzJDQXdISyxxREFBc0I7eUNBeEgzQjsyQ0FxSGM7OzRDQUZIOzswRUE5N0R6RG9TOzJDQTg3RHlELE9BcjdEekQ1Ujs7Ozs7Ozs7OzsyQ0F1N0Q0RDs0Q0F4Qk47NENBRE07NENBRkg7bUZBdDZEekRSOzRDQXE2RDREOzRDQUZIO21GQW42RHpEQTs0Q0FrNkRzRDs0Q0FESDtrR0FpQ2lCO3lDQXRIdEI7Ozs7OENBUVE7Z0RBa0VLLHFEQUFzQjs4Q0FsRTNCO2dEQThEUTs7aURBRkE7OytFQS80RDlEb1M7Z0RBKzREOEQsT0F0NEQ5RDVSOzs7Ozs7Ozs7O2dEQXc0RDhEO2lEQWxDQTtpREFEQTtpREFGQTt3RkE3MkQ5RFI7aURBNDJEOEQ7aURBRkE7d0ZBMTJEOURBO2lEQXcyRDhEO2lEQURIO3VHQTRDVzs4Q0EvRGhCO3NHQWtFNEI7eUNBMUVwQzttR0F3SDRCO29DQTlIcEM7OEZBMEs0QjsrQkFoTHBDO3lGQXVONEI7MEJBNU5wQztvRkEyUDJDO3FCQS9QbkQ7K0VBaVFxQzttQkF0UTFDLHNCQUdvQixRQUFJO21CQUh4QjsyRUFzUTJDO2VBMVFwRDs7Ozs7ZUE2WVk7O1lBcDlEb0M7YUFra0RoRGdiO2NBQThEOzs7Ozs7O2NBK1oxQzs7ZUFESDtzREE1ckVqQlI7ZUEyckVvQjtlQURIO3NEQTFyRWpCQTtlQXlyRWM7Ozs7ZUFNWTs7WUFVVDtjQVVyQjtnQkFLSTs7O29CQXEzQk0sc0JBNEQ2Qyw4QkFBZ0I7b0JBNUQ3RCxzQkE0RG9CLFFBQUs7b0JBNUR6QjtzQkF5Q1E7d0JBaUJ1Qjs7eUJBQWhCOzs7OzRCQTFpR3JCRTt5QkF5aUdpQztnRkFFa0M7c0JBbEJyRDt3QkFjVzs7eUJBREg7Z0VBOW9HdEIxYTt5QkE2b0d5Qjt5QkFESDtnRUE1b0d0QkE7eUJBMm9HbUI7K0VBSTBDO3NCQWQvQzs4RUFrQnNEO29CQTNEOUQ7c0JBcUJRO3dCQWlCdUI7O3lCQUFoQjs7Ozs0QkF0aEdyQjBhO3lCQXFoR2lDO2dGQUVrQztzQkFsQnJEO3dCQWNXOzt5QkFESDtnRUExbkd0QjFhO3lCQXluR3lCO3lCQURIO2dFQXhuR3RCQTt5QkF1bkdtQjsrRUFJeUM7c0JBZDlDOzhFQWtCc0Q7b0JBdkM5RDs7Ozt5QkFJUTsyQkFjdUI7OzRCQUFoQjs7OzsrQkFsZ0dyQjBhOzRCQWlnR2lDO21GQUVrQzt5QkFmckQ7MkJBV1E7OzRCQURIO21FQXRtR25CMWE7MkJBc21HbUIsdURBQ3FDO3lCQVgxQztpRkFlc0Q7OztvQkFuQjlEOzhFQTREOEQ7dUNBOUQvQyxRQUFJOzs7O3FCQS8yQmhCO3VCQXFsQkssc0JBeVJvQiw4QkFBZ0I7dUJBelJwQyxzQkF3Um9CLFFBQUs7dUJBeFJ6Qjt5QkEwT1E7MkJBbUNjOzs7eURBeGtHcENvUzs0QkFza0dpRDs0QkFBaEI7NEJBRlk7NEJBQWY7NEJBV2E7NEJBRE07NEJBQWhCOzRCQUZZOzRCQUFmOzJCQUtFLDZDQWRBelIsUUFRQXNhOztvQ0FSQXRhLE9BZXNCO3lCQTdDaEM7MkJBSW9CLE9BaGlHMUNIOzs7Ozs7Ozs7OzJCQTRpR29DOzs0QkFESDttRUFyakdqQ1I7NEJBb2pHb0M7NEJBREg7bUVBbmpHakNBOzRCQWtqRzhCOzRCQURIO2tGQWlCdUM7eUJBNUI1QztpRkE2Q2lDO3VCQXZSekM7eUJBMkxROzJCQW1DYzs7O3lEQXpoR3BDb1M7NEJBdWhHaUQ7NEJBQWhCOzRCQUZZOzRCQUFmOzRCQVdhOzRCQURNOzRCQUFoQjs0QkFGWTs0QkFBZjsyQkFLRSw2Q0FkQXpSLFFBUUFzYTs7b0NBUkF0YSxPQWVzQjt5QkE3Q2hDOzJCQUlvQixPQWovRjFDSDs7Ozs7Ozs7OzsyQkE2L0ZvQzs7NEJBREg7bUVBdGdHakNSOzRCQXFnR29DOzRCQURIO21FQXBnR2pDQTs0QkFtZ0c4Qjs0QkFESDtrRkFpQnVDO3lCQTVCNUM7aUZBNkNpQzt1QkF4T3pDO3lCQW1GUTsyQkE0RmM7Ozt5REExK0ZwQ29TOzRCQXcrRmlEOzRCQUFoQjs0QkFGWTs0QkFBZjs0QkFXYTs0QkFETTs0QkFBaEI7NEJBRlk7NEJBQWY7MkJBS0UsNkNBZEF6UixRQVFBc2E7O29DQVJBdGEsT0Flc0I7eUJBdEdoQzsyQkE2RG9CLE9BbDhGMUNIOzs7Ozs7Ozs7OzJCQTg4Rm9DOzs0QkFESDttRUF2OUZqQ1I7NEJBczlGb0M7NEJBREg7bUVBcjlGakNBOzRCQW85RjhCOzRCQURIO2tGQWlCdUM7eUJBckY1Qzs7Ozs4QkFLUTtnQ0EyQ2M7Ozs4REE5N0Y1Q29TO2lDQTQ3RjRDO2lDQURIO2lDQURBO2lDQURIO2lDQWNNO2lDQUZBO2lDQURIO2lDQURBO2lDQURIO2dDQU9FLDZDQWpCQXpSLFFBU0FzYTs7eUNBVEF0YSxPQWtCMkI7OEJBdkRyQztnQ0FLb0IsT0EvNEZsREg7Ozs7Ozs7Ozs7Z0NBMjVGNEM7O2lDQURIO3dFQXA2RnpDUjtpQ0FtNkY0QztpQ0FESDt3RUFsNkZ6Q0E7aUNBaTZGc0M7aUNBREg7dUZBdUJ1Qzs4QkFuQzVDO3NGQXVEc0M7eUJBNUQ5QzttRkFzR2lDO3VCQXpMekM7eUJBb0NROzJCQW1DYzs7O3lEQWw0RnBDb1M7NEJBZzRGaUQ7NEJBQWhCOzRCQUZZOzRCQUFmOzRCQVdhOzRCQURNOzRCQUFoQjs0QkFGWTs0QkFBZjsyQkFLRSw2Q0FkQXpSLFFBUUFzYTs7b0NBUkF0YSxPQWVzQjt5QkE3Q2hDOzJCQUlvQixPQTExRjFDSDs7Ozs7Ozs7OzsyQkFzMkZvQzs7NEJBREg7bUVBLzJGakNSOzRCQTgyRm9DOzRCQURIO21FQTcyRmpDQTs0QkE0MkY4Qjs0QkFESDtrRkFpQnVDO3lCQTVCNUM7aUZBNkNpQzt1QkFqRnpDOzs7OzRCQUlROzhCQTRCdUI7OytCQUFoQjs7OztrQ0FwdkY3QjBhOytCQW12RnlDO3NGQUdrQzs0QkE5QnJEOzhCQUlvQixPQTF6RjFDbGE7Ozs7Ozs7Ozs7OEJBbTBGaUM7OytCQURIO3NFQTUwRjlCUjsrQkEyMEYyQjtxRkFjdUM7NEJBekI1QztvRkE4QnNEOzs7Ozt1QkFsQzlEO2lGQXlScUM7cUJBOTJCMUMsc0JBbWxCb0IsUUFBSTtxQkFubEJ4Qjs7OzswQkFJUTs0QkFzZUssc0JBd0dvQiw4QkFBZ0I7NEJBeEdwQyxzQkF1R29CLFFBQUs7NEJBdkd6Qjs4QkFzRVE7Z0NBK0JVOztpQ0FESDs7OztvQ0E3c0ZyQzBhO2lDQTZzRnFDO3dDQW56RnJDckk7b0NBOHlGMEM7b0NBR0E7d0ZBSXlDOzhCQWhDckQ7Z0NBaUJjOztpQ0FESDt3RUF2eUZ6Q3JTO2lDQXN5RnNDLGlEQS94RnRDcWE7aUNBOHhGeUM7aUNBREg7d0VBcHlGdENyYTtpQ0FteUZtQzt1RkFNb0I7OEJBbEJ6QjtzRkFnQ3NEOzRCQXRHOUQ7OEJBb0NRO2dDQStCVTs7aUNBREg7Ozs7b0NBM3FGckMwYTtpQ0EycUZxQzt3Q0FqeEZyQ3JJO29DQTR3RjBDO29DQUdBO3dGQUl5Qzs4QkFoQ3JEO2dDQWlCYzs7aUNBREg7d0VBcndGekNyUztpQ0Fvd0ZzQyxpREE3dkZ0Q3FhO2lDQTR2RnlDO2lDQURIO3dFQWx3RnRDcmE7aUNBaXdGbUM7dUZBTW9COzhCQWxCekI7c0ZBZ0NzRDs0QkFwRTlEOzs7O2lDQUtRO21DQTRCVTs7b0NBREg7Ozs7dUNBem9GckMwYTtvQ0F5b0ZxQzsyQ0EvdUZyQ3JJO3VDQTB1RjBDO3VDQUdBOzJGQUl5QztpQ0E3QnJEO21DQWNXOztvQ0FESDsyRUFudUZ0Q3JTO29DQWt1Rm1DLGlEQTN0Rm5DcWE7bUNBMnRGbUMsdURBR2dCO2lDQWZyQjt5RkE2QnNEOzs7NEJBbEM5RDtzRkF3R3FDOzBCQTlrQjFDLHNCQW9lb0IsUUFBSTswQkFwZXhCOzs7OytCQUlRO2lDQU1LLHNCQXlkb0IsOEJBQWdCO2lDQXpkcEMsc0JBd2RvQixRQUFLO2lDQXhkekI7bUNBd1lRO3FDQXlEYzs7O21FQXJyRnBEakk7c0NBbXJGb0Q7c0NBREg7OzZDQWpyRmpEQzt5Q0E0cUZzRDt5Q0FHQTtzQ0FSUjtzQ0E4Qk07c0NBRkE7c0NBREg7OzZDQWxzRmpEQTt5Q0E2ckZzRDt5Q0FHQTtzQ0FSUjtxQ0FnQkEsNkNBbENFMVIsUUFpQkFzYTs7OENBakJBdGEsT0FvQ3NCO21DQS9FaEM7cUNBTUssT0F6bkYzQ0g7Ozs7Ozs7Ozs7cUNBd29Gb0Q7O3NDQUZIOzZFQWhwRmpEUjtzQ0Erb0ZvRDtzQ0FGSDs2RUE3b0ZqREE7c0NBNG9GOEM7c0NBREg7NEZBMkJlO21DQXpDcEI7MkZBK0VpQztpQ0F2ZHpDO21DQXVUUTtxQ0F5RGM7OzttRUFwbUZwRG9TO3NDQWttRm9EO3NDQURIOzs2Q0FobUZqREM7eUNBMmxGc0Q7eUNBR0E7c0NBUlI7c0NBOEJNO3NDQUZBO3NDQURIOzs2Q0FqbkZqREE7eUNBNG1Gc0Q7eUNBR0E7c0NBUlI7cUNBZ0JBLDZDQWxDRTFSLFFBaUJBc2E7OzhDQWpCQXRhLE9Bb0NzQjttQ0EvRWhDO3FDQU1LLE9BeGlGM0NIOzs7Ozs7Ozs7O3FDQXVqRm9EOztzQ0FGSDs2RUEvakZqRFI7c0NBOGpGb0Q7c0NBRkg7NkVBNWpGakRBO3NDQTJqRjhDO3NDQURIOzRGQTJCZTttQ0F6Q3BCOzJGQStFaUM7aUNBdFl6QzttQ0E4SVE7cUNBaUpjOzs7bUVBbmhGcERvUztzQ0FpaEZvRDtzQ0FESDs7NkNBL2dGakRDO3lDQTBnRnNEO3lDQUdBO3NDQVJSO3NDQThCTTtzQ0FGQTtzQ0FESDs7NkNBaGlGakRBO3lDQTJoRnNEO3lDQUdBO3NDQVJSO3FDQWdCQSw2Q0FsQ0UxUixRQWlCQXNhOzs4Q0FqQkF0YSxPQW9Dc0I7bUNBdktoQztxQ0E4RkssT0F2OUUzQ0g7Ozs7Ozs7Ozs7cUNBcytFb0Q7O3NDQUZIOzZFQTkrRWpEUjtzQ0E2K0VvRDtzQ0FGSDs2RUEzK0VqREE7c0NBMCtFOEM7c0NBREg7NEZBMkJlO21DQWpJcEI7Ozs7d0NBTVE7MENBNkRjOzs7d0VBcjhFNURvUzsyQ0FtOEU0RDsyQ0FESDs7a0RBajhFekRDOzhDQTQ3RThEOzhDQUdBOzJDQVJSOzJDQStCTTsyQ0FGQTsyQ0FESDs7a0RBbjlFekRBOzhDQTg4RThEOzhDQUdBOzJDQVJSOzBDQWdCQSw2Q0FwQ0UxUixRQWtCQXNhOzttREFsQkF0YSxPQXdDUzt3Q0F0Rm5COzBDQVFLLE9BdjRFbkRIOzs7Ozs7Ozs7OzBDQXU1RTREOzsyQ0FGSDtrRkEvNUV6RFI7MkNBODVFNEQ7MkNBRkg7a0ZBNTVFekRBOzJDQTI1RXNEOzJDQURIO2lHQTJCZTt3Q0E1Q3BCO2dHQXNGb0I7bUNBNUY1Qjs2RkF1S2lDO2lDQXJUekM7bUNBNkRRO3FDQXlEYzs7O21FQTEyRXBEb1M7c0NBdzJFb0Q7c0NBREg7OzZDQXQyRWpEQzt5Q0FpMkVzRDt5Q0FHQTtzQ0FSUjtzQ0E4Qk07c0NBRkE7c0NBREg7OzZDQXYzRWpEQTt5Q0FrM0VzRDt5Q0FHQTtzQ0FSUjtxQ0FnQkEsNkNBbENFMVIsUUFpQkFzYTs7OENBakJBdGEsT0FvQ3NCO21DQS9FaEM7cUNBTUssT0E5eUUzQ0g7Ozs7Ozs7Ozs7cUNBNnpFb0Q7O3NDQUZIOzZFQXIwRWpEUjtzQ0FvMEVvRDtzQ0FGSDs2RUFsMEVqREE7c0NBaTBFOEM7c0NBREg7NEZBMkJlO21DQXpDcEI7MkZBK0VpQztpQ0E1SXpDOzs7O3NDQU1RO3dDQW1EVTs7eUNBREg7Ozs7NENBcnNFN0MwYTt5Q0Fxc0U2QztnREEzeUU3Q3JJOzRDQXN5RWtEOzRDQUdBO2dHQUt5QztzQ0FyRHJEO3dDQU1LLE9BdnZFM0M3Ujs7Ozs7Ozs7Ozt3Q0Ftd0U4QzswRkF0d0U5QzZaO3lDQXF3RWlEO3lDQUZIO2dGQTF3RTlDcmE7eUNBeXdFMkM7K0ZBd0IrQjtzQ0F0Q3BDOzhGQXFEc0Q7Ozs7O2lDQTNEOUQ7MkZBeWRxQzsrQkEvZDFDLHNCQUlvQixRQUFJOytCQUp4Qjt1RkErZDJDOzBCQW5lbkQ7b0ZBOGtCMkM7cUJBbGxCbkQ7K0VBODJCMkM7aUJBbDNCcEQ7Ozs7O2lCQW03Qlk7O2NBeDdCa0M7ZUFBOUNrWjtnQkFBOEM7Ozs7Ozs7Z0JBbzhCOUM7OztvQkE4bEJNLHNCQWdQNkMsOEJBQWdCO29CQWhQN0Qsc0JBZ1BvQixRQUFLO29CQWhQekI7c0JBa0xRO3dCQWtCVTt3QkFESDs7c0RBbDhIckI5Rzt5QkFvOEhxQixhQW44SHJCQztrQ0FzOEgwQjtrQ0FFQTt3QkFORixVQVNHO3dCQURIOztzREEzOEh4QkQ7eUJBNjhId0I7d0JBVkEsVUFhTTt3QkFESDs7c0RBLzhIM0JBO3lCQWk5SDJCO3dCQWRILFVBaUJTO3dCQURIOztzREFuOUg5QkE7eUJBcTlIOEI7d0JBbEJOLFVBcUJZO3dCQURIOztzREF2OUhqQ0E7eUJBeTlIaUM7d0JBdEJULFVBeUJlO3dCQURIOztzREEzOUhwQ0E7eUJBNjlIb0M7d0JBMUJaLFVBOEJrQjt3QkFESDs7c0RBaCtIdkNBO3lCQWsrSHVDO3dCQS9CZjt5QkEwQzJCO3lCQUZIOztzREEzK0hoREE7eUJBMCtINkM7eUJBRkE7eUJBREg7eUJBRkE7Z0ZBU3VCO3NCQTdEbkQ7d0JBY1c7O3lCQURIO2dFQS83SHRCcFM7eUJBODdIeUI7eUJBREg7Z0VBNzdIdEJBO3lCQTQ3SG1COytFQUl5QztzQkFkOUM7OEVBNkRvRDtvQkEvTzVEO3NCQXVIUTt3QkFrQlU7d0JBREg7O3NEQXY0SHJCb1M7eUJBeTRIcUIsYUF4NEhyQkM7a0NBMjRIMEI7a0NBRUE7d0JBTkYsVUFTRzt3QkFESDs7c0RBaDVIeEJEO3lCQWs1SHdCO3dCQVZBLFVBYU07d0JBREg7O3NEQXA1SDNCQTt5QkFzNUgyQjt3QkFkSCxVQWlCUzt3QkFESDs7c0RBeDVIOUJBO3lCQTA1SDhCO3dCQWxCTixVQXFCWTt3QkFESDs7c0RBNTVIakNBO3lCQTg1SGlDO3dCQXRCVCxVQXlCZTt3QkFESDs7c0RBaDZIcENBO3lCQWs2SG9DO3dCQTFCWixVQThCa0I7d0JBREg7O3NEQXI2SHZDQTt5QkF1Nkh1Qzt3QkEvQmY7eUJBcUNxQjt5QkFESDs7Ozs0QkFyMUYxQzBJO3lCQW0xRjBDO2dGQUt3QztzQkF6RHBFO3dCQWNXOzt5QkFESDtnRUFwNEh0QjlhO3lCQW00SHlCO3lCQURIO2dFQWw0SHRCQTt5QkFpNEhtQjsrRUFJeUM7c0JBZDlDOzhFQXlEcUU7b0JBaEw3RTtzQkE0RFE7d0JBa0JVO3dCQURIOztzREE1MEhyQm9TO3lCQTgwSHFCLGFBNzBIckJDO2tDQWcxSDBCO2tDQUVBO3dCQU5GLFVBU0c7d0JBREg7O3NEQXIxSHhCRDt5QkF1MUh3Qjt3QkFWQSxVQWFNO3dCQURIOztzREF6MUgzQkE7eUJBMjFIMkI7d0JBZEgsVUFpQlM7d0JBREg7O3NEQTcxSDlCQTt5QkErMUg4Qjt3QkFsQk4sVUFxQlk7d0JBREg7O3NEQWoySGpDQTt5QkFtMkhpQzt3QkF0QlQsVUF5QmU7d0JBREg7O3NEQXIySHBDQTt5QkF1MkhvQzt3QkExQlosVUE4QmtCO3dCQURIOztzREExMkh2Q0E7eUJBNDJIdUM7d0JBL0JmO3lCQXFDcUI7eUJBREg7Ozs7NEJBMXhGMUMwSTt5QkF3eEYwQztnRkFLd0M7c0JBekRwRTt3QkFjVzs7eUJBREg7Z0VBejBIdEI5YTt5QkF3MEh5Qjt5QkFESDtnRUF2MEh0QkE7eUJBczBIbUI7K0VBSTJDO3NCQWRoRDs4RUF5RHFFO29CQXJIN0U7Ozs7eUJBSVE7MkJBZVU7MkJBREg7O3lEQWp4SHJCb1M7NEJBbXhIcUIsYUFseEhyQkM7cUNBcXhIMEI7cUNBRUE7MkJBTkYsVUFTRzsyQkFESDs7eURBMXhIeEJEOzRCQTR4SHdCOzJCQVZBLFVBYU07MkJBREg7O3lEQTl4SDNCQTs0QkFneUgyQjsyQkFkSCxVQWlCUzsyQkFESDs7eURBbHlIOUJBOzRCQW95SDhCOzJCQWxCTixVQXFCWTsyQkFESDs7eURBdHlIakNBOzRCQXd5SGlDOzJCQXRCVCxVQXlCZTsyQkFESDs7eURBMXlIcENBOzRCQTR5SG9DOzJCQTFCWixVQThCa0I7MkJBREg7O3lEQS95SHZDQTs0QkFpekh1QzsyQkEvQmY7NEJBcUNxQjs0QkFESDs7OzsrQkEvdEYxQzBJOzRCQTZ0RjBDO21GQUt3Qzt5QkF0RHBFOzJCQVdROzs0QkFESDttRUE5d0huQjlhOzJCQTh3SG1CLHVEQUNxQzt5QkFYMUM7aUZBc0RxRTs7OztvQkExRDdFOzhFQWdQOEQ7dUNBbFAvQyxRQUFJOzs7b0JBblVoQjtzQkFLSyxzQkE2VG9CLDhCQUFnQjtzQkE3VHBDLHNCQTRUNkMsUUFBSztzQkE1VGxEO3dCQTBSUTswQkFpQ29CLHVEQUNQO3dCQWxDYjswQkFnQ2M7OzJCQURIOzt3REF4dkhqQ29TOzBCQXd2SGlDLE9BL3VIakM1Ujs7Ozs7Ozs7OzswQkFndkhvQzsyQkFmTjsyQkFETTsyQkFESDtrRUF6dUhqQ1I7MkJBd3VIb0M7MkJBREg7a0VBdnVIakNBOzJCQXN1SDhCOzJCQURIO2lGQXFCb0M7d0JBaEN6QztnRkFrQ2M7c0JBNVR0Qjt3QkFzUFE7MEJBaUNvQix1REFDUDt3QkFsQ2I7MEJBZ0NjOzsyQkFESDs7d0RBcHRIakNvUzswQkFvdEhpQyxPQTNzSGpDNVI7Ozs7Ozs7Ozs7MEJBNHNIb0M7MkJBZk47MkJBRE07MkJBREg7a0VBcnNIakNSOzJCQW9zSG9DOzJCQURIO2tFQW5zSGpDQTsyQkFrc0g4QjsyQkFESDtpRkFxQm9DO3dCQWhDekM7Z0ZBa0NjO3NCQXhSdEI7d0JBOEpROzBCQWlDVTswQkFESDs7d0RBN25IN0JvUzsyQkErbkg2QixhQTluSDdCQztvQ0Fpb0hrQztvQ0FFQTswQkFORixVQVVHOzBCQURIOzt3REF2b0hoQ0Q7MkJBeW9IZ0M7MEJBWEEsVUFjTTswQkFESDs7d0RBM29IbkNBOzJCQTZvSG1DOzBCQWZILFVBbUJTOzBCQURIOzt3REFocEh0Q0E7MkJBa3BIc0M7MEJBcEJOLFVBeUJZOzBCQUZIOzt3REFycEh6Q0E7MkJBeXBIeUM7MEJBM0JULFVBZ0NlOzBCQUZIOzt3REE1cEg1Q0E7MkJBZ3FINEM7MEJBbENaLFVBdUNrQjswQkFGSDs7d0RBbnFIL0NBOzJCQXVxSCtDOzBCQXpDZjsyQkFvRDJCOzJCQUZIOzt3REFockh4REE7MkJBK3FIcUQ7MkJBRkE7MkJBREg7MkJBRkE7a0ZBU3VCO3dCQXRGbkQ7MEJBSW9CLE9BeGxIMUM1Ujs7Ozs7Ozs7OzswQkFvbUhvQzs7MkJBREg7a0VBN21IakNSOzJCQTRtSG9DOzJCQURIO2tFQTNtSGpDQTsyQkEwbUg4QjsyQkFESDtpRkFrQndDO3dCQTdCN0M7Z0ZBc0ZvRDtzQkFwUDVEO3dCQTBIUTswQkFpQ29CLHVEQUNQO3dCQWxDYjswQkFnQ2M7OzJCQURIOzt3REF4bEhqQ29TOzBCQXdsSGlDLE9BL2tIakM1Ujs7Ozs7Ozs7OzswQkFnbEhvQzsyQkFmTjsyQkFETTsyQkFESDtrRUF6a0hqQ1I7MkJBd2tIb0M7MkJBREg7a0VBdmtIakNBOzJCQXNrSDhCOzJCQURIO2lGQXFCb0M7d0JBaEN6QztnRkFrQ2M7c0JBNUp0Qjt3QkFxQ1E7MEJBOEJVOzBCQURIOzt3REFqZ0g3Qm9TOzJCQW1nSDZCLGFBbGdIN0JDO29DQXFnSGtDO29DQUVBOzBCQU5GLFVBVUc7MEJBREg7O3dEQTNnSGhDRDsyQkE2Z0hnQzswQkFYQSxVQWNNOzBCQURIOzt3REEvZ0huQ0E7MkJBaWhIbUM7MEJBZkgsVUFtQlM7MEJBREg7O3dEQXBoSHRDQTsyQkFzaEhzQzswQkFwQk4sVUF5Qlk7MEJBRkg7O3dEQXpoSHpDQTsyQkE2aEh5QzswQkEzQlQsVUFnQ2U7MEJBRkg7O3dEQWhpSDVDQTsyQkFvaUg0QzswQkFsQ1osVUF1Q2tCOzBCQUZIOzt3REF2aUgvQ0E7MkJBMmlIK0M7MEJBekNmOzJCQW9EMkI7MkJBRkg7O3dEQXBqSHhEQTsyQkFtakhxRDsyQkFGQTsyQkFESDsyQkFGQTtrRkFTdUI7d0JBbkZuRDswQkFJb0IsT0EvOUcxQzVSOzs7Ozs7Ozs7OzBCQXcrR2lDOzsyQkFESDtrRUFqL0c5QlI7MkJBZy9HMkI7aUZBZXdDO3dCQTFCN0M7Z0ZBbUZvRDtzQkF4SDVEOzs7OzJCQUlROzZCQThCb0IsdURBQ1A7MkJBL0JiOzZCQTZCYzs7OEJBREg7OzJEQS85R2pDb1M7NkJBKzlHaUMsT0F0OUdqQzVSOzs7Ozs7Ozs7OzZCQXU5R29DOzhCQWZOOzhCQURHOzhCQURIO3FFQWg5RzlCUjs4QkErOEcyQjtvRkFrQm9DOzJCQTdCekM7bUZBK0JjOzs7Ozs7c0JBbkN0QjtnRkE2VHFDO29CQWxVMUMsc0JBR29CLFFBQUk7b0JBSHhCOzRFQWtVMkM7Ozs7cUJBdmxCM0M7dUJBK0xLLHNCQW9Gb0IsOEJBQWdCO3VCQXBGcEMsc0JBbUY2QyxRQUFLO3VCQW5GbEQ7Ozs7NEJBSVE7OEJBOEVvQix5REFDUDs0QkEvRWI7OEJBNkVjOzsrQkFESDs7NERBcDdHakNvUzs4QkFvN0dpQyxPQTM2R2pDNVI7Ozs7Ozs7Ozs7OEJBNDZHb0M7K0JBZk47K0JBRE07K0JBREg7c0VBcjZHakNSOytCQW82R29DOytCQURIO3NFQW42R2pDQTsrQkFrNkc4QjsrQkFESDtxRkFxQm9DOzRCQTdFekM7Ozs7aUNBS1E7bUNBMENvQix5REFDUDtpQ0EzQ2I7bUNBeUNjOztvQ0FGSDs7aUVBcDVHekNvUzttQ0FvNUd5QyxPQTM0R3pDNVI7Ozs7Ozs7Ozs7bUNBNjRHNEM7b0NBdkJOO29DQURNO29DQURIOzJFQTkzR3pDUjtvQ0E2M0c0QztvQ0FESDsyRUE1M0d6Q0E7b0NBMjNHc0M7b0NBREg7MEZBNkJvQztpQ0F6Q3pDO3lGQTJDYzs0QkFoRHRCO3NGQStFYzt1QkFuRnRCO2lGQW9GcUM7cUJBblIxQyxzQkE2TG9CLFFBQUk7cUJBN0x4Qjs7OzswQkFJUTs0QkFLSyxzQkFtTG9CLDhCQUFnQjs0QkFuTHBDLHNCQWtMb0IsUUFBSzs0QkFsTHpCOzhCQTRGUTtnQ0F1Q1U7Z0NBREg7OzhEQWh6R3JDb1M7aUNBa3pHcUMsYUFqekdyQ0M7MENBcXpHMEM7MENBR0E7Z0NBUkYsVUFhRztnQ0FGSDs7OERBNXpHeENEO2lDQWcwR3dDO2dDQWZBLFVBb0JNO2dDQUZIOzs4REFuMEczQ0E7aUNBdTBHMkM7Z0NBdEJILFVBMkJTO2dDQUZIOzs4REExMEc5Q0E7aUNBODBHOEM7Z0NBN0JOLFVBa0NZO2dDQUZIOzs4REFqMUdqREE7aUNBcTFHaUQ7Z0NBcENULFVBeUNlO2dDQUZIO29FQXgxR3BEQTt5Q0E0MUdvRDt5Q0FFQSxnREFDZ0I7OEJBckZ0QztnQ0FLb0IsT0F0d0dsRDVSOzs7Ozs7Ozs7O2dDQWt4RzRDOztpQ0FESDt3RUEzeEd6Q1I7aUNBMHhHNEM7aUNBREg7d0VBenhHekNBO2lDQXd4R3NDO2lDQURIO3VGQXVCdUM7OEJBbkM1QztzRkFxRnVDOzRCQWpML0M7Ozs7aUNBS1E7bUNBdUNVO21DQURIOztpRUF6dEdyQ29TO29DQTJ0R3FDLGFBMXRHckNDOzZDQTh0RzBDOzZDQUdBO21DQVJGLFVBYUc7bUNBRkg7O2lFQXJ1R3hDRDtvQ0F5dUd3QzttQ0FmQSxVQW9CTTttQ0FGSDs7aUVBNXVHM0NBO29DQWd2RzJDO21DQXRCSCxVQTJCUzttQ0FGSDs7aUVBbnZHOUNBO29DQXV2RzhDO21DQTdCTixVQWtDWTttQ0FGSDs7aUVBMXZHakRBO29DQTh2R2lEO21DQXBDVCxVQXlDZTttQ0FGSDt1RUFqd0dwREE7NENBcXdHb0Q7NENBRUEsZ0RBQ2dCO2lDQXJGdEM7bUNBS29CLE9BL3FHbEQ1Ujs7Ozs7Ozs7OzttQ0Eyckc0Qzs7b0NBREg7MkVBcHNHekNSO29DQW1zRzRDO29DQURIOzJFQWxzR3pDQTtvQ0Fpc0dzQztvQ0FESDswRkF1QnVDO2lDQW5DNUM7eUZBcUZ1Qzs7NEJBMUYvQztzRkFtTHFDOzBCQXhMMUMsc0JBRzBCLFFBQUk7MEJBSDlCO2tGQXdMMkM7cUJBNUxuRDsrRUFtUjJDOztpQkF2UnBEOzs7OztpQkFnMUJZOztjQXB4RGtDO2VBKzdCOUNrYjtnQkFBeUM7Ozs7Ozs7Z0JBZzJCekM7OztvQkFLTSxzQkF1RjZDLDhCQUFnQjtvQkF2RjdELHNCQXVGb0IsUUFBSztvQkF2RnpCO3NCQTJEUTt3QkFrQlU7d0JBREg7O3NEQTdrSXJCOUk7eUJBK2tJcUIsYUE5a0lyQkM7a0NBaWxJMEI7a0NBRUE7d0JBTkY7eUJBUWdCO3lCQUFoQjs7Ozs0QkF6b0Z4QjBJO3lCQXdvRm9DO2dGQUVtQztzQkEzQnpEO3dCQWNXOzt5QkFESDtnRUExa0l0Qi9hO3lCQXlrSXlCO3lCQURIO2dFQXhrSXRCQTt5QkF1a0ltQjsrRUFJMEM7c0JBZC9DOzhFQTJCMEQ7b0JBdEZsRTtzQkE4QlE7d0JBa0JVO3dCQURIOztzREFoaklyQm9TO3lCQWtqSXFCLGFBampJckJDO2tDQW9qSTBCO2tDQUVBO3dCQU5GO3lCQVFnQjt5QkFBaEI7Ozs7NEJBNW1GeEIwSTt5QkEybUZvQztnRkFFbUM7c0JBM0J6RDt3QkFjVzs7eUJBREg7Z0VBN2lJdEIvYTt5QkE0aUl5Qjt5QkFESDtnRUEzaUl0QkE7eUJBMGlJbUI7K0VBSXlDO3NCQWQ5Qzs4RUEyQjBEO29CQXpEbEU7Ozs7eUJBSVE7MkJBZVU7MkJBREg7O3lEQW5oSXJCb1M7NEJBcWhJcUIsYUFwaElyQkM7cUNBdWhJMEI7cUNBRUE7MkJBTkY7NEJBUWdCOzRCQUFoQjs7OzsrQkEva0Z4QjBJOzRCQThrRm9DO21GQUVtQzt5QkF4QnpEOzJCQVdROzs0QkFESDttRUFoaEluQi9hOzJCQWdoSW1CLHVEQUNxQzt5QkFYMUM7aUZBd0IwRDs7O29CQTVCbEU7OEVBdUY4RDt1Q0F6Ri9DLFFBQUk7aUJBSHpCOzs7OztpQkE4Rlk7O2NBNzNEa0M7ZUEyeEQ5Q21iO2dCQUEwQjs7Ozs7OztnQkE2RzFCOzs7b0JBZ2pCTSxzQkEyVDZDLDhCQUFnQjtvQkEzVDdELHNCQTJUb0IsUUFBSztvQkEzVHpCO3NCQXVSUTt3QkFtQkssT0E3N0puQmhHOzsyQkFpOEowQzs7NEJBQWhCOzs7OytCQTNwRzFCNkY7NEJBMHBHc0M7OzsyQkFNSTs7NEJBQWhCOzs7OytCQWhxRzFCQTs0QkErcEdzQzs7OzJCQU1JOzs0QkFBaEI7Ozs7K0JBcnFHMUJBOzRCQW9xR3NDO29GQUcyQztzQkFuQ25FO3dCQWlCVzs7eUJBREg7O3VEQTU3SnRCNUk7eUJBMjdKNEI7eUJBREg7Z0VBMzdKekJwUzt5QkEwN0o0Qjt5QkFESDtnRUF6N0p6QkE7eUJBdzdKc0I7eUJBREg7K0VBT2dDO3NCQWpCckM7OEVBbUNvRTtvQkExVDVFO3NCQW9QUTt3QkEwQkssT0FqNkpuQm1WOzsyQkFtNkpnRDs7MkJBRUE7OzJCQUVBLHVEQUNqQjtzQkFqQ2pCO3dCQXdCYzs7eUJBREg7O3NEQWg2SnpCL0M7eUJBZzZKeUIsWUEvNUp6QkM7eUJBdzVKc0I7eUJBRE07eUJBREg7Z0VBeDVKekJyUzt5QkF1NUo0Qjt5QkFESDtnRUF0NUp6QkE7eUJBcTVKc0I7eUJBREg7K0VBY29DO3NCQXhCekM7OEVBaUNrQjtvQkFyUjFCO3NCQWlOUTt3QkEwQkssT0E5M0puQm1WOzsyQkFnNEpnRDs7MkJBRUE7OzJCQUVBLHVEQUNqQjtzQkFqQ2pCO3dCQXdCYzs7eUJBREg7O3NEQTczSnpCL0M7eUJBNjNKeUIsWUE1M0p6QkM7eUJBcTNKc0I7eUJBRE07eUJBREg7Z0VBcjNKekJyUzt5QkFvM0o0Qjt5QkFESDtnRUFuM0p6QkE7eUJBazNKc0I7eUJBREg7K0VBY29DO3NCQXhCekM7OEVBaUNrQjtvQkFsUDFCO3NCQTRLUTt3QkFtQkssT0FsMUpuQm1WOzsyQkFzMUowQzs7NEJBQWhCOzs7OytCQWhqRzFCNkY7NEJBK2lHc0M7OzsyQkFNSTs7NEJBQWhCOzs7OytCQXJqRzFCQTs0QkFvakdzQzs7OzJCQU1JOzs0QkFBaEI7Ozs7K0JBMWpHMUJBOzRCQXlqR3NDO29GQUcyQztzQkFuQ25FO3dCQWlCVzs7eUJBREg7O3VEQWoxSnRCNUk7eUJBZzFKNEI7eUJBREg7Z0VBaDFKekJwUzt5QkErMEo0Qjt5QkFESDtnRUE5MEp6QkE7eUJBNjBKc0I7eUJBREg7K0VBT2dDO3NCQWpCckM7OEVBbUNvRTtvQkEvTTVFO3NCQXlJUTt3QkEwQkssT0F0ekpuQm1WOzsyQkF3ekpnRDs7MkJBRUE7OzJCQUVBLHVEQUNqQjtzQkFqQ2pCO3dCQXdCYzs7eUJBREg7O3NEQXJ6SnpCL0M7eUJBcXpKeUIsWUFwekp6QkM7eUJBNnlKc0I7eUJBRE07eUJBREg7Z0VBN3lKekJyUzt5QkE0eUo0Qjt5QkFESDtnRUEzeUp6QkE7eUJBMHlKc0I7eUJBREg7K0VBY29DO3NCQXhCekM7OEVBaUNrQjtvQkExSzFCO3NCQXNHUTt3QkEwQkssT0FueEpuQm1WOzsyQkFxeEpnRDs7MkJBRUE7OzJCQUVBLHVEQUNqQjtzQkFqQ2pCO3dCQXdCYzs7eUJBREg7O3NEQWx4SnpCL0M7eUJBa3hKeUIsWUFqeEp6QkM7eUJBMHdKc0I7eUJBRE07eUJBREg7Z0VBMXdKekJyUzt5QkF5d0o0Qjt5QkFESDtnRUF4d0p6QkE7eUJBdXdKc0I7eUJBREg7K0VBY29DO3NCQXhCekM7OEVBaUNrQjtvQkF2STFCO3NCQW9FUTt3QkFnQkssT0F2dUpuQm1WOzsyQkEydUowQzs7NEJBQWhCOzs7OytCQXI4RjFCNkY7NEJBbzhGc0M7OzsyQkFNSTs7NEJBQWhCOzs7OytCQTE4RjFCQTs0QkF5OEZzQzs7OzJCQU1JOzs0QkFBaEI7Ozs7K0JBLzhGMUJBOzRCQTg4RnNDO29GQUcyQztzQkFoQ25FO3dCQWNXOzt5QkFESDs7dURBdHVKdEI1STt5QkFxdUp5Qjt5QkFESDtnRUFydUp0QnBTO3lCQW91Sm1COytFQUlnQztzQkFkckM7OEVBZ0NvRTtvQkFwRzVFO3NCQW9DUTt3QkF1QkssT0E5c0puQm1WOzsyQkFndEpnRDs7MkJBRUE7OzJCQUVBLHVEQUNqQjtzQkE5QmpCO3dCQXFCYzs7eUJBREg7O3NEQTdzSnpCL0M7eUJBNnNKeUIsWUE1c0p6QkM7eUJBcXNKc0I7eUJBREc7eUJBREg7Z0VBcnNKdEJyUzt5QkFvc0ptQjsrRUFXb0M7c0JBckJ6Qzs4RUE4QmtCO29CQWxFMUI7Ozs7eUJBSVE7MkJBdUJLLE9BOXFKbkJtVjs7OEJBZ3JKZ0Q7OzhCQUVBOzs4QkFFQSx1REFDakI7eUJBOUJqQjsyQkFxQmM7OzRCQURIOzt5REE3cUp6Qi9DOzRCQTZxSnlCLFlBNXFKekJDOzRCQXFxSnNCOzRCQURHOzRCQURIO21FQXJxSnRCclM7NEJBb3FKbUI7a0ZBV29DO3lCQXJCekM7aUZBOEJrQjs7Ozs7Ozs7O29CQWxDMUI7OEVBMlQ4RDt1Q0E3VC9DLFFBQUk7OztvQkFuTWhCO3NCQTZHSyxzQkFxRm9CLDhCQUFnQjtzQkFyRnBDLHNCQW9Gb0IsUUFBSztzQkFwRnpCO3dCQXlEUTswQkFtQkssT0F2b0ozQm1WOzs2QkEwb0orQjs7NkJBRUE7OzZCQUVBLHVEQUErQjt3QkExQnhDOzBCQWdCYzs7MkJBREg7a0VBdG9KakNuVjsyQkFxb0o4Qjs7OERBam9KOUJrYTsyQkFnb0ppQzsyQkFESDtrRUFub0o5QmxhOzJCQWtvSjJCO2lGQU04Qjt3QkFqQm5DO2dGQTBCeUM7c0JBbkZqRDt3QkE2QlE7MEJBbUJLLE9BM21KM0JtVjs7NkJBOG1KK0I7OzZCQUVBOzs2QkFFQSx1REFBK0I7d0JBMUJ4QzswQkFnQmM7OzJCQURIO2tFQTFtSmpDblY7MkJBeW1KOEI7OzhEQXJtSjlCa2E7MkJBb21KaUM7MkJBREg7a0VBdm1KOUJsYTsyQkFzbUoyQjtpRkFNOEI7d0JBakJuQztnRkEwQnlDO3NCQXZEakQ7Ozs7MkJBSVE7NkJBZ0JLLE9BL2tKM0JtVjs7Z0NBa2xKK0I7O2dDQUVBOztnQ0FFQSx1REFBK0I7MkJBdkJ4Qzs2QkFhVzs7OEJBREg7cUVBOWtKOUJuVjs4QkE2a0oyQjs7aUVBemtKM0JrYTs2QkF5a0oyQix1REFHMEI7MkJBZC9CO21GQXVCeUM7OztzQkEzQmpEO2dGQXFGcUM7b0JBbE0xQyxzQkEyR29CLFFBQUk7b0JBM0d4Qjs7Ozt5QkFJUTsyQkFLSyxzQkFpR29CLDhCQUFnQjsyQkFqR3BDLHNCQWdHb0IsUUFBSzsyQkFoR3pCOzZCQWlFUTsrQkF1QkssT0EvaUpuQy9FOztrQ0Frakp1Qzs7a0NBRUE7O2tDQUVBLHVEQUErQjs2QkE5QnhDOytCQW1CaUI7O2dDQUZIO3VFQTVpSjVDblY7Z0NBMmlKeUM7O21FQXZpSnpDa2E7Z0NBc2lKNEM7Z0NBREg7dUVBemlKekNsYTtnQ0F3aUpzQztnQ0FESDs7OzttQ0FsaUpuQ21hOytCQWtpSm1DLHVEQVM4RDs2QkFyQm5FO3FGQThCeUM7MkJBL0ZqRDs2QkFpQ1E7K0JBdUJLLE9BL2dKbkNoRjs7a0NBa2hKdUM7O2tDQUVBOztrQ0FFQSx1REFBK0I7NkJBOUJ4QzsrQkFtQmlCOztnQ0FGSDt1RUE1Z0o1Q25WO2dDQTJnSnlDOzttRUF2Z0p6Q2thO2dDQXNnSjRDO2dDQURIO3VFQXpnSnpDbGE7Z0NBd2dKc0M7Z0NBREg7Ozs7bUNBbGdKbkNtYTsrQkFrZ0ptQyx1REFTOEQ7NkJBckJuRTtxRkE4QnlDOzJCQS9EakQ7Ozs7Z0NBS1E7a0NBbUJLLE9BLytJbkNoRjs7cUNBay9JdUM7O3FDQUVBOztxQ0FFQSx1REFBK0I7Z0NBMUJ4QztrQ0FlYzs7bUNBREg7MEVBNytJekNuVjttQ0E0K0lzQzs7c0VBeCtJdENrYTttQ0F1K0ltQzs7OztzQ0F0K0luQ0M7a0NBcytJbUMsdURBSzhEO2dDQWpCbkU7d0ZBMEJ5Qzs7OzJCQS9CakQ7cUZBaUdxQzt5QkF0RzFDLHNCQUcwQixRQUFJO3lCQUg5QjtpRkFzRzJDO29CQTFHbkQ7OEVBa00yQzs7OztxQkF6aUIzQzt1QkFLSyxzQkFnV29CLDhCQUFnQjt1QkFoV3BDLHNCQStWb0IsUUFBSzt1QkEvVnpCO3lCQXFUUTsyQkFzQkssT0F2N0kzQmhGOzs4QkE2N0lxQzs7K0JBREg7Ozs7a0NBdHBGbEM2RjsrQkFvcEY4Qzs7OzhCQVNUOzsrQkFESDs7OztrQ0E1cEZsQ0E7K0JBMHBGOEM7Ozs4QkFTVDs7K0JBREg7Ozs7a0NBbHFGbENBOytCQWdxRjhDO3VGQUkyQzt5QkF6Q25FOzJCQW9CVzs7NEJBREg7OzBEQXQ3STlCNUk7NEJBbzdJdUM7NEJBREg7bUVBcDdJcENwUzs0QkFtN0lpQyxpREE1NklqQ3FhOzRCQTI2SW9DOzRCQURIO21FQWo3SWpDcmE7NEJBZzdJOEI7NEJBREg7a0ZBU2dDO3lCQXBCckM7aUZBeUNvRTt1QkE5VjVFO3lCQStRUTsyQkE2QkssT0F4NUkzQm1WOzs4QkEyNUkrQjs7OEJBRUE7OzhCQUVBLHVEQUErQjt5QkFwQ3hDOzJCQTJCYzs7NEJBREg7O3lEQXY1SWpDL0M7NEJBdTVJaUMsWUF0NUlqQ0M7NEJBKzRJOEI7NEJBRlM7NEJBREg7bUVBOTRJcENyUzs0QkE2NElpQyxpREF0NElqQ3FhOzRCQXE0SW9DOzRCQURIO21FQTM0SWpDcmE7NEJBMDRJOEI7NEJBREg7a0ZBZ0JvQzt5QkEzQnpDO2lGQW9DeUM7dUJBblRqRDt5QkF5T1E7MkJBNkJLLE9BbDNJM0JtVjs7OEJBcTNJK0I7OzhCQUVBOzs4QkFFQSx5REFBK0I7eUJBcEN4QzsyQkEyQmM7OzRCQURIOzt5REFqM0lqQy9DOzRCQWkzSWlDLFlBaDNJakNDOzRCQXkySThCOzRCQUZTOzRCQURIO21FQXgySXBDclM7NEJBdTJJaUMsaURBaDJJakNxYTs0QkErMUlvQzs0QkFESDttRUFyMklqQ3JhOzRCQW8ySThCOzRCQURIO2tGQWdCb0M7eUJBM0J6QztpRkFvQ3lDO3VCQTdRakQ7eUJBOExROzJCQXNCSyxPQWgwSTNCbVY7OzhCQXMwSXFDOzsrQkFESDs7OztrQ0EvaEZsQzZGOytCQTZoRjhDOzs7OEJBU1Q7OytCQURIOzs7O2tDQXJpRmxDQTsrQkFtaUY4Qzs7OzhCQVNUOzsrQkFESDs7OztrQ0EzaUZsQ0E7K0JBeWlGOEM7dUZBSTJDO3lCQXpDbkU7MkJBb0JXOzs0QkFESDs7MERBL3pJOUI1STs0QkE2ekl1Qzs0QkFESDttRUE3eklwQ3BTOzRCQTR6SWlDLGlEQXJ6SWpDcWE7NEJBb3pJb0M7NEJBREg7bUVBMXpJakNyYTs0QkF5ekk4Qjs0QkFESDtrRkFTZ0M7eUJBcEJyQztpRkF5Q29FO3VCQXZPNUU7eUJBd0pROzJCQTZCSyxPQWp5STNCbVY7OzhCQW95SStCOzs4QkFFQTs7OEJBRUEsdURBQStCO3lCQXBDeEM7MkJBMkJjOzs0QkFESDs7eURBaHlJakMvQzs0QkFneUlpQyxZQS94SWpDQzs0QkF3eEk4Qjs0QkFGUzs0QkFESDttRUF2eElwQ3JTOzRCQXN4SWlDLGlEQS93SWpDcWE7NEJBOHdJb0M7NEJBREg7bUVBcHhJakNyYTs0QkFteEk4Qjs0QkFESDtrRkFnQm9DO3lCQTNCekM7aUZBb0N5Qzt1QkE1TGpEO3lCQWtIUTsyQkE2QkssT0EzdkkzQm1WOzs4QkE4dkkrQjs7OEJBRUE7OzhCQUVBLHlEQUErQjt5QkFwQ3hDOzJCQTJCYzs7NEJBREg7O3lEQTF2SWpDL0M7NEJBMHZJaUMsWUF6dklqQ0M7NEJBa3ZJOEI7NEJBRlM7NEJBREg7bUVBanZJcENyUzs0QkFndklpQyxpREF6dUlqQ3FhOzRCQXd1SW9DOzRCQURIO21FQTl1SWpDcmE7NEJBNnVJOEI7NEJBREg7a0ZBZ0JvQzt5QkEzQnpDO2lGQW9DeUM7dUJBdEpqRDt5QkEwRVE7MkJBbUJLLE9BenNJM0JtVjs7OEJBK3NJcUM7OytCQURIOzs7O2tDQXg2RWxDNkY7K0JBczZFOEM7Ozs4QkFTVDs7K0JBREg7Ozs7a0NBOTZFbENBOytCQTQ2RThDOzs7OEJBU1Q7OytCQURIOzs7O2tDQXA3RWxDQTsrQkFrN0U4Qzt1RkFJMkM7eUJBdENuRTsyQkFpQlc7OzRCQURIOzswREF4c0k5QjVJOzRCQXNzSW9DOzRCQURIO21FQXRzSWpDcFM7NEJBcXNJOEIsaURBOXJJOUJxYTs0QkE2ckkyQjtrRkFNZ0M7eUJBakJyQztpRkFzQ29FO3VCQWhINUU7eUJBdUNROzJCQTBCSyxPQTdxSTNCbEY7OzhCQWdySStCOzs4QkFFQTs7OEJBRUEsdURBQStCO3lCQWpDeEM7MkJBd0JjOzs0QkFESDs7eURBNXFJakMvQzs0QkE0cUlpQyxZQTNxSWpDQzs0QkFvcUk4Qjs0QkFGTTs0QkFESDttRUFucUlqQ3JTOzRCQWtxSThCLGlEQTNwSTlCcWE7NEJBMHBJMkI7a0ZBYW9DO3lCQXhCekM7aUZBaUN5Qzt1QkF4RWpEOzs7OzRCQUlROzhCQTBCSyxPQTFvSTNCbEY7O2lDQTZvSStCOztpQ0FFQTs7aUNBRUEseURBQStCOzRCQWpDeEM7OEJBd0JjOzsrQkFESDs7NERBem9JakMvQzsrQkF5b0lpQyxZQXhvSWpDQzsrQkFpb0k4QjsrQkFGTTsrQkFESDtzRUFob0lqQ3JTOytCQStuSThCLGlEQXhuSTlCcWE7K0JBdW5JMkI7cUZBYW9DOzRCQXhCekM7b0ZBaUN5Qzs7Ozs7Ozs7O3VCQXJDakQ7aUZBZ1dxQztxQkFyVzFDLHNCQUdvQixRQUFJO3FCQUh4Qjs2RUFxVzJDOztpQkF6V3BEOzs7OztpQkE2MkJZOztjQXJ2RmtDO2VBbzREOUNlO2dCQUFrQzs7Ozs7OztnQkE2M0JsQzs7O29CQVdNLE9BditKTmpHOzt1QkEyK0phOzsyREE1NEJiaUc7O3VCQSs0QmE7OzJEQS80QmJBOzt1QkFrNUJhOzsyREFsNUJiQSwrQkFrNUJ1Qzs7O29CQVpIOztxQkFBOUI7NERBeCtKTnBiO29CQXcrSk0sdURBQWlFO2lCQVR2RTs7Ozs7aUJBdUJZOztjQXh4RmtDO2VBNHZGOUNxYjtnQkFBc0M7Ozs7Ozs7Z0JBd0N0Qzs7O29CQVdNLE9BMWdLTmxHOzt1QkE4Z0thOzsyREEvNkJiaUc7O3VCQWs3QmE7OzJEQWw3QmJBOzt1QkFxN0JhOzsyREFyN0JiQSwrQkFxN0J1Qzs7O29CQVpIOztxQkFBOUI7NERBM2dLTnBiO29CQTJnS00sdURBQWlFO2lCQVR2RTs7Ozs7aUJBdUJZOztjQTN6RmtDO2VBK3hGOUNzYjtnQkFBdUM7Ozs7Ozs7Z0JBdUN2Qzs7O29CQWlCUTs7OEJBOTBKUlY7OEJBMjNIQVE7OzZCQTMzSEFSLDhCQWcxSjhDOzs7b0JBaEJ6QixtREFXVjtpQkFkWDs7Ozs7aUJBcUJZOztjQTMxRmtDO2VBazBGOUNXO2dCQUF5Qjs7Ozs7OztnQkFvQ0w7O2lCQURIOzsrQ0FqK0JqQkg7aUJBZytCYzs7O29CQXJFZEU7Ozs7O2lCQXlFMEI7O2NBWVQ7Z0JBWXJCOzsyQkFJUTlKO29CQUNIO3NCQUNFOzs7MEJBb0NROzs7OEJBajZKWG9KOzhCQW12SkFTOzJCQWdMVzswQkFFRzs7OzhCQXI2SmRUOzhCQXN4SkFVOzRCQXVKdUI7Ozs7Z0NBMUx2QkQ7Z0NBbUNBQzs2QkFvSnVCOzs7Z0NBMTZKdkJWO2dDQXN4SkFVOzZCQW1Kb0I7NkJBREg7b0VBN0NiOUo7NEJBNkNhOytEQTdDYkE7MEJBb0RVLE9BcERWQSxXQW9EdUI7OzswQkE3QkgsbURBWVY7Ozs7MkJBN0JGLHNCQWdCb0IsT0F0QjVCQSxXQXNCd0M7MkJBaEJoQzs2QkFHb0I7OztzQ0E1bUtoQ3lJLCtCQXduS2dFOzJCQWZwRDttRkFnQmlDO3VCQXBCMUM7Ozs7Ozt1QkFvRFk7c0JBakhNLFlBdUhpQztpQkFoRUo7Ozs7Ozs7O2tCQXFFbEQ7OztzQkFLTSxzQkF1RjZDLDhCQUFnQjtzQkF2RjdELHNCQXVGb0IsUUFBSztzQkF2RnpCO3dCQTJEUTswQkFzQlU7OzJCQURHOzJCQUZBOzs7OEJBdE4zQnNCOzhCQWwwRkFyQzsyQkF1aEd3QjswQkFESDs0QkFTRzs7NkJBRkE7OztnQ0EzTnhCcUM7Z0NBbDBGQXJDOzRCQTZoR3dCOzBCQUdILHVEQUE4Qjt3QkEzQnJDOzBCQWNXOzsyQkFESDtrRUFodkt0QmxaOzJCQSt1S3lCOzJCQURIO2tFQTl1S3RCQTsyQkE2dUttQjtpRkFJMEM7d0JBZC9DO2dGQTJCc0M7c0JBdEY5Qzt3QkE4QlE7MEJBc0JVOzsyQkFERzsyQkFGQTs7OzhCQXpMM0J1Yjs4QkFsMEZBckM7MkJBMC9Gd0I7MEJBREg7NEJBU0c7OzZCQUZBOzs7Z0NBOUx4QnFDO2dDQWwwRkFyQzs0QkFnZ0d3QjswQkFHSCx1REFBOEI7d0JBM0JyQzswQkFjVzs7MkJBREg7a0VBbnRLdEJsWjsyQkFrdEt5QjsyQkFESDtrRUFqdEt0QkE7MkJBZ3RLbUI7aUZBSXlDO3dCQWQ5QztnRkEyQnNDO3NCQXpEOUM7Ozs7MkJBSVE7NkJBbUJVOzs4QkFERzs4QkFGQTs7O2lDQTVKM0J1YjtpQ0FsMEZBckM7OEJBNjlGd0I7NkJBREg7K0JBU0c7O2dDQUZBOzs7bUNBakt4QnFDO21DQWwwRkFyQzsrQkFtK0Z3Qjs2QkFHSCx1REFBOEI7MkJBeEJyQzs2QkFXUTs7OEJBREg7cUVBdHJLbkJsWjs2QkFzckttQix1REFDcUM7MkJBWDFDO21GQXdCc0M7OztzQkE1QjlDO2dGQXVGOEQ7eUNBekYvQyxRQUFJO21CQUh6Qjs7Ozs7bUJBOEZZOztnQkFuS2hCO2lCQWlFSXliO2tCQUFpQzs7Ozs7OztrQkE2R2pDOzs7c0JBS00sc0JBNEU2Qyw4QkFBZ0I7c0JBNUU3RCxzQkE0RW9CLFFBQUs7c0JBNUV6Qjs7OzsyQkFJUTs2QkF1RU87OzhCQURNOzhCQUZBOzs0REF6VDNCRixlQXZpQ0FKOzhCQSsxQ3dCOzhCQURIO3NGQUswQjsyQkF2RWpDOzZCQStEUTs7OEJBREg7cUVBbjFLbkJuYjs2QkFtMUttQix1REFDcUM7MkJBL0QxQzs7OztnQ0FJUTtrQ0FrRE87O21DQURNO21DQUZBOztpRUF4U25DdWIsZUF2aUNBSjttQ0E4MENnQzttQ0FESDsyRkFLMEI7Z0NBbERqQztrQ0EwQ1c7O21DQURIOzBFQWwwSzlCbmI7bUNBaTBLaUM7bUNBREg7MEVBaDBLOUJBO21DQSt6SzJCO3lGQUl5QztnQ0ExQzlDOzs7O3FDQUtRO3VDQXlCTzs7d0NBRE07d0NBSEE7O3NFQW5SM0N1YixlQXZpQ0FKO3dDQXl6Q3dDO3dDQURIO2dHQU0wQjtxQ0F6QmpDO3VDQWdCVzs7d0NBREg7K0VBN3lLdENuYjt3Q0E0eUt5Qzt3Q0FESDsrRUEzeUt0Q0E7d0NBMHlLbUM7OEZBSTBDO3FDQWhCL0M7NkZBeUJrQztnQ0E5QjFDOzBGQWtEa0M7MkJBdEQxQztxRkF1RWtDO3NCQTNFMUM7Z0ZBNEU4RDt5Q0E5RS9DLFFBQUk7bUJBSHpCOzs7OzttQkFtRlk7O2dCQWpRaEI7aUJBMEsrQjs7Ozs7Ozs7MkJBa0d2QndSO29CQUNIO3NCQUNFOzs7MEJBMkIwQzs7Ozs7Ozs4QkE3QnpDQTsyQkE2QndDOzs4QkFIL0I7OztnQ0F0U2JnSzs7MkJBa1NZOzs7Ozs7OzJCQUh5Qjs7MkJBbUJ0QjsyQkFEQTs7OzhCQWxCRHBFOzhCQWwwS2RxRDswQkFtMUtZO21DQUdBOztxQ0FwQkVyRDtxQ0FsMEtkcUQ7bUNBdTFLaUIsK0NBQTZCOzs7MEJBbkN0QixtREFZVjt1QkFmWDs7Ozs7O3VCQXdDWTtzQkFySU0sWUEySWlDO2lCQXBEVzs7Ozs7Ozs7a0JBMERqRTs7O3NCQUtNLHNCQTZJNkMsOEJBQWdCO3NCQTdJN0Qsc0JBNklvQixRQUFLO3NCQTdJekI7Ozs7MkJBSVE7NkJBa0hVOzZCQURIO3FFQWxSckJpQjs4QkFvUnFCOzZCQURHOzhCQU9NOzhCQURIO3FFQXpSM0JBOzhCQXdSOEI7OEJBREg7cUVBdlIzQkE7NkJBc1J3QjsrQkFPTTs7Z0NBREg7c0VBNVIzQkE7Z0NBMlJ3Qzs7NkJBUmhCLFVBYU07NkJBREg7cUVBL1IzQkE7K0JBd1NvQzs7Z0NBREg7c0VBdlNqQ0E7Z0NBc1NpQztnQ0FESDtnQ0FERztnQ0FEQTtnQ0FESDs7NkJBT0gsc0RBQTBCOzJCQXhJdkM7NkJBOEdROzs4QkFESDtxRUF0aExuQjFiOzZCQXNoTG1CLHVEQUNxQzsyQkE5RzFDOzs7O2dDQUlRO2tDQXlFVTtrQ0FESDswRUE3TzdCMGI7bUNBK082QjtrQ0FERzttQ0FPTTttQ0FESDswRUFwUG5DQTttQ0FtUHNDO21DQURIOzBFQWxQbkNBO2tDQWlQZ0M7b0NBUU07O3FDQURIOzJFQXhQbkNBO3FDQXVQbUM7O2tDQVRILFVBZU07a0NBREg7MEVBNVBuQ0E7b0NBcVE0Qzs7cUNBREg7MkVBcFF6Q0E7cUNBbVF5QztxQ0FESDtxQ0FERztxQ0FEQTtxQ0FESDs7a0NBT0Usc0RBQTBCO2dDQWpHNUM7a0NBcUVXOzttQ0FESDswRUFqL0s5QjFiO21DQWcvS2lDO21DQURIOzBFQS8rSzlCQTttQ0E4K0syQjt5RkFJeUM7Z0NBckU5Qzs7OztxQ0FLUTt1Q0FvQlU7dUNBREg7K0VBN0xyQzBiO3dDQStMMEM7dUNBREY7d0NBU007d0NBRkg7K0VBck0zQ0E7d0NBb004Qzt3Q0FGSDsrRUFsTTNDQTt1Q0FpTXdDO3lDQVlNOzswQ0FGSDtnRkEzTTNDQTswQ0EwTTJDOzt1Q0FaSCxVQW9CTTt1Q0FGSDsrRUFoTjNDQTt5Q0E0Tm9EOzswQ0FGSDtnRkExTmpEQTswQ0F5TmlEOzBDQURIOzBDQURHOzBDQURBOzBDQURIOzt1Q0FTSCxzREFBMEI7cUNBcER2Qzt1Q0FnQlc7O3dDQURIOytFQWo4S3RDMWI7d0NBZzhLeUM7d0NBREg7K0VBLzdLdENBO3dDQTg3S21DOzhGQUkwQztxQ0FoQi9DOzZGQW9Ed0M7Z0NBekRoRDswRkFpRzZDOzJCQXJHckQ7cUZBd0l3QztzQkE1SWhEO2dGQTZJOEQ7eUNBL0kvQyxRQUFJO21CQUh6Qjs7Ozs7bUJBb0pZOztnQkF0ZGhCO2lCQTZUNEM7Ozs7Ozs7OzJCQW9LcEN3UjtvQkFDSDtzQkFDRTs7OzBCQTRCUzs7Ozs7Ozs4QkE5QlJBOzJCQTZCdUQ7OzhCQUhoQzs7O2dDQW5QM0JxRTs7MkJBK09ZOzs7Ozs7OzJCQUh5Qjs7MkJBeUJ6Qjs7Ozs7OzhCQXpCRXVCOzJCQXdCK0M7OzhCQUZsQzs7O2dDQXZ5SzNCN0I7OzJCQW95S3lCOzs7Ozs7OzJCQUZLOzJCQWdCWjsyQkFEWTtpRUFoQ2hCNkIsY0FpQkFLOzJCQWVDOzJCQURIOzsyQkFPRzsyQkFEQTs7OzhCQVBEQzs4QkFiQUQ7MEJBbUJGO21DQUdBOztxQ0FURUM7cUNBYkFEO21DQXVCRiwrQ0FBK0I7OzswQkF0RG5CLG1EQVlWO3VCQWZYOzs7Ozs7dUJBMkRZO3NCQXpOTSxZQStOaUM7aUJBdkVtQjs7Ozs7Ozs7a0JBNkV6RTs7O3NCQUtNLHNCQXVFNkMsOEJBQWdCO3NCQXZFN0Qsc0JBdUVvQixRQUFLO3NCQXZFekI7Ozs7MkJBSVE7NkJBa0VPOzs4QkFETTs4QkFESDs7O2lDQXRUeEJrRTs7OEJBcVRxQjtzRkFHNkI7MkJBbEVwQzs2QkE0RFE7OzhCQURIO3FFQTVzTG5CM2I7NkJBNHNMbUIsdURBQ3FDOzJCQTVEMUM7Ozs7Z0NBSVE7a0NBK0NPOzttQ0FETTttQ0FGSDs7O3NDQXRTaEMyYjs7bUNBcVM2QjsyRkFJNkI7Z0NBL0NwQztrQ0F3Q1c7O21DQURIOzBFQTVyTDlCM2I7bUNBMnJMaUM7bUNBREg7MEVBMXJMOUJBO21DQXlyTDJCO3lGQUl5QztnQ0F4QzlDOzs7O3FDQUtRO3VDQXVCTzs7d0NBRE07d0NBRkg7OzsyQ0FuUnhDMmI7O3dDQWtScUM7Z0dBSTZCO3FDQXZCcEM7dUNBZ0JXOzt3Q0FESDsrRUF6cUx0QzNiO3dDQXdxTHlDO3dDQURIOytFQXZxTHRDQTt3Q0FzcUxtQzs4RkFJMEM7cUNBaEIvQzs2RkF1QnFDO2dDQTVCN0M7MEZBK0NxQzsyQkFuRDdDO3FGQWtFcUM7c0JBdEU3QztnRkF1RThEO3lDQXpFL0MsUUFBSTttQkFIekI7Ozs7O21CQThFWTs7Z0JBeG5CaEI7aUJBcWlCaUQ7Ozs7Ozs7OzJCQThGekN3UjtvQkFDSDtzQkFDRTs7OzBCQTBCUzs7Ozs7Ozs4QkE1QlJBOzJCQTJCK0Q7OzhCQUh4Qzs7O2dDQTlMM0JtRzs7MkJBMExZOzs7Ozs7OzJCQUh5Qjs7MkJBcUJHOzJCQUR0Qjs7OzhCQTl2TGxCMkM7OEJBR0FFOzJCQTB2TGU7aUVBbkJEcEQ7MEJBa0JGOzRCQU1HOzs7O2dDQWx3TGZrRDtnQ0FHQUU7NEJBK3ZMZTsrREF4QkRwRDswQkF5QjRCLHNEQUE2Qjs7OzBCQXJDL0MsbURBVVY7dUJBYlg7Ozs7Ozt1QkEwQ1k7c0JBbElNLFlBd0lpQztpQkF0RGU7Ozs7Ozs7O2tCQTREckU7OztzQkFnQk07OytCQXYrS055RDsrQkFpMEtBZSwrQkF1S3lDOzs7c0JBZHBCLG1EQVdWO21CQWRYOzs7OzttQkFtQlk7O2dCQTlzQmhCO2lCQXNyQjZDOzs7Ozs7OzsyQkFvQ3JDcEs7b0JBQ0g7c0JBQ0U7OzswQkFzQlM7Ozs7Ozs7OEJBeEJSQTsyQkF1QjJEOzs4QkFIcEM7OztnQ0EvRzNCcUs7OzJCQTJHWTs7Ozs7OzsyQkFIeUI7OzttQ0FBdkJ6RSxjQTN6TGQ1VyxVQVZBUixjQXUxTHVDOzs7MEJBMUJmLG1EQU1WO3VCQVRYOzs7Ozs7dUJBK0JZO3NCQTdETSxZQW1FaUM7aUJBM0N2Qzs7Ozs7Ozs7a0JBZ0RmOzs7c0JBa0JZOzs7OzBCQXgzTFowUjswQkErcEdBd0o7dUJBd3RGUzs7OzswQkFqR1RZO3VCQXlHZTt1QkFESDs7c0RBUkRFOzBCQVVDOzBCQVZEQTtzQkFZTDs7K0JBanVCTlA7K0JBMnRCV1EsMkJBTThEOzs7c0JBekJwRCxtREFXVjttQkFkWDs7Ozs7bUJBOEJZOztnQkFweUJoQjtpQkFrd0J3Qzs7Ozs7Ozs7MkJBNkNoQ3pLO29CQUNIO3NCQUNFOzs7MEJBNEJTOzs7Ozs7OzhCQTlCUkE7MkJBNkJ1RTs7OEJBSGhEOzs7Z0NBcEgzQnVLOzsyQkFnSFk7Ozs7Ozs7MkJBSHlCOzswQkFpQnZCOztvQ0FqQkEzRTtvQ0EzdUxkdUQ7bUNBNnZMaUI7bUNBbEJIdkQsYUFrQmtEOzs7MEJBaEN4QyxtREFZVjt1QkFmWDs7Ozs7O3VCQXFDWTtzQkE3RU0sWUFtRmlDO2lCQWpESTs7Ozs7Ozs7a0JBc0QxRDs7O3NCQWtCWTs7OzswQkFqN0JabUU7MEJBbDBGQXJDO3VCQWt2SFM7OzBEQWhIVGdEO3VCQXFIc0M7c0JBQTNCOzJEQU5BMUs7K0JBT0Y7K0JBUEVBLFdBTzZDOzs7c0JBcEJuQyxtREFXVjttQkFkWDs7Ozs7bUJBeUJZOztnQkExM0JoQjtpQkE2MUJJc0c7a0JBQThCOzs7Ozs7O3dCQTd0SDlCb0I7d0JBbzREQWtDO3dCQTZqQ0FLO3dCQTcxSkFaO3dCQThoTEFxQjt3QkEyRkFwRTt3QkFsREFEO2NBdHpCWTtZQTkzRkE7VUFyL0RBO1FBL0hBO01BN0NBLHVDQXc3TDZCO0lBMW5sQjdCLFNBNG5sQmRzRSwrQkFBa0NBO01BQ3BDOzJCQURvQ0E7T0FDcEMsK0JBRG9DQTtPQUNwQyxzQkFEb0NBO09BQ3BDLFVBRG9DQTtPQUNwQyxVQURvQ0E7T0FDcEMsNEJBRG9DQTtPQUNwQywwQkFEb0NBO09BQ3BDLCtCQURvQ0E7T0FDcEMsS0FEb0NBO09BQ3BDLGNBRG9DQTtPQUNwQywrQkFEb0NBO01BQ3BDO1FBY3FCOztTQURILDRDQUpkbmM7Ozs7U0FPMEI7O01BT2Q7UUFPaEI7VUFLSTtpQ0FTcUIsT0FuQ3JCQSxhQW1DbUM7OztjQU5kLG1EQUt3QztXQVI3RDtXQUpFOzs7Ozs7Ozs7O1dBZVU7O1FBTWhCO1VBSUk7aUNBU3FCLE9BOURyQlEsU0E4RCtCOzs7Y0FOVixtREFLd0M7V0FSN0Q7V0FIRTs7a0RBanprQko0TDs7OztXQSt6a0JjOztRQVdvQzs7O1lBSEU7NkNBaHNoQnBEZ0Y7ZUFtcGhCRWlFLCtCQXNCQUM7U0FxQjJEO3dDQUEzRHJVO1FBQTJEO1VBZ0IzRDtpQ0FTcUIsT0EvRnJCVCxTQStGK0I7OztjQU5WLG1EQUt3QztXQVI3RDtXQUpFOztrREFqMWtCSjRMOzs7O1dBZzJrQmM7O1FBTWhCO1VBS0k7aUNBU3FCLE9BdkhyQjRJLDhCQXVId0Q7OztjQU5uQyxtREFLd0M7V0FSN0Q7V0FKRTs7Ozs7Ozs7OztXQWVVOztRQU1oQjtVQUtJO2lDQVNxQixPQTlJckJDLG1CQThJeUM7OztjQU5wQixtREFLd0M7V0FSN0Q7V0FKRTs7Ozs7Y0F2N2tCSmhKOzs7OztXQXM4a0JjOztRQU1oQjtVQUtJO2lDQVNxQixPQWxLckJpSixxQkFrSzJDOzs7Y0FOdEIsbURBS3dDO1dBUjdEO1dBSkU7Ozs7Ozs7Ozs7V0FlVTs7UUFNaEI7VUFLSTtpQ0FTcUIsT0FyTHJCeEQsMkJBcUxpRDs7O2NBTjVCLG1EQUt3QztXQVI3RDtXQUpFOzs7Ozs7Ozs7O1dBZVU7O1FBTWhCO1VBS0k7aUNBU3FCLE9BMU1yQlUseUJBME0rQzs7O2NBTjFCLG1EQUt3QztXQVI3RDtXQUpFOzs7Ozs7Ozs7O1dBZVU7O1FBTWhCO1VBTUk7aUNBU3FCLE9BaE9yQkMsOEJBZ09vRDs7O2NBTi9CLG1EQUt3QztXQVI3RDtXQUxFOzs7OztjQTEra0JKbEc7Ozs7O1dBMC9rQmM7O1FBTWhCO1VBSUk7aUNBU3FCLE9BcFByQmdKLElBb1AwQjs7O2NBTkwsbURBS3dDO1dBUjdEO1dBSEU7Ozs7O2NBMXFsQkoxSjs7Ozs7V0F3cmxCYzs7UUFNaEI7VUFLSTtpQ0FTcUIsT0F6UXJCekwsYUF5UW1DOzs7Y0FOZCxtREFLd0M7V0FSN0Q7V0FKRTs7Ozs7Ozs7OztXQWVVOztRQU1oQjtVQUtJO2lDQVNxQixPQXBTckJvVixTQW9TK0I7OztjQU5WLG1EQUt3QztXQVI3RDtXQUpFOzs7Ozs7Ozs7O1dBZVU7O1FBNU5vQztTQWtPcEQ7O1lBQ21CLHNCQWlCZ0IsUUFBSTtZQWpCcEI7Y0FPTSxtREFVVjtZQWJYOzs7Ozs7OzsyQkFhc0M7U0FsQjFDOztZQW9Ca0Msc0JBb0NNLFFBQUk7WUFwQ1Y7Y0FRTSxPQXpVcEM1VTs7Ozs7Ozs7OztjQXdWOEI7O2VBREg7c0RBalYzQlI7ZUFnVjhCO2VBREg7c0RBL1UzQkE7ZUE4VXdCO2VBREg7cUVBaUJ1QztZQS9CN0M7Ozs7Ozs7OzJCQWdDNEI7U0F4RC9DOzBCQTBEbUIsOEJBSUg7U0FNMkI7O1lBSEc7NkNBdjhkNUMrVTs7YUEwcWRFc0g7YUFzQkFDO2FBc0JBQzthQXNCQUM7YUFzQkFDO2FBc0JBQzthQXNCQUM7YUF1QkFDO2FBcUJBQzthQXNCQUM7YUFzQkFDO2FBbUJBQzthQXNDQUM7U0FNa0Q7MkNBQWxENWE7UUFBa0Q7VUE4Q2xEO2lDQWErQixPQWphL0JyQyxhQWlhNkM7OztjQVZ4QixtREFVVjtXQWJYO1dBSEU7Ozs7Ozs7Ozs7V0FrQlU7O1FBU2hCO1VBS0k7aUNBYStCLFFBQUk7OztjQVZkLG1EQVVWO1dBYlg7V0FKRTs7Ozs7Ozs7OztXQW1CVTs7UUFTaEI7VUFLSTtpQ0FhK0IsT0E5ZC9Cb1MseUJBOGR5RDs7O2NBVnBDLG1EQVVWO1dBYlg7V0FKRTs7Ozs7Ozs7OztXQW1CVTs7UUFTaEI7VUFNSTtpQ0FhK0IsT0EzZi9CQyw4QkEyZjhEOzs7Y0FWekMsbURBVVY7V0FiWDtXQUxFOzs7OztjQWp3bEJKbEc7Ozs7O1dBcXhsQmM7O1FBdGJvQztTQSticEQ7MEJBQ2tDLDhCQUlJO1NBS2lDOztZQUZqQzs2Q0F0c2hCcENnRzs7YUEwa2hCRTREO2FBNEJBQzthQTZCQUM7YUE2QkFDO2FBOEJBQztTQU0yQzt3Q0FBM0MxVDtRQUEyQztVQW9CM0M7OztjQTZRTSxzQkFxQzZDLDhCQUFnQjtjQXJDN0Qsc0JBcUNvQixRQUFLO2NBckN6Qjs7OzttQkFJUTtxQkFnQ0s7d0RBbDFCbkIyUCwwQkFrMUJ5RDttQkFoQzNDO3FCQThCUTs7c0JBREg7NkRBNTBCbkJwUztxQkE0MEJtQix1REFDcUM7bUJBOUIxQzs7Ozt3QkFJUTswQkFpQks7NkRBdjBCM0JvUywwQkF1MEJpRTt3QkFqQjNDOzBCQWVXOzsyQkFESDtrRUFqMEI5QnBTOzJCQWcwQmlDOzJCQURIO2tFQS96QjlCQTsyQkE4ekIyQjtpRkFJeUM7d0JBZjlDO2dGQWlCNEM7bUJBckJwRDs2RUFnQzRDO2NBcENwRDt3RUFxQzhEO2lDQXZDL0MsUUFBSTs7OztlQXZRaEI7aUJBS0ssc0JBaVFvQiw4QkFBZ0I7aUJBalFwQyxzQkFnUW9CLFFBQUs7aUJBaFF6Qjs7OztzQkFJUTt3QkEyUG9CLHFEQUFzQjtzQkEzUDFDO3dCQTBQYzs7eUJBRkg7O3VEQXR5QmpDb1M7d0JBc3lCaUMsT0F6eUJqQzVSOzs7Ozs7Ozs7O3dCQTJ5Qm9DO3lCQWhCTjt5QkFETTt5QkFESDtnRUFueEJqQ1I7eUJBa3hCb0M7eUJBREg7Z0VBanhCakNBO3lCQWd4QjhCO3lCQURIOytFQXNCb0M7c0JBMVB6Qzs7OzsyQkFLUTs2QkF1TksscURBQXNCOzJCQXZOM0I7NkJBcU5jOzs4QkFGSDs7NERBdHdCekNvUzs2QkFzd0J5QyxPQXp3QnpDNVI7Ozs7Ozs7Ozs7NkJBMndCNEM7OEJBdkJOOzhCQURNOzhCQURIO3FFQTV1QnpDUjs4QkEydUI0Qzs4QkFESDtxRUExdUJ6Q0E7OEJBeXVCc0M7OEJBREg7b0ZBNkJvQzsyQkFyTnpDOzs7O2dDQU1RO2tDQTBLSyxxREFBc0I7Z0NBMUszQjtrQ0F1S2M7O21DQUZIOztpRUE5dEJqRG9TO2tDQTh0QmlELE9BanVCakQ1Ujs7Ozs7Ozs7OztrQ0FtdUJvRDttQ0F2Qk47bUNBRE07bUNBRkg7MEVBbnNCakRSO21DQWtzQm9EO21DQUZIOzBFQWhzQmpEQTttQ0ErckI4QzttQ0FESDt5RkFnQ2lCO2dDQXhLdEI7Ozs7cUNBTVE7dUNBd0hLLHFEQUFzQjtxQ0F4SDNCO3VDQXFIYzs7d0NBRkg7O3NFQWxyQnpEb1M7dUNBa3JCeUQsT0FyckJ6RDVSOzs7Ozs7Ozs7O3VDQXVyQjREO3dDQXhCTjt3Q0FETTt3Q0FGSDsrRUF0cEJ6RFI7d0NBcXBCNEQ7d0NBRkg7K0VBbnBCekRBO3dDQWtwQnNEO3dDQURIOzhGQWlDaUI7cUNBdEh0Qjs7OzswQ0FRUTs0Q0FrRUsscURBQXNCOzBDQWxFM0I7NENBOERROzs2Q0FGQTs7MkVBbm9COURvUzs0Q0Ftb0I4RCxPQXRvQjlENVI7Ozs7Ozs7Ozs7NENBd29COEQ7NkNBbENBOzZDQURBOzZDQUZBO29GQTdsQjlEUjs2Q0E0bEI4RDs2Q0FGQTtvRkExbEI5REE7NkNBd2xCOEQ7NkNBREg7bUdBNENXOzBDQS9EaEI7a0dBa0U0QjtxQ0ExRXBDOytGQXdINEI7Z0NBOUhwQzswRkEwSzRCOzJCQWhMcEM7cUZBdU40QjtzQkE1TnBDO2dGQTJQMkM7aUJBL1BuRDsyRUFpUXFDO2VBdFExQyxzQkFHb0IsUUFBSTtlQUh4Qjt1RUFzUTJDO1dBMVFwRDs7OztXQW9UWTs7UUE3d0JvQztTQXFkaEQwYTtVQUE4Qzs7Ozs7OztVQW1VOUM7OztjQVVxQix1REFBNEI7OztjQURiOztlQUE5QjtzREF0MkJOMWE7Y0FzMkJNLHVEQUFpRTtXQVR2RTs7OztXQVlZOztRQXB5Qm9DO1NBbXhCaERtZDtVQUFnRDs7Ozs7OztVQTJCaEQ7OztjQVVxQixzREFBMkI7OztjQURaOztlQUE5QjtzREE1M0JObmQ7Y0E0M0JNLHVEQUFpRTtXQVR2RTs7OztXQVlZOztRQTF6Qm9DO1NBMHlCaERvZDtVQUFzQzs7Ozs7OztVQTBCdEM7OztjQVVxQix1REFBNEI7OztjQURiOztlQUE5QjtzREFsNUJOcGQ7Y0FrNUJNLHVEQUFpRTtXQVR2RTs7OztXQVlZOztRQWgxQm9DO1NBZzBCaERxZDtVQUF1Qzs7Ozs7OztVQTBCdkM7OztjQUtNLHNCQXFaNkMsOEJBQWdCO2NBclo3RCxzQkFxWm9CLFFBQUs7Y0FyWnpCO2dCQWdWUTtrQkErREssYUFyekNuQmhMOzJCQXd6Q3VCOzJCQUVBLCtDQUErQjtnQkFwRXhDO2tCQXVDb0IsT0ExeENsQytKOzs7OztrQkFzeUM0Qjs7bUJBREg7MERBdHlDekJwYzttQkFxeUM0QjttQkFESDswREFweUN6QkE7bUJBbXlDc0I7bUJBREg7eUVBZWdCO2dCQTdEckI7Ozs7cUJBSVE7dUJBNkJLLGFBdnhDM0JxUztnQ0EweEMrQjtnQ0FFQSxpREFBK0I7cUJBbEN4Qzt1QkFJb0IsT0EzdkMxQytKOzs7Ozt1QkF1d0NvQzs7d0JBREg7K0RBdndDakNwYzt3QkFzd0NvQzt3QkFESDsrREFyd0NqQ0E7d0JBb3dDOEI7d0JBREg7OEVBZ0JlO3FCQTNCcEI7NkVBa0N5QztnQkF0Q2pEOzBFQW9FeUM7Y0FwWmpEO2dCQThTUTtrQkEyQkssYUEvdUNuQnFTOzJCQWt2Q3VCOzJCQUVBLCtDQUErQjtnQkFoQ3hDO2tCQUdvQixPQXB0Q2xDK0o7Ozs7O2tCQWd1QzRCOzttQkFESDswREFodUN6QnBjO21CQSt0QzRCO21CQURIOzBEQTl0Q3pCQTttQkE2dENzQjttQkFESDt5RUFlZ0I7Z0JBekJyQjt3RUFnQ3lDO2NBOVVqRDtnQkE0UVE7a0JBMkJLLGFBN3NDbkJxUzsyQkFndEN1QjsyQkFFQSwrQ0FBK0I7Z0JBaEN4QztrQkFHb0IsT0FsckNsQytKOzs7OztrQkE4ckM0Qjs7bUJBREg7MERBOXJDekJwYzttQkE2ckM0QjttQkFESDswREE1ckN6QkE7bUJBMnJDc0I7bUJBREg7eUVBZWdCO2dCQXpCckI7d0VBZ0N5QztjQTVTakQ7Z0JBc01RO2tCQStESyxhQTNxQ25CcVM7MkJBOHFDdUI7MkJBRUEsK0NBQStCO2dCQXBFeEM7a0JBdUNvQixPQWhwQ2xDK0o7Ozs7O2tCQTRwQzRCOzttQkFESDswREE1cEN6QnBjO21CQTJwQzRCO21CQURIOzBEQTFwQ3pCQTttQkF5cENzQjttQkFESDt5RUFlZ0I7Z0JBN0RyQjs7OztxQkFJUTt1QkE2QkssYUE3b0MzQnFTO2dDQWdwQytCO2dDQUVBLGlEQUErQjtxQkFsQ3hDO3VCQUlvQixPQWpuQzFDK0o7Ozs7O3VCQTZuQ29DOzt3QkFESDsrREE3bkNqQ3BjO3dCQTRuQ29DO3dCQURIOytEQTNuQ2pDQTt3QkEwbkM4Qjt3QkFESDs4RUFnQmU7cUJBM0JwQjs2RUFrQ3lDO2dCQXRDakQ7MEVBb0V5QztjQTFRakQ7Z0JBb0tRO2tCQTJCSyxhQXJtQ25CcVM7MkJBd21DdUI7MkJBRUEsK0NBQStCO2dCQWhDeEM7a0JBR29CLE9BMWtDbEMrSjs7Ozs7a0JBc2xDNEI7O21CQURIOzBEQXRsQ3pCcGM7bUJBcWxDNEI7bUJBREg7MERBcGxDekJBO21CQW1sQ3NCO21CQURIO3lFQWVnQjtnQkF6QnJCO3dFQWdDeUM7Y0FwTWpEO2dCQWtJUTtrQkEyQkssYUFua0NuQnFTOzJCQXNrQ3VCOzJCQUVBLCtDQUErQjtnQkFoQ3hDO2tCQUdvQixPQXhpQ2xDK0o7Ozs7O2tCQW9qQzRCOzttQkFESDswREFwakN6QnBjO21CQW1qQzRCO21CQURIOzBEQWxqQ3pCQTttQkFpakNzQjttQkFESDt5RUFlZ0I7Z0JBekJyQjt3RUFnQ3lDO2NBbEtqRDtnQkFrRVE7a0JBeURLLGFBamlDbkJxUzsyQkFvaUN1QjsyQkFFQSwrQ0FBK0I7Z0JBOUR4QztrQkFvQ29CLE9BemdDbEMrSjs7Ozs7a0JBa2hDeUI7O21CQURIOzBEQWxoQ3RCcGM7bUJBaWhDbUI7eUVBWWdCO2dCQXZEckI7Ozs7cUJBSVE7dUJBMEJLLGFBdGdDM0JxUztnQ0F5Z0MrQjtnQ0FFQSxpREFBK0I7cUJBL0J4Qzt1QkFJb0IsT0E3K0IxQytKOzs7Ozt1QkFzL0JpQzs7d0JBREg7K0RBdC9COUJwYzt3QkFxL0IyQjs4RUFhZTtxQkF4QnBCOzZFQStCeUM7Z0JBbkNqRDswRUE4RHlDO2NBaElqRDtnQkFtQ1E7a0JBd0JLLGFBaitCbkJxUzsyQkFvK0J1QjsyQkFFQSwrQ0FBK0I7Z0JBN0J4QztrQkFHb0IsT0F6OEJsQytKOzs7OztrQkFrOUJ5Qjs7bUJBREg7MERBbDlCdEJwYzttQkFpOUJtQjt5RUFZZ0I7Z0JBdEJyQjt3RUE2QnlDO2NBaEVqRDs7OzttQkFJUTtxQkF3QkssYUFsOEJuQnFTOzhCQXE4QnVCOzhCQUVBLCtDQUErQjttQkE3QnhDO3FCQUdvQixPQTE2QmxDK0o7Ozs7O3FCQW03QnlCOztzQkFESDs2REFuN0J0QnBjO3NCQWs3Qm1COzRFQVlnQjttQkF0QnJCOzJFQTZCeUM7Ozs7Ozs7OztjQWpDakQ7d0VBcVo4RDtpQ0F2Wi9DLFFBQUk7V0FIekI7Ozs7V0E0Wlk7O1FBdHZDb0M7U0FzMUJoRHNkO1VBQTRCOzs7Ozs7O1VBMGE1QjtpQ0FlTSxPQXg4Qk5KLGlDQXc4QjhFOzs7Y0FaekQsbURBVVY7V0FiWDs7OztXQWlCWTs7UUFqeENvQztTQTR2Q2hESztVQUF3Qzs7Ozs7OztVQWdDeEM7aUNBU3FCLE9BMTJDckJ2ZCxhQTAyQ21DOzs7Y0FOZCxtREFLd0M7V0FSN0Q7V0FKRTs7Ozs7Ozs7OztXQWVVOztRQU1oQjtVQUtJO2lDQWErQixPQXg0Qy9CMFIsMkJBdzRDMkQ7OztjQVZ0QyxtREFVVjtXQWJYO1dBSkU7Ozs7Ozs7Ozs7V0FtQlU7O1FBU2hCO1VBS0k7aUNBYStCLFFBQUk7OztjQVZkLG1EQVVWO1dBYlg7V0FKRTs7Ozs7Ozs7OztXQW1CVTs7UUFTaEI7VUFLSTtpQ0FjcUIsT0F0NkJyQjBFLDhCQXM2Qm9FOzs7Y0FYL0MsbURBVVY7V0FiWDtXQUpFOzs7Ozs7Ozs7O1dBb0JVOztRQTUzQ29DO1NBeTRDcUI7O1lBRmpDOzZDQXA3akJ0QzNFOzthQW8wakJFbUY7YUFzQkFDO2FBNkJBQzthQTZCQUM7U0E4QjRDOzBDQUE1Q2hVO1FBQTRDO1VBa0I1Qzs7O2NBcVNNLHNCQXdFNkMsOEJBQWdCO2NBeEU3RCxzQkF3RW9CLFFBQUs7Y0F4RXpCO2dCQWlEUTtrQkFrQlU7a0JBREg7O2dEQXQwRHJCcVA7bUJBdzBEcUI7a0JBREc7bUJBSUc7O2dEQTMwRDNCQTttQkEwMER3QzttQkFBaEI7bUJBRFk7MEVBRWlDO2dCQXRCdkQ7a0JBY1c7O21CQURIOzBEQS96RHRCcFM7bUJBOHpEeUI7bUJBREg7MERBN3pEdEJBO21CQTR6RG1CO3lFQUkwQztnQkFkL0M7d0VBc0J3RDtjQXZFaEU7Z0JBeUJRO2tCQWtCVTtrQkFESDs7Z0RBOXlEckJvUzttQkFnekRxQjtrQkFERzttQkFHZ0I7bUJBQWhCOzs7O3NCQXJ4Q3hCc0k7bUJBb3hDb0M7MEVBRTJCO2dCQXRCakQ7a0JBY1c7O21CQURIOzBEQXZ5RHRCMWE7bUJBc3lEeUI7bUJBREg7MERBcnlEdEJBO21CQW95RG1CO3lFQUl5QztnQkFkOUM7d0VBc0JrRDtjQS9DMUQ7Ozs7bUJBSVE7cUJBZVU7cUJBREg7O21EQXR4RHJCb1M7c0JBd3hEcUI7cUJBREc7c0JBR2dCO3NCQUFoQjs7Ozt5QkE3dkN4QnNJO3NCQTR2Q29DOzZFQUUyQjttQkFuQmpEO3FCQVdROztzQkFESDs2REEvd0RuQjFhO3FCQSt3RG1CLHVEQUNxQzttQkFYMUM7MkVBbUJrRDs7O2NBdkIxRDt3RUF3RThEO2lDQTFFL0MsUUFBSTs7OztlQS9SaEI7aUJBS0ssc0JBeVJvQiw4QkFBZ0I7aUJBelJwQyxzQkF3Um9CLFFBQUs7aUJBeFJ6QjttQkEwT1E7cUJBbUNjOzs7bURBcnZEcENvUztzQkFtdkRpRDtzQkFBaEI7c0JBRlk7c0JBQWY7c0JBV2E7c0JBRE07c0JBQWhCO3NCQUZZO3NCQUFmO3FCQUtFLDZDQWRBelIsUUFRQXNhOzs4QkFSQXRhLE9BZXNCO21CQTdDaEM7cUJBSW9CLE9BenREMUNIOzs7Ozs7Ozs7O3FCQXF1RG9DOztzQkFESDs2REE5dERqQ1I7c0JBNnREb0M7c0JBREg7NkRBNXREakNBO3NCQTJ0RDhCO3NCQURIOzRFQWlCdUM7bUJBNUI1QzsyRUE2Q2lDO2lCQXZSekM7bUJBMkxRO3FCQW1DYzs7O21EQXRzRHBDb1M7c0JBb3NEaUQ7c0JBQWhCO3NCQUZZO3NCQUFmO3NCQVdhO3NCQURNO3NCQUFoQjtzQkFGWTtzQkFBZjtxQkFLRSw2Q0FkQXpSLFFBUUFzYTs7OEJBUkF0YSxPQWVzQjttQkE3Q2hDO3FCQUlvQixPQTFxRDFDSDs7Ozs7Ozs7OztxQkFzckRvQzs7c0JBREg7NkRBL3FEakNSO3NCQThxRG9DO3NCQURIOzZEQTdxRGpDQTtzQkE0cUQ4QjtzQkFESDs0RUFpQnVDO21CQTVCNUM7MkVBNkNpQztpQkF4T3pDO21CQW1GUTtxQkE0RmM7OzttREF2cERwQ29TO3NCQXFwRGlEO3NCQUFoQjtzQkFGWTtzQkFBZjtzQkFXYTtzQkFETTtzQkFBaEI7c0JBRlk7c0JBQWY7cUJBS0UsNkNBZEF6UixRQVFBc2E7OzhCQVJBdGEsT0Flc0I7bUJBdEdoQztxQkE2RG9CLE9BM25EMUNIOzs7Ozs7Ozs7O3FCQXVvRG9DOztzQkFESDs2REFob0RqQ1I7c0JBK25Eb0M7c0JBREg7NkRBOW5EakNBO3NCQTZuRDhCO3NCQURIOzRFQWlCdUM7bUJBckY1Qzs7Ozt3QkFLUTswQkEyQ2M7Ozt3REEzbUQ1Q29TOzJCQXltRDRDOzJCQURIOzJCQURBOzJCQURIOzJCQWNNOzJCQUZBOzJCQURIOzJCQURBOzJCQURIOzBCQU9FLDZDQWpCQXpSLFFBU0FzYTs7bUNBVEF0YSxPQWtCMkI7d0JBdkRyQzswQkFLb0IsT0F4a0RsREg7Ozs7Ozs7Ozs7MEJBb2xENEM7OzJCQURIO2tFQTdrRHpDUjsyQkE0a0Q0QzsyQkFESDtrRUEza0R6Q0E7MkJBMGtEc0M7MkJBREg7aUZBdUJ1Qzt3QkFuQzVDO2dGQXVEc0M7bUJBNUQ5Qzs2RUFzR2lDO2lCQXpMekM7bUJBb0NRO3FCQW1DYzs7O21EQS9pRHBDb1M7c0JBNmlEaUQ7c0JBQWhCO3NCQUZZO3NCQUFmO3NCQVdhO3NCQURNO3NCQUFoQjtzQkFGWTtzQkFBZjtxQkFLRSw2Q0FkQXpSLFFBUUFzYTs7OEJBUkF0YSxPQWVzQjttQkE3Q2hDO3FCQUlvQixPQW5oRDFDSDs7Ozs7Ozs7OztxQkEraERvQzs7c0JBREg7NkRBeGhEakNSO3NCQXVoRG9DO3NCQURIOzZEQXRoRGpDQTtzQkFxaEQ4QjtzQkFESDs0RUFpQnVDO21CQTVCNUM7MkVBNkNpQztpQkFqRnpDOzs7O3NCQUlRO3dCQTRCdUI7O3lCQUFoQjs7Ozs0QkEzK0I3QjBhO3lCQTArQnlDO2dGQUcwQjtzQkE5QjdDO3dCQUlvQixPQW4vQzFDbGE7Ozs7Ozs7Ozs7d0JBNC9DaUM7O3lCQURIO2dFQXIvQzlCUjt5QkFvL0MyQjsrRUFjdUM7c0JBekI1Qzs4RUE4QjhDOzs7OztpQkFsQ3REOzJFQXlScUM7ZUE5UjFDLHNCQUdvQixRQUFJO2VBSHhCO3VFQThSMkM7V0FsU3BEOzs7O1dBK1dZOztRQXR3RG9DO1NBbTVDVjs7Ozs7Ozs7bUJBNlhsQ3dSO1lBQ0g7Y0FDRTs7O2tCQW1CVzs7bUJBREE7OztzQkFwQlZBO3NCQXQrQko0TDtrQkF5L0JXOzJCQUdBOzJCQUNBOzs2QkF2QlA1TDs2QkF0K0JKNEwsNEJBNi9Cb0U7OztrQkFsQjVDLG1EQVdWO2VBZFg7Ozs7OztlQXVCWTtjQTNZYyxZQWdaeUI7U0FsQ1c7Ozs7Ozs7O1VBdUNqRTtpQ0FjcUIsT0EvYXJCcEcsZ0NBK2FtRTs7O2NBWDlDLG1EQVVWO1dBYlg7Ozs7V0FnQlk7O1FBbjBEb0M7U0EreUR4Qjs7Ozs7Ozs7bUJBNkJwQlQ7WUFDSDtjQUNFOzs7a0JBaUJROzs7O3NCQXpnQ1grRztzQkE2akJBRTtrQkE0Y1c7MkRBbkJQakgscUJBb0I2RDs7O2tCQWZ6QyxtREFXVjtlQWRYOzs7Ozs7ZUFvQlk7Y0E1Q00sWUFpRGlDO1NBOUJaOzs7Ozs7OztVQW1DMUM7OztjQWlCVzs7OztrQkF2aUNYK0c7a0JBNmpCQUU7ZUF5ZVEsaURBN0VSQztjQTZFUTs7O3VCQWhvQlJGLDRCQW1vQm9DOzs7Y0FoQmYsbURBVVY7V0FiWDs7OztXQXFCWTs7UUFqNERvQztTQXcyRGxCOzs7Ozs7OzttQkFrQzFCaEg7WUFDSDtjQUNFOzs7a0JBeUJXOzs7Ozs7O3NCQTNCVkE7bUJBMEIrRDs7c0JBRnRCO3VEQXpGN0NHOzttQkFzRjJDOzs7Ozs7O21CQUZsQjtrQkFBZDs7OztzQkExb0NYeUc7b0JBaXFDYzs7Ozs7Ozt3QkExQ1Y1RztxQkF5QytEOzt3QkFGdEI7eURBeEc3Q0c7O3FCQXFHMkM7Ozs7Ozs7cUJBRjdCOzs7NkJBenBDZHlHOztrQkFzcUNXLHNEQUEyQjs7O2tCQTFDZCxtREFXVjtlQWRYOzs7Ozs7ZUErQ1k7Y0E1RU0sWUFpRmlDO1NBekREOzs7Ozs7OzttQkE4RGpEM0w7WUFDSDtjQUNFOzs7a0JBMkJTOzs7Ozs7O3NCQTdCUkE7bUJBNEJ1RDs7c0JBSGhDOzs7d0JBbE4zQnFFOzttQkE4TVk7Ozs7Ozs7bUJBSHlCOzttQkE0QnpCOzs7Ozs7c0JBNUJFdUI7bUJBMkJpQzs7c0JBSGxDOzs7d0JBeEdiVDs7bUJBb0dZOzs7Ozs7O21CQUh3QjttQkFtQnJCO21CQURXOztnREFuQ1pTLGNBaUJBc0c7a0JBa0JGOzJCQUVBOzJCQUNBO3VEQXRDRXRHLGNBaUJBc0csV0FxQnlDOzs7a0JBbkQvQixtREFXVjtlQWRYOzs7Ozs7ZUF3RFk7Y0FoSFMsWUFxSDhCO1NBbkVXOzs7Ozs7OzttQkF1RTdEbE07WUFDSDtjQUNFOzs7a0JBMkJTOzs7Ozs7O3NCQTdCUkE7bUJBNEJ1RDs7c0JBSGhDOzs7d0JBaEczQm1NOzttQkE0Rlk7Ozs7Ozs7bUJBSHlCOztrQkFpQnZCO3VEQWpCQXZHLGNBcG1FZGhDOzsyQkFvbUVjZ0MsYUFrQmlCOzs7a0JBL0JQLG1EQVdWO2VBZFg7Ozs7OztlQW9DWTtjQXBHUyxZQXlHOEI7U0E5Q0Y7Ozs7Ozs7O21CQW1EaEQ1RjtZQUNIO2NBQ0U7OztrQkEyQlM7Ozs7Ozs7c0JBN0JSQTttQkE0QjBDOztzQkFIakM7Ozt3QkE1RWJvTTs7bUJBd0VZOzs7Ozs7O21CQUh5Qjs7bUJBeUJ6Qjs7Ozs7O3NCQXpCRXhHO21CQXdCK0M7O3NCQUZsQzs7O3dCQTNsRTNCN0I7O21CQXdsRXlCOzs7Ozs7O21CQUZLO21CQWdCWjttQkFEWTt5REFoQ2hCNkIsY0FpQkFLO21CQWVDO21CQURIOzttQkFPRzttQkFEQTs7O3NCQVBEQztzQkFiQUQ7a0JBbUJGOzJCQUdBOzs2QkFURUM7NkJBYkFEOzJCQXVCRiwrQ0FBK0I7OztrQkFyRG5CLG1EQVdWO2VBZFg7Ozs7OztlQTBEWTtjQXZHUyxZQTRHOEI7U0FyRW1COzs7Ozs7OzttQkEyRXJFakc7WUFDSDtjQUNFOzs7a0JBc0JTOzs7Ozs7O3NCQXhCUkE7bUJBdUIrRDs7c0JBSHhDOzs7d0JBL0YzQm1HOzttQkEyRlk7Ozs7Ozs7bUJBSHlCOzs7MkJBQXZCUCxjQXZ0RWQ1VyxVQU1BUixjQW11RXVDOzs7a0JBMUJmLG1EQU1WO2VBVFg7Ozs7OztlQStCWTtjQW5HUyxZQXdHOEI7U0ExQ3ZDOzs7Ozs7OzttQkErQ1h3UjtZQUNIO2NBQ0U7OztrQkEyQlM7Ozs7Ozs7c0JBN0JSQTttQkE0QnVFOztzQkFIaEQ7Ozt3QkF6RTNCdUs7O21CQXFFWTs7Ozs7OzttQkFIeUI7O2tCQWlCdkI7OzRCQWpCQTNFOzRCQTUzQ2RpRzsyQkE4NENpQjsyQkFsQkhqRyxhQWtCa0Q7OztrQkEvQnhDLG1EQVdWO2VBZFg7Ozs7OztlQW9DWTtjQTVFUyxZQWlGOEI7U0EvQ0k7Ozs7Ozs7O2dCQTE2QjFEbUc7Z0JBdGFBRDtnQkE2akJBRTtnQkE0WkFDO2dCQXlEQTNGO2dCQThUQUQ7TUE1dEVZLHVDQW94RTZCO0lBejZwQjdCLFNBMjZwQmRnRywrQkFBZ0RBO01BQ2xEO3NDQURrREE7T0FDbEQsMEJBRGtEQTtPQUNsRCwrQkFEa0RBO09BQ2xELEtBRGtEQTtPQUNsRCxVQURrREE7T0FDbEQsY0FEa0RBO09BQ2xELHNCQURrREE7T0FDbEQsd0JBRGtEQTtPQUNsRCxvQkFEa0RBO09BQ2xELHNCQURrREE7T0FDbEQsK0JBRGtEQTtPQUNsRCxxQkFEa0RBO09BQ2xELHdCQURrREE7T0FDbEQsWUFEa0RBO09BQ2xELCtCQURrREE7TUFDbEQ7UUFvQkk7OztZQVdROzthQURZO3FFQUNpQjs7MEJBUmhCLG1EQUtWO1NBUlg7Ozs7U0FhWTs7TUFqQ2hCO09BZUlwRjtRQUFtQzs7O1FBNkJuQzsrQkFhK0IsT0F4RC9CckcseUJBd0R5RDs7MEJBVnBDLG1EQVVWO1NBYlg7U0FKRTs7Ozs7Ozs7OztTQW1CVTs7TUFVaEI7UUFNSTsrQkFhK0IsT0F0Ri9CQyw4QkFzRjhEOzswQkFWekMsbURBVVY7U0FiWDtTQUxFOzs7OztZQXRvcEJKbEc7Ozs7O1NBMHBwQmM7O01BMUZoQjtPQXlHMEM7O1VBSEk7MkNBcDFrQjVDdUc7YUFxeGtCRXVELCtCQThCQUM7T0ErQmlEO3NDQUFqRGpWO01BQWlEO1FBY2hDOztTQURILDRDQTVHZGpCOzs7O1NBK0cwQjs7TUFPZDtRQU9oQjtVQUtJO2lDQVNxQixPQTNJckJBLGFBMkltQzs7O2NBTmQsbURBS3dDO1dBUjdEO1dBSkU7Ozs7Ozs7Ozs7V0FlVTs7UUFNaEI7VUFLSTtpQ0FTcUIsT0FsS3JCUSxTQWtLK0I7OztjQU5WLG1EQUt3QztXQVI3RDtXQUpFOztrREFwc3BCSjRMOzs7O1dBbXRwQmM7O1FBYW9DOzs7WUFKRTs2Q0FybG1CcERnRjtlQXNpbUJFaUUsK0JBc0JBQztTQXNCMkQ7d0NBQTNEalQ7UUFBMkQ7VUFrQjNEOzs7Y0E2UU0sc0JBcUM2Qyw4QkFBZ0I7Y0FyQzdELHNCQXFDb0IsUUFBSztjQXJDekI7Ozs7bUJBSVE7cUJBZ0NLO3dEQWhmbkIrUCwwQkFnZnlEO21CQWhDM0M7cUJBOEJROztzQkFESDs2REF6ZW5CcFM7cUJBeWVtQix1REFDcUM7bUJBOUIxQzs7Ozt3QkFJUTswQkFpQks7NkRBcmUzQm9TLDBCQXFlaUU7d0JBakIzQzswQkFlVzs7MkJBREg7a0VBOWQ5QnBTOzJCQTZkaUM7MkJBREg7a0VBNWQ5QkE7MkJBMmQyQjtpRkFJeUM7d0JBZjlDO2dGQWlCNEM7bUJBckJwRDs2RUFnQzRDO2NBcENwRDt3RUFxQzhEO2lDQXZDL0MsUUFBSTs7OztlQXZRaEI7aUJBS0ssc0JBaVFvQiw4QkFBZ0I7aUJBalFwQyxzQkFnUW9CLFFBQUs7aUJBaFF6Qjs7OztzQkFJUTt3QkEyUG9CLHFEQUFzQjtzQkEzUDFDO3dCQTBQYzs7eUJBRkg7O3VEQXBjakNvUzt3QkFvY2lDLE9BamNqQzVSOzs7Ozs7Ozs7O3dCQW1jb0M7eUJBaEJOO3lCQURNO3lCQURIO2dFQWhiakNSO3lCQSthb0M7eUJBREg7Z0VBOWFqQ0E7eUJBNmE4Qjt5QkFESDsrRUFzQm9DO3NCQTFQekM7Ozs7MkJBS1E7NkJBdU5LLHFEQUFzQjsyQkF2TjNCOzZCQXFOYzs7OEJBRkg7OzREQXBhekNvUzs2QkFvYXlDLE9BamF6QzVSOzs7Ozs7Ozs7OzZCQW1hNEM7OEJBdkJOOzhCQURNOzhCQURIO3FFQXpZekNSOzhCQXdZNEM7OEJBREg7cUVBdll6Q0E7OEJBc1lzQzs4QkFESDtvRkE2Qm9DOzJCQXJOekM7Ozs7Z0NBTVE7a0NBMEtLLHFEQUFzQjtnQ0ExSzNCO2tDQXVLYzs7bUNBRkg7O2lFQTVYakRvUztrQ0E0WGlELE9BelhqRDVSOzs7Ozs7Ozs7O2tDQTJYb0Q7bUNBdkJOO21DQURNO21DQUZIOzBFQWhXakRSO21DQStWb0Q7bUNBRkg7MEVBN1ZqREE7bUNBNFY4QzttQ0FESDt5RkFnQ2lCO2dDQXhLdEI7Ozs7cUNBTVE7dUNBd0hLLHFEQUFzQjtxQ0F4SDNCO3VDQXFIYzs7d0NBRkg7O3NFQWhWekRvUzt1Q0FnVnlELE9BN1V6RDVSOzs7Ozs7Ozs7O3VDQStVNEQ7d0NBeEJOO3dDQURNO3dDQUZIOytFQW5UekRSO3dDQWtUNEQ7d0NBRkg7K0VBaFR6REE7d0NBK1NzRDt3Q0FESDs4RkFpQ2lCO3FDQXRIdEI7Ozs7MENBUVE7NENBa0VLLHFEQUFzQjswQ0FsRTNCOzRDQThEUTs7NkNBRkE7OzJFQWpTOURvUzs0Q0FpUzhELE9BOVI5RDVSOzs7Ozs7Ozs7OzRDQWdTOEQ7NkNBbENBOzZDQURBOzZDQUZBO29GQTFQOURSOzZDQXlQOEQ7NkNBRkE7b0ZBdlA5REE7NkNBcVA4RDs2Q0FESDttR0E0Q1c7MENBL0RoQjtrR0FrRTRCO3FDQTFFcEM7K0ZBd0g0QjtnQ0E5SHBDOzBGQTBLNEI7MkJBaExwQztxRkF1TjRCO3NCQTVOcEM7Z0ZBMlAyQztpQkEvUG5EOzJFQWlRcUM7ZUF0UTFDLHNCQUdvQixRQUFJO2VBSHhCO3VFQXNRMkM7V0ExUXBEOzs7O1dBb1RZOztRQS9Ub0M7U0FNaEQwYTtVQUE4Qzs7Ozs7OztVQW1VOUM7OztjQVVxQix3REFBeUI7OztjQURWOztlQUE5QjtzREFsZ0JOMWE7Y0FrZ0JNLHVEQUFpRTtXQVR2RTs7OztXQVlZOztRQXJWb0M7U0FxVWhEaWU7VUFBZ0M7Ozs7Ozs7VUEwQmhDOzs7Y0FVcUIseURBQTBCOzs7Y0FEWDs7ZUFBOUI7c0RBeGhCTmplO2NBd2hCTSx1REFBaUU7V0FUdkU7Ozs7V0FZWTs7UUEzV29DO1NBMlZoRGtlO1VBQWdDOzs7Ozs7O1VBMkJoQzs7O2NBVXFCLHVEQUE4Qjs7O2NBRGY7O2VBQTlCO3NEQS9pQk5sZTtjQStpQk0sdURBQWlFO1dBVHZFOzs7O1dBWVk7O1FBbFlvQztTQWlYaERtZTtVQUFzQzs7Ozs7OztVQTRCdEM7OztjQVVxQix1REFBNEI7OztjQURiOztlQUE5QjtzREF0a0JObmU7Y0Fza0JNLHVEQUFpRTtXQVR2RTs7OztXQVlZOztRQXpab0M7U0F3WWhEb2U7VUFBc0M7Ozs7Ozs7VUE0QnRDOzs7Y0FVcUIsdURBQTRCOzs7Y0FEYjs7ZUFBOUI7c0RBN2xCTnBlO2NBNmxCTSx1REFBaUU7V0FUdkU7Ozs7V0FZWTs7UUFoYm9DO1NBK1poRHFlO1VBQXNDOzs7Ozs7O1VBNEJ0Qzs7O2NBVXFCLHNEQUEyQjs7O2NBRFo7O2VBQTlCO3NEQXBuQk5yZTtjQW9uQk0sdURBQWlFO1dBVHZFOzs7O1dBWVk7O1FBdmNvQztTQXNiaERzZTtVQUFxQzs7Ozs7OztVQTBCcEI7O1dBREg7a0RBNW5CZHBHOzs7O1dBK25CMEI7O1FBT2Q7VUFPaEI7WUFJSTttQ0F1UnFCLFFBQUs7OztnQkFOTCxtREFLd0M7Ozs7aUJBbFJwRCxzQkE0UW9CLFFBQUk7aUJBNVF4QjttQkEyUVc7O29CQURIOztrREEvNUJqQkE7bUJBKzVCaUIsT0E5NUJqQkQ7Ozs7Ozs7Ozs7bUJBKzVCb0IsVUF0QkE7MEJBejRCcEJBOzs7OzttQkErNUJvQjtvQkFoQ0g7b0JBREg7MEVBaUN5QztpQkEzUTlDOzs7O3NCQUlRO3dCQUtLLHNCQXFOb0IsOEJBQWdCO3dCQXJOcEMsc0JBb05vQixRQUFLO3dCQXBOekI7Ozs7NkJBS1Esc0JBOE1vQixRQUFLOzZCQTlNekI7K0JBMktvQixPQWwxQmxEelg7Ozs7Ozs7Ozs7K0JBKzFCc0M7Ozs7O21DQXIxQnRDd2Q7Z0NBbzFCeUM7Z0NBREg7dUVBNTFCdENoZTtnQ0EyMUJtQztzRkF3QitFOzZCQTdNcEY7Ozs7a0NBTVEsc0JBb0tvQixRQUFLO2tDQXBLekI7b0NBMkhLLE9BeHlCM0NROzs7Ozs7Ozs7O29DQTJ6QjhDOzs7Ozt3Q0FqekI5Q3dkO3FDQWd6Qm9EO3FDQUZIOzRFQXZ6QmpEaGU7cUNBc3pCb0Q7cUNBRkg7NEVBcHpCakRBO3FDQW16QjhDO3FDQURIOzJGQTZCK0U7a0NBbktwRjs7Ozt1Q0FNUSxzQkFtSG9CLFFBQUs7dUNBbkh6Qjt5Q0E0RUssT0EvdkJuRFE7Ozs7Ozs7Ozs7eUNBK3dCc0Q7Ozs7OzZDQXJ3QnREd2Q7MENBb3dCeUQ7MENBRkg7aUZBM3dCdERoZTswQ0Ewd0JtRDtnR0EwQitFO3VDQWxIcEY7Ozs7NENBUVEsc0JBa0VLLFFBQUs7NENBbEVWOzhDQVVLLE9BcnNCM0RROzs7Ozs7Ozs7OzhDQTB0QjhEOzs7OztrREFodEI5RHdkOytDQStzQjhEOytDQUZBO3NGQXR0QjlEaGU7K0NBcXRCOEQ7K0NBRkE7c0ZBbnRCOURBOytDQWl0QjhEOytDQURIO3FHQXlDNEU7NENBL0RqRjtvR0FrRVc7dUNBMUVuQjtpR0FtSDBCO2tDQXpIbEM7NEZBb0swQjs2QkExS2xDO3VGQThNMEI7d0JBbk5sQztrRkFxTnFDO3NCQTFOMUMsc0JBRzBCLFFBQUk7c0JBSDlCOzhFQTBOMkM7aUJBOU5uRDsyRUE0UXlCO2FBaFJsQzs7Ozs7YUF5Ulk7O1VBN1JpQjs7Ozs7Ozs7O3FCQXVTekJ3ZSxZQUFxQnBNO2NBQ3hCO2dCQUNFOzs7b0JBS00sc0JBaXRINkMsOEJBQWdCO29CQWp0SDdELHNCQWl0SG9CLFFBQUs7b0JBanRIekI7c0JBOGlIUTt3QkFpQkssT0EvL0l0QitDOzsyQkFvZ0pnQzsyQkFESDs7eURBMWtISi9DOzRCQTRrSEksYUF0Z0o3QkM7cUNBeWdKa0M7cUNBRUE7MkJBTkYsVUFTRzsyQkFESDs7eURBbmxIUEQ7NEJBcWxITzsyQkFWQSxVQWFNOzJCQURIOzt5REF2bEhWQTs0QkF5bEhVOzJCQWRILFVBaUJTOzJCQURIOzt5REEzbEhiQTs0QkE2bEhhOzJCQWxCTixVQXVCWTsyQkFGSDs7eURBaG1IaEJBOzRCQW9tSGdCOzJCQXpCVCxVQThCZTsyQkFGSDs7eURBdm1IbkJBOzRCQTJtSG1COzJCQWhDWjs0QkEyQ3dCOzRCQUZIOzt5REFwbkg1QkE7NEJBbW5IeUI7NEJBRkE7NEJBREg7NEJBRkE7OzsyQkFhZjsyQkFESDs7eURBMW5ISkE7NEJBNG5ISSxhQXRqSjdCQztxQ0F5akprQztxQ0FFQTsyQkFORixVQVNHOzJCQURIOzt5REFub0hQRDs0QkFxb0hPOzJCQVZBLFVBYU07MkJBREg7O3lEQXZvSFZBOzRCQXlvSFU7MkJBZEgsVUFpQlM7MkJBREg7O3lEQTNvSGJBOzRCQTZvSGE7MkJBbEJOLFVBdUJZOzJCQUZIOzt5REFocEhoQkE7NEJBb3BIZ0I7MkJBekJULFVBOEJlOzJCQUZIOzt5REF2cEhuQkE7NEJBMnBIbUI7MkJBaENaOzRCQTJDd0I7NEJBRkg7O3lEQXBxSDVCQTs0QkFtcUh5Qjs0QkFGQTs0QkFESDs0QkFGQTs7OzJCQWFmOzJCQURIOzt5REExcUhKQTs0QkE0cUhJLGFBdG1KN0JDO3FDQXltSmtDO3FDQUVBOzJCQU5GLFVBU0c7MkJBREg7O3lEQW5ySFBEOzRCQXFySE87MkJBVkEsVUFhTTsyQkFESDs7eURBdnJIVkE7NEJBeXJIVTsyQkFkSCxVQWlCUzsyQkFESDs7eURBM3JIYkE7NEJBNnJIYTsyQkFsQk4sVUF1Qlk7MkJBRkg7O3lEQWhzSGhCQTs0QkFvc0hnQjsyQkF6QlQsVUE4QmU7MkJBRkg7O3lEQXZzSG5CQTs0QkEyc0htQjsyQkFoQ1o7NEJBMkN3Qjs0QkFGSDs7eURBcHRINUJBOzRCQW10SHlCOzRCQUZBOzRCQURIOzRCQUZBO29GQVN1QjtzQkFsS3JEO3dCQWVXOzt5QkFESDtnRUFua0hyQm9NO3lCQWtrSHdCO3lCQURIO2dFQXgvSXpCeGU7eUJBdS9Jc0I7K0VBSTBDO3NCQWYvQzs4RUFrS3NEO29CQWh0SDlEO3NCQXU0R1E7d0JBb0JLLE9BMzFJdEJtVjs7MkJBZzJJZ0M7MkJBREg7O3lEQXQ2R0ovQzs0QkF3NkdJLGFBbDJJN0JDO3FDQXEySWtDO3FDQUVBOzJCQU5GLFVBU0c7MkJBREg7O3lEQS82R1BEOzRCQWk3R087MkJBVkEsVUFhTTsyQkFESDs7eURBbjdHVkE7NEJBcTdHVTsyQkFkSCxVQWlCUzsyQkFESDs7eURBdjdHYkE7NEJBeTdHYTsyQkFsQk4sVUF1Qlk7MkJBRkg7O3lEQTU3R2hCQTs0QkFnOEdnQjsyQkF6QlQsVUE4QmU7MkJBRkg7O3lEQW44R25CQTs0QkF1OEdtQjsyQkFoQ1o7NEJBMkN3Qjs0QkFGSDs7eURBaDlHNUJBOzRCQSs4R3lCOzRCQUZBOzRCQURIOzRCQUZBOzs7MkJBYWY7MkJBREg7O3lEQXQ5R0pBOzRCQXc5R0ksYUFsNUk3QkM7cUNBcTVJa0M7cUNBRUE7MkJBTkYsVUFTRzsyQkFESDs7eURBLzlHUEQ7NEJBaStHTzsyQkFWQSxVQWFNOzJCQURIOzt5REFuK0dWQTs0QkFxK0dVOzJCQWRILFVBaUJTOzJCQURIOzt5REF2K0diQTs0QkF5K0dhOzJCQWxCTixVQXVCWTsyQkFGSDs7eURBNStHaEJBOzRCQWcvR2dCOzJCQXpCVCxVQThCZTsyQkFGSDs7eURBbi9HbkJBOzRCQXUvR21COzJCQWhDWjs0QkEyQ3dCOzRCQUZIOzt5REFoZ0g1QkE7NEJBKy9HeUI7NEJBRkE7NEJBREg7NEJBRkE7OzsyQkFhZjsyQkFESDs7eURBdGdISkE7NEJBd2dISSxhQWw4STdCQztxQ0FxOElrQztxQ0FFQTsyQkFORixVQVNHOzJCQURIOzt5REEvZ0hQRDs0QkFpaEhPOzJCQVZBLFVBYU07MkJBREg7O3lEQW5oSFZBOzRCQXFoSFU7MkJBZEgsVUFpQlM7MkJBREg7O3lEQXZoSGJBOzRCQXloSGE7MkJBbEJOLFVBdUJZOzJCQUZIOzt5REE1aEhoQkE7NEJBZ2lIZ0I7MkJBekJULFVBOEJlOzJCQUZIOzt5REFuaUhuQkE7NEJBdWlIbUI7MkJBaENaOzRCQTJDd0I7NEJBRkg7O3lEQWhqSDVCQTs0QkEraUh5Qjs0QkFGQTs0QkFESDs0QkFGQTtvRkFTdUI7c0JBcktyRDt3QkFrQmM7O3lCQURIO2dFQS81R3hCb007eUJBODVHMkI7eUJBREg7Z0VBNzVHeEJBO3lCQTQ1R3FCO3lCQURHO3lCQURIO2dFQWoxSXpCeGU7eUJBZzFJc0I7K0VBTzhDO3NCQWxCbkQ7OEVBcUtzRDtvQkE1aUg5RDtzQkFndUdRO3dCQW9CSyxPQXBySXRCbVY7OzJCQXlySWdDOzJCQURIOzt5REEvdkdKL0M7NEJBaXdHSSxhQTNySTdCQztxQ0E4cklrQztxQ0FFQTsyQkFORixVQVNHOzJCQURIOzt5REF4d0dQRDs0QkEwd0dPOzJCQVZBLFVBYU07MkJBREg7O3lEQTV3R1ZBOzRCQTh3R1U7MkJBZEgsVUFpQlM7MkJBREg7O3lEQWh4R2JBOzRCQWt4R2E7MkJBbEJOLFVBdUJZOzJCQUZIOzt5REFyeEdoQkE7NEJBeXhHZ0I7MkJBekJULFVBOEJlOzJCQUZIOzt5REE1eEduQkE7NEJBZ3lHbUI7MkJBaENaOzRCQTJDd0I7NEJBRkg7O3lEQXp5RzVCQTs0QkF3eUd5Qjs0QkFGQTs0QkFESDs0QkFGQTs7OzJCQWFmOzJCQURIOzt5REEveUdKQTs0QkFpekdJLGFBM3VJN0JDO3FDQTh1SWtDO3FDQUVBOzJCQU5GLFVBU0c7MkJBREg7O3lEQXh6R1BEOzRCQTB6R087MkJBVkEsVUFhTTsyQkFESDs7eURBNXpHVkE7NEJBOHpHVTsyQkFkSCxVQWlCUzsyQkFESDs7eURBaDBHYkE7NEJBazBHYTsyQkFsQk4sVUF1Qlk7MkJBRkg7O3lEQXIwR2hCQTs0QkF5MEdnQjsyQkF6QlQsVUE4QmU7MkJBRkg7O3lEQTUwR25CQTs0QkFnMUdtQjsyQkFoQ1o7NEJBMkN3Qjs0QkFGSDs7eURBejFHNUJBOzRCQXcxR3lCOzRCQUZBOzRCQURIOzRCQUZBOzs7MkJBYWY7MkJBREg7O3lEQS8xR0pBOzRCQWkyR0ksYUEzeEk3QkM7cUNBOHhJa0M7cUNBRUE7MkJBTkYsVUFTRzsyQkFESDs7eURBeDJHUEQ7NEJBMDJHTzsyQkFWQSxVQWFNOzJCQURIOzt5REE1MkdWQTs0QkE4MkdVOzJCQWRILFVBaUJTOzJCQURIOzt5REFoM0diQTs0QkFrM0dhOzJCQWxCTixVQXVCWTsyQkFGSDs7eURBcjNHaEJBOzRCQXkzR2dCOzJCQXpCVCxVQThCZTsyQkFGSDs7eURBNTNHbkJBOzRCQWc0R21COzJCQWhDWjs0QkEyQ3dCOzRCQUZIOzt5REF6NEc1QkE7NEJBdzRHeUI7NEJBRkE7NEJBREg7NEJBRkE7b0ZBU3VCO3NCQXJLckQ7d0JBa0JjOzt5QkFESDtnRUF4dkd4Qm9NO3lCQXV2RzJCO3lCQURIO2dFQXR2R3hCQTt5QkFxdkdxQjt5QkFERzt5QkFESDtnRUExcUl6QnhlO3lCQXlxSXNCOytFQU84QztzQkFsQm5EOzhFQXFLc0Q7b0JBcjRHOUQ7c0JBeWpHUTt3QkFvQkssT0E3Z0l0Qm1WOzsyQkFraElnQzsyQkFESDs7eURBeGxHSi9DOzRCQTBsR0ksYUFwaEk3QkM7cUNBdWhJa0M7cUNBRUE7MkJBTkYsVUFTRzsyQkFESDs7eURBam1HUEQ7NEJBbW1HTzsyQkFWQSxVQWFNOzJCQURIOzt5REFybUdWQTs0QkF1bUdVOzJCQWRILFVBaUJTOzJCQURIOzt5REF6bUdiQTs0QkEybUdhOzJCQWxCTixVQXVCWTsyQkFGSDs7eURBOW1HaEJBOzRCQWtuR2dCOzJCQXpCVCxVQThCZTsyQkFGSDs7eURBcm5HbkJBOzRCQXluR21COzJCQWhDWjs0QkEyQ3dCOzRCQUZIOzt5REFsb0c1QkE7NEJBaW9HeUI7NEJBRkE7NEJBREg7NEJBRkE7OzsyQkFhZjsyQkFESDs7eURBeG9HSkE7NEJBMG9HSSxhQXBrSTdCQztxQ0F1a0lrQztxQ0FFQTsyQkFORixVQVNHOzJCQURIOzt5REFqcEdQRDs0QkFtcEdPOzJCQVZBLFVBYU07MkJBREg7O3lEQXJwR1ZBOzRCQXVwR1U7MkJBZEgsVUFpQlM7MkJBREg7O3lEQXpwR2JBOzRCQTJwR2E7MkJBbEJOLFVBdUJZOzJCQUZIOzt5REE5cEdoQkE7NEJBa3FHZ0I7MkJBekJULFVBOEJlOzJCQUZIOzt5REFycUduQkE7NEJBeXFHbUI7MkJBaENaOzRCQTJDd0I7NEJBRkg7O3lEQWxyRzVCQTs0QkFpckd5Qjs0QkFGQTs0QkFESDs0QkFGQTs7OzJCQWFmOzJCQURIOzt5REF4ckdKQTs0QkEwckdJLGFBcG5JN0JDO3FDQXVuSWtDO3FDQUVBOzJCQU5GLFVBU0c7MkJBREg7O3lEQWpzR1BEOzRCQW1zR087MkJBVkEsVUFhTTsyQkFESDs7eURBcnNHVkE7NEJBdXNHVTsyQkFkSCxVQWlCUzsyQkFESDs7eURBenNHYkE7NEJBMnNHYTsyQkFsQk4sVUF1Qlk7MkJBRkg7O3lEQTlzR2hCQTs0QkFrdEdnQjsyQkF6QlQsVUE4QmU7MkJBRkg7O3lEQXJ0R25CQTs0QkF5dEdtQjsyQkFoQ1o7NEJBMkN3Qjs0QkFGSDs7eURBbHVHNUJBOzRCQWl1R3lCOzRCQUZBOzRCQURIOzRCQUZBO29GQVN1QjtzQkFyS3JEO3dCQWtCYzs7eUJBREg7Z0VBamxHeEJvTTt5QkFnbEcyQjt5QkFESDtnRUEva0d4QkE7eUJBOGtHcUI7eUJBREc7eUJBREg7Z0VBbmdJekJ4ZTt5QkFrZ0lzQjsrRUFPOEM7c0JBbEJuRDs4RUFxS3NEO29CQTl0RzlEO3NCQWs1RlE7d0JBb0JLLE9BdDJIdEJtVjs7MkJBMjJIZ0M7MkJBREg7O3lEQWo3RkovQzs0QkFtN0ZJLGFBNzJIN0JDO3FDQWczSGtDO3FDQUVBOzJCQU5GLFVBU0c7MkJBREg7O3lEQTE3RlBEOzRCQTQ3Rk87MkJBVkEsVUFhTTsyQkFESDs7eURBOTdGVkE7NEJBZzhGVTsyQkFkSCxVQWlCUzsyQkFESDs7eURBbDhGYkE7NEJBbzhGYTsyQkFsQk4sVUF1Qlk7MkJBRkg7O3lEQXY4RmhCQTs0QkEyOEZnQjsyQkF6QlQsVUE4QmU7MkJBRkg7O3lEQTk4Rm5CQTs0QkFrOUZtQjsyQkFoQ1o7NEJBMkN3Qjs0QkFGSDs7eURBMzlGNUJBOzRCQTA5RnlCOzRCQUZBOzRCQURIOzRCQUZBOzs7MkJBYWY7MkJBREg7O3lEQWorRkpBOzRCQW0rRkksYUE3NUg3QkM7cUNBZzZIa0M7cUNBRUE7MkJBTkYsVUFTRzsyQkFESDs7eURBMStGUEQ7NEJBNCtGTzsyQkFWQSxVQWFNOzJCQURIOzt5REE5K0ZWQTs0QkFnL0ZVOzJCQWRILFVBaUJTOzJCQURIOzt5REFsL0ZiQTs0QkFvL0ZhOzJCQWxCTixVQXVCWTsyQkFGSDs7eURBdi9GaEJBOzRCQTIvRmdCOzJCQXpCVCxVQThCZTsyQkFGSDs7eURBOS9GbkJBOzRCQWtnR21COzJCQWhDWjs0QkEyQ3dCOzRCQUZIOzt5REEzZ0c1QkE7NEJBMGdHeUI7NEJBRkE7NEJBREg7NEJBRkE7OzsyQkFhZjsyQkFESDs7eURBamhHSkE7NEJBbWhHSSxhQTc4SDdCQztxQ0FnOUhrQztxQ0FFQTsyQkFORixVQVNHOzJCQURIOzt5REExaEdQRDs0QkE0aEdPOzJCQVZBLFVBYU07MkJBREg7O3lEQTloR1ZBOzRCQWdpR1U7MkJBZEgsVUFpQlM7MkJBREg7O3lEQWxpR2JBOzRCQW9pR2E7MkJBbEJOLFVBdUJZOzJCQUZIOzt5REF2aUdoQkE7NEJBMmlHZ0I7MkJBekJULFVBOEJlOzJCQUZIOzt5REE5aUduQkE7NEJBa2pHbUI7MkJBaENaOzRCQTJDd0I7NEJBRkg7O3lEQTNqRzVCQTs0QkEwakd5Qjs0QkFGQTs0QkFESDs0QkFGQTtvRkFTdUI7c0JBcktyRDt3QkFrQmM7O3lCQURIO2dFQTE2RnhCb007eUJBeTZGMkI7eUJBREg7Z0VBeDZGeEJBO3lCQXU2RnFCO3lCQURHO3lCQURIO2dFQTUxSHpCeGU7eUJBMjFIc0I7K0VBTzhDO3NCQWxCbkQ7OEVBcUtzRDtvQkF2akc5RDtzQkEydUZRO3dCQW9CSyxPQS9ySHRCbVY7OzJCQW9zSGdDOzJCQURIOzt5REExd0ZKL0M7NEJBNHdGSSxhQXRzSDdCQztxQ0F5c0hrQztxQ0FFQTsyQkFORixVQVNHOzJCQURIOzt5REFueEZQRDs0QkFxeEZPOzJCQVZBLFVBYU07MkJBREg7O3lEQXZ4RlZBOzRCQXl4RlU7MkJBZEgsVUFpQlM7MkJBREg7O3lEQTN4RmJBOzRCQTZ4RmE7MkJBbEJOLFVBdUJZOzJCQUZIOzt5REFoeUZoQkE7NEJBb3lGZ0I7MkJBekJULFVBOEJlOzJCQUZIOzt5REF2eUZuQkE7NEJBMnlGbUI7MkJBaENaOzRCQTJDd0I7NEJBRkg7O3lEQXB6RjVCQTs0QkFtekZ5Qjs0QkFGQTs0QkFESDs0QkFGQTs7OzJCQWFmOzJCQURIOzt5REExekZKQTs0QkE0ekZJLGFBdHZIN0JDO3FDQXl2SGtDO3FDQUVBOzJCQU5GLFVBU0c7MkJBREg7O3lEQW4wRlBEOzRCQXEwRk87MkJBVkEsVUFhTTsyQkFESDs7eURBdjBGVkE7NEJBeTBGVTsyQkFkSCxVQWlCUzsyQkFESDs7eURBMzBGYkE7NEJBNjBGYTsyQkFsQk4sVUF1Qlk7MkJBRkg7O3lEQWgxRmhCQTs0QkFvMUZnQjsyQkF6QlQsVUE4QmU7MkJBRkg7O3lEQXYxRm5CQTs0QkEyMUZtQjsyQkFoQ1o7NEJBMkN3Qjs0QkFGSDs7eURBcDJGNUJBOzRCQW0yRnlCOzRCQUZBOzRCQURIOzRCQUZBOzs7MkJBYWY7MkJBREg7O3lEQTEyRkpBOzRCQTQyRkksYUF0eUg3QkM7cUNBeXlIa0M7cUNBRUE7MkJBTkYsVUFTRzsyQkFESDs7eURBbjNGUEQ7NEJBcTNGTzsyQkFWQSxVQWFNOzJCQURIOzt5REF2M0ZWQTs0QkF5M0ZVOzJCQWRILFVBaUJTOzJCQURIOzt5REEzM0ZiQTs0QkE2M0ZhOzJCQWxCTixVQXVCWTsyQkFGSDs7eURBaDRGaEJBOzRCQW80RmdCOzJCQXpCVCxVQThCZTsyQkFGSDs7eURBdjRGbkJBOzRCQTI0Rm1COzJCQWhDWjs0QkEyQ3dCOzRCQUZIOzt5REFwNUY1QkE7NEJBbTVGeUI7NEJBRkE7NEJBREg7NEJBRkE7b0ZBU3VCO3NCQXJLckQ7d0JBa0JjOzt5QkFESDtnRUFud0Z4Qm9NO3lCQWt3RjJCO3lCQURIO2dFQWp3RnhCQTt5QkFnd0ZxQjt5QkFERzt5QkFESDtnRUFyckh6QnhlO3lCQW9ySHNCOytFQU82QztzQkFsQmxEOzhFQXFLc0Q7b0JBaDVGOUQ7c0JBb2tGUTt3QkFvQkssT0F4aEh0Qm1WOzsyQkE2aEhnQzsyQkFESDs7eURBbm1GSi9DOzRCQXFtRkksYUEvaEg3QkM7cUNBa2lIa0M7cUNBRUE7MkJBTkYsVUFTRzsyQkFESDs7eURBNW1GUEQ7NEJBOG1GTzsyQkFWQSxVQWFNOzJCQURIOzt5REFobkZWQTs0QkFrbkZVOzJCQWRILFVBaUJTOzJCQURIOzt5REFwbkZiQTs0QkFzbkZhOzJCQWxCTixVQXVCWTsyQkFGSDs7eURBem5GaEJBOzRCQTZuRmdCOzJCQXpCVCxVQThCZTsyQkFGSDs7eURBaG9GbkJBOzRCQW9vRm1COzJCQWhDWjs0QkEyQ3dCOzRCQUZIOzt5REE3b0Y1QkE7NEJBNG9GeUI7NEJBRkE7NEJBREg7NEJBRkE7OzsyQkFhZjsyQkFESDs7eURBbnBGSkE7NEJBcXBGSSxhQS9rSDdCQztxQ0FrbEhrQztxQ0FFQTsyQkFORixVQVNHOzJCQURIOzt5REE1cEZQRDs0QkE4cEZPOzJCQVZBLFVBYU07MkJBREg7O3lEQWhxRlZBOzRCQWtxRlU7MkJBZEgsVUFpQlM7MkJBREg7O3lEQXBxRmJBOzRCQXNxRmE7MkJBbEJOLFVBdUJZOzJCQUZIOzt5REF6cUZoQkE7NEJBNnFGZ0I7MkJBekJULFVBOEJlOzJCQUZIOzt5REFockZuQkE7NEJBb3JGbUI7MkJBaENaOzRCQTJDd0I7NEJBRkg7O3lEQTdyRjVCQTs0QkE0ckZ5Qjs0QkFGQTs0QkFESDs0QkFGQTs7OzJCQWFmOzJCQURIOzt5REFuc0ZKQTs0QkFxc0ZJLGFBL25IN0JDO3FDQWtvSGtDO3FDQUVBOzJCQU5GLFVBU0c7MkJBREg7O3lEQTVzRlBEOzRCQThzRk87MkJBVkEsVUFhTTsyQkFESDs7eURBaHRGVkE7NEJBa3RGVTsyQkFkSCxVQWlCUzsyQkFESDs7eURBcHRGYkE7NEJBc3RGYTsyQkFsQk4sVUF1Qlk7MkJBRkg7O3lEQXp0RmhCQTs0QkE2dEZnQjsyQkF6QlQsVUE4QmU7MkJBRkg7O3lEQWh1Rm5CQTs0QkFvdUZtQjsyQkFoQ1o7NEJBMkN3Qjs0QkFGSDs7eURBN3VGNUJBOzRCQTR1RnlCOzRCQUZBOzRCQURIOzRCQUZBO29GQVN1QjtzQkFyS3JEO3dCQWtCYzs7eUJBREg7Z0VBNWxGeEJvTTt5QkEybEYyQjt5QkFESDtnRUExbEZ4QkE7eUJBeWxGcUI7eUJBREc7eUJBREg7Z0VBOWdIekJ4ZTt5QkE2Z0hzQjsrRUFPNkM7c0JBbEJsRDs4RUFxS3NEO29CQXp1RjlEO3NCQTY1RVE7d0JBb0JLLE9BajNHdEJtVjs7MkJBczNHZ0M7MkJBREg7O3lEQTU3RUovQzs0QkE4N0VJLGFBeDNHN0JDO3FDQTIzR2tDO3FDQUVBOzJCQU5GLFVBU0c7MkJBREg7O3lEQXI4RVBEOzRCQXU4RU87MkJBVkEsVUFhTTsyQkFESDs7eURBejhFVkE7NEJBMjhFVTsyQkFkSCxVQWlCUzsyQkFESDs7eURBNzhFYkE7NEJBKzhFYTsyQkFsQk4sVUF1Qlk7MkJBRkg7O3lEQWw5RWhCQTs0QkFzOUVnQjsyQkF6QlQsVUE4QmU7MkJBRkg7O3lEQXo5RW5CQTs0QkE2OUVtQjsyQkFoQ1o7NEJBMkN3Qjs0QkFGSDs7eURBdCtFNUJBOzRCQXErRXlCOzRCQUZBOzRCQURIOzRCQUZBOzs7MkJBYWY7MkJBREg7O3lEQTUrRUpBOzRCQTgrRUksYUF4Nkc3QkM7cUNBMjZHa0M7cUNBRUE7MkJBTkYsVUFTRzsyQkFESDs7eURBci9FUEQ7NEJBdS9FTzsyQkFWQSxVQWFNOzJCQURIOzt5REF6L0VWQTs0QkEyL0VVOzJCQWRILFVBaUJTOzJCQURIOzt5REE3L0ViQTs0QkErL0VhOzJCQWxCTixVQXVCWTsyQkFGSDs7eURBbGdGaEJBOzRCQXNnRmdCOzJCQXpCVCxVQThCZTsyQkFGSDs7eURBemdGbkJBOzRCQTZnRm1COzJCQWhDWjs0QkEyQ3dCOzRCQUZIOzt5REF0aEY1QkE7NEJBcWhGeUI7NEJBRkE7NEJBREg7NEJBRkE7OzsyQkFhZjsyQkFESDs7eURBNWhGSkE7NEJBOGhGSSxhQXg5RzdCQztxQ0EyOUdrQztxQ0FFQTsyQkFORixVQVNHOzJCQURIOzt5REFyaUZQRDs0QkF1aUZPOzJCQVZBLFVBYU07MkJBREg7O3lEQXppRlZBOzRCQTJpRlU7MkJBZEgsVUFpQlM7MkJBREg7O3lEQTdpRmJBOzRCQStpRmE7MkJBbEJOLFVBdUJZOzJCQUZIOzt5REFsakZoQkE7NEJBc2pGZ0I7MkJBekJULFVBOEJlOzJCQUZIOzt5REF6akZuQkE7NEJBNmpGbUI7MkJBaENaOzRCQTJDd0I7NEJBRkg7O3lEQXRrRjVCQTs0QkFxa0Z5Qjs0QkFGQTs0QkFESDs0QkFGQTtvRkFTdUI7c0JBcktyRDt3QkFrQmM7O3lCQURIO2dFQXI3RXhCb007eUJBbzdFMkI7eUJBREg7Z0VBbjdFeEJBO3lCQWs3RXFCO3lCQURHO3lCQURIO2dFQXYyR3pCeGU7eUJBczJHc0I7K0VBTzZDO3NCQWxCbEQ7OEVBcUtzRDtvQkFsa0Y5RDtzQkFzdkVRO3dCQW9CSyxPQTFzR3RCbVY7OzJCQStzR2dDOzJCQURIOzt5REFyeEVKL0M7NEJBdXhFSSxhQWp0RzdCQztxQ0FvdEdrQztxQ0FFQTsyQkFORixVQVNHOzJCQURIOzt5REE5eEVQRDs0QkFneUVPOzJCQVZBLFVBYU07MkJBREg7O3lEQWx5RVZBOzRCQW95RVU7MkJBZEgsVUFpQlM7MkJBREg7O3lEQXR5RWJBOzRCQXd5RWE7MkJBbEJOLFVBdUJZOzJCQUZIOzt5REEzeUVoQkE7NEJBK3lFZ0I7MkJBekJULFVBOEJlOzJCQUZIOzt5REFsekVuQkE7NEJBc3pFbUI7MkJBaENaOzRCQTJDd0I7NEJBRkg7O3lEQS96RTVCQTs0QkE4ekV5Qjs0QkFGQTs0QkFESDs0QkFGQTs7OzJCQWFmOzJCQURIOzt5REFyMEVKQTs0QkF1MEVJLGFBandHN0JDO3FDQW93R2tDO3FDQUVBOzJCQU5GLFVBU0c7MkJBREg7O3lEQTkwRVBEOzRCQWcxRU87MkJBVkEsVUFhTTsyQkFESDs7eURBbDFFVkE7NEJBbzFFVTsyQkFkSCxVQWlCUzsyQkFESDs7eURBdDFFYkE7NEJBdzFFYTsyQkFsQk4sVUF1Qlk7MkJBRkg7O3lEQTMxRWhCQTs0QkErMUVnQjsyQkF6QlQsVUE4QmU7MkJBRkg7O3lEQWwyRW5CQTs0QkFzMkVtQjsyQkFoQ1o7NEJBMkN3Qjs0QkFGSDs7eURBLzJFNUJBOzRCQTgyRXlCOzRCQUZBOzRCQURIOzRCQUZBOzs7MkJBYWY7MkJBREg7O3lEQXIzRUpBOzRCQXUzRUksYUFqekc3QkM7cUNBb3pHa0M7cUNBRUE7MkJBTkYsVUFTRzsyQkFESDs7eURBOTNFUEQ7NEJBZzRFTzsyQkFWQSxVQWFNOzJCQURIOzt5REFsNEVWQTs0QkFvNEVVOzJCQWRILFVBaUJTOzJCQURIOzt5REF0NEViQTs0QkF3NEVhOzJCQWxCTixVQXVCWTsyQkFGSDs7eURBMzRFaEJBOzRCQSs0RWdCOzJCQXpCVCxVQThCZTsyQkFGSDs7eURBbDVFbkJBOzRCQXM1RW1COzJCQWhDWjs0QkEyQ3dCOzRCQUZIOzt5REEvNUU1QkE7NEJBODVFeUI7NEJBRkE7NEJBREg7NEJBRkE7b0ZBU3VCO3NCQXJLckQ7d0JBa0JjOzt5QkFESDtnRUE5d0V4Qm9NO3lCQTZ3RTJCO3lCQURIO2dFQTV3RXhCQTt5QkEyd0VxQjt5QkFERzt5QkFESDtnRUFoc0d6QnhlO3lCQStyR3NCOytFQU82QztzQkFsQmxEOzhFQXFLc0Q7b0JBMzVFOUQ7c0JBK2tFUTt3QkFvQkssT0FuaUd0Qm1WOzsyQkF3aUdnQzsyQkFESDs7eURBOW1FSi9DOzRCQWduRUksYUExaUc3QkM7cUNBNmlHa0M7cUNBRUE7MkJBTkYsVUFTRzsyQkFESDs7eURBdm5FUEQ7NEJBeW5FTzsyQkFWQSxVQWFNOzJCQURIOzt5REEzbkVWQTs0QkE2bkVVOzJCQWRILFVBaUJTOzJCQURIOzt5REEvbkViQTs0QkFpb0VhOzJCQWxCTixVQXVCWTsyQkFGSDs7eURBcG9FaEJBOzRCQXdvRWdCOzJCQXpCVCxVQThCZTsyQkFGSDs7eURBM29FbkJBOzRCQStvRW1COzJCQWhDWjs0QkEyQ3dCOzRCQUZIOzt5REF4cEU1QkE7NEJBdXBFeUI7NEJBRkE7NEJBREg7NEJBRkE7OzsyQkFhZjsyQkFESDs7eURBOXBFSkE7NEJBZ3FFSSxhQTFsRzdCQztxQ0E2bEdrQztxQ0FFQTsyQkFORixVQVNHOzJCQURIOzt5REF2cUVQRDs0QkF5cUVPOzJCQVZBLFVBYU07MkJBREg7O3lEQTNxRVZBOzRCQTZxRVU7MkJBZEgsVUFpQlM7MkJBREg7O3lEQS9xRWJBOzRCQWlyRWE7MkJBbEJOLFVBdUJZOzJCQUZIOzt5REFwckVoQkE7NEJBd3JFZ0I7MkJBekJULFVBOEJlOzJCQUZIOzt5REEzckVuQkE7NEJBK3JFbUI7MkJBaENaOzRCQTJDd0I7NEJBRkg7O3lEQXhzRTVCQTs0QkF1c0V5Qjs0QkFGQTs0QkFESDs0QkFGQTs7OzJCQWFmOzJCQURIOzt5REE5c0VKQTs0QkFndEVJLGFBMW9HN0JDO3FDQTZvR2tDO3FDQUVBOzJCQU5GLFVBU0c7MkJBREg7O3lEQXZ0RVBEOzRCQXl0RU87MkJBVkEsVUFhTTsyQkFESDs7eURBM3RFVkE7NEJBNnRFVTsyQkFkSCxVQWlCUzsyQkFESDs7eURBL3RFYkE7NEJBaXVFYTsyQkFsQk4sVUF1Qlk7MkJBRkg7O3lEQXB1RWhCQTs0QkF3dUVnQjsyQkF6QlQsVUE4QmU7MkJBRkg7O3lEQTN1RW5CQTs0QkErdUVtQjsyQkFoQ1o7NEJBMkN3Qjs0QkFGSDs7eURBeHZFNUJBOzRCQXV2RXlCOzRCQUZBOzRCQURIOzRCQUZBO29GQVN1QjtzQkFyS3JEO3dCQWtCYzs7eUJBREg7Z0VBdm1FeEJvTTt5QkFzbUUyQjt5QkFESDtnRUFybUV4QkE7eUJBb21FcUI7eUJBREc7eUJBREg7Z0VBemhHekJ4ZTt5QkF3aEdzQjsrRUFPNkM7c0JBbEJsRDs4RUFxS3NEO29CQXB2RTlEO3NCQXc2RFE7d0JBb0JLLE9BNTNGdEJtVjs7MkJBaTRGZ0M7MkJBREg7O3lEQXY4REovQzs0QkF5OERJLGFBbjRGN0JDO3FDQXM0RmtDO3FDQUVBOzJCQU5GLFVBU0c7MkJBREg7O3lEQWg5RFBEOzRCQWs5RE87MkJBVkEsVUFhTTsyQkFESDs7eURBcDlEVkE7NEJBczlEVTsyQkFkSCxVQWlCUzsyQkFESDs7eURBeDlEYkE7NEJBMDlEYTsyQkFsQk4sVUF1Qlk7MkJBRkg7O3lEQTc5RGhCQTs0QkFpK0RnQjsyQkF6QlQsVUE4QmU7MkJBRkg7O3lEQXArRG5CQTs0QkF3K0RtQjsyQkFoQ1o7NEJBMkN3Qjs0QkFGSDs7eURBai9ENUJBOzRCQWcvRHlCOzRCQUZBOzRCQURIOzRCQUZBOzs7MkJBYWY7MkJBREg7O3lEQXYvREpBOzRCQXkvREksYUFuN0Y3QkM7cUNBczdGa0M7cUNBRUE7MkJBTkYsVUFTRzsyQkFESDs7eURBaGdFUEQ7NEJBa2dFTzsyQkFWQSxVQWFNOzJCQURIOzt5REFwZ0VWQTs0QkFzZ0VVOzJCQWRILFVBaUJTOzJCQURIOzt5REF4Z0ViQTs0QkEwZ0VhOzJCQWxCTixVQXVCWTsyQkFGSDs7eURBN2dFaEJBOzRCQWloRWdCOzJCQXpCVCxVQThCZTsyQkFGSDs7eURBcGhFbkJBOzRCQXdoRW1COzJCQWhDWjs0QkEyQ3dCOzRCQUZIOzt5REFqaUU1QkE7NEJBZ2lFeUI7NEJBRkE7NEJBREg7NEJBRkE7OzsyQkFhZjsyQkFESDs7eURBdmlFSkE7NEJBeWlFSSxhQW4rRjdCQztxQ0FzK0ZrQztxQ0FFQTsyQkFORixVQVNHOzJCQURIOzt5REFoakVQRDs0QkFrakVPOzJCQVZBLFVBYU07MkJBREg7O3lEQXBqRVZBOzRCQXNqRVU7MkJBZEgsVUFpQlM7MkJBREg7O3lEQXhqRWJBOzRCQTBqRWE7MkJBbEJOLFVBdUJZOzJCQUZIOzt5REE3akVoQkE7NEJBaWtFZ0I7MkJBekJULFVBOEJlOzJCQUZIOzt5REFwa0VuQkE7NEJBd2tFbUI7MkJBaENaOzRCQTJDd0I7NEJBRkg7O3lEQWpsRTVCQTs0QkFnbEV5Qjs0QkFGQTs0QkFESDs0QkFGQTtvRkFTdUI7c0JBcktyRDt3QkFrQmM7O3lCQURIO2dFQWg4RHhCb007eUJBKzdEMkI7eUJBREg7Z0VBOTdEeEJBO3lCQTY3RHFCO3lCQURHO3lCQURIO2dFQWwzRnpCeGU7eUJBaTNGc0I7K0VBTzZDO3NCQWxCbEQ7OEVBcUtzRDtvQkE3a0U5RDtzQkFpd0RRO3dCQW9CSyxPQXJ0RnRCbVY7OzJCQTB0RmdDOzJCQURIOzt5REFoeURKL0M7NEJBa3lESSxhQTV0RjdCQztxQ0ErdEZrQztxQ0FFQTsyQkFORixVQVNHOzJCQURIOzt5REF6eURQRDs0QkEyeURPOzJCQVZBLFVBYU07MkJBREg7O3lEQTd5RFZBOzRCQSt5RFU7MkJBZEgsVUFpQlM7MkJBREg7O3lEQWp6RGJBOzRCQW16RGE7MkJBbEJOLFVBdUJZOzJCQUZIOzt5REF0ekRoQkE7NEJBMHpEZ0I7MkJBekJULFVBOEJlOzJCQUZIOzt5REE3ekRuQkE7NEJBaTBEbUI7MkJBaENaOzRCQTJDd0I7NEJBRkg7O3lEQTEwRDVCQTs0QkF5MER5Qjs0QkFGQTs0QkFESDs0QkFGQTs7OzJCQWFmOzJCQURIOzt5REFoMURKQTs0QkFrMURJLGFBNXdGN0JDO3FDQSt3RmtDO3FDQUVBOzJCQU5GLFVBU0c7MkJBREg7O3lEQXoxRFBEOzRCQTIxRE87MkJBVkEsVUFhTTsyQkFESDs7eURBNzFEVkE7NEJBKzFEVTsyQkFkSCxVQWlCUzsyQkFESDs7eURBajJEYkE7NEJBbTJEYTsyQkFsQk4sVUF1Qlk7MkJBRkg7O3lEQXQyRGhCQTs0QkEwMkRnQjsyQkF6QlQsVUE4QmU7MkJBRkg7O3lEQTcyRG5CQTs0QkFpM0RtQjsyQkFoQ1o7NEJBMkN3Qjs0QkFGSDs7eURBMTNENUJBOzRCQXkzRHlCOzRCQUZBOzRCQURIOzRCQUZBOzs7MkJBYWY7MkJBREg7O3lEQWg0REpBOzRCQWs0REksYUE1ekY3QkM7cUNBK3pGa0M7cUNBRUE7MkJBTkYsVUFTRzsyQkFESDs7eURBejREUEQ7NEJBMjRETzsyQkFWQSxVQWFNOzJCQURIOzt5REE3NERWQTs0QkErNERVOzJCQWRILFVBaUJTOzJCQURIOzt5REFqNURiQTs0QkFtNURhOzJCQWxCTixVQXVCWTsyQkFGSDs7eURBdDVEaEJBOzRCQTA1RGdCOzJCQXpCVCxVQThCZTsyQkFGSDs7eURBNzVEbkJBOzRCQWk2RG1COzJCQWhDWjs0QkEyQ3dCOzRCQUZIOzt5REExNkQ1QkE7NEJBeTZEeUI7NEJBRkE7NEJBREg7NEJBRkE7b0ZBU3VCO3NCQXJLckQ7d0JBa0JjOzt5QkFESDtnRUF6eER4Qm9NO3lCQXd4RDJCO3lCQURIO2dFQXZ4RHhCQTt5QkFzeERxQjt5QkFERzt5QkFESDtnRUEzc0Z6QnhlO3lCQTBzRnNCOytFQU82QztzQkFsQmxEOzhFQXFLc0Q7b0JBdDZEOUQ7c0JBMGxEUTt3QkFvQkssT0E5aUZ0Qm1WOzsyQkFtakZnQzsyQkFESDs7eURBem5ESi9DOzRCQTJuREksYUFyakY3QkM7cUNBd2pGa0M7cUNBRUE7MkJBTkYsVUFTRzsyQkFESDs7eURBbG9EUEQ7NEJBb29ETzsyQkFWQSxVQWFNOzJCQURIOzt5REF0b0RWQTs0QkF3b0RVOzJCQWRILFVBaUJTOzJCQURIOzt5REExb0RiQTs0QkE0b0RhOzJCQWxCTixVQXVCWTsyQkFGSDs7eURBL29EaEJBOzRCQW1wRGdCOzJCQXpCVCxVQThCZTsyQkFGSDs7eURBdHBEbkJBOzRCQTBwRG1COzJCQWhDWjs0QkEyQ3dCOzRCQUZIOzt5REFucUQ1QkE7NEJBa3FEeUI7NEJBRkE7NEJBREg7NEJBRkE7OzsyQkFhZjsyQkFESDs7eURBenFESkE7NEJBMnFESSxhQXJtRjdCQztxQ0F3bUZrQztxQ0FFQTsyQkFORixVQVNHOzJCQURIOzt5REFsckRQRDs0QkFvckRPOzJCQVZBLFVBYU07MkJBREg7O3lEQXRyRFZBOzRCQXdyRFU7MkJBZEgsVUFpQlM7MkJBREg7O3lEQTFyRGJBOzRCQTRyRGE7MkJBbEJOLFVBdUJZOzJCQUZIOzt5REEvckRoQkE7NEJBbXNEZ0I7MkJBekJULFVBOEJlOzJCQUZIOzt5REF0c0RuQkE7NEJBMHNEbUI7MkJBaENaOzRCQTJDd0I7NEJBRkg7O3lEQW50RDVCQTs0QkFrdER5Qjs0QkFGQTs0QkFESDs0QkFGQTs7OzJCQWFmOzJCQURIOzt5REF6dERKQTs0QkEydERJLGFBcnBGN0JDO3FDQXdwRmtDO3FDQUVBOzJCQU5GLFVBU0c7MkJBREg7O3lEQWx1RFBEOzRCQW91RE87MkJBVkEsVUFhTTsyQkFESDs7eURBdHVEVkE7NEJBd3VEVTsyQkFkSCxVQWlCUzsyQkFESDs7eURBMXVEYkE7NEJBNHVEYTsyQkFsQk4sVUF1Qlk7MkJBRkg7O3lEQS91RGhCQTs0QkFtdkRnQjsyQkF6QlQsVUE4QmU7MkJBRkg7O3lEQXR2RG5CQTs0QkEwdkRtQjsyQkFoQ1o7NEJBMkN3Qjs0QkFGSDs7eURBbndENUJBOzRCQWt3RHlCOzRCQUZBOzRCQURIOzRCQUZBO29GQVN1QjtzQkFyS3JEO3dCQWtCYzs7eUJBREg7Z0VBbG5EeEJvTTt5QkFpbkQyQjt5QkFESDtnRUFobkR4QkE7eUJBK21EcUI7eUJBREc7eUJBREg7Z0VBcGlGekJ4ZTt5QkFtaUZzQjsrRUFPNkM7c0JBbEJsRDs4RUFxS3NEO29CQS92RDlEO3NCQW03Q1E7d0JBb0JLLE9BdjRFdEJtVjs7MkJBNDRFZ0M7MkJBREg7O3lEQWw5Q0ovQzs0QkFvOUNJLGFBOTRFN0JDO3FDQWk1RWtDO3FDQUVBOzJCQU5GLFVBU0c7MkJBREg7O3lEQTM5Q1BEOzRCQTY5Q087MkJBVkEsVUFhTTsyQkFESDs7eURBLzlDVkE7NEJBaStDVTsyQkFkSCxVQWlCUzsyQkFESDs7eURBbitDYkE7NEJBcStDYTsyQkFsQk4sVUF1Qlk7MkJBRkg7O3lEQXgrQ2hCQTs0QkE0K0NnQjsyQkF6QlQsVUE4QmU7MkJBRkg7O3lEQS8rQ25CQTs0QkFtL0NtQjsyQkFoQ1o7NEJBMkN3Qjs0QkFGSDs7eURBNS9DNUJBOzRCQTIvQ3lCOzRCQUZBOzRCQURIOzRCQUZBOzs7MkJBYWY7MkJBREg7O3lEQWxnREpBOzRCQW9nREksYUE5N0U3QkM7cUNBaThFa0M7cUNBRUE7MkJBTkYsVUFTRzsyQkFESDs7eURBM2dEUEQ7NEJBNmdETzsyQkFWQSxVQWFNOzJCQURIOzt5REEvZ0RWQTs0QkFpaERVOzJCQWRILFVBaUJTOzJCQURIOzt5REFuaERiQTs0QkFxaERhOzJCQWxCTixVQXVCWTsyQkFGSDs7eURBeGhEaEJBOzRCQTRoRGdCOzJCQXpCVCxVQThCZTsyQkFGSDs7eURBL2hEbkJBOzRCQW1pRG1COzJCQWhDWjs0QkEyQ3dCOzRCQUZIOzt5REE1aUQ1QkE7NEJBMmlEeUI7NEJBRkE7NEJBREg7NEJBRkE7OzsyQkFhZjsyQkFESDs7eURBbGpESkE7NEJBb2pESSxhQTkrRTdCQztxQ0FpL0VrQztxQ0FFQTsyQkFORixVQVNHOzJCQURIOzt5REEzakRQRDs0QkE2akRPOzJCQVZBLFVBYU07MkJBREg7O3lEQS9qRFZBOzRCQWlrRFU7MkJBZEgsVUFpQlM7MkJBREg7O3lEQW5rRGJBOzRCQXFrRGE7MkJBbEJOLFVBdUJZOzJCQUZIOzt5REF4a0RoQkE7NEJBNGtEZ0I7MkJBekJULFVBOEJlOzJCQUZIOzt5REEva0RuQkE7NEJBbWxEbUI7MkJBaENaOzRCQTJDd0I7NEJBRkg7O3lEQTVsRDVCQTs0QkEybER5Qjs0QkFGQTs0QkFESDs0QkFGQTtvRkFTdUI7c0JBcktyRDt3QkFrQmM7O3lCQURIO2dFQTM4Q3hCb007eUJBMDhDMkI7eUJBREg7Z0VBejhDeEJBO3lCQXc4Q3FCO3lCQURHO3lCQURIO2dFQTczRXpCeGU7eUJBNDNFc0I7K0VBTzZDO3NCQWxCbEQ7OEVBcUtzRDtvQkF4bEQ5RDtzQkE0d0NRO3dCQW9CSyxPQWh1RXRCbVY7OzJCQXF1RWdDOzJCQURIOzt5REEzeUNKL0M7NEJBNnlDSSxhQXZ1RTdCQztxQ0EwdUVrQztxQ0FFQTsyQkFORixVQVNHOzJCQURIOzt5REFwekNQRDs0QkFzekNPOzJCQVZBLFVBYU07MkJBREg7O3lEQXh6Q1ZBOzRCQTB6Q1U7MkJBZEgsVUFpQlM7MkJBREg7O3lEQTV6Q2JBOzRCQTh6Q2E7MkJBbEJOLFVBdUJZOzJCQUZIOzt5REFqMENoQkE7NEJBcTBDZ0I7MkJBekJULFVBOEJlOzJCQUZIOzt5REF4MENuQkE7NEJBNDBDbUI7MkJBaENaOzRCQTJDd0I7NEJBRkg7O3lEQXIxQzVCQTs0QkFvMUN5Qjs0QkFGQTs0QkFESDs0QkFGQTs7OzJCQWFmOzJCQURIOzt5REEzMUNKQTs0QkE2MUNJLGFBdnhFN0JDO3FDQTB4RWtDO3FDQUVBOzJCQU5GLFVBU0c7MkJBREg7O3lEQXAyQ1BEOzRCQXMyQ087MkJBVkEsVUFhTTsyQkFESDs7eURBeDJDVkE7NEJBMDJDVTsyQkFkSCxVQWlCUzsyQkFESDs7eURBNTJDYkE7NEJBODJDYTsyQkFsQk4sVUF1Qlk7MkJBRkg7O3lEQWozQ2hCQTs0QkFxM0NnQjsyQkF6QlQsVUE4QmU7MkJBRkg7O3lEQXgzQ25CQTs0QkE0M0NtQjsyQkFoQ1o7NEJBMkN3Qjs0QkFGSDs7eURBcjRDNUJBOzRCQW80Q3lCOzRCQUZBOzRCQURIOzRCQUZBOzs7MkJBYWY7MkJBREg7O3lEQTM0Q0pBOzRCQTY0Q0ksYUF2MEU3QkM7cUNBMDBFa0M7cUNBRUE7MkJBTkYsVUFTRzsyQkFESDs7eURBcDVDUEQ7NEJBczVDTzsyQkFWQSxVQWFNOzJCQURIOzt5REF4NUNWQTs0QkEwNUNVOzJCQWRILFVBaUJTOzJCQURIOzt5REE1NUNiQTs0QkE4NUNhOzJCQWxCTixVQXVCWTsyQkFGSDs7eURBajZDaEJBOzRCQXE2Q2dCOzJCQXpCVCxVQThCZTsyQkFGSDs7eURBeDZDbkJBOzRCQTQ2Q21COzJCQWhDWjs0QkEyQ3dCOzRCQUZIOzt5REFyN0M1QkE7NEJBbzdDeUI7NEJBRkE7NEJBREg7NEJBRkE7b0ZBU3VCO3NCQXJLckQ7d0JBa0JjOzt5QkFESDtnRUFweUN4Qm9NO3lCQW15QzJCO3lCQURIO2dFQWx5Q3hCQTt5QkFpeUNxQjt5QkFERzt5QkFESDtnRUF0dEV6QnhlO3lCQXF0RXNCOytFQU82QztzQkFsQmxEOzhFQXFLc0Q7b0JBajdDOUQ7c0JBb2xDUTt3QkFvQkssT0F4aUV0Qm1WOzsyQkE4aUVtQzsyQkFESDs7eURBcG5DUC9DOzRCQXNuQ087O29DQWhqRWhDQztnQ0FtakVxQztnQ0FFQTs7NkJBSUM7NkJBREg7OzJEQTluQ1ZEO3dDQWdvQ1U7OytCQUlNOytCQURIOzs2REFub0NiQTswQ0Fxb0NhOztpQ0FLTTtpQ0FGSDs7K0RBeG9DaEJBOzRDQTRvQ2dCOzttQ0FLTTttQ0FGSDs7aUVBL29DbkJBOzhDQW1wQ21COztxQ0FLTTtxQ0FGSDs7bUVBdHBDdEJBO2dEQTBwQ3NCOztzQ0FXWTs7dUNBRkg7O29FQW5xQy9CQTt1Q0FrcUM0Qjt1Q0FGQTt1Q0FESDt1Q0FGQTs2Q0FESDs7OzJCQWNaOzJCQURIOzt5REF6cUNQQTs0QkEycUNPOztvQ0FybUVoQ0M7Z0NBd21FcUM7Z0NBRUE7OzZCQUlDOzZCQURIOzsyREFuckNWRDt3Q0FxckNVOzsrQkFJTTsrQkFESDs7NkRBeHJDYkE7MENBMHJDYTs7aUNBS007aUNBRkg7OytEQTdyQ2hCQTs0Q0Fpc0NnQjs7bUNBS007bUNBRkg7O2lFQXBzQ25CQTs4Q0F3c0NtQjs7cUNBS007cUNBRkg7O21FQTNzQ3RCQTtnREErc0NzQjs7c0NBV1k7O3VDQUZIOztvRUF4dEMvQkE7dUNBdXRDNEI7dUNBRkE7dUNBREg7dUNBRkE7NkNBREg7OzsyQkFjWjsyQkFESDs7eURBOXRDUEE7NEJBZ3VDTzs7b0NBMXBFaENDO2dDQTZwRXFDO2dDQUVBOzs2QkFJQzs2QkFESDs7MkRBeHVDVkQ7d0NBMHVDVTs7K0JBSU07K0JBREg7OzZEQTd1Q2JBOzBDQSt1Q2E7O2lDQUtNO2lDQUZIOzsrREFsdkNoQkE7NENBc3ZDZ0I7O21DQUtNO21DQUZIOztpRUF6dkNuQkE7OENBNnZDbUI7O3FDQUtNO3FDQUZIOzttRUFod0N0QkE7Z0RBb3dDc0I7O3NDQVdZOzt1Q0FGSDs7b0VBN3dDL0JBO3VDQTR3QzRCO3VDQUZBO3VDQURIO3VDQUZBOzZDQURIOztrRUFuckUvQ3FHLHVCQThyRStDO3NCQXRMOUI7d0JBa0JjOzt5QkFESDtnRUE1bUN4QitGO3lCQTJtQzJCO3lCQURIO2dFQTFtQ3hCQTt5QkF5bUNxQjt5QkFERzt5QkFESDtnRUE5aEV6QnhlO3lCQTZoRXNCOytFQU82QztzQkFsQmxEOzhFQXNMK0I7b0JBMXdDdkM7c0JBNDVCUTt3QkFvQkssT0FoM0R0Qm1WOzsyQkFzM0RtQzsyQkFESDs7eURBNTdCUC9DOzRCQTg3Qk87O29DQXgzRGhDQztnQ0EyM0RxQztnQ0FFQTs7NkJBSUM7NkJBREg7OzJEQXQ4QlZEO3dDQXc4QlU7OytCQUlNOytCQURIOzs2REEzOEJiQTswQ0E2OEJhOztpQ0FLTTtpQ0FGSDs7K0RBaDlCaEJBOzRDQW85QmdCOzttQ0FLTTttQ0FGSDs7aUVBdjlCbkJBOzhDQTI5Qm1COztxQ0FLTTtxQ0FGSDs7bUVBOTlCdEJBOzs7d0NBaytCc0I7O3NDQVdZOzt1Q0FGSDs7b0VBMytCL0JBO3VDQTArQjRCO3VDQUZBO3VDQURIO3VDQUZBOzZDQURIOzs7MkJBY1o7MkJBREg7O3lEQWovQlBBOzRCQW0vQk87O29DQTc2RGhDQztnQ0FnN0RxQztnQ0FFQTs7NkJBSUM7NkJBREg7OzJEQTMvQlZEO3dDQTYvQlU7OytCQUlNOytCQURIOzs2REFoZ0NiQTswQ0FrZ0NhOztpQ0FLTTtpQ0FGSDs7K0RBcmdDaEJBOzRDQXlnQ2dCOzttQ0FLTTttQ0FGSDs7aUVBNWdDbkJBOzhDQWdoQ21COztxQ0FLTTtxQ0FGSDs7bUVBbmhDdEJBO2dEQXVoQ3NCOztzQ0FXWTs7dUNBRkg7O29FQWhpQy9CQTt1Q0EraEM0Qjt1Q0FGQTt1Q0FESDt1Q0FGQTs2Q0FESDs7OzJCQWNaOzJCQURIOzt5REF0aUNQQTs0QkF3aUNPOztvQ0FsK0RoQ0M7Z0NBcStEcUM7Z0NBRUE7OzZCQUlDOzZCQURIOzsyREFoakNWRDs7O2dDQWtqQ1U7OytCQUlNOytCQURIOzs2REFyakNiQTswQ0F1akNhOztpQ0FLTTtpQ0FGSDs7K0RBMWpDaEJBOzRDQThqQ2dCOzttQ0FLTTttQ0FGSDs7aUVBamtDbkJBOzhDQXFrQ21COztxQ0FLTTtxQ0FGSDs7bUVBeGtDdEJBO2dEQTRrQ3NCOztzQ0FXWTs7dUNBRkg7O29FQXJsQy9CQTt1Q0FvbEM0Qjt1Q0FGQTt1Q0FESDt1Q0FGQTs2Q0FESDs7a0VBMy9EL0NxRyx1QkFzZ0UrQztzQkF0TDlCO3dCQWtCYzs7eUJBREg7Z0VBcDdCeEIrRjt5QkFtN0IyQjt5QkFESDtnRUFsN0J4QkE7eUJBaTdCcUI7eUJBREc7eUJBREg7Z0VBdDJEekJ4ZTt5QkFxMkRzQjsrRUFPNkM7c0JBbEJsRDs4RUFzTCtCO29CQWxsQ3ZDO3NCQW91QlE7d0JBb0JLLE9BeHJEdEJtVjs7MkJBOHJEbUM7MkJBREg7O3lEQXB3QlAvQzs0QkFzd0JPOztvQ0Foc0RoQ0M7Z0NBbXNEcUM7Z0NBRUE7OzZCQUlDOzZCQURIOzsyREE5d0JWRDt3Q0FneEJVOzsrQkFJTTsrQkFESDs7NkRBbnhCYkE7MENBcXhCYTs7aUNBS007aUNBRkg7OytEQXh4QmhCQTs0Q0E0eEJnQjs7bUNBS007bUNBRkg7O2lFQS94Qm5CQTs4Q0FteUJtQjs7cUNBS007cUNBRkg7O21FQXR5QnRCQTtnREEweUJzQjs7c0NBV1k7O3VDQUZIOztvRUFuekIvQkE7dUNBa3pCNEI7dUNBRkE7dUNBREg7dUNBRkE7NkNBREg7OzsyQkFjWjsyQkFESDs7eURBenpCUEE7NEJBMnpCTzs7b0NBcnZEaENDO2dDQXd2RHFDO2dDQUVBOzs2QkFJQzs2QkFESDs7MkRBbjBCVkQ7d0NBcTBCVTs7K0JBSU07K0JBREg7OzZEQXgwQmJBOzs7a0NBMDBCYTs7aUNBS007aUNBRkg7OytEQTcwQmhCQTs0Q0FpMUJnQjs7bUNBS007bUNBRkg7O2lFQXAxQm5CQTs4Q0F3MUJtQjs7cUNBS007cUNBRkg7O21FQTMxQnRCQTtnREErMUJzQjs7c0NBV1k7O3VDQUZIOztvRUF4MkIvQkE7dUNBdTJCNEI7dUNBRkE7dUNBREg7dUNBRkE7NkNBREg7OzsyQkFjWjsyQkFESDs7eURBOTJCUEE7NEJBZzNCTzs7b0NBMXlEaENDO2dDQTZ5RHFDO2dDQUVBOzs2QkFJQzs2QkFESDs7MkRBeDNCVkQ7d0NBMDNCVTs7K0JBSU07K0JBREg7OzZEQTczQmJBOzBDQSszQmE7O2lDQUtNO2lDQUZIOzsrREFsNEJoQkE7NENBczRCZ0I7O21DQUtNO21DQUZIOztpRUF6NEJuQkE7OENBNjRCbUI7O3FDQUtNO3FDQUZIOzttRUFoNUJ0QkE7Z0RBbzVCc0I7O3NDQVdZOzt1Q0FGSDs7b0VBNzVCL0JBO3VDQTQ1QjRCO3VDQUZBO3VDQURIO3VDQUZBOzZDQURIOztrRUFuMEQvQ3FHLHVCQTgwRCtDO3NCQXRMOUI7d0JBa0JjOzt5QkFESDtnRUE1dkJ4QitGO3lCQTJ2QjJCO3lCQURIO2dFQTF2QnhCQTt5QkF5dkJxQjt5QkFERzt5QkFESDtnRUE5cUR6QnhlO3lCQTZxRHNCOytFQU82QztzQkFsQmxEOzhFQXNMK0I7b0JBMTVCdkM7c0JBNGlCUTt3QkFvQkssT0FoZ0R0Qm1WOzsyQkFzZ0RtQzsyQkFESDs7eURBNWtCUC9DOzRCQThrQk87O29DQXhnRGhDQztnQ0EyZ0RxQztnQ0FFQTs7NkJBSUM7NkJBREg7OzJEQXRsQlZEO3dDQXdsQlU7OytCQUlNOytCQURIOzs2REEzbEJiQTswQ0E2bEJhOztpQ0FLTTtpQ0FGSDs7K0RBaG1CaEJBOzRDQW9tQmdCOzttQ0FLTTttQ0FGSDs7aUVBdm1CbkJBOzhDQTJtQm1COztxQ0FLTTtxQ0FGSDs7bUVBOW1CdEJBO2dEQWtuQnNCOztzQ0FXWTs7dUNBRkg7O29FQTNuQi9CQTt1Q0EwbkI0Qjt1Q0FGQTt1Q0FESDt1Q0FGQTs2Q0FESDs7OzJCQWNaOzJCQURIOzt5REFqb0JQQTs0QkFtb0JPOztvQ0E3akRoQ0M7Z0NBZ2tEcUM7Z0NBRUE7OzZCQUlDOzZCQURIOzsyREEzb0JWRDt3Q0E2b0JVOzsrQkFJTTsrQkFESDs7NkRBaHBCYkE7MENBa3BCYTs7aUNBS007aUNBRkg7OytEQXJwQmhCQTs0Q0F5cEJnQjs7bUNBS007bUNBRkg7O2lFQTVwQm5CQTs4Q0FncUJtQjs7cUNBS007cUNBRkg7O21FQW5xQnRCQTtnREF1cUJzQjs7c0NBV1k7O3VDQUZIOztvRUFockIvQkE7dUNBK3FCNEI7dUNBRkE7dUNBREg7dUNBRkE7NkNBREg7OzsyQkFjWjsyQkFESDs7eURBdHJCUEE7NEJBd3JCTzs7b0NBbG5EaENDO2dDQXFuRHFDO2dDQUVBOzs2QkFJQzs2QkFESDs7MkRBaHNCVkQ7d0NBa3NCVTs7K0JBSU07K0JBREg7OzZEQXJzQmJBOzBDQXVzQmE7O2lDQUtNO2lDQUZIOzsrREExc0JoQkE7NENBOHNCZ0I7O21DQUtNO21DQUZIOztpRUFqdEJuQkE7OztzQ0FxdEJtQjs7cUNBS007cUNBRkg7O21FQXh0QnRCQTtnREE0dEJzQjs7c0NBV1k7O3VDQUZIOztvRUFydUIvQkE7dUNBb3VCNEI7dUNBRkE7dUNBREg7dUNBRkE7NkNBREg7O2tFQTNvRC9DcUcsdUJBc3BEK0M7c0JBdEw5Qjt3QkFrQmM7O3lCQURIO2dFQXBrQnhCK0Y7eUJBbWtCMkI7eUJBREg7Z0VBbGtCeEJBO3lCQWlrQnFCO3lCQURHO3lCQURIO2dFQXQvQ3pCeGU7eUJBcS9Dc0I7K0VBTzZDO3NCQWxCbEQ7OEVBc0wrQjtvQkFsdUJ2QztzQkFvWFE7d0JBb0JLLE9BeDBDdEJtVjs7MkJBODBDbUM7MkJBREg7O3lEQXBaUC9DOzRCQXNaTzs7b0NBaDFDaENDO2dDQW0xQ3FDO2dDQUVBOzs2QkFJQzs2QkFESDs7MkRBOVpWRDt3Q0FnYVU7OytCQUlNOytCQURIOzs2REFuYWJBOzs7a0NBcWFhOztpQ0FLTTtpQ0FGSDs7K0RBeGFoQkE7NENBNGFnQjs7bUNBS007bUNBRkg7O2lFQS9hbkJBOzhDQW1ibUI7O3FDQUtNO3FDQUZIOzttRUF0YnRCQTtnREEwYnNCOztzQ0FXWTs7dUNBRkg7O29FQW5jL0JBO3VDQWtjNEI7dUNBRkE7dUNBREg7dUNBRkE7NkNBREg7OzsyQkFjWjsyQkFESDs7eURBemNQQTs0QkEyY087O29DQXI0Q2hDQztnQ0F3NENxQztnQ0FFQTs7NkJBSUM7NkJBREg7OzJEQW5kVkQ7d0NBcWRVOzsrQkFJTTsrQkFESDs7NkRBeGRiQTswQ0EwZGE7O2lDQUtNO2lDQUZIOzsrREE3ZGhCQTs0Q0FpZWdCOzttQ0FLTTttQ0FGSDs7aUVBcGVuQkE7OENBd2VtQjs7cUNBS007cUNBRkg7O21FQTNldEJBO2dEQStlc0I7O3NDQVdZOzt1Q0FGSDs7b0VBeGYvQkE7dUNBdWY0Qjt1Q0FGQTt1Q0FESDt1Q0FGQTs2Q0FESDs7OzJCQWNaOzJCQURIOzt5REE5ZlBBOzRCQWdnQk87O29DQTE3Q2hDQztnQ0E2N0NxQztnQ0FFQTs7NkJBSUM7NkJBREg7OzJEQXhnQlZEO3dDQTBnQlU7OytCQUlNOytCQURIOzs2REE3Z0JiQTswQ0ErZ0JhOztpQ0FLTTtpQ0FGSDs7K0RBbGhCaEJBOzs7b0NBc2hCZ0I7O21DQUtNO21DQUZIOztpRUF6aEJuQkE7OztzQ0E2aEJtQjs7cUNBS007cUNBRkg7O21FQWhpQnRCQTtnREFvaUJzQjs7c0NBV1k7O3VDQUZIOztvRUE3aUIvQkE7dUNBNGlCNEI7dUNBRkE7dUNBREg7dUNBRkE7NkNBREg7O2tFQW45Qy9DcUcsdUJBODlDK0M7c0JBdEw5Qjt3QkFrQmM7O3lCQURIO2dFQTVZeEIrRjt5QkEyWTJCO3lCQURIO2dFQTFZeEJBO3lCQXlZcUI7eUJBREc7eUJBREg7Z0VBOXpDekJ4ZTt5QkE2ekNzQjsrRUFPNkM7c0JBbEJsRDs4RUFzTCtCO29CQTFpQnZDO3NCQTRMUTt3QkFvQkssT0FocEN0Qm1WOzsyQkFzcENtQzsyQkFESDs7eURBNU5QL0M7NEJBOE5POztvQ0F4cENoQ0M7Z0NBMnBDcUM7Z0NBRUE7OzZCQUlDOzZCQURIOzsyREF0T1ZEO3dDQXdPVTs7K0JBSU07K0JBREg7OzZEQTNPYkE7MENBNk9hOztpQ0FLTTtpQ0FGSDs7K0RBaFBoQkE7NENBb1BnQjs7bUNBS007bUNBRkg7O2lFQXZQbkJBOzs7c0NBMlBtQjs7cUNBS007cUNBRkg7O21FQTlQdEJBOzs7d0NBa1FzQjs7c0NBV1k7O3VDQUZIOztvRUEzUS9CQTt1Q0EwUTRCO3VDQUZBO3VDQURIO3VDQUZBOzZDQURIOzs7MkJBY1o7MkJBREg7O3lEQWpSUEE7NEJBbVJPOztvQ0E3c0NoQ0M7Z0NBZ3RDcUM7Z0NBRUE7OzZCQUlDOzZCQURIOzsyREEzUlZEO3dDQTZSVTs7K0JBSU07K0JBREg7OzZEQWhTYkE7MENBa1NhOztpQ0FLTTtpQ0FGSDs7K0RBclNoQkE7OztvQ0F5U2dCOzttQ0FLTTttQ0FGSDs7aUVBNVNuQkE7OENBZ1RtQjs7cUNBS007cUNBRkg7O21FQW5UdEJBO2dEQXVUc0I7O3NDQVdZOzt1Q0FGSDs7b0VBaFUvQkE7dUNBK1Q0Qjt1Q0FGQTt1Q0FESDt1Q0FGQTs2Q0FESDs7OzJCQWNaOzJCQURIOzt5REF0VVBBOzRCQXdVTzs7b0NBbHdDaENDO2dDQXF3Q3FDO2dDQUVBOzs2QkFJQzs2QkFESDs7MkRBaFZWRDt3Q0FrVlU7OytCQUlNOytCQURIOzs2REFyVmJBOzs7a0NBdVZhOztpQ0FLTTtpQ0FGSDs7K0RBMVZoQkE7NENBOFZnQjs7bUNBS007bUNBRkg7O2lFQWpXbkJBOzhDQXFXbUI7O3FDQUtNO3FDQUZIOzttRUF4V3RCQTtnREE0V3NCOztzQ0FXWTs7dUNBRkg7O29FQXJYL0JBO3VDQW9YNEI7dUNBRkE7dUNBREg7dUNBRkE7NkNBREg7O2tFQTN4Qy9DcUcsdUJBc3lDK0M7c0JBdEw5Qjt3QkFrQmM7O3lCQURIO2dFQXBOeEIrRjt5QkFtTjJCO3lCQURIO2dFQWxOeEJBO3lCQWlOcUI7eUJBREc7eUJBREg7Z0VBdG9DekJ4ZTt5QkFxb0NzQjsrRUFPNkM7c0JBbEJsRDs4RUFzTCtCO29CQWxYdkM7Ozs7eUJBSVE7MkJBb0JLLE9BeDlCdEJtVjs7OEJBODlCbUM7OEJBREg7OzREQXBDUC9DOytCQXNDTzs7dUNBaCtCaENDO21DQW0rQnFDO21DQUVBOztnQ0FJQztnQ0FESDs7OERBOUNWRDsyQ0FnRFU7O2tDQUlNO2tDQURIOztnRUFuRGJBOzZDQXFEYTs7b0NBS007b0NBRkg7O2tFQXhEaEJBOytDQTREZ0I7O3NDQUtNO3NDQUZIOztvRUEvRG5CQTtpREFtRW1COzt3Q0FLTTt3Q0FGSDs7c0VBdEV0QkE7bURBMEVzQjs7eUNBV1k7OzBDQUZIOzt1RUFuRi9CQTswQ0FrRjRCOzBDQUZBOzBDQURIOzBDQUZBO2dEQURIOzs7OEJBY1o7OEJBREg7OzREQXpGUEE7K0JBMkZPOzt1Q0FyaENoQ0M7bUNBd2hDcUM7bUNBRUE7O2dDQUlDO2dDQURIOzs4REFuR1ZEOzJDQXFHVTs7a0NBSU07a0NBREg7O2dFQXhHYkE7NkNBMEdhOztvQ0FLTTtvQ0FGSDs7a0VBN0doQkE7Ozt1Q0FpSGdCOztzQ0FLTTtzQ0FGSDs7b0VBcEhuQkE7aURBd0htQjs7d0NBS007d0NBRkg7O3NFQTNIdEJBO21EQStIc0I7O3lDQVdZOzswQ0FGSDs7dUVBeEkvQkE7MENBdUk0QjswQ0FGQTswQ0FESDswQ0FGQTtnREFESDs7OzhCQWNaOzhCQURIOzs0REE5SVBBOytCQWdKTzs7dUNBMWtDaENDO21DQTZrQ3FDO21DQUVBOztnQ0FJQztnQ0FESDs7OERBeEpWRDsyQ0EwSlU7O2tDQUlNO2tDQURIOztnRUE3SmJBOzs7cUNBK0phOztvQ0FLTTtvQ0FGSDs7a0VBbEtoQkE7K0NBc0tnQjs7c0NBS007c0NBRkg7O29FQXpLbkJBO2lEQTZLbUI7O3dDQUtNO3dDQUZIOztzRUFoTHRCQTs7OzJDQW9Mc0I7O3lDQVdZOzswQ0FGSDs7dUVBN0wvQkE7MENBNEw0QjswQ0FGQTswQ0FESDswQ0FGQTtnREFESDs7cUVBbm1DL0NxRyx1QkE4bUMrQzt5QkF0TDlCOzJCQWtCYzs7NEJBREg7bUVBNUJ4QitGOzRCQTJCMkI7NEJBREg7bUVBMUJ4QkE7NEJBeUJxQjs0QkFERzs0QkFESDttRUE5OEJ6QnhlOzRCQTY4QnNCO2tGQU82Qzt5QkFsQmxEO2lGQXNMK0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0JBMUx2Qzs4RUFpdEg4RDt1Q0FudEgvQyxRQUFJO2lCQUh6Qjs7Ozs7O2lCQXd0SFk7Z0JBbC9INEIsWUF1L0hXO1dBbnVIYTs7Ozs7Ozs7WUF5dUhuRTs7O2dCQW82Qk0sc0JBd0U2Qyw4QkFBZ0I7Z0JBeEU3RCxzQkF3RW9CLFFBQUs7Z0JBeEV6QjtrQkFpRFE7b0JBa0JVO29CQURIOztrREF0b0xyQm9TO3FCQXdvTHFCO29CQURHO3FCQUlHOztrREEzb0wzQkE7cUJBMG9Md0M7cUJBQWhCO3FCQURZOzRFQUVpQztrQkF0QnZEO29CQWNXOztxQkFESDs0REE5bkx0QnBTO3FCQTZuTHlCO3FCQURIOzREQTVuTHRCQTtxQkEybkxtQjsyRUFJMEM7a0JBZC9DOzBFQXNCd0Q7Z0JBdkVoRTtrQkF5QlE7b0JBa0JVO29CQURIOztrREE5bUxyQm9TO3FCQWduTHFCO29CQURHO3FCQUdnQjtxQkFBaEI7Ozs7d0JBeDdLeEJzSTtxQkF1N0tvQzs0RUFFMkI7a0JBdEJqRDtvQkFjVzs7cUJBREg7NERBdG1MdEIxYTtxQkFxbUx5QjtxQkFESDs0REFwbUx0QkE7cUJBbW1MbUI7MkVBSXlDO2tCQWQ5QzswRUFzQmtEO2dCQS9DMUQ7Ozs7cUJBSVE7dUJBZVU7dUJBREg7O3FEQXRsTHJCb1M7d0JBd2xMcUI7dUJBREc7d0JBR2dCO3dCQUFoQjs7OzsyQkFoNkt4QnNJO3dCQSs1S29DOytFQUUyQjtxQkFuQmpEO3VCQVdROzt3QkFESDsrREE5a0xuQjFhO3VCQThrTG1CLHVEQUNxQztxQkFYMUM7NkVBbUJrRDs7O2dCQXZCMUQ7MEVBd0U4RDttQ0ExRS9DLFFBQUk7Ozs7aUJBOTVCaEI7bUJBazBCSyxzQkEyRm9CLDhCQUFnQjttQkEzRnBDLHNCQTBGb0IsUUFBSzttQkExRnpCO3FCQTZEUTt1QkE0QlU7OztxREEvakxoQ29TO3dCQTZqTDZDO3dCQUFoQjs7K0JBNWpMN0JDOzJCQXlqTGtDOzJCQUVBOytFQUd1QztxQkE1Qm5EO3VCQWdCYzs7d0JBREg7K0RBOWlMakNyUzt3QkE2aUxvQzt3QkFESDsrREE1aUxqQ0E7d0JBMmlMOEI7d0JBREg7b0VBbGlMM0JxWTt1QkFraUwyQix1REFNaUI7cUJBakJ0Qjs2RUE0Qm9EO21CQXpGNUQ7cUJBK0JRO3VCQTRCVTs7O3FEQWppTGhDakc7d0JBK2hMNkM7d0JBQWhCOzsrQkE5aEw3QkM7MkJBMmhMa0M7MkJBRUE7K0VBR3VDO3FCQTVCbkQ7dUJBZ0JjOzt3QkFESDsrREFoaExqQ3JTO3dCQStnTG9DO3dCQURIOytEQTlnTGpDQTt3QkE2Z0w4Qjt3QkFESDtvRUFwZ0wzQnFZO3VCQW9nTDJCLHVEQU1pQjtxQkFqQnRCOzZFQTRCb0Q7bUJBM0Q1RDs7Ozt3QkFJUTswQkF1QnVCOzsyQkFBaEI7Ozs7OEJBdjBLN0JxQzsyQkF1MEs2QjtrQ0FoZ0w3QnJJOzhCQTYvS2tDOzhCQUVBO2tGQUdpQzt3QkF6QjdDOzBCQWFXOzsyQkFESDtrRUFsL0s5QnJTOzJCQWkvSzJCO3VFQXorSzNCcVk7MEJBeStLMkIsdURBR2lCO3dCQWR0QjtnRkF5QjhDOzs7bUJBN0J0RDs2RUEyRnFDO2lCQTc1QjFDLHNCQWcwQm9CLFFBQUk7aUJBaDBCeEI7Ozs7c0JBSVE7d0JBdWVLLHNCQW9Wb0IsOEJBQWdCO3dCQXBWcEMsc0JBbVZvQixRQUFLO3dCQW5WekI7MEJBMlJROzRCQTJDYzs7OzBEQXI5SzVDakc7NkJBbTlLNEM7NkJBREg7NkJBREE7NkJBREg7NkJBY007NkJBRkE7NkJBREg7NkJBREE7NkJBREg7NEJBT0UsNkNBakJBelIsUUFTQXNhOztxQ0FUQXRhLE9Ba0IyQjswQkF2RHJDOzRCQUtvQixPQTU2S2xESDs7Ozs7Ozs7Ozs0QkF3N0s0Qzs7NkJBREg7b0VBdDdLekNSOzZCQXE3SzRDOzZCQURIO29FQXA3S3pDQTs2QkFtN0tzQzs2QkFESDttRkF1QnVDOzBCQW5DNUM7a0ZBdURzQzt3QkFsVjlDOzBCQWtPUTs0QkEyQ2M7OzswREE1NUs1Q29TOzZCQTA1SzRDOzZCQURIOzZCQURBOzZCQURIOzZCQWNNOzZCQUZBOzZCQURIOzZCQURBOzZCQURIOzRCQU9FLDZDQWpCQXpSLFFBU0FzYTs7cUNBVEF0YSxPQWtCMkI7MEJBdkRyQzs0QkFLb0IsT0FuM0tsREg7Ozs7Ozs7Ozs7NEJBKzNLNEM7OzZCQURIO29FQTczS3pDUjs2QkE0M0s0Qzs2QkFESDtvRUEzM0t6Q0E7NkJBMDNLc0M7NkJBREg7bUZBdUJ1QzswQkFuQzVDO2tGQXVEc0M7d0JBelI5QzswQkFzR1E7NEJBOEdjOzs7MERBbjJLNUNvUzs2QkFpMks0Qzs2QkFESDs2QkFEQTs2QkFESDs2QkFjTTs2QkFGQTs2QkFESDs2QkFEQTs2QkFESDs0QkFPRSw2Q0FqQkF6UixRQVNBc2E7O3FDQVRBdGEsT0FrQjJCOzBCQTFIckM7NEJBd0VvQixPQTF6S2xESDs7Ozs7Ozs7Ozs0QkFzMEs0Qzs7NkJBREg7b0VBcDBLekNSOzZCQW0wSzRDOzZCQURIO29FQWwwS3pDQTs2QkFpMEtzQzs2QkFESDttRkF1QnVDOzBCQXRHNUM7Ozs7K0JBTVE7aUNBa0RjOzs7K0RBN3lLcERvUztrQ0EyeUtvRDtrQ0FESDtrQ0FGQTtrQ0FESDtrQ0FnQk07a0NBRkE7a0NBREg7a0NBRkE7a0NBREg7aUNBU0EsNkNBcEJFelIsUUFVQXNhOzswQ0FWQXRhLE9Bc0JzQjsrQkFqRWhDO2lDQU1LLE9BOXZLM0NIOzs7Ozs7Ozs7O2lDQTZ3S29EOztrQ0FGSDt5RUExd0tqRFI7a0NBeXdLb0Q7a0NBRkg7eUVBdndLakRBO2tDQXN3SzhDO2tDQURIO3dGQTJCZTsrQkF6Q3BCO3VGQWlFaUM7MEJBdkV6QztvRkEwSHNDO3dCQWhPOUM7MEJBNkNROzRCQTJDYzs7OzBEQXZ1SzVDb1M7NkJBcXVLNEM7NkJBREg7NkJBREE7NkJBREg7NkJBY007NkJBRkE7NkJBREg7NkJBREE7NkJBREg7NEJBT0UsNkNBakJBelIsUUFTQXNhOztxQ0FUQXRhLE9Ba0IyQjswQkF2RHJDOzRCQUtvQixPQTlyS2xESDs7Ozs7Ozs7Ozs0QkEwc0s0Qzs7NkJBREg7b0VBeHNLekNSOzZCQXVzSzRDOzZCQURIO29FQXRzS3pDQTs2QkFxc0tzQzs2QkFESDttRkF1QnVDOzBCQW5DNUM7a0ZBdURzQzt3QkFwRzlDOzs7OzZCQUtROytCQXFDVTs7Z0NBREg7Ozs7bUNBOS9KckMwYTtnQ0E0L0ppRDt1RkFJMEI7NkJBdEM3QzsrQkFLb0IsT0F0cEtsRGxhOzs7Ozs7Ozs7OytCQStwS3lDOztnQ0FESDt1RUE3cEt0Q1I7Z0NBNHBLbUM7c0ZBb0J1Qzs2QkFoQzVDO3FGQXNDOEM7Ozs7O3dCQTNDdEQ7a0ZBb1ZxQztzQkEzekIxQyxzQkFxZW9CLFFBQUk7c0JBcmV4Qjs7OzsyQkFJUTs2QkFNSyxzQkEwZG9CLDhCQUFnQjs2QkExZHBDLHNCQXlkb0IsUUFBSzs2QkF6ZHpCOytCQXlZUTtpQ0F5RGM7OzsrREFwbktwRG9TO2tDQWtuS29EO2tDQURIOzt5Q0FobktqREM7cUNBMm1Lc0Q7cUNBR0E7a0NBUlI7a0NBOEJNO2tDQUZBO2tDQURIOzt5Q0Fqb0tqREE7cUNBNG5Lc0Q7cUNBR0E7a0NBUlI7aUNBZ0JBLDZDQWxDRTFSLFFBaUJBc2E7OzBDQWpCQXRhLE9Bb0NzQjsrQkEvRWhDO2lDQU1LLE9BOWpLM0NIOzs7Ozs7Ozs7O2lDQTZrS29EOztrQ0FGSDt5RUExa0tqRFI7a0NBeWtLb0Q7a0NBRkg7eUVBdmtLakRBO2tDQXNrSzhDO2tDQURIO3dGQTJCZTsrQkF6Q3BCO3VGQStFaUM7NkJBeGR6QzsrQkF3VFE7aUNBeURjOzs7K0RBbmlLcERvUztrQ0FpaUtvRDtrQ0FESDs7eUNBL2hLakRDO3FDQTBoS3NEO3FDQUdBO2tDQVJSO2tDQThCTTtrQ0FGQTtrQ0FESDs7eUNBaGpLakRBO3FDQTJpS3NEO3FDQUdBO2tDQVJSO2lDQWdCQSw2Q0FsQ0UxUixRQWlCQXNhOzswQ0FqQkF0YSxPQW9Dc0I7K0JBL0VoQztpQ0FNSyxPQTcrSjNDSDs7Ozs7Ozs7OztpQ0E0L0pvRDs7a0NBRkg7eUVBei9KakRSO2tDQXcvSm9EO2tDQUZIO3lFQXQvSmpEQTtrQ0FxL0o4QztrQ0FESDt3RkEyQmU7K0JBekNwQjt1RkErRWlDOzZCQXZZekM7K0JBK0lRO2lDQWlKYzs7OytEQWw5SnBEb1M7a0NBZzlKb0Q7a0NBREg7O3lDQTk4SmpEQztxQ0F5OEpzRDtxQ0FHQTtrQ0FSUjtrQ0E4Qk07a0NBRkE7a0NBREg7O3lDQS85SmpEQTtxQ0EwOUpzRDtxQ0FHQTtrQ0FSUjtpQ0FnQkEsNkNBbENFMVIsUUFpQkFzYTs7MENBakJBdGEsT0FvQ3NCOytCQXZLaEM7aUNBOEZLLE9BNTVKM0NIOzs7Ozs7Ozs7O2lDQTI2Sm9EOztrQ0FGSDt5RUF4NkpqRFI7a0NBdTZKb0Q7a0NBRkg7eUVBcjZKakRBO2tDQW82SjhDO2tDQURIO3dGQTJCZTsrQkFqSXBCOzs7O29DQU1RO3NDQTZEYzs7O29FQXA0SjVEb1M7dUNBazRKNEQ7dUNBREg7OzhDQWg0SnpEQzswQ0EyM0o4RDswQ0FHQTt1Q0FSUjt1Q0ErQk07dUNBRkE7dUNBREg7OzhDQWw1SnpEQTswQ0E2NEo4RDswQ0FHQTt1Q0FSUjtzQ0FnQkEsNkNBcENFMVIsUUFrQkFzYTs7K0NBbEJBdGEsT0F3Q1M7b0NBdEZuQjtzQ0FRSyxPQTUwSm5ESDs7Ozs7Ozs7OztzQ0E0MUo0RDs7dUNBRkg7OEVBejFKekRSO3VDQXcxSjREO3VDQUZIOzhFQXQxSnpEQTt1Q0FxMUpzRDt1Q0FESDs2RkEyQmU7b0NBNUNwQjs0RkFzRm9COytCQTVGNUI7eUZBdUtpQzs2QkF0VHpDOytCQThEUTtpQ0F5RGM7OzsrREF6eUpwRG9TO2tDQXV5Sm9EO2tDQURIOzt5Q0FyeUpqREM7cUNBZ3lKc0Q7cUNBR0E7a0NBUlI7a0NBOEJNO2tDQUZBO2tDQURIOzt5Q0F0ekpqREE7cUNBaXpKc0Q7cUNBR0E7a0NBUlI7aUNBZ0JBLDZDQWxDRTFSLFFBaUJBc2E7OzBDQWpCQXRhLE9Bb0NzQjsrQkEvRWhDO2lDQU1LLE9BbnZKM0NIOzs7Ozs7Ozs7O2lDQWt3Sm9EOztrQ0FGSDt5RUEvdkpqRFI7a0NBOHZKb0Q7a0NBRkg7eUVBNXZKakRBO2tDQTJ2SjhDO2tDQURIO3dGQTJCZTsrQkF6Q3BCO3VGQStFaUM7NkJBN0l6Qzs7OztrQ0FNUTtvQ0FvRFU7O3FDQURIOzs7O3dDQWpqSjdDMGE7cUNBaWpKNkM7NENBMXVKN0NySTt3Q0FxdUprRDt3Q0FHQTs0RkFLaUM7a0NBdEQ3QztvQ0FNSyxPQTNySjNDN1I7Ozs7Ozs7Ozs7b0NBdXNKOEM7O2lGQTlySjlDNlg7cUNBNnJKaUQ7cUNBRkg7NEVBbnNKOUNyWTtxQ0Frc0oyQzsyRkF5QnFCO2tDQXZDMUI7MEZBc0Q4Qzs7Ozs7NkJBNUR0RDt1RkEwZHFDOzJCQWhlMUMsc0JBSW9CLFFBQUk7MkJBSnhCO21GQWdlMkM7c0JBcGVuRDtnRkEyekIyQztpQkEvekJuRDsyRUE2NUIyQzthQWo2QnBEOzs7OzthQTgrQlk7O1VBMS9KaUI7V0F1Z0k3QndkO1lBQXNDOzs7Ozs7O1lBOC9CdEM7OztnQkFLTSxzQkEyRjZDLDhCQUFnQjtnQkEzRjdELHNCQTJGb0IsUUFBSztnQkEzRnpCO2tCQStEUSxzQkEyQm9CLE9BbnRLbENXLDJCQW10SzhEO2tCQTNCaEQ7b0JBR29CLE9BeHRMbENsRzs7Ozs7b0JBcXVMeUI7O3FCQURIOzttREFydUx0QkM7cUJBb3VMbUI7MkVBWWdCO2tCQTFCckI7MEVBMkJpRDtnQkExRnpEOzs7O3FCQUlRO3VCQXdESzs7Z0NBcnRMbkJGO2dDQW9mQWlHLG9CQWt1S3lDO3FCQXpEM0I7dUJBR29CLE9BN3BMbENoRzs7Ozs7Ozs7Ozt1QkE0ckw0Qjs4QkE1ckw1QkE7Ozs7O3VCQTRyTDRCO3dCQVhIO3dCQURHO3dCQURIOztzREFockx6QkM7d0JBK3FMc0I7d0JBRE07d0JBREg7O3NEQTdxTHpCQTt3QkE0cUw0Qjt3QkFESDs7c0RBM3FMekJBO3dCQTBxTHNCO3dCQURIOzhFQXdDNEI7cUJBdERqQzs2RUF5RDRCOztnQkE3RHBDOzBFQTJGOEQ7bUNBN0YvQyxRQUFJO2FBSHpCOzs7O2FBa0dZOztVQXZtS2lCO1dBZ2dLYTs7Ozs7Ozs7cUJBaUh0QzFHO2NBQ0g7Z0JBQ0U7OztvQkFtQlc7O3FCQURBOzs7d0JBcEJWQTt3QkEzcEtKOE07b0JBOHFLVzs2QkFHQTs2QkFDQTs7K0JBdkJQOU07K0JBM3BLSjhNLDJCQWtyS21FOzs7b0JBbEIzQyxtREFXVjtpQkFkWDs7Ozs7O2lCQXVCWTtnQkFsSU0sWUF1SWlDO1dBbENXOzs7Ozs7OztxQkF3QzdERSxZQUFxQnBNO2NBQ3hCO2dCQUNFOzs7b0JBbUx3Qjs7Ozs7Ozt3QkFyTEZBO3FCQWdMaEI7O3dCQWxpS1RxTTt3QkFtaUtZOzs7OzswQkFqTFJEOztxQkE0S0s7Ozs7Ozs7MkVBYW1DOzs7b0JBakJMOztxQkFBOUI7NERBNzhMVHhlO29CQTY4TFMsdURBQWdFOzs7O3FCQWxLN0Q7dUJBS0ssc0JBcUpvQiw4QkFBZ0I7dUJBckpwQyxzQkFvSm9CLFFBQUs7dUJBcEp6Qjs7Ozs0QkFJUTs4QkErSU87OytCQU5HOzs7Ozs7a0NBeEpWb1M7K0JBaUpPOztrQ0FuZ0toQ3FNO2tDQW9nS21DOzs7OztvQ0FsSi9CRDs7K0JBNEk0Qjs7Ozs7OzsrQkFIYTt1RkFxQmE7NEJBL0lqQzs4QkF1SFc7OytCQURIO3NFQTE2TGpDeGU7K0JBeTZMOEI7MkVBajZMOUJxWTs4QkFpNkw4Qix1REFHaUI7NEJBeEh0Qjs7OztpQ0FLUTttQ0F3R087O29DQVJHOzs7Ozs7dUNBcEhsQmpHO29DQTRHZTs7dUNBOTlKeENxTTt1Q0ErOUoyQzs7Ozs7eUNBN0d2Q0Q7O29DQXVHb0M7Ozs7Ozs7b0NBSGE7NEZBd0JhO2lDQXhHakM7bUNBNkVjOztvQ0FGSDsyRUFwNEw1Q3hlO29DQW00TCtDO29DQUZIOzJFQWo0TDVDQTtvQ0FnNEx5QztvQ0FESDtnRkF2M0x0Q3FZO21DQXUzTHNDLHVEQVFpQjtpQ0E5RXRCOzs7O3NDQU1RO3dDQXNETzs7eUNBUkc7Ozs7Ozs0Q0F4RTFCakc7eUNBK0R1Qjs7NENBajdKaERxTTs0Q0FrN0ptRDs7Ozs7OENBaEUvQ0Q7O3lDQXdENEM7Ozs7Ozs7eUNBSEE7aUdBMkIwQjtzQ0F0RGpDO3dDQXVCYzs7eUNBRkg7Z0ZBcDFMcER4ZTt5Q0FtMUx1RDt5Q0FGSDtnRkFqMUxwREE7eUNBZzFMaUQ7eUNBREg7cUZBdjBMOUNxWTt3Q0F1MEw4Qyx1REFRaUI7c0NBeEJ0Qjs4RkFzRGtDO2lDQTVEMUM7MkZBd0drQzs0QkE3RzFDO3NGQStJa0M7dUJBbkoxQztpRkFxSnFDO3FCQTFKMUMsc0JBR29CLFFBQUk7cUJBSHhCOzZFQTBKMkM7aUJBOUpwRDs7Ozs7O2lCQXlMWTtnQkExTlMsWUErTjhCO1dBcE1ROzs7Ozs7OztxQkF5TTFEOUI7Y0FDSDtnQkFDRTs7O29CQWlCUTs7Ozt3QkF0L0xYd0g7d0JBZ3BKQVA7b0JBczJDVzs2REFuQlBqSCxxQkFvQjZEOzs7b0JBZnpDLG1EQVdWO2lCQWRYOzs7Ozs7aUJBb0JZO2dCQWxOaUIsWUF1TnNCO1dBL0JaOzs7Ozs7OztZQXFDMUM7OztnQkFpQ1E7OztvQkFqak1SdUg7b0JBcXBMQVk7a0JBb2FXOzttQkFETTttQkFERzttQkFESDs7O3NCQWphakJBOzttQkFnYWM7bUJBREg7O2dCQU1ILE9BMWpNUlosOEJBMGpNeUM7OztnQkF0QnBCLG1EQVVWOzs7O2lCQTFCRixzQkFlb0IsT0FuaU03QkEsOEJBbWlNOEQ7aUJBZnJEO21CQUdvQjsyREFoaE03QnhGLHdCQTJoTXVDO2lCQWQ5Qjt5RUFlc0Q7YUFuQi9EOzs7OzthQTRDWTs7VUF2NktpQjtXQXMzS2U7Ozs7Ozs7O3FCQTZEeENrRyxZQUFxQnBNO2NBQ3hCO2dCQUNFOzs7b0JBMmFxQzs7Ozs7Ozt3QkE3YWZBO3FCQXdhaEI7O3dCQTNzQlR1TTt3QkE0c0JZOzs7OzswQkF6YVJIOztxQkFvYUs7Ozs7Ozs7MkVBYW1EOzs7b0JBakJyQjs7cUJBQTlCOzREQW4rTVR4ZTtvQkFtK01TLHVEQUFnRTs7OztxQkExWjdEO3VCQUtLLHNCQTZZb0IsOEJBQWdCO3VCQTdZcEMsc0JBNFlvQixRQUFLO3VCQTVZekI7Ozs7NEJBSVE7OEJBdVlROzsrQkFMQTs7Ozs7OzsrQkFQSDs7a0NBN3FCOUIyZTtrQ0E4cUJpQzs7Ozs7b0NBM1k3Qkg7OytCQXFZMEI7Ozs7Ozs7cUZBaUJnQzs0QkF2WXJDOzhCQWlWb0IsT0FwNk03Q2hlOzs7Ozs7Ozs7OzhCQW83TXVDOzsrQkFGSDs7NkRBOVdYNFI7K0JBNldROytCQURNOytCQURIO3NFQTk2TXBDcFM7K0JBNjZNdUM7K0JBREg7c0VBNTZNcENBOytCQTI2TWlDOytCQURIO3FGQTBCMkM7NEJBbFhoRDs7OztpQ0FLUTttQ0EyVVE7O29DQVBBOzs7Ozs7O29DQVJIOzt1Q0FubkJ0QzJlO3VDQW9uQnlDOzs7Ozt5Q0FqVnJDSDs7b0NBMlVrQzs7Ozs7OzswRkFvQmdDO2lDQTNVckM7bUNBNlFLLE9BcjJNdENoZTs7Ozs7Ozs7OzttQ0F1M00rQzs7b0NBRkg7O2tFQWpUbkI0UjtvQ0FnVGdCO29DQURNO29DQUZIOzJFQWgzTTVDcFM7b0NBKzJNK0M7b0NBRkg7MkVBNzJNNUNBO29DQTQyTXlDO29DQURIOzBGQStCbUI7aUNBblR4Qjs7OztzQ0FNUTt3Q0FvUVE7O3lDQVBBOzs7Ozs7O3lDQVRIOzs0Q0FqakI5QzJlOzRDQWtqQmlEOzs7Ozs4Q0EvUTdDSDs7eUNBdVEwQzs7Ozs7OzsrRkF3QmE7c0NBclFsQjt3Q0FnTUssT0E5eE05Q2hlOzs7Ozs7Ozs7O3dDQWl6TXVEOzt5Q0FGSDs7dUVBM08zQjRSO3lDQTBPd0I7eUNBRE07eUNBRkg7Z0ZBMXlNcERwUzt5Q0F5eU11RDt5Q0FGSDtnRkF2eU1wREE7eUNBc3lNaUQ7eUNBREg7K0ZBZ0NtQjtzQ0F4T3hCOzs7OzJDQU9ROzZDQXNMUTs7OENBUEE7Ozs7Ozs7OENBVEg7O2lEQTFldEQyZTtpREEyZXlEOzs7OzttREF4TXJESDs7OENBZ01rRDs7Ozs7OztvR0F3QmE7MkNBdkxsQjs2Q0F1R0ssT0E1c010RGhlOzs7Ozs7Ozs7OzZDQWd1TThEOzs4Q0FGRjs7NEVBMUpuQzRSOzhDQXlKZ0M7OENBREs7OENBRkY7cUZBenRNNURwUzs4Q0F3dE04RDs4Q0FGRjtxRkF0dE01REE7OENBcXRNeUQ7OENBREg7b0dBMENnQjsyQ0ExSnJCOzs7O2dEQVFRO2tEQTRGSzs7bURBUEE7Ozs7Ozs7bURBVkE7O3NEQXZaOUQyZTtzREF5WjhEOzs7Ozt3REF0SDFESDs7bURBNkcwRDs7Ozs7Ozt5R0F5QlU7Z0RBN0ZmO2tEQVVLLE9Bdm5NOURoZTs7Ozs7Ozs7OztrREE0b004RDs7bURBRkE7O2lGQXRFckM0UjttREFxRXFDO21EQURBO21EQUZBOzBGQXJvTTlEcFM7bURBb29NOEQ7bURBRkE7MEZBbG9NOURBO21EQWlvTThEO21EQUZBO3lHQTJDUTtnREE5RGI7d0dBNkZnQjsyQ0FyR3hCO3FHQXVMbUI7c0NBOUwzQjtnR0FxUW1CO2lDQTNRM0I7MkZBMlVzQzs0QkFoVjlDO3NGQXVZc0M7dUJBM1k5QztpRkE2WXFDO3FCQWxaMUMsc0JBR29CLFFBQUk7cUJBSHhCOzZFQWtaMkM7aUJBdFpwRDs7Ozs7O2lCQWliWTtnQkFwZWMsWUF5ZXlCO1dBNWJlOzs7Ozs7OztZQWtjckU7bUNBU3FCLE9BMWdOckJBLGFBMGdObUM7OztnQkFOZCxtREFLd0M7YUFSN0Q7YUFKRTs7Ozs7Ozs7OzthQWVVOztVQU1oQjtZQUtJO21DQWErQixPQTloQi9CNGUsOEJBOGhCaUU7OztnQkFWNUMsbURBVVY7YUFiWDthQUpFOzs7Ozs7Ozs7O2FBbUJVOztVQVVoQjtZQUtJO21DQWErQixRQUFJOzs7Z0JBVmQsbURBVVY7YUFiWDthQUpFOzs7Ozs7Ozs7O2FBbUJVOztVQVVoQjtZQUtJO21DQWNxQixPQXgvTXJCeEksOEJBdy9Nb0U7OztnQkFYL0MsbURBVVY7YUFiWDthQUpFOzs7Ozs7Ozs7O2FBb0JVOztVQW45TGlCO1dBbStMd0M7O2NBSGpDOytDQW40eUJ0QzNFOztlQSt3eUJFbUY7ZUFzQkFDO2VBOEJBQztlQThCQUM7V0ErQjRDOzRDQUE1Q3RVO1VBQTRDO1lBcUI1QzttQ0FTcUIsT0E1b05yQmpDLFNBNG9OK0I7OztnQkFOVixtREFLd0M7YUFSN0Q7YUFKRTs7Ozs7Z0JBOXEyQko0TDs7Ozs7YUE2cjJCYzs7VUFNaEI7WUFLSTttQ0FTcUIsUUFBSzs7O2dCQU5MLG1EQUt3QzthQVI3RDthQUpFOzs7Ozs7Ozs7O2FBZVU7O1VBTWhCO1lBS0k7bUNBU3FCLFdBQXFDOzs7Z0JBTnJDLG1EQUt3QzthQVI3RDthQUpFOzs7OztnQkFweDJCSkg7Ozs7O2FBbXkyQmM7O1VBTWhCO1lBS0k7OztnQkFTcUIscURBQThCOzs7Z0JBTjlCLG1EQUt3QzthQVI3RDthQUpFOzs7Ozs7Ozs7O2FBZVU7O1VBTWhCO1lBS0k7bUNBU3FCLE9BN3RCckIyUyw4QkE2dEJ1RDs7O2dCQU5sQyxtREFLd0M7YUFSN0Q7YUFKRTs7Ozs7Ozs7OzthQWVVOztVQU1oQjtZQUtJO21DQVNxQixPQTd2TnJCeE0seUJBNnZOK0M7OztnQkFOMUIsbURBS3dDO2FBUjdEO2FBSkU7Ozs7Ozs7Ozs7YUFlVTs7VUFNaEI7WUFNSTttQ0FTcUIsT0FueE5yQkMsOEJBbXhOb0Q7OztnQkFOL0IsbURBS3dDO2FBUjdEO2FBTEU7Ozs7O2dCQXYwMkJKbEc7Ozs7O2FBdTEyQmM7O1VBTWhCO1lBS0k7bUNBU3FCLE9BeHlOckJnSixJQXd5TjBCOzs7Z0JBTkwsbURBS3dDO2FBUjdEO2FBSkU7Ozs7O2dCQXZnM0JKMUo7Ozs7O2FBc2gzQmM7O1VBTWhCO1lBS0k7bUNBU3FCLE9BNXpOckJ6TCxhQTR6Tm1DOzs7Z0JBTmQsbURBS3dDO2FBUjdEO2FBSkU7Ozs7Ozs7Ozs7YUFlVTs7VUFNaEI7WUFLSTs7O2dCQVNxQixzREFBeUI7OztnQkFOekIsbURBS3dDO2FBUjdEO2FBSkU7Ozs7Ozs7Ozs7YUFlVTs7VUFwc01pQjtXQTBzTWpDOztjQUNtQixzQkFpQmdCLFFBQUk7Y0FqQnBCO2dCQU9NLG1EQVVWO2NBYlg7Ozs7Ozs7OzZCQWFzQztXQWxCMUM7O2NBb0JrQztnQkFTVCxzQkE2Rm9CLDhCQUFnQjtnQkE3RnBDLHNCQTRGb0IsUUFBSztnQkE1RnpCOzs7O3FCQUtRLHNCQXNGb0IsUUFBSTtxQkF0RnhCO3VCQW9Eb0IsT0FqN05qRFE7Ozs7Ozs7Ozs7dUJBZzhOMkM7O3dCQURIOytEQTk3TnhDUjt3QkE2N04yQzt3QkFESDsrREE1N054Q0E7d0JBMjdOcUM7d0JBREg7OEVBdUJ1QztxQkFyRjVDOzs7OzBCQU1RLHNCQTZDb0IsUUFBSTswQkE3Q3hCOzRCQU1LLE9BejROMUNROzs7Ozs7Ozs7OzRCQTI1Tm1EOzs2QkFGSDtvRUF4NU5oRFI7NkJBdTVObUQ7NkJBRkg7b0VBcjVOaERBOzZCQW81TjZDOzZCQURIO21GQTJCZ0I7MEJBNUNyQjtrRkE2Q3lCO3FCQW5EakM7K0VBc0Z5QjtnQkEzRmpDOzBFQTZGcUM7Y0F0RzVCLHNCQU9ZLFFBQUk7Y0FIL0I7Ozs7Ozs7OzZCQWtHOEM7V0ExSGpFOzRCQTRIbUIsOEJBSUg7V0FPMkI7O2NBSHhDOytDQXgydkJEK1U7O2VBdWd2QkVzSDtlQXNCQUM7ZUFzQkFDO2VBc0JBQztlQXNCQUM7ZUFzQkFDO2VBc0JBQztlQXVCQUM7ZUFzQkFDO2VBc0JBQztlQXNCQUM7ZUFtQkFDO2VBd0dBQztXQU1rRDs2Q0FBbERsYTtVQUFrRDtZQWdEbEQ7bUNBZ0MrQixPQW4vTS9CcWIsMkJBbS9NMkQ7OztnQkFWdEMsbURBVVY7Ozs7aUJBNUJGO21CQWdCSzs7NEJBemhDZFE7NEJBMy9LQVYsb0JBcWhOb0M7aUJBakIzQjttQkFHb0I7MkRBbDRNN0JLLG9CQTY0TW1DO2lCQWQxQjt5RUFpQjRCO2FBckJyQzs7Ozs7YUFrQ1k7O1VBNzVNaUI7V0FzM003Qk87WUFBK0M7Ozs7Ozs7WUFrRC9DOzs7Z0JBcUZnQzs7Ozs7OztvQkFqcE9oQzFNO2lCQTRvT007O29CQTNrQ055TTtvQkE0a0NTOzs7OztzQkF0b09UM0c7O2lCQWlvT007Ozs7Ozs7dUVBYW1EOzs7Z0JBM0JwQyxtREFVVjs7OztpQkFwRUY7bUJBOEJXOzs7Ozs7O3VCQTlsT3BCOUY7b0JBd2xPaUI7O3VCQXZoQ2pCeU07dUJBd2hDb0I7Ozs7O3lCQWxsT3BCM0c7O29CQTRrT2lCOzs7Ozs7O29CQUgrQjs7b0JBa0M1Qjs7Ozs7O3VCQWxuT3BCOUY7b0JBNG1PaUI7O3VCQTNpQ2pCeU07dUJBNGlDb0I7Ozs7O3lCQW5tT3BCekc7O29CQTZsT2lCOzs7Ozs7O29CQUg0Qjs7bUJBb0IxQjs7NkJBeENBa0I7NkJBb0JBQzs7NEJBcEJBRCxpQkF5QzZDO2lCQXpEdkQ7bUJBR29COzs7NEJBMWpPN0JuQiwrQkFxa091RDtpQkFkOUM7eUVBeUR3RDthQTdEakU7Ozs7O2FBMkZZOztVQW5nTmlCO1dBbTZNN0I0RztZQUFvQzs7Ozs7OztZQTBHcEM7bUNBY3FCLE9BL2lCckIvSCxnQ0EraUJtRTs7O2dCQVg5QyxtREFVVjthQWJYOzs7O2FBZ0JZOztVQTdoTmlCO1dBeWdON0IyQztZQUE4Qjs7Ozs7OztZQStCOUI7bUNBZU0sT0FyTU51RCxpQ0FxTThFOzs7Z0JBWnpELG1EQVVWO2FBYlg7Ozs7YUFpQlk7O1VBempOaUI7V0FtaU5XOzs7Ozs7OztxQkFnQ3BDM0c7Y0FDSDtnQkFDRTs7O29CQXdCUzs7Ozs7Ozt3QkExQlJBO3FCQXlCNkQ7O3dCQUZ0Qjt5REFwd0MzQ0c7O3FCQWl3Q3lDOzs7Ozs7O3FCQUZPOztvQkFjcEM7OzhCQWRFc0k7OEJBL05kRjs2QkErT1k7OytCQS9PWkE7K0JBK05jRTs2QkFrQkYsK0NBQTZCOzs7b0JBL0JqQixtREFXVjtpQkFkWDs7Ozs7O2lCQW9DWTtnQkE5RE0sWUFtRWlDO1dBL0NEOzs7Ozs7OztZQW9EckQ7OztnQkFnQlE7OzBCQWx4T1JoSDswQkFrak9BK0c7O3lCQWxqT0EvRyxxQkFteE9tRTs7O2dCQWQ5QyxtREFVVjthQWJYOzs7O2FBbUJZOztVQXRvTmlCO1dBK21OQzs7Ozs7Ozs7cUJBaUMxQnhHO2NBQ0g7Z0JBQ0U7OztvQkEyQlM7Ozs7Ozs7d0JBN0JSQTtxQkE0QnVEOzt3QkFIaEM7OzswQkE1akQzQnFFOztxQkF3akRZOzs7Ozs7O3FCQUh5Qjs7cUJBNEJ6Qjs7Ozs7O3dCQTVCRXVCO3FCQTJCaUM7O3dCQUhsQzs7OzBCQTNIYlQ7O3FCQXVIWTs7Ozs7OztxQkFId0I7b0JBaUJ0Qjt5REFsQ0FTLGNBaUJBc0c7NkJBa0JGOzZCQUNBO3lEQXBDRXRHLGNBaUJBc0csV0FtQnlDOzs7b0JBakQvQixtREFXVjtpQkFkWDs7Ozs7O2lCQXNEWTtnQkFsRk0sWUF1RmlDO1dBakVXOzs7Ozs7OztZQXNFakU7OztnQkFpQlc7Ozs7b0JBcEhYOUQ7b0JBeG1GQTREO2lCQTJ0RlE7O29EQXpOUjdEO2dCQXlOUTs7O3lCQS9MUjRELDRCQWtNb0M7OztnQkFoQmYsbURBVVY7YUFiWDs7OzthQXFCWTs7VUF2dU5pQjtXQThzTkM7Ozs7Ozs7O3FCQW1DMUIvTDtjQUNIO2dCQUNFOzs7b0JBMkJTOzs7Ozs7O3dCQTdCUkE7cUJBNEJ1RDs7d0JBSGhDOzs7MEJBOUgzQm1NOztxQkEwSFk7Ozs7Ozs7cUJBSHlCOztxQkF5QnpCOzs7Ozs7d0JBekJFdkc7cUJBd0IrQzs7d0JBRmxDOzs7MEJBcHZPM0I3Qjs7cUJBaXZPeUI7Ozs7Ozs7cUJBRks7cUJBZ0JaO3FCQURZOzJEQWhDaEI2QixjQWlCQUs7cUJBZUM7cUJBREg7O3FCQU9HO3FCQURBOzs7d0JBUERDO3dCQWJBRDtvQkFtQkY7NkJBR0E7OytCQVRFQzsrQkFiQUQ7NkJBdUJGLCtDQUErQjs7O29CQXJEbkIsbURBV1Y7aUJBZFg7Ozs7OztpQkEwRFk7Z0JBeEZNLFlBNkZpQztXQXJFbUI7Ozs7Ozs7O3FCQTJFckVqRztjQUNIO2dCQUNFOzs7b0JBc0JTOzs7Ozs7O3dCQXhCUkE7cUJBdUIrRDs7d0JBSHhDOzs7MEJBL0YzQm1HOztxQkEyRlk7Ozs7Ozs7cUJBSHlCOzs7NkJBQXZCUCxjQXQ5T2Q1VyxVQUNBUixjQXUrT3VDOzs7b0JBMUJmLG1EQU1WO2lCQVRYOzs7Ozs7aUJBK0JZO2dCQW5HUyxZQXdHOEI7V0ExQ3ZDOzs7Ozs7OztxQkErQ1h3UjtjQUNIO2dCQUNFOzs7b0JBMkJTOzs7Ozs7O3dCQTdCUkE7cUJBNEJ1RTs7d0JBSGhEOzs7MEJBekUzQnVLOztxQkFxRVk7Ozs7Ozs7cUJBSHlCOztvQkFpQnZCOzs4QkFqQkEzRTs4QkF0N05kaUg7NkJBdzhOaUI7NkJBbEJIakgsYUFrQmtEOzs7b0JBL0J4QyxtREFXVjtpQkFkWDs7Ozs7O2lCQW9DWTtnQkE1RVMsWUFpRjhCO1dBL0NJOzs7Ozs7OztrQkFoUDFEd0M7a0JBdEdBRDtrQkEwQkE0RDtrQkEyS0F6RjtrQkFpSkFEO1FBcjJOWTtNQW5oQkEsdUNBaTdPNkI7SUF6OTRCN0IsU0EyOTRCZG9ILCtCQUF3Q0E7TUFDMUM7Y0FEMENBO09BQzFDLFVBRDBDQTtPQUMxQyxjQUQwQ0E7T0FDMUMsK0JBRDBDQTtPQUMxQywyQkFEMENBO09BQzFDLCtCQUQwQ0E7TUFDMUM7UUFXSTs7O1lBTU07Y0FhOEIscURBQThCO1lBYjVEO2NBR29CLG1EQVVWO1lBYlYsaUVBYTZEOytCQWY5QyxRQUFJOzs7O2FBREQsa0JBVHhCSyxpQ0FTNEQ7U0FINUQ7Ozs7U0FxQlk7O01BaENoQjtPQU1JQztRQUEwQzs7O1FBcUMxQzs7O1lBYStCLG9EQUF1Qjs7MEJBVmpDLG1EQVVWO1NBYlg7Ozs7U0FlWTs7TUExRGhCO09Bc0NJQztRQUF5Qzs7O1FBOEJ6Qzs7O1lBYStCLHNEQUF1Qjs7MEJBVmpDLG1EQVVWO1NBYlg7Ozs7U0FlWTs7TUFuRmhCO09BZ0VJQztRQUF3Qzs7O1FBOEJ4Qzs7O1lBY007eUJBNUdOUDs7b0VBc0gwQzs7MEJBckJyQixtREFTVjtTQVpYOzs7O1NBMEJZOztNQXhIaEI7T0F5RklRO1FBQXVDOzs7UUF5Q3ZDOzs7WUE2QlE7d0RBL0pSUjthQStKUSxNQS9KUkE7WUErSlEsT0EvSlJBOzt5QkFxSmtEOzs7eUJBRUw7Ozt5QkFDQTs7O3lCQUNHOzs7eUJBRWhDOzs7eUJBRUE7WUFFUixVQWJBO29FQWE4Qzs7MEJBMUJqQyxtREFVVjtTQWJYOzs7O1NBK0JZOztNQWpLaEI7T0E4SElTO1FBQXNDOzs7UUE4Q3RDOytCQW9EcUIsUUFBSzs7MEJBTkwsbURBS3dDOzs7O2FBL0NwRCxzQkF5QzhCLFFBQUk7YUF6Q2xDO2VBK0JvQixtREFVVjthQXpDVjs7OztrQkFJUSxzQkEwQm9CLFFBQUs7a0JBMUJ6QjtvQkFJb0IsT0F4THJDVDs7Ozs7Ozs7OzsyRUE2TXlEO2tCQXpCeEM7MEVBMEIwQjthQTlCbEM7dUVBeUNtQztTQTdDNUM7Ozs7U0FzRFk7O01BbE9oQjtPQXVLSVU7UUFBMkM7OztRQXNFM0M7K0JBMEJxQixRQUFLOzswQkFOTCxtREFLd0M7Ozs7YUFyQnBELHNCQWVvQixRQUFJO2FBZnhCO2VBYUssK0NBOVBkVjtlQThQYyx1REFDaUU7YUFkdEUsaUVBZXlCO1NBbkJsQzs7OztTQTRCWTs7TUF6UWhCO09Bd09JVztRQUF5RDs7O1FBNEN6RDsrQkF5QnFCLFFBQUs7OzBCQU5MLG1EQUt3Qzs7OzthQXBCcEQsc0JBY29CLFFBQUk7YUFkeEI7ZUFHb0IsaURBM1I3QlgsVUFxUzBFO2FBYmpFLGlFQWN5QjtTQWxCbEM7Ozs7U0EyQlk7O01BL1NoQjtPQStRSVk7UUFBd0M7OztRQTJDeEM7OztZQU1NLHNCQTRCb0IsUUFBSztZQTVCekI7Y0FxQm9CLG1EQU13QztZQTNCNUQ7Ozs7aUJBSVEsc0JBZ0JvQixRQUFJO2lCQWhCeEI7bUJBR29COzJEQXZVbENaLGFBbVY2RTtpQkFmL0Q7eUVBZ0J5QjtZQXBCakM7c0VBNEIwQjsrQkE5QlgsUUFBSTs7OzthQURELGtCQTFUeEJFLGlDQTBUbUU7U0FIbkU7Ozs7U0FvQ1k7O01BOVZoQjtPQXFUSVc7UUFBaUQ7OztRQW9EakQ7K0JBZXFCLE9BdlhyQlosWUF1WHdEOzswQkFabkMsbURBV3lDO1NBZDlEO1NBSkU7Ozs7Ozs7Ozs7U0FxQlU7O01BMVhoQjtPQTBZeUQ7O1VBRnpCLDBDQTdtMEI5QnZNO2FBeWswQkVvTjtPQWtDcUM7d0NBQXJDL2U7TUFBcUM7UUFZckM7OztZQThDTSxVQS9iTmtlO1lBK2JNLGtCQUU2QjtZQUY3QixJQUd3QmU7WUFDcEIsT0FEb0JBLGFBQytEOzswQkFmeEUsbURBU1Y7Ozs7YUF4Q0Y7ZUEwQkssVUEvYWRmO2VBK2FjLGtCQUU2QjtlQUY3QixJQUd3QmU7ZUFDcEIsT0FEb0JBLGFBQ3FEO2FBOUJsRjtlQUdvQixPQXpaN0JoQjs7Ozs7Ozs7OztzRUE4YWlEO2FBeEJ4QyxpRUE4Qm1GO1NBbEM1Rjs7OztTQW9EWTs7TUF0Y2hCO09BOFlJaUI7UUFBK0I7OztRQWlFZDs7U0FESCw0Q0E1Y2RuZ0I7Ozs7U0ErYzBCOztNQU9kO1FBT2hCO1VBS0k7OztjQUtNLHNCQStHNkMsOEJBQWdCO2NBL0c3RCxzQkErR29CLFFBQUs7Y0EvR3pCO2dCQWdHUTtrQkFjb0Isd0RBQStCO2dCQWRuRDtrQkFhVzs7bUJBREg7MERBbmxCdEJBO21CQWtsQnlCO21CQURIOzBEQWpsQnRCQTttQkFnbEJtQjt5RUFJeUM7Z0JBYjlDO3dFQWNvRDtjQTlHNUQ7Z0JBZ0ZRO2tCQWNvQix3REFBK0I7Z0JBZG5EO2tCQWFXOzttQkFESDswREFua0J0QkE7bUJBa2tCeUI7bUJBREg7MERBamtCdEJBO21CQWdrQm1CO3lFQUl5QztnQkFiOUM7d0VBY29EO2NBOUY1RDtnQkFtRVE7a0JBV29CLHdEQUErQjtnQkFYbkQ7a0JBVVE7O21CQURIOzBEQW5qQm5CQTtrQkFtakJtQix1REFDcUM7Z0JBVjFDO3dFQVdvRDtjQTlFNUQ7Z0JBOENRO2tCQW1Cb0Isd0RBQStCO2dCQW5CbkQ7a0JBa0JXOzttQkFESDswREF0aUJ0QkE7bUJBcWlCeUI7bUJBREg7MERBcGlCdEJBO21CQW1pQm1CO3lFQUl5QztnQkFsQjlDO3dFQW1Cb0Q7Y0FqRTVEO2dCQXlCUTtrQkFtQm9CLHdEQUErQjtnQkFuQm5EO2tCQWtCVzs7bUJBREg7MERBamhCdEJBO21CQWdoQnlCO21CQURIOzBEQS9nQnRCQTttQkE4Z0JtQjt5RUFJeUM7Z0JBbEI5Qzt3RUFtQm9EO2NBNUM1RDs7OzttQkFJUTtxQkFtQm9CLHVEQUE4QjttQkFuQmxEO3FCQWtCVzs7c0JBREg7NkRBNWZ0QkE7c0JBMmZ5QjtzQkFESDs2REExZnRCQTtzQkF5Zm1COzRFQUl5QzttQkFsQjlDOzJFQW1CbUQ7Ozs7OztjQXZCM0Q7d0VBK0c4RDtpQ0FqSC9DLFFBQUk7V0FIekI7Ozs7V0FzSFk7O1FBM0g2QjtTQUF6Q29nQjtVQUF5Qzs7Ozs7OztVQXNJekM7aUNBd0lxQixRQUFLOzs7Y0FOTCxtREFLd0M7Ozs7ZUFuSXBELHNCQTZIb0IsUUFBSztlQTdIekI7aUJBOEdvQixnQkF2dEI3QmxCO3dFQXF1QnlEO2VBNUhoRDs7OztvQkFJUSxzQkF5R29CLFFBQUk7b0JBekd4QjtzQkFJb0IsVUFqbkJyQ0E7c0JBaW5CcUM7Ozt3QkFlViw0QkFEMEJtQjt3QkFDMUI7MEJBOENlOzs7OzJCQUVZOzt3QkFoRDNCO3lCQU9POzs7Ozs0QkFobzJCcENwUDsrQkF3bjJCdURvUCxZQTduQnJEcmdCO3lCQW9vQitEOzs0QkFINUI7Ozs4QkFwcHpCckMwVTs7eUJBdXB6QmlFLFlBTDNCelQ7d0JBeUVIO3dCQTFFTjt5QkFvRWU7Ozs7OzRCQTEyNEI1QytNOzRCQW0yNEJxQzNMO3lCQUtMOytCQWxFSDs2RUFxRjhEO29CQXhHeEU7NEVBeUd5QjtlQTdHakM7eUVBNkgwQjtXQWpJbkM7Ozs7V0EwSVk7O1FBaFI2QjtTQWlJekNpZTtVQUEyQzs7Ozs7OztVQTBKM0M7aUNBU3FCLE9BandCckJ0Z0IsYUFpd0JtQzs7O2NBTmQsbURBS3dDO1dBUjdEO1dBSkU7Ozs7Ozs7Ozs7V0FlVTs7UUFNaEI7VUFLSTtpQ0FTcUIsT0F6eEJyQmtmLFNBeXhCNkM7OztjQU54QixtREFLd0M7V0FSN0Q7V0FKRTs7a0RBdjI1Qko5Uzs7OztXQXMzNUJjOztRQTVUNkI7U0FrVTdDOztZQUVrRTtjQW9MQSxtREFBZ0M7WUFwTGhDO2NBb0tBLG1EQWFLO1lBakxMOzs7O2lCQWdCQTttQkFhQSxzQkFtSUEsOEJBQ1U7bUJBcElWLHNCQWdJQSxRQUFLO21CQWhJTDs7Ozt3QkFVQTswQkFtSEEsbURBQWdDO3dCQW5IaEM7MEJBdUVBLE9BajVCOUQ4Uzs7Ozs7Ozs7OztpRkEwN0JvRTt3QkFoSE47Ozs7NkJBVUE7K0JBMERBLG1EQUFnQzs2QkExRGhDOytCQVVBLE9BOTFCOURBOzs7Ozs7Ozs7OytCQTIyQjhEOzs7O21DQXoyQjlEbGY7bUNBSUF1ZjtnQ0FvMkI4RDtzRkFpQ1E7NkJBdkRSO3FGQTBEaUM7d0JBcEVqQztrRkFtSGlDO21CQTdIakM7NkVBb0lXO2lCQWpKWCxzQkFVQSxRQUFJO2lCQVZKO3lFQWlKWTthQTNKWjs7Ozs7OzsyQkE4S21DO1NBTWhFOztZQUhNOzZDQXB0aUJ6QzFGOzthQSsraEJFdFg7YUFzQkFDO2FBc0JBSTtTQXVMOEM7MENBQTlDUDtTQUE4QywrQkFBOUNBO1FBQThDO1VBcUI3Qjs7V0FESDs7eUNBdDhCZG1kOzs7O1dBeThCMEI7O1FBVVQ7VUFVckI7WUFHcUI7O2FBREg7OzJDQXI4QmRDOzs7O2FBdzhCMEI7O1VBVVQ7WUFVckI7Y0FLSTtxQ0ErRnFCLFFBQUs7OztrQkFOTCxtREFLd0M7Ozs7bUJBMUZwRCxzQkFvRm9CLFFBQUk7bUJBcEZ4QjtxQkFpRW9CLE9BdG1DN0JQOzs7Ozs7NEVBd25DNkQ7bUJBbkZwRDs7Ozt3QkFJUSxzQkE0RG9CLFFBQUs7d0JBNUR6QjswQkF1Q29CLE9BaGxDckNBOzs7OEJBeUZBc0I7Ozs7Ozs7Ozs7bUVBMmdDc0U7d0JBM0RyRDs7Ozs2QkFJUSxzQkFrQ29CLFFBQUk7NkJBbEN4QjsrQkFJb0IsVUFqakM3Q3RCOytCQWlqQzZDO2dDQTBCRCxtQkFEMER3Qjs7NENBRzFEOytCQTVCQztnQ0FxQlQ7OzttQ0FJa0VBO21DQTFnQ3RHakI7Z0NBc2dDb0MsTUF0a0NwQ1A7K0JBc2tDb0M7Z0NBSlEscUJBRDBEMEI7OzRDQUcxRDsrQkFuQkM7Z0NBWVQ7OzttQ0FJa0VBO21DQTNoQ3RHcEI7Z0NBc2hDaUM7Z0NBREg7OzttQ0FsK0I5QkU7OytCQWsrQjhCLHVEQW1CeUM7NkJBakM5QztxRkFrQ3lCO3dCQXRDakM7a0ZBNEQwQjttQkFoRWxDOzZFQW9GeUI7ZUF4RmxDOzs7OztlQWlHWTs7WUF0R2dDO2FBQTVDbUI7Y0FBNEM7Ozs7Ozs7Y0FnSDVDOzs7a0JBTU0sc0JBK0dvQixRQUFLO2tCQS9HekI7b0JBd0dvQixtREFNd0M7a0JBOUc1RDs7Ozt1QkFJUSxzQkFtR29CLFFBQUk7dUJBbkd4Qjt5QkFvRmM7OzBCQUZHLDJDQXh1Qy9CM0I7MEJBc3VDNEIsMkNBdHVDNUJBOzBCQXF1Q3lCO2dDQXJ1Q3pCQTs7c0NBMHRDOEI7OztzQ0FFQTs7O3NDQUVBOzs7c0NBRUE7OztzQ0FFQTs7O3NDQUVBO3lCQU1GOzBCQXBCTjs7MEJBNEJNOzBCQURIOzt3REFubkN6QlM7MEJBa25DNEI7MEJBRkg7Ozs2QkExQkhtQjs7eUJBeUJBOzBCQVFHOzs7NEJBRkgsc0NBbnZDdEI1Qjs7Ozs0QkFzdkNzQjs7OEJBdHZDdEJBOzhCQW90Q3NCNEI7eUJBb0M0RCx1REFBRzt1QkFsR3ZFOzs7OzRCQUlRLHNCQTZDb0IsUUFBSTs0QkE3Q3hCOzhCQTBDaUI7OytCQURIOzs2REFya0NwQ25CO2tDQXVrQ29DO2tDQUNBOytCQU5OO3NFQWhzQzlCVDsrQkE4ckMyQiwyQ0E5ckMzQkE7OEJBOHJDMkIsdURBUXFDOzRCQTVDMUM7Ozs7aUNBS1Esc0JBb0JvQixRQUFLO2lDQXBCekI7bUNBbUJXOztvQ0FGSDs7a0VBbGpDdENTO29DQWdqQ21DLDJDQTlxQ25DVDttQ0E4cUNtQyx1REFJZ0M7aUNBbkJyQzt5RkFvQjBCOzRCQXpCbEM7c0ZBNkN5Qjt1QkFqRGpDO2lGQW1HeUI7a0JBdkdqQzs0RUErRzBCO3FDQWpIWCxRQUFJOzs7O21CQURELGtCQTNvQ3hCRyw2QkEyb0NzRDtlQUh0RDs7Ozs7ZUF1SFk7O1lBdk9nQzthQTRHNUMwQjtjQUFvQzs7Ozs7OztjQXFJcEM7cUNBZXFCLE9BLzRCckJkLGdDQSs0QnVFOzs7a0JBWmxELG1EQVd5QztlQWQ5RDs7Ozs7ZUFpQlk7O1lBbFFnQzthQTZPNUNlO2NBQWdDOzs7Ozs7O2NBZ0NoQztxQ0F3QnFCLFFBQUs7OztrQkFOTCxtREFLd0M7Ozs7bUJBbkJwRCxzQkFhcUQsUUFBSTttQkFiekQ7cUJBR29COzs7OEJBeEs3QkQsNkJBa0wwQzttQkFiakM7MkVBYTBEO2VBakJuRTs7Ozs7ZUEwQlk7O1lBdlNnQzthQXdRNUNFO2NBQXlEOzs7Ozs7O2NBeUN6RDs7O2tCQWVROztxREFuRlJELHlCQW1GeUM7OztrQkFacEIsbURBU3lDO2VBWjlEOzs7OztlQWlCWTs7WUFsVWdDO2FBNlM1Q0U7Y0FBK0I7Ozs7Ozs7Y0ErQi9CO3FDQTRDcUIsUUFBSzs7O2tCQU5MLG1EQUt3Qzs7OzttQkF2Q3BELHNCQWlDb0IsUUFBSTttQkFqQ3hCO3FCQStCVzs7Ozt5QkEzeUJwQlo7eUJBb3NCQVc7c0JBc0dpQjs7O3lCQTlXakJKOztzQkE2V2M7Ozt5QkFwbENkZDs7cUJBb2xDYyx1REFHNkQ7bUJBaENsRTs7Ozt3QkFJUSxzQkFlb0IsUUFBSzt3QkFmekI7MEJBYUs7Ozs7OEJBOW1DdEJEOzhCQXZDQUQ7MEJBcXBDc0IsdURBQ3FEO3dCQWQxRDtnRkFlMEI7bUJBbkJsQzs2RUFpQ3lCO2VBckNsQzs7Ozs7ZUE4Q1k7O1lBMVhnQzthQXdVZDs7Ozs7Ozs7dUJBMkQxQnVCO2dCQUNIO2tCQUNFO3lDQXNKcUIsUUFBSzs7O3NCQVBMLG1EQU13Qzs7Ozt1QkFqSnBELHNCQTBJb0IsUUFBSTt1QkExSXhCO3lCQUdvQixTQVQ1QkE7OzsyQkEySWlDOzRCQXBIb0JDLE9BdkJyREQ7a0NBdUJxREM7NEJBb0hwQjs7MkRBcEhvQkEsVUE3S3pETDs0QkFnU2tDO3lFQXZpRGxDaGhCOzRCQXNpRCtCOzs2QkE5Q2tCOzs7OzhCQUVZOzsyQkE4Q3hCOzRCQTNGSTs7Ozs7K0JBejkzQjNDZ1I7a0NBZzgzQjJEcVEsVUFwN0N6RHJoQjs0QkE0OEM4RTs7K0JBSGxDOzs7aUNBeC8wQjlDeVU7OzRCQTIvMEJnRixZQUxuQ3hUOzJCQWlGSDsyQkFnQkg7NEJBdEJBOzs7OzsrQkFuczZCdkM4TTsrQkEwcjZCNEMxTDs0QkFNTDs0QkExRUgsMkNBakJ1QmdmOzRCQWFwQjs7MkRBYm9CQSxVQTdHekRIOzRCQXlIa0M7eUVBaDhDbENsaEI7NEJBKzdDK0I7NEJBREg7NEJBRE07NEJBRkg7OzsrQkE5OUIvQm9nQjs7NEJBNDlCNEIsNENBTDZCaUI7NEJBSWhDOzRCQUZBLDJDQUZnQ0E7a0NBQ25DO2dGQXVId0Y7dUJBeklsRzsrRUEwSXlCO21CQTlJbEM7Ozs7OzttQkF3Slk7a0JBck1zQixZQTBNaUI7YUFsS0w7Ozs7Ozs7O2NBdUtqRDtxQ0F1QnFCLFFBQUs7OztrQkFOTCxtREFLd0M7Ozs7bUJBbEJwRCxzQkFZdUQsUUFBSTttQkFaM0Q7cUJBV1E7Ozs7eUJBdGpCakJSO3lCQXdVQU07c0JBNk9jOzttREFuc0NkaEI7cUJBbXNDYyx1REFFOEI7bUJBWm5DOzJFQVk0RDtlQWhCckU7Ozs7O2VBeUJZOztZQWhrQmdDO2FBbWlCdkI7Ozs7Ozs7O3VCQXVDakJpQjtnQkFDSDtrQkFDRTt5Q0E2VHFCLFFBQUs7OztzQkFQTCxtREFNd0M7OztzQkF2T3BELHNCQWdPcUMsUUFBSTtzQkFoT3pDO3dCQXlMb0IsU0FoUjVCQTt5QkE4UmtCO2lDQTlSbEJBOzBCQXVTa0I7Ozs7OzZCQTUzNkJ4QjFTO2dDQWszNkJvRHJOOzBCQVNhOzs2QkFIWDs7OytCQXA2QnBEcUI7OzBCQWk2QndDOzs7Ozs7O2dDQUZsQjs7OytFQXlCTztzQkFoT2pCOzs7OzJCQUlROzZCQUtLLHNCQStLb0IsOEJBQWdCOzZCQS9LcEMsc0JBOEtvQixRQUFLOzZCQTlLekI7Ozs7a0NBS1Esc0JBd0tvQixRQUFLO2tDQXhLekI7b0NBK0lLLFNBcFBsQzBlO3NDQW1RMEMsV0FuUTFDQSxxQkFtUTBDLE1BRDRCL2Y7c0NBQzVCOzs7dUNBTUs7O21GQURvQjZlO3NDQUx6Qjs7O29DQUxSOzs7O3dDQTdyRHRDTjs7b0NBNnJEc0MsdURBY2dCO2tDQXZLckI7Ozs7dUNBTVEsc0JBdUlvQixRQUFLO3VDQXZJekI7eUNBOEVLLFNBekwxQ3dCOzJDQTJPMEQ7NENBYm9CL2YsT0E5TjlFK2Y7a0RBOE44RS9mOzRDQWFwQjs7OzsrQ0Fib0JBOytDQWgyQmxGa2Y7NENBNDJCNEQ7eUZBOTBENUR2Z0I7NENBNjBEeUQ7a0RBWHlCcUI7Ozs7MkNBYXBCLFVBWlI7OztnREFyMER0RDZkOzs7Ozs7Ozs7O3lDQTJ5RDhDO2dHQTRDZ0I7dUNBdElyQjs7Ozs0Q0FPUSxzQkFxRUssUUFBSzs0Q0FyRVY7OENBUUssU0ExSGxEa0M7Z0RBK0swRDtpREFqQjRCL2YsT0E5SnRGK2Y7dURBOEpzRi9mO2lEQWlCNUI7Ozs7b0RBakI0QkE7b0RBaHlCMUZrZjtpREFnekI4RDs4RkFseEQ5RHZnQjtpREFpeEQ4RDt1REFmNEJxQjs7OztnREFpQjVCLFVBaEJBOzs7cURBcndEOUQ2ZDs7Ozs7Ozs7Ozs4Q0EydURzRDtxR0FnRGdCOzRDQW5FckI7b0dBcUVXO3VDQTVFbkI7aUdBdUkwQjtrQ0E3SWxDOzRGQXdLMEI7NkJBN0tsQzt1RkErS3FDOzJCQXBMMUMsc0JBR2lDLFFBQUk7MkJBSHJDO21GQW9MMkM7c0JBeExuRDtnRkFnTzBDOzs7O3VCQWpUMUMsc0JBK0VtRCxRQUFJO3VCQS9FdkQ7eUJBMkVLOzs7Ozs7NkJBajc1Qm5CN1A7NkJBZzI1Qk0rUjswQkFnRnlEOzs2QkFGZDs4REF4Ui9DRTs7MEJBcVJ5Qzs7Ozs7OzswQkFGeEI7Z0ZBWTBCO3VCQS9FL0I7Ozs7NEJBSVEsc0JBbURvQixRQUFJOzRCQW5EeEI7OEJBSW9CLFNBZHBDRjs7O2dDQTREc0M7aUNBL0J1QkMsT0E3QjdERDtpQ0E0RHNDO2lDQUZIOzs7b0NBanNDdkNoQjs7aUNBK3JDb0MsNENBM0I2QmlCO2lDQXlCaEMsMkNBekJnQ0E7Z0NBeUJoQyxPQXpCZ0NBOzs7Ozs7OztnQ0ErQnZCLFVBckJOO3VDQVY2QkE7Ozs7Z0NBK0J2QjtpQ0E3QlQ7dUNBREg7cUZBOEI0Qzs0QkFsRHREO29GQW1EeUI7dUJBdkRqQztpRkErRXdEOzttQkFuRmpFOzs7Ozs7bUJBK1RZO2tCQTdWYyxZQWtXeUI7YUExVVU7Ozs7Ozs7O2NBZ1ZoRTs7O2tCQWVNLFVBajhETm5DO2tCQWk4RE0sZUFDUWtDO29CQVdIOzs7Ozs7d0JBdnM2QmIvUjt3QkE0cjZCZ0IrUjtxQkFVZ0M7O3dCQUhsQzs7OzBCQXZXWkk7O3FCQW1XVzs7Ozs7OzsyRUFZa0Q7a0JBaEJ2RCx3REFpQnFDOzs7a0JBN0J0QixtREFVVjtlQWJYOzs7OztlQWtDWTs7WUF4N0JnQzthQW81QjdCO21EQTFxNkJqQm5TO2FBdXE2QmtFOzs7Y0FrRGhFOzs7a0JBVU0sZUFjVytSO29CQUNILFNBREdBO3NCQUlDLElBRDRCL2YsT0FIN0IrZjtzQkFJQyxhQUQ0Qi9mO29CQVFZLFFBQUs7a0JBWnZEOzs7OztzQkF6RVJvZ0I7a0JBeUVRLGVBWk1MO29CQUNILFNBREdBO3NCQUlDLFdBSkRBLHFCQUlDLE1BRDRCL2Y7c0JBQzVCO3VCQUdLO3NCQUhMLElBSWdFcWdCO3NCQUMzRCxPQUQyREE7b0JBR2hFLHNEQUF3QjtrQkFDL0Isd0RBYXdDOzs7a0JBakMzQixtREFLd0M7ZUFSN0Q7Ozs7O2VBc0NZOztZQXorQmdDO2FBaThCWDs7YUFIbUM7OztjQXNEcEU7OztrQkFTcUI7cURBNUdyQkQsK0JBNEdrRTs7O2tCQU43QyxtREFLd0M7ZUFSN0Q7Ozs7O2VBV1k7O1lBLy9CZ0M7YUErK0I1Q0c7Y0FBdUQ7Ozs7Ozs7b0JBemdFdkQ1aEI7b0JBNmpEQXVoQjtvQkE0Y0FLO29CQWpEQUQ7b0JBOWpCQUw7VUF6WVk7UUF6QkE7TUFqaUJBLHVDQStrRFM7SUFwZzlCVCxTQXNnOUJkTywrQkFBb0NBO01BQ3RDO3VCQURzQ0E7T0FDdEMsNEJBRHNDQTtPQUN0QywrQkFEc0NBO09BQ3RDLGNBRHNDQTtPQUN0QywwQkFEc0NBO09BQ3RDLCtCQURzQ0E7T0FDdEMsS0FEc0NBO09BQ3RDLHFCQURzQ0E7T0FDdEMsK0JBRHNDQTtPQUN0QyxVQURzQ0E7T0FDdEMsV0FEc0NBO09BQ3RDLDJCQURzQ0E7T0FDdEMsdUJBRHNDQTtPQUN0QyxVQURzQ0E7T0FDdEMsMkJBRHNDQTtNQUN0QztRQW9CSTsrQkFhK0IsT0FqQy9CQyxlQWlDK0M7OzBCQVYxQixtREFVVjtTQWJYO1NBSkU7Ozs7Ozs7Ozs7U0FtQlU7O01BVWhCO1FBS0k7K0JBYStCLE9BOUQvQnBRLDJCQThEMkQ7OzBCQVZ0QyxtREFVVjtTQWJYO1NBSkU7Ozs7Ozs7Ozs7U0FtQlU7O01BVWhCO1FBS0k7K0JBY3FCLE9BNUZyQnVJLDhCQTRGbUU7OzBCQVg5QyxtREFVVjtTQWJYO1NBSkU7Ozs7Ozs7Ozs7U0FvQlU7O01BVWhCO1FBSUk7K0JBYStCLE9BeEgvQmphLGFBd0g2Qzs7MEJBVnhCLG1EQVVWO1NBYlg7U0FIRTs7Ozs7Ozs7OztTQWtCVTs7TUFVaEI7UUFLSTsrQkFhK0IsT0FySi9Cb1MseUJBcUp5RDs7MEJBVnBDLG1EQVVWO1NBYlg7U0FKRTs7Ozs7Ozs7OztTQW1CVTs7TUFVaEI7UUFNSTsrQkFhK0IsT0FuTC9CQyw4QkFtTDhEOzswQkFWekMsbURBVVY7U0FiWDtTQUxFOzs7OztZQWowOEJKbEc7Ozs7O1NBcTE4QmM7O01BVWhCO1FBSUk7K0JBYStCLE9BL00vQmdKLElBK01vQzs7MEJBVmYsbURBVVY7U0FiWDtTQUhFOztnREF6ZzlCSjFKOzs7O1NBMmg5QmM7O01BVWhCO1FBS0k7K0JBYStCLE9BNU8vQnlPLG9CQTRPb0Q7OzBCQVYvQixtREFVVjtTQWJYO1NBSkU7Ozs7Ozs7Ozs7U0FtQlU7O01BVWhCO1FBS0k7K0JBZU0sT0EzUU5DLDhCQTJRK0Q7OzBCQVoxQyxtREFVVjtTQWJYO1NBSkU7Ozs7Ozs7Ozs7U0FxQlU7O01BVWhCO1FBS0k7K0JBYStCLE9BeFMvQkMsU0F3U3lDOzswQkFWcEIsbURBVVY7U0FiWDtTQUpFOzs7OztZQTNnOUJKck87Ozs7O1NBOGg5QmM7O01BVWhCO1FBSUk7K0JBYStCLE9BcFUvQnNPLFVBb1UwQzs7MEJBVnJCLG1EQVVWO1NBYlg7U0FIRTs7Ozs7Ozs7OztTQWtCVTs7TUFVaEI7UUFLSTsrQkFhK0IsT0FqVy9CQywwQkFpVzBEOzswQkFWckMsbURBVVY7U0FiWDtTQUpFOzs7Ozs7Ozs7O1NBbUJVOztNQVVoQjtRQUtJOytCQWErQixPQTlYL0JDLHNCQThYc0Q7OzBCQVZqQyxtREFVVjtTQWJYO1NBSkU7Ozs7Ozs7Ozs7U0FtQlU7O01BVWhCO1FBSUk7K0JBYStCLE9BMVovQi9aLFNBMFp5Qzs7O1lBVnBCLG9EQVVWO1NBYlg7U0FIRTs7a0RBN2g5Qko0TDs7OztTQStpOUJjOztNQXphaEI7T0F3YjZDOztVQUhHOzRDQWx6a0I5QzJOOztXQTQ0akJFaUk7V0E4QkFDO1dBOEJBQztXQStCQUM7V0E2QkFDO1dBOEJBQztXQStCQUM7V0E2QkFDO1dBOEJBQztXQWdDQUM7V0E4QkFDO1dBNkJBQztXQThCQUM7V0E4QkFDO09BNkJvRDtzQ0FBcEQ1aEI7T0FBb0QsK0JBQXBEQTtPQUFvRCwrQkFBcERBO09BQW9ELCtCQUFwREE7T0FBb0QsaUNBQXBEQTtPQUFvRCwrQkFBcERBO09BQW9ELCtCQUFwREE7TUFBb0Q7UUE4Q3BEOytCQVNxQixPQWpCckJpaUIsZ0NBaUJzRTs7O1lBTmpELG9EQUt3QztTQVI3RDs7OztTQVdZOztNQTVlaEI7T0E2ZEloSDtRQUFvQzs7Ozs7OztRQXlCcEM7K0JBU3FCLE9BdkNyQitHLDhCQXVDdUU7OztZQU5sRCxvREFLd0M7U0FSN0Q7Ozs7U0FXWTs7TUFqZ0JoQjtPQWtmSXBJO1FBQXVDOzs7Ozs7O1FBeUJ2QzsrQkFTcUIsT0E3RHJCbUksOEJBNkRtRTs7O1lBTjlDLG9EQUt3QztTQVI3RDs7OztTQVdZOztNQXRoQmhCO09BdWdCSXZIO1FBQWlDOzs7Ozs7O1FBeUJqQzsrQkFTcUIsT0FuRnJCc0gsOEJBbUZvRTs7O1lBTi9DLG9EQUt3QztTQVI3RDs7OztTQVdZOztNQTNpQmhCO09BNGhCSTNIO1FBQWtDOzs7Ozs7O1FBMEJsQzsrQkFVTSxPQTNHTjBILDhCQTJHaUU7OztZQVA1QyxvREFLd0M7U0FSN0Q7Ozs7U0FZWTs7TUFsa0JoQjtPQWlqQkk1SjtRQUE4Qzs7Ozs7O3FCQTBCMUMxSDtRQUNIO1VBQ0U7OztjQWdETTs7Ozs7OztrQkFsRExBO2VBaURvRTs7a0JBSDlEOzs7b0JBOUpWNFI7O2VBMEpTOzs7Ozs7O3NFQVlrQjs7O2NBM0JILG9EQVdWOzs7O2VBaENGLHNCQW9Cb0IsT0ExQjVCNVIsV0EwQndDO2VBcEJoQztpQkFHb0IsU0F0a0JoQ3VRO2tCQW9sQnNCO3lCQXBsQnRCQTs7b0JBb2xCc0I7aURBbG1CdEJELGdCQWltQnVEdUI7Ozt5RUFHaUI7ZUFuQjVEO3dFQW9CaUM7V0F4QjFDOzs7OztXQXNEWTtVQTFFTSxZQStFaUM7TUFoRVo7T0FBMUNDO1FBQTBDOzs7Ozs7O1FBcUUxQzsrQkE2Q3FCLE9BaE9yQkgsOEJBZ09nRTs7O1lBWDNDLG9EQVVWOzs7O2FBeENGO2VBcUJLLFNBeHBCZHBCO2lCQTJwQmtCO3dCQTNwQmxCQTtrQkE0cEJxQjt3REFGOEJzQjtpQkFFOUI7b0RBMXFCckJ2QjtlQThxQmtCLHNEQUEyQjthQTdCcEM7ZUFHb0IsU0F0b0I3QkM7Z0JBb3BCbUI7dUJBcHBCbkJBOztrQkFvcEJtQjsrQ0FscUJuQkQsZ0JBaXFCb0R1Qjs7O3VFQUdpQjthQW5CNUQ7c0VBNkJxQztTQWpDOUM7Ozs7U0ErQ1k7O01BcEg4QjtPQWlFMUN2TDtRQUE4Qjs7Ozs7OztjQUE5QkE7Y0FqRUF3TDtjQXZCQXBLO2NBckJBa0M7Y0FyQkFLO2NBckJBWjtjQXJCQXFCLDBCQWlQNEI7SUFydCtCaEIsU0F1dCtCZHFIO01BQW9DQTtNQUN0Qzt1QkFEc0NBO09BQ3RDLFVBRHNDQTtPQUN0QywrQkFEc0NBO09BQ3RDLG9CQURzQ0E7T0FDdEMsMEJBRHNDQTtPQUN0QyxLQURzQ0E7T0FDdEMsY0FEc0NBO09BQ3RDLFVBRHNDQTtNQUN0QztRQVlJOzs7WUFlTSxPQTNCTnJRO3FCQThCVSxJQUR1QndRLFNBN0JqQ3hRLG1CQThCVSxVQUR1QndROztlQUd2QixJQURtQ0MsY0EvQjdDelEsbUJBZ0NVLFVBRG1DeVE7O2VBR25DLElBRDREQyxhQWpDdEUxUSxtQkFrQ1UsVUFENEQwUTtxQkFHNUQsSUFEMkJDLFdBbkNyQzNRLG1CQW9DVSxVQUQyQjJROztlQUczQixJQUQrQkMsZUFyQ3pDNVEsbUJBc0NVLFVBRCtCNFEsZ0JBQ3NCOzs7WUF2QjFDLG9EQVVWO1NBYlg7Ozs7U0E0Qlk7O01BeENoQjtPQVFJQztRQUE4Qzs7OztVQS8rN0JoRHpVOztNQSsrN0JnRDtRQTJDOUM7OztZQWdCTSxtQ0FqRU5rVSwrQkFpRWtFOzs7WUFiN0Msb0RBV1Y7U0FkWDs7OztTQWtCWTs7TUFyRWhCO09BK0NJUTtRQUF5Qzs7Ozs7OztRQWtDekM7OztZQVdNLE9BekZOUDtxQkE0RlU7cUJBRUE7cUJBRUE7cUJBRUE7cUJBRUE7c0JBRUEsYUFBdUM7OztZQXJCNUIsb0RBTVY7U0FUWDs7OztTQTBCWTs7TUEzR2hCO09BNEVJcFI7UUFBaUU7Ozs7VUF4NzlCbkVsRzs7TUF3NzlCbUU7UUEyQ2pFOzs7WUFlTSxPQTlITjRYOzttQkFnSW9DTCxTQWhJcENLLDhCQWdJb0NMOzs7OzBCQXdLUCw0QkFEMEJPOzs4QkFHMUI7Ozs4QkFFQTs7OztrQkFFTzs7ZUF2S3BCOzs7Ozs7bUJBOTQ3QmxCalU7O29CQXU0N0JzQzBUO29CQXpGcENNO29CQXlGb0NOO29CQWxJcEMxakI7b0JBRkFvUztvQkF3RUFDO29CQXZFQThDO29CQW1Jb0N1Tzs7b0JBdklwQ3RKO29CQXVJb0NzSjs7O29CQWpJcENsakI7Z0JBdUkyRDs7bUJBRjFDOzs7cUJBMXRsQm5CdVo7O2dCQTR0bEI2RDswQkE4Ti9CbUs7bUJBV0g7Ozs7Ozs7dUJBWEdBO29CQVVxRTs7dUJBSHpELDJDQXhPdEJqakI7O29CQW9PTzs7Ozs7OzsyRUFZMkI7Z0JBN09POztrQkFIekNBOzs7Ozs7O2VBeVBGO2VBclBBO2dCQWdQSDs7Ozs7bUJBbGwrQmY0TDttQkFpaitCb0J4SztnQkErQkw7O3lCQXBQRThoQjs7ZUFxUkM7Z0JBVDhCUCxhQTdZOUNHO2dCQXNaZ0I7Ozs7O21CQTcvN0JsQjFUOztvQkFvLzdCZ0R1VDtvQkF0VzlDSTtvQkEzQ0E1UjtvQkF3RUFDO29CQXlVOEN1Ujs7Ozs7O29CQWhaOUN6TztvQkFnWjhDeU87O29CQS9ZOUM1akI7b0JBQ0FRO2dCQXNadUU7O21CQUh0RDs7O3FCQW4vekJuQnVYOztnQkFzL3pCeUU7MEJBOE8zQ21NO21CQVdIOzs7Ozs7O3VCQVhHQTtvQkFVZ0Y7O3VCQUhwRSwyQ0ExUHRCemhCOztvQkFzUE87Ozs7Ozs7MkVBWTJCO2dCQTdQbUI7b0JBTHJEQTtlQTJRRjtlQXJRQTtnQkFnUVM7Ozs7O21CQXp4K0IzQnlLO21CQTJ2K0JvQm5LO2dCQTRCTDs7eUJBdFFFcWhCOztlQXFTQztnQkFQeUJDLGVBNXFCekNOO3NDQXcwQndDLDhCQUFnQjtzQ0FGaEIsOEJBQWdCO3NDQUZoQiw4QkFBZ0I7Z0JBakp4Qzs7Ozs7bUJBMzE4QmxCNVQ7O29CQXVxN0JFM1A7b0JBNnFCeUM2akI7OztvQkFyb0J6Q0w7b0JBM0NBNVI7b0JBd0VBQztvQkF2RUE4QztvQkFDQW5WO29CQThxQnlDcWtCOzs7O2dCQU1nQjs7bUJBRnhDOzs7cUJBejIzQm5CdFA7O2dCQTIyM0IyRDswQkEwSzdCbVA7bUJBV0g7Ozs7Ozs7dUJBWEdBO29CQVVtRTs7dUJBSHZELDJDQXBMdEJJOztvQkFnTE87Ozs7Ozs7MkVBWTJCO2dCQXpMSzs7a0JBSHZDQTs7Ozs7Ozs7O2VBcU1GO2VBak1BO2dCQTRMSDs7Ozs7bUJBMWgvQmZ0WDttQkFxLytCb0J1WDtnQkFtQ0w7O3lCQWhNRUMsaURBdU5xRjs7O1lBbHhCL0Usb0RBVVY7U0FiWDs7OztTQXV4Qlk7O01BOTRCaEI7T0FrSElDO1FBQXlEOzs7O1VBenQ5QjNEdFg7O01BeXQ5QjJELGVBc3lCckQvRztRQUNIO1VBQ0U7OzRCQWdCTSxrQkF4ekJUcWUsMEJBc3lCSXJlLElBbUJXOzs7Y0FkUyxvREFXVjtXQWRYOzs7OztXQW1CWTtVQW56Qk0sWUF5ekJpQztNQTlCWjtPQUExQ2tkO1FBQTBDOzs7Ozs7O1FBbUMxQzsrQkFlTSxPQXIxQk5tQix5QkFxMUI2RTs7O1lBWnhELG9EQVVWO1NBYlg7Ozs7U0FpQlk7O01BcEQ4QjtPQStCMUMzTTtRQUE4Qjs7Ozs7O2dCQUE5QkEsb0JBL0JBd0wsdUJBNkR5QjtJQTFxZ0NiLFNBNHFnQ2RvQiwrQkFBbUNBO01BQ3JDO29CQURxQ0E7T0FDckMsa0JBRHFDQTtPQUNyQyxPQURxQ0E7T0FDckMsVUFEcUNBO09BQ3JDLGNBRHFDQTtPQUNyQywrQkFEcUNBO01BQ3JDO1FBV0k7OzBCQWErQixrREFBK0I7OztZQVZ6QyxvREFVVjtTQWJYOzs7O1NBZVk7O01BMUJoQjtPQU1JSTtRQUErQzs7Ozs7OztRQThCL0M7K0JBc0NxQixRQUFLOzs7WUFOTCxvREFLd0M7Ozs7YUFqQ3BELHNCQTJCcUQsUUFBSTthQTNCekQ7ZUEyQlE7O3NCQW5FakJIO2dCQW1FaUIsTUFqRWpCekY7ZUFpRWlCLGVBUmFrQztpQkFDRCxhQURDQSx3QkFLUTtlQVBmOztnQkFESDtnQkFESDtnQkFESDt1RUFhNEI7YUEzQmpDO3NFQTJCMEQ7U0EvQm5FOzs7O1NBd0NZOztNQTVFaEI7T0FnQ0kyRDtRQUErQjs7Ozs7OztRQXFEZDs7U0FESCw0Q0FoRmQva0I7Ozs7U0FtRjBCOztNQU9kO1FBT2hCO1VBS0k7aUNBU3FCLE9BL0dyQkEsYUErR21DOzs7Y0FOZCxvREFLd0M7V0FSN0Q7V0FKRTs7Ozs7Ozs7OztXQWVVOztRQWF3Qjs7O1lBSkc7OztjQTkrNUJ6Q3dVO2VBcTk1QkU5VDtTQXNCZ0Q7MENBQWhETztRQUFnRDtVQWVoRDtpQ0FTcUIsT0FqSnJCaWUsTUFpSjRCOzs7Y0FOUCxvREFLd0M7V0FSN0Q7V0FIRTs7b0RBcCs5Qkp4UDs7OztXQWsvOUJjOztRQU1oQjtVQUlJO2lDQVNxQixPQXJLckJ5UCxTQXFLK0I7OztjQU5WLG9EQUt3QztXQVI3RDtXQUhFOztvREEzcitCSmpROzs7O1dBeXMrQmM7O1FBTWhCO1VBS0k7aUNBU3FCLE9BMUxyQmxQLGFBMExtQzs7O2NBTmQsb0RBS3dDO1dBUjdEO1dBSkU7Ozs7Ozs7Ozs7V0FlVTs7UUE5RHdCO1NBb0V4QzswQkFFbUIsOEJBR3VEO1NBTDFFOzBCQU9tQiw4QkFHa0M7U0FWckQ7MEJBWW1CLDhCQUd1RDtTQU1qQzs7WUFISzs4Q0ExNkg1Q2lmOzthQXcxSEUrRjthQXFCQUM7YUFxQkFDO2FBc0JBQzthQU1BQzthQUtBQztTQUtpRDswQ0FBakRoakI7U0FBaUQsK0JBQWpEQTtRQUFpRDtVQTZCakQ7aUNBNENxQixRQUFLOzs7Y0FOTCxvREFLd0M7Ozs7ZUF2Q3BELHNCQWlDMEMsUUFBSTtlQWpDOUM7aUJBR29CLFVBMVA3QnNpQjtpQkEwUDZCOzs7bUJBaUJWLElBRDJEYTttQkFDM0QsT0FEMkRBOztzQkFVaEQ7dUJBUHlDemxCLGVBSE95bEI7dUJBVWhEO3VCQURNO3VCQUZIOytEQUpzQ3psQjt1QkFHekM7dUJBREg7O3dCQURILHNDQTFReEJDOzs7O21CQXVRbUI7eUVBYVk7ZUFqQ3RCO3dFQWlDK0M7V0FyQ3hEOzs7O1dBOENZOztRQS9Kd0I7U0E0R3BDeWxCO1VBQXdDOzs7Ozs7O1VBNkR4Qzs7O2NBeUJjOztxQkFsVWR2RztjQWtVYyxlQU5Za0M7Z0JBQ0gsYUFER0Esd0JBS007Y0FOZjs7ZUFESDtjQURIO2VBMkJNOztnQkFETTtzQkFuVnZCbEM7Z0JBbVZ1QjswQkFSVWtDO21CQUNELGFBRENBLHdCQU1RO2dCQVJmO2dCQURIO2dCQURIO2dCQURIO2dCQURIOztpQkFGSDs7bUJBaE1Yalo7Ozt5QkFrTlc7Y0ExQk07ZUFKTjtlQUZIOzs7a0JBbExSQTs7Y0FrTFEsd0RBZ0MrQjs7O2NBbkNIOztlQUE5QjtzREFoVE5uSTtjQWdUTSx3REFBaUU7V0FUdkU7Ozs7V0E4Q1k7O1FBdk53QjtTQXFLcEMwbEI7VUFBMEI7Ozs7Ozs7VUE0RDFCO2lDQTBLcUIsUUFBSzs7O2NBTkwsb0RBS3dDOzs7O2VBcktwRCxzQkErSm9CLFFBQUk7ZUEvSnhCO2lCQTJKaUI7Ozs7cUJBMVIxQko7cUJBdk9BVjtrQkFnZ0J1Qjs7OztxQkEzZnZCRTtrQkEwZm9COzs7cUJBbFJwQlc7O2tCQWlSaUI7OytDQS9kakJWO2tCQThkYzs7O3FCQXJSZFE7O2lCQXFSYyx3REFPbUQ7ZUE5SnhEOzs7O29CQUlRO3NCQUtLLHNCQW1Jb0IsOEJBQWdCO3NCQW5JcEMsc0JBa0lvQixRQUFLO3NCQWxJekI7Ozs7MkJBS1Esc0JBNEhvQixRQUFLOzJCQTVIekI7NkJBaUdvQixPQXBkbERyRzs7Ozs7Ozs7OztxRkE4ZXNFOzJCQTNIeEM7Ozs7Z0NBTVEsc0JBMEZvQixRQUFLO2dDQTFGekI7a0NBcURLLE9BOWEzQ0E7Ozs7Ozs7Ozs7a0NBNmJpRDs7bUNBRkg7MEVBemI5Q2xmO21DQXdiMkM7MEZBd0JnQjtnQ0F6RnJCOzs7O3FDQU1RLHNCQTZDb0IsUUFBSztxQ0E3Q3pCO3VDQVFLLE9BdlluRGtmOzs7Ozs7Ozs7O3VDQXNaeUQ7O3dDQUZIOytFQWxadERsZjt3Q0FpWm1EOytGQXdCZTtxQ0E1Q3BCOzhGQTZDMEI7Z0NBbkRsQzsyRkEwRjBCOzJCQWhHbEM7c0ZBNEgwQjtzQkFqSWxDO2lGQW1JcUM7b0JBeEkxQyxzQkFHMEIsUUFBSTtvQkFIOUI7NkVBd0kyQztlQTVJbkQ7MEVBK0p5QjtXQW5LbEM7Ozs7V0E0S1k7O1FBN1l3QjtTQTZOcEN1aEI7VUFBcUI7Ozs7Ozs7VUEwTHJCOzs7Y0FlTyxPQXpNUEE7dUJBMk1XOzswQkFyaUJYc0Q7MEJBa1NBYTt5QkFsU0FiO3lCQWtTQWE7dUJBc1FrQywrQ0FBMkI7OztjQWpCeEMsb0RBVVY7V0FiWDs7OztXQXNCWTs7UUE3YXdCO1NBbVpwQ0M7VUFBcUM7Ozs7OztrQkF0THJDcEUsWUFzTEFvRTtNQXRiWSx3Q0F3ZGlCO0lBcHVoQ2pCLFNBc3VoQ2RDLCtCQUFpQ0E7TUFDbkM7cUJBRG1DQTtPQUNuQyxPQURtQ0E7T0FDbkMsVUFEbUNBO09BQ25DLCtCQURtQ0E7TUFDbkM7UUFRSTs7MEJBWStCLGtEQUErQjs7O1lBVHpDLG9EQVNWO1NBWlg7Ozs7U0FjWTs7TUF0QmhCO09BSUlFO1FBQTRCOzs7Ozs7O1FBNkI1QjsrQkFTcUIsT0ExQ3JCOWxCLGFBMENtQzs7O1lBTmQsb0RBS3dDO1NBUjdEO1NBSkU7Ozs7Ozs7Ozs7U0FlVTs7TUFNaEI7UUFLSTsrQkFTcUIsT0EvRHJCa2YsU0ErRDZDOzs7WUFOeEIsb0RBS3dDO1NBUjdEO1NBSkU7O2tEQXo1Z0NKOVM7Ozs7U0F3NmdDYzs7TUFNaEIsU0FBSXhKO1FBRThELDhCQU9ZO01BTXpDOzs7VUFITTs0Q0F6bHBCekNpWDs7V0FpaXBCRXRYO1dBc0JBQztXQXNCQUk7T0FVOEM7c0NBQTlDM0I7TUFBOEM7UUFzQjlDOytCQTJHcUIsUUFBSzs7O1lBTkwsb0RBS3dDOzs7O2FBdEdwRCxzQkFnRzhCLFFBQUk7YUFoR2xDO2VBc0ZvQixvREFVVjthQWhHVjs7OztrQkFJUTtvQkFLSyxzQkE0RW9CLDhCQUFnQjtvQkE1RXBDLHNCQTJFb0IsUUFBSztvQkEzRXpCOzs7O3lCQUtRLHNCQXFFb0IsUUFBSzt5QkFyRXpCOzJCQTRDb0IsT0FyS2xEaWU7Ozs7Ozs7Ozs7bUZBNkxzRTt5QkFwRXhDOzs7OzhCQU1RLHNCQXFDb0IsUUFBSzs4QkFyQ3pCO2dDQU1LLE9BckkzQ0E7Ozs7Ozs7Ozs7d0ZBbUt1RDs4QkFwQ2pCO3VGQXFDMEI7eUJBM0NsQztvRkFxRTBCO29CQTFFbEM7K0VBNEVxQztrQkFqRjFDLHNCQUcwQixRQUFJO2tCQUg5QjsyRUFpRjJDO2FBckZuRDt3RUFnR21DO1NBcEc1Qzs7OztTQTZHWTs7TUE5SHFCO09BYWpDNkc7UUFBOEI7Ozs7Ozs7UUEySDlCOytCQTJHcUIsUUFBSzs7O1lBTkwsb0RBS3dDOzs7O2FBdEdwRCxzQkFnRzhCLFFBQUk7YUFoR2xDO2VBc0ZvQixvREFVVjthQWhHVjs7OztrQkFJUTtvQkFLSyxzQkE0RW9CLDhCQUFnQjtvQkE1RXBDLHNCQTJFb0IsUUFBSztvQkEzRXpCOzs7O3lCQUtRLHNCQXFFb0IsUUFBSzt5QkFyRXpCOzJCQTRDb0IsT0E1UmxEN0c7Ozs7Ozs7Ozs7bUZBb1RzRTt5QkFwRXhDOzs7OzhCQU1RLHNCQXFDb0IsUUFBSzs4QkFyQ3pCO2dDQU1LLE9BNVAzQ0E7Ozs7Ozs7Ozs7d0ZBMFJ1RDs4QkFwQ2pCO3VGQXFDMEI7eUJBM0NsQztvRkFxRTBCO29CQTFFbEM7K0VBNEVxQztrQkFqRjFDLHNCQUcwQixRQUFJO2tCQUg5QjsyRUFpRjJDO2FBckZuRDt3RUFnR21DO1NBcEc1Qzs7OztTQTZHWTs7TUFyUHFCO09Bb0lqQzhHO1FBQThCOzs7Ozs7O1FBMkg5QjsrQkEyR3FCLFFBQUs7OztZQU5MLG9EQUt3Qzs7OzthQXRHcEQsc0JBZ0c4QixRQUFJO2FBaEdsQztlQXNGb0Isb0RBVVY7YUFoR1Y7Ozs7a0JBSVE7b0JBS0ssc0JBNEVvQiw4QkFBZ0I7b0JBNUVwQyxzQkEyRW9CLFFBQUs7b0JBM0V6Qjs7Ozt5QkFLUSxzQkFxRW9CLFFBQUs7eUJBckV6QjsyQkE0Q29CLE9BblpsRDlHOzs7Ozs7Ozs7O21GQTJhc0U7eUJBcEV4Qzs7Ozs4QkFNUSxzQkFxQ29CLFFBQUs7OEJBckN6QjtnQ0FNSyxPQW5YM0NBOzs7Ozs7Ozs7O3dGQWladUQ7OEJBcENqQjt1RkFxQzBCO3lCQTNDbEM7b0ZBcUUwQjtvQkExRWxDOytFQTRFcUM7a0JBakYxQyxzQkFHMEIsUUFBSTtrQkFIOUI7MkVBaUYyQzthQXJGbkQ7d0VBZ0dtQztTQXBHNUM7Ozs7U0E2R1k7O01BNVdxQjtPQTJQakMrRztRQUE4Qjs7Ozs7OztRQTJIOUI7K0JBb05xQixRQUFLOzs7WUFOTCxvREFLd0M7Ozs7YUEvTXBELHNCQXlNb0IsUUFBSTthQXpNeEI7ZUFxTG9CLE9Bcm9CN0IvRzs7Ozs7O3VFQXdwQjZEO2FBeE1wRDs7OztrQkFJUTtvQkFLSyxzQkEyS29CLDhCQUFnQjtvQkEzS3BDLHNCQTBLb0IsUUFBSztvQkExS3pCOzs7O3lCQUtRLHNCQW9Lb0IsUUFBSTt5QkFwS3hCOzJCQThHb0IsVUE1a0JsREE7MkJBNGtCa0Q7Ozs7OEJBbUJWLElBRDREMEU7OEJBQzVELE9BRDREQTs7Ozs7Ozs7Ozs4QkFDNUQ7K0JBUUc7MkNBVHlEQTtxQ0FDNUQ7Ozs7bUZBa0NPO3lCQW5LakI7Ozs7OEJBTVEsc0JBdUdvQixRQUFJOzhCQXZHeEI7Z0NBNERLLFVBaGlCM0MxRTtnQ0FnaUIyQzs7OzttQ0FvQkssSUFENEQwRTttQ0FDNUQsT0FENERBOzs7OzttQ0FDNUQ7Z0RBRDREQTswQ0FDNUQ7Ozs7d0ZBc0JPOzhCQXRHakI7Ozs7bUNBTVEsc0JBb0RvQixRQUFJO21DQXBEeEI7cUNBUUssVUFsZm5EMUU7cUNBa2ZtRDs7Ozt3Q0FxQkssSUFENEQwRTt3Q0FDNUQsT0FENERBOzs7Ozt3Q0FDNUQ7cURBRDREQTsrQ0FDNUQ7Ozs7NkZBc0JPO21DQW5EakI7NEZBb0R5Qjs4QkExRGpDO3lGQXVHeUI7eUJBN0dqQztvRkFvS3lCO29CQXpLakM7K0VBMktxQztrQkFoTDFDLHNCQUcwQixRQUFJO2tCQUg5QjsyRUFnTDJDO2FBcExuRDt3RUF5TXlCO1NBN01sQzs7OztTQXNOWTs7TUE1a0JxQjtPQWtYakNzQztRQUF1Qzs7Ozs7OztrQkF2Y3ZDL0c7ZUFEQUQ7Ozs7OztRQTZxQm9COztTQUZILDJDQTFxQmpCQztTQXlxQmM7Ozs7U0FnQlk7O01BVVQ7UUFVckI7VUFJSTtpQ0FTcUIsT0EzdEJyQkQsTUEydEI0Qjs7O2NBTlAsb0RBS3dDO1dBUjdEO1dBSEU7O29EQXZtZ0NKeFA7Ozs7V0FxbmdDYzs7UUFNaEI7VUFJSTtpQ0FTcUIsT0EvdUJyQnlQLFNBK3VCK0I7OztjQU5WLG9EQUt3QztXQVI3RDtXQUhFOztvREE5emdDSmpROzs7O1dBNDBnQ2M7O1FBTWhCO1VBS0k7aUNBU3FCLE9BdndCckJsUCxhQXV3Qm1DOzs7Y0FOZCxvREFLd0M7V0FSN0Q7V0FKRTs7Ozs7Ozs7OztXQWVVOztRQU1oQjs7O1lBQ2tDLHNCQTZCTSxRQUFJO1lBN0JWO2NBUU0sVUF2eEJwQ2tmO2NBdXhCb0M7OztpQkFnQlYsa0NBRG1DbUY7Ozs7c0VBS1E7WUF4QnREOzs7Ozs7OzsyQkF5QjRCO1NBOUIvQzs7WUFnQ21CLHNCQTBCTSxRQUFJO1lBMUJWO2NBT00sVUFyekJyQm5GO2NBcXpCcUI7OztpQkFjVixrQ0FEbUNtRjs7OztzRUFLUTtZQXJCdEQ7Ozs7Ozs7OzJCQXNCNEI7U0ExRGhDOzBCQTREbUIsOEJBR3VEO1NBTWpDOztZQUhLOzhDQTdsSzVDcEY7O2FBMjlKRWtIO2FBcUJBQzthQXFCQUM7YUFzQkFDO2FBK0JBQzthQTRCQUM7U0FLaUQ7d0NBQWpEbmtCO1NBQWlELCtCQUFqREE7U0FBaUQsK0JBQWpEQTtTQUFpRCxpQ0FBakRBO1FBQWlEO1VBNkJqRDtpQ0FVTSxPQWxCTnNrQiw4QkFrQmdGOzs7Y0FQM0Qsb0RBS3dDO1dBUjdEOzs7O1dBWVk7O1FBekdoQjtTQTJGcUM7U0FIbUM7OztVQTRCcEU7aUNBVU0sT0ExQ05ELDhCQTBDeUU7OztjQVBwRCxvREFLd0M7V0FSN0Q7Ozs7V0FZWTs7UUFoSWhCO1NBK0dJOUU7VUFBdUQ7Ozs7Ozs7VUE0QnZEOzs7Y0FlVzs7OzRDQWhlWHNFO2VBK2RjOzs0Q0F0RWRPO2NBc0VROzs0QkFHZ0U7OztjQWRuRCxvREFRVjtXQVhYOzs7O1dBbUJZOztRQTlKaEI7U0FzSUlJO1VBQTBFOzs7O1lBLzNpQzVFaGI7O1FBKzNpQzRFO1VBbUMxRTtpQ0FvckJxQixRQUFLOzs7Y0FOTCxvREFLd0M7Ozs7ZUEvcUJwRDtpQkFLSyxzQkFvcUJvQiw4QkFBZ0I7aUJBcHFCcEMsc0JBbXFCb0IsUUFBSztpQkFucUJ6Qjs7OztzQkFJUSxzQkE4cEJvQixRQUFJO3NCQTlwQnhCO3dCQStuQm9CLFVBbmtEMUNxVCxVQW1rRDBDO3VDQVlINEgsSUFDRkM7MEJBY1U7c0VBZFZBOzJCQVdVLDJDQVhWQTsyQkFVTzsyQkFIQSwyQ0FQUEE7MkJBTUk7MkJBSEEsMkNBSEpBOzJCQUVDO3NFQUhDRCxVQWlCcUI7d0JBbEI5Qjs7O3lCQURIOztzREE1dkMzQmI7d0JBNHZDMkIsd0RBb0I0QztzQkE3cEJqRDs7OzsyQkFLUSxzQkF5bkJvQixRQUFJOzJCQXpuQnhCOzZCQXduQlc7O29DQWprRHpDL0c7NkJBaWtEeUMsZUF4Q1VrQzsrQkFFRCxTQUZDQTtpQ0FNRzt5Q0FOSEE7a0NBb0JHOzs7OztxQ0F4eWlDeEQxUzt3Q0F5eGlDb0ZyTjtrQ0FjYTs7cUNBSHhDOzs7dUNBMzhDdkRxQjs7a0NBbzhDc0Q7Ozs7Ozs7OytCQTZCQSxRQUFLOzZCQXhDZjs7OEJBREg7OEJBREg7OEJBREg7OzJEQTF6Q25Dc2pCOzZCQTB6Q21DLHdEQTZDZ0M7MkJBeG5CckM7Ozs7Z0NBTVEsc0JBMGpCb0IsUUFBSTtnQ0ExakJ4QjtrQ0EyZUssVUExN0MzQzlHO2tDQTA3QzJDOzs7cUNBb0VXO3NDQUhxQjhIO3NDQUdyQjs7cUVBSHFCQSxhQXgvQzNFbEI7O3VDQXkvQ21ELHNDQTcvQ25EOWxCOzs7Ozs7a0NBMjdDMkM7bUNBMERNO3lDQXAvQ2pEa2Y7a0NBby9DaUQsZUExQ1VrQztvQ0FFRCxTQUZDQTtzQ0FNRzs4Q0FOSEE7dUNBc0JHOzs7OzswQ0EzdGlDaEUxUzs2Q0Ewc2lDNEZyTjt1Q0FnQmE7OzBDQUh4Qzs7OzRDQTkzQy9EcUI7O3VDQXUzQzhEOzs7Ozs7O3VDQUhBOztvQ0FnQ0EsUUFBSztrQ0ExQ2Y7O21DQURIO21DQURIO21DQURIOzBGQW1FZ0I7Z0NBempCckI7Ozs7cUNBTVEsc0JBbWVvQixRQUFJO3FDQW5leEI7dUNBaWVROzs4Q0F0N0N0RHdjO3VDQXM3Q3NELGVBekJTa0M7eUNBZ0JEOzs7Ozs7NkNBbjdoQ2hFL1I7NkNBbTZoQ2lFK1I7MENBZTJDOzs2Q0FIM0M7OzsrQ0Fwa0IvRHdGOzswQ0E2akI4RDs7Ozs7OztpR0FrQndCO3VDQXpCN0I7O3dDQURIO3dDQURIOytGQThCUztxQ0FsZWQ7Ozs7MENBUVEsc0JBOGFLLFFBQUk7MENBOWFUOzRDQTBhUTs7bURBdjRDOUQxSDs0Q0F1NEM4RCxlQWRDa0M7OENBRUQsU0FGQ0EscUJBT0Q7OENBR0EsSUFEcUNDLE9BVHBDRDs4Q0FVRDtpRkFEcUNDLG9CQUd1Qzs0Q0FkNUU7OzZDQUZBOzZDQURIO29HQW9CUzswQ0EzYWQ7Ozs7K0NBU1Esc0JBK1hBLFFBQUk7K0NBL1hKO2lEQW9WQSxPQTF6QzlEbkM7O29EQTYwQzhEOzJEQTcwQzlEQTtxREFpMUM4RDtxREFGQSwyQ0EvMEM5REE7cURBODBDOEQ7MkRBREE7Ozs7Ozs7aURBUEE7OzsrRUFudUM5RDZHO2lEQW11QzhELHdEQTRCUTsrQ0E1WFI7Ozs7b0RBVUEsc0JBdVVBLFFBQUk7b0RBdlVKO3NEQW1VQTs7NkRBbnpDOUQ3RztzREFtekM4RCxlQTFDQ2tDO3dEQUVELFNBRkNBOzBEQU9EO2tFQVBDQTsyREFxQkQ7Ozs7OzhEQXpoaUNoRTFTO2lFQTBnaUM4RnJOOzJEQWNXOzs4REFIeEM7OztnRUE1ckMvRHFCOzsyREFxckM4RDs7Ozs7Ozs7d0RBOEJBLFFBQUs7c0RBMUNMOzt1REFEQTt1REFEQTs2REFyd0M5RHdjOzs7Ozs7Ozs7O3NEQXV3QzhELFVBakNBOzhHQThFTztvREFwVVA7Ozs7eURBVUEsc0JBNE5BLFFBQUk7eURBNU5KOzJEQTZLQSxVQXRxQzlEQzsyREFzcUM4RCxPQXZxQzlERDs7Ozs7Ozs7OzsyREF1cUM4RCxVQWFBO21IQStCNEU7eURBek41RTs7Ozs4REFVQSxzQkFnS0EsUUFBSTs4REFoS0o7Z0VBNEpBOzt1RUFocUM5REE7Z0VBZ3FDOEQsZUExQ0NrQztrRUFFRCxTQUZDQTtvRUFPRDs0RUFQQ0E7cUVBcUJEOzs7Ozt3RUF0NGhDaEUxUzsyRUF1M2hDOEZyTjtxRUFjVzs7d0VBSHhDOzs7MEVBemlDL0RxQjs7cUVBa2lDOEQ7Ozs7Ozs7O2tFQThCQSxRQUFLO2dFQTFDTDs7aUVBREE7aUVBREE7dUVBbG5DOUR3Yzs7Ozs7Ozs7OztnRUFvbkM4RCxVQWpDQTt3SEE4RU87OERBN0pQOzs7O21FQVVBLHNCQXVEQSxRQUFJO21FQXZESjtxRUFVQSxVQXZoQzlEQztxRUF1aEM4RCxPQXhoQzlERDs7Ozs7Ozs7OztxRUF3aEM4RCxVQVdBOzZIQStCNEU7bUVBcEQ1RTs0SEF1REs7OERBakVMO3lIQWdLSzt5REExS0w7b0hBNE5LO29EQXRPTDsrR0F1VUs7K0NBalZMOzBHQStYSzswQ0F4WWI7cUdBOGFVO3FDQXRibEI7Z0dBbWV5QjtnQ0F6ZWpDOzJGQTBqQnlCOzJCQWhrQmpDO3NGQXluQnlCO3NCQTluQmpDO2lGQThwQnlCO2lCQWxxQmpDOzRFQW9xQnFDO2VBenFCMUMsc0JBR29CLFFBQUk7ZUFIeEI7d0VBeXFCMkM7V0E3cUJwRDs7OztXQXNyQlk7O1FBLzFCaEI7U0FvS0krSDtVQUFtRDs7Ozs7OztVQXNzQm5EOzs7Y0FzSlc7Ozs7a0JBMTNCWEo7O2NBeTNCUTs7O3dCQTN3RFJoQjs7dUJBZzdCQW9CLDRDQW8yQmtCOzs7Y0FyQkcsb0RBU1Y7OztjQTFCRixzQkFlSyxZQUNJO2NBaEJUO2dCQUdvQjt5REFsdkQ3QjlILGFBNHZEZ0c7Y0FidkY7dUVBZ0JVOzs7O2VBcElWLHNCQWtISyxZQUFnRDtlQWxIckQ7aUJBNEZvQixVQXh0RDdCRDtpQkF3dEQ2Qjs7OztvQkFrQlA7cUJBSHlEMEU7cUJBR3pEOztzQkFGSDttREFENERBOzs7O3lFQUtqQjtlQWhIckQ7Ozs7b0JBSVEsc0JBdUZLLFlBQWdEO29CQXZGckQ7c0JBcUNvQixVQXJxRHJDMUU7c0JBcXFEcUM7Ozs7eUJBK0JQLGdDQUQ0RDBFO3lCQUM1RDswQkFhYzsyQkFGNENzRDsyQkFFNUM7OzRCQURILHNDQUQrQ0E7Ozt5QkFYMUQ7MEJBT1M7MEJBRkg7O3dEQU5zRHREOzBCQUt6RDswQkFERzswQkFGSDs7d0RBRnlEQTtnQ0FDNUQ7Ozs7NkJBcHNEOUIxRTs7Ozs7Ozs7OztzQkFxcURxQyxVQVdmOzhFQXFDb0Q7b0JBckZ6RDs7Ozt5QkFJUSxzQkErQkssWUFDSTt5QkFoQ1Q7MkJBSW9CLFVBdm9EN0NDOzJCQXVvRDZDLE9BeG9EN0NEOzs7Ozs7Ozs7OzJCQXdvRDZDLFVBV2Y7bUZBY29HO3lCQTdCekc7a0ZBZ0NVO29CQXBDbEI7K0VBdUZzRDtlQTNGOUQ7MEVBa0hzRDs7V0F0SC9EOzs7O1dBZ0tZOztRQTFnQ2hCO1NBcTJCSWlJO1VBQTJEOzs7O1lBOWxrQzdEdGI7O1FBOGxrQzZEO2dCQUEzRHNiO2dCQXR2QkF2RjtnQkF2QkFEO01BaktZLHdDQTZsQ3dDO0lBMWdsQ3hDLFNBNGdsQ2R5RiwrQkFBeUNBO01BQzNDO2NBRDJDQTtPQUMzQyxVQUQyQ0E7T0FDM0MsY0FEMkNBO01BQzNDLGVBT1FDO1FBQ0g7VUFDRTtpQ0FrSHFCLFFBQUs7OztjQVBMLG9EQU13Qzs7OztlQTdHcEQ7aUJBS0ssc0JBaUdvQiw4QkFBZ0I7aUJBakdwQyxzQkFnR29CLFFBQUs7aUJBaEd6Qjs7OztzQkFJUSxzQkEyRm9CLFFBQUk7c0JBM0Z4Qjt3QkEyRG9CLE9BMUV6Q0E7Ozs7Ozs7Ozs7Ozt3QkEyRjZCOztxQ0EzRjdCQTt5QkFxRjBCO2dGQW9Cc0M7c0JBMUYzQzs7OzsyQkFLUSxzQkFxRG9CLFFBQUk7MkJBckR4Qjs2QkFNSyxPQTFCbENBOzs7Ozs7Ozs7Ozs7NkJBOENxQzs7MENBOUNyQ0E7OEJBc0NrQztxRkFrQ29COzJCQXBEekI7b0ZBcUR5QjtzQkExRGpDO2lGQTJGeUI7aUJBL0ZqQzs0RUFpR3FDO2VBdEcxQyxzQkFHb0IsUUFBSTtlQUh4Qjt3RUFzRzJDO1dBMUdwRDs7Ozs7V0FvSFk7VUE3SG5CLFlBa0kwRDtNQS9ISjtPQUFsREM7UUFBa0Q7Ozs7OztxQkFvSTlDRDtRQUNIO1VBQ0U7aUNBVXFCLFFBQUs7OztjQVBMLG9EQU13QztXQVQ3RDs7Ozs7V0FZWTtVQXJJaUIsWUEwSXNCO01BdkJKO09BQWxERTtRQUFrRDs7Ozs7OztRQTZCbEQ7K0JBU3FCLE9BektyQnJJLE1BeUs0Qjs7O1lBTlAsb0RBS3dDO1NBUjdEO1NBSkU7MkRBejFpQ0p4UDs7OztTQXcyaUNjOztNQU1oQjtRQUtJOytCQVNxQixPQTlMckJ5UCxTQThMK0I7OztZQU5WLG9EQUt3QztTQVI3RDtTQUpFOztrREFqampDSmpROzs7O1NBZ2tqQ2M7O01BTWhCO1FBS0k7K0JBU3FCLE9Bbk5yQmxQLGFBbU5tQzs7O1lBTmQsb0RBS3dDO1NBUjdEO1NBSkU7Ozs7Ozs7Ozs7U0FlVTs7TUFNaEIsU0FBSXNtQjtRQUM4Qiw4QkFJSTtNQUx0QyxTQU1JQztRQUNlLDhCQUd1RDtNQVYxRSxTQVdJQztRQUNlO1VBd0JNLHFEQUE4QjtRQXhCcEM7VUFPTSxPQWhQckJ0SDs7Ozs7O2tFQWdRc0Q7UUFuQnREOzs7Ozs7dUJBb0JzRDtNQU1qQjs7O1VBSEs7NENBdHpNNUNEOztXQTZzTUVrSDtXQXNCQUM7V0FzQkFDO1dBc0JBQztXQU1BQztXQUtBQztPQTBCaUQ7c0NBQWpEdmxCO09BQWlELCtCQUFqREE7T0FBaUQsK0JBQWpEQTtNQUFpRDtRQTZCakQ7K0JBNkJxQixRQUFLOzs7WUFOTCxvREFLd0M7Ozs7YUF4QnBELHNCQWtCb0IsUUFBSTthQWxCeEI7ZUFHb0IsT0F0UzdCaWU7Ozs7ZUErU29COztnQkFESDt1REE1U2pCbGY7Z0JBMlNjO3VFQU93QzthQWpCN0M7c0VBa0J5QjtTQXRCbEM7Ozs7U0ErQlk7O01BdkR5QjtPQW1CckN3bkI7UUFBb0Q7Ozs7Ozs7UUErQ3BEOytCQTZZcUIsUUFBSzs7O1lBTkwsb0RBS3dDOzs7WUFySnBEO2NBS0ssc0JBMElvQiw4QkFBZ0I7Y0ExSXBDLHNCQXlJb0IsUUFBSztjQXpJekI7Ozs7bUJBSVEsc0JBb0lxQyxRQUFJO21CQXBJekM7cUJBK0ZvQixVQXhxQjFDdEk7cUJBd3FCMEM7Ozs7d0JBaUJWOzt5QkFZQTs7Ozs7NEJBeHlrQ2xDMVE7NEJBMnhrQzhGaVo7eUJBWTVCOzs0QkFIL0I7Ozs4QkE5ckJqQ0g7O3lCQXlyQmdDOzs7Ozs7OytCQUhBOzs7OzZFQW9CTzttQkFwSWpCOzs7O3dCQUtRLHNCQXlGb0IsUUFBSTt3QkF6RnhCOzBCQTBEb0IsVUF4b0JsRHBJOzBCQXdvQmtEOzs2QkFjViw0QkFEdUJ3RTs2QkFDdkI7c0NBSUssOEJBRDBCZ0U7O2dDQUcxQixnQ0FEbURDOzs2QkFMeEQ7Ozs7OztrRkFnQk87d0JBeEZqQjs7Ozs2QkFNUSxzQkFtRG9CLFFBQUk7NkJBbkR4QjsrQkFNSyxVQTFsQjNDekk7K0JBMGxCMkM7Ozs7OztrQ0F1Qks7O21DQWNBOzs7OztzQ0FsdWtDbEQxUTtzQ0FtdGtDaUZpWjttQ0FjQzs7c0NBSC9COzs7d0NBeGZqREY7O21DQWlmZ0Q7Ozs7Ozs7eUNBSEE7dUZBcUJ1Qzs2QkFsRGpEO3NGQW1EeUI7d0JBekRqQzttRkF5RnlCO21CQTlGakM7OEVBb0kwQztjQXhJbEQ7eUVBMElxQztZQS9JMUMsc0JBR29CLFFBQUk7WUFIeEIsa0VBK0kyQzs7OzthQWxZM0M7ZUErSEssc0JBa0hvQiw4QkFBZ0I7ZUFsSHBDLHNCQWlIb0IsUUFBSztlQWpIekI7Ozs7b0JBSVEsc0JBNEdxQyxRQUFJO29CQTVHekM7c0JBd0ZvQixVQXhpQjFDckk7c0JBd2lCMEM7OytCQWVWLDRCQURtQ3dFOzs7OzhFQU01QjtvQkE1R2pCOzs7O3lCQUtRLHNCQWtGb0IsUUFBSTt5QkFsRnhCOzJCQXVDb0IsVUE1ZmxEeEU7MkJBNGZrRDs7b0NBb0NQLDRCQURtQ3dFOzs7O2tDQS9oQjlFeEU7Ozs7Ozs7Ozs7MkJBNGZrRCxVQVdmO21GQStCZ0I7eUJBakZyQjs7Ozs4QkFNUSxzQkFnQ29CLFFBQUk7OEJBaEN4QjtnQ0FNSyxVQWplM0NBO2dDQWllMkM7OzttQ0FtQkssa0NBRG1DbUY7Ozs7d0ZBTzVCOzhCQS9CakI7dUZBZ0N5Qjt5QkF0Q2pDO29GQWtGeUI7b0JBdkZqQzsrRUE0RzBDO2VBaEhsRDswRUFrSHFDO2FBalAxQyxzQkE2SG9CLFFBQUk7YUE3SHhCOzs7O2tCQUlRO29CQUtLLHNCQW1Ib0IsOEJBQWdCO29CQW5IcEMsc0JBa0hvQixRQUFLO29CQWxIekI7Ozs7eUJBS1Esc0JBNEdvQixRQUFLO3lCQTVHekI7MkJBeUVvQixVQXBhbERuRjsyQkFvYWtEOzs7OEJBa0JWLElBRG1DbUY7OEJBQ25DLE9BRG1DQTs7Ozs7OEJBQ25DOzs7OzttRkFnQk87eUJBM0dqQjs7Ozs4QkFNUSxzQkFrRW9CLFFBQUs7OEJBbEV6QjtnQ0FNSyxVQXZXM0NuRjtnQ0F1VzJDOzs7bUNBMkNRLElBRG1DbUY7bUNBQ25DLE9BRG1DQTs7Ozs7bUNBQ25DOzs7Ozt1Q0FsWm5EbkY7Ozs7Ozs7Ozs7Z0NBdVcyQztpQ0FlUztpQ0FGSDt3RUFsWGpEbGY7aUNBaVg4QztpQ0FESDt3RkFnRGdCOzhCQWpFckI7dUZBa0UwQjt5QkF4RWxDO29GQTRHMEI7b0JBakhsQzsrRUFtSHFDO2tCQXhIMUMsc0JBRzBCLFFBQUk7a0JBSDlCOzJFQXdIMkM7YUE1SG5EO3dFQWlQMkM7O1NBclBwRDs7OztTQStZWTs7TUFqZHlCO09BNkRyQzRuQjtRQUFxQzs7Ozs7OztRQStackM7K0JBVU0sT0F0ZE5qQiw4QkFzZGdGOzs7WUFQM0Qsb0RBS3dDO1NBUjdEOzs7O1NBWVk7O01BeGV5QjtPQTBkSjtPQUhtQzs7O1FBNEJwRTsrQkFVTSxPQTllTkQsOEJBOGV5RTs7O1lBUHBELG9EQUt3QztTQVI3RDs7OztTQVlZOztNQS9meUI7T0E4ZXJDOUU7UUFBdUQ7Ozs7Ozs7UUEyQnZEOytCQWtIcUIsUUFBSzs7O1lBTkwsb0RBS3dDOzs7O2FBN0dwRCxzQkF1RzhCLFFBQUk7YUF2R2xDO2VBNkZvQixvREFVVjthQXZHVjs7OztrQkFJUSxzQkF3Rm9CLFFBQUs7a0JBeEZ6QjtvQkErRG9CLFVBdjFCckMxQztvQkF1MUJxQzs7Ozt1QkFtQlA7d0JBSHlEdUk7d0JBR3pEOzt5QkFGSDtzREFENERBOzs7O3VCQVF6RDt3QkFINEJJO3dCQUc1Qjs7eUJBRkg7c0RBRCtCQTs0RUFHUztrQkF2RmxEOzs7O3VCQUlRLHNCQTBEb0IsUUFBSTt1QkExRHhCO3lCQUlvQixVQWh5QjdDM0k7eUJBZ3lCNkM7Ozs7NEJBaUJWOzt5Q0FENER1STs2QkFTdEQ7Ozs7Z0NBL2hCekNEOzZCQThoQjRDOzZCQUZIOzsyREFOc0RDOzZCQUt6RDs2QkFERzs2QkFGSDs7MkRBRnlEQTttQ0FDNUQ7Ozs7NEJBb0JBOzt5Q0FEK0JJOzZCQVN6Qjs7OztnQ0FuakJ6Q0w7NkJBa2pCNEM7NkJBRkg7OzJEQU55Qks7NkJBSzVCOzZCQURHOzZCQUZIOzsyREFGNEJBO21DQUMvQjtpRkFnQnlEO3VCQXpEbkU7Z0ZBMER5QjtrQkE5RGpDOzZFQXdGMEI7YUE1RmxDO3dFQXVHbUM7U0EzRzVDOzs7O1NBb0hZOztNQTduQnlCO09BcWdCckNDO1FBQWlDOzs7Ozs7O1FBa0lqQzsrQkF3RHFCLFFBQUs7OztZQU5MLG9EQUt3Qzs7OzthQW5EcEQsc0JBNkNvQixRQUFJO2FBN0N4QjtlQTJDUTs7OzttQkFqTGpCQTttQkF2ZkFyQjtnQkF1cUJjOzs7bUJBeG5CZG1COztlQXduQmMsd0RBRTZDO2FBNUNsRDs7OztrQkFJUSxzQkE0Qm9CLFFBQUs7a0JBNUJ6QjtvQkFJb0IsT0ExNUJyQzFJOzs7Ozs7Ozs7O29CQXE2QjRCOztxQkFESDs0REFsNkJ6QmxmO3FCQWk2QnNCOzRFQWN3QztrQkEzQjdDOzJFQTRCMEI7YUFoQ2xDO3dFQTZDeUI7U0FqRGxDOzs7O1NBMERZOztNQWpzQnlCO09BbW9CckN1aEI7UUFBcUI7Ozs7Ozs7Y0F4NEJyQnZoQjtjQXc0QkF1aEI7Y0FySkFLO2NBdkJBRCwrQkFxUG9EO0lBaCttQ3hDLFNBayttQ2RvRywyQkFBNEJDO01BQzlCO3VCQUQ4QkE7T0FDOUIsK0JBRDhCQTtPQUM5QixvQkFEOEJBO09BQzlCLDBCQUQ4QkE7T0FDOUIsS0FEOEJBO09BQzlCLGNBRDhCQTtPQUM5QixVQUQ4QkE7T0FDOUIsVUFEOEJBO01BQzlCO1FBWUk7OztZQWVNLE9BM0JOOVU7cUJBOEJVLElBRHVCd1EsU0E3QmpDeFEsbUJBOEJVLFVBRHVCd1E7O2VBR3ZCLElBRG1DQyxjQS9CN0N6USxtQkFnQ1UsVUFEbUN5UTs7ZUFHbkMsSUFENERDLGFBakN0RTFRLG1CQWtDVSxVQUQ0RDBRO3FCQUc1RCxJQUQyQkMsV0FuQ3JDM1EsbUJBb0NVLFVBRDJCMlE7O2VBRzNCLElBRCtCQyxlQXJDekM1USxtQkFzQ1UsVUFEK0I0USxnQkFDc0I7OztZQXZCMUMsb0RBVVY7U0FiWDs7OztTQTRCWTs7TUF4Q2hCO09BUUlDO1FBQThDOzs7O1VBMXZrQ2hEelU7O01BMHZrQ2dEO1FBMEM5Qzs7O1lBZ0JNLG1DQWpFTmtVLCtCQWlFa0U7OztZQWI3QyxvREFXVjtTQWRYOzs7O1NBa0JZOztNQXBFaEI7T0E4Q0lRO1FBQXlDOzs7Ozs7O1FBaUN6Qzs7O1lBV00sT0F4Rk5QO3FCQTJGVTtxQkFFQTtxQkFFQTtxQkFFQTtxQkFFQTtzQkFFQSxhQUF1Qzs7O1lBckI1QixvREFNVjtTQVRYOzs7O1NBMEJZOztNQXpHaEI7T0EwRUlwUjtRQUFpRTs7OztVQWpzbUNuRWxHOztNQWlzbUNtRTtRQXlDakU7OztZQXNWTSxPQWpjTjRYOzs7Z0JBbWNvQ0wsU0FuY3BDSztzQkFtY29DTDs7Ozs7MEJBd0tQLDRCQUQwQk87OzhCQUcxQjs7OzhCQUVBOzs7O2tCQUVPOztlQXZLcEI7Ozs7OzttQkF0dWtDbEIxVDs7b0JBK3RrQ3NDbVQ7b0JBN1pwQ007b0JBNlpvQ047b0JBdGNwQzFqQjtvQkFGQW9TO29CQXVFQUM7b0JBdEVBOEM7b0JBdWNvQ3VPOztvQkFyY3BDdEo7b0JBcWNvQ3NKOzs7b0JBcGNwQ2xqQjs7Z0JBMGNtRDs7bUJBRmxDOzs7cUJBNTZLbkJxaEI7O2dCQTg2S3FELE1BSGpDNWdCO2dCQUdpQyxNQUhqQ0E7Z0JBR2lDLE1BSGpDQTtnQkFHaUMsTUFIakNBO2dCQUdpQyxNQUhqQ0E7Z0JBR2lDOzBCQW9PdkJpakI7bUJBV0g7Ozs7Ozs7dUJBWEdBO29CQVU4RDs7dUJBSGxELDJDQTlPdEJqakI7O29CQTBPTzs7Ozs7OzsyRUFZMkI7Z0JBblBELFlBSGpDQTtlQXlRRjtlQXJRQTtnQkFnUUg7Ozs7O21CQXJobkNmcU07bUJBby9tQ29Cakw7Z0JBK0JMOzt5QkFwUUU4aEI7O2VBcVNDO2dCQVQ4QlAsYUFodUI5Q0c7Z0JBeXVCZ0I7Ozs7O21CQTc4a0NsQnZUOztvQkEwd2pDRXdUO29CQTNDQTVSO29CQXVFQUM7b0JBdEVBOEM7b0JBR0EzVTtvQkFGQVI7b0JBbXVCOEM0akI7Ozs7Ozs7OztnQkFRaUI7O21CQUg5Qzs7O3FCQXJ5ZW5CL0Y7O2dCQXd5ZWlFOzBCQThPbkNxRzttQkFXSDs7Ozs7Ozt1QkFYR0E7b0JBVXlFOzt1QkFIN0QsMkNBMVB0QnpoQjs7b0JBc1BPOzs7Ozs7OzJFQVkyQjtnQkE3UFc7b0JBTDdDQTtlQTJRRjtlQXJRQTtnQkFnUUg7Ozs7O21CQXp4bkNmOEs7bUJBMnZuQ29CeEs7Z0JBNEJMOzt5QkF0UUVxaEI7O2VBb1NDO2dCQU55QkMsZUEvL0J6Q047Z0JBcWdDZ0I7Ozs7O21CQXJybENsQnRUOztvQkErcWxDMkM0VDs7O29CQWhnQ3pDN2pCO29CQWdnQ3lDNmpCO29CQXo5QnpDTDtvQkEzQ0E1UjtvQkF1RUFDO29CQXRFQThDO29CQUNBblY7b0JBa2dDeUNxa0I7Z0JBS1E7O21CQUZoQzs7O3FCQWozakJuQmxJOztnQkFtM2pCbUQ7MEJBNEtyQitIO21CQVdIOzs7Ozs7O3VCQVhHQTtvQkFVNEQ7O3VCQUhoRCwyQ0F0THRCSTs7b0JBa0xPOzs7Ozs7OzJFQVkyQjtnQkEzTEg7O2tCQUgvQkE7Ozs7OztlQXNNRjtlQWxNQTtnQkE2TEg7Ozs7O21CQTE5bkNmOVc7bUJBNDduQ29CK1c7Z0JBNkJMOzt5QkFqTUVDLGlEQXVOOEU7OztZQWx5QnhFLG9EQVVWOzs7O2FBaFZGO2VBZ0NLLE9BL0lkVDs7a0JBbUpzQjs7MEJBdm4vQnhCbFA7O2tCQTRuL0J3Qjs7MEJBNW4vQnhCQTs7O21CQStuL0JtRHdQLGVBM0pqRE47eUJBMkppRE07O29CQXdLZDs7OztxQkFDUzs7a0JBbEtwQjs7Ozs7O3NCQTk3akMxQjlUOzt1QkF1N2pDbUQ4VDt1QkFySGpETDt1QkFxSGlESzt1QkE5SmpEcmtCO3VCQUZBb1M7dUJBdUVBQzt1QkF0RUE4Qzt1QkErSmlEa1A7O3VCQTdKakRqSzt1QkE2SmlEaUs7Ozt1QkE1SmpEN2pCOzttQkFrSzJEOztzQkFGbEM7Ozt3QkFwb0szQnFoQjs7bUJBc29LNkQsTUFIakM1Z0I7bUJBR2lDLE1BSGpDQTttQkFHaUMsTUFIakNBO21CQUdpQyxNQUhqQ0E7bUJBR2lDLE1BSGpDQTttQkFHaUM7NkJBaU92QmlqQjtzQkFXSDs7Ozs7OzswQkFYR0E7dUJBVThEOzswQkFIbEQsMkNBM090QmpqQjs7dUJBdU9POzs7Ozs7OzhFQVkyQjttQkFoUEQsWUFIakNBO2tCQXNRRjtrQkFsUUE7bUJBNlBIOzs7OztzQkExdW1DdkJxTTtzQkF5c21DNEJqTDttQkErQkw7OzRCQWpRRThoQiw2Q0F3UmdGO2FBclU5RjtlQUdvQixPQWxIN0JKOzs7O3NCQURBdmpCOzs7Ozs7Ozs7O2VBOEhjO3VFQWdCbUQ7YUE5QnhEO3NFQXFVK0Y7U0F6VXhHOzs7O1NBOG1DWTs7TUFqdUNoQjtPQStHSWlrQjtRQUF5RDs7OztVQWorbEMzRHRYOztNQWkrbEMyRCxlQTJuQ3JEL0c7UUFDSDtVQUNFOzs0QkFnQk0sa0JBN29DVHFlLDBCQTJuQ0lyZSxJQW1CVzs7O2NBZFMsb0RBV1Y7V0FkWDs7Ozs7V0FtQlk7VUFyb0NjLFlBMG9DeUI7TUE3Qlo7T0FBMUNrZDtRQUEwQzs7Ozs7OztRQWtDMUM7K0JBZU0sT0F6cUNObUIseUJBeXFDNkU7OztZQVp4RCxvREFVVjtTQWJYOzs7O1NBaUJZOztNQW5EOEI7T0E4QjFDM007UUFBOEI7Ozs7OztnQkFBOUJBLG9CQTlCQXdMLHVCQTJEeUI7SUFyd3BDYixTQXV3cENkMkUsNkJBQThCQztNQUNoQztjQURnQ0E7T0FDaEMsVUFEZ0NBO09BQ2hDLGNBRGdDQTtPQUNoQywrQkFEZ0NBO01BQ2hDO1FBU0k7K0JBU3FCLE9BaEJyQmxvQixhQWdCbUM7OztZQU5kLG9EQUt3QztTQVI3RDtTQUpFOzs7Ozs7Ozs7O1NBZVU7O01BTWhCO1FBS0k7K0JBU3FCLE9BeENyQmtmLE1Bd0M0Qjs7O1lBTlAsb0RBS3dDO1NBUjdEO1NBSkU7MkRBbjltQ0p4UDs7OztTQWsrbUNjOztNQU1oQjtRQUtJOytCQVNxQixPQTdEckJ5UCxTQTZEK0I7OztZQU5WLG9EQUt3QztTQVI3RDtTQUpFOztrREEzcW5DSmpROzs7O1NBMHJuQ2M7O01BTWhCO1FBS0k7K0JBWStCLFFBQUs7OztZQVRmLG9EQVNWO1NBWlg7U0FKRTs7Ozs7Ozs7OztTQWtCVTs7TUF6RmhCO09BcUd1RTs7VUFGL0I7NENBcm9JdEMwVzs7V0FzaUlFcUI7V0FzQkFtQjtXQXNCQUM7V0FzQkFDO09BMkIyQzt3Q0FBM0NybkI7T0FBMkMsaUNBQTNDQTtNQUEyQztRQXNCM0M7K0JBU3FCLE9BaElyQmllLE1BZ0k0Qjs7O1lBTlAsb0RBS3dDO1NBUjdEO1NBSkU7MkRBM2luQ0p4UDs7OztTQTBqbkNjOztNQU1oQjtRQUtJOytCQVNxQixPQXJKckJ5UCxTQXFKK0I7OztZQU5WLG9EQUt3QztTQVI3RDtTQUpFOztrREFud25DSmpROzs7O1NBa3huQ2M7O01BTWhCO1FBS0k7K0JBU3FCLE9BMUtyQmxQLGFBMEttQzs7O1lBTmQsb0RBS3dDO1NBUjdEO1NBSkU7Ozs7Ozs7Ozs7U0FlVTs7TUE5S2hCO09BMkwwQzs7VUFKTTs0Q0FuN0U5Q29uQjs7V0E4MkVFcUI7V0FzQkFDO1dBc0JBQztPQXNCa0Q7d0NBQWxEdG1CO09BQWtELGlDQUFsREE7T0FBa0QsaUNBQWxEQTtNQUFrRDtRQXdCbEQ7K0JBU3FCLE9Bck5yQjZjLFlBcU51RTs7O1lBTmxELG9EQUt3QztTQVI3RDtTQUpFOztrREE5c25DSjNQOzs7O1NBNnRuQ2M7O01BTWhCO1FBS0k7K0JBU3FCLE9BeE9yQjRZLDhCQXdPd0Q7OztZQU5uQyxvREFLd0M7U0FSN0Q7U0FKRTs7Ozs7Ozs7OztTQWVVOztNQU1oQjtRQUtJOytCQVNxQixPQWpRckJqSixTQWlRdUQ7OztZQU5sQyxvREFLd0M7U0FSN0Q7U0FKRTs7Ozs7WUExc3BDSmxUOzs7OztTQXl0cENjOztNQU1oQjtRQUtJOytCQVVNLE9BektOd2MsZ0NBeUtxRjs7O1lBUGhFLG9EQUt3QztTQVI3RDtTQUpFOzs7Ozs7Ozs7O1NBZ0JVOztNQU1oQjtRQUlJOytCQVNxQixPQTdTckJ0SixZQTZTNEQ7OztZQU52QyxvREFLd0M7U0FSN0Q7U0FIRTs7Ozs7WUF0MnBDSnpUOzs7OztTQW8zcENjOztNQU1oQjtRQUtJOytCQVNxQixPQWpVckJ6TCxhQWlVbUM7OztZQU5kLG9EQUt3QztTQVI3RDtTQUpFOzs7Ozs7Ozs7O1NBZVU7O01BTWhCO1FBS0k7OztZQWNNLE9BaFBOdW9CO3FCQW1QVSxvQkFFQSxxQkFFQSxhQUEyRDs7O1lBbEJoRCxvREFTVjtTQVpYO1NBSkU7Ozs7O1lBeHpwQ0p4Yzs7Ozs7U0FtMXBDYzs7TUFRaEI7UUFJSTsrQkFTcUIsT0E1WHJCbVQsU0E0WDZDOzs7WUFOeEIsb0RBS3dDO1NBUjdEO1NBSEU7O2tEQXZ2cENKOVM7Ozs7U0Fxd3BDYzs7TUE5WGhCO09Bd1kyRDs7VUFGMUI7NENBNXFEL0IyYjs7V0E2K0NFZ0I7V0FzQkFDO1dBc0JBQztXQXNCQUM7V0F1QkFDO1dBcUJBQztXQXNCQUM7V0FvQ0FDO09BcUJzQzt3Q0FBdEM3bUI7T0FBc0MsaUNBQXRDQTtNQUFzQztRQTRCdEM7K0JBU3FCLE9BemFyQnljLFlBeWF1RTs7O1lBTmxELG9EQUt3QztTQVI3RDtTQUpFOztrREFsNm5DSjNQOzs7O1NBaTduQ2M7O01BTWhCO1FBS0k7K0JBY00sWUFBeUQ7OztZQVgxQyxvREFTVjtTQVpYO1NBSkU7Ozs7O1lBOTVwQ0p4RDs7Ozs7U0FrN3BDYzs7TUFRaEI7UUFLSTsrQkFTcUIsT0F6ZHJCb2MsOEJBeWR3RDs7O1lBTm5DLG9EQUt3QztTQVI3RDtTQUpFOzs7Ozs7Ozs7O1NBZVU7O01BTWhCO1FBS0k7K0JBU3FCLE9BbGZyQmpKLFNBa2Z1RDs7O1lBTmxDLG9EQUt3QztTQVI3RDtTQUpFOzs7OztZQTM3cENKbFQ7Ozs7O1NBMDhwQ2M7O01BTWhCO1FBS0k7K0JBVU0sT0FyVU42YyxnQ0FxVTZGOzs7WUFQeEUsb0RBS3dDO1NBUjdEO1NBSkU7Ozs7Ozs7Ozs7U0FnQlU7O01BTWhCO1FBS0k7K0JBU3FCLE9BL2hCckIzSixZQStoQjREOzs7WUFOdkMsb0RBS3dDO1NBUjdEO1NBSkU7Ozs7O1lBdmxxQ0p6VDs7Ozs7U0FzbXFDYzs7TUFNaEI7UUFLSTsrQkFTcUIsT0FuakJyQnpMLGFBbWpCbUM7OztZQU5kLG9EQUt3QztTQVI3RDtTQUpFOzs7Ozs7Ozs7O1NBZVU7O01BTWhCO1FBS0k7K0JBU3FCLE9BM2tCckJrZixTQTJrQjZDOzs7WUFOeEIsb0RBS3dDO1NBUjdEO1NBSkU7O2tEQXI4cENKOVM7Ozs7U0FvOXBDYzs7TUE3a0JoQjtPQXVsQjJFOztVQUZsQzs0Q0F0b012Q21YOztXQTQ4TEV4TztXQXNCQWdEO1dBNkJBZ0M7V0FzQkEwUDtXQXNCQUM7V0F1QkFDO1dBc0JBQztXQXNCQUM7T0FzQjZDO3dDQUE3QzltQjtPQUE2QyxpQ0FBN0NBO01BQTZDO1FBNkI3QzsrQkFVTSxPQXJiTitsQixnQ0FxYm9HOzs7WUFQL0Usb0RBS3dDO1NBUjdEOzs7O1NBWVk7O01BNW5CaEI7T0E4bUJxQztPQUhtQzs7O1FBMkJwRTs7O1lBY00sT0F0aUJOUDs7Ozs7O3FCQXFGQUs7MkJBd2RrQjs7O1lBbEJHLG9EQVNWO1NBWlg7Ozs7U0F1Qlk7O01BN3BCaEI7T0Frb0JJckg7UUFBcUI7Ozs7OztxQkFvQ2pCL1A7UUFDSDtVQUNFOzs7Y0F3QlM7Ozs7Ozs7a0JBMUJSQTtlQXlCdUU7O2tCQUhoQzs7O29CQW5GM0N1WTs7ZUFnRndDOzs7Ozs7O2VBRkM7O2VBc0I3Qjs7Ozs7O2tCQXZDUnZZO2VBc0MrRDs7a0JBRnhDOzs7b0JBaFQzQmdZOztlQTZTWTs7Ozs7OztlQUY0Qjs7Y0FhMUIsd0NBaEZkakk7ZUFnRndDLE9BNUNwQy9QO2NBNkNRLE9Bcm1CWitXOzs7O2NBa2xCWSxVQXNCTTtjQUZIOzt3QkFqaEJmSzs7dUJBNmhCb0I7cURBekNOb0IsZ0JBY0FDO3lCQWRBRDt5QkFjQUM7dUJBbGdCZHJCO3lCQW9mY29CO3lCQWNBQyxjQStCbUQ7OztjQXpEekMsb0RBVVY7V0FiWDs7Ozs7V0E4RFk7VUE3Rk0sWUFrR2lDO01BeEVaO09BQTFDM0c7UUFBMEM7Ozs7Ozs7UUE2RTFDOzs7WUFjVSx3Q0E1SFYvQjthQTRIb0M7WUFDNUIsT0FqcEJSZ0g7Ozs7WUFvcEJjO1lBRkg7OztnQkE3akJYSzs7Y0FpbUJpQjs7Ozs7OztrQkEzWWpCVztlQTBZd0U7O2tCQUZ4Qzs7O29CQXZZaENDOztlQW9ZaUI7Ozs7Ozs7ZUFGQTtlQUxBOzs7Ozs7a0JBL0tqQk07ZUE4S2dGOztrQkFIOUQ7OztvQkExS2xCQzs7ZUFzSzZDOzs7Ozs7O2VBRmpCO2NBQWQ7dUJBcktkRDt1QkEvTUFQO1lBb1pXLE9BMW1CWFg7cUJBcWFBa0I7cUJBL01BUCxnQ0F3WndFOzs7WUE5RG5ELG9EQVNWO1NBWlg7Ozs7U0FtRVk7O01BaEo4QjtPQXlFMUN6UjtRQUE4Qjs7Ozs7OztjQTFHOUJ5SjtjQTBHQXpKO2NBekVBd0w7Y0F4REEzQiwrQkFtTm9EO0lBdGtyQ3hDLFNBd2tyQ2R1SSwrQkFBNkNBO01BQy9DO2NBRCtDQTtPQUMvQyxVQUQrQ0E7T0FDL0MsY0FEK0NBO09BQy9DLCtCQUQrQ0E7TUFDL0M7UUFTSTs7O1lBVU07bUJBbkJOaEw7YUFtQk0sTUFuQk5BO2FBbUJNLE1BbkJOQTthQW1CTSxNQW5CTkE7YUFtQk0sTUFuQk5BO2FBbUJNLE1BbkJOQTthQW1CTSxNQW5CTkE7WUFtQk0sZUFJY2tDO2NBQ0gsU0FER0E7Z0JBSUMsSUFENEIvZixPQUg3QitmLHFCQUlDLGFBRDRCL2Y7Y0FRWSxRQUFJO1lBWnREOztvQkF0Qlg2ZDs7Ozs7Ozs7MEJBOEN1RDs7O1lBbENsQyxvREFLd0M7U0FSN0Q7Ozs7U0F1Q1k7O01BaERoQjtPQUlJaUw7UUFBZ0QsaURBN3ZvQ2xEemE7TUE2dm9Da0Q7UUFzRGhEOytCQVNxQixPQW5FckJ3UCxNQW1FNEI7OztZQU5QLG9EQUt3QztTQVI3RDtTQUhFOzJEQWh6b0NKeFA7Ozs7U0E4em9DYzs7TUFNaEI7UUFJSTsrQkFTcUIsT0F2RnJCeVAsU0F1RitCOzs7WUFOVixvREFLd0M7U0FSN0Q7U0FIRTs7a0RBdmdwQ0pqUTs7OztTQXFocENjOztNQU1oQjtRQUlJOytCQVNxQixPQTNHckJsUCxhQTJHbUM7OztZQU5kLG9EQUt3QztTQVI3RDtTQUhFOzs7Ozs7Ozs7O1NBY1U7O01BTWhCO1FBS0k7K0JBU3FCLE9BaElyQm1vQiw4QkFnSXdEOzs7WUFObkMsb0RBS3dDO1NBUjdEO1NBSkU7Ozs7Ozs7Ozs7U0FlVTs7TUFySWhCO09BK0k4RDs7VUFGNUI7NENBLzhCaENGOztXQXczQkVtQztXQXFCQUM7V0FxQkFDO1dBcUJBQztPQXNCdUM7a0NBQXZDdHBCO09BQXVDLCtCQUF2Q0E7T0FBdUMsK0JBQXZDQTtPQUF1QywrQkFBdkNBO01BQXVDO1FBcUJ2QzsrQkFTcUIsT0FyS3JCa3BCLDhCQXFLd0Q7OztZQU5uQyxvREFLd0M7U0FSN0Q7U0FKRTsyREFyNW9DSnphOzs7O1NBbzZvQ2M7O01BTWhCO1FBS0k7K0JBU3FCLE9BOUxyQnlQLFNBOEwrQjs7O1lBTlYsb0RBS3dDO1NBUjdEO1NBSkU7O2tEQTdtcENKalE7Ozs7U0E0bnBDYzs7TUFNaEI7UUFLSTsrQkFTcUIsT0FuTnJCbFAsYUFtTm1DOzs7WUFOZCxvREFLd0M7U0FSN0Q7U0FKRTs7Ozs7Ozs7OztTQWVVOztNQU1oQjtRQUtJOytCQVNxQixPQXhPckJtb0IsOEJBd093RDs7O1lBTm5DLG9EQUt3QztTQVI3RDtTQUpFOzs7Ozs7Ozs7O1NBZVU7O01BN09oQjtPQXlQK0I7O1VBSDVCOzRDQXhqQ0RGOztXQTY5QkUyQztXQXNCQUM7V0FzQkFDO1dBc0JBQztPQXNCdUM7d0NBQXZDMW9CO01BQXVDO1FBeUJ2QzsrQkFTcUIsT0EvSHJCbW9CLDBCQStIZ0Q7OztZQU4zQixvREFLd0M7U0FSN0Q7Ozs7U0FXWTs7TUF2UmhCO09Bd1FJako7UUFBcUI7Ozs7Ozs7UUEwQnJCOytCQVVNLE9BbkpOb0osOEJBbUp1RTs7O1lBUGxELG9EQUt3QztTQVI3RDs7OztTQVlZOztNQTlTaEI7T0FnU3NDO09BSGtDOzs7UUEyQnBFOzs7WUF1QmU7O2FBRkE7OzBDQWhEZmhKO1lBK0NZO3VCQUlBOzthQVdTOzs7MkNBOURyQkE7Y0E2RGtCO2NBRkc7O3dCQUZNamUsS0FBaUJDO2lCQUNwQiw0Q0FER0QsS0FBaUJDLEtBQ0s7Y0FGL0I7Ozs7O2lCQXhEbEJnZTtjQXVEZTtjQUZBOzs7aUJBM0xmOEk7aUJBNEdBTztvQkE4RVk7WUFGRzthQU5UOzs7Z0JBdEVOQTs7YUFtRThDOzs7Ozs7O2FBQUQ7O2dCQUZXOzs7a0JBNUt4RE47O2FBMEtNOzs7Ozs7O29FQTBCZ0Y7OztZQWpDakUsb0RBSVY7U0FQWDs7OztTQXNDWTs7TUE5VmhCO09Bb1RJbFo7UUFBc0I7Ozs7OztnQkE1Q3RCK1AsWUE0Q0EvUCxZQWlEaUU7SUE5NnJDckQ7Ozs7T0FTZDNHOztPQWdCQUM7O09BZUFDOztPQW1CQUM7O09BZ0JBQzs7T0FZQUM7O09BWUFDOztPQWdCQUM7O09BaUJBQzs7T0FjQUM7O09BZ0JBQzs7T0FnQkFDOztPQWlCQUM7O09BZUFDOztPQWVBQzs7T0FhQUM7O09BZUFDOztPQWdCQUM7O09BZUFDOztPQXNCQUM7O09BcUJBQzs7T0FtQkFDOztPQWtCQUM7O09BcUJBQzs7T0FvQkFDOztPQWVBQzs7T0FXQUM7O09BWUFDOztPQWNBQzs7T0FnQkFDOztPQWdCQUM7O09BV0FDOztPQWlCQUM7O09BcUJBQzs7T0FRQUM7O09BbUJBQzs7T0F5QkFDOztPQWVBQzs7T0FvQkFDOztPQWNBQzs7T0FjQUM7O09BbUJBQzs7T0EyQkFDOztPQXdCQUM7O09Bc0JBQzs7T0FXQUM7O09BU0FDOztPQWFBQzs7T0FnQkFDOztPQVdBQzs7T0FRQUM7O09BU0FDOztPQVFBQzs7T0FTQUM7O09BVUFDOztPQVVBQzs7T0FrQkFDOztPQXlCQUM7O09BZ0JBQzs7T0FvQkFDOztPQTRCQUM7O09BdUNBQzs7T0FxQkFDOztPQWVBQzs7T0FhQUM7O09BYUFDOztPQWdCQUM7O09BMEJBQzs7T0FtQ0FDOztPQXNCQUM7O09BMEJBQzs7T0FpQ0FDOztPQXlCQUM7O09BZUFDOztPQWlCQUM7O09BcUJBQzs7T0EyQkFDOztPQThCQUM7O09BNkJBQzs7T0F1QkFDOztPQWtCQUM7O09Bc0JBQzs7T0FtQkFDOztPQTBCQUM7O09BMENBQzs7T0FxQkFDOztPQWdDQUM7O09BcUNBQzs7T0E0QkFDOztPQStDQUM7O09BdUNBQzs7T0F3REFDOztPQW9EQUM7O09Bd0NBQzs7T0F1QkFDOztPQWdCQUM7O09Bd0JBQzs7T0FvQkFDOztPQWVBQzs7T0FhQUM7O09BaUJBQzs7T0FZQUM7O09BYUFDO09BWUFDO09Bc0pBSztPQThTQVU7T0FrUEFPO09BeURBRTtPQTJKQUk7T0EyYUF3QjtPQWtIQUM7T0E0QkFDO09BMkJBQztPQXloQkFDO09BUUFDO09BR0FDO09BNkJBQztPQXdsREFnRDtPQW1tTkE4QjtPQXdhQUU7T0FrL0xBb0M7T0EreUVBMEI7T0FnalBBb0I7T0EyaUVBNEM7T0FpdEJBMEI7T0FxOUJBbUI7T0EwakJBa0I7T0FzeURBd0I7T0FzOUJBVztPQXF5Q0FFO09BaTBCQWlDO0lBeGtyQ2M7O2FDbUJkZTtNQUNBO21CQUNRN2tCOzthQUlHQzttQkFJREM7bUJBSUFDO29CQUlKQyx1REFHSDthQUVIMGtCLGtCQUFtQjNTO01BQ0MsSUFNcEI1UixLQU5vQix3QkFERDRSO01BQ0Msd0JBTXBCNVI7Ozs7O2dCQUVFLDRDQUZGQTtnQkFFRTtjQUphO1lBRkM7VUFDRDtRQUZGO01BSUYsWUFJRjthQWNUd2tCO01BQ0E7WUFDVS9rQjtVQUlxQ0M7OzhCQUc1QzthQUVIK2tCLHVCQUF3QkM7TUFFQyxJQUl6QjFrQixLQUp5Qix3QkFGRDBrQjtNQUVDLHdCQUl6QjFrQjs7VUFFRSw0Q0FGRkE7VUFFRTtRQUhGO01BRmUsWUFNdUQ7YUFldEUya0I7TUFFQTs7YUFDZ0NsbEI7OzthQUlNQzs7OzthQUl6QkMsOERBR1Y7YUFFSGlsQixpQ0FDREM7TUFFeUMsSUFNeEM3a0IsS0FOd0Msd0JBRnpDNmtCO01BRXlDLHdCQU14QzdrQjs7O1lBRUUsNENBRkZBO1lBRUU7VUFKRjtRQUZBO01BR2tCLFlBS1Q7YUFnQlQ4a0I7TUFFQTs7YUFDd0JybEI7OzthQUlGQzs7O2FBSVdDOzs7YUFJcEJDLDhEQUdWO2FBRUhtbEIsK0JBQ0RDO01BRXdDLElBUXZDaGxCLEtBUnVDLHdCQUZ4Q2dsQjtNQUV3Qyx3QkFRdkNobEI7Ozs7Y0FFRSw0Q0FGRkE7Y0FFRTtZQU5GO1VBR2tCO1FBTGxCO01BSUEsWUFNUzthQWNUaWxCO01BRUEsdUJBQ0l4bEI7VUFJQUM7MkNBR0Q7YUFFSHdsQiw4QkFDRC9TO01BRWlDLElBR2hDblMsS0FIZ0Msd0JBRmpDbVM7TUFFaUMsd0JBR2hDblM7O1VBRUUsNENBRkZBO1VBRUU7UUFKTztNQUNBLFlBS0E7YUFjVG1sQjtNQUNBO1FBRzBFLElBRm5FMWxCLGFBRW1FLHlDQUZuRUE7O1VBSUFDOzhDQUdKO2FBRUgwbEIsdUJBQXdCQztNQUVDLElBSXpCcmxCLEtBSnlCLHdCQUZEcWxCO01BRUMsd0JBSXpCcmxCOztVQUVFLDRDQUZGQTtVQUVFO1FBSnNDOzsrQ0FKaEJxbEI7UUFJTDtNQUNQLFlBSTBEO2FBY3RFQztNQUVBO1FBRzBFLElBRm5FN2xCLGFBRW1FLHlDQUZuRUE7O1VBSUFDOzhDQUdKO2FBRUg2bEIsK0JBQ0RDO01BRWtDLElBSWpDeGxCLEtBSmlDLHdCQUZsQ3dsQjtNQUVrQyx3QkFJakN4bEI7O1VBRUUsNENBRkZBO1VBRUU7UUFKd0I7OzRDQUozQndsQjtNQUthLFlBS0g7YUFnQlRDO01BQ0E7O2FBQ3NCaG1COzs7YUFJSEM7OzthQUlPQzs7O2FBSU9DOzRFQUc5QjthQUVIOGxCLHlCQUEwQkM7TUFFQyxJQU8zQjNsQixLQVAyQix3QkFGRDJsQjtNQUVDLHdCQU8zQjNsQjs7OztjQUVFLDRDQUZGQTtjQUVFO1lBUHNCO1VBREc7UUFHM0I7TUFFQSxZQUl3RTthQWN4RTRsQjtNQUNBO1FBRzBFLElBRjVCbm1CLGFBRTRCLHlDQUY1QkE7OztVQUl4Q0M7NkNBR0g7YUFFSG1tQix3QkFBeUJDO01BRUMsSUFJMUI5bEIsS0FKMEIsd0JBRkQ4bEI7TUFFQyx3QkFJMUI5bEI7O1VBRUUsNENBRkZBO1VBRUU7UUFKd0Q7cURBSmpDOGxCO01BS2QsWUFJMkQ7YUFjdEVDO01BRUE7WUFDbUJ0bUI7TUFNdUQsSUFGcENDLGVBRW9DLHlDQUZwQ0E7MkVBR25DO2FBRUhzbUIsK0JBQ0RDO01BRW9DLElBSW5Dam1CLEtBSm1DLHdCQUZwQ2ltQjtNQUVvQyx3QkFJbkNqbUI7O1VBRUUsNENBRkZBO1VBRUU7UUFMc0I7TUFFbUM7OzBDQUw1RGltQixrQ0FVVTthQWVUQztNQUNBO21CQUNVem1COzthQUlDQzs7YUFJc0JDOzRFQUc5QjthQUVId21CLGdCQUFpQkM7TUFDQyxJQUtsQnBtQixLQUxrQix3QkFERG9tQjtNQUNDLHdCQUtsQnBtQjs7O1lBRUUsNENBRkZBO1lBRUU7VUFMYztRQUVoQjtNQUhlLFlBT047YUFlVHFtQjtNQUVBOztTQUdtRCxJQUZuQzVtQixhQUVtQyx1Q0FGbkNBOzs7YUFJa0NDOzs7O2FBSUFDOztrQ0FHL0M7YUFFSDJtQixpQ0FDREQ7TUFHa0QsSUFPakRybUIsS0FQaUQsd0JBSGxEcW1CO01BR2tELHdCQU9qRHJtQjs7O1lBRUUsNENBRkZBO1lBRUU7VUFQNkM7OztvQkFMaERxbUI7UUFPQztNQUVBLFlBS1M7YUFlVEU7TUFDQTttQkFDTTltQjttQkFJQUM7b0JBSUFDLHVEQUdIO2FBRUg2bUIsMEJBQTJCQztNQUVDLElBSTVCem1CLEtBSjRCLHdCQUZEeW1CO01BRUMsd0JBSTVCem1COzs7WUFFRSw0Q0FGRkE7WUFFRTtVQUhTO1FBREE7TUFEQSxZQU02RDthQWV4RTBtQjtNQUNBO21CQUNTam5COzthQUlJQzs7YUFJU0M7aUVBR25CO2FBRUhnbkIsb0JBQXFCQztNQUNDLElBSXRCNW1CLEtBSnNCLHdCQURENG1CO01BQ0Msd0JBSXRCNW1COzs7WUFFRSw0Q0FGRkE7WUFFRTtVQUh5QjtRQURUO01BREosWUFNcUQ7YUFlbkU2bUI7TUFDQTs7U0FHMEUsSUFGckRwbkIsYUFFcUQsMENBRnJEQTs7O1NBTXFELElBRi9EQyxlQUUrRCwwQ0FGL0RBOzs7U0FNK0QsSUFGcEVDLGVBRW9FLDBDQUZwRUE7Z0RBR0g7YUFFSG1uQix5QkFBMEJuYTtNQUVDLElBTzNCM00sS0FQMkIsd0JBRkQyTTtNQUVDLHdCQU8zQjNNOzs7WUFFRSw0Q0FGRkE7WUFFRTtVQVBzRDs7aURBSjlCMk07VUFJUztRQUVXOzsrQ0FOcEJBO1FBTUQ7TUFKRTs7UUFNYyxxQ0FSZkE7TUFRTixzREFJb0Q7YUFjeEVvYTtNQUVBO1lBQ1l0bkI7VUFJREM7a0RBR1I7YUFFSHNuQiwrQkFDRG5hO01BRWtDLElBR2pDN00sS0FIaUMsd0JBRmxDNk07TUFFa0Msd0JBR2pDN007O1VBRUUsNENBRkZBO1VBRUU7UUFIYztNQURDLFlBTVI7YUFlVGluQjtNQUVBO21CQUNZeG5COzthQUlnQkM7OzthQUlGQztxRUFHdkI7YUFFSHVuQixpQ0FDREQ7TUFHZ0QsSUFNL0NqbkIsS0FOK0Msd0JBSGhEaW5CO01BR2dELHdCQU0vQ2puQjs7O1lBRUUsNENBRkZBO1lBRUU7VUFQZTtRQUlqQjtNQUZBLFlBT1M7YUFjVG1uQjtNQUVBO1FBR21ELElBRjVDMW5CLGFBRTRDLHdDQUY1Q0E7O1VBSUlDO2tEQUdSO2FBRUgwbkIsaUNBQ0REO01BRzBELElBS3pEbm5CLEtBTHlELHdCQUgxRG1uQjtNQUcwRCx3QkFLekRubkI7O1VBRUUsNENBRkZBO1VBRUU7UUFIYztNQUQrQjs7O2dCQU5oRG1uQix3Q0FZVTthQWVURTtNQUVBOzthQUMwQjVuQjs7O2FBSUVDOzs7YUFJRkM7cUVBR3ZCO2FBRUgybkIsaUNBQ0REO01BRTJDLElBTzFDcm5CLEtBUDBDLHdCQUYzQ3FuQjtNQUUyQyx3QkFPMUNybkI7OztZQUVFLDRDQUZGQTtZQUVFO1VBSEY7UUFGQTtNQUZBLFlBU1M7YUFrQlR1bkI7TUFFQTttQkFDWTluQjs7U0FNdUMsSUFGNUNDLGVBRTRDLHdDQUY1Q0E7O21CQUlBQzttQkFJR0M7O2FBSWNDOzs7YUFJSWE7dUVBR3pCO2FBRUg4bUIsNEJBQ0QxSztNQUMrQixJQVU5QjljLEtBVjhCLHdCQUQvQjhjO01BQytCLHdCQVU5QjljOzs7Ozs7a0JBRUUsNENBRkZBO2tCQUVFO2dCQVJVO2NBRFk7O2dEQUp6QjhjO1lBTWdCO1VBSWY7UUFGQTtNQU5pQixZQWFSO2FBZ0JUMks7TUFFQTs7YUFDb0Nob0I7OzthQUluQkM7OzthQUk0Q0M7Ozs7b0JBSXZEQyx1REFHSDthQUVIOG5CLDRCQUNEcFo7TUFDK0IsSUFPOUJ0TyxLQVA4Qix3QkFEL0JzTztNQUMrQix3QkFPOUJ0Tzs7OztjQUVFLDRDQUZGQTtjQUVFO1lBTm9CO1VBRHRCO1FBR0E7TUFDVyxZQUtGO2FBZ0JUMm5CO01BRUE7O2FBQzJCbG9COzs7YUFJV0M7Ozs7YUFJUkM7OzthQUlkQyxpRUFHYjthQUVIZ29CLGlDQUNERDtNQUdpRSxJQVVoRTNuQixLQVZnRSx3QkFIakUybkI7TUFHaUUsd0JBVWhFM25COzs7O2NBRUUsNENBRkZBO2NBRUU7WUFMRjtVQUZBO1FBRkE7TUFNQSxZQUtTO2FBY1Q2bkI7TUFFQTtZQUNjcG9CO1VBSVBDOzhDQUdKO2FBRUhvb0IsaUNBQ0REO01BRTRDLElBRzNDN25CLEtBSDJDLHdCQUY1QzZuQjtNQUU0Qyx3QkFHM0M3bkI7O1VBRUUsNENBRkZBO1VBRUU7UUFKaUI7TUFDUCxZQUtIO2FBcUJUK25CO01BQ0E7bUJBQ1d0b0I7bUJBSUpDOzthQUlJQzttQkFJREM7O2FBSU1DOzthQUlKYTttQkFJRkM7O2FBSVlDOztvQkFJZEMseURBR0w7YUFFSG1uQix1QkFBc0JqbkI7TUFFQyxJQVV2QmYsS0FWdUIsd0JBRkRlO01BRUMsd0JBVXZCZjs7Ozs7Ozs7O3dCQUVFLDRDQUZGQTt3QkFFRTtzQkFKeUI7b0JBRlY7a0JBREk7Z0JBRU47Y0FFRjtZQU5HO1VBQ0Q7UUFGSDtNQURJLFlBWXFEO2FBZXJFaW9CO01BRUE7bUJBQ014b0I7bUJBSUVDO29CQUlGQyx1REFHSDthQUVIdW9CLGlDQUNEL25CO01BRXlDLElBSXhDSCxLQUp3Qyx3QkFGekNHO01BRXlDLHdCQUl4Q0g7OztZQUVFLDRDQUZGQTtZQUVFO1VBSlc7UUFERjtNQUVBLFlBS0Y7YUFRUG1vQiwrQkFBb0NDO01BTVo7OzZDQU5ZQTtPQUlsQyxTQUprQ0E7OzthQVFwQ0MsK0JBQ0REO01BT3VCOzs7O1VBUHZCQTtPQU9HO01BRmdFO2NBTG5FQTtvQkFTQTthQU1DRSwyQkFBNEJDO01BSTFCLGFBSjBCQTs7YUFNNUJDLDJCQUNERDtNQUd1RSxVQUh2RUEsNERBSUE7YUFRQ0UsK0JBQWdDQztNQU05QjtnQkFOOEJBO09BSTlCLHdDQUo4QkE7OzthQVFoQ0MsK0JBQ0REO01BTzJELFVBUDNEQTtNQUlHOzs7Z0JBSkhBO29CQVFBO2FBUUNFLDZCQUE4QkM7TUFNNUIsYUFONEJBLHdCQUk1QixTQUo0QkE7OzthQVE5QkMsNkJBQ0REO01BS3VFO2NBTHZFQTs7OzBFQVFBO2FBVUMvRyxpQ0FDRHJCO01KcHJDTixVSW9yQ01BO3FCQVc4QmhxQixHQUE2QyxPQUFsQixxQ0FBM0JBLEVBQTZDO01BQTJGOytCQUF2SjtPQUZaOztvQ0FUSGdxQjtPQU9HLFNBUEhBO09BS0c7MkNBTEhBOzs7OzthQWFDc0IsaUNBQ0R0QjtNQWVtRDs7O1VBZm5EQTtNQWVtRCxlQUZqQ2hxQixHQUF5Qiw0Q0FBekJBLEVBQTZDO01BQUM7d0JBQTdEO09BSkE7OztVQVRIZ3FCO09BT21FLE1BUG5FQTtNQUtHOzs7Z0JBTEhBOzs7b0JBZ0JBO2FBT0NzSSxpQ0FDRGhMO01BS3lCOzs7b0NBTHpCQTtPQUdtQixTQUhuQkE7O2FBT0NpTCxpQ0FDRGpMO01BTXVCOzs7O1VBTnZCQTtPQU1HO01BRnNFLFVBSnpFQSxxREFRQTthQU9Da0wsaUNBQ0R4ZTs7UUFLRztnQ0FDU3ZJO21CQUVjOytEQUZkQTtvQkFFUDtvQkFEcUMsaUJBUDFDdUk7bUJBU3dCLE9BRkcsMkNBRUgsRUFBQzs7YUFFeEJ5ZSxpQ0FDRHplO01BSVcsK0RBQ1g7YUFhQ3FZLGlDQUNEMVU7O1FBaUJHO2dDQUNTbE07bUJBRWM7K0RBRmRBO29CQUVQO29CQURxQyxpQkFuQjFDa007bUJBcUJ3QixPQUZHLDJDQUVILEVBQUM7TUFOQTs7O29DQWZ6QkE7T0FheUI7O29DQWJ6QkE7T0FXeUI7O29DQVh6QkE7T0FTeUI7O29DQVR6QkE7T0FPeUI7O29DQVB6QkE7T0FLeUI7O29DQUx6QkE7Ozs7Ozs7O2FBdUJDMlUsaUNBQ0QzVTtNQXlCMEI7O09BRkg7OztVQXZCdkJBO09BdUJHO09BSm9COzs7VUFuQnZCQTtPQW1CRztPQUpBOzs7VUFmSEE7T0FZdUI7OztVQVp2QkE7T0FZRztPQUhvQjs7O1VBVHZCQTtPQVNHO09BSm9COzs7VUFMdkJBO01BS0c7Ozs7Ozs7b0JBcUJIO2FBS0M2QixpQ0FDRG5GO01BSXlCOzs7b0NBSnpCQTs7YUFNQ29GLGlDQUNEcEY7TUFLdUI7OztvQ0FMdkJBO01BS0csc0RBRUg7YUFLQ3FlLGlDQUNEM2Q7TUFJeUI7OztvQ0FKekJBOzthQU1DNGQsaUNBQ0Q1ZDtNQUtHOzs7Z0JBTEhBLG1EQU9BO2FBZUN3WCxpQ0FDRDVVOztRQXFCRztnQ0FDU2xNO21CQUVjOytEQUZkQTtvQkFFUDtvQkFEcUMsaUJBdkIxQ2tNO21CQXlCd0IsT0FGRywyQ0FFSCxFQUFDO01BTkE7OztvQ0FuQnpCQTtPQWlCeUI7O29DQWpCekJBO09BZXlCOztvQ0FmekJBO09BYXlCOztvQ0FiekJBO09BV3lCOztvQ0FYekJBO09BU3lCOztvQ0FUekJBO09BT3lCOztvQ0FQekJBO09BS3lCOztvQ0FMekJBOzs7Ozs7Ozs7O2FBMkJDNlUsaUNBQ0Q3VTtNQStCMEI7O09BRkg7OztVQTdCdkJBO09BNkJHO09BSkE7OztVQXpCSEE7T0FzQnVCOzs7VUF0QnZCQTtPQXNCRztPQUpvQjs7O1VBbEJ2QkE7T0FrQkc7T0FIb0I7OztVQWZ2QkE7T0FlRztPQUhBOzs7VUFaSEE7T0FTdUI7OztVQVR2QkE7T0FTRztPQUpvQjs7O1VBTHZCQTtNQUtHOzs7Ozs7Ozs7b0JBMkJIO2FBS0NpYixpQ0FDRHRkO01BS3lCOzs7b0NBTHpCQTs7YUFPQ3VkLGlDQUNEdmQ7TUFLRzs7O2dCQUxIQSxtREFPQTthQVdDbVgsaUNBQ0Q5VTs7UUFhRztnQ0FDU2xNO21CQUVjOytEQUZkQTtvQkFFUDtvQkFEcUMsaUJBZjFDa007bUJBaUJ3QixPQUZHLDJDQUVILEVBQUM7TUFOQTs7O29DQVh6QkE7T0FTeUI7O29DQVR6QkE7T0FPeUI7O29DQVB6QkE7T0FLeUI7O29DQUx6QkE7Ozs7OzthQW1CQytVLGlDQUNEL1U7TUFvQjBCOztPQUhIOzs7VUFqQnZCQTtPQWlCRztPQUpBOzs7VUFiSEE7T0FTdUI7OztVQVR2QkE7T0FTRztPQUpvQjs7O1VBTHZCQTtNQUtHOzs7OztvQkFnQkg7YUFRQ21iLCtCQUF3Q0E7O1FBTXRDO2dDQUNTcm5CO21CQUVjOytEQUZkQTtvQkFFUDtvQkFEcUMsaUJBUkRxbkI7bUJBVWpCLE9BRkcsMkNBRUgsRUFBQztNQU5BOzs7b0NBSmdCQTs7O2FBWXhDQyxpQ0FDREQ7TUFNMEI7O09BRkg7OztVQUp2QkE7TUFJRyw0REFHSDthQVFDbkcsaUNBQ0RoVjs7UUFNRztnQ0FDU2xNO21CQUVjOytEQUZkQTtvQkFFUDtvQkFEcUMsaUJBUjFDa007bUJBVXdCLE9BRkcsMkNBRUgsRUFBQztNQU5BOzs7b0NBSnpCQTs7O2FBWUNxYixrQ0FDRHJiO01BTzBCOztPQUZIOzs7VUFMdkJBO01BS0csNERBR0g7YUFPQ3NiLCtCQUNEQTtNQU15Qjs7O29DQU56QkE7T0FJeUI7O29DQUp6QkE7O2FBUUNDLGlDQUNERDtNQVF1Qjs7OztVQVJ2QkE7T0FRRztPQUhvQjs7O1VBTHZCQTtNQUtHLDREQUtIO2FBYUNFLGlDQUNEMU87TUFvQnlCOzs7b0NBcEJ6QkE7T0FrQnlCOztvQ0FsQnpCQTtPQWdCeUI7O29DQWhCekJBO09BY3lCOztvQ0FkekJBO09BWXlCOztvQ0FaekJBO01BWThHO1FBTjNHO2dDQUNTaFo7bUJBRWM7K0RBRmRBO29CQUVQO29CQURxQyxpQkFSMUNnWjttQkFVd0IsT0FGRywyQ0FFSCxFQUFDO01BTkE7OztvQ0FKekJBOzs7Ozs7OzthQXNCQzJPLGlDQUNEM087TUFzQnVCOzs7O1VBdEJ2QkE7T0FzQkc7T0FIQTs7O1VBbkJIQTtPQWdCdUI7OztVQWhCdkJBO09BZ0JHO09BSG9COzs7VUFidkJBO09BYUc7T0FKb0I7OztVQVR2QkE7T0FTRztPQUZ1QjtPQUZIOzs7VUFMdkJBO01BS0c7Ozs7Ozs7b0JBbUJIO2FBV0M0TyxpQ0FDRDVTOztRQWFHO2dDQUNTaFY7bUJBRWM7K0RBRmRBO29CQUVQO29CQURxQyxpQkFmMUNnVjttQkFpQndCLE9BRkcsMkNBRUgsRUFBQztNQU5BOzs7b0NBWHpCQTtPQVN5Qjs7b0NBVHpCQTtPQU95Qjs7b0NBUHpCQTtPQUt5Qjs7b0NBTHpCQTs7Ozs7O2FBbUJDNlMsaUNBQ0Q3UztNQWlCMEI7O09BRkg7OztVQWZ2QkE7T0FlRztPQUpBOzs7VUFYSEE7T0FRdUI7OztVQVJ2QkE7T0FRRztPQUhvQjs7O1VBTHZCQTtNQUtHOzs7OztvQkFhSDthQVlDOFMsaUNBQ0R4VTs7UUFjRztnQ0FDU3RUO21CQUVjOytEQUZkQTtvQkFFUDtvQkFEcUMsaUJBaEIxQ3NUO21CQWtCd0IsT0FGRywyQ0FFSCxFQUFDO01BTkE7OztvQ0FaekJBO09BVXlCOztvQ0FWekJBO09BUXlCOztvQ0FSekJBO09BTXlCOztvQ0FOekJBO09BSXlCOztvQ0FKekJBOzs7Ozs7O2FBb0JDeVUsaUNBQ0R6VTtNQW1CMEI7O09BRkg7OztVQWpCdkJBO09BaUJHO09BSG9COzs7VUFkdkJBO09BY0c7T0FIb0I7OztVQVh2QkE7T0FXRztPQUhvQjs7O1VBUnZCQTtPQVFHO01BSEE7OztnQkFMSEE7Ozs7O29CQW9CQTthQVFDMFUsK0JBQW9DOUk7O1FBTWxDO2dDQUNTbGY7bUJBRWM7K0RBRmRBO29CQUVQO29CQURxQyxpQkFSTGtmO21CQVViLE9BRkcsMkNBRUgsRUFBQztNQU5BOzs2Q0FKWUE7OzthQVlwQytJLCtCQUNEL0k7TUFNMEI7O09BRkg7OztVQUp2QkE7TUFJRyw0REFHSDthQU9DZ0osK0JBQW1DbmU7TUFJakM7OzJDQUppQ0E7O2FBTW5Db2UsK0JBQ0RwZTtNQUlHOzs7Z0JBSkhBLDZDQUtBO2FBS0NxZSwrQkFBaUNqZTtNQUlUOzs2Q0FKU0E7O2FBTWpDa2UsK0JBQ0RsZTtNQUl1Qjs7O29DQUp2QkE7TUFJRyxzREFFSDthQVdDbWUsK0JBQXNDbEo7TUp2MEQ3QyxVSXUwRDZDQTtxQkFhVDdxQixHQUE2QyxPQUFsQixxQ0FBM0JBLEVBQTZDO01BQWdGLDRCQUE1STtNQUE0STtRQU54SjtnQ0FDU3lMO21CQUVjOytEQUZkQTtvQkFFUDtvQkFEcUMsaUJBVEhvZjttQkFXZixPQUZHLDJDQUVILEVBQUM7TUFOQTs7NkNBTGNBO09BR3BCLFNBSG9CQTs7Ozs7YUFldENtSiwrQkFDRG5KO01BV21EOzs7VUFYbkRBO01BV21ELGVBRmpDN3FCLEdBQXlCLDRDQUF6QkEsRUFBNkM7TUFBQzt3QkFBN0Q7T0FGdUI7T0FGSDs7O1VBTHZCNnFCO09BS0c7TUFGaUU7Y0FIcEVBOzs7b0JBWUE7YUFPQ29KLGlDQUNEbkg7TUFPeUI7OztvQ0FQekJBO09BS0csU0FMSEE7O2FBU0NvSCxpQ0FDRHBIO01BT3VCOzs7b0NBUHZCQTtPQU9HO01BRm9FLFVBTHZFQSxxREFTQTthQUtDcUgsaUNBQ0Q3d0I7TUFLeUI7OztvQ0FMekJBOzthQU9DOHdCLGlDQUNEOXdCO01BS3VCOzs7b0NBTHZCQTtNQUtHLHNEQUVIO2FBS0Mrd0IsaUNBQ0QzeEI7TUFLRyxhQUxIQTs7YUFPQzR4QixpQ0FDRDV4QjtNQUt1RSxVQUx2RUEsc0RBTUE7YUFLQzZ4QixpQ0FBc0N4eEI7TUFHbkIsYUFIbUJBOzthQUt0Q3l4QixpQ0FDRHp4QjtNQUVzRSxVQUZ0RUEsOENBR0E7YUFLQzB4QixlQUFjdnhCO01BR1UsOENBSFZBOzthQUtkd3hCLGVBQWN4eEI7TUFHUSwrQ0FIUkE7TUFHWixzREFFSDthQWFEeXhCO01BQ0E7WUFDSzNyQjtNQU04QyxJQUY1Q0MsZUFFNEMsbUNBRjVDQTs2Q0FHSjthQUVIMnJCLHVCQUF3QkM7TUFFQyxJQUl6QnRyQixLQUp5Qix3QkFGRHNyQjtNQUVDLHdCQUl6QnRyQjs7VUFFRSw0Q0FGRkE7VUFFRTtRQUxRO01BRVEsd0NBTE1zckIsd0JBUzZDO2FBU25FQyx1QkFBd0JDO01BS1M7aURBTFRBO09BSVEsMENBSlJBO09BR2IsNEJBSGFBOzthQU94QkMsdUJBQXdCRDtNQU9qQjtrREFQaUJBO09BS0YsMkNBTEVBO09BS3RCO01BRkssaUNBSGlCQSxpQ0FRekI7YUFRQ0UsK0JBQWdDQztNQU9SO2lEQVBRQTtPQUtSLDBDQUxRQTtPQUdyQixvQ0FIcUJBOzthQVNoQ0MsK0JBQ0REO01BT0c7a0RBUEhBO09BS0csMkNBTEhBO01BR1E7NkNBSFJBOztvQkFRQTthQWNDRSwrQkFBaUNDO01BYy9CO2dCQWQrQkE7T0FZL0IsU0FaK0JBO09BVS9CLFNBVitCQTtPQVFuQixxQkFSbUJBO09BTy9CLFNBUCtCQTtPQUtULDBDQUxTQTtPQUdiLHdDQUhhQTs7Ozs7Ozs7YUFnQmpDQywrQkFDREQ7TUFrQnVFO2FBbEJ2RUE7T0FnQndFLE1BaEJ4RUE7T0Fjc0U7UUFkdEVBOzs7T0FXVyxzQkFYWEE7T0FVMkQ7UUFWM0RBOzs7T0FLdUI7O29DQUx2QkE7T0FLRztNQUZlOzt3Q0FIbEJBOzs7Ozs7b0JBbUJBO2FBYURFO01BRUE7WUFDb0J2c0I7TUFNK0IsSUFGaENDLGVBRWdDLG9DQUZoQ0E7eURBR2hCO2FBRUh1c0IsaUNBQ0REO01BRzJELElBTTFEaHNCLEtBTjBELHdCQUgzRGdzQjtNQUcyRCx3QkFNMURoc0I7O1VBRUUsNENBRkZBO1VBRUU7UUFIeUQ7O2tCQVI1RGdzQjtNQU1DLFlBT1M7YUFXUDFMLGlDQUNEckI7TUo1bkVOLFVJNG5FTUE7cUJBUThCeG9CLEdBQTZDLE9BQWxCLHFDQUEzQkEsRUFBNkM7TUFBbUY7K0JBQS9JO09BRlo7O29DQU5Id29CO09BSUcsb0NBSkhBOzs7O2FBVUN3QyxpQ0FDRHhDO01BYW1EOzs7VUFibkRBO01BYW1ELGVBRmpDeG9CLEdBQXlCLDRDQUF6QkEsRUFBNkM7TUFBQzt3QkFBN0Q7T0FKQTs7O1VBUEh3b0I7TUFJRzs7Z0JBSkhBOztvQkFjQTthQVVDaU4sYUFBY3hMO01BTVo7MkNBTllBO09BSU0sNEJBSk5BO09BR00sd0NBSE5BO09BRUMsdUJBRkRBOzs7OzthQVFkeUwsYUFBY3pMO01BTVo7OztVQU5ZQTtPQUlHLDZCQUpIQTtPQUdHLHlDQUhIQTtNQUVGLDRCQUZFQSxpQ0FRZjthQW9CQzBMLHVCQUF3QjFPO01Bd0JQO2dCQXhCT0E7T0F1QkMsU0F2QkRBO09Bc0JFLFNBdEJGQTtPQXFCdEIsU0FyQnNCQTtPQW1CdEIsb0NBbkJzQkE7T0FpQkEsMENBakJBQTtPQWV0QixTQWZzQkE7T0FhdEIsd0NBYnNCQTtPQVd0QixTQVhzQkE7T0FTdEIsU0FUc0JBO09BT3RCLFNBUHNCQTtPQUt0QixTQUxzQkE7T0FHVCxpQ0FIU0E7Ozs7Ozs7Ozs7Ozs7O2FBMEJ4QjJPLHVCQUF3QjNPO01BMkIyQjthQTNCM0JBO09BMEI2QyxNQTFCN0NBO09BeUJ5QixNQXpCekJBO09BdUI4QyxNQXZCOUNBO09Bb0J0Qjs7VUFwQnNCQTtPQWlCRiwyQ0FqQkVBO09BaUJ0QjtPQUY0RCxNQWZ0Q0E7T0FhdEI7O2tDQWJzQkE7T0FXaUMsTUFYakNBO09BU3VDLE1BVHZDQTtPQU82QixNQVA3QkE7T0FLcUMsTUFMckNBO01BR1o7MENBSFlBOzs7Ozs7Ozs7Ozs7b0JBNEJ6QjthQVlDNE8sK0JBQXVDQztNQVlyQztnQkFacUNBO09BVXJDOzJDQVZxQ0E7T0FRZjs2Q0FSZUE7T0FNckMsc0NBTnFDQTtPQUlyQzs2Q0FKcUNBOzs7Ozs7YUFjdkNDLGlDQUNERDtNQWVnRDs7UUFmaERBOzs7T0FXRzs7O1VBWEhBO09BUXVCOzs7VUFSdkJBO09BUUc7T0FIQTs7VUFMSEE7TUFHZTs7O2dCQUhmQTs7OztvQkFnQkE7YUFjREU7TUFDQTs7U0FHbUQsSUFGcENodEIsYUFFb0Msb0NBRnBDQTs7O1NBTW9DLElBRlhDLGVBRVcsZ0NBRlhBOzs7O2FBSTFCQywrREFHWDthQUVIK3NCLHNCQUF1QkM7TUFFQyxJQU14QjNzQixLQU53Qix3QkFGRDJzQjtNQUVDLHdCQU14QjNzQjs7O1lBRUUsNENBRkZBO1lBRUU7VUFOd0IseUNBSkgyc0I7UUFNNEIscUNBTjVCQTtNQU9KLFlBSWtEO2FBY3JFQztNQUVBLHVCQUNJbnRCO01BTStDLElBRi9DQyxlQUUrQyxvQ0FGL0NBOzBDQUdEO2FBRUhtdEIsaUNBQ0RDO01BRXlDLElBSXhDOXNCLEtBSndDLHdCQUZ6QzhzQjtNQUV5Qyx3QkFJeEM5c0I7O1VBRUUsNENBRkZBO1VBRUU7UUFId0I7O2tCQUwzQjhzQjtNQUdVLFlBT0E7YUFjVEM7TUFDQTtZQUNVdHRCO01BTXlDLElBRnpDQyxlQUV5QyxrQ0FGekNBO2dEQUdQO2FBRUhzdEIsb0JBQXFCQztNQUNDLElBSXRCanRCLEtBSnNCLHdCQUREaXRCO01BQ0Msd0JBSXRCanRCOztVQUVFLDRDQUZGQTtVQUVFO1FBTGE7TUFFSyx1Q0FKQ2l0QixxQkFRK0M7YUFjcEVDO01BRUE7UUFHbUQsSUFGeEN6dEIsYUFFd0Msb0NBRnhDQTs7VUFJS0M7dURBR2I7YUFFSHl0QiwrQkFDRC9SO01BRXNDLElBSXJDcGIsS0FKcUMsd0JBRnRDb2I7TUFFc0Msd0JBSXJDcGI7O1VBRUUsNENBRkZBO1VBRUU7UUFIbUI7TUFEWTs7Z0JBSmxDb2Isb0NBVVU7YUFVUGdTLCtCQUNEQTtNQU1HOzJDQU5IQTtPQUlHOztvQ0FKSEE7OzthQVFDQyxpQ0FDREQ7TUFTRzs7O1VBVEhBO01BS0c7OztnQkFMSEE7b0JBWUE7YUFtQkNFLHFCQUFzQnJRO01Bb0JwQjtnQkFwQm9CQTtPQWtCWCxrQkFsQldBO09BaUJwQiw0QkFqQm9CQTtPQWVJLFNBZkpBO09BY0osU0FkSUE7T0FhcEIsU0Fib0JBO09BV3BCLG9DQVhvQkE7T0FTcEIsb0NBVG9CQTtPQU9HLHdDQVBIQTtPQU1FLDBDQU5GQTtPQUlFLDBDQUpGQTs7Ozs7Ozs7Ozs7OzthQXNCdEJzUSxxQkFBc0J0UTtNQTBCOEM7O1FBMUI5Q0E7OztPQXNCZixtQkF0QmVBO09BcUJwQiw2QkFyQm9CQTtPQW1CaUQsTUFuQmpEQTtPQWtCNkIsTUFsQjdCQTtPQWlCeUMsTUFqQnpDQTtPQWNwQjt1Q0Fkb0JBO09BV3BCOztVQVhvQkE7T0FTQzsyQ0FUREE7T0FPQTs7b0NBUEFBO09BT3BCO09BSG9COztvQ0FKQUE7TUFJcEI7Ozs7Ozs7Ozs7O29CQXVCSDthQVdDdVEsaUNBQ0R0YTtNQWlCRyxhQWpCSEE7TUFpQkc7UUFOQTtnQ0FDU2hSO21CQUVQOztzREFGT0E7bUJBR1k7OzBCQUZYLFdBYmJnUix3Q0Fld0IsRUFBQztNQUV0QjtRQVhBO2dDQUNTaFI7bUJBQ2tEOztzREFEbERBO21CQUVvRTs7MEJBRG5FLFdBUmJnUix3Q0FTZ0YsRUFBQztNQUw5RTs7MkNBSkhBOzs7OzthQW1CQ3VhLGlDQUNEdmE7TUFTc0U7YUFUdEVBO09BT3VCO09BRFA7TUFEYjs7O2dCQUxIQTs7O29CQVVBO2FBYUN3YSxrQkFBbUJsVjtNQVNqQjtnQkFUaUJBO09BT2pCLFNBUGlCQTtPQUtqQixTQUxpQkE7T0FHRCx5QkFIQ0E7T0FFQyx3Q0FGREE7Ozs7Ozs7YUFXbkJtVixrQkFBbUJuVjtNQVlxRDs7UUFackRBOzs7T0FRK0MsTUFSL0NBO09BTThDLE1BTjlDQTtPQUdMLDBCQUhLQTtNQUVGO2lEQUZFQTs7OztvQkFhcEI7YUFpQkNvVix3QkFBeUJDO01BZXZCO2dCQWZ1QkE7T0FhdkIsb0NBYnVCQTtPQVd2QixzQ0FYdUJBO09BU0QsMENBVENBO09BT0gsd0NBUEdBO09BTXZCLFNBTnVCQTtPQUlQLHlCQUpPQTtPQUdQLDBDQUhPQTs7Ozs7Ozs7O2FBaUJ6QkMsd0JBQXlCRDtNQW9Cc0M7O1FBcEJ0Q0E7OztPQWV2Qjt1Q0FmdUJBO09BWXZCO3lDQVp1QkE7T0FTSDs7b0NBVEdBO09BU3ZCO09BRmtCOzJDQVBLQTtPQU04QyxNQU45Q0E7T0FJWCwwQkFKV0E7TUFHWDs7MENBSFdBOzs7Ozs7O29CQXFCMUI7YUFnQkNFLGlCQUFrQmhSO01BYWhCOzJDQWJnQkE7T0FXUSxTQVhSQTtPQVVoQixTQVZnQkE7T0FRRCxTQVJDQTtPQU9PLFNBUFBBO09BTWhCLFNBTmdCQTtPQUlNLDBDQUpOQTtPQUVILDJCQUZHQTs7Ozs7Ozs7O2FBZWxCaVIsaUJBQWtCalI7TUFlaEI7NENBZmdCQTtPQWFnRCxNQWJoREE7T0FZK0MsTUFaL0NBO09BUzJCLE1BVDNCQTtPQVE2QyxNQVI3Q0E7T0FPOEMsTUFQOUNBO09BSUksMkNBSkpBO09BSWhCO01BRlM7b0NBRk9BOzs7Ozs7O29CQWdCbkI7YUFhRGtSO01BQ0E7UUFHbUQsSUFGckN4dUIsYUFFcUMsNkJBRnJDQTs7TUFNcUMsSUFGOUJDLGVBRThCLG9DQUY5QkE7MkRBR2xCO2FBRUh3dUIsMEJBQTJCelQ7TUFFQyxJQUs1QnphLEtBTDRCLHdCQUZEeWE7TUFFQyx3QkFLNUJ6YTs7VUFFRSw0Q0FGRkE7VUFFRTtRQUwwQixrQ0FKRHlhO01BTVEseUNBTlJBLDJCQVU2QzthQWV4RTBUO01BRUE7O1NBR21ELElBRjFDMXVCLGFBRTBDLHNCQUYxQ0E7OztTQU0wQyxJQUZoQ0MsZUFFZ0MsMEJBRmhDQTs7O1NBTWdDLElBRnJDQyxlQUVxQyw0QkFGckNBO3dEQUdYO2FBRUh5dUIsK0JBQ0RDO01BRWtDLElBT2pDcnVCLEtBUGlDLHdCQUZsQ3F1QjtNQUVrQyx3QkFPakNydUI7OztZQUVFLDRDQUZGQTtZQUVFO1VBSDZCLGlDQVJoQ3F1QjtRQUkyQiwyQkFKM0JBO01BTXFDLCtCQU5yQ0EsZ0NBYVU7YUFpQlRDO01BQ0E7O1NBR21ELElBRnpDN3VCLGFBRXlDLHNCQUZ6Q0E7OztTQU15QyxJQUY3QkMsZUFFNkIsNEJBRjdCQTs7O1NBTTZCLElBRkpDLGVBRUksMEJBRkpBOzs7O1NBTUksSUFGckNDLGVBRXFDLHNCQUZyQ0E7OztTQU1xQyxJQUZqQ0MsZUFFaUMsMEJBRmpDQTs0REFHZjthQUVIMHVCLHdCQUF5QmhpQjtNQUVDLElBVzFCdk0sS0FYMEIsd0JBRkR1TTtNQUVDLHdCQVcxQnZNOzs7OztnQkFFRSw0Q0FGRkE7Z0JBRUU7Y0FMeUIsMkJBVkZ1TTtZQU1VLGlDQU5WQTtVQVlNLCtCQVpOQTtRQUlGLDJCQUpFQTtNQVFtQywrQkFSbkNBLHlCQWdCOEM7YUFhckVpaUIsaUNBQ0RsVzs7UUFhRztnQ0FDU3BXO21CQUVQLG9DQUZPQTttQkFHWTs7MEJBRlgsV0FmYm9XLHdDQWlCd0IsRUFBQztnQkFqQnpCQTtxQkFXOEI3aEIsR0FBNkMsT0FBbEIscUNBQTNCQSxFQUE2QztNQUEwRjsrQkFBdEo7T0FGWjs7b0NBVEg2aEI7T0FPRyxTQVBIQTtPQUtHOzJDQUxIQTs7Ozs7O2FBbUJDbVcsaUNBQ0RuVztNQWdCc0I7O09BRDZCOztVQWZuREE7TUFlbUQsZUFGakM3aEIsR0FBeUIsNENBQXpCQSxFQUE2QztNQUFDO3dCQUE3RDtPQUpBOzs7VUFUSDZoQjtPQU9rRSxNQVBsRUE7TUFLRzs7O2dCQUxIQTs7OztvQkFpQkE7YUFjQ29XLGlCQUFrQkM7TUFVUDtzQ0FWT0E7T0FTRywwQ0FUSEE7T0FRUyxTQVJUQTtPQU9ILDZCQVBHQTtPQU1oQixvQ0FOZ0JBO09BSUMsNkJBSkRBO09BR0csNkJBSEhBO09BRVEsU0FGUkE7Ozs7Ozs7OzthQVlsQkMsaUJBQWtCRDtNQVdYO3VDQVhXQTtPQVVDLDJDQVZEQTtPQVNrRCxNQVRsREE7T0FRUCw4QkFST0E7T0FNaEI7eUNBTmdCQTtPQUlILDhCQUpHQTtPQUdBLDhCQUhBQTtNQUU4QztjQUY5Q0E7Ozs7Ozs7b0JBWW5CO2FBaUJDRSxlQUFnQnRXO01BaUJBO21DQWpCQUE7T0FnQmQsU0FoQmNBO09BY2QsU0FkY0E7T0FZZCxTQVpjQTtPQVVkLGlDQVZjQTtPQVFkLDBDQVJjQTtPQVFkLE1BUmNBO01BUWQsZUFGMkI5aEIsR0FBSyxpQ0FBTEEsRUFBZ0M7TUFBMkI7K0JBQTFFO09BRkMsc0JBSkM4aEI7T0FJRCxNQUpDQTtNQUlELGVBRGM5aEIsR0FBSyxnQ0FBTEEsRUFBK0I7TUFBMkIsNEJBQXpFOzs7Ozs7Ozs7O2FBZ0JkcTRCLGVBQWdCdlc7TUFtQko7b0NBbkJJQTtPQWtCeUMsTUFsQnpDQTtPQWdCOEMsTUFoQjlDQTtPQWMyQyxNQWQzQ0E7T0FZZCxrQ0FaY0E7T0FVZDs7b0NBVmNBO09BUWEsdUJBUmJBO01BUWEsZUFEWjloQixHQUFLLGlDQUFMQSxFQUFnQztNQUFDO3dCQUFoRDtPQUZTLHVCQUxLOGhCO09BSWMsdUJBSmRBO01BSWMsZUFEYjloQixHQUFLLGdDQUFMQSxFQUErQjtNQUFDO3lCQUEvQzs7Ozs7Ozs7b0JBaUJIO2FBY0NzNEIsaUNBQ0R6Vzs7UUF1Qkc7Z0NBQ1NwVzttQkFDTTs7O3VCQXpCbEJvVyxrQ0F3QllwVzttQkFDTSxnREFFTSxFQUFDOztRQVZ0QjtnQ0FDU0E7bUJBR1k7OzBCQUZYOzRCQW5CYm9XLGtDQWtCWXBXLGdCQUdZLEVBQUM7O1FBVnRCO2dDQUNTQTttQkFHWTs7MEJBRlg7NEJBYmJvVyxrQ0FZWXBXLGdCQUdZLEVBQUM7TUFOdEI7OzJDQVRIb1c7T0FPRyx1QkFQSEE7T0FLRyxvQkFMSEE7Ozs7Ozs7OzthQTZCQzBXLGlDQUNEMVc7TUFjdUM7O09BRE47T0FEYTtPQUYzQzs7O1VBVkhBO09BT0csd0JBUEhBO01BS0c7NkJBTEhBOzs7OztvQkFlQTthQVFDMEosaUNBQ0R2QjtNQVNHOzsyQ0FUSEE7T0FPRyx1QkFQSEE7T0FLRyxvQkFMSEE7O2FBV0N3QixpQ0FDRHhCO01BVUc7Ozs7VUFWSEE7T0FPRyx3QkFQSEE7TUFLRzs2QkFMSEE7O29CQVlBO2FBU0NpQixpQ0FDRHpDO01BVUc7Z0JBVkhBO09BUUcsdUJBUkhBO09BTUcsb0JBTkhBO09BSUc7MkNBSkhBOzs7OzthQVlDMEMsaUNBQ0QxQztNQWE0Qzs7UUFiNUNBOzs7T0FTRyx3QkFUSEE7T0FPRyxxQkFQSEE7TUFLRzs7O2dCQUxIQTs7O29CQWNBO2FBYUNnUSxpQ0FDRGxSO01BZXlCOzs7b0NBZnpCQTtPQWFHOzJDQWJIQTtPQVdHLHVCQVhIQTtPQVNHLG9CQVRIQTtPQU9HOzJDQVBIQTtPQUtHLG9DQUxIQTs7Ozs7OzthQWlCQ21SLGlDQUNEblI7TUFpQnVCOzs7O1VBakJ2QkE7T0FpQkc7T0FGQTs7O1VBZkhBO09BYUcsd0JBYkhBO09BV0cscUJBWEhBO09BUUc7OztVQVJIQTtNQUtHOztnQkFMSEE7Ozs7O29CQW9CQTthQU9Db1IsaUNBQ0Qxa0I7TUFPRzttQ0FQSEE7T0FLRzsyQ0FMSEE7O2FBU0Mya0IsaUNBQ0Qza0I7TUFTRyxpQ0FUSEE7TUFLRzs7O2dCQUxIQTtvQkFXQTthQXNCQzRrQixrQ0FDRGpoQjtNQStCRzttQ0EvQkhBO09BNkJHLFNBN0JIQTtPQTJCeUI7O29DQTNCekJBO09BeUJHLFNBekJIQTtPQXVCRyxvQ0F2QkhBO09BcUJHLFNBckJIQTtPQW1CRyxTQW5CSEE7T0FpQkcsK0JBakJIQTtPQWVHLG9DQWZIQTtPQWFHOztvQ0FiSEE7T0FXRzsyQ0FYSEE7T0FTRyxTQVRIQTtPQU95Qjs7b0NBUHpCQTtPQUt5Qjs7b0NBTHpCQTs7Ozs7Ozs7Ozs7Ozs7O2FBaUNDa2hCLGtDQUNEbGhCO01BcURHOzsrQkFyREhBO09BbUQ2QixNQW5EN0JBO09BNkN1Qjs7O1VBN0N2QkE7T0E2Q0c7T0FGOEQsTUEzQ2pFQTtPQXVDRzs7VUF2Q0hBO09BcUM0RDtRQXJDNURBOzs7T0FpQzRCLE1BakM1QkE7T0E0QkcsZ0NBNUJIQTtPQXdCRzs7VUF4QkhBO09Bb0JHOzs7VUFwQkhBO09BaUJHOzs7VUFqQkhBO09BZWtEO1FBZmxEQTs7O09BU3VCOzs7VUFUdkJBO09BU0c7T0FKb0I7OztVQUx2QkE7TUFLRzs7Ozs7Ozs7Ozs7Ozs7b0JBa0RIO2FBU0MrQixpQ0FDRHJGO01BV3lCOzs7b0NBWHpCQTtPQVNHLFNBVEhBO09BT3lCOztvQ0FQekJBO09BS0c7MkNBTEhBOzs7OzthQWFDc0YsaUNBQ0R0RjtNQVlHOzs7O1VBWkhBO09BVXdFLE1BVnhFQTtPQU91Qjs7O1VBUHZCQTtPQU9HO01BRkE7OztnQkFMSEE7OztvQkFjQTthQVlDeWtCLGlDQUNEL2pCOztRQWFHO2dDQUNTdEo7bUJBR1k7OzBCQUZYOzRCQWZic0osa0NBY1l0SixnQkFHWSxFQUFDO01BTnRCOzJDQVhIc0o7T0FTRzs7b0NBVEhBO09BT0csU0FQSEE7T0FLRzsyQ0FMSEE7Ozs7Ozs7YUFtQkNna0IsaUNBQ0Roa0I7TUFlK0M7O09BSDVDOztVQVpIQTtPQVNHOzs7VUFUSEE7T0FPd0UsTUFQeEVBO01BS0c7OztnQkFMSEE7Ozs7b0JBZ0JBO2FBc0JDaWtCLGtDQUNEcmhCOztRQXFDRztnQ0FDU2xNO21CQUNnQzs7O3VCQXZDNUNrTSxtQ0FzQ1lsTTttQkFHWSxPQUZHLDJDQUVILEVBQUM7O1FBVnRCO2dDQUNTQTttQkFHWTs7MEJBRlg7NEJBakNia00sbUNBZ0NZbE0sZ0JBR1ksRUFBQzs7UUFWdEI7Z0NBQ1NBO21CQUdZOzswQkFGWDs0QkEzQmJrTSxtQ0EwQllsTSxnQkFHWSxFQUFDO01BTkE7OztvQ0F2QnpCa007T0FxQkc7MkNBckJIQTtPQW1CRywrQkFuQkhBO09BaUJHLG9DQWpCSEE7T0FlRzs7b0NBZkhBO09BYXlCOztvQ0FiekJBO09BV0c7MkNBWEhBO09BU0csaUNBVEhBO09BT0csU0FQSEE7T0FLRyw0QkFMSEE7Ozs7Ozs7Ozs7Ozs7OzthQTJDQ3NoQixrQ0FDRHRoQjtNQXlDNkI7O09BRGtCO09BRG5CO09BRkw7OztVQXJDdkJBO09BcUNHO09BSEE7OztVQWxDSEE7T0ErQkcsZ0NBL0JIQTtPQTJCRzs7VUEzQkhBO09BdUJHOzs7VUF2QkhBO09BbUJ1Qjs7O1VBbkJ2QkE7T0FtQkc7T0FKQTs7O1VBZkhBO09BWUc7O1VBWkhBO09BVXlDO1FBVnpDQTs7O01BS0c7O2dCQUxIQTs7Ozs7Ozs7Ozs7O29CQTBDQTthQVFDdWhCLGlDQUNENWpCO01BT0c7MkNBUEhBO09BS0c7O29DQUxIQTs7O2FBU0M2akIsaUNBQ0Q3akI7TUFTRzs7O1VBVEhBO01BS0c7OztnQkFMSEE7b0JBWUE7YUFzQkM4akIsa0NBQ0R6aEI7TUFpQ0c7bUNBakNIQTtPQStCRzsyQ0EvQkhBO09BNkJHLDRCQTdCSEE7T0EyQkcsdUJBM0JIQTtPQXlCRywrQkF6QkhBO09BdUJHLFNBdkJIQTtPQXFCRyxTQXJCSEE7T0FtQkc7MkNBbkJIQTtPQWlCRyxTQWpCSEE7T0FlRzsyQ0FmSEE7T0FhRyxvQ0FiSEE7T0FXRyxvQ0FYSEE7T0FTRzs7b0NBVEhBO09BT3lCOztvQ0FQekJBO09BS3lCOztvQ0FMekJBOzs7Ozs7Ozs7Ozs7Ozs7O2FBbUNDMGhCLGtDQUNEMWhCO01BNERHOzsrQkE1REhBO09Bd0RHOzs7VUF4REhBO09Bb0RHOztVQXBESEE7T0FnREcsd0JBaERIQTtPQTZDRyxnQ0E3Q0hBO09BMkM2QixNQTNDN0JBO09BdUNxQixNQXZDckJBO09BaUNHOzs7VUFqQ0hBO09BK0I2QztRQS9CN0NBOzs7T0F5Qkc7OztVQXpCSEE7T0FxQkc7O1VBckJIQTtPQWlCRzs7VUFqQkhBO09BYUc7OztVQWJIQTtPQVN1Qjs7O1VBVHZCQTtPQVNHO09BSm9COzs7VUFMdkJBO01BS0c7Ozs7Ozs7Ozs7Ozs7OztvQkEwREg7YUFhQzJoQixrQ0FDRDNoQjtNQW1CRzttQ0FuQkhBO09BaUJHOzJDQWpCSEE7T0FlRywrQkFmSEE7T0FhRzs7b0NBYkhBO09BV0csaUNBWEhBO09BU3lCOztvQ0FUekJBO09BT0csb0NBUEhBO09BS0csNkJBTEhBOzs7Ozs7Ozs7YUFxQkM0aEIsa0NBQ0Q1aEI7TUEwQkc7OytCQTFCSEE7T0F3Qkc7OztVQXhCSEE7T0FxQkcsZ0NBckJIQTtPQWtCRzs7O1VBbEJIQTtPQWVHOztVQWZIQTtPQVd1Qjs7O1VBWHZCQTtPQVdHO09BSEE7O1VBUkhBO01BS0c7O2dCQUxIQTs7Ozs7OztvQkE0QkE7YUF3QkM2aEIsaUNBQ0QvVTtNQWlDRzsyQ0FqQ0hBO09BK0JHLDRCQS9CSEE7T0E2QkcsU0E3QkhBO09BMkJ5Qjs7b0NBM0J6QkE7T0F5QkcsU0F6QkhBO09BdUJHLG9DQXZCSEE7T0FxQkcsU0FyQkhBO09BbUJHLFNBbkJIQTtPQWlCRywrQkFqQkhBO09BZUcsb0NBZkhBO09BYUc7O29DQWJIQTtPQVdHOzJDQVhIQTtPQVNHLFNBVEhBO09BT3lCOztvQ0FQekJBO09BS3lCOztvQ0FMekJBOzs7Ozs7Ozs7Ozs7Ozs7O2FBbUNDZ1YsaUNBQ0RoVjtNQWdERzs7O1VBaERIQTtPQTZDRzsrQkE3Q0hBO09BMkNrRSxNQTNDbEVBO09BdUN1Qjs7O1VBdkN2QkE7T0F1Q0c7T0FGK0QsTUFyQ2xFQTtPQWtDRzs7VUFsQ0hBO09BZ0M0RDtRQWhDNURBOzs7T0E0QmlFLE1BNUJqRUE7T0F3QkcsZ0NBeEJIQTtPQW9CRzs7VUFwQkhBO09BaUJHOzs7VUFqQkhBO09BZUc7OztVQWZIQTtPQWFrRDtRQWJsREE7OztPQVF1Qjs7O1VBUnZCQTtPQVFHO09BSG9COzs7VUFMdkJBO01BS0c7Ozs7Ozs7Ozs7Ozs7OztvQkE2Q0g7YUF1QkNpVixpQ0FDRGpaO01BaUNHO2dCQWpDSEE7T0ErQkcsU0EvQkhBO09BNkJ5Qjs7b0NBN0J6QkE7T0EyQkc7MkNBM0JIQTtPQXlCRyxTQXpCSEE7T0F1Qkcsb0NBdkJIQTtPQXFCRzsyQ0FyQkhBO09BbUJHLFNBbkJIQTtPQWlCeUI7O29DQWpCekJBO09BZUc7MkNBZkhBO09BYUcsNEJBYkhBO09BV0csK0JBWEhBO09BU0csb0NBVEhBO09BT0c7O29DQVBIQTtPQUt5Qjs7b0NBTHpCQTs7Ozs7Ozs7Ozs7Ozs7Ozs7YUFtQ0NrWixpQ0FDRGxaO01BMkR1RTs7UUEzRHZFQTs7O09BdURzRSxNQXZEdEVBO09Ba0R1Qjs7O1VBbER2QkE7T0FrREc7T0FKQTs7O1VBOUNIQTtPQTRDNkM7UUE1QzdDQTs7O09Bc0NHOztVQXRDSEE7T0FrQ0c7OztVQWxDSEE7T0FnQzZCLE1BaEM3QkE7T0EwQnVCOzs7VUExQnZCQTtPQTBCRztPQUhBOzs7VUF2QkhBO09Bb0JHOytCQXBCSEE7T0FpQkcsZ0NBakJIQTtPQWFHOztVQWJIQTtPQVNHOzs7VUFUSEE7T0FLdUI7OztVQUx2QkE7TUFLRzs7Ozs7Ozs7Ozs7Ozs7O29CQXVESDthQWtCQ21aLGlDQUNEN2E7TUF3Qkc7MkNBeEJIQTtPQXNCRzsyQ0F0QkhBO09Bb0JHLCtCQXBCSEE7T0FrQkcsb0NBbEJIQTtPQWdCRzs7b0NBaEJIQTtPQWN5Qjs7b0NBZHpCQTtPQVl5Qjs7b0NBWnpCQTtPQVVHLDRCQVZIQTtPQVFHOzJDQVJIQTtPQU1HLFNBTkhBO09BSUcsaUNBSkhBOzs7Ozs7Ozs7Ozs7YUEwQkM4YSxpQ0FDRDlhO01BbUNHOzs7VUFuQ0hBO09BaUNHOzs7VUFqQ0hBO09BOEJHLGdDQTlCSEE7T0EyQkc7O1VBM0JIQTtPQXdCRzs7O1VBeEJIQTtPQXFCdUI7OztVQXJCdkJBO09BcUJHO09BSG9COzs7VUFsQnZCQTtPQWtCRztPQUhBOytCQWZIQTtPQVlHOzs7VUFaSEE7T0FVeUM7UUFWekNBOzs7TUFLRzs7Z0JBTEhBOzs7Ozs7Ozs7O29CQXNDQTthQWFDK2EsK0JBQXVDbFA7TUFrQnJDO21DQWxCcUNBO09BZ0JyQyxvQ0FoQnFDQTtPQWNyQzsyQ0FkcUNBO09BWXJDLCtCQVpxQ0E7T0FVckM7NkNBVnFDQTtPQVFyQyxpQ0FScUNBO09BTWY7NkNBTmVBO09BSXJDLDZCQUpxQ0E7Ozs7Ozs7OzthQW9CdkNtUCxpQ0FDRG5QO01BdUJHO29DQXZCSEE7T0FvQkc7O1VBcEJIQTtPQWtCRzs7O1VBbEJIQTtPQWdCRyxnQ0FoQkhBO09BYUc7OztVQWJIQTtPQVVHOztVQVZIQTtPQU91Qjs7O1VBUHZCQTtPQU9HO01BSEE7O2dCQUpIQTs7Ozs7OztvQkF3QkE7YUFLQ29QLCtCQUFzQ3ZrQjtNQUlwQzs7MkNBSm9DQTs7YUFNdEN3a0IsK0JBQ0R4a0I7TUFJRzs7O2dCQUpIQSxvREFLQTthQVdDeWtCLCtCQUFvQ3JrQjtNQWNaOzs2Q0FkWUE7T0FZbEMsOEJBWmtDQTtPQVVaOzZDQVZZQTtPQVFaOzZDQVJZQTtPQU1sQyx5QkFOa0NBO09BSWxDLDZCQUprQ0E7Ozs7Ozs7YUFnQnBDc2tCLCtCQUNEdGtCO01BaUJ1Qjs7O29DQWpCdkJBO09BaUJHO09BSEE7aUNBZEhBO09BV3VCOzs7VUFYdkJBO09BV0c7T0FIb0I7O29DQVJ2QkE7T0FRRztPQUZBLDBCQU5IQTtNQUlHOztnQkFKSEE7Ozs7O29CQW1CQTthQVNDaVYsK0JBQ0RBO01BU3lCOzs7b0NBVHpCQTtPQU9HOzJDQVBIQTtPQUtHLHVCQUxIQTtPQUdnQixvQkFIaEJBOzs7OzthQVdDc1AsaUNBQ0R0UDtNQVN1Qjs7OztVQVR2QkE7T0FTRztPQUZBOzs7VUFQSEE7T0FLRyx3QkFMSEE7TUFHYTs2QkFIYkE7OztvQkFXQTthQVNDdVAsaUNBQ0R2TjtNQVd5Qjs7O29DQVh6QkE7T0FTRzsyQ0FUSEE7T0FPRyx1QkFQSEE7T0FLRyxvQkFMSEE7Ozs7O2FBYUN3TixpQ0FDRHhOO01BY3VCOzs7O1VBZHZCQTtPQWNHO09BSEE7OztVQVhIQTtPQVFHLHdCQVJIQTtNQUtHOzZCQUxIQTs7O29CQWlCQTthQUtDeU4saUNBQ0RqM0I7TUFLRzs7MkNBTEhBOzthQU9DazNCLGlDQUNEbDNCO01BS0c7OztnQkFMSEEsK0NBT0E7YUFRQ20zQixpQ0FDRC8zQjtNQVNHOzsyQ0FUSEE7T0FPRzsyQ0FQSEE7T0FLRzsyQ0FMSEE7O2FBV0NnNEIsaUNBQ0RoNEI7TUFVRzs7O2tDQVZIQTtPQVFHOzs7VUFSSEE7TUFLRzs7O2dCQUxIQTs7b0JBV0E7YUFRQ2k0QixpQ0FDRDMzQjtNQVFHOzsyQ0FSSEE7T0FNRzsyQ0FOSEE7T0FJRzsyQ0FKSEE7O2FBVUM0M0IsaUNBQ0Q1M0I7TUFPYTs7O2tDQVBiQTtPQU1HOzs7VUFOSEE7TUFJRzs7O2dCQUpIQTs7b0JBUUE7YUFPQzYzQixrQkFBaUIxM0I7TUFHQzttQ0FIREE7T0FFSSx3Q0FGSkE7O2FBS2pCMjNCLGtCQUFpQjMzQjtNQUdGLGlDQUhFQTtNQUVFO2lEQUZGQTtvQkFJbEI7YUFTQzQzQixpQ0FDRHRlOztRQVNHO2dDQUNTaFI7bUJBQ1U7Ozt1QkFYdEJnUixrQ0FVWWhSO21CQUNVLGdEQUVFLEVBQUM7TUFOdEI7bUNBUEhnUjtPQUtHOzJDQUxIQTs7OzthQWVDdWUsaUNBQ0R2ZTtNQVNtQjs7T0FGaEI7K0JBUEhBO01BS0c7OztnQkFMSEE7O29CQVVBO2FBS0R3ZTtNQUNEeEk7TUFFRDs7O21CQUZDQSxtQ0FLMkQ7YUFHMUQ3WTtNQUNESDtNQUVEOzs7bUJBRkNBLG1DQUsyQzthQUcxQ3loQjtNQUNEdkk7TUFFRDs7O21CQUZDQSxtQ0FLMkM7YUFHMUN3STtNQUNEdEk7TUFFRDs7O21CQUZDQSxtQ0FLaUQ7YUFHaER1SSw0QkFDRDNsQjtNQUVEOztnREFGQ0EsK0JBS21DO2FBR2xDNGxCLDBCQUNEeGxCO01BRUQ7O2dEQUZDQSw2QkFLaUM7YUFHaEN5bEIsa0NBQ0RoNEI7TUFFRDs7O21CQUZDQSxpQ0FLK0M7YUFHOUNpNEIsa0NBQ0Q3NEI7TUFFRDs7O21CQUZDQSxpQ0FLOEM7YUFHN0M4NEIsK0JBQ0R4NEI7TUFFRDs7O21CQUZDQSxpQ0FLc0M7YUFHckN5NEIsT0FBTXQ0QjtNQUVSLCtDQUZRQSxVQUUwQzthQUdoRHU0QjtNQUNEL2dCO01BRUQ7OzttQkFGQ0EsbUNBS2tEO2FBR2pEZ2hCLGtDQUNEaGtCO01BRUQ7OzttQkFGQ0EsaUNBS2dFO2FBRy9EaWtCO01BQ0Q1RTtNQUVEOzs7bUJBRkNBLG1DQUs0QzthQUczQzZFLGtDQUNEbGtCO01BRUQ7OzttQkFGQ0EsaUNBS29EO2FBR25EbWtCO01BQ0R0STtNQUVEOzs7bUJBRkNBLG1DQUswQzthQUd6Q3VJO01BQ0R6STtNQUVEOzs7bUJBRkNBLG1DQUt3RDthQUd2RDBJO01BQ0RoRTtNQUVEOzs7bUJBRkNBLG1DQUtnRDthQUcvQ2lFO01BQ0Q3STtNQUVEOzs7bUJBRkNBLG1DQUs0QzthQUczQzhJLGtDQUNEdmtCO01BRUQ7OzttQkFGQ0EsaUNBSzRDO2FBRzNDd2tCO01BQ0Q1SjtNQUVEOzs7bUJBRkNBLG1DQUsyQzthQUcxQ3BIO01BQ0RIO01BRUQ7OzttQkFGQ0EsbUNBS3lDO2FBR3hDUztNQUNESDtNQUVEOzs7bUJBRkNBLG1DQUtpRDthQUdoRDhRLDZCQUNEeFI7TUFFRDs7O21CQUZDQSxnQ0FLb0M7YUFHbkN5UiwrQkFDRHZSO01BRUQ7OzttQkFGQ0EsaUNBS3NDO2FBR3JDd1I7TUFDRHBJO01BRUQ7OzttQkFGQ0EsbUNBS3FEOztNQWlGaEQsNkJBdkZKb0ksaUNBdUZnRTs7TUFINUQsNkJBN0ZKRCwrQkE2RmlEOztNQUg3Qyw2QkFuR0pELDZCQW1HK0M7O01BSDNDLDZCQXpHSjNRLGlDQXlHNEQ7O01BSHhELDZCQS9HSk4saUNBK0dvRDs7TUFIaEQsNkJBckhKZ1IsaUNBcUhzRDs7TUFIbEQsNkJBM0hKRCxrQ0EySHVEOztNQUhuRCw2QkFqSUpELGlDQWlJdUQ7O01BSG5ELDZCQXZJSkQsaUNBdUkyRDs7TUFIdkQsNkJBN0lKRCxpQ0E2SW1FOztNQUgvRCw2QkFuSkpELGlDQW1KcUQ7O01BSGpELDZCQXpKSkQsa0NBeUorRDs7TUFIM0QsNkJBL0pKRCxpQ0ErSnVEOztNQUpuRCw2QkFwS0pELGtDQXFLMEQ7O01BSnRELDZCQTFLSkQsa0NBMEs2RDt5QkFIekQsNkJBNUtKRCxPQTRLeUI7O01BSHJCLDZCQWxMSkQsK0JBa0xpRDs7TUFIN0MsNkJBeExKRCxrQ0F3THlEOztNQUhyRCw2QkE5TEpELGtDQThMMEQ7O01BSHRELDZCQXBNSkQsMEJBb000Qzs7TUFIeEMsNkJBMU1KRCw0QkEwTThDOztNQUgxQyw2QkFoTkpELGlDQWdONEQ7O01BSHhELDZCQXROSkQsaUNBc05zRDs7TUFIbEQsNkJBNU5KdGhCLGlDQTROc0Q7O01BSGxELDZCQWxPSnFoQixpQ0FrT3NFO0lBSnZFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FyaEpDcE47T0F1QkFDO09Bd0JBQztPQVdBQztPQXdCQUU7T0FnQkFDO09BNkJBRTtPQW9CQUM7T0E2QkFFO09BWUFDO09Bd0JBQztPQVdBQztPQXVCQUU7T0FZQUM7T0EyQkFFO09BbUJBQztPQTBCQUU7T0FXQUM7T0F1QkFFO09BWUFDO09BMEJBRTtPQWVBQztPQXdCQUU7T0FnQkFDO09BOEJBQztPQWVBQztPQXdCQUU7T0FlQUM7T0F1QkFFO09BZUFDO09BMEJBQztPQVlBQztPQXlCQUM7T0FnQkFDO09BNEJBQztPQVlBQztPQTRCQUM7T0FnQkFDO09BZ0NBQztPQTRCQUM7T0FnQ0FDO09Bb0JBQztPQTZCQUM7T0FvQkFDO09BZ0NBQztPQVlBQztPQStCQUM7T0F1Q0FDO09BOEJBQztPQWdCQUM7T0FtQkVDO09BUUFFO09BZ0JBQztPQU1BRTtPQWFBQztPQVFBRTtPQWlCQUM7T0FRQUU7T0FtQkFoSDtPQWNBQztPQXdCQWdIO09BUUFDO09BZ0JBQztPQVlBQztPQW1CQXBHO09Bd0JBQztPQWdDQTlTO09BT0FDO09BYUFpWjtPQU9BQztPQXVCQXBHO09BNEJBQztPQXNDQW9HO09BUUFDO09BbUJBcEc7T0FvQkFDO09BOEJBb0c7T0FZQUM7T0FnQkFwRztPQWFBcUc7T0FnQkFDO09BU0FDO09Bd0JBQztPQXVCQUM7T0FvQ0FDO09Bb0JBQztPQStCQUM7T0FxQkFDO09BNkJBQztPQVlBQztPQWVBQztPQU1BQztPQVdBQztPQU1BQztPQWtCQUM7T0FlQUM7T0FvQkFDO09BVUFDO09BZUFDO09BUUFDO09BYUFDO09BUUFDO09BWUFDO09BS0FDO09BU0FDO09BS0FDO09Ba0JGQztPQVdBQztPQWtCRUU7T0FPQUU7T0FnQkFDO09BU0FFO09BdUJBQztPQWdCQUU7T0FpQ0ZDO09BWUFDO09BeUJFM0w7T0FXQW1CO09BeUJBeUs7T0FRQUM7T0E0QkFDO09BMEJBQztPQXdDQUM7T0FjQUU7T0ErQkZDO09BZUFDO09BeUJBRTtPQVlBQztPQXlCQUU7T0FXQUM7T0FzQkFFO09BWUFDO09BcUJFQztPQVNBQztPQWdDQUM7T0FzQkFDO09Bc0NBQztPQW9CQUM7T0F3QkFDO09BV0FDO09BOEJBQztPQWlCQUU7T0FxQ0FDO09BZUFDO09BNkJGQztPQVdBQztPQXlCQUM7T0FnQkFDO09BK0JBRTtPQXVCQUM7T0E2QkVDO09Bb0JBQztPQWdDQUM7T0FZQUU7T0E2QkFDO09BbUJBQztPQWtDQUM7T0E4QkFDO09Bd0JBaE47T0FZQUM7T0FzQkFQO09BYUFDO09BNEJBc047T0FrQkFDO09BNEJBQztPQVVBQztPQWtDQUM7T0FrQ0FDO09BaUVBbmY7T0FjQUM7T0EyQkFtZjtPQW9CQUM7T0F1Q0FDO09BNENBQztPQW1EQUM7T0FVQUM7T0FtQ0FDO09Bb0NBQztPQTZFQUM7T0FzQkFDO09BcURBQztPQW9DQUM7T0EwRUFDO09Bb0NBQztPQStFQUM7T0EyQkFDO09Bb0RBQztPQW9CQUM7T0E4QkFDO09BTUFDO09BaUJBQztPQWdCQUM7T0E2QkFyUDtPQVlBc1A7T0FxQkFDO09BY0FDO09BdUJBQztPQVFBQztPQWdCQUM7T0FZQUM7T0FvQkFDO09BV0FDO09BZ0JBQztPQUtBQztPQWFBQztPQWdCQUM7T0FnQkZDO09BU0FyaEI7T0FTQXNoQjtPQVNBQztPQVNBQztPQVNBQztPQVNBQztPQVNBQztPQVNBQztPQVNBQztPQUtBQztPQVNBQztPQVNBQztPQVNBQztPQVNBQztPQVNBQztPQVNBQztPQVNBQztPQVNBQztPQVNBQztPQVNBaFI7T0FTQU07T0FTQTJRO09BU0FDO09BU0FDO0lBVUQ7Ozs7VUovaUpKOzs7Ozs7O0lJQUE7Ozs7Ozs7Ozs7Ozs7OztNQzRDMkI7d0JBQUtDO2lCQUNsQjttQkFFTTs7Ozt1QkFIWUE7dUNBTUs7aUJBTHZCLDhDQUt3QixFQUFDOztNQWpCWjt3QkFBS0M7aUJBQ2xCO21CQUVNOzs7O3VCQUhZQTswQ0FNUTtpQkFMMUIsOENBSzJCLEVBQUM7SUFadkM7Ozs7Ozs7VUQzQkg7Ozs7Ozs7SUNBQTs7OztJQ2tCUzs7O1VEbEJUIiwic291cmNlc0NvbnRlbnQiOltudWxsLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZmZzZXRcbnZhciBjYW1sX2ludDY0X29mZnNldCA9IE1hdGgucG93KDIsIC0yNCk7XG5cbi8vUHJvdmlkZXM6IE1sSW50NjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zmc2V0LCBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG5mdW5jdGlvbiBNbEludDY0IChsbyxtaSxoaSkge1xuICB0aGlzLmxvID0gbG8gJiAweGZmZmZmZjtcbiAgdGhpcy5taSA9IG1pICYgMHhmZmZmZmY7XG4gIHRoaXMuaGkgPSBoaSAmIDB4ZmZmZjtcbn1cbk1sSW50NjQucHJvdG90eXBlLmNhbWxfY3VzdG9tID0gXCJfalwiXG5NbEludDY0LnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sbyx0aGlzLm1pLHRoaXMuaGkpO1xufVxuXG5NbEludDY0LnByb3RvdHlwZS51Y29tcGFyZSA9IGZ1bmN0aW9uICh4KSB7XG4gIGlmICh0aGlzLmhpID4geC5oaSkgcmV0dXJuIDE7XG4gIGlmICh0aGlzLmhpIDwgeC5oaSkgcmV0dXJuIC0xO1xuICBpZiAodGhpcy5taSA+IHgubWkpIHJldHVybiAxO1xuICBpZiAodGhpcy5taSA8IHgubWkpIHJldHVybiAtMTtcbiAgaWYgKHRoaXMubG8gPiB4LmxvKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMubG8gPCB4LmxvKSByZXR1cm4gLTE7XG4gIHJldHVybiAwO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBoaSA9IHRoaXMuaGkgPDwgMTY7XG4gIHZhciB4aGkgPSB4LmhpIDw8IDE2O1xuICBpZiAoaGkgPiB4aGkpIHJldHVybiAxO1xuICBpZiAoaGkgPCB4aGkpIHJldHVybiAtMTtcbiAgaWYgKHRoaXMubWkgPiB4Lm1pKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMubWkgPCB4Lm1pKSByZXR1cm4gLTE7XG4gIGlmICh0aGlzLmxvID4geC5sbykgcmV0dXJuIDE7XG4gIGlmICh0aGlzLmxvIDwgeC5sbykgcmV0dXJuIC0xO1xuICByZXR1cm4gMDtcbn1cbk1sSW50NjQucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGxvID0gLSB0aGlzLmxvO1xuICB2YXIgbWkgPSAtIHRoaXMubWkgKyAobG8gPj4gMjQpO1xuICB2YXIgaGkgPSAtIHRoaXMuaGkgKyAobWkgPj4gMjQpO1xuICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgbG8gPSB0aGlzLmxvICsgeC5sbztcbiAgdmFyIG1pID0gdGhpcy5taSArIHgubWkgKyAobG8gPj4gMjQpO1xuICB2YXIgaGkgPSB0aGlzLmhpICsgeC5oaSArIChtaSA+PiAyNCk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnN1YiA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBsbyA9IHRoaXMubG8gLSB4LmxvO1xuICB2YXIgbWkgPSB0aGlzLm1pIC0geC5taSArIChsbyA+PiAyNCk7XG4gIHZhciBoaSA9IHRoaXMuaGkgLSB4LmhpICsgKG1pID4+IDI0KTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIGxvID0gdGhpcy5sbyAqIHgubG87XG4gIHZhciBtaSA9ICgobG8gKiBjYW1sX2ludDY0X29mZnNldCkgfCAwKSArIHRoaXMubWkgKiB4LmxvICsgdGhpcy5sbyAqIHgubWk7XG4gIHZhciBoaSA9ICgobWkgKiBjYW1sX2ludDY0X29mZnNldCkgfCAwKSArIHRoaXMuaGkgKiB4LmxvICsgdGhpcy5taSAqIHgubWkgKyB0aGlzLmxvICogeC5oaTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuaXNaZXJvID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKHRoaXMubG98dGhpcy5taXx0aGlzLmhpKSA9PSAwO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuaXNOZWcgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAodGhpcy5oaSA8PCAxNikgPCAwO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuYW5kID0gZnVuY3Rpb24gKHgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMubG8gJiB4LmxvLCB0aGlzLm1pICYgeC5taSwgdGhpcy5oaSAmIHguaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUub3IgPSBmdW5jdGlvbiAoeCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sb3x4LmxvLCB0aGlzLm1pfHgubWksIHRoaXMuaGl8eC5oaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS54b3IgPSBmdW5jdGlvbiAoeCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sb154LmxvLCB0aGlzLm1pXngubWksIHRoaXMuaGleeC5oaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5zaGlmdF9sZWZ0ID0gZnVuY3Rpb24gKHMpIHtcbiAgcyA9IHMgJiA2MztcbiAgaWYgKHMgPT0gMCkgcmV0dXJuIHRoaXM7XG4gIGlmIChzIDwgMjQpIHtcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKHRoaXMubG8gPDwgcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLm1pIDw8IHMpIHwgKHRoaXMubG8gPj4gKDI0IC0gcykpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaGkgPDwgcykgfCAodGhpcy5taSA+PiAoMjQgLSBzKSkpO1xuICB9XG4gIGlmIChzIDwgNDgpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0ICgwLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sbyA8PCAocyAtIDI0KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLm1pIDw8IChzIC0gMjQpKSB8ICh0aGlzLmxvID4+ICg0OCAtIHMpKSk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCgwLCAwLCB0aGlzLmxvIDw8IChzIC0gNDgpKVxufVxuTWxJbnQ2NC5wcm90b3R5cGUuc2hpZnRfcmlnaHRfdW5zaWduZWQgPSBmdW5jdGlvbiAocykge1xuICBzID0gcyAmIDYzO1xuICBpZiAocyA9PSAwKSByZXR1cm4gdGhpcztcbiAgaWYgKHMgPCAyNClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgICAgKHRoaXMubG8gPj4gcykgfCAodGhpcy5taSA8PCAoMjQgLSBzKSksXG4gICAgICAodGhpcy5taSA+PiBzKSB8ICh0aGlzLmhpIDw8ICgyNCAtIHMpKSxcbiAgICAgICh0aGlzLmhpID4+IHMpKTtcbiAgaWYgKHMgPCA0OClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgICAgKHRoaXMubWkgPj4gKHMgLSAyNCkpIHwgKHRoaXMuaGkgPDwgKDQ4IC0gcykpLFxuICAgICAgKHRoaXMuaGkgPj4gKHMgLSAyNCkpLFxuICAgICAgMCk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCAodGhpcy5oaSA+PiAocyAtIDQ4KSwgMCwgMCk7XG59XG5NbEludDY0LnByb3RvdHlwZS5zaGlmdF9yaWdodCA9IGZ1bmN0aW9uIChzKSB7XG4gIHMgPSBzICYgNjM7XG4gIGlmIChzID09IDApIHJldHVybiB0aGlzO1xuICB2YXIgaCA9ICh0aGlzLmhpIDw8IDE2KSA+PiAxNjtcbiAgaWYgKHMgPCAyNClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgICAgKHRoaXMubG8gPj4gcykgfCAodGhpcy5taSA8PCAoMjQgLSBzKSksXG4gICAgICAodGhpcy5taSA+PiBzKSB8IChoIDw8ICgyNCAtIHMpKSxcbiAgICAgICgodGhpcy5oaSA8PCAxNikgPj4gcykgPj4+IDE2KTtcbiAgdmFyIHNpZ24gPSAodGhpcy5oaSA8PCAxNikgPj4gMzE7XG4gIGlmIChzIDwgNDgpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICAgICh0aGlzLm1pID4+IChzIC0gMjQpKSB8ICh0aGlzLmhpIDw8ICg0OCAtIHMpKSxcbiAgICAgICh0aGlzLmhpIDw8IDE2KSA+PiAocyAtIDI0KSA+PiAxNixcbiAgICAgIHNpZ24gJiAweGZmZmYpO1xuICByZXR1cm4gbmV3IE1sSW50NjQgKCh0aGlzLmhpIDw8IDE2KSA+PiAocyAtIDMyKSwgc2lnbiwgc2lnbik7XG59XG5NbEludDY0LnByb3RvdHlwZS5sc2wxID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmhpID0gKHRoaXMuaGkgPDwgMSkgfCAodGhpcy5taSA+PiAyMyk7XG4gIHRoaXMubWkgPSAoKHRoaXMubWkgPDwgMSkgfCAodGhpcy5sbyA+PiAyMykpICYgMHhmZmZmZmY7XG4gIHRoaXMubG8gPSAodGhpcy5sbyA8PCAxKSAmIDB4ZmZmZmZmO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubHNyMSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5sbyA9ICgodGhpcy5sbyA+Pj4gMSkgfCAodGhpcy5taSA8PCAyMykpICYgMHhmZmZmZmY7XG4gIHRoaXMubWkgPSAoKHRoaXMubWkgPj4+IDEpIHwgKHRoaXMuaGkgPDwgMjMpKSAmIDB4ZmZmZmZmO1xuICB0aGlzLmhpID0gdGhpcy5oaSA+Pj4gMTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnVkaXZtb2QgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgb2Zmc2V0ID0gMDtcbiAgdmFyIG1vZHVsdXMgPSB0aGlzLmNvcHkoKTtcbiAgdmFyIGRpdmlzb3IgPSB4LmNvcHkoKTtcbiAgdmFyIHF1b3RpZW50ID0gbmV3IE1sSW50NjQoMCwwLDApO1xuICB3aGlsZSAobW9kdWx1cy51Y29tcGFyZShkaXZpc29yKSA+IDApIHtcbiAgICBvZmZzZXQrKztcbiAgICBkaXZpc29yLmxzbDEoKTtcbiAgfVxuICB3aGlsZSAob2Zmc2V0ID49IDApIHtcbiAgICBvZmZzZXQgLS07XG4gICAgcXVvdGllbnQubHNsMSgpO1xuICAgIGlmIChtb2R1bHVzLnVjb21wYXJlKGRpdmlzb3IpID49IDApIHtcbiAgICAgIHF1b3RpZW50LmxvICsrO1xuICAgICAgbW9kdWx1cyA9IG1vZHVsdXMuc3ViKGRpdmlzb3IpO1xuICAgIH1cbiAgICBkaXZpc29yLmxzcjEoKTtcbiAgfVxuICByZXR1cm4geyBxdW90aWVudCA6IHF1b3RpZW50LCBtb2R1bHVzIDogbW9kdWx1cyB9O1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuZGl2ID0gZnVuY3Rpb24gKHkpXG57XG4gIHZhciB4ID0gdGhpcztcbiAgaWYgKHkuaXNaZXJvKCkpIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCk7XG4gIHZhciBzaWduID0geC5oaSBeIHkuaGk7XG4gIGlmICh4LmhpICYgMHg4MDAwKSB4ID0geC5uZWcoKTtcbiAgaWYgKHkuaGkgJiAweDgwMDApIHkgPSB5Lm5lZygpO1xuICB2YXIgcSA9IHgudWRpdm1vZCh5KS5xdW90aWVudDtcbiAgaWYgKHNpZ24gJiAweDgwMDApIHEgPSBxLm5lZygpO1xuICByZXR1cm4gcTtcbn1cbk1sSW50NjQucHJvdG90eXBlLm1vZCA9IGZ1bmN0aW9uICh5KVxue1xuICB2YXIgeCA9IHRoaXM7XG4gIGlmICh5LmlzWmVybygpKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpO1xuICB2YXIgc2lnbiA9IHguaGk7XG4gIGlmICh4LmhpICYgMHg4MDAwKSB4ID0geC5uZWcoKTtcbiAgaWYgKHkuaGkgJiAweDgwMDApIHkgPSB5Lm5lZygpO1xuICB2YXIgciA9IHgudWRpdm1vZCh5KS5tb2R1bHVzO1xuICBpZiAoc2lnbiAmIDB4ODAwMCkgciA9IHIubmVnKCk7XG4gIHJldHVybiByO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUudG9JbnQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmxvIHwgKHRoaXMubWkgPDwgMjQpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUudG9GbG9hdCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICgodGhpcy5oaSA8PCAxNikgKiBNYXRoLnBvdygyLCAzMikgKyB0aGlzLm1pICogTWF0aC5wb3coMiwgMjQpKSArIHRoaXMubG87XG59XG5NbEludDY0LnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gW3RoaXMuaGkgPj4gOCxcbiAgICAgICAgICB0aGlzLmhpICYgMHhmZixcbiAgICAgICAgICB0aGlzLm1pID4+IDE2LFxuICAgICAgICAgICh0aGlzLm1pID4+IDgpICYgMHhmZixcbiAgICAgICAgICB0aGlzLm1pICYgMHhmZixcbiAgICAgICAgICB0aGlzLmxvID4+IDE2LFxuICAgICAgICAgICh0aGlzLmxvID4+IDgpICYgMHhmZixcbiAgICAgICAgICB0aGlzLmxvICYgMHhmZl07XG59XG5NbEludDY0LnByb3RvdHlwZS5sbzMyID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5sbyB8ICgodGhpcy5taSAmIDB4ZmYpIDw8IDI0KTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmhpMzIgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAoKHRoaXMubWkgPj4+IDgpICYgMHhmZmZmKSB8ICh0aGlzLmhpIDw8IDE2KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF91bHQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdWx0KHgseSkgeyByZXR1cm4geC51Y29tcGFyZSh5KSA8IDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9jb21wYXJlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2NvbXBhcmUoeCx5LCB0b3RhbCkgeyByZXR1cm4geC5jb21wYXJlKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9uZWcgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbmVnICh4KSB7IHJldHVybiB4Lm5lZygpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9hZGQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfYWRkICh4LCB5KSB7IHJldHVybiB4LmFkZCh5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfc3ViIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3N1YiAoeCwgeSkgeyByZXR1cm4geC5zdWIoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X211bCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbXVsKHgseSkgeyByZXR1cm4geC5tdWwoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2lzX3plcm8gY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfaXNfemVybyh4KSB7IHJldHVybiAreC5pc1plcm8oKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlKHgpIHsgcmV0dXJuICt4LmlzTmVnKCk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9hbmQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfYW5kICh4LCB5KSB7IHJldHVybiB4LmFuZCh5KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29yIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29yICh4LCB5KSB7IHJldHVybiB4Lm9yKHkpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfeG9yIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3hvciAoeCwgeSkgeyByZXR1cm4geC54b3IoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3NoaWZ0X2xlZnQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc2hpZnRfbGVmdCAoeCwgcykgeyByZXR1cm4geC5zaGlmdF9sZWZ0KHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCAoeCwgcykgeyByZXR1cm4geC5zaGlmdF9yaWdodF91bnNpZ25lZChzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfc2hpZnRfcmlnaHQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc2hpZnRfcmlnaHQgKHgsIHMpIHsgcmV0dXJuIHguc2hpZnRfcmlnaHQocykgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2RpdiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9kaXYgKHgsIHkpIHsgcmV0dXJuIHguZGl2KHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9tb2QgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbW9kICh4LCB5KSB7IHJldHVybiB4Lm1vZCh5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2ZfaW50MzIgY29uc3Rcbi8vUmVxdWlyZXM6IE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb2ZfaW50MzIgKHgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHggJiAweGZmZmZmZiwgKHggPj4gMjQpICYgMHhmZmZmZmYsICh4ID4+IDMxKSAmIDB4ZmZmZilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF90b19pbnQzMiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF90b19pbnQzMiAoeCkgeyByZXR1cm4geC50b0ludCgpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF90b19mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF90b19mbG9hdCAoeCkgeyByZXR1cm4geC50b0Zsb2F0ICgpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZmZzZXQsIE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb2ZfZmxvYXQgKHgpIHtcbiAgaWYgKHggPCAwKSB4ID0gTWF0aC5jZWlsKHgpO1xuICByZXR1cm4gbmV3IE1sSW50NjQoXG4gICAgeCAmIDB4ZmZmZmZmLFxuICAgIE1hdGguZmxvb3IoeCAqIGNhbWxfaW50NjRfb2Zmc2V0KSAmIDB4ZmZmZmZmLFxuICAgIE1hdGguZmxvb3IoeCAqIGNhbWxfaW50NjRfb2Zmc2V0ICogY2FtbF9pbnQ2NF9vZmZzZXQpICYgMHhmZmZmKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9mb3JtYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2VfZm9ybWF0LCBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlLCBjYW1sX2ludDY0X25lZ1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9pbnQzMiwgY2FtbF9pbnQ2NF90b19pbnQzMlxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9pc196ZXJvLCBjYW1sX3N0cl9yZXBlYXRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfZm9ybWF0IChmbXQsIHgpIHtcbiAgdmFyIGYgPSBjYW1sX3BhcnNlX2Zvcm1hdChmbXQpO1xuICBpZiAoZi5zaWduZWRjb252ICYmIGNhbWxfaW50NjRfaXNfbmVnYXRpdmUoeCkpIHtcbiAgICBmLnNpZ24gPSAtMTsgeCA9IGNhbWxfaW50NjRfbmVnKHgpO1xuICB9XG4gIHZhciBidWZmZXIgPSBcIlwiO1xuICB2YXIgd2Jhc2UgPSBjYW1sX2ludDY0X29mX2ludDMyKGYuYmFzZSk7XG4gIHZhciBjdnRibCA9IFwiMDEyMzQ1Njc4OWFiY2RlZlwiO1xuICBkbyB7XG4gICAgdmFyIHAgPSB4LnVkaXZtb2Qod2Jhc2UpO1xuICAgIHggPSBwLnF1b3RpZW50O1xuICAgIGJ1ZmZlciA9IGN2dGJsLmNoYXJBdChjYW1sX2ludDY0X3RvX2ludDMyKHAubW9kdWx1cykpICsgYnVmZmVyO1xuICB9IHdoaWxlICghIGNhbWxfaW50NjRfaXNfemVybyh4KSk7XG4gIGlmIChmLnByZWMgPj0gMCkge1xuICAgIGYuZmlsbGVyID0gJyAnO1xuICAgIHZhciBuID0gZi5wcmVjIC0gYnVmZmVyLmxlbmd0aDtcbiAgICBpZiAobiA+IDApIGJ1ZmZlciA9IGNhbWxfc3RyX3JlcGVhdCAobiwgJzAnKSArIGJ1ZmZlcjtcbiAgfVxuICByZXR1cm4gY2FtbF9maW5pc2hfZm9ybWF0dGluZyhmLCBidWZmZXIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX3BhcnNlX2RpZ2l0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2ludDMyLCBjYW1sX2ludDY0X3VsdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9hZGQsIGNhbWxfaW50NjRfbXVsLCBjYW1sX2ludDY0X25lZ1xuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb2Zfc3RyaW5nKHMpIHtcbiAgdmFyIHIgPSBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UgKHMpO1xuICB2YXIgaSA9IHJbMF0sIHNpZ24gPSByWzFdLCBiYXNlID0gclsyXTtcbiAgdmFyIGJhc2U2NCA9IGNhbWxfaW50NjRfb2ZfaW50MzIoYmFzZSk7XG4gIHZhciB0aHJlc2hvbGQgPVxuICAgICAgbmV3IE1sSW50NjQoMHhmZmZmZmYsIDB4ZmZmZmZmZiwgMHhmZmZmKS51ZGl2bW9kKGJhc2U2NCkucXVvdGllbnQ7XG4gIHZhciBjID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKTtcbiAgdmFyIGQgPSBjYW1sX3BhcnNlX2RpZ2l0KGMpO1xuICBpZiAoZCA8IDAgfHwgZCA+PSBiYXNlKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgdmFyIHJlcyA9IGNhbWxfaW50NjRfb2ZfaW50MzIoZCk7XG4gIGZvciAoOzspIHtcbiAgICBpKys7XG4gICAgYyA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk7XG4gICAgaWYgKGMgPT0gOTUpIGNvbnRpbnVlO1xuICAgIGQgPSBjYW1sX3BhcnNlX2RpZ2l0KGMpO1xuICAgIGlmIChkIDwgMCB8fCBkID49IGJhc2UpIGJyZWFrO1xuICAgIC8qIERldGVjdCBvdmVyZmxvdyBpbiBtdWx0aXBsaWNhdGlvbiBiYXNlICogcmVzICovXG4gICAgaWYgKGNhbWxfaW50NjRfdWx0KHRocmVzaG9sZCwgcmVzKSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gICAgZCA9IGNhbWxfaW50NjRfb2ZfaW50MzIoZCk7XG4gICAgcmVzID0gY2FtbF9pbnQ2NF9hZGQoY2FtbF9pbnQ2NF9tdWwoYmFzZTY0LCByZXMpLCBkKTtcbiAgICAvKiBEZXRlY3Qgb3ZlcmZsb3cgaW4gYWRkaXRpb24gKGJhc2UgKiByZXMpICsgZCAqL1xuICAgIGlmIChjYW1sX2ludDY0X3VsdChyZXMsIGQpKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgfVxuICBpZiAoaSAhPSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICBpZiAoYmFzZSA9PSAxMCAmJiBjYW1sX2ludDY0X3VsdChuZXcgTWxJbnQ2NCgwLCAwLCAweDgwMDApLCByZXMpKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICBpZiAoc2lnbiA8IDApIHJlcyA9IGNhbWxfaW50NjRfbmVnKHJlcyk7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaShsbywgbWksIGhpKXtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaSBjb25zdFxuLy9SZXF1aXJlczogTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkobG8sIGhpKXtcbiAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICBsbyAmIDB4ZmZmZmZmLFxuICAgICgobG8gPj4+IDI0KSAmIDB4ZmYpIHwgKChoaSAmIDB4ZmZmZikgPDwgOCksXG4gICAgKGhpID4+PiAxNikgJiAweGZmZmYpO1xufVxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9sbzMyIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2xvMzIodil7IHJldHVybiB2LmxvMzIoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfaGkzMiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9oaTMyKHYpeyByZXR1cm4gdi5oaTMyKCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mX2J5dGVzIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX2J5dGVzKGEpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGFbN10gPDwgMCB8IChhWzZdIDw8IDgpIHwgKGFbNV0gPDwgMTYpLFxuICAgICAgICAgICAgICAgICAgICAgYVs0XSA8PCAwIHwgKGFbM10gPDwgOCkgfCAoYVsyXSA8PCAxNiksXG4gICAgICAgICAgICAgICAgICAgICBhWzFdIDw8IDAgfCAoYVswXSA8PCA4KSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3RvX2J5dGVzIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3RvX2J5dGVzKHgpIHsgcmV0dXJuIHgudG9BcnJheSgpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9oYXNoIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2hhc2godil7XG4gIHJldHVybiAodi5sbzMyKCkpIF4gKHYuaGkzMigpKVxufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwLTIwMTQgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8gQW4gT0NhbWwgc3RyaW5nIGlzIGFuIG9iamVjdCB3aXRoIHRocmVlIGZpZWxkczpcbi8vIC0gdGFnICd0J1xuLy8gLSBsZW5ndGggJ2wnXG4vLyAtIGNvbnRlbnRzICdjJ1xuLy9cbi8vIFRoZSBjb250ZW50cyBvZiB0aGUgc3RyaW5nIGNhbiBiZSBlaXRoZXIgYSBKYXZhU2NyaXB0IGFycmF5IG9yXG4vLyBhIEphdmFTY3JpcHQgc3RyaW5nLiBUaGUgbGVuZ3RoIG9mIHRoaXMgc3RyaW5nIGNhbiBiZSBsZXNzIHRoYW4gdGhlXG4vLyBsZW5ndGggb2YgdGhlIE9DYW1sIHN0cmluZy4gSW4gdGhpcyBjYXNlLCByZW1haW5pbmcgYnl0ZXMgYXJlXG4vLyBhc3N1bWVkIHRvIGJlIHplcm9lcy4gQXJyYXlzIGFyZSBtdXRhYmxlIGJ1dCBjb25zdW1lcyBtb3JlIG1lbW9yeVxuLy8gdGhhbiBzdHJpbmdzLiBBIGNvbW1vbiBwYXR0ZXJuIGlzIHRvIHN0YXJ0IGZyb20gYW4gZW1wdHkgc3RyaW5nIGFuZFxuLy8gcHJvZ3Jlc3NpdmVseSBmaWxsIGl0IGZyb20gdGhlIHN0YXJ0LiBQYXJ0aWFsIHN0cmluZ3MgbWFrZXMgaXRcbi8vIHBvc3NpYmxlIHRvIGltcGxlbWVudCB0aGlzIGVmZmljaWVudGx5LlxuLy9cbi8vIFdoZW4gY29udmVydGluZyB0byBhbmQgZnJvbSBVVEYtMTYsIHdlIGtlZXAgdHJhY2sgb2Ygd2hldGhlciB0aGVcbi8vIHN0cmluZyBpcyBjb21wb3NlZCBvbmx5IG9mIEFTQ0lJIGNoYXJhY3RlcnMgKGluIHdoaWNoIGNhc2UsIG5vXG4vLyBjb252ZXJzaW9uIG5lZWRzIHRvIGJlIHBlcmZvcm1lZCkgb3Igbm90LlxuLy9cbi8vIFRoZSBzdHJpbmcgdGFnIGNhbiB0aHVzIHRha2UgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG4vLyAgIGZ1bGwgc3RyaW5nICAgICBCWVRFIHwgVU5LTk9XTjogICAgICAwXG4vLyAgICAgICAgICAgICAgICAgICBCWVRFIHwgQVNDSUk6ICAgICAgICA5XG4vLyAgICAgICAgICAgICAgICAgICBCWVRFIHwgTk9UX0FTQ0lJOiAgICA4XG4vLyAgIHN0cmluZyBwcmVmaXggICBQQVJUSUFMOiAgICAgICAgICAgICAyXG4vLyAgIGFycmF5ICAgICAgICAgICBBUlJBWTogICAgICAgICAgICAgICA0XG4vL1xuLy8gT25lIGNhbiB1c2UgYml0IG1hc2tpbmcgdG8gZGlzY3JpbWluYXRlIHRoZXNlIGRpZmZlcmVudCBjYXNlczpcbi8vICAga25vd25fZW5jb2RpbmcoeCkgPSB4Jjhcbi8vICAgaXNfYXNjaWkoeCkgPSAgICAgICB4JjFcbi8vICAga2luZCh4KSA9ICAgICAgICAgICB4JjZcblxuLy9Qcm92aWRlczogY2FtbF9zdHJfcmVwZWF0XG5mdW5jdGlvbiBjYW1sX3N0cl9yZXBlYXQobiwgcykge1xuICBpZihuID09IDApIHJldHVybiBcIlwiO1xuICBpZiAocy5yZXBlYXQpIHtyZXR1cm4gcy5yZXBlYXQobik7fSAvLyBFQ01Bc2NyaXB0IDYgYW5kIEZpcmVmb3ggMjQrXG4gIHZhciByID0gXCJcIiwgbCA9IDA7XG4gIGZvcig7Oykge1xuICAgIGlmIChuICYgMSkgciArPSBzO1xuICAgIG4gPj49IDE7XG4gICAgaWYgKG4gPT0gMCkgcmV0dXJuIHI7XG4gICAgcyArPSBzO1xuICAgIGwrKztcbiAgICBpZiAobCA9PSA5KSB7XG4gICAgICBzLnNsaWNlKDAsMSk7IC8vIGZsYXR0ZW4gdGhlIHN0cmluZ1xuICAgICAgLy8gdGhlbiwgdGhlIGZsYXR0ZW5pbmcgb2YgdGhlIHdob2xlIHN0cmluZyB3aWxsIGJlIGZhc3RlcixcbiAgICAgIC8vIGFzIGl0IHdpbGwgYmUgY29tcG9zZWQgb2YgbGFyZ2VyIHBpZWNlc1xuICAgIH1cbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXNcbi8vV2Vha2RlZlxuLy8gUHJlIEVDTUFTY3JpcHQgNSwgW2FwcGx5XSB3b3VsZCBub3Qgc3VwcG9ydCBhcnJheS1saWtlIG9iamVjdC5cbi8vIEluIHN1Y2ggc2V0dXAsIFR5cGVkX2FycmF5IHdvdWxkIGJlIGltcGxlbWVudGVkIGFzIHBvbHlmaWxsLCBhbmQgW2YuYXBwbHldIHdvdWxkXG4vLyBmYWlsIGhlcmUuIE1hcmsgdGhlIHByaW1pdGl2ZSBhcyBXZWFrZGVmLCBzbyB0aGF0IHBlb3BsZSBjYW4gb3ZlcnJpZGUgaXQgZWFzaWx5LlxuZnVuY3Rpb24gY2FtbF9zdWJhcnJheV90b19qc2J5dGVzIChhLCBpLCBsZW4pIHtcbiAgdmFyIGYgPSBTdHJpbmcuZnJvbUNoYXJDb2RlO1xuICBpZiAoaSA9PSAwICYmIGxlbiA8PSA0MDk2ICYmIGxlbiA9PSBhLmxlbmd0aCkgcmV0dXJuIGYuYXBwbHkgKG51bGwsIGEpO1xuICB2YXIgcyA9IFwiXCI7XG4gIGZvciAoOyAwIDwgbGVuOyBpICs9IDEwMjQsbGVuLT0xMDI0KVxuICAgIHMgKz0gZi5hcHBseSAobnVsbCwgYS5zbGljZShpLGkgKyBNYXRoLm1pbihsZW4sIDEwMjQpKSk7XG4gIHJldHVybiBzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3V0Zjhfb2ZfdXRmMTZcbmZ1bmN0aW9uIGNhbWxfdXRmOF9vZl91dGYxNihzKSB7XG4gIGZvciAodmFyIGIgPSBcIlwiLCB0ID0gYiwgYywgZCwgaSA9IDAsIGwgPSBzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGMgPSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgaWYgKGMgPCAweDgwKSB7XG4gICAgICBmb3IgKHZhciBqID0gaSArIDE7IChqIDwgbCkgJiYgKGMgPSBzLmNoYXJDb2RlQXQoaikpIDwgMHg4MDsgaisrKTtcbiAgICAgIGlmIChqIC0gaSA+IDUxMikgeyB0LnN1YnN0cigwLCAxKTsgYiArPSB0OyB0ID0gXCJcIjsgYiArPSBzLnNsaWNlKGksIGopIH1cbiAgICAgIGVsc2UgdCArPSBzLnNsaWNlKGksIGopO1xuICAgICAgaWYgKGogPT0gbCkgYnJlYWs7XG4gICAgICBpID0gajtcbiAgICB9XG4gICAgaWYgKGMgPCAweDgwMCkge1xuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4YzAgfCAoYyA+PiA2KSk7XG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHg4MCB8IChjICYgMHgzZikpO1xuICAgIH0gZWxzZSBpZiAoYyA8IDB4ZDgwMCB8fCBjID49IDB4ZGZmZikge1xuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZTAgfCAoYyA+PiAxMiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8ICgoYyA+PiA2KSAmIDB4M2YpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAgfCAoYyAmIDB4M2YpKTtcbiAgICB9IGVsc2UgaWYgKGMgPj0gMHhkYmZmIHx8IGkgKyAxID09IGwgfHxcbiAgICAgICAgICAgICAgIChkID0gcy5jaGFyQ29kZUF0KGkgKyAxKSkgPCAweGRjMDAgfHwgZCA+IDB4ZGZmZikge1xuICAgICAgLy8gVW5tYXRjaGVkIHN1cnJvZ2F0ZSBwYWlyLCByZXBsYWNlZCBieSBcXHVmZmZkIChyZXBsYWNlbWVudCBjaGFyYWN0ZXIpXG4gICAgICB0ICs9IFwiXFx4ZWZcXHhiZlxceGJkXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGkrKztcbiAgICAgIGMgPSAoYyA8PCAxMCkgKyBkIC0gMHgzNWZkYzAwO1xuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZjAgfCAoYyA+PiAxOCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8ICgoYyA+PiAxMikgJiAweDNmKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKChjID4+IDYpICYgMHgzZiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8IChjICYgMHgzZikpO1xuICAgIH1cbiAgICBpZiAodC5sZW5ndGggPiAxMDI0KSB7dC5zdWJzdHIoMCwgMSk7IGIgKz0gdDsgdCA9IFwiXCI7fVxuICB9XG4gIHJldHVybiBiK3Q7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdXRmMTZfb2ZfdXRmOFxuZnVuY3Rpb24gY2FtbF91dGYxNl9vZl91dGY4KHMpIHtcbiAgZm9yICh2YXIgYiA9IFwiXCIsIHQgPSBcIlwiLCBjLCBjMSwgYzIsIHYsIGkgPSAwLCBsID0gcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBjMSA9IHMuY2hhckNvZGVBdChpKTtcbiAgICBpZiAoYzEgPCAweDgwKSB7XG4gICAgICBmb3IgKHZhciBqID0gaSArIDE7IChqIDwgbCkgJiYgKGMxID0gcy5jaGFyQ29kZUF0KGopKSA8IDB4ODA7IGorKyk7XG4gICAgICBpZiAoaiAtIGkgPiA1MTIpIHsgdC5zdWJzdHIoMCwgMSk7IGIgKz0gdDsgdCA9IFwiXCI7IGIgKz0gcy5zbGljZShpLCBqKSB9XG4gICAgICBlbHNlIHQgKz0gcy5zbGljZShpLCBqKTtcbiAgICAgIGlmIChqID09IGwpIGJyZWFrO1xuICAgICAgaSA9IGo7XG4gICAgfVxuICAgIHYgPSAxO1xuICAgIGlmICgoKytpIDwgbCkgJiYgKCgoYzIgPSBzLmNoYXJDb2RlQXQoaSkpICYgLTY0KSA9PSAxMjgpKSB7XG4gICAgICBjID0gYzIgKyAoYzEgPDwgNik7XG4gICAgICBpZiAoYzEgPCAweGUwKSB7XG4gICAgICAgIHYgPSBjIC0gMHgzMDgwO1xuICAgICAgICBpZiAodiA8IDB4ODApIHYgPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdiA9IDI7XG4gICAgICAgIGlmICgoKytpIDwgbCkgJiYgKCgoYzIgPSBzLmNoYXJDb2RlQXQoaSkpICYgLTY0KSA9PSAxMjgpKSB7XG4gICAgICAgICAgYyA9IGMyICsgKGMgPDwgNik7XG4gICAgICAgICAgaWYgKGMxIDwgMHhmMCkge1xuICAgICAgICAgICAgdiA9IGMgLSAweGUyMDgwO1xuICAgICAgICAgICAgaWYgKCh2IDwgMHg4MDApIHx8ICgodiA+PSAweGQ3ZmYpICYmICh2IDwgMHhlMDAwKSkpIHYgPSAyO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2ID0gMztcbiAgICAgICAgICAgIGlmICgoKytpIDwgbCkgJiYgKCgoYzIgPSBzLmNoYXJDb2RlQXQoaSkpICYgLTY0KSA9PSAxMjgpICYmXG4gICAgICAgICAgICAgICAgKGMxIDwgMHhmNSkpIHtcbiAgICAgICAgICAgICAgdiA9IGMyIC0gMHgzYzgyMDgwICsgKGMgPDwgNik7XG4gICAgICAgICAgICAgIGlmICh2IDwgMHgxMDAwMCB8fCB2ID4gMHgxMGZmZmYpIHYgPSAzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAodiA8IDQpIHsgLy8gSW52YWxpZCBzZXF1ZW5jZVxuICAgICAgaSAtPSB2O1xuICAgICAgdCArPSBcIlxcdWZmZmRcIjtcbiAgICB9IGVsc2UgaWYgKHYgPiAweGZmZmYpXG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhkN2MwICsgKHYgPj4gMTApLCAweGRjMDAgKyAodiAmIDB4M0ZGKSlcbiAgICBlbHNlXG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUodik7XG4gICAgaWYgKHQubGVuZ3RoID4gMTAyNCkge3Quc3Vic3RyKDAsIDEpOyBiICs9IHQ7IHQgPSBcIlwiO31cbiAgfVxuICByZXR1cm4gYit0O1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX2lzX2FzY2lpXG5mdW5jdGlvbiBqc29vX2lzX2FzY2lpIChzKSB7XG4gIC8vIFRoZSByZWd1bGFyIGV4cHJlc3Npb24gZ2V0cyBiZXR0ZXIgYXQgYXJvdW5kIHRoaXMgcG9pbnQgZm9yIGFsbCBicm93c2Vyc1xuICBpZiAocy5sZW5ndGggPCAyNCkge1xuICAgIC8vIFNwaWRlcm1vbmtleSBnZXRzIG11Y2ggc2xvd2VyIHdoZW4gcy5sZW5ndGggPj0gMjQgKG9uIDY0IGJpdCBhcmNocylcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHMubGVuZ3RoOyBpKyspIGlmIChzLmNoYXJDb2RlQXQoaSkgPiAxMjcpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlXG4gICAgcmV0dXJuICEvW15cXHgwMC1cXHg3Zl0vLnRlc3Qocyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkpIHtcbiAgc3dpdGNoIChzLnQgJiA2KSB7XG4gIGRlZmF1bHQ6IC8qIFBBUlRJQUwgKi9cbiAgICBpZiAoaSA+PSBzLmMubGVuZ3RoKSByZXR1cm4gMDtcbiAgY2FzZSAwOiAvKiBCWVRFUyAqL1xuICAgIHJldHVybiBzLmMuY2hhckNvZGVBdChpKTtcbiAgY2FzZSA0OiAvKiBBUlJBWSAqL1xuICAgIHJldHVybiBzLmNbaV1cbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpLCBjKSB7XG4gIC8vIFRoZSBPQ2FtbCBjb21waWxlciB1c2VzIENoYXIudW5zYWZlX2NociBvbiBpbnRlZ2VycyBsYXJnZXIgdGhhbiAyNTUhXG4gIGMgJj0gMHhmZjtcbiAgaWYgKHMudCAhPSA0IC8qIEFSUkFZICovKSB7XG4gICAgaWYgKGkgPT0gcy5jLmxlbmd0aCkge1xuICAgICAgcy5jICs9IFN0cmluZy5mcm9tQ2hhckNvZGUgKGMpO1xuICAgICAgaWYgKGkgKyAxID09IHMubCkgcy50ID0gMDsgLypCWVRFUyB8IFVOS09XTiovXG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5IChzKTtcbiAgfVxuICBzLmNbaV0gPSBjO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IgKCkge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yICgpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcImluZGV4IG91dCBvZiBib3VuZHNcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dldFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ2V0IChzLCBpKSB7XG4gIGlmIChpID4+PiAwID49IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSkgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19nZXQxNlxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ2V0MTYocyxpKSB7XG4gIGlmIChpID4+PiAwID49IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSAtIDEpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpLFxuICAgICAgYjIgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpICsgMSk7XG4gIHJldHVybiAoYjIgPDwgOCB8IGIxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19nZXQxNlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0LCBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dldDE2KHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSAxKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSksXG4gICAgICBiMiA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIDEpO1xuICByZXR1cm4gKGIyIDw8IDggfCBiMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dldDMyXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQzMihzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIC0gMykgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSksXG4gICAgICBiMiA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyAxKSxcbiAgICAgIGIzID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSArIDIpLFxuICAgICAgYjQgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpICsgMyk7XG4gIHJldHVybiAoYjQgPDwgMjQgfCBiMyA8PCAxNiB8IGIyIDw8IDggfCBiMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCwgY2FtbF9ieXRlc19ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9ieXRlc19nZXQzMihzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gMykgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkpLFxuICAgICAgYjIgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkgKyAxKSxcbiAgICAgIGIzID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgMiksXG4gICAgICBiNCA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIDMpO1xuICByZXR1cm4gKGI0IDw8IDI0IHwgYjMgPDwgMTYgfCBiMiA8PCA4IHwgYjEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19nZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ2V0NjQocyxpKSB7XG4gIGlmIChpID4+PiAwID49IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSAtIDcpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBhID0gbmV3IEFycmF5KDgpO1xuICBmb3IodmFyIGogPSAwOyBqIDwgODsgaisrKXtcbiAgICBhWzcgLSBqXSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyBqKTtcbiAgfVxuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyhhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19nZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0LCBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dldDY0KHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSA3KSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBhID0gbmV3IEFycmF5KDgpO1xuICBmb3IodmFyIGogPSAwOyBqIDwgODsgaisrKXtcbiAgICBhWzcgLSBqXSA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIGopO1xuICB9XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dldFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvciwgY2FtbF9ieXRlc191bnNhZmVfZ2V0XG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dldCAocywgaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQgKHMsIGksIGMpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3NldFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfc2V0LCBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0IChzLCBpLCBjKSB7XG4gIGlmIChpID4+PiAwID49IHMubCkgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQgKHMsIGksIGMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfc2V0MTYocyxpLGkxNil7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDEpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIyID0gMHhGRiAmIGkxNiA+PiA4LFxuICAgICAgYjEgPSAweEZGICYgaTE2O1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAwLCBiMSk7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDEsIGIyKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0MTYocyxpLGkxNil7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N0cmluZ19zZXQxNlwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfc2V0MTZcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDE2KHMsaSxpMTYpe1xuICByZXR1cm4gY2FtbF9ieXRlc19zZXQxNihzLGksaTE2KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19zZXQzMlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvciwgY2FtbF9ieXRlc191bnNhZmVfc2V0XG5mdW5jdGlvbiBjYW1sX2J5dGVzX3NldDMyKHMsaSxpMzIpe1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSAzKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiNCA9IDB4RkYgJiBpMzIgPj4gMjQsXG4gICAgICBiMyA9IDB4RkYgJiBpMzIgPj4gMTYsXG4gICAgICBiMiA9IDB4RkYgJiBpMzIgPj4gOCxcbiAgICAgIGIxID0gMHhGRiAmIGkzMjtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMCwgYjEpO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAxLCBiMik7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDIsIGIzKTtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMywgYjQpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQzMlxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQzMihzLGksaTMyKXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3NldDMyXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQzMlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19zZXQzMlxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0MzIocyxpLGkzMil7XG4gIHJldHVybiBjYW1sX2J5dGVzX3NldDMyKHMsaSxpMzIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfc2V0NjQocyxpLGk2NCl7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDcpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGEgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGk2NCk7XG4gIGZvcih2YXIgaiA9IDA7IGogPCA4OyBqKyspIHtcbiAgICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyA3IC0gaiwgYVtqXSk7XG4gIH1cbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0NjQocyxpLGk2NCl7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N0cmluZ19zZXQ2NFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfc2V0NjRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDY0KHMsaSxpNjQpe1xuICByZXR1cm4gY2FtbF9ieXRlc19zZXQ2NChzLGksaTY0KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuZnVuY3Rpb24gY2FtbF9ieXRlc19zZXQgKHMsIGksIGMpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGksIGMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBqc29vX2lzX2FzY2lpLCBjYW1sX3V0Zjhfb2ZfdXRmMTYsIE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmcgKHMpIHtcbiAgdmFyIHRhZyA9IDkgLyogQllURVMgfCBBU0NJSSAqLztcbiAgaWYgKCFqc29vX2lzX2FzY2lpKHMpKVxuICAgIHRhZyA9IDggLyogQllURVMgfCBOT1RfQVNDSUkgKi8sIHMgPSBjYW1sX3V0Zjhfb2ZfdXRmMTYocyk7XG4gIHJldHVybiBuZXcgTWxCeXRlcyh0YWcsIHMsIHMubGVuZ3RoKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBNbEJ5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzLCBqc29vX2lzX2FzY2lpLCBjYW1sX3V0ZjE2X29mX3V0ZjhcbmZ1bmN0aW9uIE1sQnl0ZXMgKHRhZywgY29udGVudHMsIGxlbmd0aCkge1xuICB0aGlzLnQ9dGFnOyB0aGlzLmM9Y29udGVudHM7IHRoaXMubD1sZW5ndGg7XG59XG5NbEJ5dGVzLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCl7XG4gIHN3aXRjaCAodGhpcy50KSB7XG4gIGNhc2UgOTogLypCWVRFUyB8IEFTQ0lJKi9cbiAgICByZXR1cm4gdGhpcy5jO1xuICBkZWZhdWx0OlxuICAgIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXModGhpcyk7XG4gIGNhc2UgMDogLypCWVRFUyB8IFVOS09XTiovXG4gICAgaWYgKGpzb29faXNfYXNjaWkodGhpcy5jKSkge1xuICAgICAgdGhpcy50ID0gOTsgLypCWVRFUyB8IEFTQ0lJKi9cbiAgICAgIHJldHVybiB0aGlzLmM7XG4gICAgfVxuICAgIHRoaXMudCA9IDg7IC8qQllURVMgfCBOT1RfQVNDSUkqL1xuICBjYXNlIDg6IC8qQllURVMgfCBOT1RfQVNDSUkqL1xuICAgIHJldHVybiB0aGlzLmM7XG4gIH1cbn07XG5NbEJ5dGVzLnByb3RvdHlwZS50b1V0ZjE2ID0gZnVuY3Rpb24gKCl7XG4gIHZhciByID0gdGhpcy50b1N0cmluZygpO1xuICBpZih0aGlzLnQgPT0gOSkgcmV0dXJuIHJcbiAgcmV0dXJuIGNhbWxfdXRmMTZfb2ZfdXRmOChyKTtcbn1cbk1sQnl0ZXMucHJvdG90eXBlLnNsaWNlID0gZnVuY3Rpb24gKCl7XG4gIHZhciBjb250ZW50ID0gdGhpcy50ID09IDQgPyB0aGlzLmMuc2xpY2UoKSA6IHRoaXMuYztcbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKHRoaXMudCxjb250ZW50LHRoaXMubCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfc3RyX3JlcGVhdCwgY2FtbF9zdWJhcnJheV90b19qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzIChzKSB7XG4gIC8qIEFzc3VtZXMgbm90IEJZVEVTICovXG4gIGlmIChzLnQgPT0gMiAvKiBQQVJUSUFMICovKVxuICAgIHMuYyArPSBjYW1sX3N0cl9yZXBlYXQocy5sIC0gcy5jLmxlbmd0aCwgJ1xcMCcpXG4gIGVsc2VcbiAgICBzLmMgPSBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMgKHMuYywgMCwgcy5jLmxlbmd0aCk7XG4gIHMudCA9IDA7IC8qQllURVMgfCBVTktPV04qL1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheSAocykge1xuICAvKiBBc3N1bWVzIG5vdCBBUlJBWSAqL1xuICBpZihnbG9iYWxUaGlzLlVpbnQ4QXJyYXkpIHtcbiAgICB2YXIgYSA9IG5ldyBnbG9iYWxUaGlzLlVpbnQ4QXJyYXkocy5sKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgYSA9IG5ldyBBcnJheShzLmwpO1xuICB9XG4gIHZhciBiID0gcy5jLCBsID0gYi5sZW5ndGgsIGkgPSAwO1xuICBmb3IgKDsgaSA8IGw7IGkrKykgYVtpXSA9IGIuY2hhckNvZGVBdChpKTtcbiAgZm9yIChsID0gcy5sOyBpIDwgbDsgaSsrKSBhW2ldID0gMDtcbiAgcy5jID0gYTtcbiAgcy50ID0gNDsgLyogQVJSQVkgKi9cbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfb2ZfYnl0ZXMgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG5mdW5jdGlvbiBjYW1sX2FycmF5X29mX2J5dGVzIChzKSB7XG4gIGlmIChzLnQgIT0gNCAvKiBBUlJBWSAqLykgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5KHMpO1xuICByZXR1cm4gcy5jO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X29mX3N0cmluZyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuZnVuY3Rpb24gY2FtbF9hcnJheV9vZl9zdHJpbmcgKHMpIHtcbiAgdmFyIGwgPSBjYW1sX21sX3N0cmluZ19sZW5ndGgocyk7XG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICB2YXIgaSA9IDA7XG4gIGZvciAoOyBpIDwgbDsgaSsrKSBhW2ldID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLGkpO1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jcmVhdGVfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEJ5dGVzLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfY3JlYXRlX3N0cmluZyhsZW4pIHtcbiAgaWYobGVuIDwgMCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyaW5nLmNyZWF0ZVwiKTtcbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKGxlbj8yOjksXCJcIixsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2NyZWF0ZV9zdHJpbmcobGVuKSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0cmluZy5jcmVhdGVcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3JlYXRlX2J5dGVzIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEJ5dGVzLGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9jcmVhdGVfYnl0ZXMobGVuKSB7XG4gIGlmIChsZW4gPCAwKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCeXRlcy5jcmVhdGVcIik7XG4gIHJldHVybiBuZXcgTWxCeXRlcyhsZW4/Mjo5LFwiXCIsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcywgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfYXJyYXkgKGEpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoY2FtbF9zdWJhcnJheV90b19qc2J5dGVzKGEsMCxhLmxlbmd0aCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX2FycmF5XG4vL1JlcXVpcmVzOiBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX2FycmF5IChhKSB7XG4gIHJldHVybiBuZXcgTWxCeXRlcyg0LGEsYS5sZW5ndGgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2NvbXBhcmUgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19jb21wYXJlKHMxLCBzMikge1xuICAoczEudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICAoczIudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gKHMxLmMgPCBzMi5jKT8tMTooczEuYyA+IHMyLmMpPzE6MDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2VxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZXF1YWwoczEsIHMyKSB7XG4gIGlmKHMxID09PSBzMikgcmV0dXJuIDE7XG4gIChzMS50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIChzMi50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiAoczEuYyA9PSBzMi5jKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX25vdGVxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2VxdWFsXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ub3RlcXVhbChzMSwgczIpIHsgcmV0dXJuIDEtY2FtbF9zdHJpbmdfZXF1YWwoczEsIHMyKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX25vdGVxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfZXF1YWxcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfbm90ZXF1YWwoczEsIHMyKSB7IHJldHVybiAxLWNhbWxfYnl0ZXNfZXF1YWwoczEsIHMyKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2xlc3NlcXVhbCBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2xlc3NlcXVhbChzMSwgczIpIHtcbiAgKHMxLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMxKTtcbiAgKHMyLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIChzMS5jIDw9IHMyLmMpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19sZXNzdGhhbiBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2xlc3N0aGFuKHMxLCBzMikge1xuICAoczEudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICAoczIudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gKHMxLmMgPCBzMi5jKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dyZWF0ZXJlcXVhbFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfbGVzc2VxdWFsXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ncmVhdGVyZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19sZXNzZXF1YWwoczIsczEpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ncmVhdGVyZXF1YWxcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfbGVzc2VxdWFsXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dyZWF0ZXJlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc2VxdWFsKHMyLHMxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ3JlYXRlcnRoYW5cbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2xlc3N0aGFuXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ncmVhdGVydGhhbihzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX2xlc3N0aGFuKHMyLCBzMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW5cbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfbGVzc3RoYW5cbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW4oczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3N0aGFuKHMyLCBzMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmlsbF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9zdHJfcmVwZWF0LCBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfZmlsbF9ieXRlcyhzLCBpLCBsLCBjKSB7XG4gIGlmIChsID4gMCkge1xuICAgIGlmIChpID09IDAgJiYgKGwgPj0gcy5sIHx8IChzLnQgPT0gMiAvKiBQQVJUSUFMICovICYmIGwgPj0gcy5jLmxlbmd0aCkpKSB7XG4gICAgICBpZiAoYyA9PSAwKSB7XG4gICAgICAgIHMuYyA9IFwiXCI7XG4gICAgICAgIHMudCA9IDI7IC8qIFBBUlRJQUwgKi9cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMuYyA9IGNhbWxfc3RyX3JlcGVhdCAobCwgU3RyaW5nLmZyb21DaGFyQ29kZShjKSk7XG4gICAgICAgIHMudCA9IChsID09IHMubCk/MCAvKiBCWVRFUyB8IFVOS09XTiAqLyA6MjsgLyogUEFSVElBTCAqL1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocy50ICE9IDQgLyogQVJSQVkgKi8pIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheShzKTtcbiAgICAgIGZvciAobCArPSBpOyBpIDwgbDsgaSsrKSBzLmNbaV0gPSBjO1xuICAgIH1cbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maWxsX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9maWxsX2J5dGVzXG52YXIgY2FtbF9maWxsX3N0cmluZyA9IGNhbWxfZmlsbF9ieXRlc1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2JsaXRfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcywgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG5mdW5jdGlvbiBjYW1sX2JsaXRfYnl0ZXMoczEsIGkxLCBzMiwgaTIsIGxlbikge1xuICBpZiAobGVuID09IDApIHJldHVybiAwO1xuICBpZiAoKGkyID09IDApICYmXG4gICAgICAobGVuID49IHMyLmwgfHwgKHMyLnQgPT0gMiAvKiBQQVJUSUFMICovICYmIGxlbiA+PSBzMi5jLmxlbmd0aCkpKSB7XG4gICAgczIuYyA9IChzMS50ID09IDQgLyogQVJSQVkgKi8pP1xuICAgICAgY2FtbF9zdWJhcnJheV90b19qc2J5dGVzKHMxLmMsIGkxLCBsZW4pOlxuICAgICAgKGkxID09IDAgJiYgczEuYy5sZW5ndGggPT0gbGVuKT9zMS5jOnMxLmMuc3Vic3RyKGkxLCBsZW4pO1xuICAgIHMyLnQgPSAoczIuYy5sZW5ndGggPT0gczIubCk/MCAvKiBCWVRFUyB8IFVOS09XTiAqLyA6MjsgLyogUEFSVElBTCAqL1xuICB9IGVsc2UgaWYgKHMyLnQgPT0gMiAvKiBQQVJUSUFMICovICYmIGkyID09IHMyLmMubGVuZ3RoKSB7XG4gICAgczIuYyArPSAoczEudCA9PSA0IC8qIEFSUkFZICovKT9cbiAgICAgIGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyhzMS5jLCBpMSwgbGVuKTpcbiAgICAgIChpMSA9PSAwICYmIHMxLmMubGVuZ3RoID09IGxlbik/czEuYzpzMS5jLnN1YnN0cihpMSwgbGVuKTtcbiAgICBzMi50ID0gKHMyLmMubGVuZ3RoID09IHMyLmwpPzAgLyogQllURVMgfCBVTktPV04gKi8gOjI7IC8qIFBBUlRJQUwgKi9cbiAgfSBlbHNlIHtcbiAgICBpZiAoczIudCAhPSA0IC8qIEFSUkFZICovKSBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkoczIpO1xuICAgIHZhciBjMSA9IHMxLmMsIGMyID0gczIuYztcbiAgICBpZiAoczEudCA9PSA0IC8qIEFSUkFZICovKSB7XG4gICAgICBpZiAoaTIgPD0gaTEpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYzIgW2kyICsgaV0gPSBjMSBbaTEgKyBpXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvciAodmFyIGkgPSBsZW4gLSAxOyBpID49IDA7IGktLSkgYzIgW2kyICsgaV0gPSBjMSBbaTEgKyBpXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGwgPSBNYXRoLm1pbiAobGVuLCBjMS5sZW5ndGggLSBpMSk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkrKykgYzIgW2kyICsgaV0gPSBjMS5jaGFyQ29kZUF0KGkxICsgaSk7XG4gICAgICBmb3IgKDsgaSA8IGxlbjsgaSsrKSBjMiBbaTIgKyBpXSA9IDA7XG4gICAgfVxuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JsaXRfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2JsaXRfYnl0ZXMsIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2JsaXRfc3RyaW5nKGEsYixjLGQsZSkge1xuICBjYW1sX2JsaXRfYnl0ZXMoY2FtbF9ieXRlc19vZl9zdHJpbmcoYSksYixjLGQsZSk7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoIGNvbnN0XG5mdW5jdGlvbiBjYW1sX21sX2J5dGVzX2xlbmd0aChzKSB7IHJldHVybiBzLmwgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpIHtcbiAgcmV0dXJuIHMuY2hhckNvZGVBdChpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfdW5zYWZlX3NldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ191bnNhZmVfc2V0IChzLCBpLCBjKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N0cmluZ191bnNhZmVfc2V0XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGggY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIHtcbiAgcmV0dXJuIHMubGVuZ3RoXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2NvbXBhcmUgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfY29tcGFyZShzMSwgczIpIHtcbiAgcmV0dXJuIChzMSA8IHMyKT8tMTooczEgPiBzMik/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19lcXVhbCBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19lcXVhbChzMSwgczIpIHtcbiAgaWYoczEgPT09IHMyKSByZXR1cm4gMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3NlcXVhbCBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19sZXNzZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiAoczEgPD0gczIpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfbGVzc3RoYW4gY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc3RoYW4oczEsIHMyKSB7XG4gIHJldHVybiAoczEgPCBzMik/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcywgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9ieXRlcyhzKSB7XG4gIChzLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMpO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzLmMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHgpIHsgcmV0dXJuIHggfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNieXRlc19vZl9zdHJpbmcoeCkgeyByZXR1cm4geCB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2lzX2FzY2lpLCBjYW1sX3V0ZjE2X29mX3V0Zjhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocykge1xuICBpZihqc29vX2lzX2FzY2lpKHMpKVxuICAgIHJldHVybiBzO1xuICByZXR1cm4gY2FtbF91dGYxNl9vZl91dGY4KHMpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2lzX2FzY2lpLCBjYW1sX3V0Zjhfb2ZfdXRmMTYsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgKHMpIHtcbiAgaWYgKGpzb29faXNfYXNjaWkocykpXG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocylcbiAgZWxzZSByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhjYW1sX3V0Zjhfb2ZfdXRmMTYocykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMgY29uc3Rcbi8vUmVxdWlyZXM6IE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhzKSB7IHJldHVybiBuZXcgTWxCeXRlcygwLHMscy5sZW5ndGgpOyB9XG5cblxuLy8gVGhlIHNlY3Rpb24gYmVsb3cgc2hvdWxkIGJlIHVzZWQgd2hlbiB1c2UtanMtc3RyaW5nPWZhbHNlXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX2dldFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSkge1xuICByZXR1cm4gY2FtbF9ieXRlc191bnNhZmVfZ2V0KHMsaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfdW5zYWZlX3NldCAocywgaSwgYykge1xuICByZXR1cm4gY2FtbF9ieXRlc191bnNhZmVfc2V0KHMsaSxjKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIHtcbiAgcmV0dXJuIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2NvbXBhcmVcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfY29tcGFyZVxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfY29tcGFyZShzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfY29tcGFyZShzMSxzMilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZXF1YWxcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfZXF1YWxcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2VxdWFsKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9ieXRlc19lcXVhbChzMSxzMilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfbGVzc2VxdWFsXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2xlc3NlcXVhbFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc2VxdWFsKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9ieXRlc19sZXNzZXF1YWwoczEsczIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3N0aGFuXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2xlc3N0aGFuXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19sZXNzdGhhbihzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc3RoYW4oczEsczIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9ieXRlcyhzKSB7IHJldHVybiBzIH1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9zdHJpbmcgY29uc3Rcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKHMpIHsgcmV0dXJuIHMgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX29mX2pzYnl0ZXNcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocykgeyByZXR1cm4gY2FtbF9ieXRlc19vZl9qc2J5dGVzKHMpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNieXRlc19vZl9zdHJpbmcocykge1xuICAocy50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzKTtcbiAgcmV0dXJuIHMuYyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nIG11dGFibGUgKGNvbnN0KVxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocyl7XG4gIHJldHVybiBzLnRvVXRmMTYoKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZ1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgKHMpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmcocyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfbWxfYnl0ZXNcbi8vUmVxdWlyZXM6IE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfaXNfbWxfYnl0ZXMocykge1xuICByZXR1cm4gKHMgaW5zdGFuY2VvZiBNbEJ5dGVzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ieXRlc19jb250ZW50XG4vL1JlcXVpcmVzOiBNbEJ5dGVzLCBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX21sX2J5dGVzX2NvbnRlbnQocykge1xuICBzd2l0Y2ggKHMudCAmIDYpIHtcbiAgZGVmYXVsdDogLyogUEFSVElBTCAqL1xuICAgIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMocyk7XG4gIGNhc2UgMDogLyogQllURVMgKi9cbiAgICByZXR1cm4gcy5jO1xuICBjYXNlIDQ6XG4gICAgcmV0dXJuIHMuY1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfbWxfc3RyaW5nXG4vL1JlcXVpcmVzOiBqc29vX2lzX2FzY2lpXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfaXNfbWxfc3RyaW5nKHMpIHtcbiAgcmV0dXJuICh0eXBlb2YgcyA9PT0gXCJzdHJpbmdcIiAmJiAhL1teXFx4MDAtXFx4ZmZdLy50ZXN0KHMpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19tbF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfYnl0ZXNcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfaXNfbWxfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfaXNfbWxfYnl0ZXMocyk7XG59XG5cbi8vIFRoZSBmdW5jdGlvbnMgYmVsb3cgYXJlIGRlcHJlY2F0ZWRcblxuLy9Qcm92aWRlczogY2FtbF9qc190b19ieXRlX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9qc190b19ieXRlX3N0cmluZyhzKSB7IHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9uZXdfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX25ld19zdHJpbmcgKHMpIHsgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocykgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Zyb21fc3RyaW5nIG11dGFibGUgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfZnJvbV9zdHJpbmcocykge1xuICByZXR1cm4gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocylcbn1cblxuLy9Qcm92aWRlczogY2FtbF90b19qc19zdHJpbmcgbXV0YWJsZSAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF90b19qc19zdHJpbmcocykge1xuICByZXR1cm4gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocylcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc190b19zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX3RvX3N0cmluZyAocykge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcocyk7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1JhaXNlIGV4Y2VwdGlvblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX2NvbnN0YW50IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfcmFpc2VfY29uc3RhbnQgKHRhZykgeyB0aHJvdyB0YWc7IH1cblxuLy9Qcm92aWRlczogY2FtbF9yZXR1cm5fZXhuX2NvbnN0YW50IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfcmV0dXJuX2V4bl9jb25zdGFudCAodGFnKSB7IHJldHVybiB0YWc7IH1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV93aXRoX2FyZyAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9yYWlzZV93aXRoX2FyZyAodGFnLCBhcmcpIHsgdGhyb3cgWzAsIHRhZywgYXJnXTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX3dpdGhfYXJncyAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9yYWlzZV93aXRoX2FyZ3MgKHRhZywgYXJncykgeyB0aHJvdyBbMCwgdGFnXS5jb25jYXQoYXJncyk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV93aXRoX3N0cmluZyAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV93aXRoX2FyZywgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9yYWlzZV93aXRoX3N0cmluZyAodGFnLCBtc2cpIHtcbiAgY2FtbF9yYWlzZV93aXRoX2FyZyAodGFnLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKG1zZykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZhaWx3aXRoIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcsIGNhbWxfZ2xvYmFsX2RhdGEsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZmFpbHdpdGggKG1zZykge1xuICBpZighY2FtbF9nbG9iYWxfZGF0YS5GYWlsdXJlKVxuICAgIGNhbWxfZ2xvYmFsX2RhdGEuRmFpbHVyZT1bMjQ4LGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJGYWlsdXJlXCIpLC0zXTtcbiAgY2FtbF9yYWlzZV93aXRoX3N0cmluZyhjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmUsIG1zZyk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfaW52YWxpZF9hcmd1bWVudCAobXNnKSB7XG4gIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcoY2FtbF9nbG9iYWxfZGF0YS5JbnZhbGlkX2FyZ3VtZW50LCBtc2cpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlICgpIHtcbiAgY2FtbF9yYWlzZV9jb25zdGFudChjYW1sX2dsb2JhbF9kYXRhLkVuZF9vZl9maWxlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV96ZXJvX2RpdmlkZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSAoKSB7XG4gIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9nbG9iYWxfZGF0YS5EaXZpc2lvbl9ieV96ZXJvKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9ub3RfZm91bmRcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfbm90X2ZvdW5kICgpIHtcbiAgY2FtbF9yYWlzZV9jb25zdGFudChjYW1sX2dsb2JhbF9kYXRhLk5vdF9mb3VuZCk7IH1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IgKCkge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJpbmRleCBvdXQgb2YgYm91bmRzXCIpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfY2FsbF9nZW4gKGNvbnN0LCBzaGFsbG93KVxuLy9XZWFrZGVmXG5mdW5jdGlvbiBjYW1sX2NhbGxfZ2VuKGYsIGFyZ3MpIHtcbiAgaWYoZi5mdW4pXG4gICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZi5mdW4sIGFyZ3MpO1xuICAvL0ZJWE1FLCBjYW4gaGFwcGVuIHdpdGggdG9vIG1hbnkgYXJndW1lbnRzXG4gIGlmKHR5cGVvZiBmICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBmO1xuICB2YXIgbiA9IGYubGVuZ3RoIHwgMDtcbiAgaWYobiA9PT0gMCkgcmV0dXJuIGYuYXBwbHkobnVsbCxhcmdzKTtcbiAgdmFyIGFyZ3NMZW4gPSBhcmdzLmxlbmd0aCB8IDA7XG4gIHZhciBkID0gbiAtIGFyZ3NMZW4gfCAwO1xuICBpZiAoZCA9PSAwKVxuICAgIHJldHVybiBmLmFwcGx5KG51bGwsIGFyZ3MpO1xuICBlbHNlIGlmIChkIDwgMCkge1xuICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGYuYXBwbHkobnVsbCxhcmdzLnNsaWNlKDAsbikpLGFyZ3Muc2xpY2UobikpO1xuICB9XG4gIGVsc2Uge1xuICAgIHJldHVybiBmdW5jdGlvbiAoKXtcbiAgICAgIHZhciBleHRyYV9hcmdzID0gKGFyZ3VtZW50cy5sZW5ndGggPT0gMCk/MTphcmd1bWVudHMubGVuZ3RoO1xuICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3MubGVuZ3RoK2V4dHJhX2FyZ3MpO1xuICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrICkgbmFyZ3NbYXJncy5sZW5ndGgraV0gPSBhcmd1bWVudHNbaV07XG4gICAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihmLCBuYXJncylcbiAgICB9XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9uYW1lZF92YWx1ZXNcbnZhciBjYW1sX25hbWVkX3ZhbHVlcyA9IHt9O1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlIChjb25zdCxjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlKG5tLHYpIHtcbiAgY2FtbF9uYW1lZF92YWx1ZXNbY2FtbF9qc2J5dGVzX29mX3N0cmluZyhubSldID0gdjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmFtZWRfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWVzXG5mdW5jdGlvbiBjYW1sX25hbWVkX3ZhbHVlKG5tKSB7XG4gIHJldHVybiBjYW1sX25hbWVkX3ZhbHVlc1tubV1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9nbG9iYWxfZGF0YVxudmFyIGNhbWxfZ2xvYmFsX2RhdGEgPSBbMF07XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVnaXN0ZXJfZ2xvYmFsIChjb25zdCwgc2hhbGxvdywgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JlZ2lzdGVyX2dsb2JhbCAobiwgdiwgbmFtZV9vcHQpIHtcbiAgaWYobmFtZV9vcHQgJiYgZ2xvYmFsVGhpcy50b3BsZXZlbFJlbG9jKVxuICAgIG4gPSBnbG9iYWxUaGlzLnRvcGxldmVsUmVsb2MobmFtZV9vcHQpO1xuICBjYW1sX2dsb2JhbF9kYXRhW24gKyAxXSA9IHY7XG4gIGlmKG5hbWVfb3B0KSBjYW1sX2dsb2JhbF9kYXRhW25hbWVfb3B0XSA9IHY7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2dsb2JhbF9kYXRhIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfZ2V0X2dsb2JhbF9kYXRhICgpIHsgcmV0dXJuIGNhbWxfZ2xvYmFsX2RhdGE7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pc19wcmludGFibGUgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9pc19wcmludGFibGUoYykgeyByZXR1cm4gKyhjID4gMzEgJiYgYyA8IDEyNyk7IH1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gRm9ybWF0XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2VfZm9ybWF0XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfcGFyc2VfZm9ybWF0IChmbXQpIHtcbiAgZm10ID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhmbXQpO1xuICB2YXIgbGVuID0gZm10Lmxlbmd0aDtcbiAgaWYgKGxlbiA+IDMxKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJmb3JtYXRfaW50OiBmb3JtYXQgdG9vIGxvbmdcIik7XG4gIHZhciBmID1cbiAgICAgIHsganVzdGlmeTonKycsIHNpZ25zdHlsZTonLScsIGZpbGxlcjonICcsIGFsdGVybmF0ZTpmYWxzZSxcbiAgICAgICAgYmFzZTowLCBzaWduZWRjb252OmZhbHNlLCB3aWR0aDowLCB1cHBlcmNhc2U6ZmFsc2UsXG4gICAgICAgIHNpZ246MSwgcHJlYzotMSwgY29udjonZicgfTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciBjID0gZm10LmNoYXJBdChpKTtcbiAgICBzd2l0Y2ggKGMpIHtcbiAgICBjYXNlICctJzpcbiAgICAgIGYuanVzdGlmeSA9ICctJzsgYnJlYWs7XG4gICAgY2FzZSAnKyc6IGNhc2UgJyAnOlxuICAgICAgZi5zaWduc3R5bGUgPSBjOyBicmVhaztcbiAgICBjYXNlICcwJzpcbiAgICAgIGYuZmlsbGVyID0gJzAnOyBicmVhaztcbiAgICBjYXNlICcjJzpcbiAgICAgIGYuYWx0ZXJuYXRlID0gdHJ1ZTsgYnJlYWs7XG4gICAgY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzogY2FzZSAnNCc6IGNhc2UgJzUnOlxuICAgIGNhc2UgJzYnOiBjYXNlICc3JzogY2FzZSAnOCc6IGNhc2UgJzknOlxuICAgICAgZi53aWR0aCA9IDA7XG4gICAgICB3aGlsZSAoYz1mbXQuY2hhckNvZGVBdChpKSAtIDQ4LCBjID49IDAgJiYgYyA8PSA5KSB7XG4gICAgICAgIGYud2lkdGggPSBmLndpZHRoICogMTAgKyBjOyBpKytcbiAgICAgIH1cbiAgICAgIGktLTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJy4nOlxuICAgICAgZi5wcmVjID0gMDtcbiAgICAgIGkrKztcbiAgICAgIHdoaWxlIChjPWZtdC5jaGFyQ29kZUF0KGkpIC0gNDgsIGMgPj0gMCAmJiBjIDw9IDkpIHtcbiAgICAgICAgZi5wcmVjID0gZi5wcmVjICogMTAgKyBjOyBpKytcbiAgICAgIH1cbiAgICAgIGktLTtcbiAgICBjYXNlICdkJzogY2FzZSAnaSc6XG4gICAgICBmLnNpZ25lZGNvbnYgPSB0cnVlOyAvKiBmYWxsdGhyb3VnaCAqL1xuICAgIGNhc2UgJ3UnOlxuICAgICAgZi5iYXNlID0gMTA7IGJyZWFrO1xuICAgIGNhc2UgJ3gnOlxuICAgICAgZi5iYXNlID0gMTY7IGJyZWFrO1xuICAgIGNhc2UgJ1gnOlxuICAgICAgZi5iYXNlID0gMTY7IGYudXBwZXJjYXNlID0gdHJ1ZTsgYnJlYWs7XG4gICAgY2FzZSAnbyc6XG4gICAgICBmLmJhc2UgPSA4OyBicmVhaztcbiAgICBjYXNlICdlJzogY2FzZSAnZic6IGNhc2UgJ2cnOlxuICAgICAgZi5zaWduZWRjb252ID0gdHJ1ZTsgZi5jb252ID0gYzsgYnJlYWs7XG4gICAgY2FzZSAnRSc6IGNhc2UgJ0YnOiBjYXNlICdHJzpcbiAgICAgIGYuc2lnbmVkY29udiA9IHRydWU7IGYudXBwZXJjYXNlID0gdHJ1ZTtcbiAgICAgIGYuY29udiA9IGMudG9Mb3dlckNhc2UgKCk7IGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maW5pc2hfZm9ybWF0dGluZ1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9maW5pc2hfZm9ybWF0dGluZyhmLCByYXdidWZmZXIpIHtcbiAgaWYgKGYudXBwZXJjYXNlKSByYXdidWZmZXIgPSByYXdidWZmZXIudG9VcHBlckNhc2UoKTtcbiAgdmFyIGxlbiA9IHJhd2J1ZmZlci5sZW5ndGg7XG4gIC8qIEFkanVzdCBsZW4gdG8gcmVmbGVjdCBhZGRpdGlvbmFsIGNoYXJzIChzaWduLCBldGMpICovXG4gIGlmIChmLnNpZ25lZGNvbnYgJiYgKGYuc2lnbiA8IDAgfHwgZi5zaWduc3R5bGUgIT0gJy0nKSkgbGVuKys7XG4gIGlmIChmLmFsdGVybmF0ZSkge1xuICAgIGlmIChmLmJhc2UgPT0gOCkgbGVuICs9IDE7XG4gICAgaWYgKGYuYmFzZSA9PSAxNikgbGVuICs9IDI7XG4gIH1cbiAgLyogRG8gdGhlIGZvcm1hdHRpbmcgKi9cbiAgdmFyIGJ1ZmZlciA9IFwiXCI7XG4gIGlmIChmLmp1c3RpZnkgPT0gJysnICYmIGYuZmlsbGVyID09ICcgJylcbiAgICBmb3IgKHZhciBpID0gbGVuOyBpIDwgZi53aWR0aDsgaSsrKSBidWZmZXIgKz0gJyAnO1xuICBpZiAoZi5zaWduZWRjb252KSB7XG4gICAgaWYgKGYuc2lnbiA8IDApIGJ1ZmZlciArPSAnLSc7XG4gICAgZWxzZSBpZiAoZi5zaWduc3R5bGUgIT0gJy0nKSBidWZmZXIgKz0gZi5zaWduc3R5bGU7XG4gIH1cbiAgaWYgKGYuYWx0ZXJuYXRlICYmIGYuYmFzZSA9PSA4KSBidWZmZXIgKz0gJzAnO1xuICBpZiAoZi5hbHRlcm5hdGUgJiYgZi5iYXNlID09IDE2KSBidWZmZXIgKz0gXCIweFwiO1xuICBpZiAoZi5qdXN0aWZ5ID09ICcrJyAmJiBmLmZpbGxlciA9PSAnMCcpXG4gICAgZm9yICh2YXIgaSA9IGxlbjsgaSA8IGYud2lkdGg7IGkrKykgYnVmZmVyICs9ICcwJztcbiAgYnVmZmVyICs9IHJhd2J1ZmZlcjtcbiAgaWYgKGYuanVzdGlmeSA9PSAnLScpXG4gICAgZm9yICh2YXIgaSA9IGxlbjsgaSA8IGYud2lkdGg7IGkrKykgYnVmZmVyICs9ICcgJztcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoYnVmZmVyKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBqc29vX2Zsb29yX2xvZzJcbnZhciBsb2cyX29rID0gTWF0aC5sb2cyICYmIE1hdGgubG9nMigxLjEyMzU1ODIwOTI4ODk0NzRFKzMwNykgPT0gMTAyMFxuZnVuY3Rpb24ganNvb19mbG9vcl9sb2cyKHgpIHtcbiAgaWYobG9nMl9vaykgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5sb2cyKHgpKVxuICB2YXIgaSA9IDA7XG4gIGlmICh4ID09IDApIHJldHVybiAtSW5maW5pdHk7XG4gIGlmKHg+PTEpIHt3aGlsZSAoeD49Mikge3gvPTI7IGkrK30gfVxuICBlbHNlIHt3aGlsZSAoeCA8IDEpIHt4Kj0yOyBpLS19IH07XG4gIHJldHVybiBpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29fZmxvb3JfbG9nMiwgY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGlcbmZ1bmN0aW9uIGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCAoeCkge1xuICBpZiAoIWlzRmluaXRlKHgpKSB7XG4gICAgaWYgKGlzTmFOKHgpKVxuICAgICAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKDEsIDAsIDB4N2ZmMCk7XG4gICAgaWYgKHggPiAwKVxuICAgICAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKDAsIDAsIDB4N2ZmMClcbiAgICBlbHNlXG4gICAgICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkoMCwgMCwgMHhmZmYwKVxuICB9XG4gIHZhciBzaWduID0gKHg9PTAgJiYgMS94ID09IC1JbmZpbml0eSk/MHg4MDAwOih4Pj0wKT8wOjB4ODAwMDtcbiAgaWYgKHNpZ24pIHggPSAteDtcbiAgLy8gSW50NjQuYml0c19vZl9mbG9hdCAxLjEyMzU1ODIwOTI4ODk0NzRFKzMwNyA9IDB4N2ZiMDAwMDAwMDAwMDAwMExcbiAgLy8gdXNpbmcgTWF0aC5MT0cyRSpNYXRoLmxvZyh4KSBpbiBwbGFjZSBvZiBNYXRoLmxvZzIgcmVzdWx0IGluIHByZWNpc2lvbiBsb3N0XG4gIHZhciBleHAgPSBqc29vX2Zsb29yX2xvZzIoeCkgKyAxMDIzO1xuICBpZiAoZXhwIDw9IDApIHtcbiAgICBleHAgPSAwO1xuICAgIHggLz0gTWF0aC5wb3coMiwtMTAyNik7XG4gIH0gZWxzZSB7XG4gICAgeCAvPSBNYXRoLnBvdygyLGV4cC0xMDI3KTtcbiAgICBpZiAoeCA8IDE2KSB7XG4gICAgICB4ICo9IDI7IGV4cCAtPTE7IH1cbiAgICBpZiAoZXhwID09IDApIHtcbiAgICAgIHggLz0gMjsgfVxuICB9XG4gIHZhciBrID0gTWF0aC5wb3coMiwyNCk7XG4gIHZhciByMyA9IHh8MDtcbiAgeCA9ICh4IC0gcjMpICogaztcbiAgdmFyIHIyID0geHwwO1xuICB4ID0gKHggLSByMikgKiBrO1xuICB2YXIgcjEgPSB4fDA7XG4gIHIzID0gKHIzICYweGYpIHwgc2lnbiB8IGV4cCA8PCA0O1xuICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkocjEsIHIyLCByMyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczoganNvb19mbG9vcl9sb2cyXG5mdW5jdGlvbiBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQgKHgpIHtcbiAgdmFyIGZsb2F0MzJhID0gbmV3IGdsb2JhbFRoaXMuRmxvYXQzMkFycmF5KDEpO1xuICBmbG9hdDMyYVswXSA9IHg7XG4gIHZhciBpbnQzMmEgPSBuZXcgZ2xvYmFsVGhpcy5JbnQzMkFycmF5KGZsb2F0MzJhLmJ1ZmZlcik7XG4gIHJldHVybiBpbnQzMmFbMF0gfCAwO1xufVxuXG4vL0ZQIGxpdGVyYWxzIGNhbiBiZSB3cml0dGVuIHVzaW5nIHRoZSBoZXhhZGVjaW1hbFxuLy9ub3RhdGlvbiAweDxtYW50aXNzYSBpbiBoZXg+cDxleHBvbmVudD4gZnJvbSBJU08gQzk5LlxuLy9odHRwczovL2dpdGh1Yi5jb20vZGFua29nYWkvanMtaGV4ZmxvYXQvYmxvYi9tYXN0ZXIvaGV4ZmxvYXQuanNcbi8vUHJvdmlkZXM6IGNhbWxfaGV4c3RyaW5nX29mX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZywgY2FtbF9zdHJfcmVwZWF0XG5mdW5jdGlvbiBjYW1sX2hleHN0cmluZ19vZl9mbG9hdCAoeCwgcHJlYywgc3R5bGUpIHtcbiAgaWYgKCFpc0Zpbml0ZSh4KSkge1xuICAgIGlmIChpc05hTih4KSkgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKFwibmFuXCIpO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyAoKHggPiAwKT9cImluZmluaXR5XCI6XCItaW5maW5pdHlcIik7XG4gIH1cbiAgdmFyIHNpZ24gPSAoeD09MCAmJiAxL3ggPT0gLUluZmluaXR5KT8xOih4Pj0wKT8wOjE7XG4gIGlmKHNpZ24pIHggPSAteDtcbiAgdmFyIGV4cCA9IDA7XG4gIGlmICh4ID09IDApIHsgfVxuICBlbHNlIGlmICh4IDwgMSkge1xuICAgIHdoaWxlICh4IDwgMSAmJiBleHAgPiAtMTAyMikgIHsgeCAqPSAyOyBleHAtLSB9XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHggPj0gMikgeyB4IC89IDI7IGV4cCsrIH1cbiAgfVxuICB2YXIgZXhwX3NpZ24gPSBleHAgPCAwID8gJycgOiAnKyc7XG4gIHZhciBzaWduX3N0ciA9ICcnO1xuICBpZiAoc2lnbikgc2lnbl9zdHIgPSAnLSdcbiAgZWxzZSB7XG4gICAgc3dpdGNoKHN0eWxlKXtcbiAgICBjYXNlIDQzIC8qICcrJyAqLzogc2lnbl9zdHIgPSAnKyc7IGJyZWFrO1xuICAgIGNhc2UgMzIgLyogJyAnICovOiBzaWduX3N0ciA9ICcgJzsgYnJlYWs7XG4gICAgZGVmYXVsdDogYnJlYWs7XG4gICAgfVxuICB9XG4gIGlmIChwcmVjID49IDAgJiYgcHJlYyA8IDEzKSB7XG4gICAgLyogSWYgYSBwcmVjaXNpb24gaXMgZ2l2ZW4sIGFuZCBpcyBzbWFsbCwgcm91bmQgbWFudGlzc2EgYWNjb3JkaW5nbHkgKi9cbiAgICB2YXIgY3N0ID0gTWF0aC5wb3coMixwcmVjICogNCk7XG4gICAgeCA9IE1hdGgucm91bmQoeCAqIGNzdCkgLyBjc3Q7XG4gIH1cbiAgdmFyIHhfc3RyID0geC50b1N0cmluZygxNik7XG4gIGlmKHByZWMgPj0gMCl7XG4gICAgdmFyIGlkeCA9IHhfc3RyLmluZGV4T2YoJy4nKTtcbiAgICBpZihpZHg8MCkge1xuICAgICAgeF9zdHIgKz0gJy4nICsgY2FtbF9zdHJfcmVwZWF0KHByZWMsICcwJyk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdmFyIHNpemUgPSBpZHgrMStwcmVjO1xuICAgICAgaWYoeF9zdHIubGVuZ3RoIDwgc2l6ZSlcbiAgICAgICAgeF9zdHIgKz0gY2FtbF9zdHJfcmVwZWF0KHNpemUgLSB4X3N0ci5sZW5ndGgsICcwJyk7XG4gICAgICBlbHNlXG4gICAgICAgIHhfc3RyID0geF9zdHIuc3Vic3RyKDAsc2l6ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyAoc2lnbl9zdHIgKyAnMHgnICsgeF9zdHIgKyAncCcgKyBleHBfc2lnbiArIGV4cC50b1N0cmluZygxMCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyAoeCkge1xuICB2YXIgbG8gPSB4LmxvO1xuICB2YXIgbWkgPSB4Lm1pO1xuICB2YXIgaGkgPSB4LmhpO1xuICB2YXIgZXhwID0gKGhpICYgMHg3ZmZmKSA+PiA0O1xuICBpZiAoZXhwID09IDIwNDcpIHtcbiAgICBpZiAoKGxvfG1pfChoaSYweGYpKSA9PSAwKVxuICAgICAgcmV0dXJuIChoaSAmIDB4ODAwMCk/KC1JbmZpbml0eSk6SW5maW5pdHk7XG4gICAgZWxzZVxuICAgICAgcmV0dXJuIE5hTjtcbiAgfVxuICB2YXIgayA9IE1hdGgucG93KDIsLTI0KTtcbiAgdmFyIHJlcyA9IChsbyprK21pKSprKyhoaSYweGYpO1xuICBpZiAoZXhwID4gMCkge1xuICAgIHJlcyArPSAxNjtcbiAgICByZXMgKj0gTWF0aC5wb3coMixleHAtMTAyNyk7XG4gIH0gZWxzZVxuICAgIHJlcyAqPSBNYXRoLnBvdygyLC0xMDI2KTtcbiAgaWYgKGhpICYgMHg4MDAwKSByZXMgPSAtIHJlcztcbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9uZXh0YWZ0ZXJfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cywgY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0LCBjYW1sX2ludDY0X2FkZCwgY2FtbF9pbnQ2NF9zdWIsY2FtbF9pbnQ2NF9vZl9pbnQzMlxuZnVuY3Rpb24gY2FtbF9uZXh0YWZ0ZXJfZmxvYXQgKHgseSkge1xuICBpZihpc05hTih4KSB8fCBpc05hTih5KSkgcmV0dXJuIE5hTjtcbiAgaWYoeD09eSkgcmV0dXJuIHk7XG4gIGlmKHg9PTApe1xuICAgIGlmKHkgPCAwKVxuICAgICAgcmV0dXJuIC1NYXRoLnBvdygyLCAtMTA3NClcbiAgICBlbHNlXG4gICAgICByZXR1cm4gTWF0aC5wb3coMiwgLTEwNzQpXG4gIH1cbiAgdmFyIGJpdHMgPSBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQoeCk7XG4gIHZhciBvbmUgPSBjYW1sX2ludDY0X29mX2ludDMyKDEpO1xuICBpZiAoKHg8eSkgPT0gKHg+MCkpXG4gICAgYml0cyA9IGNhbWxfaW50NjRfYWRkKGJpdHMsIG9uZSlcbiAgZWxzZVxuICAgIGJpdHMgPSBjYW1sX2ludDY0X3N1YihiaXRzLCBvbmUpXG4gIHJldHVybiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoYml0cyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdHJ1bmNfZmxvYXRcbmZ1bmN0aW9uIGNhbWxfdHJ1bmNfZmxvYXQoeCl7XG4gIHJldHVybiBNYXRoLnRydW5jKHgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyAoeCkge1xuICB2YXIgaW50MzJhID0gbmV3IGdsb2JhbFRoaXMuSW50MzJBcnJheSgxKTtcbiAgaW50MzJhWzBdID0geDtcbiAgdmFyIGZsb2F0MzJhID0gbmV3IGdsb2JhbFRoaXMuRmxvYXQzMkFycmF5KGludDMyYS5idWZmZXIpO1xuICByZXR1cm4gZmxvYXQzMmFbMF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2xhc3NpZnlfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY2xhc3NpZnlfZmxvYXQgKHgpIHtcbiAgaWYgKGlzRmluaXRlICh4KSkge1xuICAgIGlmIChNYXRoLmFicyh4KSA+PSAyLjIyNTA3Mzg1ODUwNzIwMTRlLTMwOCkgcmV0dXJuIDA7XG4gICAgaWYgKHggIT0gMCkgcmV0dXJuIDE7XG4gICAgcmV0dXJuIDI7XG4gIH1cbiAgcmV0dXJuIGlzTmFOKHgpPzQ6Mztcbn1cbi8vUHJvdmlkZXM6IGNhbWxfbW9kZl9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9tb2RmX2Zsb2F0ICh4KSB7XG4gIGlmIChpc0Zpbml0ZSAoeCkpIHtcbiAgICB2YXIgbmVnID0gKDEveCkgPCAwO1xuICAgIHggPSBNYXRoLmFicyh4KTtcbiAgICB2YXIgaSA9IE1hdGguZmxvb3IgKHgpO1xuICAgIHZhciBmID0geCAtIGk7XG4gICAgaWYgKG5lZykgeyBpID0gLWk7IGYgPSAtZjsgfVxuICAgIHJldHVybiBbMCwgZiwgaV07XG4gIH1cbiAgaWYgKGlzTmFOICh4KSkgcmV0dXJuIFswLCBOYU4sIE5hTl07XG4gIHJldHVybiBbMCwgMS94LCB4XTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfbGRleHBfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbGRleHBfZmxvYXQgKHgsZXhwKSB7XG4gIGV4cCB8PSAwO1xuICBpZiAoZXhwID4gMTAyMykge1xuICAgIGV4cCAtPSAxMDIzO1xuICAgIHggKj0gTWF0aC5wb3coMiwgMTAyMyk7XG4gICAgaWYgKGV4cCA+IDEwMjMpIHsgIC8vIGluIGNhc2UgeCBpcyBzdWJub3JtYWxcbiAgICAgIGV4cCAtPSAxMDIzO1xuICAgICAgeCAqPSBNYXRoLnBvdygyLCAxMDIzKTtcbiAgICB9XG4gIH1cbiAgaWYgKGV4cCA8IC0xMDIzKSB7XG4gICAgZXhwICs9IDEwMjM7XG4gICAgeCAqPSBNYXRoLnBvdygyLCAtMTAyMyk7XG4gIH1cbiAgeCAqPSBNYXRoLnBvdygyLCBleHApO1xuICByZXR1cm4geDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZnJleHBfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29fZmxvb3JfbG9nMlxuZnVuY3Rpb24gY2FtbF9mcmV4cF9mbG9hdCAoeCkge1xuICBpZiAoKHggPT0gMCkgfHwgIWlzRmluaXRlKHgpKSByZXR1cm4gWzAsIHgsIDBdO1xuICB2YXIgbmVnID0geCA8IDA7XG4gIGlmIChuZWcpIHggPSAtIHg7XG4gIHZhciBleHAgPSBNYXRoLm1heCgtMTAyMywganNvb19mbG9vcl9sb2cyKHgpICsgMSk7XG4gIHggKj0gTWF0aC5wb3coMiwtZXhwKTtcbiAgd2hpbGUgKHggPCAwLjUpIHtcbiAgICB4ICo9IDI7XG4gICAgZXhwLS07XG4gIH1cbiAgd2hpbGUgKHggPj0gMSkge1xuICAgIHggKj0gMC41O1xuICAgIGV4cCsrO1xuICB9XG4gIGlmIChuZWcpIHggPSAtIHg7XG4gIHJldHVybiBbMCwgeCwgZXhwXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdF9jb21wYXJlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2Zsb2F0X2NvbXBhcmUgKHgsIHkpIHtcbiAgaWYgKHggPT09IHkpIHJldHVybiAwO1xuICBpZiAoeCA8IHkpIHJldHVybiAtMTtcbiAgaWYgKHggPiB5KSByZXR1cm4gMTtcbiAgaWYgKHggPT09IHgpIHJldHVybiAxO1xuICBpZiAoeSA9PT0geSkgcmV0dXJuIC0xO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb3B5c2lnbl9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9jb3B5c2lnbl9mbG9hdCAoeCwgeSkge1xuICBpZiAoeSA9PSAwKSB5ID0gMSAvIHk7XG4gIHggPSBNYXRoLmFicyh4KTtcbiAgcmV0dXJuICh5IDwgMCk/KC14KTp4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NpZ25iaXRfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc2lnbmJpdF9mbG9hdCh4KSB7XG4gIGlmICh4ID09IDApIHggPSAxIC8geDtcbiAgcmV0dXJuICh4IDwgMCk/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2V4cG0xX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2V4cG0xX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmV4cG0xKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2V4cDJfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZXhwMl9mbG9hdCh4KSB7IHJldHVybiBNYXRoLnBvdygyLCB4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9sb2cxcF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9sb2cxcF9mbG9hdCh4KSB7IHJldHVybiBNYXRoLmxvZzFwKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xvZzJfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbG9nMl9mbG9hdCh4KSB7IHJldHVybiBNYXRoLmxvZzIoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfaHlwb3RfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaHlwb3RfZmxvYXQgKHgsIHkpIHsgcmV0dXJuIE1hdGguaHlwb3QoeCwgeSk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbG9nMTBfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbG9nMTBfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGgubG9nMTAoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfY29zaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9jb3NoX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmNvc2goeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfYWNvc2hfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfYWNvc2hfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguYWNvc2goeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfc2luaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9zaW5oX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLnNpbmgoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfYXNpbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfYXNpbmhfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguYXNpbmgoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfdGFuaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF90YW5oX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLnRhbmgoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfYXRhbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfYXRhbmhfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguYXRhbmgoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfcm91bmRfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfcm91bmRfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGgucm91bmQoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfY2JydF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9jYnJ0X2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmNicnQoeCk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9lcmZfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZXJmX2Zsb2F0KHgpIHtcbiAgdmFyIGExID0gMC4yNTQ4Mjk1OTI7XG4gIHZhciBhMiA9IC0wLjI4NDQ5NjczNjtcbiAgdmFyIGEzID0gMS40MjE0MTM3NDE7XG4gIHZhciBhNCA9IC0xLjQ1MzE1MjAyNztcbiAgdmFyIGE1ID0gMS4wNjE0MDU0Mjk7XG4gIHZhciBwID0gMC4zMjc1OTExO1xuXG4gIHZhciBzaWduID0gMTtcbiAgaWYgKHggPCAwKSB7XG4gICAgc2lnbiA9IC0xO1xuICB9XG4gIHggPSBNYXRoLmFicyh4KTtcbiAgdmFyIHQgPSAxLjAgLyAoMS4wICsgcCAqIHgpO1xuICB2YXIgeSA9IDEuMCAtICgoKChhNSAqIHQgKyBhNCkgKiB0ICsgYTMpICogdCArIGEyKSAqIHQgKyBhMSkgKiB0ICogTWF0aC5leHAoLXggKiB4KTtcblxuICByZXR1cm4gc2lnbiAqIHk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXJmY19mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9lcmZfZmxvYXRcbmZ1bmN0aW9uIGNhbWxfZXJmY19mbG9hdCh4KSB7XG4gIHJldHVybiAxIC0gY2FtbF9lcmZfZmxvYXQoeCk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9mbWFfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZm1hX2Zsb2F0KHgsIHksIHopIHtcbiAgdmFyIFNQTElUID0gTWF0aC5wb3coMiwgMjcpICsgMTtcbiAgdmFyIE1JTl9WQUxVRSA9IE1hdGgucG93KDIsIC0xMDIyKTtcbiAgdmFyIEVQU0lMT04gPSBNYXRoLnBvdygyLCAtNTIpO1xuICB2YXIgQyA9IDQxNjtcbiAgdmFyIEEgPSBNYXRoLnBvdygyLCArQyk7XG4gIHZhciBCID0gTWF0aC5wb3coMiwgLUMpO1xuXG4gIGZ1bmN0aW9uIG11bHRpcGx5IChhLCBiKSB7XG4gICAgdmFyIGF0ID0gU1BMSVQgKiBhO1xuICAgIHZhciBhaGkgPSBhdCAtIChhdCAtIGEpO1xuICAgIHZhciBhbG8gPSBhIC0gYWhpO1xuICAgIHZhciBidCA9IFNQTElUICogYjtcbiAgICB2YXIgYmhpID0gYnQgLSAoYnQgLSBiKTtcbiAgICB2YXIgYmxvID0gYiAtIGJoaTtcbiAgICB2YXIgcCA9IGEgKiBiO1xuICAgIHZhciBlID0gKChhaGkgKiBiaGkgLSBwKSArIGFoaSAqIGJsbyArIGFsbyAqIGJoaSkgKyBhbG8gKiBibG87XG4gICAgcmV0dXJuIHtcbiAgICAgIHA6IHAsXG4gICAgICBlOiBlXG4gICAgfTtcbiAgfTtcblxuICBmdW5jdGlvbiBhZGQgKGEsIGIpIHtcbiAgICB2YXIgcyA9IGEgKyBiO1xuICAgIHZhciB2ID0gcyAtIGE7XG4gICAgdmFyIGUgPSAoYSAtIChzIC0gdikpICsgKGIgLSB2KTtcbiAgICByZXR1cm4ge1xuICAgICAgczogcyxcbiAgICAgIGU6IGVcbiAgICB9O1xuICB9O1xuXG4gIGZ1bmN0aW9uIGFkanVzdCAoeCwgeSkge1xuICAgIHJldHVybiB4ICE9PSAwICYmIHkgIT09IDAgJiYgU1BMSVQgKiB4IC0gKFNQTElUICogeCAtIHgpID09PSB4ID8geCAqICgxICsgKHggPCAwID8gLTEgOiArMSkgKiAoeSA8IDAgPyAtMSA6ICsxKSAqIEVQU0lMT04pIDogeDtcbiAgfTtcblxuICBpZiAoeCA9PT0gMCB8fCB4ICE9PSB4IHx8IHggPT09ICsxIC8gMCB8fCB4ID09PSAtMSAvIDAgfHxcbiAgICAgIHkgPT09IDAgfHwgeSAhPT0geSB8fCB5ID09PSArMSAvIDAgfHwgeSA9PT0gLTEgLyAwKSB7XG4gICAgcmV0dXJuIHggKiB5ICsgejtcbiAgfVxuICBpZiAoeiA9PT0gMCkge1xuICAgIHJldHVybiB4ICogeTtcbiAgfVxuICBpZiAoeiAhPT0geiB8fCB6ID09PSArMSAvIDAgfHwgeiA9PT0gLTEgLyAwKSB7XG4gICAgcmV0dXJuIHo7XG4gIH1cblxuICB2YXIgc2NhbGUgPSAxO1xuICB3aGlsZSAoTWF0aC5hYnMoeCkgPiBBKSB7XG4gICAgc2NhbGUgKj0gQTtcbiAgICB4ICo9IEI7XG4gIH1cbiAgd2hpbGUgKE1hdGguYWJzKHkpID4gQSkge1xuICAgIHNjYWxlICo9IEE7XG4gICAgeSAqPSBCO1xuICB9XG4gIGlmIChzY2FsZSA9PT0gMSAvIDApIHtcbiAgICByZXR1cm4geCAqIHkgKiBzY2FsZTtcbiAgfVxuICB3aGlsZSAoTWF0aC5hYnMoeCkgPCBCKSB7XG4gICAgc2NhbGUgKj0gQjtcbiAgICB4ICo9IEE7XG4gIH1cbiAgd2hpbGUgKE1hdGguYWJzKHkpIDwgQikge1xuICAgIHNjYWxlICo9IEI7XG4gICAgeSAqPSBBO1xuICB9XG4gIGlmIChzY2FsZSA9PT0gMCkge1xuICAgIHJldHVybiB6O1xuICB9XG5cbiAgdmFyIHhzID0geDtcbiAgdmFyIHlzID0geTtcbiAgdmFyIHpzID0geiAvIHNjYWxlO1xuXG4gIGlmIChNYXRoLmFicyh6cykgPiBNYXRoLmFicyh4cyAqIHlzKSAqIDQgLyBFUFNJTE9OKSB7XG4gICAgcmV0dXJuIHo7XG4gIH1cbiAgaWYgKE1hdGguYWJzKHpzKSA8IE1hdGguYWJzKHhzICogeXMpICogRVBTSUxPTiAvIDQgKiBFUFNJTE9OIC8gNCkge1xuICAgIHpzID0gKHogPCAwID8gLTEgOiArMSkgKiBNSU5fVkFMVUU7XG4gIH1cblxuICB2YXIgeHkgPSBtdWx0aXBseSh4cywgeXMpO1xuICB2YXIgcyA9IGFkZCh4eS5wLCB6cyk7XG4gIHZhciB1ID0gYWRkKHh5LmUsIHMuZSk7XG4gIHZhciBpID0gYWRkKHMucywgdS5zKTtcblxuICB2YXIgZiA9IGkucyArIGFkanVzdChpLmUsIHUuZSk7XG4gIGlmIChmID09PSAwKSB7XG4gICAgcmV0dXJuIGY7XG4gIH1cblxuICB2YXIgZnMgPSBmICogc2NhbGU7XG4gIGlmIChNYXRoLmFicyhmcykgPiBNSU5fVkFMVUUpIHtcbiAgICByZXR1cm4gZnM7XG4gIH1cblxuICAvLyBJdCBpcyBwb3NzaWJsZSB0aGF0IHRoZXJlIHdhcyBleHRyYSByb3VuZGluZyBmb3IgYSBkZW5vcm1hbGl6ZWQgdmFsdWUuXG4gIHJldHVybiBmcyArIGFkanVzdChmIC0gZnMgLyBzY2FsZSwgaS5lKSAqIHNjYWxlO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zvcm1hdF9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9mb3JtYXQsIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmdcbmZ1bmN0aW9uIGNhbWxfZm9ybWF0X2Zsb2F0IChmbXQsIHgpIHtcbiAgZnVuY3Rpb24gdG9GaXhlZCh4LGRwKSB7XG4gICAgaWYgKE1hdGguYWJzKHgpIDwgMS4wKSB7XG4gICAgICByZXR1cm4geC50b0ZpeGVkKGRwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGUgPSBwYXJzZUludCh4LnRvU3RyaW5nKCkuc3BsaXQoJysnKVsxXSk7XG4gICAgICBpZiAoZSA+IDIwKSB7XG4gICAgICAgIGUgLT0gMjA7XG4gICAgICAgIHggLz0gTWF0aC5wb3coMTAsZSk7XG4gICAgICAgIHggKz0gKG5ldyBBcnJheShlKzEpKS5qb2luKCcwJyk7XG4gICAgICAgIGlmKGRwID4gMCkge1xuICAgICAgICAgIHggPSB4ICsgJy4nICsgKG5ldyBBcnJheShkcCsxKSkuam9pbignMCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB4O1xuICAgICAgfVxuICAgICAgZWxzZSByZXR1cm4geC50b0ZpeGVkKGRwKVxuICAgIH1cbiAgfVxuICB2YXIgcywgZiA9IGNhbWxfcGFyc2VfZm9ybWF0KGZtdCk7XG4gIHZhciBwcmVjID0gKGYucHJlYyA8IDApPzY6Zi5wcmVjO1xuICBpZiAoeCA8IDAgfHwgKHggPT0gMCAmJiAxL3ggPT0gLUluZmluaXR5KSkgeyBmLnNpZ24gPSAtMTsgeCA9IC14OyB9XG4gIGlmIChpc05hTih4KSkgeyBzID0gXCJuYW5cIjsgZi5maWxsZXIgPSAnICc7IH1cbiAgZWxzZSBpZiAoIWlzRmluaXRlKHgpKSB7IHMgPSBcImluZlwiOyBmLmZpbGxlciA9ICcgJzsgfVxuICBlbHNlXG4gICAgc3dpdGNoIChmLmNvbnYpIHtcbiAgICBjYXNlICdlJzpcbiAgICAgIHZhciBzID0geC50b0V4cG9uZW50aWFsKHByZWMpO1xuICAgICAgLy8gZXhwb25lbnQgc2hvdWxkIGJlIGF0IGxlYXN0IHR3byBkaWdpdHNcbiAgICAgIHZhciBpID0gcy5sZW5ndGg7XG4gICAgICBpZiAocy5jaGFyQXQoaSAtIDMpID09ICdlJylcbiAgICAgICAgcyA9IHMuc2xpY2UgKDAsIGkgLSAxKSArICcwJyArIHMuc2xpY2UgKGkgLSAxKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2YnOlxuICAgICAgcyA9IHRvRml4ZWQoeCwgcHJlYyk7IGJyZWFrO1xuICAgIGNhc2UgJ2cnOlxuICAgICAgcHJlYyA9IHByZWM/cHJlYzoxO1xuICAgICAgcyA9IHgudG9FeHBvbmVudGlhbChwcmVjIC0gMSk7XG4gICAgICB2YXIgaiA9IHMuaW5kZXhPZignZScpO1xuICAgICAgdmFyIGV4cCA9ICtzLnNsaWNlKGogKyAxKTtcbiAgICAgIGlmIChleHAgPCAtNCB8fCB4ID49IDFlMjEgfHwgeC50b0ZpeGVkKDApLmxlbmd0aCA+IHByZWMpIHtcbiAgICAgICAgLy8gcmVtb3ZlIHRyYWlsaW5nIHplcm9lc1xuICAgICAgICB2YXIgaSA9IGogLSAxOyB3aGlsZSAocy5jaGFyQXQoaSkgPT0gJzAnKSBpLS07XG4gICAgICAgIGlmIChzLmNoYXJBdChpKSA9PSAnLicpIGktLTtcbiAgICAgICAgcyA9IHMuc2xpY2UoMCwgaSArIDEpICsgcy5zbGljZShqKTtcbiAgICAgICAgaSA9IHMubGVuZ3RoO1xuICAgICAgICBpZiAocy5jaGFyQXQoaSAtIDMpID09ICdlJylcbiAgICAgICAgICBzID0gcy5zbGljZSAoMCwgaSAtIDEpICsgJzAnICsgcy5zbGljZSAoaSAtIDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBwID0gcHJlYztcbiAgICAgICAgaWYgKGV4cCA8IDApIHsgcCAtPSBleHAgKyAxOyBzID0geC50b0ZpeGVkKHApOyB9XG4gICAgICAgIGVsc2Ugd2hpbGUgKHMgPSB4LnRvRml4ZWQocCksIHMubGVuZ3RoID4gcHJlYyArIDEpIHAtLTtcbiAgICAgICAgaWYgKHApIHtcbiAgICAgICAgICAvLyByZW1vdmUgdHJhaWxpbmcgemVyb2VzXG4gICAgICAgICAgdmFyIGkgPSBzLmxlbmd0aCAtIDE7IHdoaWxlIChzLmNoYXJBdChpKSA9PSAnMCcpIGktLTtcbiAgICAgICAgICBpZiAocy5jaGFyQXQoaSkgPT0gJy4nKSBpLS07XG4gICAgICAgICAgcyA9IHMuc2xpY2UoMCwgaSArIDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gIHJldHVybiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nKGYsIHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0X29mX3N0cmluZyAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2Zsb2F0X29mX3N0cmluZyhzKSB7XG4gIHZhciByZXM7XG4gIHMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpXG4gIHJlcyA9ICtzO1xuICBpZiAoKHMubGVuZ3RoID4gMCkgJiYgKHJlcyA9PT0gcmVzKSkgcmV0dXJuIHJlcztcbiAgcyA9IHMucmVwbGFjZSgvXy9nLFwiXCIpO1xuICByZXMgPSArcztcbiAgaWYgKCgocy5sZW5ndGggPiAwKSAmJiAocmVzID09PSByZXMpKSB8fCAvXlsrLV0/bmFuJC9pLnRlc3QocykpIHJldHVybiByZXM7XG4gIHZhciBtID0gL14gKihbKy1dPykweChbMC05YS1mXSspXFwuPyhbMC05YS1mXSopKHAoWystXT9bMC05XSspKT8vaS5leGVjKHMpO1xuICAvLyAgICAgICAgICAxICAgICAgICAyICAgICAgICAgICAgIDMgICAgICAgICAgIDVcbiAgaWYobSl7XG4gICAgdmFyIG0zID0gbVszXS5yZXBsYWNlKC8wKyQvLCcnKTtcbiAgICB2YXIgbWFudGlzc2EgPSBwYXJzZUludChtWzFdICsgbVsyXSArIG0zLCAxNik7XG4gICAgdmFyIGV4cG9uZW50ID0gKG1bNV18MCkgLSA0Km0zLmxlbmd0aDtcbiAgICByZXMgPSBtYW50aXNzYSAqIE1hdGgucG93KDIsIGV4cG9uZW50KTtcbiAgICByZXR1cm4gcmVzO1xuICB9XG4gIGlmKC9eXFwrP2luZihpbml0eSk/JC9pLnRlc3QocykpIHJldHVybiBJbmZpbml0eTtcbiAgaWYoL14taW5mKGluaXR5KT8kL2kudGVzdChzKSkgcmV0dXJuIC1JbmZpbml0eTtcbiAgY2FtbF9mYWlsd2l0aChcImZsb2F0X29mX3N0cmluZ1wiKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGZzX25vZGVfc3VwcG9ydGVkXG5mdW5jdGlvbiBmc19ub2RlX3N1cHBvcnRlZCAoKSB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIGdsb2JhbFRoaXMucHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICYmIHR5cGVvZiBnbG9iYWxUaGlzLnByb2Nlc3MudmVyc2lvbnMgIT09ICd1bmRlZmluZWQnXG4gICAgICAmJiB0eXBlb2YgZ2xvYmFsVGhpcy5wcm9jZXNzLnZlcnNpb25zLm5vZGUgIT09ICd1bmRlZmluZWQnKVxufVxuLy9Qcm92aWRlczogZnNfbm9kZV9zdXBwb3J0ZWRcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIGZzX25vZGVfc3VwcG9ydGVkICgpIHtcbiAgcmV0dXJuIGZhbHNlXG59XG5cblxuLy9Qcm92aWRlczogTWxOb2RlRGV2aWNlXG4vL1JlcXVpcmVzOiBNbE5vZGVGaWxlLCBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9yYWlzZV93aXRoX2FyZ3Ncbi8vUmVxdWlyZXM6IG1ha2VfdW5peF9lcnJfYXJncywgY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbmZ1bmN0aW9uIE1sTm9kZURldmljZShyb290KSB7XG4gIHRoaXMuZnMgPSByZXF1aXJlKCdmcycpO1xuICB0aGlzLnJvb3QgPSByb290O1xufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5ubSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgcmV0dXJuICh0aGlzLnJvb3QgKyBuYW1lKTtcbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuZXhpc3RzID0gZnVuY3Rpb24obmFtZSkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLmV4aXN0c1N5bmModGhpcy5ubShuYW1lKSk/MTowO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5ta2RpciA9IGZ1bmN0aW9uKG5hbWUsIG1vZGUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLm1rZGlyU3luYyh0aGlzLm5tKG5hbWUpLHttb2RlOm1vZGV9KTtcbiAgICByZXR1cm4gMFxuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJtZGlyID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHRoaXMuZnMucm1kaXJTeW5jKHRoaXMubm0obmFtZSkpO1xuICAgIHJldHVybiAwXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUucmVhZGRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5yZWFkZGlyU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5pc19kaXIgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMuc3RhdFN5bmModGhpcy5ubShuYW1lKSkuaXNEaXJlY3RvcnkoKT8xOjA7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS51bmxpbmsgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdmFyIGIgPSB0aGlzLmZzLmV4aXN0c1N5bmModGhpcy5ubShuYW1lKSk/MTowO1xuICAgIHRoaXMuZnMudW5saW5rU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICByZXR1cm4gYjtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5vcGVuID0gZnVuY3Rpb24obmFtZSwgZiwgcmFpc2VfdW5peCkge1xuICB2YXIgY29uc3RzID0gcmVxdWlyZSgnY29uc3RhbnRzJyk7XG4gIHZhciByZXMgPSAwO1xuICBmb3IodmFyIGtleSBpbiBmKXtcbiAgICBzd2l0Y2goa2V5KXtcbiAgICBjYXNlIFwicmRvbmx5XCIgIDogcmVzIHw9IGNvbnN0cy5PX1JET05MWTsgYnJlYWs7XG4gICAgY2FzZSBcIndyb25seVwiICA6IHJlcyB8PSBjb25zdHMuT19XUk9OTFk7IGJyZWFrO1xuICAgIGNhc2UgXCJhcHBlbmRcIiAgOlxuICAgICAgcmVzIHw9IGNvbnN0cy5PX1dST05MWSB8IGNvbnN0cy5PX0FQUEVORDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJjcmVhdGVcIiAgIDogcmVzIHw9IGNvbnN0cy5PX0NSRUFUOyAgICBicmVhaztcbiAgICBjYXNlIFwidHJ1bmNhdGVcIiA6IHJlcyB8PSBjb25zdHMuT19UUlVOQzsgICAgYnJlYWs7XG4gICAgY2FzZSBcImV4Y2xcIiAgICAgOiByZXMgfD0gY29uc3RzLk9fRVhDTDsgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJiaW5hcnlcIiAgIDogcmVzIHw9IGNvbnN0cy5PX0JJTkFSWTsgICBicmVhaztcbiAgICBjYXNlIFwidGV4dFwiICAgICA6IHJlcyB8PSBjb25zdHMuT19URVhUOyAgICAgYnJlYWs7XG4gICAgY2FzZSBcIm5vbmJsb2NrXCIgOiByZXMgfD0gY29uc3RzLk9fTk9OQkxPQ0s7IGJyZWFrO1xuICAgIH1cbiAgfVxuICB0cnkge1xuICAgIHZhciBmZCA9IHRoaXMuZnMub3BlblN5bmModGhpcy5ubShuYW1lKSwgcmVzKTtcbiAgICByZXR1cm4gbmV3IE1sTm9kZUZpbGUoZmQpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5cbk1sTm9kZURldmljZS5wcm90b3R5cGUucmVuYW1lID0gZnVuY3Rpb24obywgbiwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHRoaXMuZnMucmVuYW1lU3luYyh0aGlzLm5tKG8pLCB0aGlzLm5tKG4pKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5zdGF0ID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHZhciBqc19zdGF0cyA9IHRoaXMuZnMuc3RhdFN5bmModGhpcy5ubShuYW1lKSk7XG4gICAgcmV0dXJuIHRoaXMuc3RhdHNfZnJvbV9qcyhqc19zdGF0cyk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUubHN0YXQgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdmFyIGpzX3N0YXRzID0gdGhpcy5mcy5sc3RhdFN5bmModGhpcy5ubShuYW1lKSk7XG4gICAgcmV0dXJuIHRoaXMuc3RhdHNfZnJvbV9qcyhqc19zdGF0cyk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuc3ltbGluayA9IGZ1bmN0aW9uKHRvX2RpciwgdGFyZ2V0LCBwYXRoLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5zeW1saW5rU3luYyh0aGlzLm5tKHRhcmdldCksIHRoaXMubm0ocGF0aCksIHRvX2RpciA/ICdkaXInIDogJ2ZpbGUnKTtcbiAgICByZXR1cm4gMDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5yZWFkbGluayA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB2YXIgbGluayA9IHRoaXMuZnMucmVhZGxpbmtTeW5jKHRoaXMubm0obmFtZSksICd1dGY4Jyk7XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGxpbmspO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJhaXNlX25vZGVqc19lcnJvciA9IGZ1bmN0aW9uKGVyciwgcmFpc2VfdW5peCkge1xuICB2YXIgdW5peF9lcnJvciA9IGNhbWxfbmFtZWRfdmFsdWUoXCJVbml4LlVuaXhfZXJyb3JcIik7XG4gIGlmIChyYWlzZV91bml4ICYmIHVuaXhfZXJyb3IpIHtcbiAgICB2YXIgYXJncyA9IG1ha2VfdW5peF9lcnJfYXJncyhlcnIuY29kZSwgZXJyLnN5c2NhbGwsIGVyci5wYXRoLCBlcnIuZXJybm8pO1xuICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIGFyZ3MpO1xuICB9IGVsc2Uge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5zdGF0c19mcm9tX2pzID0gZnVuY3Rpb24oanNfc3RhdHMpIHtcbiAgLyogPT09VW5peC5maWxlX2tpbmQ9PT1cbiAgICogdHlwZSBmaWxlX2tpbmQgPVxuICAgKiAgICAgU19SRUcgICAgICAgICAgICAgICAgICAgICAgICgqKiBSZWd1bGFyIGZpbGUgKilcbiAgICogICB8IFNfRElSICAgICAgICAgICAgICAgICAgICAgICAoKiogRGlyZWN0b3J5ICopXG4gICAqICAgfCBTX0NIUiAgICAgICAgICAgICAgICAgICAgICAgKCoqIENoYXJhY3RlciBkZXZpY2UgKilcbiAgICogICB8IFNfQkxLICAgICAgICAgICAgICAgICAgICAgICAoKiogQmxvY2sgZGV2aWNlICopXG4gICAqICAgfCBTX0xOSyAgICAgICAgICAgICAgICAgICAgICAgKCoqIFN5bWJvbGljIGxpbmsgKilcbiAgICogICB8IFNfRklGTyAgICAgICAgICAgICAgICAgICAgICAoKiogTmFtZWQgcGlwZSAqKVxuICAgKiAgIHwgU19TT0NLICAgICAgICAgICAgICAgICAgICAgICgqKiBTb2NrZXQgKilcbiAgICovXG4gIHZhciBmaWxlX2tpbmQ7XG4gIGlmIChqc19zdGF0cy5pc0ZpbGUoKSkge1xuICAgIGZpbGVfa2luZCA9IDA7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNEaXJlY3RvcnkoKSkge1xuICAgIGZpbGVfa2luZCA9IDE7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNDaGFyYWN0ZXJEZXZpY2UoKSkge1xuICAgIGZpbGVfa2luZCA9IDI7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNCbG9ja0RldmljZSgpKSB7XG4gICAgZmlsZV9raW5kID0gMztcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc1N5bWJvbGljTGluaygpKSB7XG4gICAgZmlsZV9raW5kID0gNDtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc0ZJRk8oKSkge1xuICAgIGZpbGVfa2luZCA9IDU7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNTb2NrZXQoKSkge1xuICAgIGZpbGVfa2luZCA9IDY7XG4gIH1cbiAgLyogPT09VW5peC5zdGF0cz09PVxuICAgKiB0eXBlIHN0YXRzID1cbiAgICogIHsgc3RfZGV2IDogaW50OyAgICAgICAgICAgICAgICgqKiBEZXZpY2UgbnVtYmVyICopXG4gICAqICAgIHN0X2lubyA6IGludDsgICAgICAgICAgICAgICAoKiogSW5vZGUgbnVtYmVyICopXG4gICAqICAgIHN0X2tpbmQgOiBmaWxlX2tpbmQ7ICAgICAgICAoKiogS2luZCBvZiB0aGUgZmlsZSAqKVxuICAgKiAgICBzdF9wZXJtIDogZmlsZV9wZXJtOyAgICAgICAgKCoqIEFjY2VzcyByaWdodHMgKilcbiAgICogICAgc3RfbmxpbmsgOiBpbnQ7ICAgICAgICAgICAgICgqKiBOdW1iZXIgb2YgbGlua3MgKilcbiAgICogICAgc3RfdWlkIDogaW50OyAgICAgICAgICAgICAgICgqKiBVc2VyIGlkIG9mIHRoZSBvd25lciAqKVxuICAgKiAgICBzdF9naWQgOiBpbnQ7ICAgICAgICAgICAgICAgKCoqIEdyb3VwIElEIG9mIHRoZSBmaWxlJ3MgZ3JvdXAgKilcbiAgICogICAgc3RfcmRldiA6IGludDsgICAgICAgICAgICAgICgqKiBEZXZpY2UgSUQgKGlmIHNwZWNpYWwgZmlsZSkgKilcbiAgICogICAgc3Rfc2l6ZSA6IGludDsgICAgICAgICAgICAgICgqKiBTaXplIGluIGJ5dGVzICopXG4gICAqICAgIHN0X2F0aW1lIDogZmxvYXQ7ICAgICAgICAgICAoKiogTGFzdCBhY2Nlc3MgdGltZSAqKVxuICAgKiAgICBzdF9tdGltZSA6IGZsb2F0OyAgICAgICAgICAgKCoqIExhc3QgbW9kaWZpY2F0aW9uIHRpbWUgKilcbiAgICogICAgc3RfY3RpbWUgOiBmbG9hdDsgICAgICAgICAgICgqKiBMYXN0IHN0YXR1cyBjaGFuZ2UgdGltZSAqKVxuICAgKiAgfVxuICAgKi9cbiAgcmV0dXJuIEJMT0NLKFxuICAgIDAsXG4gICAganNfc3RhdHMuZGV2LFxuICAgIGpzX3N0YXRzLmlubyxcbiAgICBmaWxlX2tpbmQsXG4gICAganNfc3RhdHMubW9kZSxcbiAgICBqc19zdGF0cy5ubGluayxcbiAgICBqc19zdGF0cy51aWQsXG4gICAganNfc3RhdHMuZ2lkLFxuICAgIGpzX3N0YXRzLnJkZXYsXG4gICAganNfc3RhdHMuc2l6ZSxcbiAgICBqc19zdGF0cy5hdGltZU1zLFxuICAgIGpzX3N0YXRzLm10aW1lTXMsXG4gICAganNfc3RhdHMuY3RpbWVNc1xuICApO1xufVxuXG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTWxOb2RlRGV2aWNlXG5cbi8vUHJvdmlkZXM6IE1sTm9kZURldmljZVxuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gTWxOb2RlRGV2aWNlKCkge1xufVxuXG4vL1Byb3ZpZGVzOiBNbE5vZGVGaWxlXG4vL1JlcXVpcmVzOiBNbEZpbGUsIGNhbWxfYXJyYXlfb2Zfc3RyaW5nLCBjYW1sX2FycmF5X29mX2J5dGVzLCBjYW1sX2J5dGVzX3NldCwgY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIE1sTm9kZUZpbGUoZmQpe1xuICB0aGlzLmZzID0gcmVxdWlyZSgnZnMnKTtcbiAgdGhpcy5mZCA9IGZkO1xufVxuTWxOb2RlRmlsZS5wcm90b3R5cGUgPSBuZXcgTWxGaWxlICgpO1xuXG5NbE5vZGVGaWxlLnByb3RvdHlwZS50cnVuY2F0ZSA9IGZ1bmN0aW9uKGxlbil7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5mdHJ1bmNhdGVTeW5jKHRoaXMuZmQsbGVufDApXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRmlsZS5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLmZzdGF0U3luYyh0aGlzLmZkKS5zaXplO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZUZpbGUucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24ob2Zmc2V0LGJ1ZixidWZfb2Zmc2V0LGxlbil7XG4gIHZhciBhID0gY2FtbF9hcnJheV9vZl9zdHJpbmcoYnVmKTtcbiAgaWYoISAoYSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuVWludDhBcnJheSkpXG4gICAgYSA9IG5ldyBnbG9iYWxUaGlzLlVpbnQ4QXJyYXkoYSk7XG4gIHZhciBidWZmZXIgPSBnbG9iYWxUaGlzLkJ1ZmZlci5mcm9tKGEpO1xuICB0cnkge1xuICAgIHRoaXMuZnMud3JpdGVTeW5jKHRoaXMuZmQsIGJ1ZmZlciwgYnVmX29mZnNldCwgbGVuLCBvZmZzZXQpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5NbE5vZGVGaWxlLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24ob2Zmc2V0LGJ1ZixidWZfb2Zmc2V0LGxlbil7XG4gIHZhciBhID0gY2FtbF9hcnJheV9vZl9ieXRlcyhidWYpO1xuICBpZighIChhIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5VaW50OEFycmF5KSlcbiAgICBhID0gbmV3IGdsb2JhbFRoaXMuVWludDhBcnJheShhKTtcbiAgdmFyIGJ1ZmZlciA9IGdsb2JhbFRoaXMuQnVmZmVyLmZyb20oYSk7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5yZWFkU3luYyh0aGlzLmZkLCBidWZmZXIsIGJ1Zl9vZmZzZXQsIGxlbiwgb2Zmc2V0KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKyl7XG4gICAgY2FtbF9ieXRlc19zZXQoYnVmLGJ1Zl9vZmZzZXQgKyBpLGJ1ZmZlcltidWZfb2Zmc2V0K2ldKTtcbiAgfVxuICByZXR1cm4gMFxufVxuTWxOb2RlRmlsZS5wcm90b3R5cGUucmVhZF9vbmUgPSBmdW5jdGlvbihvZmZzZXQpe1xuICB2YXIgYSA9IG5ldyBnbG9iYWxUaGlzLlVpbnQ4QXJyYXkoMSk7XG4gIHZhciBidWZmZXIgPSBnbG9iYWxUaGlzLkJ1ZmZlci5mcm9tKGEpO1xuICB0cnkge1xuICAgIHRoaXMuZnMucmVhZFN5bmModGhpcy5mZCwgYnVmZmVyLCAwLCAxLCBvZmZzZXQpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbiAgcmV0dXJuIGJ1ZmZlclswXTtcbn1cbk1sTm9kZUZpbGUucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24oKXtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLmNsb3NlU3luYyh0aGlzLmZkKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5cbk1sTm9kZUZpbGUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTWxOb2RlRmlsZTtcblxuLy9Qcm92aWRlczogTWxOb2RlRmlsZVxuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gTWxOb2RlRmlsZSgpe1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBEdW1teSBmaWxlc3lzdGVtXG5cbi8vUHJvdmlkZXM6IGNhbWxfdHJhaWxpbmdfc2xhc2hcbmZ1bmN0aW9uIGNhbWxfdHJhaWxpbmdfc2xhc2gobmFtZSl7XG4gIHJldHVybiAobmFtZS5zbGljZSgtMSkgIT09IFwiL1wiKSA/IChuYW1lICsgXCIvXCIpIDogbmFtZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jdXJyZW50X2RpclxuLy9SZXF1aXJlczogY2FtbF90cmFpbGluZ19zbGFzaCwgZnNfbm9kZV9zdXBwb3J0ZWRcbmlmKGZzX25vZGVfc3VwcG9ydGVkICgpICYmIGdsb2JhbFRoaXMucHJvY2VzcyAmJiBnbG9iYWxUaGlzLnByb2Nlc3MuY3dkKVxuICB2YXIgY2FtbF9jdXJyZW50X2RpciA9IGdsb2JhbFRoaXMucHJvY2Vzcy5jd2QoKS5yZXBsYWNlKC9cXFxcL2csJy8nKTtcbmVsc2VcbiAgdmFyIGNhbWxfY3VycmVudF9kaXIgPSAgXCIvc3RhdGljXCI7XG5jYW1sX2N1cnJlbnRfZGlyID0gY2FtbF90cmFpbGluZ19zbGFzaChjYW1sX2N1cnJlbnRfZGlyKTtcblxuLy9Qcm92aWRlczogY2FtbF9nZXRfcm9vdFxuLy9SZXF1aXJlczogcGF0aF9pc19hYnNvbHV0ZVxuZnVuY3Rpb24gY2FtbF9nZXRfcm9vdChwYXRoKXtcbiAgdmFyIHggPSBwYXRoX2lzX2Fic29sdXRlKHBhdGgpO1xuICBpZiAoIXgpIHJldHVybjtcbiAgcmV0dXJuIHhbMF0gKyBcIi9cIn1cblxuLy9Qcm92aWRlczogY2FtbF9yb290XG4vL1JlcXVpcmVzOiBjYW1sX2dldF9yb290LCBjYW1sX2N1cnJlbnRfZGlyLCBjYW1sX2ZhaWx3aXRoXG52YXIgY2FtbF9yb290ID0gY2FtbF9nZXRfcm9vdChjYW1sX2N1cnJlbnRfZGlyKSB8fCBjYW1sX2ZhaWx3aXRoKFwidW5hYmxlIHRvIGNvbXB1dGUgY2FtbF9yb290XCIpO1xuXG5cbi8vUHJvdmlkZXM6IE1sRmlsZVxuZnVuY3Rpb24gTWxGaWxlKCl7ICB9XG5cbi8vUHJvdmlkZXM6IHBhdGhfaXNfYWJzb2x1dGVcbi8vUmVxdWlyZXM6IGZzX25vZGVfc3VwcG9ydGVkXG5mdW5jdGlvbiBtYWtlX3BhdGhfaXNfYWJzb2x1dGUoKSB7XG4gIGZ1bmN0aW9uIHBvc2l4KHBhdGgpIHtcbiAgICBpZiAocGF0aC5jaGFyQXQoMCkgPT09ICcvJykgcmV0dXJuIFtcIlwiLCBwYXRoLnN1YnN0cmluZygxKV07XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZnVuY3Rpb24gd2luMzIocGF0aCkge1xuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9ibG9iL2IzZmNjMjQ1ZmIyNTUzOTkwOWVmMWQ1ZWFhMDFkYmY5MmUxNjg2MzMvbGliL3BhdGguanMjTDU2XG4gICAgdmFyIHNwbGl0RGV2aWNlUmUgPSAvXihbYS16QS1aXTp8W1xcXFwvXXsyfVteXFxcXC9dK1tcXFxcL10rW15cXFxcL10rKT8oW1xcXFwvXSk/KFtcXHNcXFNdKj8pJC87XG4gICAgdmFyIHJlc3VsdCA9IHNwbGl0RGV2aWNlUmUuZXhlYyhwYXRoKTtcbiAgICB2YXIgZGV2aWNlID0gcmVzdWx0WzFdIHx8ICcnO1xuICAgIHZhciBpc1VuYyA9IEJvb2xlYW4oZGV2aWNlICYmIGRldmljZS5jaGFyQXQoMSkgIT09ICc6Jyk7XG5cbiAgICAvLyBVTkMgcGF0aHMgYXJlIGFsd2F5cyBhYnNvbHV0ZVxuICAgIGlmIChCb29sZWFuKHJlc3VsdFsyXSB8fCBpc1VuYykpIHtcbiAgICAgIHZhciByb290ID0gKHJlc3VsdFsxXSB8fCAnJyk7XG4gICAgICB2YXIgc2VwID0gKHJlc3VsdFsyXSB8fCAnJyk7XG4gICAgICByZXR1cm4gW3Jvb3QsIHBhdGguc3Vic3RyaW5nKHJvb3QubGVuZ3RoICsgc2VwLmxlbmd0aCldXG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuICBpZihmc19ub2RlX3N1cHBvcnRlZCAoKSAmJiBnbG9iYWxUaGlzLnByb2Nlc3MgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzLnBsYXRmb3JtKSB7XG4gICAgcmV0dXJuIGdsb2JhbFRoaXMucHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJyA/IHdpbjMyIDogcG9zaXg7XG4gIH1cbiAgZWxzZSByZXR1cm4gcG9zaXhcbn1cbnZhciBwYXRoX2lzX2Fic29sdXRlID0gbWFrZV9wYXRoX2lzX2Fic29sdXRlKCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFrZV9wYXRoXG4vL1JlcXVpcmVzOiBjYW1sX2N1cnJlbnRfZGlyXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZywgcGF0aF9pc19hYnNvbHV0ZVxuZnVuY3Rpb24gY2FtbF9tYWtlX3BhdGggKG5hbWUpIHtcbiAgbmFtZT1jYW1sX2pzc3RyaW5nX29mX3N0cmluZyhuYW1lKTtcbiAgaWYoICFwYXRoX2lzX2Fic29sdXRlKG5hbWUpIClcbiAgICBuYW1lID0gY2FtbF9jdXJyZW50X2RpciArIG5hbWU7XG4gIHZhciBjb21wMCA9IHBhdGhfaXNfYWJzb2x1dGUobmFtZSk7XG4gIHZhciBjb21wID0gY29tcDBbMV0uc3BsaXQoXCIvXCIpO1xuICB2YXIgbmNvbXAgPSBbXVxuICBmb3IodmFyIGkgPSAwOyBpPGNvbXAubGVuZ3RoOyBpKyspe1xuICAgIHN3aXRjaChjb21wW2ldKXtcbiAgICBjYXNlIFwiLi5cIjogaWYobmNvbXAubGVuZ3RoPjEpIG5jb21wLnBvcCgpOyBicmVhaztcbiAgICBjYXNlIFwiLlwiOiBicmVhaztcbiAgICBkZWZhdWx0OiBuY29tcC5wdXNoKGNvbXBbaV0pO2JyZWFrXG4gICAgfVxuICB9XG4gIG5jb21wLnVuc2hpZnQoY29tcDBbMF0pO1xuICBuY29tcC5vcmlnID0gbmFtZTtcbiAgcmV0dXJuIG5jb21wO1xufVxuXG4vL1Byb3ZpZGVzOmpzb29fbW91bnRfcG9pbnRcbi8vUmVxdWlyZXM6IE1sRmFrZURldmljZSwgTWxOb2RlRGV2aWNlLCBjYW1sX3Jvb3QsIGZzX25vZGVfc3VwcG9ydGVkXG52YXIganNvb19tb3VudF9wb2ludCA9IFtdXG5pZiAoZnNfbm9kZV9zdXBwb3J0ZWQoKSkge1xuICBqc29vX21vdW50X3BvaW50LnB1c2goe3BhdGg6Y2FtbF9yb290LGRldmljZTpuZXcgTWxOb2RlRGV2aWNlKGNhbWxfcm9vdCl9KTtcbn0gZWxzZSB7XG4gIGpzb29fbW91bnRfcG9pbnQucHVzaCh7cGF0aDpjYW1sX3Jvb3QsZGV2aWNlOm5ldyBNbEZha2VEZXZpY2UoY2FtbF9yb290KX0pO1xufVxuanNvb19tb3VudF9wb2ludC5wdXNoKHtwYXRoOlwiL3N0YXRpYy9cIiwgZGV2aWNlOm5ldyBNbEZha2VEZXZpY2UoXCIvc3RhdGljL1wiKX0pO1xuXG4vL1Byb3ZpZGVzOmNhbWxfbGlzdF9tb3VudF9wb2ludFxuLy9SZXF1aXJlczoganNvb19tb3VudF9wb2ludCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9saXN0X21vdW50X3BvaW50KCl7XG4gIHZhciBwcmV2ID0gMFxuICBmb3IodmFyIGkgPSAwOyBpIDwganNvb19tb3VudF9wb2ludC5sZW5ndGg7IGkrKyl7XG4gICAgdmFyIG9sZCA9IHByZXY7XG4gICAgcHJldiA9IFswLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGpzb29fbW91bnRfcG9pbnRbaV0ucGF0aCksIG9sZF1cbiAgfVxuICByZXR1cm4gcHJldjtcbn1cblxuLy9Qcm92aWRlczogcmVzb2x2ZV9mc19kZXZpY2Vcbi8vUmVxdWlyZXM6IGNhbWxfbWFrZV9wYXRoLCBqc29vX21vdW50X3BvaW50LCBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9nZXRfcm9vdCwgTWxOb2RlRGV2aWNlLCBjYW1sX3RyYWlsaW5nX3NsYXNoLCBmc19ub2RlX3N1cHBvcnRlZFxuZnVuY3Rpb24gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSl7XG4gIHZhciBwYXRoID0gY2FtbF9tYWtlX3BhdGgobmFtZSk7XG4gIHZhciBuYW1lID0gcGF0aC5qb2luKFwiL1wiKTtcbiAgdmFyIG5hbWVfc2xhc2ggPSBjYW1sX3RyYWlsaW5nX3NsYXNoKG5hbWUpO1xuICB2YXIgcmVzO1xuICBmb3IodmFyIGkgPSAwOyBpIDwganNvb19tb3VudF9wb2ludC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBtID0ganNvb19tb3VudF9wb2ludFtpXTtcbiAgICBpZihuYW1lX3NsYXNoLnNlYXJjaChtLnBhdGgpID09IDBcbiAgICAgICAmJiAoIXJlcyB8fCByZXMucGF0aC5sZW5ndGggPCBtLnBhdGgubGVuZ3RoKSlcbiAgICAgIHJlcyA9IHtwYXRoOm0ucGF0aCxkZXZpY2U6bS5kZXZpY2UscmVzdDpuYW1lLnN1YnN0cmluZyhtLnBhdGgubGVuZ3RoLG5hbWUubGVuZ3RoKX07XG4gIH1cbiAgaWYoICFyZXMgJiYgZnNfbm9kZV9zdXBwb3J0ZWQoKSkge1xuICAgIHZhciByb290ID0gY2FtbF9nZXRfcm9vdChuYW1lKTtcbiAgICBpZiAocm9vdCAmJiByb290Lm1hdGNoKC9eW2EtekEtWl06XFwvJC8pKXtcbiAgICAgIHZhciBtID0ge3BhdGg6cm9vdCxkZXZpY2U6bmV3IE1sTm9kZURldmljZShyb290KX07XG4gICAgICBqc29vX21vdW50X3BvaW50LnB1c2gobSk7XG4gICAgICByZXMgPSB7cGF0aDptLnBhdGgsZGV2aWNlOm0uZGV2aWNlLHJlc3Q6bmFtZS5zdWJzdHJpbmcobS5wYXRoLmxlbmd0aCxuYW1lLmxlbmd0aCl9O1xuICAgIH1cbiAgfVxuICBpZiggcmVzICkgcmV0dXJuIHJlcztcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJubyBkZXZpY2UgZm91bmQgZm9yIFwiICsgbmFtZV9zbGFzaCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbW91bnRfYXV0b2xvYWRcbi8vUmVxdWlyZXM6IE1sRmFrZURldmljZSwgY2FtbF9tYWtlX3BhdGgsIGpzb29fbW91bnRfcG9pbnQsIGNhbWxfdHJhaWxpbmdfc2xhc2hcbmZ1bmN0aW9uIGNhbWxfbW91bnRfYXV0b2xvYWQobmFtZSxmKXtcbiAgdmFyIHBhdGggPSBjYW1sX21ha2VfcGF0aChuYW1lKTtcbiAgdmFyIG5hbWUgPSBjYW1sX3RyYWlsaW5nX3NsYXNoKHBhdGguam9pbihcIi9cIikpO1xuICBqc29vX21vdW50X3BvaW50LnB1c2goe3BhdGg6bmFtZSxkZXZpY2U6bmV3IE1sRmFrZURldmljZShuYW1lLGYpfSlcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5tb3VudFxuLy9SZXF1aXJlczoganNvb19tb3VudF9wb2ludCwgY2FtbF9tYWtlX3BhdGgsIGNhbWxfdHJhaWxpbmdfc2xhc2hcbmZ1bmN0aW9uIGNhbWxfdW5tb3VudChuYW1lKXtcbiAgdmFyIHBhdGggPSBjYW1sX21ha2VfcGF0aChuYW1lKTtcbiAgdmFyIG5hbWUgPSBjYW1sX3RyYWlsaW5nX3NsYXNoKHBhdGguam9pbihcIi9cIikpO1xuICB2YXIgaWR4ID0gLTE7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBqc29vX21vdW50X3BvaW50Lmxlbmd0aDsgaSsrKVxuICAgIGlmKGpzb29fbW91bnRfcG9pbnRbaV0ucGF0aCA9PSBuYW1lKSBpZHggPSBpO1xuICBpZihpZHggPiAtMSkganNvb19tb3VudF9wb2ludC5zcGxpY2UoaWR4LDEpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19nZXRjd2Rcbi8vUmVxdWlyZXM6IGNhbWxfY3VycmVudF9kaXIsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldGN3ZCgpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoY2FtbF9jdXJyZW50X2Rpcik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NoZGlyXG4vL1JlcXVpcmVzOiBjYW1sX2N1cnJlbnRfZGlyLCBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZSwgcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfdHJhaWxpbmdfc2xhc2gsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3lzX2NoZGlyKGRpcikge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKGRpcik7XG4gIGlmKHJvb3QuZGV2aWNlLmV4aXN0cyhyb290LnJlc3QpKSB7XG4gICAgaWYocm9vdC5yZXN0KSBjYW1sX2N1cnJlbnRfZGlyID0gY2FtbF90cmFpbGluZ19zbGFzaChyb290LnBhdGggKyByb290LnJlc3QpO1xuICAgIGVsc2UgY2FtbF9jdXJyZW50X2RpciA9IHJvb3QucGF0aDtcbiAgICByZXR1cm4gMDtcbiAgfVxuICBlbHNlIHtcbiAgICBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZShjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGRpcikpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUobmFtZSl7XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yIChuYW1lICsgXCI6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfbm90X2FfZGlyXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gY2FtbF9yYWlzZV9ub3RfYV9kaXIobmFtZSl7XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yIChuYW1lICsgXCI6IE5vdCBhIGRpcmVjdG9yeVwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZmlsZV9leGlzdHNcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19maWxlX2V4aXN0cyAobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICByZXR1cm4gcm9vdC5kZXZpY2UuZXhpc3RzKHJvb3QucmVzdCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JlYWRfZGlyZWN0b3J5XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vdF9hX2RpciwgcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX3JlYWRfZGlyZWN0b3J5KG5hbWUpe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICB2YXIgYSA9IHJvb3QuZGV2aWNlLnJlYWRkaXIocm9vdC5yZXN0KTtcbiAgdmFyIGwgPSBuZXcgQXJyYXkoYS5sZW5ndGggKyAxKTtcbiAgbFswXSA9IDA7XG4gIGZvcih2YXIgaT0wO2k8YS5sZW5ndGg7aSsrKVxuICAgIGxbaSsxXSA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoYVtpXSk7XG4gIHJldHVybiBsO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yZW1vdmVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlLCByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9zeXNfcmVtb3ZlKG5hbWUpe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICB2YXIgb2sgPSByb290LmRldmljZS51bmxpbmsocm9vdC5yZXN0KTtcbiAgaWYob2sgPT0gMCkgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19pc19kaXJlY3Rvcnlcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19pc19kaXJlY3RvcnkobmFtZSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBhID0gcm9vdC5kZXZpY2UuaXNfZGlyKHJvb3QucmVzdCk7XG4gIHJldHVybiBhPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmVuYW1lXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfcmVuYW1lKG8sbil7XG4gIHZhciBvX3Jvb3QgPSByZXNvbHZlX2ZzX2RldmljZShvKTtcbiAgdmFyIG5fcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG4pO1xuICBpZihvX3Jvb3QuZGV2aWNlICE9IG5fcm9vdC5kZXZpY2UpXG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3lzX3JlbmFtZTogY2Fubm90IG1vdmUgZmlsZSBiZXR3ZWVuIHR3byBmaWxlc3lzdGVtXCIpO1xuICBpZighb19yb290LmRldmljZS5yZW5hbWUpXG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3lzX3JlbmFtZTogbm8gaW1wbGVtZW50ZWRcIik7XG4gIG9fcm9vdC5kZXZpY2UucmVuYW1lKG9fcm9vdC5yZXN0LCBuX3Jvb3QucmVzdCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX21rZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfc3lzX21rZGlyKG5hbWUsIHBlcm0pe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICByb290LmRldmljZS5ta2Rpcihyb290LnJlc3QscGVybSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19ybWRpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX3JhaXNlX25vdF9hX2RpclxuZnVuY3Rpb24gY2FtbF9zeXNfcm1kaXIobmFtZSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHJvb3QuZGV2aWNlLnJtZGlyKHJvb3QucmVzdCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX21hcF9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2JhX21hcF9maWxlKHZmZCwga2luZCwgbGF5b3V0LCBzaGFyZWQsIGRpbXMsIHBvcykge1xuICAvLyB2YXIgZGF0YSA9IGNhbWxfZ2xvYmFsX2RhdGEuZmRzW3ZmZF07XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2JhX21hcF9maWxlIG5vdCBpbXBsZW1lbnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9tYXBfZmlsZV9ieXRlY29kZVxuLy9SZXF1aXJlczogY2FtbF9iYV9tYXBfZmlsZVxuZnVuY3Rpb24gY2FtbF9iYV9tYXBfZmlsZV9ieXRlY29kZShhcmd2LGFyZ24pe1xuICByZXR1cm4gY2FtbF9iYV9tYXBfZmlsZShhcmd2WzBdLGFyZ3ZbMV0sYXJndlsyXSxhcmd2WzNdLGFyZ3ZbNF0sYXJndls1XSk7XG59XG5cbi8vUHJvdmlkZXM6IGpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuXG5mdW5jdGlvbiBqc29vX2NyZWF0ZV9maWxlX2V4dGVybihuYW1lLGNvbnRlbnQpe1xuICBpZihnbG9iYWxUaGlzLmpzb29fY3JlYXRlX2ZpbGUpXG4gICAgZ2xvYmFsVGhpcy5qc29vX2NyZWF0ZV9maWxlKG5hbWUsY29udGVudCk7XG4gIGVsc2Uge1xuICAgIGlmKCFnbG9iYWxUaGlzLmNhbWxfZnNfdG1wKSBnbG9iYWxUaGlzLmNhbWxfZnNfdG1wID0gW107XG4gICAgZ2xvYmFsVGhpcy5jYW1sX2ZzX3RtcC5wdXNoKHtuYW1lOm5hbWUsY29udGVudDpjb250ZW50fSk7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZnNfaW5pdFxuLy9SZXF1aXJlczoganNvb19jcmVhdGVfZmlsZVxuZnVuY3Rpb24gY2FtbF9mc19pbml0ICgpe1xuICB2YXIgdG1wPWdsb2JhbFRoaXMuY2FtbF9mc190bXBcbiAgaWYodG1wKXtcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgdG1wLmxlbmd0aDsgaSsrKXtcbiAgICAgIGpzb29fY3JlYXRlX2ZpbGUodG1wW2ldLm5hbWUsdG1wW2ldLmNvbnRlbnQpO1xuICAgIH1cbiAgfVxuICBnbG9iYWxUaGlzLmpzb29fY3JlYXRlX2ZpbGUgPSBqc29vX2NyZWF0ZV9maWxlO1xuICBnbG9iYWxUaGlzLmNhbWxfZnNfdG1wID0gW107XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9jcmVhdGVfZmlsZShuYW1lLGNvbnRlbnQpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYoISByb290LmRldmljZS5yZWdpc3RlcikgY2FtbF9mYWlsd2l0aChcImNhbm5vdCByZWdpc3RlciBmaWxlXCIpO1xuICByb290LmRldmljZS5yZWdpc3Rlcihyb290LnJlc3QsY29udGVudCk7XG4gIHJldHVybiAwO1xufVxuXG5cbi8vUHJvdmlkZXM6IGpzb29fY3JlYXRlX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfY3JlYXRlX2ZpbGUsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGpzb29fY3JlYXRlX2ZpbGUobmFtZSxjb250ZW50KSB7XG4gIHZhciBuYW1lID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhuYW1lKTtcbiAgdmFyIGNvbnRlbnQgPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGNvbnRlbnQpO1xuICByZXR1cm4gY2FtbF9jcmVhdGVfZmlsZShuYW1lLCBjb250ZW50KTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlYWRfZmlsZV9jb250ZW50XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUsIGNhbWxfY3JlYXRlX2J5dGVzLCBjYW1sX3N0cmluZ19vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9yZWFkX2ZpbGVfY29udGVudCAobmFtZSkge1xuICB2YXIgbmFtZSA9ICh0eXBlb2YgbmFtZSA9PSBcInN0cmluZ1wiKT9jYW1sX3N0cmluZ19vZl9qc2J5dGVzKG5hbWUpOm5hbWU7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmKHJvb3QuZGV2aWNlLmV4aXN0cyhyb290LnJlc3QpKSB7XG4gICAgdmFyIGZpbGUgPSByb290LmRldmljZS5vcGVuKHJvb3QucmVzdCx7cmRvbmx5OjF9KTtcbiAgICB2YXIgbGVuICA9IGZpbGUubGVuZ3RoKCk7XG4gICAgdmFyIGJ1ZiAgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW4pO1xuICAgIGZpbGUucmVhZCgwLGJ1ZiwwLGxlbik7XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2J5dGVzKGJ1ZilcbiAgfVxuICBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZShjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpKTtcbn1cbiIsIi8vUHJvdmlkZXM6IHVuaXhfZ2V0dGltZW9mZGF5XG5mdW5jdGlvbiB1bml4X2dldHRpbWVvZmRheSAoKSB7XG4gIHJldHVybiAobmV3IERhdGUoKSkuZ2V0VGltZSgpIC8gMTAwMDtcbn1cblxuLy9Qcm92aWRlczogdW5peF90aW1lXG4vL1JlcXVpcmVzOiB1bml4X2dldHRpbWVvZmRheVxuZnVuY3Rpb24gdW5peF90aW1lICgpIHtcbiAgcmV0dXJuIE1hdGguZmxvb3IodW5peF9nZXR0aW1lb2ZkYXkgKCkpO1xufVxuXG4vL1Byb3ZpZGVzOiB1bml4X2dtdGltZVxuZnVuY3Rpb24gdW5peF9nbXRpbWUgKHQpIHtcbiAgdmFyIGQgPSBuZXcgRGF0ZSAodCAqIDEwMDApO1xuICB2YXIgZF9udW0gPSBkLmdldFRpbWUoKTtcbiAgdmFyIGphbnVhcnlmaXJzdCA9IChuZXcgRGF0ZShEYXRlLlVUQyhkLmdldFVUQ0Z1bGxZZWFyKCksIDAsIDEpKSkuZ2V0VGltZSgpO1xuICB2YXIgZG95ID0gTWF0aC5mbG9vcigoZF9udW0gLSBqYW51YXJ5Zmlyc3QpIC8gODY0MDAwMDApO1xuICByZXR1cm4gQkxPQ0soMCwgZC5nZXRVVENTZWNvbmRzKCksIGQuZ2V0VVRDTWludXRlcygpLCBkLmdldFVUQ0hvdXJzKCksXG4gICAgICAgICAgICAgICBkLmdldFVUQ0RhdGUoKSwgZC5nZXRVVENNb250aCgpLCBkLmdldFVUQ0Z1bGxZZWFyKCkgLSAxOTAwLFxuICAgICAgICAgICAgICAgZC5nZXRVVENEYXkoKSwgZG95LFxuICAgICAgICAgICAgICAgZmFsc2UgfCAwIC8qIGZvciBVVEMgZGF5bGlnaHQgc2F2aW5ncyB0aW1lIGlzIGZhbHNlICovKVxufVxuXG4vL1Byb3ZpZGVzOiB1bml4X2xvY2FsdGltZVxuZnVuY3Rpb24gdW5peF9sb2NhbHRpbWUgKHQpIHtcbiAgdmFyIGQgPSBuZXcgRGF0ZSAodCAqIDEwMDApO1xuICB2YXIgZF9udW0gPSBkLmdldFRpbWUoKTtcbiAgdmFyIGphbnVhcnlmaXJzdCA9IChuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIDAsIDEpKS5nZXRUaW1lKCk7XG4gIHZhciBkb3kgPSBNYXRoLmZsb29yKChkX251bSAtIGphbnVhcnlmaXJzdCkgLyA4NjQwMDAwMCk7XG4gIHZhciBqYW4gPSBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIDAsIDEpO1xuICB2YXIganVsID0gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCA2LCAxKTtcbiAgdmFyIHN0ZFRpbWV6b25lT2Zmc2V0ID0gTWF0aC5tYXgoamFuLmdldFRpbWV6b25lT2Zmc2V0KCksIGp1bC5nZXRUaW1lem9uZU9mZnNldCgpKTtcbiAgcmV0dXJuIEJMT0NLKDAsIGQuZ2V0U2Vjb25kcygpLCBkLmdldE1pbnV0ZXMoKSwgZC5nZXRIb3VycygpLFxuICAgICAgICAgICAgICAgZC5nZXREYXRlKCksIGQuZ2V0TW9udGgoKSwgZC5nZXRGdWxsWWVhcigpIC0gMTkwMCxcbiAgICAgICAgICAgICAgIGQuZ2V0RGF5KCksIGRveSxcbiAgICAgICAgICAgICAgIChkLmdldFRpbWV6b25lT2Zmc2V0KCkgPCBzdGRUaW1lem9uZU9mZnNldCkgfCAwIC8qIGRheWxpZ2h0IHNhdmluZ3MgdGltZSAgZmllbGQuICovKVxufVxuXG4vL1Byb3ZpZGVzOiB1bml4X21rdGltZVxuLy9SZXF1aXJlczogdW5peF9sb2NhbHRpbWVcbmZ1bmN0aW9uIHVuaXhfbWt0aW1lKHRtKXtcbiAgdmFyIGQgPSAobmV3IERhdGUodG1bNl0rMTkwMCx0bVs1XSx0bVs0XSx0bVszXSx0bVsyXSx0bVsxXSkpLmdldFRpbWUoKTtcbiAgdmFyIHQgPSBNYXRoLmZsb29yKGQgLyAxMDAwKTtcbiAgdmFyIHRtMiA9IHVuaXhfbG9jYWx0aW1lKHQpO1xuICByZXR1cm4gQkxPQ0soMCx0LHRtMik7XG59XG5cbi8vUHJvdmlkZXM6IHdpbl9zdGFydHVwIGNvbnN0XG5mdW5jdGlvbiB3aW5fc3RhcnR1cCgpIHt9XG5cbi8vUHJvdmlkZXM6IHdpbl9jbGVhbnVwIGNvbnN0XG5mdW5jdGlvbiB3aW5fY2xlYW51cCgpIHt9XG5cbi8vUHJvdmlkZXM6IHdpbl9oYW5kbGVfZmQgY29uc3RcbmZ1bmN0aW9uIHdpbl9oYW5kbGVfZmQoeCkge3JldHVybiB4O31cblxuLy9Qcm92aWRlczogdW5peF9pc2F0dHlcbi8vUmVxdWlyZXM6IGZzX25vZGVfc3VwcG9ydGVkXG5mdW5jdGlvbiB1bml4X2lzYXR0eShmaWxlRGVzY3JpcHRvcikge1xuICBpZihmc19ub2RlX3N1cHBvcnRlZCgpKSB7XG4gICAgdmFyIHR0eSA9IHJlcXVpcmUoJ3R0eScpO1xuICAgIHJldHVybiB0dHkuaXNhdHR5KGZpbGVEZXNjcmlwdG9yKT8xOjA7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogbWFrZV91bml4X2Vycl9hcmdzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xudmFyIHVuaXhfZXJyb3IgPSBbXG4gIC8qID09PVVuaXguZXJyb3I9PT1cbiAgICpcbiAgICogVGhpcyBhcnJheSBpcyBpbiBvcmRlciBvZiB0aGUgdmFyaWFudCBpbiBPQ2FtbFxuICAgKi9cbiAgXCJFMkJJR1wiLCBcIkVBQ0NFU1wiLCBcIkVBR0FJTlwiLCBcIkVCQURGXCIsIFwiRUJVU1lcIiwgXCJFQ0hJTERcIiwgXCJFREVBRExLXCIsIFwiRURPTVwiLFxuICBcIkVFWElTVFwiLCBcIkVGQVVMVFwiLCBcIkVGQklHXCIsIFwiRUlOVFJcIiwgXCJFSU5WQUxcIiwgXCJFSU9cIiwgXCJFSVNESVJcIiwgXCJFTUZJTEVcIixcbiAgXCJFTUxJTktcIiwgXCJFTkFNRVRPT0xPTkdcIiwgXCJFTkZJTEVcIiwgXCJFTk9ERVZcIiwgXCJFTk9FTlRcIiwgXCJFTk9FWEVDXCIsIFwiRU5PTENLXCIsXG4gIFwiRU5PTUVNXCIsIFwiRU5PU1BDXCIsIFwiRU5PU1lTXCIsIFwiRU5PVERJUlwiLCBcIkVOT1RFTVBUWVwiLCBcIkVOT1RUWVwiLCBcIkVOWElPXCIsXG4gIFwiRVBFUk1cIiwgXCJFUElQRVwiLCBcIkVSQU5HRVwiLCBcIkVST0ZTXCIsIFwiRVNQSVBFXCIsIFwiRVNSQ0hcIiwgXCJFWERFVlwiLCBcIkVXT1VMREJMT0NLXCIsXG4gIFwiRUlOUFJPR1JFU1NcIiwgXCJFQUxSRUFEWVwiLCBcIkVOT1RTT0NLXCIsIFwiRURFU1RBRERSUkVRXCIsIFwiRU1TR1NJWkVcIixcbiAgXCJFUFJPVE9UWVBFXCIsIFwiRU5PUFJPVE9PUFRcIiwgXCJFUFJPVE9OT1NVUFBPUlRcIiwgXCJFU09DS1ROT1NVUFBPUlRcIixcbiAgXCJFT1BOT1RTVVBQXCIsIFwiRVBGTk9TVVBQT1JUXCIsIFwiRUFGTk9TVVBQT1JUXCIsIFwiRUFERFJJTlVTRVwiLCBcIkVBRERSTk9UQVZBSUxcIixcbiAgXCJFTkVURE9XTlwiLCBcIkVORVRVTlJFQUNIXCIsIFwiRU5FVFJFU0VUXCIsIFwiRUNPTk5BQk9SVEVEXCIsIFwiRUNPTk5SRVNFVFwiLCBcIkVOT0JVRlNcIixcbiAgXCJFSVNDT05OXCIsIFwiRU5PVENPTk5cIiwgXCJFU0hVVERPV05cIiwgXCJFVE9PTUFOWVJFRlNcIiwgXCJFVElNRURPVVRcIiwgXCJFQ09OTlJFRlVTRURcIixcbiAgXCJFSE9TVERPV05cIiwgXCJFSE9TVFVOUkVBQ0hcIiwgXCJFTE9PUFwiLCBcIkVPVkVSRkxPV1wiXG5dO1xuZnVuY3Rpb24gbWFrZV91bml4X2Vycl9hcmdzKGNvZGUsIHN5c2NhbGwsIHBhdGgsIGVycm5vKSB7XG4gIHZhciB2YXJpYW50ID0gdW5peF9lcnJvci5pbmRleE9mKGNvZGUpO1xuICBpZiAodmFyaWFudCA8IDApIHtcbiAgICAvLyBEZWZhdWx0IGlmIHVuZGVmaW5lZFxuICAgIGlmIChlcnJubyA9PSBudWxsKSB7XG4gICAgICBlcnJubyA9IC05OTk5XG4gICAgfVxuICAgIC8vIElmIG5vbmUgb2YgdGhlIGFib3ZlIHZhcmlhbnRzLCBmYWxsYmFjayB0byBFVU5LTk9XTkVSUihpbnQpXG4gICAgdmFyaWFudCA9IEJMT0NLKDAsIGVycm5vKTtcbiAgfVxuICB2YXIgYXJncyA9IFtcbiAgICB2YXJpYW50LFxuICAgIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHN5c2NhbGwgfHwgXCJcIiksXG4gICAgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcocGF0aCB8fCBcIlwiKVxuICBdO1xuICByZXR1cm4gYXJncztcbn1cblxuLy9Qcm92aWRlczogdW5peF9zdGF0XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gdW5peF9zdGF0KG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5zdGF0KSB7XG4gICAgY2FtbF9mYWlsd2l0aChcInVuaXhfc3RhdDogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5zdGF0KHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogdW5peF9zdGF0XzY0XG4vL1JlcXVpcmVzOiB1bml4X3N0YXRcbnZhciB1bml4X3N0YXRfNjQgPSB1bml4X3N0YXQ7XG5cbi8vUHJvdmlkZXM6IHVuaXhfbHN0YXRcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiB1bml4X2xzdGF0KG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5sc3RhdCkge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJ1bml4X2xzdGF0OiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLmxzdGF0KHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogdW5peF9sc3RhdF82NFxuLy9SZXF1aXJlczogdW5peF9sc3RhdFxudmFyIHVuaXhfbHN0YXRfNjQgPSB1bml4X2xzdGF0O1xuXG4vL1Byb3ZpZGVzOiB1bml4X21rZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gdW5peF9ta2RpcihuYW1lLCBwZXJtKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UubWtkaXIpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwidW5peF9ta2Rpcjogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5ta2Rpcihyb290LnJlc3QsIHBlcm0sIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IHVuaXhfcm1kaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiB1bml4X3JtZGlyKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5ybWRpcikge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJ1bml4X3JtZGlyOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLnJtZGlyKHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogdW5peF9zeW1saW5rXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gdW5peF9zeW1saW5rKHRvX2Rpciwgc3JjLCBkc3QpIHtcbiAgdmFyIHNyY19yb290ID0gcmVzb2x2ZV9mc19kZXZpY2Uoc3JjKTtcbiAgdmFyIGRzdF9yb290ID0gcmVzb2x2ZV9mc19kZXZpY2UoZHN0KTtcbiAgaWYoc3JjX3Jvb3QuZGV2aWNlICE9IGRzdF9yb290LmRldmljZSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwidW5peF9zeW1saW5rOiBjYW5ub3Qgc3ltbGluayBiZXR3ZWVuIHR3byBmaWxlc3lzdGVtc1wiKTtcbiAgaWYgKCFzcmNfcm9vdC5kZXZpY2Uuc3ltbGluaykge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJ1bml4X3N5bWxpbms6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gc3JjX3Jvb3QuZGV2aWNlLnN5bWxpbmsodG9fZGlyLCBzcmNfcm9vdC5yZXN0LCBkc3Rfcm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiB1bml4X3JlYWRsaW5rXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gdW5peF9yZWFkbGluayhuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UucmVhZGxpbmspIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwidW5peF9yZWFkbGluazogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5yZWFkbGluayhyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IHVuaXhfdW5saW5rXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gdW5peF91bmxpbmsobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLnVubGluaykge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJ1bml4X3VubGluazogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS51bmxpbmsocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiB1bml4X2dldHVpZFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub3RfZm91bmRcbmZ1bmN0aW9uIHVuaXhfZ2V0dWlkKHVuaXQpIHtcbiAgaWYoZ2xvYmFsVGhpcy5wcm9jZXNzICYmIGdsb2JhbFRoaXMucHJvY2Vzcy5nZXR1aWQpe1xuICAgIHJldHVybiBnbG9iYWxUaGlzLnByb2Nlc3MuZ2V0dWlkKCk7XG4gIH1cbiAgY2FtbF9yYWlzZV9ub3RfZm91bmQoKTtcbn1cblxuLy9Qcm92aWRlczogdW5peF9nZXRwd3VpZFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub3RfZm91bmRcbmZ1bmN0aW9uIHVuaXhfZ2V0cHd1aWQodW5pdCkge1xuICBjYW1sX3JhaXNlX25vdF9mb3VuZCgpXG59XG5cbi8vUHJvdmlkZXM6IHVuaXhfaGFzX3N5bWxpbmtcbi8vUmVxdWlyZXM6IGZzX25vZGVfc3VwcG9ydGVkXG5mdW5jdGlvbiB1bml4X2hhc19zeW1saW5rKHVuaXQpIHtcbiAgcmV0dXJuIGZzX25vZGVfc3VwcG9ydGVkKCk/MTowXG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIFN5c1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX3N5c19lcnJvciAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nLCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3N5c19lcnJvciAobXNnKSB7XG4gIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcoY2FtbF9nbG9iYWxfZGF0YS5TeXNfZXJyb3IsIG1zZyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2V4aXRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9zeXNfZXhpdCAoY29kZSkge1xuICB2YXIgZyA9IGdsb2JhbFRoaXM7XG4gIGlmKGcucXVpdCkgZy5xdWl0KGNvZGUpO1xuICAvL25vZGVqc1xuICBpZihnLnByb2Nlc3MgJiYgZy5wcm9jZXNzLmV4aXQpXG4gICAgZy5wcm9jZXNzLmV4aXQoY29kZSk7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkZ1bmN0aW9uICdleGl0JyBub3QgaW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb24oZXhuKXtcbiAgc3dpdGNoKGV4blsyXSkge1xuICBjYXNlIC04OiAvLyBNYXRjaF9mYWlsdXJlXG4gIGNhc2UgLTExOiAvLyBBc3NlcnRfZmFpbHVyZVxuICBjYXNlIC0xMjogLy8gVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGVcbiAgICByZXR1cm4gMTtcbiAgZGVmYXVsdDpcbiAgICByZXR1cm4gMDtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zvcm1hdF9leGNlcHRpb25cbi8vUmVxdWlyZXM6IE1sQnl0ZXMsIGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfZm9ybWF0X2V4Y2VwdGlvbihleG4pe1xuICB2YXIgciA9IFwiXCI7XG4gIGlmKGV4blswXSA9PSAwKSB7XG4gICAgciArPSBleG5bMV1bMV07XG4gICAgaWYoZXhuLmxlbmd0aCA9PSAzICYmIGV4blsyXVswXSA9PSAwICYmIGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb24oZXhuWzFdKSkge1xuXG4gICAgICB2YXIgYnVja2V0ID0gZXhuWzJdO1xuICAgICAgdmFyIHN0YXJ0ID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHN0YXJ0ID0gMlxuICAgICAgdmFyIGJ1Y2tldCA9IGV4bjtcbiAgICB9XG4gICAgciArPSBcIihcIjtcbiAgICBmb3IodmFyIGkgPSBzdGFydDsgaSA8IGJ1Y2tldC5sZW5ndGg7IGkgKyspe1xuICAgICAgaWYoaSA+IHN0YXJ0KSByKz1cIiwgXCI7XG4gICAgICB2YXIgdiA9IGJ1Y2tldFtpXVxuICAgICAgaWYodHlwZW9mIHYgPT0gXCJudW1iZXJcIilcbiAgICAgICAgcis9IHYudG9TdHJpbmcoKTtcbiAgICAgIGVsc2UgaWYodiBpbnN0YW5jZW9mIE1sQnl0ZXMpe1xuICAgICAgICByKz0gJ1wiJyArIHYudG9TdHJpbmcoKSArICdcIic7XG4gICAgICB9XG4gICAgICBlbHNlIGlmKHR5cGVvZiB2ID09IFwic3RyaW5nXCIpe1xuICAgICAgICByKz0gJ1wiJyArIHYudG9TdHJpbmcoKSArICdcIic7XG4gICAgICB9XG4gICAgICBlbHNlIHIgKz0gXCJfXCI7XG4gICAgfVxuICAgIHIgKz0gXCIpXCJcbiAgfSBlbHNlIGlmIChleG5bMF0gPT0gMjQ4KXtcbiAgICByICs9IGV4blsxXVxuICB9XG4gIHJldHVybiByXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX2Zvcm1hdF9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uKGVycil7XG4gIGlmKGVyciBpbnN0YW5jZW9mIEFycmF5ICYmIChlcnJbMF0gPT0gMCB8fCBlcnJbMF0gPT0gMjQ4KSkge1xuICAgIHZhciBoYW5kbGVyID0gY2FtbF9uYW1lZF92YWx1ZShcIlByaW50ZXhjLmhhbmRsZV91bmNhdWdodF9leGNlcHRpb25cIik7XG4gICAgaWYoaGFuZGxlcikgaGFuZGxlcihlcnIsZmFsc2UpO1xuICAgIGVsc2Uge1xuICAgICAgdmFyIG1zZyA9IGNhbWxfZm9ybWF0X2V4Y2VwdGlvbihlcnIpO1xuICAgICAgdmFyIGF0X2V4aXQgPSBjYW1sX25hbWVkX3ZhbHVlKFwiUGVydmFzaXZlcy5kb19hdF9leGl0XCIpO1xuICAgICAgaWYoYXRfZXhpdCkgeyBhdF9leGl0KDApIH1cbiAgICAgIGdsb2JhbFRoaXMuY29uc29sZS5lcnJvcihcIkZhdGFsIGVycm9yOiBleGNlcHRpb24gXCIgKyBtc2cgKyBcIlxcblwiKTtcbiAgICB9XG4gIH1cbiAgZWxzZSB7XG4gICAgdGhyb3cgZXJyXG4gIH1cbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NldF9zdGF0aWNfZW52XG5mdW5jdGlvbiBjYW1sX3NldF9zdGF0aWNfZW52KGssdil7XG4gIGlmKCFnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudilcbiAgICBnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudiA9IHt9XG4gIGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52W2tdID0gdjtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19nZXRlbnYgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub3RfZm91bmRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0ZW52IChuYW1lKSB7XG4gIHZhciBnID0gZ2xvYmFsVGhpcztcbiAgdmFyIG4gPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhuYW1lKTtcbiAgLy9ub2RlanMgZW52XG4gIGlmKGcucHJvY2Vzc1xuICAgICAmJiBnLnByb2Nlc3MuZW52XG4gICAgICYmIGcucHJvY2Vzcy5lbnZbbl0gIT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhnLnByb2Nlc3MuZW52W25dKTtcbiAgaWYoZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnZcbiAgICAgJiYgZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnZbbl0pXG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52W25dKVxuICBjYW1sX3JhaXNlX25vdF9mb3VuZCAoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfdW5zYWZlX2dldGVudlxuLy9SZXF1aXJlczogY2FtbF9zeXNfZ2V0ZW52XG5mdW5jdGlvbiBjYW1sX3N5c191bnNhZmVfZ2V0ZW52KG5hbWUpe1xuICByZXR1cm4gY2FtbF9zeXNfZ2V0ZW52IChuYW1lKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcmd2XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xudmFyIGNhbWxfYXJndiA9ICgoZnVuY3Rpb24gKCkge1xuICB2YXIgZyA9IGdsb2JhbFRoaXM7XG4gIHZhciBtYWluID0gXCJhLm91dFwiO1xuICB2YXIgYXJncyA9IFtdXG5cbiAgaWYoZy5wcm9jZXNzXG4gICAgICYmIGcucHJvY2Vzcy5hcmd2XG4gICAgICYmIGcucHJvY2Vzcy5hcmd2Lmxlbmd0aCA+IDEpIHtcbiAgICB2YXIgYXJndiA9IGcucHJvY2Vzcy5hcmd2XG4gICAgLy9ub2RlanNcbiAgICBtYWluID0gYXJndlsxXTtcbiAgICBhcmdzID0gYXJndi5zbGljZSgyKTtcbiAgfVxuXG4gIHZhciBwID0gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcobWFpbik7XG4gIHZhciBhcmdzMiA9IFswLCBwXTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspXG4gICAgYXJnczIucHVzaChjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhhcmdzW2ldKSk7XG4gIHJldHVybiBhcmdzMjtcbn0pKCkpXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXhlY3V0YWJsZV9uYW1lXG4vL1JlcXVpcmVzOiBjYW1sX2FyZ3ZcbnZhciBjYW1sX2V4ZWN1dGFibGVfbmFtZSA9IGNhbWxfYXJndlsxXVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19nZXRfYXJndlxuLy9SZXF1aXJlczogY2FtbF9hcmd2XG5mdW5jdGlvbiBjYW1sX3N5c19nZXRfYXJndiAoYSkge1xuICByZXR1cm4gWzAsIGNhbWxfYXJndlsxXSwgY2FtbF9hcmd2XTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfYXJndlxuLy9SZXF1aXJlczogY2FtbF9hcmd2XG5mdW5jdGlvbiBjYW1sX3N5c19hcmd2IChhKSB7XG4gIHJldHVybiBjYW1sX2FyZ3Y7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX21vZGlmeV9hcmd2XG4vL1JlcXVpcmVzOiBjYW1sX2FyZ3ZcbmZ1bmN0aW9uIGNhbWxfc3lzX21vZGlmeV9hcmd2KGFyZyl7XG4gIGNhbWxfYXJndiA9IGFyZztcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZSBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9leGVjdXRhYmxlX25hbWVcbmZ1bmN0aW9uIGNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZShhKXtcbiAgcmV0dXJuIGNhbWxfZXhlY3V0YWJsZV9uYW1lXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3N5c3RlbV9jb21tYW5kXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmQoY21kKXtcbiAgdmFyIGNtZCA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKGNtZCk7XG4gIGlmICh0eXBlb2YgcmVxdWlyZSAhPSBcInVuZGVmaW5lZFwiXG4gICAgICAmJiByZXF1aXJlKCdjaGlsZF9wcm9jZXNzJylcbiAgICAgICYmIHJlcXVpcmUoJ2NoaWxkX3Byb2Nlc3MnKS5leGVjU3luYykge1xuICAgIHRyeSB7cmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpLmV4ZWNTeW5jKGNtZCx7c3RkaW86ICdpbmhlcml0J30pOyByZXR1cm4gMH1cbiAgICBjYXRjaCAoZSkge3JldHVybiAxfVxuICB9XG4gIGVsc2UgcmV0dXJuIDEyNztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfdGltZSBtdXRhYmxlXG52YXIgY2FtbF9pbml0aWFsX3RpbWUgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpICogMC4wMDE7XG5mdW5jdGlvbiBjYW1sX3N5c190aW1lICgpIHtcbiAgdmFyIG5vdyA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7XG4gIHJldHVybiBub3cgKiAwLjAwMSAtIGNhbWxfaW5pdGlhbF90aW1lO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c190aW1lX2luY2x1ZGVfY2hpbGRyZW5cbi8vUmVxdWlyZXM6IGNhbWxfc3lzX3RpbWVcbmZ1bmN0aW9uIGNhbWxfc3lzX3RpbWVfaW5jbHVkZV9jaGlsZHJlbihiKSB7XG4gIHJldHVybiBjYW1sX3N5c190aW1lKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JhbmRvbV9zZWVkIG11dGFibGVcbi8vVGhlIGZ1bmN0aW9uIG5lZWRzIHRvIHJldHVybiBhbiBhcnJheSBzaW5jZSBPQ2FtbCA0LjAuLi5cbmZ1bmN0aW9uIGNhbWxfc3lzX3JhbmRvbV9zZWVkICgpIHtcbiAgaWYoZ2xvYmFsVGhpcy5jcnlwdG8pIHtcbiAgICBpZih0eXBlb2YgZ2xvYmFsVGhpcy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzID09PSAnZnVuY3Rpb24nKXtcbiAgICAgIC8vIFdlYmJyb3dzZXJzXG4gICAgICB2YXIgYSA9IG5ldyBnbG9iYWxUaGlzLlVpbnQzMkFycmF5KDEpO1xuICAgICAgZ2xvYmFsVGhpcy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGEpO1xuICAgICAgcmV0dXJuIFswLGFbMF1dO1xuICAgIH0gZWxzZSBpZihnbG9iYWxUaGlzLmNyeXB0by5yYW5kb21CeXRlcyA9PT0gJ2Z1bmN0aW9uJyl7XG4gICAgICAvLyBOb2RlanNcbiAgICAgIHZhciBidWZmID0gZ2xvYmFsVGhpcy5jcnlwdG8ucmFuZG9tQnl0ZXMoNCk7XG4gICAgICB2YXIgYSA9IG5ldyBnbG9iYWxUaGlzLlVpbnQzMkFycmF5KGJ1ZmYpO1xuICAgICAgcmV0dXJuIFswLGFbMF1dO1xuICAgIH1cbiAgfVxuICB2YXIgbm93ID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKTtcbiAgdmFyIHggPSBub3deMHhmZmZmZmZmZipNYXRoLnJhbmRvbSgpO1xuICByZXR1cm4gWzAseF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X2JpZ19lbmRpYW4gY29uc3RcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X2JpZ19lbmRpYW4gKCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF93b3JkX3NpemUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X3dvcmRfc2l6ZSAoKSB7IHJldHVybiAzMjsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9pbnRfc2l6ZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfaW50X3NpemUgKCkgeyByZXR1cm4gMzI7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfbWF4X3dvc2l6ZSBjb25zdFxuLy8gbWF4X2ludCAvIDQgc28gdGhhdCB0aGUgZm9sbG93aW5nIGRvZXMgbm90IG92ZXJmbG93XG4vL2xldCBtYXhfc3RyaW5nX2xlbmd0aCA9IHdvcmRfc2l6ZSAvIDggKiBtYXhfYXJyYXlfbGVuZ3RoIC0gMTs7XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9tYXhfd29zaXplICgpIHsgcmV0dXJuICgweDdGRkZGRkZGLzQpIHwgMDt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X29zdHlwZV91bml4IGNvbnN0XG4vL1JlcXVpcmVzOiBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9vc3R5cGVfdW5peCAoKSB7IHJldHVybiBvc190eXBlID09IFwiVW5peFwiID8gMSA6IDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X29zdHlwZV93aW4zMiBjb25zdFxuLy9SZXF1aXJlczogb3NfdHlwZVxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3dpbjMyICgpIHsgcmV0dXJuIG9zX3R5cGUgPT0gXCJXaW4zMlwiID8gMSA6IDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X29zdHlwZV9jeWd3aW4gY29uc3Rcbi8vUmVxdWlyZXM6IG9zX3R5cGVcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X29zdHlwZV9jeWd3aW4gKCkgeyByZXR1cm4gb3NfdHlwZSA9PSBcIkN5Z3dpblwiID8gMSA6IDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfYmFja2VuZF90eXBlIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9iYWNrZW5kX3R5cGUgKCkge1xuICByZXR1cm4gWzAsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJqc19vZl9vY2FtbFwiKV07XG59XG5cbi8vUHJvdmlkZXM6IG9zX3R5cGVcbnZhciBvc190eXBlID0gKGdsb2JhbFRoaXMucHJvY2VzcyAmJlxuICAgICAgICAgICAgICAgZ2xvYmFsVGhpcy5wcm9jZXNzLnBsYXRmb3JtICYmXG4gICAgICAgICAgICAgICBnbG9iYWxUaGlzLnByb2Nlc3MucGxhdGZvcm0gPT0gXCJ3aW4zMlwiKSA/IFwiQ3lnd2luXCIgOiBcIlVuaXhcIjtcblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19nZXRfY29uZmlnIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19nZXRfY29uZmlnICgpIHtcbiAgcmV0dXJuIFswLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKG9zX3R5cGUpLCAzMiwgMF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2lzYXR0eVxuZnVuY3Rpb24gY2FtbF9zeXNfaXNhdHR5KF9jaGFuKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfdmFyaWFudFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9ydW50aW1lX3ZhcmlhbnQoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfcGFyYW1ldGVyc1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9ydW50aW1lX3BhcmFtZXRlcnMoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5zdGFsbF9zaWduYWxfaGFuZGxlciBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnN0YWxsX3NpZ25hbF9oYW5kbGVyKCl7cmV0dXJuIDB9XG5cbi8vUHJvdmlkZXM6IHVuaXhfaW5ldF9hZGRyX29mX3N0cmluZ1xuZnVuY3Rpb24gdW5peF9pbmV0X2FkZHJfb2Zfc3RyaW5nICgpIHtyZXR1cm4gMDt9XG5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfd2FybmluZ3NcbnZhciBjYW1sX3J1bnRpbWVfd2FybmluZ3MgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzXG4vL1JlcXVpcmVzOiBjYW1sX3J1bnRpbWVfd2FybmluZ3NcbmZ1bmN0aW9uIGNhbWxfbWxfZW5hYmxlX3J1bnRpbWVfd2FybmluZ3MgKGJvb2wpIHtcbiAgY2FtbF9ydW50aW1lX3dhcm5pbmdzID0gYm9vbDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcnVudGltZV93YXJuaW5nc19lbmFibGVkXG4vL1JlcXVpcmVzOiBjYW1sX3J1bnRpbWVfd2FybmluZ3NcbmZ1bmN0aW9uIGNhbWxfbWxfcnVudGltZV93YXJuaW5nc19lbmFibGVkIChfdW5pdCkge1xuICByZXR1cm4gY2FtbF9ydW50aW1lX3dhcm5pbmdzO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3BhY2V0aW1lX2VuYWJsZWQgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9zcGFjZXRpbWVfZW5hYmxlZChfdW5pdCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfbmFrZWRfcG9pbnRlcnNfY2hlY2tlZCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9uYWtlZF9wb2ludGVyc19jaGVja2VkKF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlZ2lzdGVyX2NoYW5uZWxfZm9yX3NwYWNldGltZSBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3JlZ2lzdGVyX2NoYW5uZWxfZm9yX3NwYWNldGltZShfY2hhbm5lbCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zcGFjZXRpbWVfb25seV93b3Jrc19mb3JfbmF0aXZlX2NvZGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfc3BhY2V0aW1lX29ubHlfd29ya3NfZm9yX25hdGl2ZV9jb2RlKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiU3BhY2V0aW1lIHByb2ZpbGluZyBvbmx5IHdvcmtzIGZvciBuYXRpdmUgY29kZVwiKTtcbn1cblxuLy9BbHdheXNcbi8vUmVxdWlyZXM6IGNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX3NldHVwX3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyKCkge1xuICB2YXIgZyA9IGdsb2JhbFRoaXM7XG4gIGlmKGcucHJvY2VzcyAmJiBnLnByb2Nlc3Mub24pIHtcbiAgICBnLnByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgZnVuY3Rpb24gKGVyciwgb3JpZ2luKSB7XG4gICAgICBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbihlcnIpO1xuICAgICAgZy5wcm9jZXNzLmV4aXQgKDIpO1xuICAgIH0pXG4gIH1cbiAgZWxzZSBpZihnLmFkZEV2ZW50TGlzdGVuZXIpe1xuICAgIGcuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBmdW5jdGlvbihldmVudCl7XG4gICAgICBpZihldmVudC5lcnJvcil7XG4gICAgICAgIGNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uKGV2ZW50LmVycm9yKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlcigpO1xuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogTWxGYWtlRGV2aWNlXG4vL1JlcXVpcmVzOiBNbEZha2VGaWxlLCBjYW1sX2NyZWF0ZV9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9hcnJheSwgY2FtbF9ieXRlc19vZl9zdHJpbmcsIGNhbWxfYnl0ZXNfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9pc19tbF9ieXRlcywgY2FtbF9pc19tbF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfcmFpc2Vfd2l0aF9hcmdzLCBjYW1sX25hbWVkX3ZhbHVlc1xuLy9SZXF1aXJlczogbWFrZV91bml4X2Vycl9hcmdzXG5mdW5jdGlvbiBNbEZha2VEZXZpY2UgKHJvb3QsIGYpIHtcbiAgdGhpcy5jb250ZW50PXt9O1xuICB0aGlzLnJvb3QgPSByb290O1xuICB0aGlzLmxvb2t1cEZ1biA9IGY7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLm5tID0gZnVuY3Rpb24obmFtZSkge1xuICByZXR1cm4gKHRoaXMucm9vdCArIG5hbWUpO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5jcmVhdGVfZGlyX2lmX25lZWRlZCA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIGNvbXAgPSBuYW1lLnNwbGl0KFwiL1wiKTtcbiAgdmFyIHJlcyA9IFwiXCI7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBjb21wLmxlbmd0aCAtIDE7IGkrKyl7XG4gICAgcmVzICs9IGNvbXBbaV0gKyBcIi9cIjtcbiAgICBpZih0aGlzLmNvbnRlbnRbcmVzXSkgY29udGludWU7XG4gICAgdGhpcy5jb250ZW50W3Jlc10gPSBTeW1ib2woXCJkaXJlY3RvcnlcIik7XG4gIH1cbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuc2xhc2ggPSBmdW5jdGlvbihuYW1lKXtcbiAgcmV0dXJuIC9cXC8kLy50ZXN0KG5hbWUpP25hbWU6KG5hbWUgKyBcIi9cIik7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmxvb2t1cCA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgaWYoIXRoaXMuY29udGVudFtuYW1lXSAmJiB0aGlzLmxvb2t1cEZ1bikge1xuICAgIHZhciByZXMgPSB0aGlzLmxvb2t1cEZ1bihjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHRoaXMucm9vdCksIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMobmFtZSkpO1xuICAgIGlmKHJlcyAhPT0gMCkge1xuICAgICAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZChuYW1lKTtcbiAgICAgIHRoaXMuY29udGVudFtuYW1lXT1uZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX3N0cmluZyhyZXNbMV0pKTtcbiAgICB9XG4gIH1cbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuZXhpc3RzID0gZnVuY3Rpb24obmFtZSkge1xuICAvLyBUaGUgcm9vdCBvZiB0aGUgZGV2aWNlIGV4aXN0c1xuICBpZihuYW1lID09IFwiXCIpIHJldHVybiAxO1xuICAvLyBDaGVjayBpZiBhIGRpcmVjdG9yeSBleGlzdHNcbiAgdmFyIG5hbWVfc2xhc2ggPSB0aGlzLnNsYXNoKG5hbWUpO1xuICBpZih0aGlzLmNvbnRlbnRbbmFtZV9zbGFzaF0pIHJldHVybiAxO1xuICAvLyBDaGVjayBpZiBhIGZpbGUgZXhpc3RzXG4gIHRoaXMubG9va3VwKG5hbWUpO1xuICByZXR1cm4gdGhpcy5jb250ZW50W25hbWVdPzE6MDtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUubWtkaXIgPSBmdW5jdGlvbihuYW1lLG1vZGUsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSByYWlzZV91bml4ICYmIGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuICBpZih0aGlzLmV4aXN0cyhuYW1lKSkge1xuICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFRVhJU1RcIiwgXCJta2RpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBGaWxlIGV4aXN0c1wiKTtcbiAgICB9XG4gIH1cbiAgdmFyIHBhcmVudCA9IC9eKC4qKVxcL1teL10rLy5leGVjKG5hbWUpO1xuICBwYXJlbnQgPSAocGFyZW50ICYmIHBhcmVudFsxXSkgfHwgJyc7XG4gIGlmKCF0aGlzLmV4aXN0cyhwYXJlbnQpKXtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PRU5UXCIsIFwibWtkaXJcIiwgdGhpcy5ubShwYXJlbnQpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IocGFyZW50ICsgXCI6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIik7XG4gICAgfVxuICB9XG4gIGlmKCF0aGlzLmlzX2RpcihwYXJlbnQpKXtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PVERJUlwiLCBcIm1rZGlyXCIsIHRoaXMubm0ocGFyZW50KSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHBhcmVudCArIFwiOiBOb3QgYSBkaXJlY3RvcnlcIik7XG4gICAgfVxuICB9XG4gIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQodGhpcy5zbGFzaChuYW1lKSk7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnJtZGlyID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB2YXIgdW5peF9lcnJvciA9IHJhaXNlX3VuaXggJiYgY2FtbF9uYW1lZF92YWx1ZSgnVW5peC5Vbml4X2Vycm9yJyk7XG4gIHZhciBuYW1lX3NsYXNoID0gKG5hbWUgPT0gXCJcIik/XCJcIjoodGhpcy5zbGFzaChuYW1lKSk7XG4gIHZhciByID0gbmV3IFJlZ0V4cChcIl5cIiArIG5hbWVfc2xhc2ggKyBcIihbXi9dKylcIik7XG4gIGlmKCF0aGlzLmV4aXN0cyhuYW1lKSkge1xuICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFTk9FTlRcIiwgXCJybWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgfVxuICBpZighdGhpcy5pc19kaXIobmFtZSkpIHtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PVERJUlwiLCBcInJtZGlyXCIsIHRoaXMubm0obmFtZSkpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IE5vdCBhIGRpcmVjdG9yeVwiKTtcbiAgICB9XG4gIH1cbiAgZm9yKHZhciBuIGluIHRoaXMuY29udGVudCkge1xuICAgIGlmKG4ubWF0Y2gocikpIHtcbiAgICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT1RFTVBUWVwiLCBcInJtZGlyXCIsIHRoaXMubm0obmFtZSkpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIjogRGlyZWN0b3J5IG5vdCBlbXB0eVwiKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgZGVsZXRlIHRoaXMuY29udGVudFtuYW1lX3NsYXNoXTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUucmVhZGRpciA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIG5hbWVfc2xhc2ggPSAobmFtZSA9PSBcIlwiKT9cIlwiOih0aGlzLnNsYXNoKG5hbWUpKTtcbiAgaWYoIXRoaXMuZXhpc3RzKG5hbWUpKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xuICB9XG4gIGlmKCF0aGlzLmlzX2RpcihuYW1lKSkge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogTm90IGEgZGlyZWN0b3J5XCIpO1xuICB9XG4gIHZhciByID0gbmV3IFJlZ0V4cChcIl5cIiArIG5hbWVfc2xhc2ggKyBcIihbXi9dKylcIik7XG4gIHZhciBzZWVuID0ge31cbiAgdmFyIGEgPSBbXTtcbiAgZm9yKHZhciBuIGluIHRoaXMuY29udGVudCkge1xuICAgIHZhciBtID0gbi5tYXRjaChyKTtcbiAgICBpZihtICYmICFzZWVuW21bMV1dKSB7c2VlblttWzFdXSA9IHRydWU7IGEucHVzaChtWzFdKX1cbiAgfVxuICByZXR1cm4gYTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuaXNfZGlyID0gZnVuY3Rpb24obmFtZSkge1xuICBpZihuYW1lID09IFwiXCIpICByZXR1cm4gdHJ1ZTtcbiAgdmFyIG5hbWVfc2xhc2ggPSB0aGlzLnNsYXNoKG5hbWUpO1xuICByZXR1cm4gdGhpcy5jb250ZW50W25hbWVfc2xhc2hdPzE6MDtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUudW5saW5rID0gZnVuY3Rpb24obmFtZSkge1xuICB2YXIgb2sgPSB0aGlzLmNvbnRlbnRbbmFtZV0/dHJ1ZTpmYWxzZTtcbiAgZGVsZXRlIHRoaXMuY29udGVudFtuYW1lXTtcbiAgcmV0dXJuIG9rO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5vcGVuID0gZnVuY3Rpb24obmFtZSwgZikge1xuICBpZihmLnJkb25seSAmJiBmLndyb25seSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3Jkb25seSBhbmQgT3Blbl93cm9ubHkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICBpZihmLnRleHQgJiYgZi5iaW5hcnkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl90ZXh0IGFuZCBPcGVuX2JpbmFyeSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIHRoaXMubG9va3VwKG5hbWUpO1xuICBpZiAodGhpcy5jb250ZW50W25hbWVdKSB7XG4gICAgaWYgKHRoaXMuaXNfZGlyKG5hbWUpKSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBpcyBhIGRpcmVjdG9yeVwiKTtcbiAgICBpZiAoZi5jcmVhdGUgJiYgZi5leGNsKSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmaWxlIGFscmVhZHkgZXhpc3RzXCIpO1xuICAgIHZhciBmaWxlID0gdGhpcy5jb250ZW50W25hbWVdO1xuICAgIGlmKGYudHJ1bmNhdGUpIGZpbGUudHJ1bmNhdGUoKTtcbiAgICByZXR1cm4gZmlsZTtcbiAgfSBlbHNlIGlmIChmLmNyZWF0ZSkge1xuICAgIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQobmFtZSk7XG4gICAgdGhpcy5jb250ZW50W25hbWVdID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9jcmVhdGVfYnl0ZXMoMCkpO1xuICAgIHJldHVybiB0aGlzLmNvbnRlbnRbbmFtZV07XG4gIH0gZWxzZSB7XG4gICAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUgKHRoaXMubm0obmFtZSkpO1xuICB9XG59XG5cbk1sRmFrZURldmljZS5wcm90b3R5cGUucmVnaXN0ZXI9IGZ1bmN0aW9uIChuYW1lLGNvbnRlbnQpe1xuICB2YXIgZmlsZTtcbiAgaWYodGhpcy5jb250ZW50W25hbWVdKSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmaWxlIGFscmVhZHkgZXhpc3RzXCIpO1xuICBpZihjYW1sX2lzX21sX2J5dGVzKGNvbnRlbnQpKVxuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShjb250ZW50KTtcbiAgaWYoY2FtbF9pc19tbF9zdHJpbmcoY29udGVudCkpXG4gICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGNvbnRlbnQpKTtcbiAgZWxzZSBpZihjb250ZW50IGluc3RhbmNlb2YgQXJyYXkpXG4gICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfYnl0ZXNfb2ZfYXJyYXkoY29udGVudCkpO1xuICBlbHNlIGlmKHR5cGVvZiBjb250ZW50ID09PSBcInN0cmluZ1wiKVxuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX2pzYnl0ZXMoY29udGVudCkpO1xuICBlbHNlIGlmKGNvbnRlbnQudG9TdHJpbmcpIHtcbiAgICB2YXIgYnl0ZXMgPSBjYW1sX2J5dGVzX29mX3N0cmluZyhjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhjb250ZW50LnRvU3RyaW5nKCkpKTtcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoYnl0ZXMpO1xuICB9XG4gIGlmKGZpbGUpe1xuICAgIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQobmFtZSk7XG4gICAgdGhpcy5jb250ZW50W25hbWVdID0gZmlsZTtcbiAgfVxuICBlbHNlIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IHJlZ2lzdGVyaW5nIGZpbGUgd2l0aCBpbnZhbGlkIGNvbnRlbnQgdHlwZVwiKTtcbn1cblxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1sRmFrZURldmljZVxuXG4vL1Byb3ZpZGVzOiBNbEZha2VGaWxlXG4vL1JlcXVpcmVzOiBNbEZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfY3JlYXRlX2J5dGVzLCBjYW1sX21sX2J5dGVzX2xlbmd0aCwgY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2JsaXRfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2dldFxuZnVuY3Rpb24gTWxGYWtlRmlsZShjb250ZW50KXtcbiAgdGhpcy5kYXRhID0gY29udGVudDtcbn1cbk1sRmFrZUZpbGUucHJvdG90eXBlID0gbmV3IE1sRmlsZSAoKTtcbk1sRmFrZUZpbGUucHJvdG90eXBlLnRydW5jYXRlID0gZnVuY3Rpb24obGVuKXtcbiAgdmFyIG9sZCA9IHRoaXMuZGF0YTtcbiAgdGhpcy5kYXRhID0gY2FtbF9jcmVhdGVfYnl0ZXMobGVufDApO1xuICBjYW1sX2JsaXRfYnl0ZXMob2xkLCAwLCB0aGlzLmRhdGEsIDAsIGxlbik7XG59XG5NbEZha2VGaWxlLnByb3RvdHlwZS5sZW5ndGggPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBjYW1sX21sX2J5dGVzX2xlbmd0aCh0aGlzLmRhdGEpO1xufVxuTWxGYWtlRmlsZS5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihvZmZzZXQsYnVmLHBvcyxsZW4pe1xuICB2YXIgY2xlbiA9IHRoaXMubGVuZ3RoKCk7XG4gIGlmKG9mZnNldCArIGxlbiA+PSBjbGVuKSB7XG4gICAgdmFyIG5ld19zdHIgPSBjYW1sX2NyZWF0ZV9ieXRlcyhvZmZzZXQgKyBsZW4pO1xuICAgIHZhciBvbGRfZGF0YSA9IHRoaXMuZGF0YTtcbiAgICB0aGlzLmRhdGEgPSBuZXdfc3RyO1xuICAgIGNhbWxfYmxpdF9ieXRlcyhvbGRfZGF0YSwgMCwgdGhpcy5kYXRhLCAwLCBjbGVuKTtcbiAgfVxuICBjYW1sX2JsaXRfc3RyaW5nKGJ1ZiwgcG9zLCB0aGlzLmRhdGEsIG9mZnNldCwgbGVuKTtcbiAgcmV0dXJuIDBcbn1cbk1sRmFrZUZpbGUucHJvdG90eXBlLnJlYWQgPSBmdW5jdGlvbihvZmZzZXQsYnVmLHBvcyxsZW4pe1xuICB2YXIgY2xlbiA9IHRoaXMubGVuZ3RoKCk7XG4gIGNhbWxfYmxpdF9ieXRlcyh0aGlzLmRhdGEsIG9mZnNldCwgYnVmLCBwb3MsIGxlbik7XG4gIHJldHVybiAwXG59XG5NbEZha2VGaWxlLnByb3RvdHlwZS5yZWFkX29uZSA9IGZ1bmN0aW9uKG9mZnNldCl7XG4gIHJldHVybiBjYW1sX2J5dGVzX2dldCh0aGlzLmRhdGEsIG9mZnNldCk7XG59XG5NbEZha2VGaWxlLnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uKCl7XG5cbn1cbk1sRmFrZUZpbGUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTWxGYWtlRmlsZVxuIiwiLy9Qcm92aWRlczogaW5pdGlhbGl6ZV9uYXRcbi8vUmVxdWlyZXM6IGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogc2VyaWFsaXplX25hdCwgZGVzZXJpYWxpemVfbmF0LCBjYW1sX2hhc2hfbmF0XG5mdW5jdGlvbiBpbml0aWFsaXplX25hdCgpIHtcbiAgY2FtbF9jdXN0b21fb3BzW1wiX25hdFwiXSA9XG4gICAgeyBkZXNlcmlhbGl6ZSA6IGRlc2VyaWFsaXplX25hdCxcbiAgICAgIHNlcmlhbGl6ZSA6IHNlcmlhbGl6ZV9uYXQsXG4gICAgICBoYXNoIDogY2FtbF9oYXNoX25hdFxuICAgIH1cbn1cblxuLy9Qcm92aWRlczogTWxOYXRcbmZ1bmN0aW9uIE1sTmF0KHgpe1xuICB0aGlzLmRhdGEgPSBuZXcgZ2xvYmFsVGhpcy5JbnQzMkFycmF5KHgpO1xuICAvLyBsZW5ndGhfbmF0IGlzbid0IGV4dGVybmFsLCBzbyB3ZSBoYXZlIHRvIG1ha2UgdGhlIE9iai5zaXplXG4gIC8vIHdvcmsgb3V0IHJpZ2h0LiBUaGUgKzIgdG8gYXJyYXkgbGVuZ3RoIHNlZW1zIHRvIHdvcmsuXG4gIHRoaXMubGVuZ3RoID0gdGhpcy5kYXRhLmxlbmd0aCArIDJcbn1cblxuTWxOYXQucHJvdG90eXBlLmNhbWxfY3VzdG9tID0gXCJfbmF0XCI7XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9uYXRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50LCBudW1fZGlnaXRzX25hdFxuZnVuY3Rpb24gY2FtbF9oYXNoX25hdCh4KSB7XG4gIHZhciBsZW4gPSBudW1fZGlnaXRzX25hdCh4LCAwLCB4LmRhdGEubGVuZ3RoKTtcbiAgdmFyIGggPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHguZGF0YVtpXSk7XG4gIH1cbiAgcmV0dXJuIGg7XG59XG5cblxuLy9Qcm92aWRlczogbmF0X29mX2FycmF5XG4vL1JlcXVpcmVzOiBNbE5hdFxuZnVuY3Rpb24gbmF0X29mX2FycmF5KGwpe1xuICByZXR1cm4gbmV3IE1sTmF0KGwpO1xufVxuXG4vL1Byb3ZpZGVzOiBjcmVhdGVfbmF0XG4vL1JlcXVpcmVzOiBNbE5hdFxuZnVuY3Rpb24gY3JlYXRlX25hdChzaXplKSB7XG4gIHZhciBhcnIgPSBuZXcgTWxOYXQoc2l6ZSk7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICBhcnIuZGF0YVtpXSA9IC0xO1xuICB9XG4gIHJldHVybiBhcnI7XG59XG5cbi8vUHJvdmlkZXM6IHNldF90b196ZXJvX25hdFxuZnVuY3Rpb24gc2V0X3RvX3plcm9fbmF0KG5hdCwgb2ZzLCBsZW4pIHtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgbmF0LmRhdGFbb2ZzK2ldID0gMDtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogYmxpdF9uYXRcbmZ1bmN0aW9uIGJsaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIsIGxlbikge1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IG5hdDIuZGF0YVtvZnMyK2ldO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBzZXRfZGlnaXRfbmF0XG5mdW5jdGlvbiBzZXRfZGlnaXRfbmF0KG5hdCwgb2ZzLCBkaWdpdCkge1xuICBuYXQuZGF0YVtvZnNdID0gZGlnaXQ7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBudGhfZGlnaXRfbmF0XG5mdW5jdGlvbiBudGhfZGlnaXRfbmF0KG5hdCwgb2ZzKSB7XG4gIHJldHVybiBuYXQuZGF0YVtvZnNdO1xufVxuXG4vL1Byb3ZpZGVzOiBzZXRfZGlnaXRfbmF0X25hdGl2ZVxuZnVuY3Rpb24gc2V0X2RpZ2l0X25hdF9uYXRpdmUobmF0LCBvZnMsIGRpZ2l0KSB7XG4gIG5hdC5kYXRhW29mc10gPSBkaWdpdDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IG50aF9kaWdpdF9uYXRfbmF0aXZlXG5mdW5jdGlvbiBudGhfZGlnaXRfbmF0X25hdGl2ZShuYXQsIG9mcykge1xuICByZXR1cm4gbmF0LmRhdGFbb2ZzXTtcbn1cblxuLy9Qcm92aWRlczogbnVtX2RpZ2l0c19uYXRcbmZ1bmN0aW9uIG51bV9kaWdpdHNfbmF0KG5hdCwgb2ZzLCBsZW4pIHtcbiAgZm9yKHZhciBpID0gbGVuIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBpZihuYXQuZGF0YVtvZnMraV0gIT0gMCkgcmV0dXJuIGkrMTtcbiAgfVxuICByZXR1cm4gMTsgLy8gMCBjb3VudHMgYXMgMSBkaWdpdFxufVxuXG4vL1Byb3ZpZGVzOiBudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXRcbmZ1bmN0aW9uIG51bV9sZWFkaW5nX3plcm9fYml0c19pbl9kaWdpdChuYXQsIG9mcykge1xuICB2YXIgYSA9IG5hdC5kYXRhW29mc107XG4gIHZhciBiID0gMDtcbiAgaWYoYSAmIDB4RkZGRjAwMDApIHsgYiArPTE2OyBhID4+Pj0xNjsgfVxuICBpZihhICYgMHhGRjAwKSAgICAgeyBiICs9IDg7IGEgPj4+PSA4OyB9XG4gIGlmKGEgJiAweEYwKSAgICAgICB7IGIgKz0gNDsgYSA+Pj49IDQ7IH1cbiAgaWYoYSAmIDEyKSAgICAgICAgIHsgYiArPSAyOyBhID4+Pj0gMjsgfVxuICBpZihhICYgMikgICAgICAgICAgeyBiICs9IDE7IGEgPj4+PSAxOyB9XG4gIGlmKGEgJiAxKSAgICAgICAgICB7IGIgKz0gMTsgfVxuICByZXR1cm4gMzIgLSBiO1xufVxuXG4vL1Byb3ZpZGVzOiBpc19kaWdpdF9pbnRcbmZ1bmN0aW9uIGlzX2RpZ2l0X2ludChuYXQsIG9mcykge1xuICBpZiAobmF0LmRhdGFbb2ZzXSA+PSAwKSByZXR1cm4gMVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogaXNfZGlnaXRfemVyb1xuZnVuY3Rpb24gaXNfZGlnaXRfemVybyhuYXQsIG9mcykge1xuICBpZihuYXQuZGF0YVtvZnNdID09IDApIHJldHVybiAxO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogaXNfZGlnaXRfb2RkXG5mdW5jdGlvbiBpc19kaWdpdF9vZGQobmF0LCBvZnMpIHtcbiAgaWYobmF0LmRhdGFbb2ZzXSAmIDEpIHJldHVybiAxO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogaW5jcl9uYXRcbmZ1bmN0aW9uIGluY3JfbmF0KG5hdCwgb2ZzLCBsZW4sIGNhcnJ5X2luKSB7XG4gIHZhciBjYXJyeSA9IGNhcnJ5X2luO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgeCA9IChuYXQuZGF0YVtvZnMraV0gPj4+IDApICsgY2Fycnk7XG4gICAgbmF0LmRhdGFbb2ZzK2ldID0gKHggfCAwKTtcbiAgICBpZih4ID09ICh4ID4+PiAwKSkge1xuICAgICAgY2FycnkgPSAwO1xuICAgICAgYnJlYWs7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhcnJ5ID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhcnJ5O1xufVxuXG4vLyBsZW4xID49IGxlbjJcbi8vUHJvdmlkZXM6IGFkZF9uYXRcbi8vUmVxdWlyZXM6IGluY3JfbmF0XG5mdW5jdGlvbiBhZGRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIGNhcnJ5X2luKSB7XG4gIHZhciBjYXJyeSA9IGNhcnJ5X2luO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0MS5kYXRhW29mczEraV0gPj4+IDApICsgKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSArIGNhcnJ5O1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0geFxuICAgIGlmKHggPT0gKHggPj4+IDApKSB7XG4gICAgICBjYXJyeSA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhcnJ5ID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGluY3JfbmF0KG5hdDEsIG9mczErbGVuMiwgbGVuMS1sZW4yLCBjYXJyeSk7XG59XG5cbi8vUHJvdmlkZXM6IGNvbXBsZW1lbnRfbmF0XG5mdW5jdGlvbiBjb21wbGVtZW50X25hdChuYXQsIG9mcywgbGVuKSB7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIG5hdC5kYXRhW29mcytpXSA9ICgtMSA+Pj4gMCkgLSAobmF0LmRhdGFbb2ZzK2ldID4+PiAwKTtcbiAgfVxufVxuXG4vLyBvY2FtbCBmbGlwcyBjYXJyeV9pblxuLy9Qcm92aWRlczogZGVjcl9uYXRcbmZ1bmN0aW9uIGRlY3JfbmF0KG5hdCwgb2ZzLCBsZW4sIGNhcnJ5X2luKSB7XG4gIHZhciBib3Jyb3cgPSAoY2FycnlfaW4gPT0gMSkgPyAwIDogMTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0LmRhdGFbb2ZzK2ldID4+PjApIC0gYm9ycm93O1xuICAgIG5hdC5kYXRhW29mcytpXSA9IHg7XG4gICAgaWYgKHggPj0gMCkge1xuICAgICAgYm9ycm93ID0gMDtcbiAgICAgIGJyZWFrO1xuICAgIH0gZWxzZSB7XG4gICAgICBib3Jyb3cgPSAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gKGJvcnJvdyA9PSAxKSA/IDAgOiAxO1xufVxuXG4vLyBvY2FtbCBmbGlwcyBjYXJyeV9pblxuLy8gbGVuMSA+PSBsZW4yXG4vL1Byb3ZpZGVzOiBzdWJfbmF0XG4vL1JlcXVpcmVzOiBkZWNyX25hdFxuZnVuY3Rpb24gc3ViX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBjYXJyeV9pbikge1xuICB2YXIgYm9ycm93ID0gKGNhcnJ5X2luID09IDEpID8gMCA6IDE7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW4yOyBpKyspIHtcbiAgICB2YXIgeCA9IChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgLSAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApIC0gYm9ycm93O1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0geDtcbiAgICBpZiAoeCA+PSAwKSB7XG4gICAgICBib3Jyb3cgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBib3Jyb3cgPSAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZGVjcl9uYXQobmF0MSwgb2ZzMStsZW4yLCBsZW4xLWxlbjIsIChib3Jyb3c9PTEpPzA6MSk7XG59XG5cbi8vIG5hdDEgKz0gbmF0MiAqIG5hdDNbb2ZzM11cbi8vIGxlbjEgPj0gbGVuMlxuLy9Qcm92aWRlczogbXVsdF9kaWdpdF9uYXRcbi8vUmVxdWlyZXM6IGFkZF9uYXQsIG5hdF9vZl9hcnJheVxuZnVuY3Rpb24gbXVsdF9kaWdpdF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0Mywgb2ZzMykge1xuICB2YXIgY2FycnkgPSAwO1xuICB2YXIgYSA9IChuYXQzLmRhdGFbb2ZzM10gPj4+IDApO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMjsgaSsrKSB7XG4gICAgdmFyIHgxID0gKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSArIChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkgKiAoYSAmIDB4MDAwMEZGRkYpICsgY2Fycnk7XG4gICAgdmFyIHgyID0gKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSAqIChhID4+PiAxNik7XG4gICAgY2FycnkgPSBNYXRoLmZsb29yKHgyLzY1NTM2KTtcbiAgICB2YXIgeDMgPSB4MSArICh4MiAlIDY1NTM2KSAqIDY1NTM2O1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0geDM7XG4gICAgY2FycnkgKz0gTWF0aC5mbG9vcih4My80Mjk0OTY3Mjk2KTtcbiAgfVxuXG4gIGlmKGxlbjIgPCBsZW4xICYmIGNhcnJ5KSB7XG4gICAgcmV0dXJuIGFkZF9uYXQobmF0MSwgb2ZzMStsZW4yLCBsZW4xLWxlbjIsIG5hdF9vZl9hcnJheShbY2FycnldKSwgMCwgMSwgMCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNhcnJ5O1xuICB9XG59XG5cbi8vIG5hdDEgKz0gbmF0MiAqIG5hdDNcbi8vIGxlbjEgPj0gbGVuMiArIGxlbjMuXG4vL1Byb3ZpZGVzOiBtdWx0X25hdFxuLy9SZXF1aXJlczogbXVsdF9kaWdpdF9uYXRcbmZ1bmN0aW9uIG11bHRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIG5hdDMsIG9mczMsIGxlbjMpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjM7IGkrKykge1xuICAgIGNhcnJ5ICs9IG11bHRfZGlnaXRfbmF0KG5hdDEsIG9mczEraSwgbGVuMS1pLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXQzLCBvZnMzK2kpO1xuICB9XG4gIHJldHVybiBjYXJyeTtcbn1cblxuLy8gbmF0MSA9IDIgKiBuYXQxICsgbmF0MiAqIG5hdDJcbi8vIGxlbjEgPj0gMiAqIGxlbjJcbi8vUHJvdmlkZXM6IHNxdWFyZV9uYXRcbi8vUmVxdWlyZXM6IG11bHRfbmF0LCBhZGRfbmF0XG5mdW5jdGlvbiBzcXVhcmVfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgY2FycnkgKz0gYWRkX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQxLCBvZnMxLCBsZW4xLCAwKTtcbiAgY2FycnkgKz0gbXVsdF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0Miwgb2ZzMiwgbGVuMik7XG4gIHJldHVybiBjYXJyeTtcbn1cblxuXG4vLyAwIDw9IHNoaWZ0IDwgMzJcbi8vUHJvdmlkZXM6IHNoaWZ0X2xlZnRfbmF0XG5mdW5jdGlvbiBzaGlmdF9sZWZ0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBuYml0cykge1xuICBpZihuYml0cyA9PSAwKSB7XG4gICAgbmF0Mi5kYXRhW29mczJdID0gMDtcbiAgICByZXR1cm4gMDtcbiAgfVxuICB2YXIgd3JhcCA9IDA7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW4xOyBpKyspIHtcbiAgICB2YXIgYSA9IChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCk7XG4gICAgbmF0MS5kYXRhW29mczEraV0gPSAoYSA8PCBuYml0cykgfCB3cmFwO1xuICAgIHdyYXAgPSBhID4+PiAoMzIgLSBuYml0cyk7XG4gIH1cbiAgbmF0Mi5kYXRhW29mczJdID0gd3JhcDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vIEFzc3VtaW5nIGMgPiBhLCByZXR1cm5zIFtxdW90aWVudCwgcmVtYWluZGVyXSBvZiAoYTw8MzIgKyBiKS9jXG4vL1Byb3ZpZGVzOiBkaXZfaGVscGVyXG5mdW5jdGlvbiBkaXZfaGVscGVyKGEsIGIsIGMpIHtcbiAgdmFyIHggPSBhICogNjU1MzYgKyAoYj4+PjE2KTtcbiAgdmFyIHkgPSBNYXRoLmZsb29yKHgvYykgKiA2NTUzNjtcbiAgdmFyIHogPSAoeCAlIGMpICogNjU1MzY7XG4gIHZhciB3ID0geiArIChiICYgMHgwMDAwRkZGRik7XG4gIHJldHVybiBbeSArIE1hdGguZmxvb3Iody9jKSwgdyAlIGNdO1xufVxuXG4vLyBuYXQxW29mczErbGVuXSA8IG5hdDJbb2ZzMl1cbi8vUHJvdmlkZXM6IGRpdl9kaWdpdF9uYXRcbi8vUmVxdWlyZXM6IGRpdl9oZWxwZXJcbmZ1bmN0aW9uIGRpdl9kaWdpdF9uYXQobmF0cSwgb2ZzcSwgbmF0ciwgb2ZzciwgbmF0MSwgb2ZzMSwgbGVuLCBuYXQyLCBvZnMyKSB7XG4gIHZhciByZW0gPSAobmF0MS5kYXRhW29mczErbGVuLTFdID4+PjApO1xuICAvLyBuYXRxW29mc3ErbGVuLTFdIGlzIGd1YXJhbnRlZWQgdG8gYmUgemVybyAoZHVlIHRvIHRoZSBNU0QgcmVxdWlyZW1lbnQpLFxuICAvLyBhbmQgc2hvdWxkIG5vdCBiZSB3cml0dGVuIHRvLlxuICBmb3IodmFyIGkgPSBsZW4tMjsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgeCA9IGRpdl9oZWxwZXIocmVtLCAobmF0MS5kYXRhW29mczEraV0gPj4+IDApLCAobmF0Mi5kYXRhW29mczJdID4+PiAwKSk7XG4gICAgbmF0cS5kYXRhW29mc3EraV0gPSB4WzBdO1xuICAgIHJlbSA9IHhbMV07XG4gIH1cbiAgbmF0ci5kYXRhW29mc3JdID0gcmVtO1xuICByZXR1cm4gMDtcbn1cblxuLy8gbmF0MVtuYXQyOl0gOj0gbmF0MSAvIG5hdDJcbi8vIG5hdDFbOm5hdDJdIDo9IG5hdDEgJSBuYXQyXG4vLyBsZW4xID4gbGVuMiwgbmF0MltvZnMyK2xlbjItMV0gPiBuYXQxW29mczErbGVuMS0xXVxuLy9Qcm92aWRlczogZGl2X25hdFxuLy9SZXF1aXJlczogZGl2X2RpZ2l0X25hdCwgZGl2X2hlbHBlciwgbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0LCBzaGlmdF9sZWZ0X25hdCwgc2hpZnRfcmlnaHRfbmF0LCBjcmVhdGVfbmF0LCBzZXRfdG9femVyb19uYXQsIG11bHRfZGlnaXRfbmF0LCBzdWJfbmF0LCBjb21wYXJlX25hdCwgbmF0X29mX2FycmF5XG5mdW5jdGlvbiBkaXZfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIpIHtcbiAgaWYobGVuMiA9PSAxKSB7XG4gICAgZGl2X2RpZ2l0X25hdChuYXQxLCBvZnMxKzEsIG5hdDEsIG9mczEsIG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIpO1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgdmFyIHMgPSBudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXQobmF0Miwgb2ZzMitsZW4yLTEpO1xuICBzaGlmdF9sZWZ0X25hdChuYXQyLCBvZnMyLCBsZW4yLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7XG4gIHNoaWZ0X2xlZnRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdF9vZl9hcnJheShbMF0pLCAwLCBzKTtcblxuICB2YXIgZCA9IChuYXQyLmRhdGFbb2ZzMitsZW4yLTFdID4+PiAwKSArIDE7XG4gIHZhciBhID0gY3JlYXRlX25hdChsZW4yKzEpO1xuICBmb3IgKHZhciBpID0gbGVuMSAtIDE7IGkgPj0gbGVuMjsgaS0tKSB7XG4gICAgLy8gRGVjZW50IGxvd2VyIGJvdW5kIG9uIHF1b1xuICAgIHZhciBxdW8gPSBkID09IDQyOTQ5NjcyOTYgPyAobmF0MS5kYXRhW29mczEraV0gPj4+IDApIDogZGl2X2hlbHBlcigobmF0MS5kYXRhW29mczEraV0gPj4+IDApLCAobmF0MS5kYXRhW29mczEraS0xXSA+Pj4wKSwgZClbMF07XG4gICAgc2V0X3RvX3plcm9fbmF0KGEsIDAsIGxlbjIrMSk7XG4gICAgbXVsdF9kaWdpdF9uYXQoYSwgMCwgbGVuMisxLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXRfb2ZfYXJyYXkoW3F1b10pLCAwKTtcbiAgICBzdWJfbmF0KG5hdDEsIG9mczEraS1sZW4yLCBsZW4yKzEsIGEsIDAsIGxlbjIrMSwgMSk7XG5cbiAgICB3aGlsZSAobmF0MS5kYXRhW29mczEraV0gIT0gMCB8fCBjb21wYXJlX25hdChuYXQxLCBvZnMxK2ktbGVuMiwgbGVuMiwgbmF0Miwgb2ZzMiwgbGVuMikgPj0gMCkge1xuICAgICAgcXVvID0gcXVvICsgMTtcbiAgICAgIHN1Yl9uYXQobmF0MSwgb2ZzMStpLWxlbjIsIGxlbjIrMSwgbmF0Miwgb2ZzMiwgbGVuMiwgMSk7XG4gICAgfVxuXG4gICAgbmF0MS5kYXRhW29mczEraV0gPSBxdW87XG4gIH1cblxuICBzaGlmdF9yaWdodF9uYXQobmF0MSwgb2ZzMSwgbGVuMiwgbmF0X29mX2FycmF5KFswXSksIDAsIHMpOyAvLyBzaGlmdCByZW1haW5kZXJcbiAgc2hpZnRfcmlnaHRfbmF0KG5hdDIsIG9mczIsIGxlbjIsIG5hdF9vZl9hcnJheShbMF0pLCAwLCBzKTsgLy8gcmVzdG9yZVxuICByZXR1cm4gMDtcbn1cblxuXG4vLyAwIDw9IHNoaWZ0IDwgMzJcbi8vUHJvdmlkZXM6IHNoaWZ0X3JpZ2h0X25hdFxuZnVuY3Rpb24gc2hpZnRfcmlnaHRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIG5iaXRzKSB7XG4gIGlmKG5iaXRzID09IDApIHtcbiAgICBuYXQyLmRhdGFbb2ZzMl0gPSAwO1xuICAgIHJldHVybiAwO1xuICB9XG4gIHZhciB3cmFwID0gMDtcbiAgZm9yKHZhciBpID0gbGVuMS0xOyBpID49IDA7IGktLSkge1xuICAgIHZhciBhID0gbmF0MS5kYXRhW29mczEraV0gPj4+IDA7XG4gICAgbmF0MS5kYXRhW29mczEraV0gPSAoYSA+Pj4gbmJpdHMpIHwgd3JhcDtcbiAgICB3cmFwID0gYSA8PCAoMzIgLSBuYml0cyk7XG4gIH1cbiAgbmF0Mi5kYXRhW29mczJdID0gd3JhcDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNvbXBhcmVfZGlnaXRzX25hdFxuZnVuY3Rpb24gY29tcGFyZV9kaWdpdHNfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgaWYobmF0MS5kYXRhW29mczFdID4gbmF0Mi5kYXRhW29mczJdKSByZXR1cm4gMTtcbiAgaWYobmF0MS5kYXRhW29mczFdIDwgbmF0Mi5kYXRhW29mczJdKSByZXR1cm4gLTE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjb21wYXJlX25hdFxuLy9SZXF1aXJlczogbnVtX2RpZ2l0c19uYXRcbmZ1bmN0aW9uIGNvbXBhcmVfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIpIHtcbiAgdmFyIGEgPSBudW1fZGlnaXRzX25hdChuYXQxLCBvZnMxLCBsZW4xKTtcbiAgdmFyIGIgPSBudW1fZGlnaXRzX25hdChuYXQyLCBvZnMyLCBsZW4yKTtcbiAgaWYoYSA+IGIpIHJldHVybiAxO1xuICBpZihhIDwgYikgcmV0dXJuIC0xO1xuICBmb3IodmFyIGkgPSBsZW4xIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBpZiAoKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSA+IChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkpIHJldHVybiAxO1xuICAgIGlmICgobmF0MS5kYXRhW29mczEraV0gPj4+IDApIDwgKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSkgcmV0dXJuIC0xO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjb21wYXJlX25hdF9yZWFsXG4vL1JlcXVpcmVzOiBjb21wYXJlX25hdFxuZnVuY3Rpb24gY29tcGFyZV9uYXRfcmVhbChuYXQxLG5hdDIpe1xuICByZXR1cm4gY29tcGFyZV9uYXQobmF0MSwwLG5hdDEuZGF0YS5sZW5ndGgsbmF0MiwwLG5hdDIuZGF0YS5sZW5ndGgpO1xufVxuXG4vL1Byb3ZpZGVzOiBsYW5kX2RpZ2l0X25hdFxuZnVuY3Rpb24gbGFuZF9kaWdpdF9uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMikge1xuICBuYXQxLmRhdGFbb2ZzMV0gJj0gbmF0Mi5kYXRhW29mczJdO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbG9yX2RpZ2l0X25hdFxuZnVuY3Rpb24gbG9yX2RpZ2l0X25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyKSB7XG4gIG5hdDEuZGF0YVtvZnMxXSB8PSBuYXQyLmRhdGFbb2ZzMl07XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBseG9yX2RpZ2l0X25hdFxuZnVuY3Rpb24gbHhvcl9kaWdpdF9uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMikge1xuICBuYXQxLmRhdGFbb2ZzMV0gXj0gbmF0Mi5kYXRhW29mczJdO1xuICByZXR1cm4gMDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBzZXJpYWxpemVfbmF0XG5mdW5jdGlvbiBzZXJpYWxpemVfbmF0KHdyaXRlciwgbmF0LCBzeil7XG4gIHZhciBsZW4gPSBuYXQuZGF0YS5sZW5ndGg7XG4gIHdyaXRlci53cml0ZSgzMiwgbGVuKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKXtcbiAgICB3cml0ZXIud3JpdGUoMzIsIG5hdC5kYXRhW2ldKTtcbiAgfVxuICBzelswXSA9IGxlbiAqIDQ7XG4gIHN6WzFdID0gbGVuICogODtcbn1cblxuLy9Qcm92aWRlczogZGVzZXJpYWxpemVfbmF0XG4vL1JlcXVpcmVzOiBNbE5hdFxuZnVuY3Rpb24gZGVzZXJpYWxpemVfbmF0KHJlYWRlciwgc3ope1xuICB2YXIgbGVuID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgdmFyIG5hdCA9IG5ldyBNbE5hdChsZW4pO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspe1xuICAgIG5hdC5kYXRhW2ldID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgfVxuICBzelswXSA9IGxlbiAqIDQ7XG4gIHJldHVybiBuYXQ7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSHVnbyBIZXV6YXJkXG5cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlXG52YXIgY2FtbF9ncl9zdGF0ZTtcblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3RhdGVfZ2V0KCkge1xuICBpZihjYW1sX2dyX3N0YXRlKSB7XG4gICAgcmV0dXJuIGNhbWxfZ3Jfc3RhdGU7XG4gIH1cbiAgdGhyb3cgWzAsY2FtbF9uYW1lZF92YWx1ZShcIkdyYXBoaWNzLkdyYXBoaWNfZmFpbHVyZVwiKSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIk5vdCBpbml0aWFsaXplZFwiKV1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlLGNhbWxfZ3Jfc3RhdGVfaW5pdFxuZnVuY3Rpb24gY2FtbF9ncl9zdGF0ZV9zZXQoY3R4KSB7XG4gIGNhbWxfZ3Jfc3RhdGU9Y3R4O1xuICBjYW1sX2dyX3N0YXRlX2luaXQoKVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9vcGVuX2dyYXBoXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX29wZW5fZ3JhcGgoaW5mbyl7XG4gIHZhciBnID0gZ2xvYmFsVGhpcztcbiAgdmFyIGluZm8gPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhpbmZvKTtcbiAgZnVuY3Rpb24gZ2V0KG5hbWUpe1xuICAgIHZhciByZXMgPSBpbmZvLm1hdGNoKFwiKF58LCkgKlwiK25hbWUrXCIgKj0gKihbYS16QS1aMC05X10rKSAqKCx8JClcIik7XG4gICAgaWYocmVzKSByZXR1cm4gcmVzWzJdO1xuICB9XG4gIHZhciBzcGVjcyA9IFtdO1xuICBpZighKGluZm89PVwiXCIpKSBzcGVjcy5wdXNoKGluZm8pO1xuICB2YXIgdGFyZ2V0ID0gZ2V0KFwidGFyZ2V0XCIpO1xuICBpZighdGFyZ2V0KSB0YXJnZXQ9XCJcIjtcbiAgdmFyIHN0YXR1cyA9IGdldChcInN0YXR1c1wiKTtcbiAgaWYoIXN0YXR1cykgc3BlY3MucHVzaChcInN0YXR1cz0xXCIpXG5cbiAgdmFyIHcgPSBnZXQoXCJ3aWR0aFwiKTtcbiAgdyA9IHc/cGFyc2VJbnQodyk6MjAwO1xuICBzcGVjcy5wdXNoKFwid2lkdGg9XCIrdyk7XG5cbiAgdmFyIGggPSBnZXQoXCJoZWlnaHRcIik7XG4gIGggPSBoP3BhcnNlSW50KGgpOjIwMDtcbiAgc3BlY3MucHVzaChcImhlaWdodD1cIitoKTtcblxuICB2YXIgd2luID0gZy5vcGVuKFwiYWJvdXQ6YmxhbmtcIix0YXJnZXQsc3BlY3Muam9pbihcIixcIikpO1xuICBpZighd2luKSB7Y2FtbF9mYWlsd2l0aChcIkdyYXBoaWNzLm9wZW5fZ3JhcGg6IGNhbm5vdCBvcGVuIHRoZSB3aW5kb3dcIil9XG4gIHZhciBkb2MgPSB3aW4uZG9jdW1lbnQ7XG4gIHZhciBjYW52YXMgPSBkb2MuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgY2FudmFzLndpZHRoID0gdztcbiAgY2FudmFzLmhlaWdodCA9IGg7XG4gIHZhciBjdHggPSBjYW1sX2dyX3N0YXRlX2NyZWF0ZShjYW52YXMsdyxoKTtcbiAgY3R4LnNldF90aXRsZSA9IGZ1bmN0aW9uICh0aXRsZSkge1xuICAgIGRvYy50aXRsZSA9IHRpdGxlO1xuICB9O1xuICBjYW1sX2dyX3N0YXRlX3NldChjdHgpO1xuICB2YXIgYm9keSA9IGRvYy5ib2R5O1xuICBib2R5LnN0eWxlLm1hcmdpbiA9IFwiMHB4XCI7XG4gIGJvZHkuYXBwZW5kQ2hpbGQoY2FudmFzKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVfaW5pdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zZXRfY29sb3IsY2FtbF9ncl9tb3ZldG8sY2FtbF9ncl9yZXNpemVfd2luZG93XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3NldF9saW5lX3dpZHRoLGNhbWxfZ3Jfc2V0X3RleHRfc2l6ZSxjYW1sX2dyX3NldF9mb250XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGVcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3RhdGVfaW5pdCgpe1xuICBjYW1sX2dyX21vdmV0byhjYW1sX2dyX3N0YXRlLngsY2FtbF9ncl9zdGF0ZS55KTtcbiAgY2FtbF9ncl9yZXNpemVfd2luZG93KGNhbWxfZ3Jfc3RhdGUud2lkdGgsY2FtbF9ncl9zdGF0ZS5oZWlnaHQpO1xuICBjYW1sX2dyX3NldF9saW5lX3dpZHRoKGNhbWxfZ3Jfc3RhdGUubGluZV93aWR0aCk7XG4gIGNhbWxfZ3Jfc2V0X3RleHRfc2l6ZShjYW1sX2dyX3N0YXRlLnRleHRfc2l6ZSk7XG4gIGNhbWxfZ3Jfc2V0X2ZvbnQoY2FtbF9ncl9zdGF0ZS5mb250KTtcbiAgY2FtbF9ncl9zZXRfY29sb3IoY2FtbF9ncl9zdGF0ZS5jb2xvcik7XG4gIGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZShjYW1sX2dyX3N0YXRlLnRpdGxlKTtcbiAgLy9jYW1sX2dyX3Jlc2l6ZV93aW5kb3cgbWlnaHQgcmVzZXQgc29tZSBjYW52YXMnIHByb3BlcnRpZXNcbiAgY2FtbF9ncl9zdGF0ZS5jb250ZXh0LnRleHRCYXNlbGluZSA9ICdib3R0b20nO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9ncl9zdGF0ZV9jcmVhdGUoY2FudmFzLHcsaCl7XG4gIHZhciBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcbiAgcmV0dXJuIHtcbiAgICBjb250ZXh0OiBjb250ZXh0LFxuICAgIGNhbnZhcyA6IGNhbnZhcyxcbiAgICB4IDogMCxcbiAgICB5IDogMCxcbiAgICB3aWR0aCA6IHcsXG4gICAgaGVpZ2h0IDogaCxcbiAgICBsaW5lX3dpZHRoIDogMSxcbiAgICBmb250IDogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcImZpeGVkXCIpLFxuICAgIHRleHRfc2l6ZSA6IDI2LFxuICAgIGNvbG9yIDogMHgwMDAwMDAsXG4gICAgdGl0bGUgOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpXG4gIH07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZG9jX29mX3N0YXRlXG5mdW5jdGlvbiBjYW1sX2dyX2RvY19vZl9zdGF0ZShzdGF0ZSkge1xuICBpZihzdGF0ZS5jYW52YXMub3duZXJEb2N1bWVudClcbiAgICByZXR1cm4gc3RhdGUuY2FudmFzLm93bmVyRG9jdW1lbnQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY2xvc2VfZ3JhcGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2Nsb3NlX2dyYXBoKCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jYW52YXMud2lkdGggPSAwO1xuICBzLmNhbnZhcy5oZWlnaHQgPSAwO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZShuYW1lKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLnRpdGxlID0gbmFtZTtcbiAgdmFyIGpzbmFtZSA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWUpO1xuICBpZihzLnNldF90aXRsZSkgcy5zZXRfdGl0bGUoanNuYW1lKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfcmVzaXplX3dpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfcmVzaXplX3dpbmRvdyh3LGgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KClcbiAgcy53aWR0aCA9IHc7XG4gIHMuaGVpZ2h0ID0gaDtcbiAgcy5jYW52YXMud2lkdGggPSB3O1xuICBzLmNhbnZhcy5oZWlnaHQgPSBoO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9jbGVhcl9ncmFwaFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfY2xlYXJfZ3JhcGgoKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNhbnZhcy53aWR0aCA9IHMud2lkdGg7XG4gIHMuY2FudmFzLmhlaWdodCA9IHMuaGVpZ2h0O1xuICAvLyAgcy5jb250ZXh0LnN0cm9rZVJlY3QgKDAuLCAwLiwgcy53aWR0aCwgcy5oZWlnaHQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zaXplX3hcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NpemVfeCgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLndpZHRoO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9zaXplX3lcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NpemVfeSgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLmhlaWdodDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF9jb2xvclxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X2NvbG9yKGNvbG9yKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBmdW5jdGlvbiBjb252ZXJ0KG51bWJlcikge1xuICAgIHZhciBzdHIgPSAnJyArIG51bWJlci50b1N0cmluZygxNik7XG4gICAgd2hpbGUgKHN0ci5sZW5ndGggPCAyKSBzdHIgPSAnMCcgKyBzdHI7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuICB2YXJcbiAgciA9IChjb2xvciA+PiAxNikgJiAweGZmLFxuICBnID0gKGNvbG9yID4+IDgpICAmIDB4ZmYsXG4gIGIgPSAoY29sb3IgPj4gMCkgICYgMHhmZjtcbiAgcy5jb2xvcj1jb2xvcjtcbiAgdmFyIGNfc3RyID0gJyMnICsgY29udmVydChyKSArIGNvbnZlcnQoZykgKyBjb252ZXJ0KGIpO1xuICBzLmNvbnRleHQuZmlsbFN0eWxlID0gICBjX3N0cjtcbiAgcy5jb250ZXh0LnN0cm9rZVN0eWxlID0gY19zdHI7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9wbG90XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9wbG90KHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIGltPXMuY29udGV4dC5jcmVhdGVJbWFnZURhdGEoMSwxKTtcbiAgdmFyIGQgPSBpbS5kYXRhO1xuICB2YXIgY29sb3IgPSBzLmNvbG9yO1xuICBkWzBdID0gKGNvbG9yID4+IDE2KSAmIDB4ZmY7IC8vclxuICBkWzFdID0gKGNvbG9yID4+IDgpICAmIDB4ZmYsIC8vZ1xuICBkWzJdID0gKGNvbG9yID4+IDApICAmIDB4ZmY7IC8vYlxuICBkWzNdID0gMHhGRjsgLy9hXG4gIHMueD14O1xuICBzLnk9eTtcbiAgcy5jb250ZXh0LnB1dEltYWdlRGF0YShpbSx4LHMuaGVpZ2h0IC0geSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3BvaW50X2NvbG9yXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9wb2ludF9jb2xvcih4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBpbT1zLmNvbnRleHQuZ2V0SW1hZ2VEYXRhKHgscy5oZWlnaHQgLSB5LDEsMSk7XG4gIHZhciBkID0gaW0uZGF0YTtcbiAgcmV0dXJuIChkWzBdIDw8IDE2KSArIChkWzFdIDw8IDgpICsgZFsyXTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfbW92ZXRvXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9tb3ZldG8oeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLng9eDtcbiAgcy55PXk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2N1cnJlbnRfeFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfY3VycmVudF94KCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMueFxufVxuLy9Qcm92aWRlczogY2FtbF9ncl9jdXJyZW50X3lcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2N1cnJlbnRfeSgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLnlcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfbGluZXRvXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9saW5ldG8oeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIHMuY29udGV4dC5tb3ZlVG8ocy54LHMuaGVpZ2h0IC0gcy55KTtcbiAgcy5jb250ZXh0LmxpbmVUbyh4LHMuaGVpZ2h0IC0geSk7XG4gIHMuY29udGV4dC5zdHJva2UoKTtcbiAgcy54PXg7XG4gIHMueT15O1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19yZWN0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X3JlY3QoeCx5LHcsaCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LnN0cm9rZVJlY3QoeCxzLmhlaWdodCAtIHksdywtaCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2FyY19hdXhcbmZ1bmN0aW9uIGNhbWxfZ3JfYXJjX2F1eChjdHgsY3gsY3kscnkscngsYTEsYTIpe1xuICB3aGlsZShhMT5hMikgYTIrPTM2MDtcbiAgYTEgLz0gMTgwO1xuICBhMiAvPSAxODA7XG4gIHZhciByb3QgPSAwLHhQb3MseVBvcyx4UG9zX3ByZXYseVBvc19wcmV2O1xuICB2YXIgc3BhY2UgPSAyO1xuICB2YXIgbnVtID0gKCgoYTIgLSBhMSkgKiBNYXRoLlBJICogKChyeCtyeSkvMikpIC8gc3BhY2UpIHwgMDtcbiAgdmFyIGRlbHRhID0gKGEyIC0gYTEpICogTWF0aC5QSSAvIG51bTtcbiAgdmFyIGkgPSBhMSAqIE1hdGguUEk7XG4gIGZvciAodmFyIGo9MDtqPD1udW07aisrKXtcbiAgICB4UG9zID0gY3ggLSAocnggKiBNYXRoLnNpbihpKSkgKiBNYXRoLnNpbihyb3QgKiBNYXRoLlBJKSArIChyeSAqIE1hdGguY29zKGkpKSAqIE1hdGguY29zKHJvdCAqIE1hdGguUEkpO1xuICAgIHhQb3MgPSB4UG9zLnRvRml4ZWQoMik7XG4gICAgeVBvcyA9IGN5ICsgKHJ5ICogTWF0aC5jb3MoaSkpICogTWF0aC5zaW4ocm90ICogTWF0aC5QSSkgKyAocnggKiBNYXRoLnNpbihpKSkgKiBNYXRoLmNvcyhyb3QgKiBNYXRoLlBJKTtcbiAgICB5UG9zID0geVBvcy50b0ZpeGVkKDIpO1xuICAgIGlmIChqPT0wKSB7XG4gICAgICBjdHgubW92ZVRvKHhQb3MsIHlQb3MpO1xuICAgIH0gZWxzZSBpZiAoeFBvc19wcmV2IT14UG9zIHx8IHlQb3NfcHJldiE9eVBvcyl7XG4gICAgICBjdHgubGluZVRvKHhQb3MsIHlQb3MpO1xuICAgIH1cbiAgICB4UG9zX3ByZXY9eFBvcztcbiAgICB5UG9zX3ByZXY9eVBvcztcbiAgICBpLT0gZGVsdGE7Ly9jY3dcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfYXJjXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldCwgY2FtbF9ncl9hcmNfYXV4XG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfYXJjKHgseSxyeCxyeSxhMSxhMil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBjYW1sX2dyX2FyY19hdXgocy5jb250ZXh0LHgscy5oZWlnaHQgLSB5LHJ4LHJ5LGExLGEyKTtcbiAgcy5jb250ZXh0LnN0cm9rZSgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfbGluZV93aWR0aFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgodyl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5saW5lX3dpZHRoID0gdztcbiAgcy5jb250ZXh0LmxpbmVXaWR0aCA9IHdcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZmlsbF9yZWN0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9maWxsX3JlY3QoeCx5LHcsaCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmZpbGxSZWN0KHgscy5oZWlnaHQgLSB5LHcsLWgpO1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZmlsbF9wb2x5XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9maWxsX3BvbHkoYXIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgcy5jb250ZXh0Lm1vdmVUbyhhclsxXVsxXSxzLmhlaWdodCAtIGFyWzFdWzJdKTtcbiAgZm9yKHZhciBpID0gMjsgaSA8IGFyLmxlbmd0aDsgaSsrKVxuICAgIHMuY29udGV4dC5saW5lVG8oYXJbaV1bMV0scy5oZWlnaHQgLSBhcltpXVsyXSk7XG4gIHMuY29udGV4dC5saW5lVG8oYXJbMV1bMV0scy5oZWlnaHQgLSBhclsxXVsyXSk7XG4gIHMuY29udGV4dC5maWxsKCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2ZpbGxfYXJjXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldCwgY2FtbF9ncl9hcmNfYXV4XG5mdW5jdGlvbiBjYW1sX2dyX2ZpbGxfYXJjKHgseSxyeCxyeSxhMSxhMil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBjYW1sX2dyX2FyY19hdXgocy5jb250ZXh0LHgscy5oZWlnaHQgLSB5LHJ4LHJ5LGExLGEyKTtcbiAgcy5jb250ZXh0LmZpbGwoKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19zdHJcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfc3RyKHN0cil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIG0gPSBzLmNvbnRleHQubWVhc3VyZVRleHQoc3RyKTtcbiAgdmFyIGR4ID0gbS53aWR0aDtcbiAgcy5jb250ZXh0LmZpbGxUZXh0KHN0cixzLngscy5oZWlnaHQgLSBzLnkpO1xuICBzLnggKz0gZHggfCAwO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X2NoYXJcbi8vUmVxdWlyZXM6IGNhbWxfZ3JfZHJhd19zdHJcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19jaGFyKGMpe1xuICBjYW1sX2dyX2RyYXdfc3RyKFN0cmluZy5mcm9tQ2hhckNvZGUoYykpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ncl9kcmF3X3N0clxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19zdHJpbmcoc3RyKXtcbiAgY2FtbF9ncl9kcmF3X3N0cihjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzdHIpKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X2ZvbnRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9zZXRfZm9udChmKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmZvbnQgPSBmO1xuICBzLmNvbnRleHQuZm9udCA9IHMudGV4dF9zaXplICsgXCJweCBcIiArIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMuZm9udCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF90ZXh0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9zZXRfdGV4dF9zaXplKHNpemUpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMudGV4dF9zaXplID0gc2l6ZTtcbiAgcy5jb250ZXh0LmZvbnQgPSBzLnRleHRfc2l6ZSArIFwicHggXCIgKyBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzLmZvbnQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl90ZXh0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl90ZXh0X3NpemUodHh0KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgdyA9IHMuY29udGV4dC5tZWFzdXJlVGV4dChjYW1sX2pzc3RyaW5nX29mX3N0cmluZyh0eHQpKS53aWR0aDtcbiAgcmV0dXJuIFswLHcscy50ZXh0X3NpemVdO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfbWFrZV9pbWFnZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfbWFrZV9pbWFnZShhcnIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBoID0gYXJyLmxlbmd0aCAtIDEgO1xuICB2YXIgdyA9IGFyclsxXS5sZW5ndGggLSAxO1xuICB2YXIgaW0gPSBzLmNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKHcsaCk7XG4gIGZvcih2YXIgaT0wO2k8aDtpKyspe1xuICAgIGZvcih2YXIgaj0wO2o8dztqKyspe1xuICAgICAgdmFyIGMgPSBhcnJbaSsxXVtqKzFdO1xuICAgICAgdmFyIG8gPSBpKih3KjQpICsgKGogKiA0KTtcbiAgICAgIGlmKGMgPT0gLTEpIHtcbiAgICAgICAgaW0uZGF0YVtvICsgMF0gPSAwO1xuICAgICAgICBpbS5kYXRhW28gKyAxXSA9IDA7XG4gICAgICAgIGltLmRhdGFbbyArIDJdID0gMDtcbiAgICAgICAgaW0uZGF0YVtvICsgM10gPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW0uZGF0YVtvICsgMF0gPSBjID4+IDE2ICYgMHhmZjtcbiAgICAgICAgaW0uZGF0YVtvICsgMV0gPSBjID4+ICA4ICYgMHhmZjtcbiAgICAgICAgaW0uZGF0YVtvICsgMl0gPSBjID4+ICAwICYgMFhmZjtcbiAgICAgICAgaW0uZGF0YVtvICsgM10gPSAweGZmO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gaW1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHVtcF9pbWFnZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZHVtcF9pbWFnZShpbSl7XG4gIHZhciBkYXRhID0gWzBdXG4gIGZvcih2YXIgaT0wOyBpPGltLmhlaWdodDtpKyspe1xuICAgIGRhdGFbaSsxXSA9IFswXVxuICAgIGZvcih2YXIgaj0wOyBqPGltLndpZHRoO2orKyl7XG4gICAgICB2YXIgbyA9IGkqKGltLndpZHRoKjQpICsgKGogKiA0KSxcbiAgICAgICAgICByID0gaW0uZGF0YVtvKzBdLFxuICAgICAgICAgIGcgPSBpbS5kYXRhW28rMV0sXG4gICAgICAgICAgYiA9IGltLmRhdGFbbysyXTtcbiAgICAgIGRhdGFbaSsxXVtqKzFdID0gKHIgPDwgMTYpICsgKGcgPDwgOCkgKyBiXG4gICAgfVxuICB9XG4gIHJldHVybiBkYXRhXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfaW1hZ2UoaW0seCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBpZighaW0uaW1hZ2UpIHtcbiAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgICBjYW52YXMud2lkdGggPSBzLndpZHRoO1xuICAgIGNhbnZhcy5oZWlnaHQgPSBzLmhlaWdodDtcbiAgICBjYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpLnB1dEltYWdlRGF0YShpbSwwLDApO1xuICAgIHZhciBpbWFnZSA9IG5ldyBnbG9iYWxUaGlzLkltYWdlKCk7XG4gICAgaW1hZ2Uub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgcy5jb250ZXh0LmRyYXdJbWFnZShpbWFnZSx4LHMuaGVpZ2h0IC0gaW0uaGVpZ2h0IC0geSk7XG4gICAgICBpbS5pbWFnZSA9IGltYWdlO1xuICAgIH1cbiAgICBpbWFnZS5zcmMgPSBjYW52YXMudG9EYXRhVVJMKFwiaW1hZ2UvcG5nXCIpO1xuICB9IGVsc2Uge1xuICAgIHMuY29udGV4dC5kcmF3SW1hZ2UoaW0uaW1hZ2UseCxzLmhlaWdodCAtIGltLmhlaWdodCAtIHkpO1xuICB9XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9jcmVhdGVfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2NyZWF0ZV9pbWFnZSh4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLmNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKHgseSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2JsaXRfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2JsaXRfaW1hZ2UoaW0seCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaW0yID0gcy5jb250ZXh0LmdldEltYWdlRGF0YSh4LHMuaGVpZ2h0IC0gaW0uaGVpZ2h0IC0geSxpbS53aWR0aCxpbS5oZWlnaHQpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGltMi5kYXRhLmxlbmd0aDsgaSs9NCl7XG4gICAgaW0uZGF0YVtpXSA9IGltMi5kYXRhW2ldO1xuICAgIGltLmRhdGFbaSsxXSA9IGltMi5kYXRhW2krMV07XG4gICAgaW0uZGF0YVtpKzJdID0gaW0yLmRhdGFbaSsyXTtcbiAgICBpbS5kYXRhW2krM10gPSBpbTIuZGF0YVtpKzNdO1xuICB9XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9zaWdpb19oYW5kbGVyXG5mdW5jdGlvbiBjYW1sX2dyX3NpZ2lvX2hhbmRsZXIoKXtyZXR1cm4gMH1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2lnaW9fc2lnbmFsXG5mdW5jdGlvbiBjYW1sX2dyX3NpZ2lvX3NpZ25hbCgpe3JldHVybiAwfVxuLy9Qcm92aWRlczogY2FtbF9ncl93YWl0X2V2ZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX3dhaXRfZXZlbnQoX2V2bCl7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX3dhaXRfZXZlbnQgbm90IEltcGxlbWVudGVkOiB1c2UgR3JhcGhpY3NfanMgaW5zdGVhZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zeW5jaHJvbml6ZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9zeW5jaHJvbml6ZSAoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX3N5bmNocm9uaXplIG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfcmVtZW1iZXJfbW9kZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9yZW1lbWJlcl9tb2RlICgpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3JfcmVtZW1iZXJfbW9kZSBub3QgSW1wbGVtZW50ZWRcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2Rpc3BsYXlfbW9kZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9kaXNwbGF5X21vZGUoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX2Rpc3BsYXlfbW9kZSBub3QgSW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfd2luZG93X2lkXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX3dpbmRvd19pZChhKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX3dpbmRvd19pZCBub3QgSW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3dcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3coYSxiLGMsZCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9vcGVuX3N1YndpbmRvdyBub3QgSW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY2xvc2Vfc3Vid2luZG93XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX2Nsb3NlX3N1YndpbmRvdyhhKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX2Nsb3NlX3N1YndpbmRvdyBub3QgSW1wbGVtZW50ZWRcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9tYXJzaGFsX2NvbnN0YW50c1xudmFyIGNhbWxfbWFyc2hhbF9jb25zdGFudHMgPSB7XG4gIFBSRUZJWF9TTUFMTF9CTE9DSzogICAgICAgICAweDgwLFxuICBQUkVGSVhfU01BTExfSU5UOiAgICAgICAgICAgMHg0MCxcbiAgUFJFRklYX1NNQUxMX1NUUklORzogICAgICAgIDB4MjAsXG4gIENPREVfSU5UODogICAgICAgICAgICAgICAgICAweDAwLFxuICBDT0RFX0lOVDE2OiAgICAgICAgICAgICAgICAgMHgwMSxcbiAgQ09ERV9JTlQzMjogICAgICAgICAgICAgICAgIDB4MDIsXG4gIENPREVfSU5UNjQ6ICAgICAgICAgICAgICAgICAweDAzLFxuICBDT0RFX1NIQVJFRDg6ICAgICAgICAgICAgICAgMHgwNCxcbiAgQ09ERV9TSEFSRUQxNjogICAgICAgICAgICAgIDB4MDUsXG4gIENPREVfU0hBUkVEMzI6ICAgICAgICAgICAgICAweDA2LFxuICBDT0RFX0JMT0NLMzI6ICAgICAgICAgICAgICAgMHgwOCxcbiAgQ09ERV9CTE9DSzY0OiAgICAgICAgICAgICAgIDB4MTMsXG4gIENPREVfU1RSSU5HODogICAgICAgICAgICAgICAweDA5LFxuICBDT0RFX1NUUklORzMyOiAgICAgICAgICAgICAgMHgwQSxcbiAgQ09ERV9ET1VCTEVfQklHOiAgICAgICAgICAgIDB4MEIsXG4gIENPREVfRE9VQkxFX0xJVFRMRTogICAgICAgICAweDBDLFxuICBDT0RFX0RPVUJMRV9BUlJBWThfQklHOiAgICAgMHgwRCxcbiAgQ09ERV9ET1VCTEVfQVJSQVk4X0xJVFRMRTogIDB4MEUsXG4gIENPREVfRE9VQkxFX0FSUkFZMzJfQklHOiAgICAweDBGLFxuICBDT0RFX0RPVUJMRV9BUlJBWTMyX0xJVFRMRTogMHgwNyxcbiAgQ09ERV9DT0RFUE9JTlRFUjogICAgICAgICAgIDB4MTAsXG4gIENPREVfSU5GSVhQT0lOVEVSOiAgICAgICAgICAweDExLFxuICBDT0RFX0NVU1RPTTogICAgICAgICAgICAgICAgMHgxMixcbiAgQ09ERV9DVVNUT01fTEVOOiAgICAgICAgICAgIDB4MTgsXG4gIENPREVfQ1VTVE9NX0ZJWEVEOiAgICAgICAgICAweDE5XG59XG5cblxuLy9Qcm92aWRlczogTWxTdHJpbmdSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIE1sU3RyaW5nUmVhZGVyIChzLCBpKSB7IHRoaXMucyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocyk7IHRoaXMuaSA9IGk7IH1cbk1sU3RyaW5nUmVhZGVyLnByb3RvdHlwZSA9IHtcbiAgcmVhZDh1OmZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMucy5jaGFyQ29kZUF0KHRoaXMuaSsrKTsgfSxcbiAgcmVhZDhzOmZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMucy5jaGFyQ29kZUF0KHRoaXMuaSsrKSA8PCAyNCA+PiAyNDsgfSxcbiAgcmVhZDE2dTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChzLmNoYXJDb2RlQXQoaSkgPDwgOCkgfCBzLmNoYXJDb2RlQXQoaSArIDEpXG4gIH0sXG4gIHJlYWQxNnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAocy5jaGFyQ29kZUF0KGkpIDw8IDI0ID4+IDE2KSB8IHMuY2hhckNvZGVBdChpICsgMSk7XG4gIH0sXG4gIHJlYWQzMnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoKHMuY2hhckNvZGVBdChpKSA8PCAyNCkgfCAocy5jaGFyQ29kZUF0KGkrMSkgPDwgMTYpIHxcbiAgICAgICAgICAgIChzLmNoYXJDb2RlQXQoaSsyKSA8PCA4KSB8IHMuY2hhckNvZGVBdChpKzMpKSA+Pj4gMDtcbiAgfSxcbiAgcmVhZDMyczpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDQ7XG4gICAgcmV0dXJuIChzLmNoYXJDb2RlQXQoaSkgPDwgMjQpIHwgKHMuY2hhckNvZGVBdChpKzEpIDw8IDE2KSB8XG4gICAgICAocy5jaGFyQ29kZUF0KGkrMikgPDwgOCkgfCBzLmNoYXJDb2RlQXQoaSszKTtcbiAgfSxcbiAgcmVhZHN0cjpmdW5jdGlvbiAobGVuKSB7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh0aGlzLnMuc3Vic3RyaW5nKGksIGkgKyBsZW4pKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBCaWdTdHJpbmdSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5LCBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBCaWdTdHJpbmdSZWFkZXIgKGJzLCBpKSB7IHRoaXMucyA9IGJzOyB0aGlzLmkgPSBpOyB9XG5CaWdTdHJpbmdSZWFkZXIucHJvdG90eXBlID0ge1xuICByZWFkOHU6ZnVuY3Rpb24gKCkgeyByZXR1cm4gY2FtbF9iYV9nZXRfMSh0aGlzLnMsdGhpcy5pKyspOyB9LFxuICByZWFkOHM6ZnVuY3Rpb24gKCkgeyByZXR1cm4gY2FtbF9iYV9nZXRfMSh0aGlzLnMsdGhpcy5pKyspIDw8IDI0ID4+IDI0OyB9LFxuICByZWFkMTZ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKGNhbWxfYmFfZ2V0XzEocyxpKSA8PCA4KSB8IGNhbWxfYmFfZ2V0XzEocyxpICsgMSlcbiAgfSxcbiAgcmVhZDE2czpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChjYW1sX2JhX2dldF8xKHMsaSkgPDwgMjQgPj4gMTYpIHwgY2FtbF9iYV9nZXRfMShzLGkgKyAxKTtcbiAgfSxcbiAgcmVhZDMydTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDQ7XG4gICAgcmV0dXJuICgoY2FtbF9iYV9nZXRfMShzLGkpICAgPDwgMjQpIHwgKGNhbWxfYmFfZ2V0XzEocyxpKzEpIDw8IDE2KSB8XG4gICAgICAgICAgICAoY2FtbF9iYV9nZXRfMShzLGkrMikgPDwgOCkgIHwgY2FtbF9iYV9nZXRfMShzLGkrMykgICAgICAgICApID4+PiAwO1xuICB9LFxuICByZWFkMzJzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKGNhbWxfYmFfZ2V0XzEocyxpKSAgIDw8IDI0KSB8IChjYW1sX2JhX2dldF8xKHMsaSsxKSA8PCAxNikgfFxuICAgICAgKGNhbWxfYmFfZ2V0XzEocyxpKzIpIDw8IDgpICB8IGNhbWxfYmFfZ2V0XzEocyxpKzMpO1xuICB9LFxuICByZWFkc3RyOmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB2YXIgYXJyID0gbmV3IEFycmF5KGxlbilcbiAgICBmb3IodmFyIGogPSAwOyBqIDwgbGVuOyBqKyspe1xuICAgICAgYXJyW2pdID0gY2FtbF9iYV9nZXRfMSh0aGlzLnMsIGkraik7XG4gICAgfVxuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KGFycik7XG4gIH1cbn1cblxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cywgY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9mbG9hdF9vZl9ieXRlcyAoYSkge1xuICByZXR1cm4gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzIChjYW1sX2ludDY0X29mX2J5dGVzIChhKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9zdHJpbmcgbXV0YWJsZVxuLy9SZXF1aXJlczogTWxTdHJpbmdSZWFkZXIsIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXJcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9zdHJpbmcocyxvZnMpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBNbFN0cmluZ1JlYWRlciAocywgdHlwZW9mIG9mcz09XCJudW1iZXJcIj9vZnM6b2ZzWzBdKTtcbiAgcmV0dXJuIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIocmVhZGVyLCBvZnMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBNbFN0cmluZ1JlYWRlciwgY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlciwgY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcyhzLG9mcykge1xuICB2YXIgcmVhZGVyID0gbmV3IE1sU3RyaW5nUmVhZGVyIChjYW1sX3N0cmluZ19vZl9ieXRlcyhzKSwgdHlwZW9mIG9mcz09XCJudW1iZXJcIj9vZnM6b2ZzWzBdKTtcbiAgcmV0dXJuIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIocmVhZGVyLCBvZnMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdW5tYXJzaGFsXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ludDY0X3VubWFyc2hhbChyZWFkZXIsIHNpemUpe1xuICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgc2l6ZVswXSA9IDg7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzICh0KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9tYXJzaGFsXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ludDY0X21hcnNoYWwod3JpdGVyLCB2LCBzaXplcykge1xuICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMgKHYpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IDg7IGkrKykgd3JpdGVyLndyaXRlICg4LCBiW2ldKTtcbiAgc2l6ZXNbMF0gPSA4OyBzaXplc1sxXSA9IDg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50MzJfdW5tYXJzaGFsXG5mdW5jdGlvbiBjYW1sX2ludDMyX3VubWFyc2hhbChyZWFkZXIsIHNpemUpe1xuICBzaXplWzBdID0gNDtcbiAgcmV0dXJuIHJlYWRlci5yZWFkMzJzICgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25hdGl2ZWludF91bm1hcnNoYWxcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfbmF0aXZlaW50X3VubWFyc2hhbChyZWFkZXIsIHNpemUpe1xuICBzd2l0Y2ggKHJlYWRlci5yZWFkOHUgKCkpIHtcbiAgY2FzZSAxOlxuICAgIHNpemVbMF0gPSA0O1xuICAgIHJldHVybiByZWFkZXIucmVhZDMycyAoKTtcbiAgY2FzZSAyOlxuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogbmF0aXZlIGludGVnZXIgdmFsdWUgdG9vIGxhcmdlXCIpO1xuICBkZWZhdWx0OiBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGlsbC1mb3JtZWQgbmF0aXZlIGludGVnZXJcIik7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3VubWFyc2hhbCwgY2FtbF9pbnQ2NF9tYXJzaGFsLCBjYW1sX2ludDY0X2NvbXBhcmUsIGNhbWxfaW50NjRfaGFzaFxuLy9SZXF1aXJlczogY2FtbF9pbnQzMl91bm1hcnNoYWwsIGNhbWxfbmF0aXZlaW50X3VubWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9iYV9zZXJpYWxpemUsIGNhbWxfYmFfZGVzZXJpYWxpemUsIGNhbWxfYmFfY29tcGFyZSwgY2FtbF9iYV9oYXNoXG52YXIgY2FtbF9jdXN0b21fb3BzID1cbiAgICB7XCJfalwiOiB7XG4gICAgICBkZXNlcmlhbGl6ZSA6IGNhbWxfaW50NjRfdW5tYXJzaGFsLFxuICAgICAgc2VyaWFsaXplICA6IGNhbWxfaW50NjRfbWFyc2hhbCxcbiAgICAgIGZpeGVkX2xlbmd0aCA6IDgsXG4gICAgICBjb21wYXJlIDogY2FtbF9pbnQ2NF9jb21wYXJlLFxuICAgICAgaGFzaCA6IGNhbWxfaW50NjRfaGFzaFxuICAgIH0sXG4gICAgIFwiX2lcIjoge1xuICAgICAgIGRlc2VyaWFsaXplIDogY2FtbF9pbnQzMl91bm1hcnNoYWwsXG4gICAgICAgZml4ZWRfbGVuZ3RoIDogNCxcbiAgICAgfSxcbiAgICAgXCJfblwiOiB7XG4gICAgICAgZGVzZXJpYWxpemUgOiBjYW1sX25hdGl2ZWludF91bm1hcnNoYWwsXG4gICAgICAgZml4ZWRfbGVuZ3RoIDogNCxcbiAgICAgfSxcbiAgICAgXCJfYmlnYXJyYXlcIjp7XG4gICAgICAgZGVzZXJpYWxpemUgOiAoZnVuY3Rpb24gKHJlYWRlciwgc3opIHtyZXR1cm4gY2FtbF9iYV9kZXNlcmlhbGl6ZSAocmVhZGVyLHN6LFwiX2JpZ2FycmF5XCIpfSksXG4gICAgICAgc2VyaWFsaXplIDogY2FtbF9iYV9zZXJpYWxpemUsXG4gICAgICAgY29tcGFyZSA6IGNhbWxfYmFfY29tcGFyZSxcbiAgICAgICBoYXNoOiBjYW1sX2JhX2hhc2gsXG4gICAgIH0sXG4gICAgIFwiX2JpZ2FycjAyXCI6e1xuICAgICAgIGRlc2VyaWFsaXplIDogKGZ1bmN0aW9uIChyZWFkZXIsIHN6KSB7cmV0dXJuIGNhbWxfYmFfZGVzZXJpYWxpemUgKHJlYWRlcixzeixcIl9iaWdhcnIwMlwiKX0pLFxuICAgICAgIHNlcmlhbGl6ZSA6IGNhbWxfYmFfc2VyaWFsaXplLFxuICAgICAgIGNvbXBhcmUgOiBjYW1sX2JhX2NvbXBhcmUsXG4gICAgICAgaGFzaDogY2FtbF9iYV9oYXNoLFxuICAgICB9XG4gICAgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfZmxvYXRfb2ZfYnl0ZXMsIGNhbWxfY3VzdG9tX29wc1xuXG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyKHJlYWRlciwgb2ZzKSB7XG4gIHZhciBfbWFnaWMgPSByZWFkZXIucmVhZDMydSAoKVxuICB2YXIgX2Jsb2NrX2xlbiA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICB2YXIgbnVtX29iamVjdHMgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgdmFyIF9zaXplXzMyID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gIHZhciBfc2l6ZV82NCA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICB2YXIgc3RhY2sgPSBbXTtcbiAgdmFyIGludGVybl9vYmpfdGFibGUgPSAobnVtX29iamVjdHMgPiAwKT9bXTpudWxsO1xuICB2YXIgb2JqX2NvdW50ZXIgPSAwO1xuICBmdW5jdGlvbiBpbnRlcm5fcmVjICgpIHtcbiAgICB2YXIgY29kZSA9IHJlYWRlci5yZWFkOHUgKCk7XG4gICAgaWYgKGNvZGUgPj0gMHg0MCAvKmNzdC5QUkVGSVhfU01BTExfSU5UKi8pIHtcbiAgICAgIGlmIChjb2RlID49IDB4ODAgLypjc3QuUFJFRklYX1NNQUxMX0JMT0NLKi8pIHtcbiAgICAgICAgdmFyIHRhZyA9IGNvZGUgJiAweEY7XG4gICAgICAgIHZhciBzaXplID0gKGNvZGUgPj4gNCkgJiAweDc7XG4gICAgICAgIHZhciB2ID0gW3RhZ107XG4gICAgICAgIGlmIChzaXplID09IDApIHJldHVybiB2O1xuICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgIHN0YWNrLnB1c2godiwgc2l6ZSk7XG4gICAgICAgIHJldHVybiB2O1xuICAgICAgfSBlbHNlXG4gICAgICAgIHJldHVybiAoY29kZSAmIDB4M0YpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY29kZSA+PSAweDIwLypjc3QuUFJFRklYX1NNQUxMX1NUUklORyAqLykge1xuICAgICAgICB2YXIgbGVuID0gY29kZSAmIDB4MUY7XG4gICAgICAgIHZhciB2ID0gcmVhZGVyLnJlYWRzdHIgKGxlbik7XG4gICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2l0Y2goY29kZSkge1xuICAgICAgICBjYXNlIDB4MDA6IC8vY3N0LkNPREVfSU5UODpcbiAgICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQ4cyAoKTtcbiAgICAgICAgY2FzZSAweDAxOiAvL2NzdC5DT0RFX0lOVDE2OlxuICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZDE2cyAoKTtcbiAgICAgICAgY2FzZSAweDAyOiAvL2NzdC5DT0RFX0lOVDMyOlxuICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZDMycyAoKTtcbiAgICAgICAgY2FzZSAweDAzOiAvL2NzdC5DT0RFX0lOVDY0OlxuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogaW50ZWdlciB0b28gbGFyZ2VcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMHgwNDogLy9jc3QuQ09ERV9TSEFSRUQ4OlxuICAgICAgICAgIHZhciBvZmZzZXQgPSByZWFkZXIucmVhZDh1ICgpO1xuICAgICAgICAgIHJldHVybiBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyIC0gb2Zmc2V0XTtcbiAgICAgICAgY2FzZSAweDA1OiAvL2NzdC5DT0RFX1NIQVJFRDE2OlxuICAgICAgICAgIHZhciBvZmZzZXQgPSByZWFkZXIucmVhZDE2dSAoKTtcbiAgICAgICAgICByZXR1cm4gaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlciAtIG9mZnNldF07XG4gICAgICAgIGNhc2UgMHgwNjogLy9jc3QuQ09ERV9TSEFSRUQzMjpcbiAgICAgICAgICB2YXIgb2Zmc2V0ID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgICAgICAgcmV0dXJuIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIgLSBvZmZzZXRdO1xuICAgICAgICBjYXNlIDB4MDg6IC8vY3N0LkNPREVfQkxPQ0szMjpcbiAgICAgICAgICB2YXIgaGVhZGVyID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgICAgICAgdmFyIHRhZyA9IGhlYWRlciAmIDB4RkY7XG4gICAgICAgICAgdmFyIHNpemUgPSBoZWFkZXIgPj4gMTA7XG4gICAgICAgICAgdmFyIHYgPSBbdGFnXTtcbiAgICAgICAgICBpZiAoc2l6ZSA9PSAwKSByZXR1cm4gdjtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgc3RhY2sucHVzaCh2LCBzaXplKTtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDEzOiAvL2NzdC5DT0RFX0JMT0NLNjQ6XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aCAoXCJpbnB1dF92YWx1ZTogZGF0YSBibG9jayB0b28gbGFyZ2VcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMHgwOTogLy9jc3QuQ09ERV9TVFJJTkc4OlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgdmFyIHYgPSByZWFkZXIucmVhZHN0ciAobGVuKTtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwQTogLy9jc3QuQ09ERV9TVFJJTkczMjpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgICB2YXIgdiA9IHJlYWRlci5yZWFkc3RyIChsZW4pO1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBDOiAvL2NzdC5DT0RFX0RPVUJMRV9MSVRUTEU6XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwO2kgPCA4O2krKykgdFs3IC0gaV0gPSByZWFkZXIucmVhZDh1ICgpO1xuICAgICAgICAgIHZhciB2ID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEI6IC8vY3N0LkNPREVfRE9VQkxFX0JJRzpcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7aSA8IDg7aSsrKSB0W2ldID0gcmVhZGVyLnJlYWQ4dSAoKTtcbiAgICAgICAgICB2YXIgdiA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBFOiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWThfTElUVExFOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuKzEpO1xuICAgICAgICAgIHZbMF0gPSAyNTQ7XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTtpIDw9IGxlbjtpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFs3IC0gal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2W2ldID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEQ6IC8vY3N0LkNPREVfRE9VQkxFX0FSUkFZOF9CSUc6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICB2YXIgdiA9IG5ldyBBcnJheShsZW4rMSk7XG4gICAgICAgICAgdlswXSA9IDI1NDtcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAxO2kgPD0gbGVuO2krKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgICAgdiBbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwNzogLy9jc3QuQ09ERV9ET1VCTEVfQVJSQVkzMl9MSVRUTEU6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuKzEpO1xuICAgICAgICAgIHZbMF0gPSAyNTQ7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTtpIDw9IGxlbjtpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFs3IC0gal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2W2ldID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEY6IC8vY3N0LkNPREVfRE9VQkxFX0FSUkFZMzJfQklHOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICAgIHZhciB2ID0gbmV3IEFycmF5KGxlbisxKTtcbiAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTtpIDw9IGxlbjtpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIHYgW2ldID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MTA6IC8vY3N0LkNPREVfQ09ERVBPSU5URVI6XG4gICAgICAgIGNhc2UgMHgxMTogLy9jc3QuQ09ERV9JTkZJWFBPSU5URVI6XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aCAoXCJpbnB1dF92YWx1ZTogY29kZSBwb2ludGVyXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDB4MTI6IC8vY3N0LkNPREVfQ1VTVE9NOlxuICAgICAgICBjYXNlIDB4MTg6IC8vY3N0LkNPREVfQ1VTVE9NX0xFTjpcbiAgICAgICAgY2FzZSAweDE5OiAvL2NzdC5DT0RFX0NVU1RPTV9GSVhFRDpcbiAgICAgICAgICB2YXIgYywgcyA9IFwiXCI7XG4gICAgICAgICAgd2hpbGUgKChjID0gcmVhZGVyLnJlYWQ4dSAoKSkgIT0gMCkgcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlIChjKTtcbiAgICAgICAgICB2YXIgb3BzID0gY2FtbF9jdXN0b21fb3BzW3NdO1xuICAgICAgICAgIHZhciBleHBlY3RlZF9zaXplO1xuICAgICAgICAgIGlmKCFvcHMpXG4gICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHVua25vd24gY3VzdG9tIGJsb2NrIGlkZW50aWZpZXJcIik7XG4gICAgICAgICAgc3dpdGNoKGNvZGUpe1xuICAgICAgICAgIGNhc2UgMHgxMjogLy8gY3N0LkNPREVfQ1VTVE9NIChkZXByZWNhdGVkKVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAweDE5OiAvLyBjc3QuQ09ERV9DVVNUT01fRklYRURcbiAgICAgICAgICAgIGlmKCFvcHMuZml4ZWRfbGVuZ3RoKVxuICAgICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGV4cGVjdGVkIGEgZml4ZWQtc2l6ZSBjdXN0b20gYmxvY2tcIik7XG4gICAgICAgICAgICBleHBlY3RlZF9zaXplID0gb3BzLmZpeGVkX2xlbmd0aDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMHgxODogLy8gY3N0LkNPREVfQ1VTVE9NX0xFTlxuICAgICAgICAgICAgZXhwZWN0ZWRfc2l6ZSA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgICAgICAgICAgLy8gU2tpcCBzaXplNjRcbiAgICAgICAgICAgIHJlYWRlci5yZWFkMzJzKCk7IHJlYWRlci5yZWFkMzJzKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIG9sZF9wb3MgPSByZWFkZXIuaTtcbiAgICAgICAgICB2YXIgc2l6ZSA9IFswXTtcbiAgICAgICAgICB2YXIgdiA9IG9wcy5kZXNlcmlhbGl6ZShyZWFkZXIsIHNpemUpO1xuICAgICAgICAgIGlmKGV4cGVjdGVkX3NpemUgIT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICAgIGlmKGV4cGVjdGVkX3NpemUgIT0gc2l6ZVswXSlcbiAgICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBpbmNvcnJlY3QgbGVuZ3RoIG9mIHNlcmlhbGl6ZWQgY3VzdG9tIGJsb2NrXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aCAoXCJpbnB1dF92YWx1ZTogaWxsLWZvcm1lZCBtZXNzYWdlXCIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHZhciByZXMgPSBpbnRlcm5fcmVjICgpO1xuICB3aGlsZSAoc3RhY2subGVuZ3RoID4gMCkge1xuICAgIHZhciBzaXplID0gc3RhY2sucG9wKCk7XG4gICAgdmFyIHYgPSBzdGFjay5wb3AoKTtcbiAgICB2YXIgZCA9IHYubGVuZ3RoO1xuICAgIGlmIChkIDwgc2l6ZSkgc3RhY2sucHVzaCh2LCBzaXplKTtcbiAgICB2W2RdID0gaW50ZXJuX3JlYyAoKTtcbiAgfVxuICBpZiAodHlwZW9mIG9mcyE9XCJudW1iZXJcIikgb2ZzWzBdID0gcmVhZGVyLmk7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFyc2hhbF9kYXRhX3NpemUgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgY2FtbF9ieXRlc191bnNhZmVfZ2V0XG5mdW5jdGlvbiBjYW1sX21hcnNoYWxfZGF0YV9zaXplIChzLCBvZnMpIHtcbiAgZnVuY3Rpb24gZ2V0MzIocyxpKSB7XG4gICAgcmV0dXJuIChjYW1sX2J5dGVzX3Vuc2FmZV9nZXQocywgaSkgPDwgMjQpIHxcbiAgICAgIChjYW1sX2J5dGVzX3Vuc2FmZV9nZXQocywgaSArIDEpIDw8IDE2KSB8XG4gICAgICAoY2FtbF9ieXRlc191bnNhZmVfZ2V0KHMsIGkgKyAyKSA8PCA4KSB8XG4gICAgICBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQocywgaSArIDMpO1xuICB9XG4gIGlmIChnZXQzMihzLCBvZnMpICE9ICgweDg0OTVBNkJFfDApKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJNYXJzaGFsLmRhdGFfc2l6ZTogYmFkIG9iamVjdFwiKTtcbiAgcmV0dXJuIChnZXQzMihzLCBvZnMgKyA0KSk7XG59XG5cbi8vUHJvdmlkZXM6IE1sT2JqZWN0VGFibGVcbnZhciBNbE9iamVjdFRhYmxlO1xuaWYgKHR5cGVvZiBnbG9iYWxUaGlzLldlYWtNYXAgPT09ICd1bmRlZmluZWQnKSB7XG4gIE1sT2JqZWN0VGFibGUgPSBmdW5jdGlvbigpIHtcbiAgICAvKiBwb2x5ZmlsbCAodXNpbmcgbGluZWFyIHNlYXJjaCkgKi9cbiAgICBmdW5jdGlvbiBOYWl2ZUxvb2t1cChvYmpzKSB7IHRoaXMub2JqcyA9IG9ianM7IH1cbiAgICBOYWl2ZUxvb2t1cC5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24odikge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm9ianMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKHRoaXMub2Jqc1tpXSA9PT0gdikgcmV0dXJuIGk7XG4gICAgICB9XG4gICAgfTtcbiAgICBOYWl2ZUxvb2t1cC5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24oKSB7XG4gICAgICAvLyBEbyBub3RoaW5nIGhlcmUuIFtNbE9iamVjdFRhYmxlLnN0b3JlXSB3aWxsIHB1c2ggdG8gW3RoaXMub2Jqc10gZGlyZWN0bHkuXG4gICAgfTtcblxuICAgIHJldHVybiBmdW5jdGlvbiBNbE9iamVjdFRhYmxlKCkge1xuICAgICAgdGhpcy5vYmpzID0gW107IHRoaXMubG9va3VwID0gbmV3IE5haXZlTG9va3VwKHRoaXMub2Jqcyk7XG4gICAgfTtcbiAgfSgpO1xufVxuZWxzZSB7XG4gIE1sT2JqZWN0VGFibGUgPSBmdW5jdGlvbiBNbE9iamVjdFRhYmxlKCkge1xuICAgIHRoaXMub2JqcyA9IFtdOyB0aGlzLmxvb2t1cCA9IG5ldyBnbG9iYWxUaGlzLldlYWtNYXAoKTtcbiAgfTtcbn1cblxuTWxPYmplY3RUYWJsZS5wcm90b3R5cGUuc3RvcmUgPSBmdW5jdGlvbih2KSB7XG4gIHRoaXMubG9va3VwLnNldCh2LCB0aGlzLm9ianMubGVuZ3RoKTtcbiAgdGhpcy5vYmpzLnB1c2godik7XG59XG5cbk1sT2JqZWN0VGFibGUucHJvdG90eXBlLnJlY2FsbCA9IGZ1bmN0aW9uKHYpIHtcbiAgdmFyIGkgPSB0aGlzLmxvb2t1cC5nZXQodik7XG4gIHJldHVybiAoaSA9PT0gdW5kZWZpbmVkKVxuICAgID8gdW5kZWZpbmVkIDogdGhpcy5vYmpzLmxlbmd0aCAtIGk7ICAgLyogaW5kZXggaXMgcmVsYXRpdmUgKi9cbn1cblxuLy9Qcm92aWRlczogY2FtbF9sZWdhY3lfY3VzdG9tX2NvZGVcbi8vVmVyc2lvbjogPj0gNC4wOFxudmFyIGNhbWxfbGVnYWN5X2N1c3RvbV9jb2RlID0gZmFsc2VcblxuLy9Qcm92aWRlczogY2FtbF9sZWdhY3lfY3VzdG9tX2NvZGVcbi8vVmVyc2lvbjogPCA0LjA4XG52YXIgY2FtbF9sZWdhY3lfY3VzdG9tX2NvZGUgPSB0cnVlXG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlcywgY2FtbF9mYWlsd2l0aFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0XG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzLCBjYW1sX21sX2J5dGVzX2xlbmd0aCwgY2FtbF9ieXRlc191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBNbE9iamVjdFRhYmxlLCBjYW1sX2xpc3RfdG9fanNfYXJyYXksIGNhbWxfbGVnYWN5X2N1c3RvbV9jb2RlLCBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCxjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG52YXIgY2FtbF9vdXRwdXRfdmFsID0gZnVuY3Rpb24gKCl7XG4gIGZ1bmN0aW9uIFdyaXRlciAoKSB7IHRoaXMuY2h1bmsgPSBbXTsgfVxuICBXcml0ZXIucHJvdG90eXBlID0ge1xuICAgIGNodW5rX2lkeDoyMCwgYmxvY2tfbGVuOjAsIG9ial9jb3VudGVyOjAsIHNpemVfMzI6MCwgc2l6ZV82NDowLFxuICAgIHdyaXRlOmZ1bmN0aW9uIChzaXplLCB2YWx1ZSkge1xuICAgICAgZm9yICh2YXIgaSA9IHNpemUgLSA4O2kgPj0gMDtpIC09IDgpXG4gICAgICAgIHRoaXMuY2h1bmtbdGhpcy5jaHVua19pZHgrK10gPSAodmFsdWUgPj4gaSkgJiAweEZGO1xuICAgIH0sXG4gICAgd3JpdGVfYXQ6ZnVuY3Rpb24gKHBvcywgc2l6ZSwgdmFsdWUpIHtcbiAgICAgIHZhciBwb3MgPSBwb3M7XG4gICAgICBmb3IgKHZhciBpID0gc2l6ZSAtIDg7aSA+PSAwO2kgLT0gOClcbiAgICAgICAgdGhpcy5jaHVua1twb3MrK10gPSAodmFsdWUgPj4gaSkgJiAweEZGO1xuICAgIH0sXG4gICAgd3JpdGVfY29kZTpmdW5jdGlvbiAoc2l6ZSwgY29kZSwgdmFsdWUpIHtcbiAgICAgIHRoaXMuY2h1bmtbdGhpcy5jaHVua19pZHgrK10gPSBjb2RlO1xuICAgICAgZm9yICh2YXIgaSA9IHNpemUgLSA4O2kgPj0gMDtpIC09IDgpXG4gICAgICAgIHRoaXMuY2h1bmtbdGhpcy5jaHVua19pZHgrK10gPSAodmFsdWUgPj4gaSkgJiAweEZGO1xuICAgIH0sXG4gICAgd3JpdGVfc2hhcmVkOmZ1bmN0aW9uIChvZmZzZXQpIHtcbiAgICAgIGlmIChvZmZzZXQgPCAoMSA8PCA4KSkgdGhpcy53cml0ZV9jb2RlKDgsIDB4MDQgLypjc3QuQ09ERV9TSEFSRUQ4Ki8sIG9mZnNldCk7XG4gICAgICBlbHNlIGlmIChvZmZzZXQgPCAoMSA8PCAxNikpIHRoaXMud3JpdGVfY29kZSgxNiwgMHgwNSAvKmNzdC5DT0RFX1NIQVJFRDE2Ki8sIG9mZnNldCk7XG4gICAgICBlbHNlIHRoaXMud3JpdGVfY29kZSgzMiwgMHgwNiAvKmNzdC5DT0RFX1NIQVJFRDMyKi8sIG9mZnNldCk7XG4gICAgfSxcbiAgICBwb3M6ZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5jaHVua19pZHggfSxcbiAgICBmaW5hbGl6ZTpmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLmJsb2NrX2xlbiA9IHRoaXMuY2h1bmtfaWR4IC0gMjA7XG4gICAgICB0aGlzLmNodW5rX2lkeCA9IDA7XG4gICAgICB0aGlzLndyaXRlICgzMiwgMHg4NDk1QTZCRSk7XG4gICAgICB0aGlzLndyaXRlICgzMiwgdGhpcy5ibG9ja19sZW4pO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIHRoaXMub2JqX2NvdW50ZXIpO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIHRoaXMuc2l6ZV8zMik7XG4gICAgICB0aGlzLndyaXRlICgzMiwgdGhpcy5zaXplXzY0KTtcbiAgICAgIHJldHVybiB0aGlzLmNodW5rO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZnVuY3Rpb24gKHYsIGZsYWdzKSB7XG4gICAgZmxhZ3MgPSBjYW1sX2xpc3RfdG9fanNfYXJyYXkoZmxhZ3MpO1xuXG4gICAgdmFyIG5vX3NoYXJpbmcgPSAoZmxhZ3MuaW5kZXhPZigwIC8qTWFyc2hhbC5Ob19zaGFyaW5nKi8pICE9PSAtMSksXG4gICAgICAgIGNsb3N1cmVzID0gIChmbGFncy5pbmRleE9mKDEgLypNYXJzaGFsLkNsb3N1cmVzKi8pICE9PSAtMSk7XG4gICAgLyogTWFyc2hhbC5Db21wYXRfMzIgaXMgcmVkdW5kYW50IHNpbmNlIGludGVnZXJzIGFyZSAzMi1iaXQgYW55d2F5ICovXG5cbiAgICBpZiAoY2xvc3VyZXMpXG4gICAgICBnbG9iYWxUaGlzLmNvbnNvbGUud2FybihcImluIGNhbWxfb3V0cHV0X3ZhbDogZmxhZyBNYXJzaGFsLkNsb3N1cmVzIGlzIG5vdCBzdXBwb3J0ZWQuXCIpO1xuXG4gICAgdmFyIHdyaXRlciA9IG5ldyBXcml0ZXIgKCk7XG4gICAgdmFyIHN0YWNrID0gW107XG4gICAgdmFyIGludGVybl9vYmpfdGFibGUgPSBub19zaGFyaW5nID8gbnVsbCA6IG5ldyBNbE9iamVjdFRhYmxlKCk7XG5cbiAgICBmdW5jdGlvbiBtZW1vKHYpIHtcbiAgICAgIGlmIChub19zaGFyaW5nKSByZXR1cm4gZmFsc2U7XG4gICAgICB2YXIgZXhpc3Rpbmdfb2Zmc2V0ID0gaW50ZXJuX29ial90YWJsZS5yZWNhbGwodik7XG4gICAgICBpZiAoZXhpc3Rpbmdfb2Zmc2V0KSB7IHdyaXRlci53cml0ZV9zaGFyZWQoZXhpc3Rpbmdfb2Zmc2V0KTsgcmV0dXJuIHRydWU7IH1cbiAgICAgIGVsc2UgeyBpbnRlcm5fb2JqX3RhYmxlLnN0b3JlKHYpOyByZXR1cm4gZmFsc2U7IH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBleHRlcm5fcmVjICh2KSB7XG4gICAgICBpZiAodi5jYW1sX2N1c3RvbSkge1xuICAgICAgICBpZiAobWVtbyh2KSkgcmV0dXJuO1xuICAgICAgICB2YXIgbmFtZSA9IHYuY2FtbF9jdXN0b207XG4gICAgICAgIHZhciBvcHMgPSBjYW1sX2N1c3RvbV9vcHNbbmFtZV07XG4gICAgICAgIHZhciBzel8zMl82NCA9IFswLDBdO1xuICAgICAgICBpZighb3BzLnNlcmlhbGl6ZSlcbiAgICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJvdXRwdXRfdmFsdWU6IGFic3RyYWN0IHZhbHVlIChDdXN0b20pXCIpO1xuICAgICAgICBpZihjYW1sX2xlZ2FjeV9jdXN0b21fY29kZSkge1xuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgxMiAvKmNzdC5DT0RFX0NVU1RPTSovKTtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWUubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIG5hbWUuY2hhckNvZGVBdChpKSk7XG4gICAgICAgICAgd3JpdGVyLndyaXRlKDgsIDApO1xuICAgICAgICAgIG9wcy5zZXJpYWxpemUod3JpdGVyLCB2LCBzel8zMl82NCk7XG4gICAgICAgIH0gZWxzZSBpZihvcHMuZml4ZWRfbGVuZ3RoID09IHVuZGVmaW5lZCl7XG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDE4IC8qY3N0LkNPREVfQ1VTVE9NX0xFTiovKTtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWUubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIG5hbWUuY2hhckNvZGVBdChpKSk7XG4gICAgICAgICAgd3JpdGVyLndyaXRlKDgsIDApO1xuICAgICAgICAgIHZhciBoZWFkZXJfcG9zID0gd3JpdGVyLnBvcyAoKTtcbiAgICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgMTI7IGkrKykge1xuICAgICAgICAgICAgd3JpdGVyLndyaXRlKDgsIDApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvcHMuc2VyaWFsaXplKHdyaXRlciwgdiwgc3pfMzJfNjQpO1xuICAgICAgICAgIHdyaXRlci53cml0ZV9hdChoZWFkZXJfcG9zLCAzMiwgc3pfMzJfNjRbMF0pO1xuICAgICAgICAgIHdyaXRlci53cml0ZV9hdChoZWFkZXJfcG9zICsgNCwgMzIsIDApOyAvLyB6ZXJvXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2F0KGhlYWRlcl9wb3MgKyA4LCAzMiwgc3pfMzJfNjRbMV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgxOSAvKmNzdC5DT0RFX0NVU1RPTV9GSVhFRCovKTtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWUubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIG5hbWUuY2hhckNvZGVBdChpKSk7XG4gICAgICAgICAgd3JpdGVyLndyaXRlKDgsIDApO1xuICAgICAgICAgIHZhciBvbGRfcG9zID0gd3JpdGVyLnBvcygpO1xuICAgICAgICAgIG9wcy5zZXJpYWxpemUod3JpdGVyLCB2LCBzel8zMl82NCk7XG4gICAgICAgICAgaWYgKG9wcy5maXhlZF9sZW5ndGggIT0gd3JpdGVyLnBvcygpIC0gb2xkX3BvcylcbiAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJvdXRwdXRfdmFsdWU6IGluY29ycmVjdCBmaXhlZCBzaXplcyBzcGVjaWZpZWQgYnkgXCIgKyBuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSAyICsgKChzel8zMl82NFswXSArIDMpID4+IDIpO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSAyICsgKChzel8zMl82NFsxXSArIDcpID4+IDMpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAodiBpbnN0YW5jZW9mIEFycmF5ICYmIHZbMF0gPT09ICh2WzBdfDApKSB7XG4gICAgICAgIGlmICh2WzBdID09IDI1MSkge1xuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJvdXRwdXRfdmFsdWU6IGFic3RyYWN0IHZhbHVlIChBYnN0cmFjdClcIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHYubGVuZ3RoID4gMSAmJiBtZW1vKHYpKSByZXR1cm47XG4gICAgICAgIGlmICh2WzBdIDwgMTYgJiYgdi5sZW5ndGggLSAxIDwgOClcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4ODAgLypjc3QuUFJFRklYX1NNQUxMX0JMT0NLKi8gKyB2WzBdICsgKCh2Lmxlbmd0aCAtIDEpPDw0KSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSgzMiwgMHgwOCAvKmNzdC5DT0RFX0JMT0NLMzIqLywgKCh2Lmxlbmd0aC0xKSA8PCAxMCkgfCB2WzBdKTtcbiAgICAgICAgd3JpdGVyLnNpemVfMzIgKz0gdi5sZW5ndGg7XG4gICAgICAgIHdyaXRlci5zaXplXzY0ICs9IHYubGVuZ3RoO1xuICAgICAgICBpZiAodi5sZW5ndGggPiAxKSBzdGFjay5wdXNoICh2LCAxKTtcbiAgICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyh2KSkge1xuICAgICAgICBpZighKGNhbWxfaXNfbWxfYnl0ZXMoY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiKSkpKSB7XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIm91dHB1dF92YWx1ZTogW0J5dGVzLnRdIGNhbm5vdCBzYWZlbHkgYmUgbWFyc2hhbGVkIHdpdGggWy0tZW5hYmxlIHVzZS1qcy1zdHJpbmddXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtZW1vKHYpKSByZXR1cm47XG4gICAgICAgIHZhciBsZW4gPSBjYW1sX21sX2J5dGVzX2xlbmd0aCh2KTtcbiAgICAgICAgaWYgKGxlbiA8IDB4MjApXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDIwIC8qY3N0LlBSRUZJWF9TTUFMTF9TVFJJTkcqLyArIGxlbik7XG4gICAgICAgIGVsc2UgaWYgKGxlbiA8IDB4MTAwKVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlICg4LCAweDA5Lypjc3QuQ09ERV9TVFJJTkc4Ki8sIGxlbik7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSAoMzIsIDB4MEEgLypjc3QuQ09ERV9TVFJJTkczMiovLCBsZW4pO1xuICAgICAgICBmb3IgKHZhciBpID0gMDtpIDwgbGVuO2krKylcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIGNhbWxfYnl0ZXNfdW5zYWZlX2dldCh2LGkpKTtcbiAgICAgICAgd3JpdGVyLnNpemVfMzIgKz0gMSArICgoKGxlbiArIDQpIC8gNCl8MCk7XG4gICAgICAgIHdyaXRlci5zaXplXzY0ICs9IDEgKyAoKChsZW4gKyA4KSAvIDgpfDApO1xuICAgICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyh2KSkge1xuICAgICAgICB2YXIgbGVuID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHYpO1xuICAgICAgICBpZiAobGVuIDwgMHgyMClcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MjAgLypjc3QuUFJFRklYX1NNQUxMX1NUUklORyovICsgbGVuKTtcbiAgICAgICAgZWxzZSBpZiAobGVuIDwgMHgxMDApXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUgKDgsIDB4MDkvKmNzdC5DT0RFX1NUUklORzgqLywgbGVuKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlICgzMiwgMHgwQSAvKmNzdC5DT0RFX1NUUklORzMyKi8sIGxlbik7XG4gICAgICAgIGZvciAodmFyIGkgPSAwO2kgPCBsZW47aSsrKVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldCh2LGkpKTtcbiAgICAgICAgd3JpdGVyLnNpemVfMzIgKz0gMSArICgoKGxlbiArIDQpIC8gNCl8MCk7XG4gICAgICAgIHdyaXRlci5zaXplXzY0ICs9IDEgKyAoKChsZW4gKyA4KSAvIDgpfDApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHYgIT0gKHZ8MCkpe1xuICAgICAgICAgIHZhciB0eXBlX29mX3YgPSB0eXBlb2YgdjtcbiAgICAgICAgICAvL1xuICAgICAgICAgIC8vIElmIGEgZmxvYXQgaGFwcGVucyB0byBiZSBhbiBpbnRlZ2VyIGl0IGlzIHNlcmlhbGl6ZWQgYXMgYW4gaW50ZWdlclxuICAgICAgICAgIC8vIChKc19vZl9vY2FtbCBjYW5ub3QgdGVsbCB3aGV0aGVyIHRoZSB0eXBlIG9mIGFuIGludGVnZXIgbnVtYmVyIGlzXG4gICAgICAgICAgLy8gZmxvYXQgb3IgaW50ZWdlci4pIFRoaXMgY2FuIHJlc3VsdCBpbiB1bmV4cGVjdGVkIGNyYXNoZXMgd2hlblxuICAgICAgICAgIC8vIHVubWFyc2hhbGxpbmcgdXNpbmcgdGhlIHN0YW5kYXJkIHJ1bnRpbWUuIEl0IHNlZW1zIGJldHRlciB0b1xuICAgICAgICAgIC8vIHN5c3RlbWF0aWNhbGx5IGZhaWwgb24gbWFyc2hhbGxpbmcuXG4gICAgICAgICAgLy9cbiAgICAgICAgICAvLyAgICAgICAgICBpZih0eXBlX29mX3YgIT0gXCJudW1iZXJcIilcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwib3V0cHV0X3ZhbHVlOiBhYnN0cmFjdCB2YWx1ZSAoXCIrdHlwZV9vZl92K1wiKVwiKTtcbiAgICAgICAgICAvLyAgICAgICAgICB2YXIgdCA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KHYpKTtcbiAgICAgICAgICAvLyAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MEIgLypjc3QuQ09ERV9ET1VCTEVfQklHKi8pO1xuICAgICAgICAgIC8vICAgICAgICAgIGZvcih2YXIgaSA9IDA7IGk8ODsgaSsrKXt3cml0ZXIud3JpdGUoOCx0W2ldKX1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2ID49IDAgJiYgdiA8IDB4NDApIHtcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDBYNDAgLypjc3QuUFJFRklYX1NNQUxMX0lOVCovICsgdik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHYgPj0gLSgxIDw8IDcpICYmIHYgPCAoMSA8PCA3KSlcbiAgICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlKDgsIDB4MDAgLypjc3QuQ09ERV9JTlQ4Ki8sIHYpO1xuICAgICAgICAgIGVsc2UgaWYgKHYgPj0gLSgxIDw8IDE1KSAmJiB2IDwgKDEgPDwgMTUpKVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoMTYsIDB4MDEgLypjc3QuQ09ERV9JTlQxNiovLCB2KTtcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSgzMiwgMHgwMiAvKmNzdC5DT0RFX0lOVDMyKi8sIHYpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGV4dGVybl9yZWMgKHYpO1xuICAgIHdoaWxlIChzdGFjay5sZW5ndGggPiAwKSB7XG4gICAgICB2YXIgaSA9IHN0YWNrLnBvcCAoKTtcbiAgICAgIHZhciB2ID0gc3RhY2sucG9wICgpO1xuICAgICAgaWYgKGkgKyAxIDwgdi5sZW5ndGgpIHN0YWNrLnB1c2ggKHYsIGkgKyAxKTtcbiAgICAgIGV4dGVybl9yZWMgKHZbaV0pO1xuICAgIH1cbiAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgd3JpdGVyLm9ial9jb3VudGVyID0gaW50ZXJuX29ial90YWJsZS5vYmpzLmxlbmd0aDtcbiAgICB3cml0ZXIuZmluYWxpemUoKTtcbiAgICByZXR1cm4gd3JpdGVyLmNodW5rO1xuICB9XG59ICgpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmcgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9vdXRwdXRfdmFsLCBjYW1sX3N0cmluZ19vZl9hcnJheVxuZnVuY3Rpb24gY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nICh2LCBmbGFncykge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkgKGNhbWxfb3V0cHV0X3ZhbCAodiwgZmxhZ3MpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXMgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9vdXRwdXRfdmFsLCBjYW1sX2J5dGVzX29mX2FycmF5XG5mdW5jdGlvbiBjYW1sX291dHB1dF92YWx1ZV90b19ieXRlcyAodiwgZmxhZ3MpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfb2ZfYXJyYXkgKGNhbWxfb3V0cHV0X3ZhbCAodiwgZmxhZ3MpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnVmZmVyXG4vL1JlcXVpcmVzOiBjYW1sX291dHB1dF92YWwsIGNhbWxfZmFpbHdpdGgsIGNhbWxfYmxpdF9ieXRlc1xuZnVuY3Rpb24gY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnVmZmVyIChzLCBvZnMsIGxlbiwgdiwgZmxhZ3MpIHtcbiAgdmFyIHQgPSBjYW1sX291dHB1dF92YWwgKHYsIGZsYWdzKTtcbiAgaWYgKHQubGVuZ3RoID4gbGVuKSBjYW1sX2ZhaWx3aXRoIChcIk1hcnNoYWwudG9fYnVmZmVyOiBidWZmZXIgb3ZlcmZsb3dcIik7XG4gIGNhbWxfYmxpdF9ieXRlcyh0LCAwLCBzLCBvZnMsIHQubGVuZ3RoKTtcbiAgcmV0dXJuIDA7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZFxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIElvXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2Nsb3NlXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3N5c19jbG9zZShmZCkge1xuICBkZWxldGUgY2FtbF9nbG9iYWxfZGF0YS5mZHNbZmRdO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdGRfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfc3RkX291dHB1dChjaGFuaWQscyl7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICB2YXIgc3RyID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzKTtcbiAgdmFyIHNsZW4gPSBjYW1sX21sX3N0cmluZ19sZW5ndGgoc3RyKTtcbiAgY2hhbi5maWxlLndyaXRlKGNoYW4ub2Zmc2V0LCBzdHIsIDAsIHNsZW4pO1xuICBjaGFuLm9mZnNldCArPSBzbGVuO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfb3BlblxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfZ2xvYmFsX2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfY3JlYXRlX2J5dGVzLE1sRmFrZUZpbGVcbi8vUmVxdWlyZXM6IGpzX3ByaW50X3N0ZGVyciwganNfcHJpbnRfc3Rkb3V0XG4vL1JlcXVpcmVzOiBjYW1sX3N0ZF9vdXRwdXRcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N5c19vcGVuX2ludGVybmFsKGlkeCxvdXRwdXQsZmlsZSxmbGFncykge1xuICBpZihjYW1sX2dsb2JhbF9kYXRhLmZkcyA9PT0gdW5kZWZpbmVkKSBjYW1sX2dsb2JhbF9kYXRhLmZkcyA9IG5ldyBBcnJheSgpO1xuICBmbGFncz1mbGFncz9mbGFnczp7fTtcbiAgdmFyIGluZm8gPSB7fTtcbiAgaW5mby5maWxlID0gZmlsZTtcbiAgaW5mby5vZmZzZXQgPSBmbGFncy5hcHBlbmQ/ZmlsZS5sZW5ndGgoKTowO1xuICBpbmZvLmZsYWdzID0gZmxhZ3M7XG4gIGluZm8ub3V0cHV0ID0gb3V0cHV0O1xuICBjYW1sX2dsb2JhbF9kYXRhLmZkc1tpZHhdID0gaW5mbztcbiAgaWYoIWNhbWxfZ2xvYmFsX2RhdGEuZmRfbGFzdF9pZHggfHwgaWR4ID4gY2FtbF9nbG9iYWxfZGF0YS5mZF9sYXN0X2lkeClcbiAgICBjYW1sX2dsb2JhbF9kYXRhLmZkX2xhc3RfaWR4ID0gaWR4O1xuICByZXR1cm4gaWR4O1xufVxuZnVuY3Rpb24gY2FtbF9zeXNfb3BlbiAobmFtZSwgZmxhZ3MsIF9wZXJtcykge1xuICB2YXIgZiA9IHt9O1xuICB3aGlsZShmbGFncyl7XG4gICAgc3dpdGNoKGZsYWdzWzFdKXtcbiAgICBjYXNlIDA6IGYucmRvbmx5ID0gMTticmVhaztcbiAgICBjYXNlIDE6IGYud3Jvbmx5ID0gMTticmVhaztcbiAgICBjYXNlIDI6IGYuYXBwZW5kID0gMTticmVhaztcbiAgICBjYXNlIDM6IGYuY3JlYXRlID0gMTticmVhaztcbiAgICBjYXNlIDQ6IGYudHJ1bmNhdGUgPSAxO2JyZWFrO1xuICAgIGNhc2UgNTogZi5leGNsID0gMTsgYnJlYWs7XG4gICAgY2FzZSA2OiBmLmJpbmFyeSA9IDE7YnJlYWs7XG4gICAgY2FzZSA3OiBmLnRleHQgPSAxO2JyZWFrO1xuICAgIGNhc2UgODogZi5ub25ibG9jayA9IDE7YnJlYWs7XG4gICAgfVxuICAgIGZsYWdzPWZsYWdzWzJdO1xuICB9XG4gIGlmKGYucmRvbmx5ICYmIGYud3Jvbmx5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGNhbWxfanNieXRlc19vZl9zdHJpbmcobmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fcmRvbmx5IGFuZCBPcGVuX3dyb25seSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIGlmKGYudGV4dCAmJiBmLmJpbmFyeSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3RleHQgYW5kIE9wZW5fYmluYXJ5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgdmFyIGZpbGUgPSByb290LmRldmljZS5vcGVuKHJvb3QucmVzdCxmKTtcbiAgdmFyIGlkeCA9IGNhbWxfZ2xvYmFsX2RhdGEuZmRfbGFzdF9pZHg/Y2FtbF9nbG9iYWxfZGF0YS5mZF9sYXN0X2lkeDowO1xuICByZXR1cm4gY2FtbF9zeXNfb3Blbl9pbnRlcm5hbCAoaWR4KzEsY2FtbF9zdGRfb3V0cHV0LGZpbGUsZik7XG59XG5jYW1sX3N5c19vcGVuX2ludGVybmFsKDAsY2FtbF9zdGRfb3V0cHV0LCBuZXcgTWxGYWtlRmlsZShjYW1sX2NyZWF0ZV9ieXRlcygwKSkpOyAvL3N0ZGluXG5jYW1sX3N5c19vcGVuX2ludGVybmFsKDEsanNfcHJpbnRfc3Rkb3V0LCBuZXcgTWxGYWtlRmlsZShjYW1sX2NyZWF0ZV9ieXRlcygwKSkpOyAvL3N0ZG91dFxuY2FtbF9zeXNfb3Blbl9pbnRlcm5hbCgyLGpzX3ByaW50X3N0ZGVyciwgbmV3IE1sRmFrZUZpbGUoY2FtbF9jcmVhdGVfYnl0ZXMoMCkpKTsgLy9zdGRlcnJcblxuXG4vLyBvY2FtbCBDaGFubmVsc1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9jaGFubmVsX25hbWVcbmZ1bmN0aW9uIGNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZSgpIHtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jaGFubmVsc1xudmFyIGNhbWxfbWxfY2hhbm5lbHMgPSBuZXcgQXJyYXkoKTtcblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRfY2hhbm5lbHNfbGlzdFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9vdXRfY2hhbm5lbHNfbGlzdCAoKSB7XG4gIHZhciBsID0gMDtcbiAgZm9yKHZhciBjID0gMDsgYyA8IGNhbWxfbWxfY2hhbm5lbHMubGVuZ3RoOyBjKyspe1xuICAgIGlmKGNhbWxfbWxfY2hhbm5lbHNbY10gJiYgY2FtbF9tbF9jaGFubmVsc1tjXS5vcGVuZWQgJiYgY2FtbF9tbF9jaGFubmVsc1tjXS5vdXQpXG4gICAgICBsPVswLGNhbWxfbWxfY2hhbm5lbHNbY10uZmQsbF07XG4gIH1cbiAgcmV0dXJuIGw7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX2dsb2JhbF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0IChmZCkge1xuICB2YXIgZGF0YSA9IGNhbWxfZ2xvYmFsX2RhdGEuZmRzW2ZkXTtcbiAgaWYoZGF0YS5mbGFncy5yZG9ubHkpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiZmQgXCIrIGZkICsgXCIgaXMgcmVhZG9ubHlcIik7XG4gIHZhciBjaGFubmVsID0ge1xuICAgIGZpbGU6ZGF0YS5maWxlLFxuICAgIG9mZnNldDpkYXRhLm9mZnNldCxcbiAgICBmZDpmZCxcbiAgICBvcGVuZWQ6dHJ1ZSxcbiAgICBvdXQ6dHJ1ZSxcbiAgICBidWZmZXI6XCJcIlxuICB9O1xuICBjYW1sX21sX2NoYW5uZWxzW2NoYW5uZWwuZmRdPWNoYW5uZWw7XG4gIHJldHVybiBjaGFubmVsLmZkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pblxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YSxjYW1sX3N5c19vcGVuLGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX21sX2NoYW5uZWxzXG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZCwgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luIChmZCkgIHtcbiAgdmFyIGRhdGEgPSBjYW1sX2dsb2JhbF9kYXRhLmZkc1tmZF07XG4gIGlmKGRhdGEuZmxhZ3Mud3Jvbmx5KSBjYW1sX3JhaXNlX3N5c19lcnJvcihcImZkIFwiKyBmZCArIFwiIGlzIHdyaXRlb25seVwiKTtcbiAgdmFyIHJlZmlsbCA9IG51bGw7XG4gIGlmKGZkID09IDAgJiYgZnNfbm9kZV9zdXBwb3J0ZWQoKSl7XG4gICAgdmFyIGZzID0gcmVxdWlyZSgnZnMnKTtcbiAgICByZWZpbGwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoZnMucmVhZEZpbGVTeW5jKDAsICd1dGY4JykpfTtcbiAgfVxuICB2YXIgY2hhbm5lbCA9IHtcbiAgICBmaWxlOmRhdGEuZmlsZSxcbiAgICBvZmZzZXQ6ZGF0YS5vZmZzZXQsXG4gICAgZmQ6ZmQsXG4gICAgb3BlbmVkOnRydWUsXG4gICAgb3V0OiBmYWxzZSxcbiAgICByZWZpbGw6cmVmaWxsXG4gIH07XG4gIGNhbWxfbWxfY2hhbm5lbHNbY2hhbm5lbC5mZF09Y2hhbm5lbDtcbiAgcmV0dXJuIGNoYW5uZWwuZmQ7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9jaGFubmVsX2Rlc2NyaXB0b3Jcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGEsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfY2hhbm5lbF9kZXNjcmlwdG9yKGNoYW5pZCl7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICByZXR1cm4gY2hhbi5mZDtcbn1cblxuLy9Qcm92aWRlczogd2luX2ZpbGVkZXNjcl9vZl9jaGFubmVsXG4vL1JlcXVpcmVzOiBjYW1sX2NoYW5uZWxfZGVzY3JpcHRvclxudmFyIHdpbl9maWxlZGVzY3Jfb2ZfY2hhbm5lbCA9IGNhbWxfY2hhbm5lbF9kZXNjcmlwdG9yXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2JpbmFyeV9tb2RlXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhLCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX3NldF9iaW5hcnlfbW9kZShjaGFuaWQsbW9kZSl7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICB2YXIgZGF0YSA9IGNhbWxfZ2xvYmFsX2RhdGEuZmRzW2NoYW4uZmRdO1xuICBkYXRhLmZsYWdzLnRleHQgPSAhbW9kZVxuICBkYXRhLmZsYWdzLmJpbmFyeSA9IG1vZGVcbiAgcmV0dXJuIDA7XG59XG5cbi8vSW5wdXQgZnJvbSBpbl9jaGFubmVsXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2xvc2VfY2hhbm5lbFxuLy9SZXF1aXJlczogY2FtbF9tbF9mbHVzaCwgY2FtbF9tbF9jaGFubmVsc1xuLy9SZXF1aXJlczogY2FtbF9zeXNfY2xvc2VcbmZ1bmN0aW9uIGNhbWxfbWxfY2xvc2VfY2hhbm5lbCAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBjYW1sX21sX2ZsdXNoKGNoYW5pZCk7XG4gIGNoYW4ub3BlbmVkID0gZmFsc2U7XG4gIGNoYW4uZmlsZS5jbG9zZSgpO1xuICBjYW1sX3N5c19jbG9zZShjaGFuLmZkKVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jaGFubmVsX3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfY2hhbm5lbF9zaXplKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgcmV0dXJuIGNoYW4uZmlsZS5sZW5ndGgoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jaGFubmVsX3NpemVfNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQsY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9jaGFubmVsX3NpemVfNjQoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9mbG9hdChjaGFuLmZpbGUubGVuZ3RoICgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfY2hhbm5lbF9vdXRwdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfbWxfc2V0X2NoYW5uZWxfb3V0cHV0KGNoYW5pZCxmKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBjYW1sX2dsb2JhbF9kYXRhLmZkc1tjaGFuLmZkXS5vdXRwdXQgPSBmO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGxcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfbWxfc2V0X2NoYW5uZWxfcmVmaWxsKGNoYW5pZCxmKSB7XG4gIGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXS5yZWZpbGwgPSBmO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9yZWZpbGxfaW5wdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9tbF9yZWZpbGxfaW5wdXQgKGNoYW4pIHtcbiAgdmFyIHN0ciA9IGNoYW4ucmVmaWxsKCk7XG4gIHZhciBzdHJfbGVuID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHN0cik7XG4gIGlmIChzdHJfbGVuID09IDApIGNoYW4ucmVmaWxsID0gbnVsbDtcbiAgY2hhbi5maWxlLndyaXRlKGNoYW4uZmlsZS5sZW5ndGgoKSwgc3RyLCAwLCBzdHJfbGVuKTtcbiAgcmV0dXJuIHN0cl9sZW47XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfbWF5X3JlZmlsbF9pbnB1dFxuLy9SZXF1aXJlczogY2FtbF9tbF9yZWZpbGxfaW5wdXQsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfbWF5X3JlZmlsbF9pbnB1dCAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBpZiAoY2hhbi5yZWZpbGwgPT0gbnVsbCkgcmV0dXJuO1xuICBpZiAoY2hhbi5maWxlLmxlbmd0aCgpICE9IGNoYW4ub2Zmc2V0KSByZXR1cm47XG4gIGNhbWxfbWxfcmVmaWxsX2lucHV0IChjaGFuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dFxuLy9SZXF1aXJlczogY2FtbF9tbF9yZWZpbGxfaW5wdXQsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXQgKGNoYW5pZCwgcywgaSwgbCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgdmFyIGwyID0gY2hhbi5maWxlLmxlbmd0aCgpIC0gY2hhbi5vZmZzZXQ7XG4gIGlmIChsMiA9PSAwICYmIGNoYW4ucmVmaWxsICE9IG51bGwpIGwyID0gY2FtbF9tbF9yZWZpbGxfaW5wdXQoY2hhbik7XG4gIGlmIChsMiA8IGwpIGwgPSBsMjtcbiAgY2hhbi5maWxlLnJlYWQoY2hhbi5vZmZzZXQsIHMsIGksIGwpO1xuICBjaGFuLm9mZnNldCArPSBsO1xuICByZXR1cm4gbDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSwgY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzLCBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZSAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuXG4gIHZhciBidWYgPSBjYW1sX2NyZWF0ZV9ieXRlcyg4KTtcbiAgY2hhbi5maWxlLnJlYWQoY2hhbi5vZmZzZXQsYnVmLDAsOCk7XG5cbiAgLy8gSGVhZGVyIGlzIDIwIGJ5dGVzXG4gIHZhciBsZW4gPSBjYW1sX21hcnNoYWxfZGF0YV9zaXplIChidWYsIDApICsgMjA7XG5cbiAgdmFyIGJ1ZiA9IGNhbWxfY3JlYXRlX2J5dGVzKGxlbik7XG4gIGNoYW4uZmlsZS5yZWFkKGNoYW4ub2Zmc2V0LGJ1ZiwwLGxlbik7XG5cbiAgdmFyIG9mZnNldCA9IFswXTtcbiAgdmFyIHJlcyA9IGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcyhidWYsIG9mZnNldCk7XG4gIGNoYW4ub2Zmc2V0ID0gY2hhbi5vZmZzZXQgKyBvZmZzZXRbMF07XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfY2hhclxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9tbF9tYXlfcmVmaWxsX2lucHV0LCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X2NoYXIgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgY2FtbF9tbF9tYXlfcmVmaWxsX2lucHV0KGNoYW5pZCk7XG4gIGlmIChjaGFuLm9mZnNldCA+PSBjaGFuLmZpbGUubGVuZ3RoKCkpXG4gICAgY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSgpO1xuICB2YXIgcmVzID0gY2hhbi5maWxlLnJlYWRfb25lKGNoYW4ub2Zmc2V0KTtcbiAgY2hhbi5vZmZzZXQrKztcbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfZW5kX29mX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfbWxfcmVmaWxsX2lucHV0LCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X2ludCAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICB2YXIgZmlsZSA9IGNoYW4uZmlsZTtcbiAgd2hpbGUgKChjaGFuLm9mZnNldCArIDMpID49IGZpbGUubGVuZ3RoKCkpIHtcbiAgICB2YXIgbCA9IGNhbWxfbWxfcmVmaWxsX2lucHV0KGNoYW4pO1xuICAgIGlmIChsID09IDApIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUoKTtcbiAgfVxuICB2YXIgbyA9IGNoYW4ub2Zmc2V0O1xuICB2YXIgciA9KGZpbGUucmVhZF9vbmUobyAgKSA8PCAyNClcbiAgICAgIHwgIChmaWxlLnJlYWRfb25lKG8rMSkgPDwgMTYpXG4gICAgICB8ICAoZmlsZS5yZWFkX29uZShvKzIpIDw8IDgpXG4gICAgICB8ICAoZmlsZS5yZWFkX29uZShvKzMpKTtcbiAgY2hhbi5vZmZzZXQrPTQ7XG4gIHJldHVybiByO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NlZWtfaW5cbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX3NlZWtfaW4oY2hhbmlkLHBvcyl7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBpZiAoY2hhbi5yZWZpbGwgIT0gbnVsbCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJJbGxlZ2FsIHNlZWtcIik7XG4gIGNoYW4ub2Zmc2V0ID0gcG9zO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZWVrX2luXzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2Zsb2F0LCBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9zZWVrX2luXzY0KGNoYW5pZCxwb3Mpe1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgaWYgKGNoYW4ucmVmaWxsICE9IG51bGwpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiSWxsZWdhbCBzZWVrXCIpO1xuICBjaGFuLm9mZnNldCA9IGNhbWxfaW50NjRfdG9fZmxvYXQocG9zKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX2luXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX3Bvc19pbihjaGFuaWQpIHtyZXR1cm4gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdLm9mZnNldH1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9wb3NfaW5fNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX2luXzY0KGNoYW5pZCkge3JldHVybiBjYW1sX2ludDY0X29mX2Zsb2F0KGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXS5vZmZzZXQpfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X3NjYW5fbGluZVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9tbF9tYXlfcmVmaWxsX2lucHV0LCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X3NjYW5fbGluZShjaGFuaWQpe1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgY2FtbF9tbF9tYXlfcmVmaWxsX2lucHV0KGNoYW5pZCk7XG4gIHZhciBwID0gY2hhbi5vZmZzZXQ7XG4gIHZhciBsZW4gPSBjaGFuLmZpbGUubGVuZ3RoKCk7XG4gIGlmKHAgPj0gbGVuKSB7IHJldHVybiAwO31cbiAgd2hpbGUodHJ1ZSkge1xuICAgIGlmKHAgPj0gbGVuKSByZXR1cm4gLSAocCAtIGNoYW4ub2Zmc2V0KTtcbiAgICBpZihjaGFuLmZpbGUucmVhZF9vbmUocCkgPT0gMTApIHJldHVybiBwIC0gY2hhbi5vZmZzZXQgKyAxO1xuICAgIHArKztcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2ZsdXNoXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9nbG9iYWxfZGF0YSwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9mbHVzaCAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBpZighIGNoYW4ub3BlbmVkKSBjYW1sX3JhaXNlX3N5c19lcnJvcihcIkNhbm5vdCBmbHVzaCBhIGNsb3NlZCBjaGFubmVsXCIpO1xuICBpZighY2hhbi5idWZmZXIgfHwgY2hhbi5idWZmZXIgPT0gXCJcIikgcmV0dXJuIDA7XG4gIGlmKGNoYW4uZmRcbiAgICAgJiYgY2FtbF9nbG9iYWxfZGF0YS5mZHNbY2hhbi5mZF1cbiAgICAgJiYgY2FtbF9nbG9iYWxfZGF0YS5mZHNbY2hhbi5mZF0ub3V0cHV0KSB7XG4gICAgdmFyIG91dHB1dCA9IGNhbWxfZ2xvYmFsX2RhdGEuZmRzW2NoYW4uZmRdLm91dHB1dDtcbiAgICBzd2l0Y2gob3V0cHV0Lmxlbmd0aCl7XG4gICAgY2FzZSAyOiBvdXRwdXQoY2hhbmlkLGNoYW4uYnVmZmVyKTticmVhaztcbiAgICBkZWZhdWx0OiBvdXRwdXQoY2hhbi5idWZmZXIpXG4gICAgfTtcbiAgfVxuICBjaGFuLmJ1ZmZlciA9IFwiXCI7XG4gIHJldHVybiAwO1xufVxuXG4vL291dHB1dCB0byBvdXRfY2hhbm5lbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9tbF9mbHVzaCxjYW1sX21sX2J5dGVzX2xlbmd0aFxuLy9SZXF1aXJlczogY2FtbF9jcmVhdGVfYnl0ZXMsIGNhbWxfYmxpdF9ieXRlcywgY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfc3RyaW5nX29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF9ieXRlcyhjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGlmKCEgY2hhbi5vcGVuZWQpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiQ2Fubm90IG91dHB1dCB0byBhIGNsb3NlZCBjaGFubmVsXCIpO1xuICB2YXIgYnl0ZXM7XG4gIGlmKG9mZnNldCA9PSAwICYmIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKGJ1ZmZlcikgPT0gbGVuKVxuICAgIGJ5dGVzID0gYnVmZmVyO1xuICBlbHNlIHtcbiAgICBieXRlcyA9IGNhbWxfY3JlYXRlX2J5dGVzKGxlbik7XG4gICAgY2FtbF9ibGl0X2J5dGVzKGJ1ZmZlcixvZmZzZXQsYnl0ZXMsMCxsZW4pO1xuICB9XG4gIHZhciBzdHJpbmcgPSBjYW1sX3N0cmluZ19vZl9ieXRlcyhieXRlcyk7XG4gIHZhciBqc3N0cmluZyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoc3RyaW5nKTtcbiAgdmFyIGlkID0ganNzdHJpbmcubGFzdEluZGV4T2YoXCJcXG5cIik7XG4gIGlmKGlkIDwgMClcbiAgICBjaGFuLmJ1ZmZlcis9anNzdHJpbmc7XG4gIGVsc2Uge1xuICAgIGNoYW4uYnVmZmVyKz1qc3N0cmluZy5zdWJzdHIoMCxpZCsxKTtcbiAgICBjYW1sX21sX2ZsdXNoIChjaGFuaWQpO1xuICAgIGNoYW4uYnVmZmVyICs9IGpzc3RyaW5nLnN1YnN0cihpZCsxKTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3V0cHV0X2J5dGVzLCBjYW1sX2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXQoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKXtcbiAgcmV0dXJuIGNhbWxfbWxfb3V0cHV0X2J5dGVzKGNoYW5pZCxjYW1sX2J5dGVzX29mX3N0cmluZyhidWZmZXIpLG9mZnNldCxsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dF9jaGFyXG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfY2hhciAoY2hhbmlkLGMpIHtcbiAgdmFyIHMgPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFN0cmluZy5mcm9tQ2hhckNvZGUoYykpO1xuICBjYW1sX21sX291dHB1dChjaGFuaWQscywwLDEpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZywgY2FtbF9tbF9vdXRwdXQsY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX291dHB1dF92YWx1ZSAoY2hhbmlkLHYsZmxhZ3MpIHtcbiAgdmFyIHMgPSBjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmcodiwgZmxhZ3MpO1xuICBjYW1sX21sX291dHB1dChjaGFuaWQscywwLGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSk7XG4gIHJldHVybiAwO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfbWxfZmx1c2hcbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19vdXQoY2hhbmlkLHBvcyl7XG4gIGNhbWxfbWxfZmx1c2goY2hhbmlkKTtcbiAgY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdLm9mZnNldCA9IHBvcztcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19vdXRfNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fZmxvYXQsIGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfbWxfZmx1c2hcbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19vdXRfNjQoY2hhbmlkLHBvcyl7XG4gIGNhbWxfbWxfZmx1c2goY2hhbmlkKTtcbiAgY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdLm9mZnNldCA9IGNhbWxfaW50NjRfdG9fZmxvYXQocG9zKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX291dFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVscywgY2FtbF9tbF9mbHVzaFxuZnVuY3Rpb24gY2FtbF9tbF9wb3Nfb3V0KGNoYW5pZCkge1xuICBjYW1sX21sX2ZsdXNoKGNoYW5pZCk7XG4gIHJldHVybiBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF0ub2Zmc2V0XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX291dF82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9mbG9hdCwgY2FtbF9tbF9jaGFubmVscywgY2FtbF9tbF9mbHVzaFxuZnVuY3Rpb24gY2FtbF9tbF9wb3Nfb3V0XzY0KGNoYW5pZCkge1xuICBjYW1sX21sX2ZsdXNoKGNoYW5pZCk7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2Zsb2F0IChjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF0ub2Zmc2V0KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfaW50XG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0X2ludCAoY2hhbmlkLGkpIHtcbiAgdmFyIGFyciA9IFsoaT4+MjQpICYgMHhGRiwoaT4+MTYpICYgMHhGRiwoaT4+OCkgJiAweEZGLGkgJiAweEZGIF07XG4gIHZhciBzID0gY2FtbF9zdHJpbmdfb2ZfYXJyYXkoYXJyKTtcbiAgY2FtbF9tbF9vdXRwdXQoY2hhbmlkLHMsMCw0KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pc19idWZmZXJlZFxuZnVuY3Rpb24gY2FtbF9tbF9pc19idWZmZXJlZChjKSB7IHJldHVybiAxIH1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfYnVmZmVyZWRcbmZ1bmN0aW9uIGNhbWxfbWxfc2V0X2J1ZmZlcmVkKGMsdikgeyByZXR1cm4gMCB9XG4iLCJcblxuLy9Qcm92aWRlczogY2FtbF9nY19taW5vclxuZnVuY3Rpb24gY2FtbF9nY19taW5vcigpeyByZXR1cm4gMH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfbWFqb3JcbmZ1bmN0aW9uIGNhbWxfZ2NfbWFqb3IoKXsgcmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2djX2Z1bGxfbWFqb3JcbmZ1bmN0aW9uIGNhbWxfZ2NfZnVsbF9tYWpvcigpeyByZXR1cm4gMH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfY29tcGFjdGlvblxuZnVuY3Rpb24gY2FtbF9nY19jb21wYWN0aW9uKCl7IHJldHVybiAwfVxuLy9Qcm92aWRlczogY2FtbF9nY19jb3VudGVyc1xuZnVuY3Rpb24gY2FtbF9nY19jb3VudGVycygpIHsgcmV0dXJuIFsyNTQsMCwwLDBdIH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfcXVpY2tfc3RhdFxuZnVuY3Rpb24gY2FtbF9nY19xdWlja19zdGF0KCl7XG4gIHJldHVybiBbMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXVxufVxuLy9Qcm92aWRlczogY2FtbF9nY19zdGF0XG5mdW5jdGlvbiBjYW1sX2djX3N0YXQoKSB7XG4gIHJldHVybiBbMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX3NldFxuZnVuY3Rpb24gY2FtbF9nY19zZXQoX2NvbnRyb2wpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfZ2V0XG5mdW5jdGlvbiBjYW1sX2djX2dldCgpe1xuICByZXR1cm4gWzAsMCwwLDAsMCwwLDAsMCwwXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21lbXByb2Zfc2V0XG5mdW5jdGlvbiBjYW1sX21lbXByb2Zfc2V0KF9jb250cm9sKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbmFsX3JlZ2lzdGVyIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ZpbmFsX3JlZ2lzdGVyICgpIHsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZmluYWxfcmVnaXN0ZXJfY2FsbGVkX3dpdGhvdXRfdmFsdWUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZmluYWxfcmVnaXN0ZXJfY2FsbGVkX3dpdGhvdXRfdmFsdWUgKCkgeyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9maW5hbF9yZWxlYXNlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ZpbmFsX3JlbGVhc2UgKCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21lbXByb2Zfc3RhcnRcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9zdGFydChyYXRlLHN0YWNrX3NpemUsdHJhY2tlcil7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21lbXByb2Zfc3RvcFxuZnVuY3Rpb24gY2FtbF9tZW1wcm9mX3N0b3AodW5pdCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ldmVudGxvZ19yZXN1bWVcbmZ1bmN0aW9uIGNhbWxfZXZlbnRsb2dfcmVzdW1lKHVuaXQpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9ldmVudGxvZ19wYXVzZVxuZnVuY3Rpb24gY2FtbF9ldmVudGxvZ19wYXVzZSh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfaHVnZV9mYWxsYmFja19jb3VudFxuZnVuY3Rpb24gY2FtbF9nY19odWdlX2ZhbGxiYWNrX2NvdW50KHVuaXQpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nY19tYWpvcl9zbGljZVxuZnVuY3Rpb24gY2FtbF9nY19tYWpvcl9zbGljZSh3b3JrKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfbWlub3Jfd29yZHNcbmZ1bmN0aW9uIGNhbWxfZ2NfbWlub3Jfd29yZHModW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9taW5vcl9mcmVlXG5mdW5jdGlvbiBjYW1sX2dldF9taW5vcl9mcmVlKHVuaXQpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfbWFqb3JfYnVja2V0XG5mdW5jdGlvbiBjYW1sX2dldF9tYWpvcl9idWNrZXQobikgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9tYWpvcl9jcmVkaXRcbmZ1bmN0aW9uIGNhbWxfZ2V0X21ham9yX2NyZWRpdChuKSB7IHJldHVybiAwOyB9XG4iLCIvL0ltcG9ydGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL3BldGVyb2xzb24vQmlnSW50ZWdlci5qcyM0ZTk5YjE1Yjc5NTEzMzhmMTY0NzI4Mzc3YzkwNmNhYWU1YTc4MjAyXG5cbi8vUHJvdmlkZXM6IGJpZ0ludCBjb25zdFxudmFyIGJpZ0ludCA9IChmdW5jdGlvbiAodW5kZWZpbmVkKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgICB2YXIgQkFTRSA9IDFlNyxcbiAgICAgICAgTE9HX0JBU0UgPSA3LFxuICAgICAgICBNQVhfSU5UID0gOTAwNzE5OTI1NDc0MDk5MixcbiAgICAgICAgTUFYX0lOVF9BUlIgPSBzbWFsbFRvQXJyYXkoTUFYX0lOVCksXG4gICAgICAgIERFRkFVTFRfQUxQSEFCRVQgPSBcIjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5elwiO1xuXG4gICAgdmFyIEJpZ0ludCA9IGpvb19nbG9iYWxfb2JqZWN0LkJpZ0ludDtcblxuICAgIHZhciBzdXBwb3J0c05hdGl2ZUJpZ0ludCA9IHR5cGVvZiBCaWdJbnQgPT09IFwiZnVuY3Rpb25cIjtcblxuICAgIGZ1bmN0aW9uIEludGVnZXIodiwgcmFkaXgsIGFscGhhYmV0LCBjYXNlU2Vuc2l0aXZlKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdiA9PT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuIEludGVnZXJbMF07XG4gICAgICAgIGlmICh0eXBlb2YgcmFkaXggIT09IFwidW5kZWZpbmVkXCIpIHJldHVybiArcmFkaXggPT09IDEwICYmICFhbHBoYWJldCA/IHBhcnNlVmFsdWUodikgOiBwYXJzZUJhc2UodiwgcmFkaXgsIGFscGhhYmV0LCBjYXNlU2Vuc2l0aXZlKTtcbiAgICAgICAgcmV0dXJuIHBhcnNlVmFsdWUodik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gQmlnSW50ZWdlcih2YWx1ZSwgc2lnbikge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuc2lnbiA9IHNpZ247XG4gICAgICAgIHRoaXMuaXNTbWFsbCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNhbWxfY3VzdG9tID0gJ196JztcbiAgICB9XG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEludGVnZXIucHJvdG90eXBlKTtcblxuICAgIGZ1bmN0aW9uIFNtYWxsSW50ZWdlcih2YWx1ZSkge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuc2lnbiA9IHZhbHVlIDwgMDtcbiAgICAgICAgdGhpcy5pc1NtYWxsID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5jYW1sX2N1c3RvbSA9ICdfeic7XG4gICAgfVxuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEludGVnZXIucHJvdG90eXBlKTtcblxuICAgIGZ1bmN0aW9uIE5hdGl2ZUJpZ0ludCh2YWx1ZSkge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuY2FtbF9jdXN0b20gPSAnX3onO1xuICAgIH1cbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShJbnRlZ2VyLnByb3RvdHlwZSk7XG5cbiAgICBmdW5jdGlvbiBpc1ByZWNpc2Uobikge1xuICAgICAgICByZXR1cm4gLU1BWF9JTlQgPCBuICYmIG4gPCBNQVhfSU5UO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNtYWxsVG9BcnJheShuKSB7IC8vIEZvciBwZXJmb3JtYW5jZSByZWFzb25zIGRvZXNuJ3QgcmVmZXJlbmNlIEJBU0UsIG5lZWQgdG8gY2hhbmdlIHRoaXMgZnVuY3Rpb24gaWYgQkFTRSBjaGFuZ2VzXG4gICAgICAgIGlmIChuIDwgMWU3KVxuICAgICAgICAgICAgcmV0dXJuIFtuXTtcbiAgICAgICAgaWYgKG4gPCAxZTE0KVxuICAgICAgICAgICAgcmV0dXJuIFtuICUgMWU3LCBNYXRoLmZsb29yKG4gLyAxZTcpXTtcbiAgICAgICAgcmV0dXJuIFtuICUgMWU3LCBNYXRoLmZsb29yKG4gLyAxZTcpICUgMWU3LCBNYXRoLmZsb29yKG4gLyAxZTE0KV07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYXJyYXlUb1NtYWxsKGFycikgeyAvLyBJZiBCQVNFIGNoYW5nZXMgdGhpcyBmdW5jdGlvbiBtYXkgbmVlZCB0byBjaGFuZ2VcbiAgICAgICAgdHJpbShhcnIpO1xuICAgICAgICB2YXIgbGVuZ3RoID0gYXJyLmxlbmd0aDtcbiAgICAgICAgaWYgKGxlbmd0aCA8IDQgJiYgY29tcGFyZUFicyhhcnIsIE1BWF9JTlRfQVJSKSA8IDApIHtcbiAgICAgICAgICAgIHN3aXRjaCAobGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gMDtcbiAgICAgICAgICAgICAgICBjYXNlIDE6IHJldHVybiBhcnJbMF07XG4gICAgICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4gYXJyWzBdICsgYXJyWzFdICogQkFTRTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiByZXR1cm4gYXJyWzBdICsgKGFyclsxXSArIGFyclsyXSAqIEJBU0UpICogQkFTRTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXJyO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRyaW0odikge1xuICAgICAgICB2YXIgaSA9IHYubGVuZ3RoO1xuICAgICAgICB3aGlsZSAodlstLWldID09PSAwKTtcbiAgICAgICAgdi5sZW5ndGggPSBpICsgMTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVBcnJheShsZW5ndGgpIHsgLy8gZnVuY3Rpb24gc2hhbWVsZXNzbHkgc3RvbGVuIGZyb20gWWFmZmxlJ3MgbGlicmFyeSBodHRwczovL2dpdGh1Yi5jb20vWWFmZmxlL0JpZ0ludGVnZXJcbiAgICAgICAgdmFyIHggPSBuZXcgQXJyYXkobGVuZ3RoKTtcbiAgICAgICAgdmFyIGkgPSAtMTtcbiAgICAgICAgd2hpbGUgKCsraSA8IGxlbmd0aCkge1xuICAgICAgICAgICAgeFtpXSA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHg7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdHJ1bmNhdGUobikge1xuICAgICAgICBpZiAobiA+IDApIHJldHVybiBNYXRoLmZsb29yKG4pO1xuICAgICAgICByZXR1cm4gTWF0aC5jZWlsKG4pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZChhLCBiKSB7IC8vIGFzc3VtZXMgYSBhbmQgYiBhcmUgYXJyYXlzIHdpdGggYS5sZW5ndGggPj0gYi5sZW5ndGhcbiAgICAgICAgdmFyIGxfYSA9IGEubGVuZ3RoLFxuICAgICAgICAgICAgbF9iID0gYi5sZW5ndGgsXG4gICAgICAgICAgICByID0gbmV3IEFycmF5KGxfYSksXG4gICAgICAgICAgICBjYXJyeSA9IDAsXG4gICAgICAgICAgICBiYXNlID0gQkFTRSxcbiAgICAgICAgICAgIHN1bSwgaTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGxfYjsgaSsrKSB7XG4gICAgICAgICAgICBzdW0gPSBhW2ldICsgYltpXSArIGNhcnJ5O1xuICAgICAgICAgICAgY2FycnkgPSBzdW0gPj0gYmFzZSA/IDEgOiAwO1xuICAgICAgICAgICAgcltpXSA9IHN1bSAtIGNhcnJ5ICogYmFzZTtcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAoaSA8IGxfYSkge1xuICAgICAgICAgICAgc3VtID0gYVtpXSArIGNhcnJ5O1xuICAgICAgICAgICAgY2FycnkgPSBzdW0gPT09IGJhc2UgPyAxIDogMDtcbiAgICAgICAgICAgIHJbaSsrXSA9IHN1bSAtIGNhcnJ5ICogYmFzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FycnkgPiAwKSByLnB1c2goY2FycnkpO1xuICAgICAgICByZXR1cm4gcjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGRBbnkoYSwgYikge1xuICAgICAgICBpZiAoYS5sZW5ndGggPj0gYi5sZW5ndGgpIHJldHVybiBhZGQoYSwgYik7XG4gICAgICAgIHJldHVybiBhZGQoYiwgYSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkU21hbGwoYSwgY2FycnkpIHsgLy8gYXNzdW1lcyBhIGlzIGFycmF5LCBjYXJyeSBpcyBudW1iZXIgd2l0aCAwIDw9IGNhcnJ5IDwgTUFYX0lOVFxuICAgICAgICB2YXIgbCA9IGEubGVuZ3RoLFxuICAgICAgICAgICAgciA9IG5ldyBBcnJheShsKSxcbiAgICAgICAgICAgIGJhc2UgPSBCQVNFLFxuICAgICAgICAgICAgc3VtLCBpO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICBzdW0gPSBhW2ldIC0gYmFzZSArIGNhcnJ5O1xuICAgICAgICAgICAgY2FycnkgPSBNYXRoLmZsb29yKHN1bSAvIGJhc2UpO1xuICAgICAgICAgICAgcltpXSA9IHN1bSAtIGNhcnJ5ICogYmFzZTtcbiAgICAgICAgICAgIGNhcnJ5ICs9IDE7XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKGNhcnJ5ID4gMCkge1xuICAgICAgICAgICAgcltpKytdID0gY2FycnkgJSBiYXNlO1xuICAgICAgICAgICAgY2FycnkgPSBNYXRoLmZsb29yKGNhcnJ5IC8gYmFzZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHI7XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgdmFyIG4gPSBwYXJzZVZhbHVlKHYpO1xuICAgICAgICBpZiAodGhpcy5zaWduICE9PSBuLnNpZ24pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN1YnRyYWN0KG4ubmVnYXRlKCkpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBhID0gdGhpcy52YWx1ZSwgYiA9IG4udmFsdWU7XG4gICAgICAgIGlmIChuLmlzU21hbGwpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihhZGRTbWFsbChhLCBNYXRoLmFicyhiKSksIHRoaXMuc2lnbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKGFkZEFueShhLCBiKSwgdGhpcy5zaWduKTtcbiAgICB9O1xuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLnBsdXMgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5hZGQ7XG5cbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHZhciBuID0gcGFyc2VWYWx1ZSh2KTtcbiAgICAgICAgdmFyIGEgPSB0aGlzLnZhbHVlO1xuICAgICAgICBpZiAoYSA8IDAgIT09IG4uc2lnbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3VidHJhY3Qobi5uZWdhdGUoKSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGIgPSBuLnZhbHVlO1xuICAgICAgICBpZiAobi5pc1NtYWxsKSB7XG4gICAgICAgICAgICBpZiAoaXNQcmVjaXNlKGEgKyBiKSkgcmV0dXJuIG5ldyBTbWFsbEludGVnZXIoYSArIGIpO1xuICAgICAgICAgICAgYiA9IHNtYWxsVG9BcnJheShNYXRoLmFicyhiKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKGFkZFNtYWxsKGIsIE1hdGguYWJzKGEpKSwgYSA8IDApO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5wbHVzID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5hZGQ7XG5cbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHJldHVybiBuZXcgTmF0aXZlQmlnSW50KHRoaXMudmFsdWUgKyBwYXJzZVZhbHVlKHYpLnZhbHVlKTtcbiAgICB9XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5wbHVzID0gTmF0aXZlQmlnSW50LnByb3RvdHlwZS5hZGQ7XG5cbiAgICBmdW5jdGlvbiBzdWJ0cmFjdChhLCBiKSB7IC8vIGFzc3VtZXMgYSBhbmQgYiBhcmUgYXJyYXlzIHdpdGggYSA+PSBiXG4gICAgICAgIHZhciBhX2wgPSBhLmxlbmd0aCxcbiAgICAgICAgICAgIGJfbCA9IGIubGVuZ3RoLFxuICAgICAgICAgICAgciA9IG5ldyBBcnJheShhX2wpLFxuICAgICAgICAgICAgYm9ycm93ID0gMCxcbiAgICAgICAgICAgIGJhc2UgPSBCQVNFLFxuICAgICAgICAgICAgaSwgZGlmZmVyZW5jZTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGJfbDsgaSsrKSB7XG4gICAgICAgICAgICBkaWZmZXJlbmNlID0gYVtpXSAtIGJvcnJvdyAtIGJbaV07XG4gICAgICAgICAgICBpZiAoZGlmZmVyZW5jZSA8IDApIHtcbiAgICAgICAgICAgICAgICBkaWZmZXJlbmNlICs9IGJhc2U7XG4gICAgICAgICAgICAgICAgYm9ycm93ID0gMTtcbiAgICAgICAgICAgIH0gZWxzZSBib3Jyb3cgPSAwO1xuICAgICAgICAgICAgcltpXSA9IGRpZmZlcmVuY2U7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChpID0gYl9sOyBpIDwgYV9sOyBpKyspIHtcbiAgICAgICAgICAgIGRpZmZlcmVuY2UgPSBhW2ldIC0gYm9ycm93O1xuICAgICAgICAgICAgaWYgKGRpZmZlcmVuY2UgPCAwKSBkaWZmZXJlbmNlICs9IGJhc2U7XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByW2krK10gPSBkaWZmZXJlbmNlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcltpXSA9IGRpZmZlcmVuY2U7XG4gICAgICAgIH1cbiAgICAgICAgZm9yICg7IGkgPCBhX2w7IGkrKykge1xuICAgICAgICAgICAgcltpXSA9IGFbaV07XG4gICAgICAgIH1cbiAgICAgICAgdHJpbShyKTtcbiAgICAgICAgcmV0dXJuIHI7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc3VidHJhY3RBbnkoYSwgYiwgc2lnbikge1xuICAgICAgICB2YXIgdmFsdWU7XG4gICAgICAgIGlmIChjb21wYXJlQWJzKGEsIGIpID49IDApIHtcbiAgICAgICAgICAgIHZhbHVlID0gc3VidHJhY3QoYSwgYik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHN1YnRyYWN0KGIsIGEpO1xuICAgICAgICAgICAgc2lnbiA9ICFzaWduO1xuICAgICAgICB9XG4gICAgICAgIHZhbHVlID0gYXJyYXlUb1NtYWxsKHZhbHVlKTtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgaWYgKHNpZ24pIHZhbHVlID0gLXZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBTbWFsbEludGVnZXIodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcih2YWx1ZSwgc2lnbik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc3VidHJhY3RTbWFsbChhLCBiLCBzaWduKSB7IC8vIGFzc3VtZXMgYSBpcyBhcnJheSwgYiBpcyBudW1iZXIgd2l0aCAwIDw9IGIgPCBNQVhfSU5UXG4gICAgICAgIHZhciBsID0gYS5sZW5ndGgsXG4gICAgICAgICAgICByID0gbmV3IEFycmF5KGwpLFxuICAgICAgICAgICAgY2FycnkgPSAtYixcbiAgICAgICAgICAgIGJhc2UgPSBCQVNFLFxuICAgICAgICAgICAgaSwgZGlmZmVyZW5jZTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgICAgZGlmZmVyZW5jZSA9IGFbaV0gKyBjYXJyeTtcbiAgICAgICAgICAgIGNhcnJ5ID0gTWF0aC5mbG9vcihkaWZmZXJlbmNlIC8gYmFzZSk7XG4gICAgICAgICAgICBkaWZmZXJlbmNlICU9IGJhc2U7XG4gICAgICAgICAgICByW2ldID0gZGlmZmVyZW5jZSA8IDAgPyBkaWZmZXJlbmNlICsgYmFzZSA6IGRpZmZlcmVuY2U7XG4gICAgICAgIH1cbiAgICAgICAgciA9IGFycmF5VG9TbWFsbChyKTtcbiAgICAgICAgaWYgKHR5cGVvZiByID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICBpZiAoc2lnbikgciA9IC1yO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBTbWFsbEludGVnZXIocik7XG4gICAgICAgIH0gcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKHIsIHNpZ24pO1xuICAgIH1cblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLnN1YnRyYWN0ID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgdmFyIG4gPSBwYXJzZVZhbHVlKHYpO1xuICAgICAgICBpZiAodGhpcy5zaWduICE9PSBuLnNpZ24pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFkZChuLm5lZ2F0ZSgpKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYSA9IHRoaXMudmFsdWUsIGIgPSBuLnZhbHVlO1xuICAgICAgICBpZiAobi5pc1NtYWxsKVxuICAgICAgICAgICAgcmV0dXJuIHN1YnRyYWN0U21hbGwoYSwgTWF0aC5hYnMoYiksIHRoaXMuc2lnbik7XG4gICAgICAgIHJldHVybiBzdWJ0cmFjdEFueShhLCBiLCB0aGlzLnNpZ24pO1xuICAgIH07XG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUubWludXMgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5zdWJ0cmFjdDtcblxuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUuc3VidHJhY3QgPSBmdW5jdGlvbiAodikge1xuICAgICAgICB2YXIgbiA9IHBhcnNlVmFsdWUodik7XG4gICAgICAgIHZhciBhID0gdGhpcy52YWx1ZTtcbiAgICAgICAgaWYgKGEgPCAwICE9PSBuLnNpZ24pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFkZChuLm5lZ2F0ZSgpKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYiA9IG4udmFsdWU7XG4gICAgICAgIGlmIChuLmlzU21hbGwpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgU21hbGxJbnRlZ2VyKGEgLSBiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VidHJhY3RTbWFsbChiLCBNYXRoLmFicyhhKSwgYSA+PSAwKTtcbiAgICB9O1xuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUubWludXMgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLnN1YnRyYWN0O1xuXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5zdWJ0cmFjdCA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHJldHVybiBuZXcgTmF0aXZlQmlnSW50KHRoaXMudmFsdWUgLSBwYXJzZVZhbHVlKHYpLnZhbHVlKTtcbiAgICB9XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5taW51cyA9IE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuc3VidHJhY3Q7XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5uZWdhdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcih0aGlzLnZhbHVlLCAhdGhpcy5zaWduKTtcbiAgICB9O1xuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUubmVnYXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgc2lnbiA9IHRoaXMuc2lnbjtcbiAgICAgICAgdmFyIHNtYWxsID0gbmV3IFNtYWxsSW50ZWdlcigtdGhpcy52YWx1ZSk7XG4gICAgICAgIHNtYWxsLnNpZ24gPSAhc2lnbjtcbiAgICAgICAgcmV0dXJuIHNtYWxsO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5uZWdhdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgTmF0aXZlQmlnSW50KC10aGlzLnZhbHVlKTtcbiAgICB9XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5hYnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcih0aGlzLnZhbHVlLCBmYWxzZSk7XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLmFicyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTbWFsbEludGVnZXIoTWF0aC5hYnModGhpcy52YWx1ZSkpO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5hYnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgTmF0aXZlQmlnSW50KHRoaXMudmFsdWUgPj0gMCA/IHRoaXMudmFsdWUgOiAtdGhpcy52YWx1ZSk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBtdWx0aXBseUxvbmcoYSwgYikge1xuICAgICAgICB2YXIgYV9sID0gYS5sZW5ndGgsXG4gICAgICAgICAgICBiX2wgPSBiLmxlbmd0aCxcbiAgICAgICAgICAgIGwgPSBhX2wgKyBiX2wsXG4gICAgICAgICAgICByID0gY3JlYXRlQXJyYXkobCksXG4gICAgICAgICAgICBiYXNlID0gQkFTRSxcbiAgICAgICAgICAgIHByb2R1Y3QsIGNhcnJ5LCBpLCBhX2ksIGJfajtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGFfbDsgKytpKSB7XG4gICAgICAgICAgICBhX2kgPSBhW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBiX2w7ICsraikge1xuICAgICAgICAgICAgICAgIGJfaiA9IGJbal07XG4gICAgICAgICAgICAgICAgcHJvZHVjdCA9IGFfaSAqIGJfaiArIHJbaSArIGpdO1xuICAgICAgICAgICAgICAgIGNhcnJ5ID0gTWF0aC5mbG9vcihwcm9kdWN0IC8gYmFzZSk7XG4gICAgICAgICAgICAgICAgcltpICsgal0gPSBwcm9kdWN0IC0gY2FycnkgKiBiYXNlO1xuICAgICAgICAgICAgICAgIHJbaSArIGogKyAxXSArPSBjYXJyeTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0cmltKHIpO1xuICAgICAgICByZXR1cm4gcjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtdWx0aXBseVNtYWxsKGEsIGIpIHsgLy8gYXNzdW1lcyBhIGlzIGFycmF5LCBiIGlzIG51bWJlciB3aXRoIHxifCA8IEJBU0VcbiAgICAgICAgdmFyIGwgPSBhLmxlbmd0aCxcbiAgICAgICAgICAgIHIgPSBuZXcgQXJyYXkobCksXG4gICAgICAgICAgICBiYXNlID0gQkFTRSxcbiAgICAgICAgICAgIGNhcnJ5ID0gMCxcbiAgICAgICAgICAgIHByb2R1Y3QsIGk7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgIHByb2R1Y3QgPSBhW2ldICogYiArIGNhcnJ5O1xuICAgICAgICAgICAgY2FycnkgPSBNYXRoLmZsb29yKHByb2R1Y3QgLyBiYXNlKTtcbiAgICAgICAgICAgIHJbaV0gPSBwcm9kdWN0IC0gY2FycnkgKiBiYXNlO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChjYXJyeSA+IDApIHtcbiAgICAgICAgICAgIHJbaSsrXSA9IGNhcnJ5ICUgYmFzZTtcbiAgICAgICAgICAgIGNhcnJ5ID0gTWF0aC5mbG9vcihjYXJyeSAvIGJhc2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNoaWZ0TGVmdCh4LCBuKSB7XG4gICAgICAgIHZhciByID0gW107XG4gICAgICAgIHdoaWxlIChuLS0gPiAwKSByLnB1c2goMCk7XG4gICAgICAgIHJldHVybiByLmNvbmNhdCh4KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtdWx0aXBseUthcmF0c3ViYSh4LCB5KSB7XG4gICAgICAgIHZhciBuID0gTWF0aC5tYXgoeC5sZW5ndGgsIHkubGVuZ3RoKTtcblxuICAgICAgICBpZiAobiA8PSAzMCkgcmV0dXJuIG11bHRpcGx5TG9uZyh4LCB5KTtcbiAgICAgICAgbiA9IE1hdGguY2VpbChuIC8gMik7XG5cbiAgICAgICAgdmFyIGIgPSB4LnNsaWNlKG4pLFxuICAgICAgICAgICAgYSA9IHguc2xpY2UoMCwgbiksXG4gICAgICAgICAgICBkID0geS5zbGljZShuKSxcbiAgICAgICAgICAgIGMgPSB5LnNsaWNlKDAsIG4pO1xuXG4gICAgICAgIHZhciBhYyA9IG11bHRpcGx5S2FyYXRzdWJhKGEsIGMpLFxuICAgICAgICAgICAgYmQgPSBtdWx0aXBseUthcmF0c3ViYShiLCBkKSxcbiAgICAgICAgICAgIGFiY2QgPSBtdWx0aXBseUthcmF0c3ViYShhZGRBbnkoYSwgYiksIGFkZEFueShjLCBkKSk7XG5cbiAgICAgICAgdmFyIHByb2R1Y3QgPSBhZGRBbnkoYWRkQW55KGFjLCBzaGlmdExlZnQoc3VidHJhY3Qoc3VidHJhY3QoYWJjZCwgYWMpLCBiZCksIG4pKSwgc2hpZnRMZWZ0KGJkLCAyICogbikpO1xuICAgICAgICB0cmltKHByb2R1Y3QpO1xuICAgICAgICByZXR1cm4gcHJvZHVjdDtcbiAgICB9XG5cbiAgICAvLyBUaGUgZm9sbG93aW5nIGZ1bmN0aW9uIGlzIGRlcml2ZWQgZnJvbSBhIHN1cmZhY2UgZml0IG9mIGEgZ3JhcGggcGxvdHRpbmcgdGhlIHBlcmZvcm1hbmNlIGRpZmZlcmVuY2VcbiAgICAvLyBiZXR3ZWVuIGxvbmcgbXVsdGlwbGljYXRpb24gYW5kIGthcmF0c3ViYSBtdWx0aXBsaWNhdGlvbiB2ZXJzdXMgdGhlIGxlbmd0aHMgb2YgdGhlIHR3byBhcnJheXMuXG4gICAgZnVuY3Rpb24gdXNlS2FyYXRzdWJhKGwxLCBsMikge1xuICAgICAgICByZXR1cm4gLTAuMDEyICogbDEgLSAwLjAxMiAqIGwyICsgMC4wMDAwMTUgKiBsMSAqIGwyID4gMDtcbiAgICB9XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5tdWx0aXBseSA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHZhciBuID0gcGFyc2VWYWx1ZSh2KSxcbiAgICAgICAgICAgIGEgPSB0aGlzLnZhbHVlLCBiID0gbi52YWx1ZSxcbiAgICAgICAgICAgIHNpZ24gPSB0aGlzLnNpZ24gIT09IG4uc2lnbixcbiAgICAgICAgICAgIGFicztcbiAgICAgICAgaWYgKG4uaXNTbWFsbCkge1xuICAgICAgICAgICAgaWYgKGIgPT09IDApIHJldHVybiBJbnRlZ2VyWzBdO1xuICAgICAgICAgICAgaWYgKGIgPT09IDEpIHJldHVybiB0aGlzO1xuICAgICAgICAgICAgaWYgKGIgPT09IC0xKSByZXR1cm4gdGhpcy5uZWdhdGUoKTtcbiAgICAgICAgICAgIGFicyA9IE1hdGguYWJzKGIpO1xuICAgICAgICAgICAgaWYgKGFicyA8IEJBU0UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIobXVsdGlwbHlTbWFsbChhLCBhYnMpLCBzaWduKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGIgPSBzbWFsbFRvQXJyYXkoYWJzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodXNlS2FyYXRzdWJhKGEubGVuZ3RoLCBiLmxlbmd0aCkpIC8vIEthcmF0c3ViYSBpcyBvbmx5IGZhc3RlciBmb3IgY2VydGFpbiBhcnJheSBzaXplc1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKG11bHRpcGx5S2FyYXRzdWJhKGEsIGIpLCBzaWduKTtcbiAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKG11bHRpcGx5TG9uZyhhLCBiKSwgc2lnbik7XG4gICAgfTtcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLnRpbWVzID0gQmlnSW50ZWdlci5wcm90b3R5cGUubXVsdGlwbHk7XG5cbiAgICBmdW5jdGlvbiBtdWx0aXBseVNtYWxsQW5kQXJyYXkoYSwgYiwgc2lnbikgeyAvLyBhID49IDBcbiAgICAgICAgaWYgKGEgPCBCQVNFKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIobXVsdGlwbHlTbWFsbChiLCBhKSwgc2lnbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKG11bHRpcGx5TG9uZyhiLCBzbWFsbFRvQXJyYXkoYSkpLCBzaWduKTtcbiAgICB9XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5fbXVsdGlwbHlCeVNtYWxsID0gZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgaWYgKGlzUHJlY2lzZShhLnZhbHVlICogdGhpcy52YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgU21hbGxJbnRlZ2VyKGEudmFsdWUgKiB0aGlzLnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbXVsdGlwbHlTbWFsbEFuZEFycmF5KE1hdGguYWJzKGEudmFsdWUpLCBzbWFsbFRvQXJyYXkoTWF0aC5hYnModGhpcy52YWx1ZSkpLCB0aGlzLnNpZ24gIT09IGEuc2lnbik7XG4gICAgfTtcbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5fbXVsdGlwbHlCeVNtYWxsID0gZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgaWYgKGEudmFsdWUgPT09IDApIHJldHVybiBJbnRlZ2VyWzBdO1xuICAgICAgICBpZiAoYS52YWx1ZSA9PT0gMSkgcmV0dXJuIHRoaXM7XG4gICAgICAgIGlmIChhLnZhbHVlID09PSAtMSkgcmV0dXJuIHRoaXMubmVnYXRlKCk7XG4gICAgICAgIHJldHVybiBtdWx0aXBseVNtYWxsQW5kQXJyYXkoTWF0aC5hYnMoYS52YWx1ZSksIHRoaXMudmFsdWUsIHRoaXMuc2lnbiAhPT0gYS5zaWduKTtcbiAgICB9O1xuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUubXVsdGlwbHkgPSBmdW5jdGlvbiAodikge1xuICAgICAgICByZXR1cm4gcGFyc2VWYWx1ZSh2KS5fbXVsdGlwbHlCeVNtYWxsKHRoaXMpO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS50aW1lcyA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUubXVsdGlwbHk7XG5cbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLm11bHRpcGx5ID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVCaWdJbnQodGhpcy52YWx1ZSAqIHBhcnNlVmFsdWUodikudmFsdWUpO1xuICAgIH1cbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLnRpbWVzID0gTmF0aXZlQmlnSW50LnByb3RvdHlwZS5tdWx0aXBseTtcblxuICAgIGZ1bmN0aW9uIHNxdWFyZShhKSB7XG4gICAgICAgIC8vY29uc29sZS5hc3NlcnQoMiAqIEJBU0UgKiBCQVNFIDwgTUFYX0lOVCk7XG4gICAgICAgIHZhciBsID0gYS5sZW5ndGgsXG4gICAgICAgICAgICByID0gY3JlYXRlQXJyYXkobCArIGwpLFxuICAgICAgICAgICAgYmFzZSA9IEJBU0UsXG4gICAgICAgICAgICBwcm9kdWN0LCBjYXJyeSwgaSwgYV9pLCBhX2o7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgIGFfaSA9IGFbaV07XG4gICAgICAgICAgICBjYXJyeSA9IDAgLSBhX2kgKiBhX2k7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gaTsgaiA8IGw7IGorKykge1xuICAgICAgICAgICAgICAgIGFfaiA9IGFbal07XG4gICAgICAgICAgICAgICAgcHJvZHVjdCA9IDIgKiAoYV9pICogYV9qKSArIHJbaSArIGpdICsgY2Fycnk7XG4gICAgICAgICAgICAgICAgY2FycnkgPSBNYXRoLmZsb29yKHByb2R1Y3QgLyBiYXNlKTtcbiAgICAgICAgICAgICAgICByW2kgKyBqXSA9IHByb2R1Y3QgLSBjYXJyeSAqIGJhc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByW2kgKyBsXSA9IGNhcnJ5O1xuICAgICAgICB9XG4gICAgICAgIHRyaW0ocik7XG4gICAgICAgIHJldHVybiByO1xuICAgIH1cblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLnNxdWFyZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKHNxdWFyZSh0aGlzLnZhbHVlKSwgZmFsc2UpO1xuICAgIH07XG5cbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLnNxdWFyZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gdGhpcy52YWx1ZSAqIHRoaXMudmFsdWU7XG4gICAgICAgIGlmIChpc1ByZWNpc2UodmFsdWUpKSByZXR1cm4gbmV3IFNtYWxsSW50ZWdlcih2YWx1ZSk7XG4gICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihzcXVhcmUoc21hbGxUb0FycmF5KE1hdGguYWJzKHRoaXMudmFsdWUpKSksIGZhbHNlKTtcbiAgICB9O1xuXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5zcXVhcmUgPSBmdW5jdGlvbiAodikge1xuICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludCh0aGlzLnZhbHVlICogdGhpcy52YWx1ZSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGl2TW9kMShhLCBiKSB7IC8vIExlZnQgb3ZlciBmcm9tIHByZXZpb3VzIHZlcnNpb24uIFBlcmZvcm1zIGZhc3RlciB0aGFuIGRpdk1vZDIgb24gc21hbGxlciBpbnB1dCBzaXplcy5cbiAgICAgICAgdmFyIGFfbCA9IGEubGVuZ3RoLFxuICAgICAgICAgICAgYl9sID0gYi5sZW5ndGgsXG4gICAgICAgICAgICBiYXNlID0gQkFTRSxcbiAgICAgICAgICAgIHJlc3VsdCA9IGNyZWF0ZUFycmF5KGIubGVuZ3RoKSxcbiAgICAgICAgICAgIGRpdmlzb3JNb3N0U2lnbmlmaWNhbnREaWdpdCA9IGJbYl9sIC0gMV0sXG4gICAgICAgICAgICAvLyBub3JtYWxpemF0aW9uXG4gICAgICAgICAgICBsYW1iZGEgPSBNYXRoLmNlaWwoYmFzZSAvICgyICogZGl2aXNvck1vc3RTaWduaWZpY2FudERpZ2l0KSksXG4gICAgICAgICAgICByZW1haW5kZXIgPSBtdWx0aXBseVNtYWxsKGEsIGxhbWJkYSksXG4gICAgICAgICAgICBkaXZpc29yID0gbXVsdGlwbHlTbWFsbChiLCBsYW1iZGEpLFxuICAgICAgICAgICAgcXVvdGllbnREaWdpdCwgc2hpZnQsIGNhcnJ5LCBib3Jyb3csIGksIGwsIHE7XG4gICAgICAgIGlmIChyZW1haW5kZXIubGVuZ3RoIDw9IGFfbCkgcmVtYWluZGVyLnB1c2goMCk7XG4gICAgICAgIGRpdmlzb3IucHVzaCgwKTtcbiAgICAgICAgZGl2aXNvck1vc3RTaWduaWZpY2FudERpZ2l0ID0gZGl2aXNvcltiX2wgLSAxXTtcbiAgICAgICAgZm9yIChzaGlmdCA9IGFfbCAtIGJfbDsgc2hpZnQgPj0gMDsgc2hpZnQtLSkge1xuICAgICAgICAgICAgcXVvdGllbnREaWdpdCA9IGJhc2UgLSAxO1xuICAgICAgICAgICAgaWYgKHJlbWFpbmRlcltzaGlmdCArIGJfbF0gIT09IGRpdmlzb3JNb3N0U2lnbmlmaWNhbnREaWdpdCkge1xuICAgICAgICAgICAgICAgIHF1b3RpZW50RGlnaXQgPSBNYXRoLmZsb29yKChyZW1haW5kZXJbc2hpZnQgKyBiX2xdICogYmFzZSArIHJlbWFpbmRlcltzaGlmdCArIGJfbCAtIDFdKSAvIGRpdmlzb3JNb3N0U2lnbmlmaWNhbnREaWdpdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBxdW90aWVudERpZ2l0IDw9IGJhc2UgLSAxXG4gICAgICAgICAgICBjYXJyeSA9IDA7XG4gICAgICAgICAgICBib3Jyb3cgPSAwO1xuICAgICAgICAgICAgbCA9IGRpdmlzb3IubGVuZ3RoO1xuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgICAgICAgIGNhcnJ5ICs9IHF1b3RpZW50RGlnaXQgKiBkaXZpc29yW2ldO1xuICAgICAgICAgICAgICAgIHEgPSBNYXRoLmZsb29yKGNhcnJ5IC8gYmFzZSk7XG4gICAgICAgICAgICAgICAgYm9ycm93ICs9IHJlbWFpbmRlcltzaGlmdCArIGldIC0gKGNhcnJ5IC0gcSAqIGJhc2UpO1xuICAgICAgICAgICAgICAgIGNhcnJ5ID0gcTtcbiAgICAgICAgICAgICAgICBpZiAoYm9ycm93IDwgMCkge1xuICAgICAgICAgICAgICAgICAgICByZW1haW5kZXJbc2hpZnQgKyBpXSA9IGJvcnJvdyArIGJhc2U7XG4gICAgICAgICAgICAgICAgICAgIGJvcnJvdyA9IC0xO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlbWFpbmRlcltzaGlmdCArIGldID0gYm9ycm93O1xuICAgICAgICAgICAgICAgICAgICBib3Jyb3cgPSAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHdoaWxlIChib3Jyb3cgIT09IDApIHtcbiAgICAgICAgICAgICAgICBxdW90aWVudERpZ2l0IC09IDE7XG4gICAgICAgICAgICAgICAgY2FycnkgPSAwO1xuICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY2FycnkgKz0gcmVtYWluZGVyW3NoaWZ0ICsgaV0gLSBiYXNlICsgZGl2aXNvcltpXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNhcnJ5IDwgMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVtYWluZGVyW3NoaWZ0ICsgaV0gPSBjYXJyeSArIGJhc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXJyeSA9IDA7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW1haW5kZXJbc2hpZnQgKyBpXSA9IGNhcnJ5O1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FycnkgPSAxO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJvcnJvdyArPSBjYXJyeTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdFtzaGlmdF0gPSBxdW90aWVudERpZ2l0O1xuICAgICAgICB9XG4gICAgICAgIC8vIGRlbm9ybWFsaXphdGlvblxuICAgICAgICByZW1haW5kZXIgPSBkaXZNb2RTbWFsbChyZW1haW5kZXIsIGxhbWJkYSlbMF07XG4gICAgICAgIHJldHVybiBbYXJyYXlUb1NtYWxsKHJlc3VsdCksIGFycmF5VG9TbWFsbChyZW1haW5kZXIpXTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkaXZNb2QyKGEsIGIpIHsgLy8gSW1wbGVtZW50YXRpb24gaWRlYSBzaGFtZWxlc3NseSBzdG9sZW4gZnJvbSBTaWxlbnQgTWF0dCdzIGxpYnJhcnkgaHR0cDovL3NpbGVudG1hdHQuY29tL2JpZ2ludGVnZXIvXG4gICAgICAgIC8vIFBlcmZvcm1zIGZhc3RlciB0aGFuIGRpdk1vZDEgb24gbGFyZ2VyIGlucHV0IHNpemVzLlxuICAgICAgICB2YXIgYV9sID0gYS5sZW5ndGgsXG4gICAgICAgICAgICBiX2wgPSBiLmxlbmd0aCxcbiAgICAgICAgICAgIHJlc3VsdCA9IFtdLFxuICAgICAgICAgICAgcGFydCA9IFtdLFxuICAgICAgICAgICAgYmFzZSA9IEJBU0UsXG4gICAgICAgICAgICBndWVzcywgeGxlbiwgaGlnaHgsIGhpZ2h5LCBjaGVjaztcbiAgICAgICAgd2hpbGUgKGFfbCkge1xuICAgICAgICAgICAgcGFydC51bnNoaWZ0KGFbLS1hX2xdKTtcbiAgICAgICAgICAgIHRyaW0ocGFydCk7XG4gICAgICAgICAgICBpZiAoY29tcGFyZUFicyhwYXJ0LCBiKSA8IDApIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaCgwKTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHhsZW4gPSBwYXJ0Lmxlbmd0aDtcbiAgICAgICAgICAgIGhpZ2h4ID0gcGFydFt4bGVuIC0gMV0gKiBiYXNlICsgcGFydFt4bGVuIC0gMl07XG4gICAgICAgICAgICBoaWdoeSA9IGJbYl9sIC0gMV0gKiBiYXNlICsgYltiX2wgLSAyXTtcbiAgICAgICAgICAgIGlmICh4bGVuID4gYl9sKSB7XG4gICAgICAgICAgICAgICAgaGlnaHggPSAoaGlnaHggKyAxKSAqIGJhc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBndWVzcyA9IE1hdGguY2VpbChoaWdoeCAvIGhpZ2h5KTtcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICBjaGVjayA9IG11bHRpcGx5U21hbGwoYiwgZ3Vlc3MpO1xuICAgICAgICAgICAgICAgIGlmIChjb21wYXJlQWJzKGNoZWNrLCBwYXJ0KSA8PSAwKSBicmVhaztcbiAgICAgICAgICAgICAgICBndWVzcy0tO1xuICAgICAgICAgICAgfSB3aGlsZSAoZ3Vlc3MpO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goZ3Vlc3MpO1xuICAgICAgICAgICAgcGFydCA9IHN1YnRyYWN0KHBhcnQsIGNoZWNrKTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQucmV2ZXJzZSgpO1xuICAgICAgICByZXR1cm4gW2FycmF5VG9TbWFsbChyZXN1bHQpLCBhcnJheVRvU21hbGwocGFydCldO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRpdk1vZFNtYWxsKHZhbHVlLCBsYW1iZGEpIHtcbiAgICAgICAgdmFyIGxlbmd0aCA9IHZhbHVlLmxlbmd0aCxcbiAgICAgICAgICAgIHF1b3RpZW50ID0gY3JlYXRlQXJyYXkobGVuZ3RoKSxcbiAgICAgICAgICAgIGJhc2UgPSBCQVNFLFxuICAgICAgICAgICAgaSwgcSwgcmVtYWluZGVyLCBkaXZpc29yO1xuICAgICAgICByZW1haW5kZXIgPSAwO1xuICAgICAgICBmb3IgKGkgPSBsZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICAgICAgZGl2aXNvciA9IHJlbWFpbmRlciAqIGJhc2UgKyB2YWx1ZVtpXTtcbiAgICAgICAgICAgIHEgPSB0cnVuY2F0ZShkaXZpc29yIC8gbGFtYmRhKTtcbiAgICAgICAgICAgIHJlbWFpbmRlciA9IGRpdmlzb3IgLSBxICogbGFtYmRhO1xuICAgICAgICAgICAgcXVvdGllbnRbaV0gPSBxIHwgMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW3F1b3RpZW50LCByZW1haW5kZXIgfCAwXTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkaXZNb2RBbnkoc2VsZiwgdikge1xuICAgICAgICB2YXIgdmFsdWUsIG4gPSBwYXJzZVZhbHVlKHYpO1xuICAgICAgICBpZiAoc3VwcG9ydHNOYXRpdmVCaWdJbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBbbmV3IE5hdGl2ZUJpZ0ludChzZWxmLnZhbHVlIC8gbi52YWx1ZSksIG5ldyBOYXRpdmVCaWdJbnQoc2VsZi52YWx1ZSAlIG4udmFsdWUpXTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYSA9IHNlbGYudmFsdWUsIGIgPSBuLnZhbHVlO1xuICAgICAgICB2YXIgcXVvdGllbnQ7XG4gICAgICAgIGlmIChiID09PSAwKSB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgZGl2aWRlIGJ5IHplcm9cIik7XG4gICAgICAgIGlmIChzZWxmLmlzU21hbGwpIHtcbiAgICAgICAgICAgIGlmIChuLmlzU21hbGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW25ldyBTbWFsbEludGVnZXIodHJ1bmNhdGUoYSAvIGIpKSwgbmV3IFNtYWxsSW50ZWdlcihhICUgYildO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFtJbnRlZ2VyWzBdLCBzZWxmXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobi5pc1NtYWxsKSB7XG4gICAgICAgICAgICBpZiAoYiA9PT0gMSkgcmV0dXJuIFtzZWxmLCBJbnRlZ2VyWzBdXTtcbiAgICAgICAgICAgIGlmIChiID09IC0xKSByZXR1cm4gW3NlbGYubmVnYXRlKCksIEludGVnZXJbMF1dO1xuICAgICAgICAgICAgdmFyIGFicyA9IE1hdGguYWJzKGIpO1xuICAgICAgICAgICAgaWYgKGFicyA8IEJBU0UpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IGRpdk1vZFNtYWxsKGEsIGFicyk7XG4gICAgICAgICAgICAgICAgcXVvdGllbnQgPSBhcnJheVRvU21hbGwodmFsdWVbMF0pO1xuICAgICAgICAgICAgICAgIHZhciByZW1haW5kZXIgPSB2YWx1ZVsxXTtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZi5zaWduKSByZW1haW5kZXIgPSAtcmVtYWluZGVyO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcXVvdGllbnQgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGYuc2lnbiAhPT0gbi5zaWduKSBxdW90aWVudCA9IC1xdW90aWVudDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtuZXcgU21hbGxJbnRlZ2VyKHF1b3RpZW50KSwgbmV3IFNtYWxsSW50ZWdlcihyZW1haW5kZXIpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtuZXcgQmlnSW50ZWdlcihxdW90aWVudCwgc2VsZi5zaWduICE9PSBuLnNpZ24pLCBuZXcgU21hbGxJbnRlZ2VyKHJlbWFpbmRlcildO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYiA9IHNtYWxsVG9BcnJheShhYnMpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBjb21wYXJpc29uID0gY29tcGFyZUFicyhhLCBiKTtcbiAgICAgICAgaWYgKGNvbXBhcmlzb24gPT09IC0xKSByZXR1cm4gW0ludGVnZXJbMF0sIHNlbGZdO1xuICAgICAgICBpZiAoY29tcGFyaXNvbiA9PT0gMCkgcmV0dXJuIFtJbnRlZ2VyW3NlbGYuc2lnbiA9PT0gbi5zaWduID8gMSA6IC0xXSwgSW50ZWdlclswXV07XG5cbiAgICAgICAgLy8gZGl2TW9kMSBpcyBmYXN0ZXIgb24gc21hbGxlciBpbnB1dCBzaXplc1xuICAgICAgICBpZiAoYS5sZW5ndGggKyBiLmxlbmd0aCA8PSAyMDApXG4gICAgICAgICAgICB2YWx1ZSA9IGRpdk1vZDEoYSwgYik7XG4gICAgICAgIGVsc2UgdmFsdWUgPSBkaXZNb2QyKGEsIGIpO1xuXG4gICAgICAgIHF1b3RpZW50ID0gdmFsdWVbMF07XG4gICAgICAgIHZhciBxU2lnbiA9IHNlbGYuc2lnbiAhPT0gbi5zaWduLFxuICAgICAgICAgICAgbW9kID0gdmFsdWVbMV0sXG4gICAgICAgICAgICBtU2lnbiA9IHNlbGYuc2lnbjtcbiAgICAgICAgaWYgKHR5cGVvZiBxdW90aWVudCA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgaWYgKHFTaWduKSBxdW90aWVudCA9IC1xdW90aWVudDtcbiAgICAgICAgICAgIHF1b3RpZW50ID0gbmV3IFNtYWxsSW50ZWdlcihxdW90aWVudCk7XG4gICAgICAgIH0gZWxzZSBxdW90aWVudCA9IG5ldyBCaWdJbnRlZ2VyKHF1b3RpZW50LCBxU2lnbik7XG4gICAgICAgIGlmICh0eXBlb2YgbW9kID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICBpZiAobVNpZ24pIG1vZCA9IC1tb2Q7XG4gICAgICAgICAgICBtb2QgPSBuZXcgU21hbGxJbnRlZ2VyKG1vZCk7XG4gICAgICAgIH0gZWxzZSBtb2QgPSBuZXcgQmlnSW50ZWdlcihtb2QsIG1TaWduKTtcbiAgICAgICAgcmV0dXJuIFtxdW90aWVudCwgbW9kXTtcbiAgICB9XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5kaXZtb2QgPSBmdW5jdGlvbiAodikge1xuICAgICAgICB2YXIgcmVzdWx0ID0gZGl2TW9kQW55KHRoaXMsIHYpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcXVvdGllbnQ6IHJlc3VsdFswXSxcbiAgICAgICAgICAgIHJlbWFpbmRlcjogcmVzdWx0WzFdXG4gICAgICAgIH07XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmRpdm1vZCA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuZGl2bW9kID0gQmlnSW50ZWdlci5wcm90b3R5cGUuZGl2bW9kO1xuXG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5kaXZpZGUgPSBmdW5jdGlvbiAodikge1xuICAgICAgICByZXR1cm4gZGl2TW9kQW55KHRoaXMsIHYpWzBdO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5vdmVyID0gTmF0aXZlQmlnSW50LnByb3RvdHlwZS5kaXZpZGUgPSBmdW5jdGlvbiAodikge1xuICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludCh0aGlzLnZhbHVlIC8gcGFyc2VWYWx1ZSh2KS52YWx1ZSk7XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLm92ZXIgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmRpdmlkZSA9IEJpZ0ludGVnZXIucHJvdG90eXBlLm92ZXIgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5kaXZpZGU7XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5tb2QgPSBmdW5jdGlvbiAodikge1xuICAgICAgICByZXR1cm4gZGl2TW9kQW55KHRoaXMsIHYpWzFdO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5tb2QgPSBOYXRpdmVCaWdJbnQucHJvdG90eXBlLnJlbWFpbmRlciA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHJldHVybiBuZXcgTmF0aXZlQmlnSW50KHRoaXMudmFsdWUgJSBwYXJzZVZhbHVlKHYpLnZhbHVlKTtcbiAgICB9O1xuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUucmVtYWluZGVyID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5tb2QgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5yZW1haW5kZXIgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5tb2Q7XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5wb3cgPSBmdW5jdGlvbiAodikge1xuICAgICAgICB2YXIgbiA9IHBhcnNlVmFsdWUodiksXG4gICAgICAgICAgICBhID0gdGhpcy52YWx1ZSxcbiAgICAgICAgICAgIGIgPSBuLnZhbHVlLFxuICAgICAgICAgICAgdmFsdWUsIHgsIHk7XG4gICAgICAgIGlmIChiID09PSAwKSByZXR1cm4gSW50ZWdlclsxXTtcbiAgICAgICAgaWYgKGEgPT09IDApIHJldHVybiBJbnRlZ2VyWzBdO1xuICAgICAgICBpZiAoYSA9PT0gMSkgcmV0dXJuIEludGVnZXJbMV07XG4gICAgICAgIGlmIChhID09PSAtMSkgcmV0dXJuIG4uaXNFdmVuKCkgPyBJbnRlZ2VyWzFdIDogSW50ZWdlclstMV07XG4gICAgICAgIGlmIChuLnNpZ24pIHtcbiAgICAgICAgICAgIHJldHVybiBJbnRlZ2VyWzBdO1xuICAgICAgICB9XG4gICAgICAgIGlmICghbi5pc1NtYWxsKSB0aHJvdyBuZXcgRXJyb3IoXCJUaGUgZXhwb25lbnQgXCIgKyBuLnRvU3RyaW5nKCkgKyBcIiBpcyB0b28gbGFyZ2UuXCIpO1xuICAgICAgICBpZiAodGhpcy5pc1NtYWxsKSB7XG4gICAgICAgICAgICBpZiAoaXNQcmVjaXNlKHZhbHVlID0gTWF0aC5wb3coYSwgYikpKVxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU21hbGxJbnRlZ2VyKHRydW5jYXRlKHZhbHVlKSk7XG4gICAgICAgIH1cbiAgICAgICAgeCA9IHRoaXM7XG4gICAgICAgIHkgPSBJbnRlZ2VyWzFdO1xuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgaWYgKGIgJiAxID09PSAxKSB7XG4gICAgICAgICAgICAgICAgeSA9IHkudGltZXMoeCk7XG4gICAgICAgICAgICAgICAgLS1iO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGIgPT09IDApIGJyZWFrO1xuICAgICAgICAgICAgYiAvPSAyO1xuICAgICAgICAgICAgeCA9IHguc3F1YXJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHk7XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLnBvdyA9IEJpZ0ludGVnZXIucHJvdG90eXBlLnBvdztcblxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUucG93ID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgdmFyIG4gPSBwYXJzZVZhbHVlKHYpO1xuICAgICAgICB2YXIgYSA9IHRoaXMudmFsdWUsIGIgPSBuLnZhbHVlO1xuICAgICAgICB2YXIgXzAgPSBCaWdJbnQoMCksIF8xID0gQmlnSW50KDEpLCBfMiA9IEJpZ0ludCgyKTtcbiAgICAgICAgaWYgKGIgPT09IF8wKSByZXR1cm4gSW50ZWdlclsxXTtcbiAgICAgICAgaWYgKGEgPT09IF8wKSByZXR1cm4gSW50ZWdlclswXTtcbiAgICAgICAgaWYgKGEgPT09IF8xKSByZXR1cm4gSW50ZWdlclsxXTtcbiAgICAgICAgaWYgKGEgPT09IEJpZ0ludCgtMSkpIHJldHVybiBuLmlzRXZlbigpID8gSW50ZWdlclsxXSA6IEludGVnZXJbLTFdO1xuICAgICAgICBpZiAobi5pc05lZ2F0aXZlKCkpIHJldHVybiBuZXcgTmF0aXZlQmlnSW50KF8wKTtcbiAgICAgICAgdmFyIHggPSB0aGlzO1xuICAgICAgICB2YXIgeSA9IEludGVnZXJbMV07XG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICBpZiAoKGIgJiBfMSkgPT09IF8xKSB7XG4gICAgICAgICAgICAgICAgeSA9IHkudGltZXMoeCk7XG4gICAgICAgICAgICAgICAgLS1iO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGIgPT09IF8wKSBicmVhaztcbiAgICAgICAgICAgIGIgLz0gXzI7XG4gICAgICAgICAgICB4ID0geC5zcXVhcmUoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geTtcbiAgICB9XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5tb2RQb3cgPSBmdW5jdGlvbiAoZXhwLCBtb2QpIHtcbiAgICAgICAgZXhwID0gcGFyc2VWYWx1ZShleHApO1xuICAgICAgICBtb2QgPSBwYXJzZVZhbHVlKG1vZCk7XG4gICAgICAgIGlmIChtb2QuaXNaZXJvKCkpIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCB0YWtlIG1vZFBvdyB3aXRoIG1vZHVsdXMgMFwiKTtcbiAgICAgICAgdmFyIHIgPSBJbnRlZ2VyWzFdLFxuICAgICAgICAgICAgYmFzZSA9IHRoaXMubW9kKG1vZCk7XG4gICAgICAgIGlmIChleHAuaXNOZWdhdGl2ZSgpKSB7XG4gICAgICAgICAgICBleHAgPSBleHAubXVsdGlwbHkoSW50ZWdlclstMV0pO1xuICAgICAgICAgICAgYmFzZSA9IGJhc2UubW9kSW52KG1vZCk7XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKGV4cC5pc1Bvc2l0aXZlKCkpIHtcbiAgICAgICAgICAgIGlmIChiYXNlLmlzWmVybygpKSByZXR1cm4gSW50ZWdlclswXTtcbiAgICAgICAgICAgIGlmIChleHAuaXNPZGQoKSkgciA9IHIubXVsdGlwbHkoYmFzZSkubW9kKG1vZCk7XG4gICAgICAgICAgICBleHAgPSBleHAuZGl2aWRlKDIpO1xuICAgICAgICAgICAgYmFzZSA9IGJhc2Uuc3F1YXJlKCkubW9kKG1vZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHI7XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLm1vZFBvdyA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUubW9kUG93ID0gQmlnSW50ZWdlci5wcm90b3R5cGUubW9kUG93O1xuXG4gICAgZnVuY3Rpb24gY29tcGFyZUFicyhhLCBiKSB7XG4gICAgICAgIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBhLmxlbmd0aCA+IGIubGVuZ3RoID8gMSA6IC0xO1xuICAgICAgICB9XG4gICAgICAgIGZvciAodmFyIGkgPSBhLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBpZiAoYVtpXSAhPT0gYltpXSkgcmV0dXJuIGFbaV0gPiBiW2ldID8gMSA6IC0xO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmNvbXBhcmVBYnMgPSBmdW5jdGlvbiAodikge1xuICAgICAgICB2YXIgbiA9IHBhcnNlVmFsdWUodiksXG4gICAgICAgICAgICBhID0gdGhpcy52YWx1ZSxcbiAgICAgICAgICAgIGIgPSBuLnZhbHVlO1xuICAgICAgICBpZiAobi5pc1NtYWxsKSByZXR1cm4gMTtcbiAgICAgICAgcmV0dXJuIGNvbXBhcmVBYnMoYSwgYik7XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLmNvbXBhcmVBYnMgPSBmdW5jdGlvbiAodikge1xuICAgICAgICB2YXIgbiA9IHBhcnNlVmFsdWUodiksXG4gICAgICAgICAgICBhID0gTWF0aC5hYnModGhpcy52YWx1ZSksXG4gICAgICAgICAgICBiID0gbi52YWx1ZTtcbiAgICAgICAgaWYgKG4uaXNTbWFsbCkge1xuICAgICAgICAgICAgYiA9IE1hdGguYWJzKGIpO1xuICAgICAgICAgICAgcmV0dXJuIGEgPT09IGIgPyAwIDogYSA+IGIgPyAxIDogLTE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5jb21wYXJlQWJzID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgdmFyIGEgPSB0aGlzLnZhbHVlO1xuICAgICAgICB2YXIgYiA9IHBhcnNlVmFsdWUodikudmFsdWU7XG4gICAgICAgIGEgPSBhID49IDAgPyBhIDogLWE7XG4gICAgICAgIGIgPSBiID49IDAgPyBiIDogLWI7XG4gICAgICAgIHJldHVybiBhID09PSBiID8gMCA6IGEgPiBiID8gMSA6IC0xO1xuICAgIH1cblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbiAodikge1xuICAgICAgICAvLyBTZWUgZGlzY3Vzc2lvbiBhYm91dCBjb21wYXJpc29uIHdpdGggSW5maW5pdHk6XG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wZXRlcm9sc29uL0JpZ0ludGVnZXIuanMvaXNzdWVzLzYxXG4gICAgICAgIGlmICh2ID09PSBJbmZpbml0eSkge1xuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2ID09PSAtSW5maW5pdHkpIHtcbiAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG4gPSBwYXJzZVZhbHVlKHYpLFxuICAgICAgICAgICAgYSA9IHRoaXMudmFsdWUsXG4gICAgICAgICAgICBiID0gbi52YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMuc2lnbiAhPT0gbi5zaWduKSB7XG4gICAgICAgICAgICByZXR1cm4gbi5zaWduID8gMSA6IC0xO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuLmlzU21hbGwpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNpZ24gPyAtMSA6IDE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbXBhcmVBYnMoYSwgYikgKiAodGhpcy5zaWduID8gLTEgOiAxKTtcbiAgICB9O1xuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmNvbXBhcmVUbyA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmNvbXBhcmU7XG5cbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbiAodikge1xuICAgICAgICBpZiAodiA9PT0gSW5maW5pdHkpIHtcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodiA9PT0gLUluZmluaXR5KSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBuID0gcGFyc2VWYWx1ZSh2KSxcbiAgICAgICAgICAgIGEgPSB0aGlzLnZhbHVlLFxuICAgICAgICAgICAgYiA9IG4udmFsdWU7XG4gICAgICAgIGlmIChuLmlzU21hbGwpIHtcbiAgICAgICAgICAgIHJldHVybiBhID09IGIgPyAwIDogYSA+IGIgPyAxIDogLTE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGEgPCAwICE9PSBuLnNpZ24pIHtcbiAgICAgICAgICAgIHJldHVybiBhIDwgMCA/IC0xIDogMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYSA8IDAgPyAxIDogLTE7XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLmNvbXBhcmVUbyA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuY29tcGFyZTtcblxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIGlmICh2ID09PSBJbmZpbml0eSkge1xuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2ID09PSAtSW5maW5pdHkpIHtcbiAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIHZhciBhID0gdGhpcy52YWx1ZTtcbiAgICAgICAgdmFyIGIgPSBwYXJzZVZhbHVlKHYpLnZhbHVlO1xuICAgICAgICByZXR1cm4gYSA9PT0gYiA/IDAgOiBhID4gYiA/IDEgOiAtMTtcbiAgICB9XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5jb21wYXJlVG8gPSBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmNvbXBhcmU7XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5lcXVhbHMgPSBmdW5jdGlvbiAodikge1xuICAgICAgICByZXR1cm4gdGhpcy5jb21wYXJlKHYpID09PSAwO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5lcSA9IE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuZXF1YWxzID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5lcSA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuZXF1YWxzID0gQmlnSW50ZWdlci5wcm90b3R5cGUuZXEgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5lcXVhbHM7XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5ub3RFcXVhbHMgPSBmdW5jdGlvbiAodikge1xuICAgICAgICByZXR1cm4gdGhpcy5jb21wYXJlKHYpICE9PSAwO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5uZXEgPSBOYXRpdmVCaWdJbnQucHJvdG90eXBlLm5vdEVxdWFscyA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUubmVxID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5ub3RFcXVhbHMgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5uZXEgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5ub3RFcXVhbHM7XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5ncmVhdGVyID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcGFyZSh2KSA+IDA7XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmd0ID0gTmF0aXZlQmlnSW50LnByb3RvdHlwZS5ncmVhdGVyID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5ndCA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuZ3JlYXRlciA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmd0ID0gQmlnSW50ZWdlci5wcm90b3R5cGUuZ3JlYXRlcjtcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmxlc3NlciA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBhcmUodikgPCAwO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5sdCA9IE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubGVzc2VyID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5sdCA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUubGVzc2VyID0gQmlnSW50ZWdlci5wcm90b3R5cGUubHQgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5sZXNzZXI7XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5ncmVhdGVyT3JFcXVhbHMgPSBmdW5jdGlvbiAodikge1xuICAgICAgICByZXR1cm4gdGhpcy5jb21wYXJlKHYpID49IDA7XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmdlcSA9IE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuZ3JlYXRlck9yRXF1YWxzID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5nZXEgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmdyZWF0ZXJPckVxdWFscyA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmdlcSA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmdyZWF0ZXJPckVxdWFscztcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmxlc3Nlck9yRXF1YWxzID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcGFyZSh2KSA8PSAwO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5sZXEgPSBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmxlc3Nlck9yRXF1YWxzID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5sZXEgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmxlc3Nlck9yRXF1YWxzID0gQmlnSW50ZWdlci5wcm90b3R5cGUubGVxID0gQmlnSW50ZWdlci5wcm90b3R5cGUubGVzc2VyT3JFcXVhbHM7XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5pc0V2ZW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAodGhpcy52YWx1ZVswXSAmIDEpID09PSAwO1xuICAgIH07XG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5pc0V2ZW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAodGhpcy52YWx1ZSAmIDEpID09PSAwO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5pc0V2ZW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAodGhpcy52YWx1ZSAmIEJpZ0ludCgxKSkgPT09IEJpZ0ludCgwKTtcbiAgICB9XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5pc09kZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLnZhbHVlWzBdICYgMSkgPT09IDE7XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLmlzT2RkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMudmFsdWUgJiAxKSA9PT0gMTtcbiAgICB9O1xuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuaXNPZGQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAodGhpcy52YWx1ZSAmIEJpZ0ludCgxKSkgPT09IEJpZ0ludCgxKTtcbiAgICB9XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5pc1Bvc2l0aXZlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gIXRoaXMuc2lnbjtcbiAgICB9O1xuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUuaXNQb3NpdGl2ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUgPiAwO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5pc1Bvc2l0aXZlID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5pc1Bvc2l0aXZlO1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuaXNOZWdhdGl2ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2lnbjtcbiAgICB9O1xuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUuaXNOZWdhdGl2ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUgPCAwO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5pc05lZ2F0aXZlID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5pc05lZ2F0aXZlO1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuaXNVbml0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLmlzVW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIE1hdGguYWJzKHRoaXMudmFsdWUpID09PSAxO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5pc1VuaXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFicygpLnZhbHVlID09PSBCaWdJbnQoMSk7XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuaXNaZXJvID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLmlzWmVybyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUgPT09IDA7XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmlzWmVybyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUgPT09IEJpZ0ludCgwKTtcbiAgICB9XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5pc0RpdmlzaWJsZUJ5ID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgdmFyIG4gPSBwYXJzZVZhbHVlKHYpO1xuICAgICAgICBpZiAobi5pc1plcm8oKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAobi5pc1VuaXQoKSkgcmV0dXJuIHRydWU7XG4gICAgICAgIGlmIChuLmNvbXBhcmVBYnMoMikgPT09IDApIHJldHVybiB0aGlzLmlzRXZlbigpO1xuICAgICAgICByZXR1cm4gdGhpcy5tb2QobikuaXNaZXJvKCk7XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmlzRGl2aXNpYmxlQnkgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmlzRGl2aXNpYmxlQnkgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5pc0RpdmlzaWJsZUJ5O1xuXG4gICAgZnVuY3Rpb24gaXNCYXNpY1ByaW1lKHYpIHtcbiAgICAgICAgdmFyIG4gPSB2LmFicygpO1xuICAgICAgICBpZiAobi5pc1VuaXQoKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAobi5lcXVhbHMoMikgfHwgbi5lcXVhbHMoMykgfHwgbi5lcXVhbHMoNSkpIHJldHVybiB0cnVlO1xuICAgICAgICBpZiAobi5pc0V2ZW4oKSB8fCBuLmlzRGl2aXNpYmxlQnkoMykgfHwgbi5pc0RpdmlzaWJsZUJ5KDUpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmIChuLmxlc3Nlcig0OSkpIHJldHVybiB0cnVlO1xuICAgICAgICAvLyB3ZSBkb24ndCBrbm93IGlmIGl0J3MgcHJpbWU6IGxldCB0aGUgb3RoZXIgZnVuY3Rpb25zIGZpZ3VyZSBpdCBvdXRcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtaWxsZXJSYWJpblRlc3QobiwgYSkge1xuICAgICAgICB2YXIgblByZXYgPSBuLnByZXYoKSxcbiAgICAgICAgICAgIGIgPSBuUHJldixcbiAgICAgICAgICAgIHIgPSAwLFxuICAgICAgICAgICAgZCwgdCwgaSwgeDtcbiAgICAgICAgd2hpbGUgKGIuaXNFdmVuKCkpIGIgPSBiLmRpdmlkZSgyKSwgcisrO1xuICAgICAgICBuZXh0OiBmb3IgKGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKG4ubGVzc2VyKGFbaV0pKSBjb250aW51ZTtcbiAgICAgICAgICAgIHggPSBiaWdJbnQoYVtpXSkubW9kUG93KGIsIG4pO1xuICAgICAgICAgICAgaWYgKHguaXNVbml0KCkgfHwgeC5lcXVhbHMoblByZXYpKSBjb250aW51ZTtcbiAgICAgICAgICAgIGZvciAoZCA9IHIgLSAxOyBkICE9IDA7IGQtLSkge1xuICAgICAgICAgICAgICAgIHggPSB4LnNxdWFyZSgpLm1vZChuKTtcbiAgICAgICAgICAgICAgICBpZiAoeC5pc1VuaXQoKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmICh4LmVxdWFscyhuUHJldikpIGNvbnRpbnVlIG5leHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gU2V0IFwic3RyaWN0XCIgdG8gdHJ1ZSB0byBmb3JjZSBHUkgtc3VwcG9ydGVkIGxvd2VyIGJvdW5kIG9mIDIqbG9nKE4pXjJcbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5pc1ByaW1lID0gZnVuY3Rpb24gKHN0cmljdCkge1xuICAgICAgICB2YXIgaXNQcmltZSA9IGlzQmFzaWNQcmltZSh0aGlzKTtcbiAgICAgICAgaWYgKGlzUHJpbWUgIT09IHVuZGVmaW5lZCkgcmV0dXJuIGlzUHJpbWU7XG4gICAgICAgIHZhciBuID0gdGhpcy5hYnMoKTtcbiAgICAgICAgdmFyIGJpdHMgPSBuLmJpdExlbmd0aCgpO1xuICAgICAgICBpZiAoYml0cyA8PSA2NClcbiAgICAgICAgICAgIHJldHVybiBtaWxsZXJSYWJpblRlc3QobiwgWzIsIDMsIDUsIDcsIDExLCAxMywgMTcsIDE5LCAyMywgMjksIDMxLCAzN10pO1xuICAgICAgICB2YXIgbG9nTiA9IE1hdGgubG9nKDIpICogYml0cy50b0pTTnVtYmVyKCk7XG4gICAgICAgIHZhciB0ID0gTWF0aC5jZWlsKChzdHJpY3QgPT09IHRydWUpID8gKDIgKiBNYXRoLnBvdyhsb2dOLCAyKSkgOiBsb2dOKTtcbiAgICAgICAgZm9yICh2YXIgYSA9IFtdLCBpID0gMDsgaSA8IHQ7IGkrKykge1xuICAgICAgICAgICAgYS5wdXNoKGJpZ0ludChpICsgMikpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtaWxsZXJSYWJpblRlc3QobiwgYSk7XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmlzUHJpbWUgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmlzUHJpbWUgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5pc1ByaW1lO1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuaXNQcm9iYWJsZVByaW1lID0gZnVuY3Rpb24gKGl0ZXJhdGlvbnMpIHtcbiAgICAgICAgdmFyIGlzUHJpbWUgPSBpc0Jhc2ljUHJpbWUodGhpcyk7XG4gICAgICAgIGlmIChpc1ByaW1lICE9PSB1bmRlZmluZWQpIHJldHVybiBpc1ByaW1lO1xuICAgICAgICB2YXIgbiA9IHRoaXMuYWJzKCk7XG4gICAgICAgIHZhciB0ID0gaXRlcmF0aW9ucyA9PT0gdW5kZWZpbmVkID8gNSA6IGl0ZXJhdGlvbnM7XG4gICAgICAgIGZvciAodmFyIGEgPSBbXSwgaSA9IDA7IGkgPCB0OyBpKyspIHtcbiAgICAgICAgICAgIGEucHVzaChiaWdJbnQucmFuZEJldHdlZW4oMiwgbi5taW51cygyKSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtaWxsZXJSYWJpblRlc3QobiwgYSk7XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmlzUHJvYmFibGVQcmltZSA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuaXNQcm9iYWJsZVByaW1lID0gQmlnSW50ZWdlci5wcm90b3R5cGUuaXNQcm9iYWJsZVByaW1lO1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUubW9kSW52ID0gZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgdmFyIHQgPSBiaWdJbnQuemVybywgbmV3VCA9IGJpZ0ludC5vbmUsIHIgPSBwYXJzZVZhbHVlKG4pLCBuZXdSID0gdGhpcy5hYnMoKSwgcSwgbGFzdFQsIGxhc3RSO1xuICAgICAgICB3aGlsZSAoIW5ld1IuaXNaZXJvKCkpIHtcbiAgICAgICAgICAgIHEgPSByLmRpdmlkZShuZXdSKTtcbiAgICAgICAgICAgIGxhc3RUID0gdDtcbiAgICAgICAgICAgIGxhc3RSID0gcjtcbiAgICAgICAgICAgIHQgPSBuZXdUO1xuICAgICAgICAgICAgciA9IG5ld1I7XG4gICAgICAgICAgICBuZXdUID0gbGFzdFQuc3VidHJhY3QocS5tdWx0aXBseShuZXdUKSk7XG4gICAgICAgICAgICBuZXdSID0gbGFzdFIuc3VidHJhY3QocS5tdWx0aXBseShuZXdSKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFyLmlzVW5pdCgpKSB0aHJvdyBuZXcgRXJyb3IodGhpcy50b1N0cmluZygpICsgXCIgYW5kIFwiICsgbi50b1N0cmluZygpICsgXCIgYXJlIG5vdCBjby1wcmltZVwiKTtcbiAgICAgICAgaWYgKHQuY29tcGFyZSgwKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIHQgPSB0LmFkZChuKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc05lZ2F0aXZlKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0Lm5lZ2F0ZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG5cbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLm1vZEludiA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUubW9kSW52ID0gQmlnSW50ZWdlci5wcm90b3R5cGUubW9kSW52O1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMuc2lnbikge1xuICAgICAgICAgICAgcmV0dXJuIHN1YnRyYWN0U21hbGwodmFsdWUsIDEsIHRoaXMuc2lnbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKGFkZFNtYWxsKHZhbHVlLCAxKSwgdGhpcy5zaWduKTtcbiAgICB9O1xuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICAgICAgaWYgKHZhbHVlICsgMSA8IE1BWF9JTlQpIHJldHVybiBuZXcgU21hbGxJbnRlZ2VyKHZhbHVlICsgMSk7XG4gICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihNQVhfSU5UX0FSUiwgZmFsc2UpO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludCh0aGlzLnZhbHVlICsgQmlnSW50KDEpKTtcbiAgICB9XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5wcmV2ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgICBpZiAodGhpcy5zaWduKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIoYWRkU21hbGwodmFsdWUsIDEpLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VidHJhY3RTbWFsbCh2YWx1ZSwgMSwgdGhpcy5zaWduKTtcbiAgICB9O1xuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUucHJldiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICAgICAgaWYgKHZhbHVlIC0gMSA+IC1NQVhfSU5UKSByZXR1cm4gbmV3IFNtYWxsSW50ZWdlcih2YWx1ZSAtIDEpO1xuICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIoTUFYX0lOVF9BUlIsIHRydWUpO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5wcmV2ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludCh0aGlzLnZhbHVlIC0gQmlnSW50KDEpKTtcbiAgICB9XG5cbiAgICB2YXIgcG93ZXJzT2ZUd28gPSBbMV07XG4gICAgd2hpbGUgKDIgKiBwb3dlcnNPZlR3b1twb3dlcnNPZlR3by5sZW5ndGggLSAxXSA8PSBCQVNFKSBwb3dlcnNPZlR3by5wdXNoKDIgKiBwb3dlcnNPZlR3b1twb3dlcnNPZlR3by5sZW5ndGggLSAxXSk7XG4gICAgdmFyIHBvd2VyczJMZW5ndGggPSBwb3dlcnNPZlR3by5sZW5ndGgsIGhpZ2hlc3RQb3dlcjIgPSBwb3dlcnNPZlR3b1twb3dlcnMyTGVuZ3RoIC0gMV07XG5cbiAgICBmdW5jdGlvbiBzaGlmdF9pc1NtYWxsKG4pIHtcbiAgICAgICAgcmV0dXJuIE1hdGguYWJzKG4pIDw9IEJBU0U7XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuc2hpZnRMZWZ0ID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgdmFyIG4gPSBwYXJzZVZhbHVlKHYpLnRvSlNOdW1iZXIoKTtcbiAgICAgICAgaWYgKCFzaGlmdF9pc1NtYWxsKG4pKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoU3RyaW5nKG4pICsgXCIgaXMgdG9vIGxhcmdlIGZvciBzaGlmdGluZy5cIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG4gPCAwKSByZXR1cm4gdGhpcy5zaGlmdFJpZ2h0KC1uKTtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXM7XG4gICAgICAgIGlmIChyZXN1bHQuaXNaZXJvKCkpIHJldHVybiByZXN1bHQ7XG4gICAgICAgIHdoaWxlIChuID49IHBvd2VyczJMZW5ndGgpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5tdWx0aXBseShoaWdoZXN0UG93ZXIyKTtcbiAgICAgICAgICAgIG4gLT0gcG93ZXJzMkxlbmd0aCAtIDE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdC5tdWx0aXBseShwb3dlcnNPZlR3b1tuXSk7XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLnNoaWZ0TGVmdCA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuc2hpZnRMZWZ0ID0gQmlnSW50ZWdlci5wcm90b3R5cGUuc2hpZnRMZWZ0O1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuc2hpZnRSaWdodCA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHZhciByZW1RdW87XG4gICAgICAgIHZhciBuID0gcGFyc2VWYWx1ZSh2KS50b0pTTnVtYmVyKCk7XG4gICAgICAgIGlmICghc2hpZnRfaXNTbWFsbChuKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFN0cmluZyhuKSArIFwiIGlzIHRvbyBsYXJnZSBmb3Igc2hpZnRpbmcuXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuIDwgMCkgcmV0dXJuIHRoaXMuc2hpZnRMZWZ0KC1uKTtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXM7XG4gICAgICAgIHdoaWxlIChuID49IHBvd2VyczJMZW5ndGgpIHtcbiAgICAgICAgICAgIGlmIChyZXN1bHQuaXNaZXJvKCkgfHwgKHJlc3VsdC5pc05lZ2F0aXZlKCkgJiYgcmVzdWx0LmlzVW5pdCgpKSkgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIHJlbVF1byA9IGRpdk1vZEFueShyZXN1bHQsIGhpZ2hlc3RQb3dlcjIpO1xuICAgICAgICAgICAgcmVzdWx0ID0gcmVtUXVvWzFdLmlzTmVnYXRpdmUoKSA/IHJlbVF1b1swXS5wcmV2KCkgOiByZW1RdW9bMF07XG4gICAgICAgICAgICBuIC09IHBvd2VyczJMZW5ndGggLSAxO1xuICAgICAgICB9XG4gICAgICAgIHJlbVF1byA9IGRpdk1vZEFueShyZXN1bHQsIHBvd2Vyc09mVHdvW25dKTtcbiAgICAgICAgcmV0dXJuIHJlbVF1b1sxXS5pc05lZ2F0aXZlKCkgPyByZW1RdW9bMF0ucHJldigpIDogcmVtUXVvWzBdO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5zaGlmdFJpZ2h0ID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5zaGlmdFJpZ2h0ID0gQmlnSW50ZWdlci5wcm90b3R5cGUuc2hpZnRSaWdodDtcblxuICAgIGZ1bmN0aW9uIGJpdHdpc2UoeCwgeSwgZm4pIHtcbiAgICAgICAgeSA9IHBhcnNlVmFsdWUoeSk7XG4gICAgICAgIHZhciB4U2lnbiA9IHguaXNOZWdhdGl2ZSgpLCB5U2lnbiA9IHkuaXNOZWdhdGl2ZSgpO1xuICAgICAgICB2YXIgeFJlbSA9IHhTaWduID8geC5ub3QoKSA6IHgsXG4gICAgICAgICAgICB5UmVtID0geVNpZ24gPyB5Lm5vdCgpIDogeTtcbiAgICAgICAgdmFyIHhEaWdpdCA9IDAsIHlEaWdpdCA9IDA7XG4gICAgICAgIHZhciB4RGl2TW9kID0gbnVsbCwgeURpdk1vZCA9IG51bGw7XG4gICAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgICAgd2hpbGUgKCF4UmVtLmlzWmVybygpIHx8ICF5UmVtLmlzWmVybygpKSB7XG4gICAgICAgICAgICB4RGl2TW9kID0gZGl2TW9kQW55KHhSZW0sIGhpZ2hlc3RQb3dlcjIpO1xuICAgICAgICAgICAgeERpZ2l0ID0geERpdk1vZFsxXS50b0pTTnVtYmVyKCk7XG4gICAgICAgICAgICBpZiAoeFNpZ24pIHtcbiAgICAgICAgICAgICAgICB4RGlnaXQgPSBoaWdoZXN0UG93ZXIyIC0gMSAtIHhEaWdpdDsgLy8gdHdvJ3MgY29tcGxlbWVudCBmb3IgbmVnYXRpdmUgbnVtYmVyc1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB5RGl2TW9kID0gZGl2TW9kQW55KHlSZW0sIGhpZ2hlc3RQb3dlcjIpO1xuICAgICAgICAgICAgeURpZ2l0ID0geURpdk1vZFsxXS50b0pTTnVtYmVyKCk7XG4gICAgICAgICAgICBpZiAoeVNpZ24pIHtcbiAgICAgICAgICAgICAgICB5RGlnaXQgPSBoaWdoZXN0UG93ZXIyIC0gMSAtIHlEaWdpdDsgLy8gdHdvJ3MgY29tcGxlbWVudCBmb3IgbmVnYXRpdmUgbnVtYmVyc1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB4UmVtID0geERpdk1vZFswXTtcbiAgICAgICAgICAgIHlSZW0gPSB5RGl2TW9kWzBdO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goZm4oeERpZ2l0LCB5RGlnaXQpKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc3VtID0gZm4oeFNpZ24gPyAxIDogMCwgeVNpZ24gPyAxIDogMCkgIT09IDAgPyBiaWdJbnQoLTEpIDogYmlnSW50KDApO1xuICAgICAgICBmb3IgKHZhciBpID0gcmVzdWx0Lmxlbmd0aCAtIDE7IGkgPj0gMDsgaSAtPSAxKSB7XG4gICAgICAgICAgICBzdW0gPSBzdW0ubXVsdGlwbHkoaGlnaGVzdFBvd2VyMikuYWRkKGJpZ0ludChyZXN1bHRbaV0pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VtO1xuICAgIH1cblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLm5vdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmVnYXRlKCkucHJldigpO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5ub3QgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLm5vdCA9IEJpZ0ludGVnZXIucHJvdG90eXBlLm5vdDtcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmFuZCA9IGZ1bmN0aW9uIChuKSB7XG4gICAgICAgIHJldHVybiBiaXR3aXNlKHRoaXMsIG4sIGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBhICYgYjsgfSk7XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmFuZCA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuYW5kID0gQmlnSW50ZWdlci5wcm90b3R5cGUuYW5kO1xuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUub3IgPSBmdW5jdGlvbiAobikge1xuICAgICAgICByZXR1cm4gYml0d2lzZSh0aGlzLCBuLCBmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYSB8IGI7IH0pO1xuICAgIH07XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5vciA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUub3IgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5vcjtcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLnhvciA9IGZ1bmN0aW9uIChuKSB7XG4gICAgICAgIHJldHVybiBiaXR3aXNlKHRoaXMsIG4sIGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBhIF4gYjsgfSk7XG4gICAgfTtcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLnhvciA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUueG9yID0gQmlnSW50ZWdlci5wcm90b3R5cGUueG9yO1xuXG4gICAgdmFyIExPQk1BU0tfSSA9IDEgPDwgMzAsIExPQk1BU0tfQkkgPSAoQkFTRSAmIC1CQVNFKSAqIChCQVNFICYgLUJBU0UpIHwgTE9CTUFTS19JO1xuICAgIGZ1bmN0aW9uIHJvdWdoTE9CKG4pIHsgLy8gZ2V0IGxvd2VzdE9uZUJpdCAocm91Z2gpXG4gICAgICAgIC8vIFNtYWxsSW50ZWdlcjogcmV0dXJuIE1pbihsb3dlc3RPbmVCaXQobiksIDEgPDwgMzApXG4gICAgICAgIC8vIEJpZ0ludGVnZXI6IHJldHVybiBNaW4obG93ZXN0T25lQml0KG4pLCAxIDw8IDE0KSBbQkFTRT0xZTddXG4gICAgICAgIHZhciB2ID0gbi52YWx1ZSxcbiAgICAgICAgICAgIHggPSB0eXBlb2YgdiA9PT0gXCJudW1iZXJcIiA/IHYgfCBMT0JNQVNLX0kgOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB2ID09PSBcImJpZ2ludFwiID8gdiB8IEJpZ0ludChMT0JNQVNLX0kpIDpcbiAgICAgICAgICAgICAgICAgICAgdlswXSArIHZbMV0gKiBCQVNFIHwgTE9CTUFTS19CSTtcbiAgICAgICAgcmV0dXJuIHggJiAteDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpbnRlZ2VyTG9nYXJpdGhtKHZhbHVlLCBiYXNlKSB7XG4gICAgICAgIGlmIChiYXNlLmNvbXBhcmVUbyh2YWx1ZSkgPD0gMCkge1xuICAgICAgICAgICAgdmFyIHRtcCA9IGludGVnZXJMb2dhcml0aG0odmFsdWUsIGJhc2Uuc3F1YXJlKGJhc2UpKTtcbiAgICAgICAgICAgIHZhciBwID0gdG1wLnA7XG4gICAgICAgICAgICB2YXIgZSA9IHRtcC5lO1xuICAgICAgICAgICAgdmFyIHQgPSBwLm11bHRpcGx5KGJhc2UpO1xuICAgICAgICAgICAgcmV0dXJuIHQuY29tcGFyZVRvKHZhbHVlKSA8PSAwID8geyBwOiB0LCBlOiBlICogMiArIDEgfSA6IHsgcDogcCwgZTogZSAqIDIgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBwOiBiaWdJbnQoMSksIGU6IDAgfTtcbiAgICB9XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5iaXRMZW5ndGggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBuID0gdGhpcztcbiAgICAgICAgaWYgKG4uY29tcGFyZVRvKGJpZ0ludCgwKSkgPCAwKSB7XG4gICAgICAgICAgICBuID0gbi5uZWdhdGUoKS5zdWJ0cmFjdChiaWdJbnQoMSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuLmNvbXBhcmVUbyhiaWdJbnQoMCkpID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gYmlnSW50KDApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBiaWdJbnQoaW50ZWdlckxvZ2FyaXRobShuLCBiaWdJbnQoMikpLmUpLmFkZChiaWdJbnQoMSkpO1xuICAgIH1cbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmJpdExlbmd0aCA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuYml0TGVuZ3RoID0gQmlnSW50ZWdlci5wcm90b3R5cGUuYml0TGVuZ3RoO1xuXG4gICAgZnVuY3Rpb24gbWF4KGEsIGIpIHtcbiAgICAgICAgYSA9IHBhcnNlVmFsdWUoYSk7XG4gICAgICAgIGIgPSBwYXJzZVZhbHVlKGIpO1xuICAgICAgICByZXR1cm4gYS5ncmVhdGVyKGIpID8gYSA6IGI7XG4gICAgfVxuICAgIGZ1bmN0aW9uIG1pbihhLCBiKSB7XG4gICAgICAgIGEgPSBwYXJzZVZhbHVlKGEpO1xuICAgICAgICBiID0gcGFyc2VWYWx1ZShiKTtcbiAgICAgICAgcmV0dXJuIGEubGVzc2VyKGIpID8gYSA6IGI7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdjZChhLCBiKSB7XG4gICAgICAgIGEgPSBwYXJzZVZhbHVlKGEpLmFicygpO1xuICAgICAgICBiID0gcGFyc2VWYWx1ZShiKS5hYnMoKTtcbiAgICAgICAgaWYgKGEuZXF1YWxzKGIpKSByZXR1cm4gYTtcbiAgICAgICAgaWYgKGEuaXNaZXJvKCkpIHJldHVybiBiO1xuICAgICAgICBpZiAoYi5pc1plcm8oKSkgcmV0dXJuIGE7XG4gICAgICAgIHZhciBjID0gSW50ZWdlclsxXSwgZCwgdDtcbiAgICAgICAgd2hpbGUgKGEuaXNFdmVuKCkgJiYgYi5pc0V2ZW4oKSkge1xuICAgICAgICAgICAgZCA9IG1pbihyb3VnaExPQihhKSwgcm91Z2hMT0IoYikpO1xuICAgICAgICAgICAgYSA9IGEuZGl2aWRlKGQpO1xuICAgICAgICAgICAgYiA9IGIuZGl2aWRlKGQpO1xuICAgICAgICAgICAgYyA9IGMubXVsdGlwbHkoZCk7XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKGEuaXNFdmVuKCkpIHtcbiAgICAgICAgICAgIGEgPSBhLmRpdmlkZShyb3VnaExPQihhKSk7XG4gICAgICAgIH1cbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgd2hpbGUgKGIuaXNFdmVuKCkpIHtcbiAgICAgICAgICAgICAgICBiID0gYi5kaXZpZGUocm91Z2hMT0IoYikpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGEuZ3JlYXRlcihiKSkge1xuICAgICAgICAgICAgICAgIHQgPSBiOyBiID0gYTsgYSA9IHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBiID0gYi5zdWJ0cmFjdChhKTtcbiAgICAgICAgfSB3aGlsZSAoIWIuaXNaZXJvKCkpO1xuICAgICAgICByZXR1cm4gYy5pc1VuaXQoKSA/IGEgOiBhLm11bHRpcGx5KGMpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBsY20oYSwgYikge1xuICAgICAgICBhID0gcGFyc2VWYWx1ZShhKS5hYnMoKTtcbiAgICAgICAgYiA9IHBhcnNlVmFsdWUoYikuYWJzKCk7XG4gICAgICAgIHJldHVybiBhLmRpdmlkZShnY2QoYSwgYikpLm11bHRpcGx5KGIpO1xuICAgIH1cbiAgICBmdW5jdGlvbiByYW5kQmV0d2VlbihhLCBiKSB7XG4gICAgICAgIGEgPSBwYXJzZVZhbHVlKGEpO1xuICAgICAgICBiID0gcGFyc2VWYWx1ZShiKTtcbiAgICAgICAgdmFyIGxvdyA9IG1pbihhLCBiKSwgaGlnaCA9IG1heChhLCBiKTtcbiAgICAgICAgdmFyIHJhbmdlID0gaGlnaC5zdWJ0cmFjdChsb3cpLmFkZCgxKTtcbiAgICAgICAgaWYgKHJhbmdlLmlzU21hbGwpIHJldHVybiBsb3cuYWRkKE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIHJhbmdlKSk7XG4gICAgICAgIHZhciBkaWdpdHMgPSB0b0Jhc2UocmFuZ2UsIEJBU0UpLnZhbHVlO1xuICAgICAgICB2YXIgcmVzdWx0ID0gW10sIHJlc3RyaWN0ZWQgPSB0cnVlO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRpZ2l0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIHRvcCA9IHJlc3RyaWN0ZWQgPyBkaWdpdHNbaV0gOiBCQVNFO1xuICAgICAgICAgICAgdmFyIGRpZ2l0ID0gdHJ1bmNhdGUoTWF0aC5yYW5kb20oKSAqIHRvcCk7XG4gICAgICAgICAgICByZXN1bHQucHVzaChkaWdpdCk7XG4gICAgICAgICAgICBpZiAoZGlnaXQgPCB0b3ApIHJlc3RyaWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbG93LmFkZChJbnRlZ2VyLmZyb21BcnJheShyZXN1bHQsIEJBU0UsIGZhbHNlKSk7XG4gICAgfVxuXG4gICAgdmFyIHBhcnNlQmFzZSA9IGZ1bmN0aW9uICh0ZXh0LCBiYXNlLCBhbHBoYWJldCwgY2FzZVNlbnNpdGl2ZSkge1xuICAgICAgICBhbHBoYWJldCA9IGFscGhhYmV0IHx8IERFRkFVTFRfQUxQSEFCRVQ7XG4gICAgICAgIHRleHQgPSBTdHJpbmcodGV4dCk7XG4gICAgICAgIGlmICghY2FzZVNlbnNpdGl2ZSkge1xuICAgICAgICAgICAgdGV4dCA9IHRleHQudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIGFscGhhYmV0ID0gYWxwaGFiZXQudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbGVuZ3RoID0gdGV4dC5sZW5ndGg7XG4gICAgICAgIHZhciBpO1xuICAgICAgICB2YXIgYWJzQmFzZSA9IE1hdGguYWJzKGJhc2UpO1xuICAgICAgICB2YXIgYWxwaGFiZXRWYWx1ZXMgPSB7fTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGFscGhhYmV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBhbHBoYWJldFZhbHVlc1thbHBoYWJldFtpXV0gPSBpO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIGMgPSB0ZXh0W2ldO1xuICAgICAgICAgICAgaWYgKGMgPT09IFwiLVwiKSBjb250aW51ZTtcbiAgICAgICAgICAgIGlmIChjIGluIGFscGhhYmV0VmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKGFscGhhYmV0VmFsdWVzW2NdID49IGFic0Jhc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT09IFwiMVwiICYmIGFic0Jhc2UgPT09IDEpIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYyArIFwiIGlzIG5vdCBhIHZhbGlkIGRpZ2l0IGluIGJhc2UgXCIgKyBiYXNlICsgXCIuXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBiYXNlID0gcGFyc2VWYWx1ZShiYXNlKTtcbiAgICAgICAgdmFyIGRpZ2l0cyA9IFtdO1xuICAgICAgICB2YXIgaXNOZWdhdGl2ZSA9IHRleHRbMF0gPT09IFwiLVwiO1xuICAgICAgICBmb3IgKGkgPSBpc05lZ2F0aXZlID8gMSA6IDA7IGkgPCB0ZXh0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgYyA9IHRleHRbaV07XG4gICAgICAgICAgICBpZiAoYyBpbiBhbHBoYWJldFZhbHVlcykgZGlnaXRzLnB1c2gocGFyc2VWYWx1ZShhbHBoYWJldFZhbHVlc1tjXSkpO1xuICAgICAgICAgICAgZWxzZSBpZiAoYyA9PT0gXCI8XCIpIHtcbiAgICAgICAgICAgICAgICB2YXIgc3RhcnQgPSBpO1xuICAgICAgICAgICAgICAgIGRvIHsgaSsrOyB9IHdoaWxlICh0ZXh0W2ldICE9PSBcIj5cIiAmJiBpIDwgdGV4dC5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIGRpZ2l0cy5wdXNoKHBhcnNlVmFsdWUodGV4dC5zbGljZShzdGFydCArIDEsIGkpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHRocm93IG5ldyBFcnJvcihjICsgXCIgaXMgbm90IGEgdmFsaWQgY2hhcmFjdGVyXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXJzZUJhc2VGcm9tQXJyYXkoZGlnaXRzLCBiYXNlLCBpc05lZ2F0aXZlKTtcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gcGFyc2VCYXNlRnJvbUFycmF5KGRpZ2l0cywgYmFzZSwgaXNOZWdhdGl2ZSkge1xuICAgICAgICB2YXIgdmFsID0gSW50ZWdlclswXSwgcG93ID0gSW50ZWdlclsxXSwgaTtcbiAgICAgICAgZm9yIChpID0gZGlnaXRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICB2YWwgPSB2YWwuYWRkKGRpZ2l0c1tpXS50aW1lcyhwb3cpKTtcbiAgICAgICAgICAgIHBvdyA9IHBvdy50aW1lcyhiYXNlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNOZWdhdGl2ZSA/IHZhbC5uZWdhdGUoKSA6IHZhbDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzdHJpbmdpZnkoZGlnaXQsIGFscGhhYmV0KSB7XG4gICAgICAgIGFscGhhYmV0ID0gYWxwaGFiZXQgfHwgREVGQVVMVF9BTFBIQUJFVDtcbiAgICAgICAgaWYgKGRpZ2l0IDwgYWxwaGFiZXQubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gYWxwaGFiZXRbZGlnaXRdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBcIjxcIiArIGRpZ2l0ICsgXCI+XCI7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9CYXNlKG4sIGJhc2UpIHtcbiAgICAgICAgYmFzZSA9IGJpZ0ludChiYXNlKTtcbiAgICAgICAgaWYgKGJhc2UuaXNaZXJvKCkpIHtcbiAgICAgICAgICAgIGlmIChuLmlzWmVybygpKSByZXR1cm4geyB2YWx1ZTogWzBdLCBpc05lZ2F0aXZlOiBmYWxzZSB9O1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGNvbnZlcnQgbm9uemVybyBudW1iZXJzIHRvIGJhc2UgMC5cIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGJhc2UuZXF1YWxzKC0xKSkge1xuICAgICAgICAgICAgaWYgKG4uaXNaZXJvKCkpIHJldHVybiB7IHZhbHVlOiBbMF0sIGlzTmVnYXRpdmU6IGZhbHNlIH07XG4gICAgICAgICAgICBpZiAobi5pc05lZ2F0aXZlKCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFtdLmNvbmNhdC5hcHBseShbXSwgQXJyYXkuYXBwbHkobnVsbCwgQXJyYXkoLW4udG9KU051bWJlcigpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoQXJyYXkucHJvdG90eXBlLnZhbHVlT2YsIFsxLCAwXSlcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgaXNOZWdhdGl2ZTogZmFsc2VcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB2YXIgYXJyID0gQXJyYXkuYXBwbHkobnVsbCwgQXJyYXkobi50b0pTTnVtYmVyKCkgLSAxKSlcbiAgICAgICAgICAgICAgICAubWFwKEFycmF5LnByb3RvdHlwZS52YWx1ZU9mLCBbMCwgMV0pO1xuICAgICAgICAgICAgYXJyLnVuc2hpZnQoWzFdKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IFtdLmNvbmNhdC5hcHBseShbXSwgYXJyKSxcbiAgICAgICAgICAgICAgICBpc05lZ2F0aXZlOiBmYWxzZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBuZWcgPSBmYWxzZTtcbiAgICAgICAgaWYgKG4uaXNOZWdhdGl2ZSgpICYmIGJhc2UuaXNQb3NpdGl2ZSgpKSB7XG4gICAgICAgICAgICBuZWcgPSB0cnVlO1xuICAgICAgICAgICAgbiA9IG4uYWJzKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGJhc2UuaXNVbml0KCkpIHtcbiAgICAgICAgICAgIGlmIChuLmlzWmVybygpKSByZXR1cm4geyB2YWx1ZTogWzBdLCBpc05lZ2F0aXZlOiBmYWxzZSB9O1xuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBBcnJheS5hcHBseShudWxsLCBBcnJheShuLnRvSlNOdW1iZXIoKSkpXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoTnVtYmVyLnByb3RvdHlwZS52YWx1ZU9mLCAxKSxcbiAgICAgICAgICAgICAgICBpc05lZ2F0aXZlOiBuZWdcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG91dCA9IFtdO1xuICAgICAgICB2YXIgbGVmdCA9IG4sIGRpdm1vZDtcbiAgICAgICAgd2hpbGUgKGxlZnQuaXNOZWdhdGl2ZSgpIHx8IGxlZnQuY29tcGFyZUFicyhiYXNlKSA+PSAwKSB7XG4gICAgICAgICAgICBkaXZtb2QgPSBsZWZ0LmRpdm1vZChiYXNlKTtcbiAgICAgICAgICAgIGxlZnQgPSBkaXZtb2QucXVvdGllbnQ7XG4gICAgICAgICAgICB2YXIgZGlnaXQgPSBkaXZtb2QucmVtYWluZGVyO1xuICAgICAgICAgICAgaWYgKGRpZ2l0LmlzTmVnYXRpdmUoKSkge1xuICAgICAgICAgICAgICAgIGRpZ2l0ID0gYmFzZS5taW51cyhkaWdpdCkuYWJzKCk7XG4gICAgICAgICAgICAgICAgbGVmdCA9IGxlZnQubmV4dCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3V0LnB1c2goZGlnaXQudG9KU051bWJlcigpKTtcbiAgICAgICAgfVxuICAgICAgICBvdXQucHVzaChsZWZ0LnRvSlNOdW1iZXIoKSk7XG4gICAgICAgIHJldHVybiB7IHZhbHVlOiBvdXQucmV2ZXJzZSgpLCBpc05lZ2F0aXZlOiBuZWcgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b0Jhc2VTdHJpbmcobiwgYmFzZSwgYWxwaGFiZXQpIHtcbiAgICAgICAgdmFyIGFyciA9IHRvQmFzZShuLCBiYXNlKTtcbiAgICAgICAgcmV0dXJuIChhcnIuaXNOZWdhdGl2ZSA/IFwiLVwiIDogXCJcIikgKyBhcnIudmFsdWUubWFwKGZ1bmN0aW9uICh4KSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5naWZ5KHgsIGFscGhhYmV0KTtcbiAgICAgICAgfSkuam9pbignJyk7XG4gICAgfVxuXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uIChyYWRpeCkge1xuICAgICAgICByZXR1cm4gdG9CYXNlKHRoaXMsIHJhZGl4KTtcbiAgICB9O1xuXG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gKHJhZGl4KSB7XG4gICAgICAgIHJldHVybiB0b0Jhc2UodGhpcywgcmFkaXgpO1xuICAgIH07XG5cbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiAocmFkaXgpIHtcbiAgICAgICAgcmV0dXJuIHRvQmFzZSh0aGlzLCByYWRpeCk7XG4gICAgfTtcblxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKHJhZGl4LCBhbHBoYWJldCkge1xuICAgICAgICBpZiAocmFkaXggPT09IHVuZGVmaW5lZCkgcmFkaXggPSAxMDtcbiAgICAgICAgaWYgKHJhZGl4ICE9PSAxMCkgcmV0dXJuIHRvQmFzZVN0cmluZyh0aGlzLCByYWRpeCwgYWxwaGFiZXQpO1xuICAgICAgICB2YXIgdiA9IHRoaXMudmFsdWUsIGwgPSB2Lmxlbmd0aCwgc3RyID0gU3RyaW5nKHZbLS1sXSksIHplcm9zID0gXCIwMDAwMDAwXCIsIGRpZ2l0O1xuICAgICAgICB3aGlsZSAoLS1sID49IDApIHtcbiAgICAgICAgICAgIGRpZ2l0ID0gU3RyaW5nKHZbbF0pO1xuICAgICAgICAgICAgc3RyICs9IHplcm9zLnNsaWNlKGRpZ2l0Lmxlbmd0aCkgKyBkaWdpdDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc2lnbiA9IHRoaXMuc2lnbiA/IFwiLVwiIDogXCJcIjtcbiAgICAgICAgcmV0dXJuIHNpZ24gKyBzdHI7XG4gICAgfTtcblxuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAocmFkaXgsIGFscGhhYmV0KSB7XG4gICAgICAgIGlmIChyYWRpeCA9PT0gdW5kZWZpbmVkKSByYWRpeCA9IDEwO1xuICAgICAgICBpZiAocmFkaXggIT0gMTApIHJldHVybiB0b0Jhc2VTdHJpbmcodGhpcywgcmFkaXgsIGFscGhhYmV0KTtcbiAgICAgICAgcmV0dXJuIFN0cmluZyh0aGlzLnZhbHVlKTtcbiAgICB9O1xuXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS50b1N0cmluZyA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUudG9TdHJpbmc7XG5cbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLnRvSlNPTiA9IEJpZ0ludGVnZXIucHJvdG90eXBlLnRvSlNPTiA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy50b1N0cmluZygpOyB9XG5cbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS52YWx1ZU9mID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gcGFyc2VJbnQodGhpcy50b1N0cmluZygpLCAxMCk7XG4gICAgfTtcbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS50b0pTTnVtYmVyID0gQmlnSW50ZWdlci5wcm90b3R5cGUudmFsdWVPZjtcblxuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUudmFsdWVPZiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfTtcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLnRvSlNOdW1iZXIgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLnZhbHVlT2Y7XG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS52YWx1ZU9mID0gTmF0aXZlQmlnSW50LnByb3RvdHlwZS50b0pTTnVtYmVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gcGFyc2VJbnQodGhpcy50b1N0cmluZygpLCAxMCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2VTdHJpbmdWYWx1ZSh2KSB7XG4gICAgICAgIGlmIChpc1ByZWNpc2UoK3YpKSB7XG4gICAgICAgICAgICB2YXIgeCA9ICt2O1xuICAgICAgICAgICAgaWYgKHggPT09IHRydW5jYXRlKHgpKVxuICAgICAgICAgICAgICAgIHJldHVybiBzdXBwb3J0c05hdGl2ZUJpZ0ludCA/IG5ldyBOYXRpdmVCaWdJbnQoQmlnSW50KHgpKSA6IG5ldyBTbWFsbEludGVnZXIoeCk7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGludGVnZXI6IFwiICsgdik7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHNpZ24gPSB2WzBdID09PSBcIi1cIjtcbiAgICAgICAgaWYgKHNpZ24pIHYgPSB2LnNsaWNlKDEpO1xuICAgICAgICB2YXIgc3BsaXQgPSB2LnNwbGl0KC9lL2kpO1xuICAgICAgICBpZiAoc3BsaXQubGVuZ3RoID4gMikgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBpbnRlZ2VyOiBcIiArIHNwbGl0LmpvaW4oXCJlXCIpKTtcbiAgICAgICAgaWYgKHNwbGl0Lmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgdmFyIGV4cCA9IHNwbGl0WzFdO1xuICAgICAgICAgICAgaWYgKGV4cFswXSA9PT0gXCIrXCIpIGV4cCA9IGV4cC5zbGljZSgxKTtcbiAgICAgICAgICAgIGV4cCA9ICtleHA7XG4gICAgICAgICAgICBpZiAoZXhwICE9PSB0cnVuY2F0ZShleHApIHx8ICFpc1ByZWNpc2UoZXhwKSkgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBpbnRlZ2VyOiBcIiArIGV4cCArIFwiIGlzIG5vdCBhIHZhbGlkIGV4cG9uZW50LlwiKTtcbiAgICAgICAgICAgIHZhciB0ZXh0ID0gc3BsaXRbMF07XG4gICAgICAgICAgICB2YXIgZGVjaW1hbFBsYWNlID0gdGV4dC5pbmRleE9mKFwiLlwiKTtcbiAgICAgICAgICAgIGlmIChkZWNpbWFsUGxhY2UgPj0gMCkge1xuICAgICAgICAgICAgICAgIGV4cCAtPSB0ZXh0Lmxlbmd0aCAtIGRlY2ltYWxQbGFjZSAtIDE7XG4gICAgICAgICAgICAgICAgdGV4dCA9IHRleHQuc2xpY2UoMCwgZGVjaW1hbFBsYWNlKSArIHRleHQuc2xpY2UoZGVjaW1hbFBsYWNlICsgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXhwIDwgMCkgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGluY2x1ZGUgbmVnYXRpdmUgZXhwb25lbnQgcGFydCBmb3IgaW50ZWdlcnNcIik7XG4gICAgICAgICAgICB0ZXh0ICs9IChuZXcgQXJyYXkoZXhwICsgMSkpLmpvaW4oXCIwXCIpO1xuICAgICAgICAgICAgdiA9IHRleHQ7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGlzVmFsaWQgPSAvXihbMC05XVswLTldKikkLy50ZXN0KHYpO1xuICAgICAgICBpZiAoIWlzVmFsaWQpIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgaW50ZWdlcjogXCIgKyB2KTtcbiAgICAgICAgaWYgKHN1cHBvcnRzTmF0aXZlQmlnSW50KSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludChCaWdJbnQoc2lnbiA/IFwiLVwiICsgdiA6IHYpKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgciA9IFtdLCBtYXggPSB2Lmxlbmd0aCwgbCA9IExPR19CQVNFLCBtaW4gPSBtYXggLSBsO1xuICAgICAgICB3aGlsZSAobWF4ID4gMCkge1xuICAgICAgICAgICAgci5wdXNoKCt2LnNsaWNlKG1pbiwgbWF4KSk7XG4gICAgICAgICAgICBtaW4gLT0gbDtcbiAgICAgICAgICAgIGlmIChtaW4gPCAwKSBtaW4gPSAwO1xuICAgICAgICAgICAgbWF4IC09IGw7XG4gICAgICAgIH1cbiAgICAgICAgdHJpbShyKTtcbiAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKHIsIHNpZ24pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlTnVtYmVyVmFsdWUodikge1xuICAgICAgICBpZiAoc3VwcG9ydHNOYXRpdmVCaWdJbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgTmF0aXZlQmlnSW50KEJpZ0ludCh2KSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzUHJlY2lzZSh2KSkge1xuICAgICAgICAgICAgaWYgKHYgIT09IHRydW5jYXRlKHYpKSB0aHJvdyBuZXcgRXJyb3IodiArIFwiIGlzIG5vdCBhbiBpbnRlZ2VyLlwiKTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgU21hbGxJbnRlZ2VyKHYpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXJzZVN0cmluZ1ZhbHVlKHYudG9TdHJpbmcoKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2VWYWx1ZSh2KSB7XG4gICAgICAgIGlmICh0eXBlb2YgdiA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlTnVtYmVyVmFsdWUodik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB2ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VTdHJpbmdWYWx1ZSh2KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHYgPT09IFwiYmlnaW50XCIpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgTmF0aXZlQmlnSW50KHYpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2O1xuICAgIH1cbiAgICAvLyBQcmUtZGVmaW5lIG51bWJlcnMgaW4gcmFuZ2UgWy05OTksOTk5XVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7XG4gICAgICAgIEludGVnZXJbaV0gPSBwYXJzZVZhbHVlKGkpO1xuICAgICAgICBpZiAoaSA+IDApIEludGVnZXJbLWldID0gcGFyc2VWYWx1ZSgtaSk7XG4gICAgfVxuICAgIC8vIEJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG4gICAgSW50ZWdlci5vbmUgPSBJbnRlZ2VyWzFdO1xuICAgIEludGVnZXIuemVybyA9IEludGVnZXJbMF07XG4gICAgSW50ZWdlci5taW51c09uZSA9IEludGVnZXJbLTFdO1xuICAgIEludGVnZXIubWF4ID0gbWF4O1xuICAgIEludGVnZXIubWluID0gbWluO1xuICAgIEludGVnZXIuZ2NkID0gZ2NkO1xuICAgIEludGVnZXIubGNtID0gbGNtO1xuICAgIEludGVnZXIuaXNJbnN0YW5jZSA9IGZ1bmN0aW9uICh4KSB7IHJldHVybiB4IGluc3RhbmNlb2YgQmlnSW50ZWdlciB8fCB4IGluc3RhbmNlb2YgU21hbGxJbnRlZ2VyIHx8IHggaW5zdGFuY2VvZiBOYXRpdmVCaWdJbnQ7IH07XG4gICAgSW50ZWdlci5yYW5kQmV0d2VlbiA9IHJhbmRCZXR3ZWVuO1xuXG4gICAgSW50ZWdlci5mcm9tQXJyYXkgPSBmdW5jdGlvbiAoZGlnaXRzLCBiYXNlLCBpc05lZ2F0aXZlKSB7XG4gICAgICAgIHJldHVybiBwYXJzZUJhc2VGcm9tQXJyYXkoZGlnaXRzLm1hcChwYXJzZVZhbHVlKSwgcGFyc2VWYWx1ZShiYXNlIHx8IDEwKSwgaXNOZWdhdGl2ZSk7XG4gICAgfTtcblxuICAgIHJldHVybiBJbnRlZ2VyO1xufSkoKTtcbiIsIi8qIGdsb2JhbCBiaWdJbnQgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG5cbi8vIFdlIHJlcHJlc2VudCBhIFtaLnRdIGFzIGEgamF2YXNjcmlwdCAzMmJpdCBpbnRlZ2VycyBpZiBpdCBmaXRzIG9yIGFzIGEgYmlnSW50LlxuXG4vL1Byb3ZpZGVzOiBtbF96X25vcm1hbGl6ZVxuLy9SZXF1aXJlczogYmlnSW50XG5mdW5jdGlvbiBtbF96X25vcm1hbGl6ZSh4KXtcbiAgdmFyIHkgPSB4LnRvSlNOdW1iZXIgKCkgfCAwO1xuICBpZih4LmVxdWFscyhiaWdJbnQoeSkpKSByZXR1cm4geTtcbiAgcmV0dXJuIHg7XG59XG5cbi8vUHJvdmlkZXM6IG1sX3pfbXVsX292ZXJmbG93c1xuZnVuY3Rpb24gbWxfel9tdWxfb3ZlcmZsb3dzKHgseSl7XG4gIHZhciB6ID0geCp5O1xuICByZXR1cm4geiAhPSAoenwwKTtcbn1cblxuLy9leHRlcm5hbCBpbml0OiB1bml0IC0+IHVuaXRcbi8vUHJvdmlkZXM6IG1sX3pfaW5pdFxuLy9SZXF1aXJlczogY2FtbF96YXJpdGhfbWFyc2hhbCwgY2FtbF96YXJpdGhfdW5tYXJzaGFsLCBjYW1sX2N1c3RvbV9vcHMsIG1sX3pfaGFzaCwgbWxfel9jb21wYXJlXG5mdW5jdGlvbiBtbF96X2luaXQodW5pdCkge1xuICBjYW1sX2N1c3RvbV9vcHNbJ196J10gPVxuICAgIHsgc2VyaWFsaXplIDogY2FtbF96YXJpdGhfbWFyc2hhbCxcbiAgICAgIGRlc2VyaWFsaXplIDogY2FtbF96YXJpdGhfdW5tYXJzaGFsLFxuICAgICAgaGFzaCA6IG1sX3pfaGFzaCxcbiAgICAgIGNvbXBhcmUgOiBtbF96X2NvbXBhcmUsXG4gICAgfTtcbiAgcmV0dXJuIDAgfVxuXG4vL2V4dGVybmFsIG5lZzogdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X25lZyBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9uZWcoejEpIHtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludCh6MSkubmVnYXRlKCkpO1xufVxuXG4vL2V4dGVybmFsIGFkZDogdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfYWRkIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X2FkZCh6MSwgejIpIHtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludCh6MSkuYWRkKGJpZ0ludCh6MikpKTtcbn1cblxuLy9leHRlcm5hbCBzdWI6IHQgLT4gdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X3N1YiBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9zdWIoejEsIHoyKSB7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQoejEpLnN1YnRyYWN0KGJpZ0ludCh6MikpKTtcbn1cblxuLy9leHRlcm5hbCBtdWw6IHQgLT4gdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X211bCBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9tdWwoejEsIHoyKSB7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQoejEpLm11bHRpcGx5KGJpZ0ludCh6MikpKTtcbn1cblxuLy9leHRlcm5hbCBkaXY6IHQgLT4gdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X2RpdlxuLy9SZXF1aXJlczogYmlnSW50LCBjYW1sX3JhaXNlX3plcm9fZGl2aWRlLCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9kaXYoejEsIHoyKSB7XG4gIHoyID0gYmlnSW50KHoyKVxuICBpZih6Mi5lcXVhbHMoYmlnSW50KDApKSkgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSgpO1xuICByZXR1cm4gbWxfel9ub3JtYWxpemUoYmlnSW50KHoxKS5kaXZpZGUoYmlnSW50KHoyKSkpXG59XG5cbi8vZXh0ZXJuYWwgY2RpdjogdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfY2RpdlxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X2RpdiwgbWxfel9zaWduLCBtbF96X2FkZFxuZnVuY3Rpb24gbWxfel9jZGl2KHoxLCB6Mikge1xuICB2YXIgejFfcG9zID0gbWxfel9zaWduKHoxKTtcbiAgdmFyIHoyX3BvcyA9IG1sX3pfc2lnbih6Mik7XG4gIGlmICh6MV9wb3MgKiB6Ml9wb3MgPiAwKSAvKiBNdWx0aXBsaWNhdGlvbiBpcyBsaWtlIGEgc2lnbndpc2UgeG9yICovIHtcbiAgICBpZiAoIWJpZ0ludCh6MSkubW9kKGJpZ0ludCh6MikpLmVxdWFscyhiaWdJbnQoMCkpKSB7XG4gICAgICByZXR1cm4gbWxfel9hZGQobWxfel9kaXYoejEsIHoyKSwgYmlnSW50KDEpKSA7XG4gICAgfVxuICB9XG4gIHJldHVybiBtbF96X2Rpdih6MSwgejIpO1xufVxuXG4vL2V4dGVybmFsIGZkaXY6IHQgLT4gdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X2ZkaXZcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9kaXYsIG1sX3pfc2lnbiwgbWxfel9zdWJcbmZ1bmN0aW9uIG1sX3pfZmRpdih6MSwgejIpIHtcbiAgdmFyIHoxX3BvcyA9IG1sX3pfc2lnbih6MSk7XG4gIHZhciB6Ml9wb3MgPSBtbF96X3NpZ24oejIpO1xuICBpZiAoejFfcG9zICogejJfcG9zIDwgMCkgLyogTXVsdGlwbGljYXRpb24gaXMgbGlrZSBhIHNpZ253aXNlIHhvciAqLyB7XG4gICAgaWYgKCFiaWdJbnQoejEpLm1vZChiaWdJbnQoejIpKS5lcXVhbHMoYmlnSW50KDApKSkge1xuICAgICAgcmV0dXJuIG1sX3pfc3ViKG1sX3pfZGl2KHoxLCB6MiksIGJpZ0ludCgxKSkgO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbWxfel9kaXYoejEsIHoyKTtcbn1cblxuLy9leHRlcm5hbCByZW06IHQgLT4gdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X3JlbVxuLy9SZXF1aXJlczogYmlnSW50LCBjYW1sX3JhaXNlX3plcm9fZGl2aWRlLCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9yZW0oejEsIHoyKSB7XG4gIHoyID0gYmlnSW50KHoyKTtcbiAgaWYgKHoyLmVxdWFscyhiaWdJbnQoMCkpKSB7XG4gICAgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSgpO1xuICB9XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQoejEpLm1vZCh6MikpO1xufVxuXG4vL2V4dGVybmFsIGRpdl9yZW06IHQgLT4gdCAtPiAodCAqIHQpXG4vL1Byb3ZpZGVzOiBtbF96X2Rpdl9yZW1cbi8vUmVxdWlyZXM6IG1sX3pfZGl2LCBtbF96X3JlbVxuZnVuY3Rpb24gbWxfel9kaXZfcmVtKHoxLCB6Mikge1xuICByZXR1cm4gWzAsIG1sX3pfZGl2KHoxLHoyKSwgbWxfel9yZW0oejEsIHoyKV1cbn1cbi8vZXh0ZXJuYWwgc3VjYzogdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X3N1Y2MgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfc3VjYyh6MSkge1xuICByZXR1cm4gbWxfel9ub3JtYWxpemUoYmlnSW50KHoxKS5uZXh0KCkpO1xufVxuXG4vL2V4dGVybmFsIHByZWQ6IHQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9wcmVkIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X3ByZWQoejEpIHtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludCh6MSkucHJldigpKTtcbn1cblxuLy9leHRlcm5hbCBhYnM6IHQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9hYnMgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfYWJzKHoxKSB7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQoejEpLmFicygpKTtcbn1cblxuLy9leHRlcm5hbCBsb2dhbmQ6IHQgLT4gdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X2xvZ2FuZCBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9sb2dhbmQoejEsIHoyKSB7XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQoejEpLmFuZChiaWdJbnQoejIpKSk7XG59XG5cbi8vZXh0ZXJuYWwgbG9nb3I6IHQgLT4gdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X2xvZ29yIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X2xvZ29yKHoxLCB6Mikge1xuICByZXR1cm4gbWxfel9ub3JtYWxpemUoYmlnSW50KHoxKS5vcihiaWdJbnQoejIpKSk7XG59XG5cbi8vZXh0ZXJuYWwgbG9neG9yOiB0IC0+IHQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9sb2d4b3IgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfbG9neG9yKHoxLCB6Mikge1xuICByZXR1cm4gbWxfel9ub3JtYWxpemUoYmlnSW50KHoxKS54b3IoYmlnSW50KHoyKSkpO1xufVxuXG4vL2V4dGVybmFsIGxvZ25vdDogdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X2xvZ25vdCBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50LG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X2xvZ25vdCh6MSkge1xuICByZXR1cm4gbWxfel9ub3JtYWxpemUoYmlnSW50KHoxKS5ub3QoKSk7XG59XG5cbi8vZXh0ZXJuYWwgc2hpZnRfbGVmdDogdCAtPiBpbnQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9zaGlmdF9sZWZ0IGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X3NoaWZ0X2xlZnQoejEsIGFtdCkge1xuICByZXR1cm4gbWxfel9ub3JtYWxpemUoYmlnSW50KHoxKS5zaGlmdExlZnQoYW10KSk7XG59XG5cbi8vZXh0ZXJuYWwgc2hpZnRfcmlnaHQ6IHQgLT4gaW50IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfc2hpZnRfcmlnaHQgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfc2hpZnRfcmlnaHQoejEsIGFtdCkge1xuICByZXR1cm4gbWxfel9ub3JtYWxpemUoYmlnSW50KHoxKS5zaGlmdFJpZ2h0KGFtdCkpO1xufVxuXG4vL2V4dGVybmFsIHNoaWZ0X3JpZ2h0X3RydW5jOiB0IC0+IGludCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X3NoaWZ0X3JpZ2h0X3RydW5jIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfZGl2XG5mdW5jdGlvbiBtbF96X3NoaWZ0X3JpZ2h0X3RydW5jKHoxLCB6Mikge1xuICByZXR1cm4gbWxfel9kaXYoYmlnSW50KHoxKSwgYmlnSW50KDIpLnBvdyh6MikpXG59XG5cbi8vZXh0ZXJuYWwgb2ZfaW50MzI6IGludDMyIC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfb2ZfaW50MzIgY29uc3RcbmZ1bmN0aW9uIG1sX3pfb2ZfaW50MzIoaSkge1xuICByZXR1cm4gaSB8IDA7XG59XG5cbi8vZXh0ZXJuYWwgb2ZfbmF0aXZlaW50OiBuYXRpdmVpbnQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9vZl9uYXRpdmVpbnQgY29uc3RcbmZ1bmN0aW9uIG1sX3pfb2ZfbmF0aXZlaW50KGkpIHtcbiAgcmV0dXJuIGkgfCAwO1xufVxuXG4vL2V4dGVybmFsIG9mX2ludDY0OiBpbnQ2NCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X29mX2ludDY0IGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIGNhbWxfaW50NjRfY29tcGFyZSwgY2FtbF9pbnQ2NF9uZWcsIG1sX3pfbm9ybWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaSxjYW1sX2ludDY0X2hpMzIsY2FtbF9pbnQ2NF9sbzMyXG5mdW5jdGlvbiBtbF96X29mX2ludDY0KGk2NCkge1xuICB2YXIgbmVnID0gZmFsc2U7XG4gIGlmKGNhbWxfaW50NjRfY29tcGFyZShpNjQsIGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpKDAsMCkpIDwgMCkge1xuICAgIG5lZyA9IHRydWU7XG4gICAgaTY0ID0gY2FtbF9pbnQ2NF9uZWcoaTY0KVxuICB9XG4gIHZhciBsbyA9IGNhbWxfaW50NjRfbG8zMihpNjQpID4+PiAwO1xuICB2YXIgaGkgPSBjYW1sX2ludDY0X2hpMzIoaTY0KSA+Pj4gMDtcbiAgdmFyIHggPSBiaWdJbnQobG8pLmFkZChiaWdJbnQoaGkpLnNoaWZ0TGVmdCgzMikpO1xuICBpZihuZWcpIHsgeCA9IHgubmVnYXRlKCkgfTtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKHgpXG59XG5cbi8vZXh0ZXJuYWwgb2ZfZmxvYXQ6IGZsb2F0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfb2ZfZmxvYXRcbi8vUmVxdWlyZXM6IGJpZ0ludCwgY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9uYW1lZF92YWx1ZSwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfb2ZfZmxvYXQoZjEpIHtcbiAgaWYoZjEgPT0gSW5maW5pdHkgfHwgZjEgPT0gLUluZmluaXR5IHx8IGYxICE9IGYxKVxuICAgIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9uYW1lZF92YWx1ZShcIm1sX3pfb3ZlcmZsb3dcIikpO1xuICByZXR1cm4gbWxfel9ub3JtYWxpemUoYmlnSW50KGYxPDA/TWF0aC5jZWlsKGYxKTpNYXRoLmZsb29yKGYxKSkpO1xufVxuXG4vL2V4dGVybmFsIHRvX2ludDogdCAtPiBpbnRcbi8vUHJvdmlkZXM6IG1sX3pfdG9faW50XG4vL1JlcXVpcmVzOiBiaWdJbnQsIGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfbmFtZWRfdmFsdWVcbmZ1bmN0aW9uIG1sX3pfdG9faW50KHoxKSB7XG4gIGlmICh6MSA9PSAoejEgfCAwKSkgcmV0dXJuIHoxIHwgMDtcbiAgY2FtbF9yYWlzZV9jb25zdGFudChjYW1sX25hbWVkX3ZhbHVlKFwibWxfel9vdmVyZmxvd1wiKSk7XG59XG5cbi8vZXh0ZXJuYWwgdG9faW50MzI6IHQgLT4gaW50MzJcbi8vUHJvdmlkZXM6IG1sX3pfdG9faW50MzJcbi8vUmVxdWlyZXM6IG1sX3pfdG9faW50XG5mdW5jdGlvbiBtbF96X3RvX2ludDMyKHoxKSB7IHJldHVybiBtbF96X3RvX2ludCh6MSkgfVxuXG4vL2V4dGVybmFsIHRvX2ludDY0OiB0IC0+IGludDY0XG4vL1Byb3ZpZGVzOiBtbF96X3RvX2ludDY0XG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfZml0c19pbnQ2NCwgY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9uYW1lZF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGlcbmZ1bmN0aW9uIG1sX3pfdG9faW50NjQoejEpIHtcbiAgejEgPSBiaWdJbnQoejEpXG4gIGlmKCFtbF96X2ZpdHNfaW50NjQoejEpKSB7XG4gICAgY2FtbF9yYWlzZV9jb25zdGFudChjYW1sX25hbWVkX3ZhbHVlKFwibWxfel9vdmVyZmxvd1wiKSk7XG4gIH1cbiAgdmFyIG1hc2sgPSBiaWdJbnQoMHhmZmZmZmZmZilcbiAgdmFyIGxvID0gejEuYW5kKG1hc2spLnRvSlNOdW1iZXIoKTtcbiAgdmFyIGhpID0gejEuc2hpZnRSaWdodCgzMikuYW5kKG1hc2spLnRvSlNOdW1iZXIoKTtcbiAgdmFyIHggPSBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaShsbywgaGkpO1xuICByZXR1cm4geDtcbn1cblxuLy9leHRlcm5hbCB0ZXN0Yml0OiB0IC0+IGJvb2xcbi8vUHJvdmlkZXM6IG1sX3pfdGVzdGJpdFxuLy9SZXF1aXJlczogYmlnSW50XG5mdW5jdGlvbiBtbF96X3Rlc3RiaXQoeixwb3Mpe1xuICB6ID0gYmlnSW50KHopO1xuICByZXR1cm4gKHouc2hpZnRSaWdodChwb3MpLmFuZChiaWdJbnQoMSkpLnRvSlNOdW1iZXIoKSl8MDtcbn1cblxuLy9leHRlcm5hbCB0b19uYXRpdmVpbnQ6IHQgLT4gbmF0aXZlaW50XG4vL1Byb3ZpZGVzOiBtbF96X3RvX25hdGl2ZWludFxuLy9SZXF1aXJlczogbWxfel90b19pbnRcbmZ1bmN0aW9uIG1sX3pfdG9fbmF0aXZlaW50KHoxKSB7IHJldHVybiBtbF96X3RvX2ludCh6MSkgfVxuXG4vL2V4dGVybmFsIGZvcm1hdDogc3RyaW5nIC0+IHQgLT4gc3RyaW5nXG4vL1Byb3ZpZGVzOiBtbF96X2Zvcm1hdCBcbi8vUmVxdWlyZXM6IGJpZ0ludFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9mYWlsd2l0aCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfZm9ybWF0KGZtdCwgejEpIHtcbiAgejEgPSBiaWdJbnQoejEpO1xuICB2YXIgZm10ID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhmbXQpO1xuICAvLyBodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvWmFyaXRoL2Jsb2IvZDA1NTVkNDUxY2UyOTVjNDQ5N2YyNGE4ZDk5OTNmOGRkMjMwOTdkZi96Lm1saXAjTDI5N1xuICB2YXIgYmFzZSA9IDEwO1xuICB2YXIgY2FzID0gMDtcbiAgdmFyIHdpZHRoID0gMDtcbiAgdmFyIGFsdCA9IDA7XG4gIHZhciBkaXIgPSAwO1xuICB2YXIgc2lnbiA9ICcnO1xuICB2YXIgcGFkID0gJyAnO1xuICB2YXIgaWR4ID0gMDtcbiAgdmFyIHByZWZpeD1cIlwiO1xuICB3aGlsZShmbXRbaWR4XSA9PSAnJScpIGlkeCsrO1xuICBmb3IoOzsgaWR4KyspIHtcbiAgICBpZihmbXRbaWR4XSA9PSAnIycpIGFsdCA9IDE7XG4gICAgZWxzZSBpZiAoZm10W2lkeF0gPT0gJzAnKSBwYWQgPSAnMCc7XG4gICAgZWxzZSBpZiAoZm10W2lkeF0gPT0gJy0nKSBkaXIgPSAxO1xuICAgIGVsc2UgaWYgKGZtdFtpZHhdID09ICcgJyB8fCBmbXRbaWR4XSA9PSAnKycpIHNpZ24gPSBmbXRbaWR4XTtcbiAgICBlbHNlIGJyZWFrO1xuICB9XG4gIGlmKHoxLmx0KGJpZ0ludCgwKSkpe3NpZ24gPSAnLSc7ejEgPSB6MS5uZWdhdGUoKX07XG4gIGZvcig7Zm10W2lkeF0+PScwJyAmJiBmbXRbaWR4XSA8PSc5JztpZHgrKylcbiAgICB3aWR0aD0xMCp3aWR0aCArICgrZm10W2lkeF0pO1xuICBzd2l0Y2goZm10W2lkeF0pe1xuICBjYXNlICdpJzogY2FzZSAnZCc6IGNhc2UgJ3UnOiBicmVhaztcbiAgY2FzZSAnYic6IGJhc2UgPSAyOyBpZihhbHQpIHByZWZpeCA9IFwiMGJcIjsgYnJlYWs7XG4gIGNhc2UgJ28nOiBiYXNlID0gODsgaWYoYWx0KSBwcmVmaXggPSBcIjBvXCI7IGJyZWFrO1xuICBjYXNlICd4JzogYmFzZSA9IDE2OyBpZihhbHQpIHByZWZpeCA9IFwiMHhcIjsgYnJlYWs7XG4gIGNhc2UgJ1gnOiBiYXNlID0gMTY7IGlmKGFsdCkgcHJlZml4ID0gXCIwWFwiOyBjYXMgPSAxOyBicmVhaztcbiAgZGVmYXVsdDpcbiAgICBjYW1sX2ZhaWx3aXRoKFwiVW5zdXBwb3J0ZWQgZm9ybWF0ICdcIiArIGZtdCArIFwiJ1wiKTtcbiAgfVxuICBpZiAoZGlyKSBwYWQgPSAnICc7XG4gIHZhciByZXMgPSB6MS50b1N0cmluZyhiYXNlKTtcbiAgaWYgKGNhcyA9PT0gMSkge1xuICAgIHJlcyA9IHJlcy50b1VwcGVyQ2FzZSgpO1xuICB9XG4gIHZhciBzaXplID0gcmVzLmxlbmd0aDtcbiAgaWYgKHBhZCA9PSAnICcpIHtcbiAgICBpZihkaXIpIHtcbiAgICAgIHJlcyA9IHNpZ24gKyBwcmVmaXggKyByZXM7XG4gICAgICBmb3IoO3Jlcy5sZW5ndGg8d2lkdGg7KSByZXMgPSByZXMgKyBwYWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcyA9IHNpZ24gKyBwcmVmaXggKyByZXM7XG4gICAgICBmb3IoO3Jlcy5sZW5ndGg8d2lkdGg7KSByZXMgPSBwYWQgKyByZXM7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBwcmUgPSBzaWduICsgcHJlZml4O1xuICAgIGZvcig7cmVzLmxlbmd0aCtwcmUubGVuZ3RoPHdpZHRoOykgcmVzID0gcGFkICsgcmVzO1xuICAgIHJlcyA9IHByZSArIHJlcztcbiAgfVxuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhyZXMpO1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX3pfb2ZfanNfc3RyaW5nX2Jhc2Vcbi8vUmVxdWlyZXM6IGJpZ0ludCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24ganNvb196X29mX2pzX3N0cmluZ19iYXNlKGJhc2UsIHMpIHtcbiAgaWYgKGJhc2UgPT0gMCkgeyAvLyBodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvWmFyaXRoL2Jsb2IvYjhkYmFmNDhhNzkyNzA2MWRmNjk5YWQ3Y2U2NDJiYjRmMWZlNTMwOC9jYW1sX3ouYyNMNTk4XG4gICAgYmFzZSA9IDEwO1xuICAgIHZhciBwID0gMDtcbiAgICB2YXIgc2lnbiA9IDE7XG4gICAgaWYoc1twXSA9PSAnLScpIHsgc2lnbiA9IC0xOyBwKysgfVxuICAgIGVsc2UgaWYgKHNbcF0gPT0gJysnKSB7IHArKyB9XG4gICAgaWYgKHNbcF0gPT0gJzAnKSB7XG4gICAgICBwICsrO1xuICAgICAgaWYgKHMubGVuZ3RoID09IHApIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgYmMgPSBzW3BdO1xuICAgICAgICBpZiAoYmMgPT0gJ28nIHx8IGJjID09ICdPJykge1xuICAgICAgICAgIGJhc2UgPSA4O1xuICAgICAgICB9IGVsc2UgaWYgKGJjID09ICd4JyB8fCBiYyA9PSAnWCcpIHtcbiAgICAgICAgICBiYXNlID0gMTY7XG4gICAgICAgIH0gZWxzZSBpZiAoYmMgPT0gJ2InIHx8IGJjID09ICdCJykge1xuICAgICAgICAgIGJhc2UgPSAyO1xuICAgICAgICB9IFxuICAgICAgICBpZihiYXNlICE9IDEwKSB7XG4gICAgICAgICAgcyA9IHMuc3Vic3RyaW5nKHArMSk7XG4gICAgICAgICAgaWYoc2lnbiA9PSAtMSkgcyA9IFwiLVwiICsgcztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBcbiAgZnVuY3Rpb24gZGlnaXQoY29kZSl7XG4gICAgaWYoY29kZSA+PSA0OCAmJiBjb2RlIDw9IDU3KSByZXR1cm4gY29kZSAtIDQ4O1xuICAgIGlmKGNvZGUgPj0gOTcgJiYgY29kZSA8PSAxMDIpIHJldHVybiBjb2RlIC0gOTcgKyAxMDtcbiAgICBpZihjb2RlID49IDY1ICYmIGNvZGUgPD0gNzApIHJldHVybiBjb2RlIC0gNjUgKyAxMDtcbiAgfVxuICB2YXIgaSA9IDA7XG4gIGlmIChzW2ldID09ICcrJykge1xuICAgIC8vcmVtb3ZlIGxlYWRpbmcgJysnXG4gICAgcyA9IHMuc3Vic3RyaW5nKDEpO1xuICB9XG4gIGVsc2UgaWYoc1tpXSA9PSAnLScpIGkrKztcbiAgaWYoc1tpXSA9PSAnXycpIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIloub2Zfc3Vic3RyaW5nX2Jhc2U6IGludmFsaWQgZGlnaXRcIik7XG4gIHMgPSBzLnJlcGxhY2UoL18vZywnJyk7XG4gIC8vbm9ybWFsaXplIFwiZW1wdHlcIiBudW1iZXJzXG4gIGlmKHMgPT0gJy0nIHx8IHMgPT0gJycpIHMgPSAnMCc7XG4gIGZvciggOyBpIDwgcy5sZW5ndGggOyBpKyspe1xuICAgIHZhciBjID0gZGlnaXQocy5jaGFyQ29kZUF0KGkpKTtcbiAgICBpZihjID09IHVuZGVmaW5lZCB8fCBjID49IGJhc2UpXG4gICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJaLm9mX3N1YnN0cmluZ19iYXNlOiBpbnZhbGlkIGRpZ2l0XCIpO1xuICB9XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQocywgYmFzZSkpO1xuICBcbn1cblxuLy9leHRlcm5hbCBvZl9zdWJzdHJpbmdfYmFzZTogaW50IC0+IHN0cmluZyAtPiBwb3M6aW50IC0+IGxlbjppbnQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9vZl9zdWJzdHJpbmdfYmFzZVxuLy9SZXF1aXJlczoganNvb196X29mX2pzX3N0cmluZ19iYXNlLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gbWxfel9vZl9zdWJzdHJpbmdfYmFzZShiYXNlLCBzLCBwb3MsIGxlbikge1xuICBzID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKTtcbiAgaWYocG9zICE9IDAgfHwgbGVuICE9IHMubGVuZ3RoKSB7XG4gICAgaWYgKHMubGVuZ3RoIC0gcG9zIDwgbGVuKSB7XG4gICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJaLm9mX3N1YnN0cmluZ19iYXNlOiBpbnZhbGlkIG9mZnNldCBvciBsZW5ndGhcIik7XG4gICAgfVxuICAgIHMgPSBzLnNsaWNlKHBvcyxwb3MrbGVuKTtcbiAgfVxuICByZXR1cm4ganNvb196X29mX2pzX3N0cmluZ19iYXNlKGJhc2UsIHMpO1xufVxuXG4vL2V4dGVybmFsIGNvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbi8vUHJvdmlkZXM6IG1sX3pfY29tcGFyZSBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50XG5mdW5jdGlvbiBtbF96X2NvbXBhcmUoejEsIHoyKSB7XG4gIHJldHVybiBiaWdJbnQoejEpLmNvbXBhcmUoYmlnSW50KHoyKSk7XG59XG5cbi8vZXh0ZXJuYWwgZXF1YWw6IHQgLT4gdCAtPiBib29sXG4vL1Byb3ZpZGVzOiBtbF96X2VxdWFsIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnRcbmZ1bmN0aW9uIG1sX3pfZXF1YWwoejEsIHoyKSB7XG4gIHJldHVybiBiaWdJbnQoejEpLmVxdWFscyhiaWdJbnQoejIpKSA/IDEgOiAwO1xufVxuXG4vL2V4dGVybmFsIHNpZ246IHQgLT4gaW50XG4vL1Byb3ZpZGVzOiBtbF96X3NpZ24gY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludFxuZnVuY3Rpb24gbWxfel9zaWduKHoxKSB7XG4gIHJldHVybiBiaWdJbnQoejEpLmNvbXBhcmUoYmlnSW50Lnplcm8pO1xufVxuXG4vL2V4dGVybmFsIGdjZDogdCAtPiB0IC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfZ2NkXG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X2djZCh6MSwgejIpIHtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGJpZ0ludC5nY2QoYmlnSW50KHoxKSwgYmlnSW50KHoyKSkuYWJzKCkpO1xufVxuXG4vL2V4dGVybmFsIG51bWJpdHM6IHQgLT4gaW50XG4vL1Byb3ZpZGVzOiBtbF96X251bWJpdHMgY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludFxuZnVuY3Rpb24gbWxfel9udW1iaXRzKHoxKSB7XG4gIHoxID0gYmlnSW50KHoxKS5hYnMoKTtcbiAgdmFyIG4gPSAwO1xuICB2YXIgdXBwZXJCb3VuZCA9IGJpZ0ludC5vbmU7XG4gIHdoaWxlICh1cHBlckJvdW5kLmxlcSh6MSkpIHtcbiAgICBuICs9IDE7XG4gICAgdXBwZXJCb3VuZCA9IHVwcGVyQm91bmQubXVsdGlwbHkoMik7XG4gIH1cbiAgcmV0dXJuIG47IC8vIDJee24tMX0gPD0gfHh8IDwgMl5uXG59XG5cbi8vZXh0ZXJuYWwgZml0c19pbnQ6IHQgLT4gYm9vbFxuLy9Qcm92aWRlczogbWxfel9maXRzX2ludCBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50XG5mdW5jdGlvbiBtbF96X2ZpdHNfaW50KHoxKSB7XG4gIGlmKHoxID09ICh6MSB8IDApKSByZXR1cm4gMTtcbiAgZWxzZSByZXR1cm4gMDtcbn1cblxuLy9leHRlcm5hbCBmaXRzX2ludDMyOiB0IC0+IGJvb2xcbi8vUHJvdmlkZXM6IG1sX3pfZml0c19pbnQzMlxuLy9SZXF1aXJlczogbWxfel9maXRzX2ludFxuZnVuY3Rpb24gbWxfel9maXRzX2ludDMyKHoxKSB7XG4gIHJldHVybiBtbF96X2ZpdHNfaW50KHoxKTtcbn1cblxuLy9leHRlcm5hbCBmaXRzX2ludDY0OiB0IC0+IGJvb2xcbi8vUHJvdmlkZXM6IG1sX3pfZml0c19pbnQ2NFxuLy9SZXF1aXJlczogYmlnSW50XG5mdW5jdGlvbiBtbF96X2ZpdHNfaW50NjQoejEpIHtcbiAgejEgPSBiaWdJbnQoejEpXG4gIGlmICh6MS5jb21wYXJlKGJpZ0ludChcIjkyMjMzNzIwMzY4NTQ3NzU4MDdcIikpIDw9IDAgJiYgejEuY29tcGFyZShiaWdJbnQoXCItOTIyMzM3MjAzNjg1NDc3NTgwOFwiKSkgPj0gMClcbiAgICByZXR1cm4gMVxuICBlbHNlXG4gICAgcmV0dXJuIDBcbn1cblxuLy9leHRlcm5hbCBmaXRzX25hdGl2ZWludDogdCAtPiBib29sXG4vL1Byb3ZpZGVzOiBtbF96X2ZpdHNfbmF0aXZlaW50XG4vL1JlcXVpcmVzOiBtbF96X2ZpdHNfaW50XG5mdW5jdGlvbiBtbF96X2ZpdHNfbmF0aXZlaW50KHoxKSB7XG4gIHJldHVybiBtbF96X2ZpdHNfaW50KHoxKTtcbn1cblxuLy9leHRlcm5hbCBwb3dtOiB0IC0+IHQgLT4gdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X3Bvd21cbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9ub3JtYWxpemUsIG1sX3pfaW52ZXJ0LCBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG5mdW5jdGlvbiBtbF96X3Bvd20oejEsIHoyLCB6Mykge1xuICB2YXIgemVybyA9IGJpZ0ludCgwKTtcbiAgdmFyIG9uZSA9IGJpZ0ludCgxKTtcbiAgejEgPSBiaWdJbnQoejEpO1xuICB6MiA9IGJpZ0ludCh6Mik7XG4gIHozID0gYmlnSW50KHozKTtcbiAgaWYoejMuZXF1YWxzKHplcm8pKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlKCk7XG4gIGlmKHozLmFicygpLmVxdWFscyhvbmUpKSByZXR1cm4gMDtcbiAgaWYoejIuZXF1YWxzKHplcm8pKSByZXR1cm4gMTtcbiAgaWYoejIubHQoMCkpIHtcbiAgICB2YXIgaW52ID0gYmlnSW50KG1sX3pfaW52ZXJ0KHoxLCB6MykpO1xuICAgIHZhciByID0gaW52Lm1vZFBvdyh6Mi5uZWdhdGUoKSwgejMpO1xuICAgIGlmKHIubHQoemVybykpIHIgPSByLmFkZCh6My5hYnMoKSk7XG4gICAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKHIpO1xuICB9IGVsc2Uge1xuICAgIHZhciByID0gYmlnSW50KHoxKS5tb2RQb3coejIsIHozKTtcbiAgICBpZihyLmx0KHplcm8pKSByID0gci5hZGQoejMuYWJzKCkpO1xuICAgIHJldHVybiBtbF96X25vcm1hbGl6ZShyKTtcbiAgfVxufVxuXG4vL2V4dGVybmFsIHBvd246IHQgLT4gdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X3Bvd1xuLy9SZXF1aXJlczogYmlnSW50LCBjYW1sX2ZhaWx3aXRoLCBtbF96X25vcm1hbGl6ZSwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBtbF96X3Bvdyh6MSwgaTEpIHtcbiAgaTEgPSBiaWdJbnQoaTEpO1xuICBpZiAoaTEubHQoYmlnSW50KDApKSkge1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIloucG93OiBleHBvbmVudCBtdXN0IGJlIG5vbm5lZ2F0aXZlXCIpO1xuICB9XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShiaWdJbnQoejEpLnBvdyhpMSkpO1xufVxuXG4vL2V4dGVybmFsIGhhc2g6IHQgLT4gaW50XG4vL1Byb3ZpZGVzOiBtbF96X2hhc2ggY29uc3Rcbi8vUmVxdWlyZXM6IGJpZ0ludCwgY2FtbF9oYXNoX21peF9pbnRcbmZ1bmN0aW9uIG1sX3pfaGFzaCh6MSkge1xuICB2YXIgYSA9IGJpZ0ludCh6MSkudG9BcnJheShNYXRoLnBvdygyLCAzMikpO1xuICB2YXIgYWNjID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhLnZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgYWNjID0gY2FtbF9oYXNoX21peF9pbnQoYWNjLCBhLnZhbHVlW2ldKTtcbiAgfVxuICBpZihhLnZhbHVlLmxlbmd0aCAlIDIgIT0gMCkge1xuICAgIGFjYyA9IGNhbWxfaGFzaF9taXhfaW50KGFjYywgMCk7XG4gIH1cbiAgaWYoYS5pc05lZ2F0aXZlKXtcbiAgICBhY2MgPSBhY2MgKyAxXG4gIH1cbiAgcmV0dXJuIGFjYyB8IDBcbn1cblxuLy9leHRlcm5hbCB0b19iaXRzOiB0IC0+IHN0cmluZ1xuLy9Qcm92aWRlczogbWxfel90b19iaXRzIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX3N0cl9yZXBlYXQsIGJpZ0ludFxuZnVuY3Rpb24gbWxfel90b19iaXRzKHoxKSB7XG4gIHoxID0gYmlnSW50KHoxKS5hYnMoKTtcbiAgdmFyIHJlcyA9IFwiXCI7XG4gIHdoaWxlKCF6MS5lcXVhbHMoYmlnSW50KDApKSl7XG4gICAgcmVzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoejEubW9kKGJpZ0ludCgyNTYpKSk7XG4gICAgejEgPSB6MS5kaXZpZGUoYmlnSW50KDI1NikpO1xuICB9XG4gIHdoaWxlKHJlcy5sZW5ndGggJSA0ICE9IDApe1xuICAgIHJlcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDApO1xuICB9XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHJlcyk7XG59XG5cbi8vZXh0ZXJuYWwgb2ZfYml0czogc3RyaW5nIC0+IHRcbi8vUHJvdmlkZXM6IG1sX3pfb2ZfYml0cyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBiaWdJbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X29mX2JpdHMoejEpIHtcbiAgdmFyIHIgPSBiaWdJbnQuemVyb1xuICB2YXIgYmFzZTEgPSBiaWdJbnQoMjU2KTtcbiAgdmFyIGJhc2UgPSBiaWdJbnQub25lO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHoxKTsgaSsrKXtcbiAgICB2YXIgZCA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQoejEsaSk7XG4gICAgciA9IGJpZ0ludChiYXNlKS5tdWx0aXBseShkKS5hZGQocik7XG4gICAgYmFzZSA9IGJpZ0ludChiYXNlKS5tdWx0aXBseShiYXNlMSk7XG4gIH1cbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKHIpO1xufVxuXG4vL2V4dGVybmFsIHBvd21fc2VjOiB0IC0+IHQgLT4gdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X3Bvd21fc2VjXG4vL1JlcXVpcmVzOiBiaWdJbnQsIGNhbWxfZmFpbHdpdGgsIG1sX3pfcG93bSwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBtbF96X3Bvd21fc2VjKHoxLCB6MiwgejMpIHtcbiAgejMgPSBiaWdJbnQoejMpLmFicygpO1xuICAvLyBwb3dtX3NlYyByZXF1aXJlcyB0aGF0IHRoZSBleHBvbmVudCBiZSBwb3NpdGl2ZVxuICB2YXIgb25lID0gYmlnSW50KDEpO1xuICBpZiAoYmlnSW50KHoyKS5sdChvbmUpKSB7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiWi5wb3dtX3NlYzogZXhwb25lbnQgbXVzdCBiZSBwb3NpdGl2ZVwiKTtcbiAgfVxuICBpZiAoIWJpZ0ludCh6MykuYW5kKG9uZSkuZXF1YWxzKG9uZSkpIHtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJaLnBvd21fc2VjOiBtb2R1bHVzIG11c3QgYmUgb2RkXCIpO1xuICB9XG4gIHJldHVybiBtbF96X3Bvd20oejEsIHoyLCB6Mylcbn1cblxuLy9leHRlcm5hbCByb290OiB0IC0+IGludCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X3Jvb3Rcbi8vUmVxdWlyZXM6IG1sX3pfcG93LCAgYmlnSW50LCBtbF96X25vcm1hbGl6ZSwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBtbF96X3Jvb3QoeiwgaSkge1xuICB2YXIgemVybyA9IGJpZ0ludCgwKTtcbiAgdmFyIG9uZSA9IGJpZ0ludCgxKTtcbiAgeiA9IGJpZ0ludCh6KTtcblxuICBpZiAoaSAlIDIgPT09IDAgJiYgei5sdCh6ZXJvKSkge1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIloucm9vdDogZXZlbiByb290IG9mIGEgbmVnYXRpdmUgbnVtYmVyXCIpO1xuICB9XG5cbiAgaWYgKHouZXF1YWxzKHplcm8pIHx8IHouZXF1YWxzKG9uZSkpIHtcbiAgICByZXR1cm4gbWxfel9ub3JtYWxpemUoeik7XG4gIH1cblxuICB2YXIgc3RhcnQgPSB6ZXJvO1xuICB2YXIgZW5kID0gejtcbiAgdmFyIGFucyA9IG51bGw7XG5cbiAgdmFyIHR3byA9IGJpZ0ludCgyKTtcblxuICB3aGlsZSAoc3RhcnQubGVxKGVuZCkpXG4gIHtcbiAgICB2YXIgbWlkID0gc3RhcnQuYWRkKGVuZCkuZGl2aWRlKHR3byk7XG4gICAgdmFyIHBvID0gbWlkLnBvdyhpKTtcbiAgICBpZiAocG8uZXF1YWxzKHopKSB7XG4gICAgICByZXR1cm4gbWxfel9ub3JtYWxpemUobWlkKTtcbiAgICB9IGVsc2UgaWYgKHBvLmx0KHopKSB7XG4gICAgICBzdGFydCA9IG1pZC5uZXh0KCk7XG4gICAgICBhbnMgPSBtaWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVuZCA9IG1pZC5wcmV2KCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShhbnMpO1xufVxuXG4vL2V4dGVybmFsIHJvb3RyZW06IHQgLT4gaW50IC0+IHQgKiB0XG4vL1Byb3ZpZGVzOiBtbF96X3Jvb3RyZW1cbi8vUmVxdWlyZXM6IG1sX3pfcG93LCAgYmlnSW50LCBtbF96X25vcm1hbGl6ZSwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBtbF96X3Jvb3RyZW0oeiwgaSkge1xuICB2YXIgemVybyA9IGJpZ0ludCgwKTtcbiAgdmFyIG9uZSA9IGJpZ0ludCgxKTtcbiAgeiA9IGJpZ0ludCh6KTtcblxuICBpZiAoaSAlIDIgPT09IDAgJiYgei5sdCh6ZXJvKSkge1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIloucm9vdHJlbTogZXZlbiByb290IG9mIGEgbmVnYXRpdmUgbnVtYmVyXCIpO1xuICB9XG5cbiAgaWYgKHouZXF1YWxzKHplcm8pIHx8IHouZXF1YWxzKG9uZSkpIHtcbiAgICByZXR1cm4gWzAsIG1sX3pfbm9ybWFsaXplKHopLCB6ZXJvXTtcbiAgfVxuXG4gIHZhciBzdGFydCA9IHplcm87XG4gIHZhciBlbmQgPSB6O1xuICB2YXIgYW5zID0gbnVsbDtcblxuICB2YXIgdHdvID0gYmlnSW50KDIpO1xuXG4gIHdoaWxlIChzdGFydC5sZXEoZW5kKSlcbiAge1xuICAgIHZhciBtaWQgPSBzdGFydC5hZGQoZW5kKS5kaXZpZGUodHdvKTtcbiAgICB2YXIgcG8gPSBtaWQucG93KGkpO1xuICAgIGlmIChwby5lcXVhbHMoeikpIHtcbiAgICAgIHJldHVybiBbMCwgbWxfel9ub3JtYWxpemUobWlkKSwgemVyb107XG4gICAgfSBlbHNlIGlmIChwby5sdCh6KSkge1xuICAgICAgc3RhcnQgPSBtaWQubmV4dCgpO1xuICAgICAgYW5zID0gbWlkO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbmQgPSBtaWQucHJldigpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gWzAsIG1sX3pfbm9ybWFsaXplKGFucyksIG1sX3pfbm9ybWFsaXplKHoubWludXMoYW5zLnBvdyhpKSkpXTtcbn1cblxuLy9leHRlcm5hbCBpbnZlcnQ6IHQgLT4gdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X2ludmVydFxuLy9SZXF1aXJlczogYmlnSW50LCBjYW1sX3JhaXNlX3plcm9fZGl2aWRlLCBtbF96X2djZGV4dF9pbnRlcm4sIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X2ludmVydChhLCBuKSB7XG4gIC8vIEJlY2F1c2UgW2EubW9kSW52KG4pXSBwcm9kdWNlcyBkaWZmZXJlbnQgcmVzdWx0cyBmb3IgZWRnZSBjYXNlcyxcbiAgLy8gd2Ugd3JvdGUgb3VyIG93biBpbXBsZW1lbnRhdGlvbiBiYXNlZCBvbiBnY2RleHRfaW50ZXJuLlxuICBhID0gYmlnSW50KGEpO1xuICBuID0gYmlnSW50KG4pO1xuICB2YXIgemVybyA9IGJpZ0ludCgwKTtcbiAgdmFyIG9uZSA9IGJpZ0ludCgxKTtcbiAgaWYobi5hYnMoKS5lcXVhbHMob25lKSlcbiAgICByZXR1cm4gMDtcbiAgaWYgKG4uZXF1YWxzKHplcm8pICYmIGEuYWJzKCkuZXF1YWxzKG9uZSkpIHtcbiAgICByZXR1cm4gYTtcbiAgfVxuICBpZiAobi5lcXVhbHMoemVybykgfHwgYS5lcXVhbHMoemVybykpIHtcbiAgICBjYW1sX3JhaXNlX3plcm9fZGl2aWRlKCk7XG4gIH1cbiAgdmFyIHggPSBtbF96X2djZGV4dF9pbnRlcm4oYSwgbik7XG4gIHZhciByID0gYmlnSW50KHhbMl0pO1xuICB2YXIgdG1wID0gYmlnSW50KGEpLm11bHRpcGx5KHIpLm1vZChuKTtcbiAgaWYodG1wLmx0KHplcm8pKSB0bXAgPSB0bXAuYWRkKG4uYWJzKCkpO1xuICBpZihyLmx0KHplcm8pKSByID0gci5hZGQobi5hYnMoKSk7XG4gIGlmKHRtcC5lcXVhbHMob25lKSkge1xuICAgIHJldHVybiBtbF96X25vcm1hbGl6ZShyKTtcbiAgfVxuICBjYW1sX3JhaXNlX3plcm9fZGl2aWRlKCk7XG59XG5cbi8vZXh0ZXJuYWwgcGVyZmVjdF9wb3dlcjogdCAtPiBib29sXG4vL1Byb3ZpZGVzOiBtbF96X3BlcmZlY3RfcG93ZXJcbi8vUmVxdWlyZXM6IGJpZ0ludCwgY2FtbF9mYWlsd2l0aCwgbWxfel9udW1iaXRzLCBtbF96X3Jvb3QsIG1sX3pfcG93XG5mdW5jdGlvbiBtbF96X3BlcmZlY3RfcG93ZXIoeikge1xuICAvLyBSZXR1cm4gdHJ1ZSBpZiBvcCBpcyBhIHBlcmZlY3QgcG93ZXIsIGkuZS4sIGlmIHRoZXJlIGV4aXN0IGludGVnZXJzIGEgYW5kXG4gIC8vIGIsIHdpdGggYiA+IDEsIHN1Y2ggdGhhdCBvcCA9IGFeYi5cbiAgLy8gT3RoZXJ3aXNlIGZhbHNlLlxuICB6ID0gYmlnSW50KHopO1xuICB2YXIgemVybyA9IGJpZ0ludCgwKTtcbiAgdmFyIG9uZSA9IGJpZ0ludCgxKTtcblxuICBpZiAoei5lcXVhbHMoemVybykgfHwgei5lcXVhbHMob25lKSB8fCB6LmVxdWFscyhvbmUubmVnYXRlKCkpKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgdmFyIGxvZzJ6ID0gbWxfel9udW1iaXRzKHouYWJzKCkpO1xuICBmb3IgKHZhciBiID0gMjsgYiA8PSBsb2cyejsgYisrKSB7XG4gICAgaWYoei5sdCh6ZXJvKSAmJiBiICUgMiA9PSAwKSBjb250aW51ZTtcbiAgICB2YXIgenAgPSB6LmFicygpO1xuICAgIHZhciBwID0gYmlnSW50KG1sX3pfcm9vdCh6cCwgYikpO1xuICAgIGlmKHoubHQoemVybykpIHAgPSBwLm5lZ2F0ZSgpO1xuICAgIHZhciByID0gYmlnSW50KG1sX3pfcG93KHAsIGIpKTtcbiAgICBpZiAoei5lcXVhbHMocikpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9leHRlcm5hbCBwZXJmZWN0X3NxdWFyZTogdCAtPiBib29sXG4vL1Byb3ZpZGVzOiBtbF96X3BlcmZlY3Rfc3F1YXJlXG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfcm9vdFxuZnVuY3Rpb24gbWxfel9wZXJmZWN0X3NxdWFyZSh6KSB7XG4gIHogPSBiaWdJbnQoeik7XG4gIGlmICh6Lmx0KGJpZ0ludCgwKSkpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuICB2YXIgcm9vdCA9IGJpZ0ludChtbF96X3Jvb3QoeiwgMikpO1xuICBpZiAocm9vdC5tdWx0aXBseShyb290KS5lcSh6KSkge1xuICAgIHJldHVybiAxO1xuICB9XG4gIGVsc2Uge1xuICAgIHJldHVybiAwXG4gIH07XG59XG5cbi8vZXh0ZXJuYWwgcHJvYmFiX3ByaW1lOiB0IC0+IGludCAtPiBpbnRcbi8vUHJvdmlkZXM6IG1sX3pfcHJvYmFiX3ByaW1lIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnRcbmZ1bmN0aW9uIG1sX3pfcHJvYmFiX3ByaW1lKHosIGkpIHtcbiAgaWYgKGJpZ0ludCh6KS5pc1Byb2JhYmxlUHJpbWUoaSkpIHtcbiAgICByZXR1cm4gMTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gMDtcbiAgfVxufVxuXG4vL2V4dGVybmFsIG5leHRwcmltZTogdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X25leHRwcmltZSBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9uZXh0cHJpbWUoejEpIHtcbiAgLy8gSW50ZXJlc3RpbmdseSwgdGhlIHphcml0aCBuZXh0X3ByaW1lIG9ubHkgcmV0dXJucyBcbiAgLy8gcHJvYmFiYWxpc3RpYyBwcmltZXMuICBXZSBkbyB0aGUgc2FtZSwgd2l0aCB0aGUgXG4gIC8vIHNhbWUgcHJvYmFibGlzdGljIHBhcmFtZXRlciBvZiAyNS5cbiAgLy8gaHR0cHM6Ly9mb3NzaWVzLm9yZy9kb3gvZ21wLTYuMS4yL21wel8ybmV4dHByaW1lXzhjX3NvdXJjZS5odG1sXG4gIFxuICB6MSA9IGJpZ0ludCh6MSlcbiAgdmFyIG9uZSA9IGJpZ0ludCgxKTtcbiAgdmFyIHR3byA9IGJpZ0ludCgyKTtcblxuICBpZiAoejEubHQob25lKSB8fCB6MS5lcXVhbHMob25lKSkge1xuICAgIHJldHVybiAyO1xuICB9XG5cbiAgaWYgKHoxLmFuZChvbmUpLmVxdWFscyhvbmUpKSB7XG4gICAgejEgPSB6MS5hZGQodHdvKTtcbiAgfSBlbHNlIHtcbiAgICB6MSA9IHoxLmFkZChvbmUpO1xuICB9XG5cbiAgd2hpbGUgKHRydWUpIHtcbiAgICBpZiAoejEuaXNQcm9iYWJsZVByaW1lKDI1KSkge1xuICAgICAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKHoxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgejEgPSB6MS5hZGQodHdvKVxuICAgIH1cbiAgfVxufVxuXG4vL2V4dGVybmFsIGV4dHJhY3Q6IHQgLT4gaW50IC0+IGludCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X2V4dHJhY3Rcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGJpZ0ludCwgbWxfel9ub3JtYWxpemVcbmZ1bmN0aW9uIG1sX3pfZXh0cmFjdCh6MSwgcG9zLCBsZW4pIHtcbiAgejEgPSBiaWdJbnQoejEpO1xuICByZXR1cm4gbWxfel9ub3JtYWxpemUoejEuc2hpZnRSaWdodChwb3MpLmFuZChiaWdJbnQoMikucG93KGxlbikuc3VidHJhY3QoMSkpKTtcbn1cblxuLy9leHRlcm5hbCBnY2RleHRfaW50ZXJuOiB0IC0+IHQgLT4gKHQgKiB0ICogYm9vbClcbi8vUHJvdmlkZXM6IG1sX3pfZ2NkZXh0X2ludGVyblxuLy9SZXF1aXJlczogYmlnSW50LCBjYW1sX3JhaXNlX3plcm9fZGl2aWRlLCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9nY2RleHRfaW50ZXJuKHoxLCB6Mikge1xuICB6MSA9IGJpZ0ludCh6MSk7XG4gIHoyID0gYmlnSW50KHoyKTtcbiAgdmFyIGdjZCA9IGJpZ0ludC5nY2QoejEsejIpO1xuICB2YXIgYSA9IHoxO1xuICB2YXIgYiA9IHoyO1xuICB2YXIgeCA9IGJpZ0ludCgwKTtcbiAgdmFyIGxhc3R4ID0gYmlnSW50KDEpO1xuICB2YXIgeSA9IGJpZ0ludCgxKTtcbiAgdmFyIGxhc3R5ID0gYmlnSW50KDEpO1xuICB2YXIgcSwgdCwgcjtcbiAgaWYoejEuZXF1YWxzKGJpZ0ludCgwKSkpIHtcbiAgICBjYW1sX3JhaXNlX3plcm9fZGl2aWRlKCk7XG4gIH1cbiAgd2hpbGUoIWIuZXF1YWxzKGJpZ0ludCgwKSkpIHtcbiAgICBxID0gYS5kaXZpZGUoYik7XG4gICAgciA9IGEuc3VidHJhY3QocS5tdWx0aXBseShiKSk7XG4gICAgdCA9IHg7XG4gICAgeCA9IGxhc3R4LnN1YnRyYWN0KHEubXVsdGlwbHkoeCkpO1xuICAgIGxhc3R4ID0gdDtcbiAgICB0ID0geTtcbiAgICB5ID0gbGFzdHkuc3VidHJhY3QocS5tdWx0aXBseSh5KSk7XG4gICAgbGFzdHkgPSB0O1xuICAgIGEgPSBiO1xuICAgIGIgPSByO1xuICB9XG4gIGlmKGEubHQoYmlnSW50KDApKSlcbiAgICByZXR1cm4gWzAsbWxfel9ub3JtYWxpemUoYS5uZWdhdGUoKSksbWxfel9ub3JtYWxpemUobGFzdHgubmVnYXRlKCkpLDFdXG4gIGVsc2VcbiAgICByZXR1cm4gWzAsbWxfel9ub3JtYWxpemUoYSksbWxfel9ub3JtYWxpemUobGFzdHgpLDFdXG59XG5cbi8vZXh0ZXJuYWwgc3FydDogdCAtPiB0XG4vL1Byb3ZpZGVzOiBtbF96X3NxcnRcbi8vUmVxdWlyZXM6IGJpZ0ludCwgbWxfel9yb290LCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIG1sX3pfc3FydCh6MSkge1xuICB2YXIgeiA9IGJpZ0ludCh6MSk7XG4gIHZhciB6ZXJvID0gYmlnSW50KDApO1xuICBpZiAoei5sdCh6ZXJvKSkge1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlouc3FydDogc3F1YXJlIHJvb3Qgb2YgYSBuZWdhdGl2ZSBudW1iZXJcIik7XG4gIH1cbiAgcmV0dXJuIG1sX3pfcm9vdCh6LCAyKTtcbn1cblxuLy9leHRlcm5hbCBzcXJ0X3JlbTogdCAtPiAodCAqIHQpXG4vL1Byb3ZpZGVzOiBtbF96X3NxcnRfcmVtXG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfcm9vdCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBtbF96X25vcm1hbGl6ZVxuZnVuY3Rpb24gbWxfel9zcXJ0X3JlbSh6KSB7XG4gIHogPSBiaWdJbnQoeik7XG4gIHZhciB6ZXJvID0gYmlnSW50KDApO1xuICBpZiAoei5sdCh6ZXJvKSkge1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlouc3FydF9yZW06IHNxdWFyZSByb290IG9mIGEgbmVnYXRpdmUgbnVtYmVyXCIpO1xuICB9XG4gIHZhciByb290ID0gYmlnSW50KG1sX3pfcm9vdCh6LCAyKSk7XG4gIHZhciBtdWwgPSByb290Lm11bHRpcGx5KHJvb3QpO1xuICB2YXIgZGlmZiA9IHouc3VidHJhY3QobXVsKTtcbiAgcmV0dXJuIFswLCBtbF96X25vcm1hbGl6ZShyb290KSwgbWxfel9ub3JtYWxpemUoZGlmZildXG59XG5cbi8vZXh0ZXJuYWwgdHJhaWxpbmdfemVyb3M6IHQgLT4gaW50XG4vL1Byb3ZpZGVzOiBtbF96X3RyYWlsaW5nX3plcm9zIGNvbnN0XG4vL1JlcXVpcmVzOiBiaWdJbnRcbmZ1bmN0aW9uIG1sX3pfdHJhaWxpbmdfemVyb3Moeikge1xuICB6ID0gYmlnSW50KHopLmFicygpO1xuICB2YXIgemVybyA9IGJpZ0ludCgwKTtcbiAgdmFyIG9uZSA9IGJpZ0ludCgxKTtcbiAgaWYgKHouZXF1YWxzKHplcm8pKSB7XG4gICAgLy8gbWF4X2ludCBpbiAzMmJpdFxuICAgIHJldHVybiAweDdmZmZmZmZmO1xuICB9XG4gIHZhciBpID0gMFxuICB6ID0gei54b3Ioei5wcmV2KCkpLnNoaWZ0UmlnaHQoMSk7XG4gIGZvciAoaSA9IDA7ICF6LmVxdWFscyhiaWdJbnQuemVybyk7IGkrKykge1xuICAgIHogPSB6LnNoaWZ0UmlnaHQoMSk7XG4gIH1cbiAgcmV0dXJuIGk7XG59XG5cbi8vZXh0ZXJuYWwgcG9wY291bnQ6IHQgLT4gaW50XG4vL1Byb3ZpZGVzOiBtbF96X3BvcGNvdW50XG4vL1JlcXVpcmVzOiBiaWdJbnQsIGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfbmFtZWRfdmFsdWVcbmZ1bmN0aW9uIG1sX3pfcG9wY291bnQoeikge1xuICB6ID0gYmlnSW50KHopO1xuICB2YXIgemVybyA9IGJpZ0ludCgwKTtcbiAgdmFyIG9uZSA9IGJpZ0ludCgxKTtcbiAgaWYgKHoubHQoemVybykpIHtcbiAgICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfbmFtZWRfdmFsdWUoXCJtbF96X292ZXJmbG93XCIpKTtcbiAgfVxuICB2YXIgaTtcbiAgZm9yIChpID0gMDsgIXouZXF1YWxzKHplcm8pOyBpKyspIHtcbiAgICB6ID0gei5hbmQoei5wcmV2KCkpO1xuICB9XG4gIGlmKGkgIT0gKGl8MCkpIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9uYW1lZF92YWx1ZShcIm1sX3pfb3ZlcmZsb3dcIikpO1xuICByZXR1cm4gaXwwO1xufVxuXG4vL2V4dGVybmFsIGhhbWRpc3Q6IHQgLT4gdCAtPiBpbnRcbi8vUHJvdmlkZXM6IG1sX3pfaGFtZGlzdFxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X3BvcGNvdW50LCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfbmFtZWRfdmFsdWVcbmZ1bmN0aW9uIG1sX3pfaGFtZGlzdCh6MSwgejIpIHtcbiAgaWYoYmlnSW50KHoxKS5pc05lZ2F0aXZlKCkgIT0gYmlnSW50KHoyKS5pc05lZ2F0aXZlICgpKXtcbiAgICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfbmFtZWRfdmFsdWUoXCJtbF96X292ZXJmbG93XCIpKTtcbiAgfVxuICBpZigoejEgIT0gKHoxIHwgMCkgfHwgejIgIT0gKHoyIHwgMCkpICYmIChiaWdJbnQoejEpLmlzTmVnYXRpdmUoKSB8fCBiaWdJbnQoejIpLmlzTmVnYXRpdmUgKCkpKXtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJaLmhhbWRpc3Q6IG5lZ2F0aXZlIGFyZ3VtZW50c1wiKTtcbiAgfVxuICByZXR1cm4gbWxfel9wb3Bjb3VudChiaWdJbnQoejEpLnhvcihiaWdJbnQoejIpKSk7XG59XG5cbi8vZXh0ZXJuYWwgc2l6ZTogdCAtPiBpbnRcbi8vUHJvdmlkZXM6IG1sX3pfc2l6ZSBjb25zdFxuLy9SZXF1aXJlczogYmlnSW50XG5mdW5jdGlvbiBtbF96X3NpemUoejEpIHtcbiAgLy8gQ2xhaW0gdG8gYmUgYSAzMi1iaXQgYXJjaGl0ZWN0dXJlLlxuICByZXR1cm4gYmlnSW50KHoxKS50b0FycmF5KE1hdGgucG93KDIsIDMyKSkudmFsdWUubGVuZ3RoO1xufVxuXG4vL2V4dGVybmFsIGRpdmV4YWN0OiB0IC0+IHQgLT4gdFxuLy9Qcm92aWRlczogbWxfel9kaXZleGFjdFxuLy9SZXF1aXJlczogYmlnSW50LCBtbF96X2RpdlxuZnVuY3Rpb24gbWxfel9kaXZleGFjdCh6MSwgejIpIHtcbiAgcmV0dXJuIG1sX3pfZGl2KHoxLCB6Mik7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF96YXJpdGhfbWFyc2hhbFxuLy9SZXF1aXJlczogYmlnSW50XG5mdW5jdGlvbiBjYW1sX3phcml0aF9tYXJzaGFsKHdyaXRlciwgdiwgc3opIHtcbiAgdiA9IGJpZ0ludCh2KTtcbiAgdmFyIGJpdHMgPSB2LnRvQXJyYXkoTWF0aC5wb3coMiwgMzIpKTtcbiAgd3JpdGVyLndyaXRlKDgsIGJpdHMuaXNOZWdhdGl2ZSA/MSA6IDApO1xuICB2YXIgYmxvY2sgPSBiaXRzLnZhbHVlLmxlbmd0aDtcbiAgdmFyIGxlbiA9IGJsb2NrICogNDtcbiAgd3JpdGVyLndyaXRlKDMyLCBsZW4pO1xuICBmb3IodmFyIGkgPSBibG9jayAtIDE7IGkgPj0gMDsgaSAtLSl7XG4gICAgd3JpdGVyLndyaXRlKDgsIChiaXRzLnZhbHVlW2ldID4+PiAwICkgJiAweGZmKTtcbiAgICB3cml0ZXIud3JpdGUoOCwgKGJpdHMudmFsdWVbaV0gPj4+IDggKSAmIDB4ZmYpO1xuICAgIHdyaXRlci53cml0ZSg4LCAoYml0cy52YWx1ZVtpXSA+Pj4gMTYpICYgMHhmZik7XG4gICAgd3JpdGVyLndyaXRlKDgsIChiaXRzLnZhbHVlW2ldID4+PiAyNCkgJiAweGZmKTtcbiAgfVxuICBzelswXSA9IDQgKiAoMSArICgoKGxlbiArIDMpIC8gNCkgfCAwKSk7XG4gIHN6WzFdID0gOCAqICgxICsgKCgobGVuICsgNykgLyA4KSB8IDApKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF96YXJpdGhfdW5tYXJzaGFsXG4vL1JlcXVpcmVzOiBiaWdJbnQsIGNhbWxfZmFpbHdpdGgsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBjYW1sX3phcml0aF91bm1hcnNoYWwocmVhZGVyLCBzeikge1xuICB2YXIgbmVnYXRlO1xuICBzd2l0Y2gocmVhZGVyLnJlYWQ4dSAoKSkge1xuICBjYXNlIDE6IG5lZ2F0ZSA9IHRydWU7IGJyZWFrO1xuICBjYXNlIDA6IG5lZ2F0ZSA9IGZhbHNlOyBicmVhaztcbiAgZGVmYXVsdDogY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiB6IChtYWxmb3JtZWQgaW5wdXQpXCIpO1xuICB9XG4gIHZhciBsZW4gPSByZWFkZXIucmVhZDMydSgpO1xuICB2YXIgeCA9IGJpZ0ludCgwKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbiAvIDQ7IGkrKyl7XG4gICAgdmFyIHkgPSBiaWdJbnQocmVhZGVyLnJlYWQ4dSgpKTtcbiAgICB5ID0geS5hZGQoKHJlYWRlci5yZWFkOHUoKSkgPDwgOCk7XG4gICAgeSA9IHkuYWRkKChyZWFkZXIucmVhZDh1KCkpIDw8IDE2KTtcbiAgICB5ID0geS5hZGQoKChyZWFkZXIucmVhZDh1KCkpIDw8IDI0KSA+Pj4gMCk7XG4gICAgeCA9IHkuc2hpZnRMZWZ0KGkgKiAzMikuYWRkKHgpO1xuICB9XG4gIGlmKG5lZ2F0ZSkgeCA9IHgubmVnYXRlKCk7XG4gIHN6WzBdID0gbGVuICsgNDtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKHgpXG59XG5cbi8vUHJvdmlkZXM6IG1sX3pfZGl2aXNpYmxlXG4vL1JlcXVpcmVzOiBiaWdJbnRcbmZ1bmN0aW9uIG1sX3pfZGl2aXNpYmxlKGEsIGIpe1xuICB2YXIgemVybyA9IGJpZ0ludCgwKTtcbiAgYSA9IGJpZ0ludChhKTtcbiAgYiA9IGJpZ0ludChiKTtcbiAgaWYoYS5lcXVhbHMoemVybykgJiYgYi5lcXVhbHMoemVybykpIHJldHVybiAxO1xuICByZXR1cm4gYS5pc0RpdmlzaWJsZUJ5KGIpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogbWxfel9jb25ncnVlbnRcbi8vUmVxdWlyZXM6IGJpZ0ludFxuZnVuY3Rpb24gbWxfel9jb25ncnVlbnQoYSxiLGMpe1xuICB2YXIgemVybyA9IGJpZ0ludCgwKTtcbiAgYSA9IGJpZ0ludChhKTtcbiAgYiA9IGJpZ0ludChiKTtcbiAgYyA9IGJpZ0ludChjKTtcbiAgaWYoYy5lcXVhbHMoemVybykgJiYgYS5lcXVhbHMoYikpIHJldHVybiAxO1xuICByZXR1cm4gYS5taW51cyhiKS5pc0RpdmlzaWJsZUJ5KGMpID8gMSA6IDA7XG59XG5cbi8vUHJvdmlkZXM6IG1sX3pfcmVtb3ZlXG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfbm9ybWFsaXplLCBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG5mdW5jdGlvbiBtbF96X3JlbW92ZShhLGIpe1xuICB2YXIgemVybyA9IGJpZ0ludCgwKTtcbiAgdmFyIG9uZSA9IGJpZ0ludCgxKTtcbiAgYSA9IGJpZ0ludChhKTtcbiAgYiA9IGJpZ0ludChiKTtcbiAgaWYoYi5lcXVhbHMoemVybykpIGNhbWxfcmFpc2VfemVyb19kaXZpZGUoKTtcbiAgaWYoYS5lcXVhbHMoemVybykgfHwgYi5hYnMoKS5lcXVhbHMob25lKSkgcmV0dXJuIFswLCBhLCAwXTtcbiAgdmFyIGkgPSAwO1xuICB3aGlsZShhLmlzRGl2aXNpYmxlQnkoYikpe1xuICAgIGEgPSBhLmRpdmlkZShiKTtcbiAgICBpKys7XG4gIH1cbiAgcmV0dXJuIFswLCBtbF96X25vcm1hbGl6ZShhKSwgaV07XG59XG5cbi8vUHJvdmlkZXM6IG1sX3pfZmFjXG4vL1JlcXVpcmVzOiBtbF96X2ZhY00sIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gbWxfel9mYWMoaSl7XG4gIGlmKGk8PTApIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlouZmFjdDogbmVnYXRpdmUgYXJndW1lbnRzXCIpO1xuICByZXR1cm4gbWxfel9mYWNNKGksMSk7XG59XG5cbi8vUHJvdmlkZXM6IG1sX3pfZmFjMlxuLy9SZXF1aXJlczogbWxfel9mYWNNLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIG1sX3pfZmFjMihpKXtcbiAgaWYoaTw9MCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiWi5mYWN0MjogbmVnYXRpdmUgYXJndW1lbnRzXCIpO1xuICByZXR1cm4gbWxfel9mYWNNKGksMik7XG59XG5cbi8vUHJvdmlkZXM6IG1sX3pfZmFjTVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBiaWdJbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X2ZhY00oaSwgbSl7XG4gIGlmKGk8PTB8fG08PTApIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlouZmFjdE06IG5lZ2F0aXZlIGFyZ3VtZW50c1wiKTtcbiAgbSA9IGJpZ0ludChtKTtcbiAgdmFyIGN1cnJlbnQgPSBiaWdJbnQoaSk7XG4gIHZhciByZXMgPSBiaWdJbnQoMSk7XG4gIHdoaWxlKGN1cnJlbnQuaXNQb3NpdGl2ZSgpKXtcbiAgICByZXMgPSByZXMubXVsdGlwbHkoY3VycmVudCk7XG4gICAgY3VycmVudCA9IGN1cnJlbnQubWludXMobSk7XG4gIH1cbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKHJlcyk7XG59XG5cbi8vUHJvdmlkZXM6IG1sX3pfZmliXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIG1sX3pfbm9ybWFsaXplLCBiaWdJbnRcbmZ1bmN0aW9uIG1sX3pfZmliKGkpe1xuICBpZihpIDwgMCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiWi5maWI6IG5lZ2F0aXZlIGFyZ3VtZW50c1wiKTtcbiAgaWYoaSA9PSAwIHx8IGkgPT0gMSkgcmV0dXJuIGk7XG4gIHZhciBhID0gYmlnSW50KDApLCBiID0gYmlnSW50KDEpO1xuICBmb3IodmFyIGsgPSAxOyBrIDwgaTsgaysrKXtcbiAgICB2YXIgYjIgPSBiO1xuICAgIGIgPSBhLmFkZChiKTtcbiAgICBhID0gYjI7XG4gIH1cbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGIpO1xufVxuXG4vL1Byb3ZpZGVzOiBtbF96X2x1Y251bVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBtbF96X25vcm1hbGl6ZSwgYmlnSW50XG5mdW5jdGlvbiBtbF96X2x1Y251bShpKXtcbiAgaWYoaSA8IDApIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIloubHVjbnVtOiBuZWdhdGl2ZSBhcmd1bWVudHNcIik7XG4gIGlmKGkgPT0gMCkgcmV0dXJuIDI7XG4gIGlmKGkgPT0gMSkgcmV0dXJuIDE7XG4gIHZhciBhID0gYmlnSW50KDIpLCBiID0gYmlnSW50KDEpO1xuICBmb3IodmFyIGsgPSAxOyBrIDwgaTsgaysrKXtcbiAgICB2YXIgYjIgPSBiO1xuICAgIGIgPSBhLmFkZChiKTtcbiAgICBhID0gYjI7XG4gIH1cbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGIpO1xufVxuXG4vL1Byb3ZpZGVzOiBtbF96X2phY29iaVxuLy9SZXF1aXJlczogYmlnSW50LCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIG1sX3pfamFjb2JpKG4sIGspe1xuICBuID0gYmlnSW50KG4pO1xuICBrID0gYmlnSW50KGspO1xuICAvL2Fzc2VydChrID4gMCBhbmQgayAlIDIgPT0gMSlcbiAgaWYoay5sZXEoYmlnSW50KDApKSB8fCBrLm1vZChiaWdJbnQoMikpLm5lcShiaWdJbnQoMSkpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlouamFjb2JpOiBzZWNvbmQgYXJndW1lbnQgaXMgbmVnYXRpdmUgb3IgZXZlblwiKTtcbiAgbiA9IG4ubW9kKGspO1xuICBpZihuLmx0KGJpZ0ludCgwKSkpIG4gPSBuLmFkZChrKTtcbiAgdmFyIHQgPSAxO1xuICB3aGlsZSAoISBuLmVxdWFscyhiaWdJbnQoMCkpKXtcbiAgICB3aGlsZSAobi5pc0RpdmlzaWJsZUJ5KGJpZ0ludCgyKSkpIHtcbiAgICAgIG4gPSBuLmRpdmlkZShiaWdJbnQoMikpXG4gICAgICB2YXIgciA9IGsubW9kKGJpZ0ludCg4KSlcbiAgICAgIGlmIChyLmVxdWFscyhiaWdJbnQoMykpIHx8IHIuZXF1YWxzKGJpZ0ludCg1KSkpe1xuICAgICAgICB0ID0gLXRcbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIG4xID0gbiwgazEgPSBrO1xuICAgIG4gPSBrMTtcbiAgICBrID0gbjE7XG4gICAgaWYgKG4ubW9kKGJpZ0ludCg0KSkuZXF1YWxzKGJpZ0ludCgzKSkgJiYgIGsubW9kKGJpZ0ludCg0KSkuZXF1YWxzKGJpZ0ludCgzKSkpIHtcbiAgICAgIHQgPSAtdFxuICAgIH1cbiAgICBuID0gbi5tb2QoaylcbiAgfVxuICBpZihrLmVxdWFscyhiaWdJbnQoMSkpKVxuICAgIHJldHVybiB0XG4gIGVsc2VcbiAgICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBtbF96X2xlZ2VuZHJlXG4vL1JlcXVpcmVzOiBtbF96X2phY29iaVxuZnVuY3Rpb24gbWxfel9sZWdlbmRyZShhLGIpe1xuICByZXR1cm4gbWxfel9qYWNvYmkoYSxiKTtcbn1cblxuLy9Qcm92aWRlczogbWxfel9rcm9uZWNrZXJcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIG1sX3pfa3JvbmVja2VyKG4sayl7XG4gIGNhbWxfZmFpbHdpdGgoXCJtbF96X2tyb25lY2tlciBpcyBub3QgaW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IG1sX3pfcHJpbW9yaWFsXG4vL1JlcXVpcmVzOiBiaWdJbnQsIG1sX3pfbm9ybWFsaXplXG5mdW5jdGlvbiBtbF96X3ByaW1vcmlhbChhKXtcbiAgdmFyIG9uZSA9IGJpZ0ludCgxKTtcbiAgdmFyIHR3byA9IGJpZ0ludCgyKTtcbiAgdmFyIHoxID0gb25lO1xuICB2YXIgcmVzID0gb25lO1xuICBhID0gYmlnSW50KGEpO1xuICB3aGlsZSAoejEubGVxKGEpKSB7XG4gICAgaWYgKHoxLmlzUHJvYmFibGVQcmltZSgyNSkpIHtcbiAgICAgIHJlcyA9IHJlcy5tdWx0aXBseSh6MSk7XG4gICAgfVxuICAgIGlmKHoxLmVxdWFscyhvbmUpIHx8IHoxLmVxdWFscyh0d28pKSB6MSA9IHoxLmFkZChvbmUpO1xuICAgIGVsc2UgejEgPSB6MS5hZGQodHdvKVxuICB9XG4gIHJldHVybiBtbF96X25vcm1hbGl6ZShyZXMpO1xufVxuXG4vL1Byb3ZpZGVzOiBtbF96X2JpblxuLy9SZXF1aXJlczogbWxfel9ub3JtYWxpemUsIGJpZ0ludCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBtbF96X2JpbihuLCBrKXtcbiAgdmFyIG4gPSBiaWdJbnQobik7XG4gIHZhciBrID0gYmlnSW50KGspO1xuICB2YXIgY29lZmYgPSBiaWdJbnQoMSk7XG4gIGZvciAodmFyIHggPSBuLm1pbnVzKGspLmFkZChiaWdJbnQoMSkpOyB4LmxlcShuKTsgeCA9IHguYWRkKGJpZ0ludCgxKSkpIGNvZWZmID0gY29lZmYubXVsdGlwbHkoeCk7XG4gIGZvciAoeCA9IGJpZ0ludCgxKTsgeC5sZXEoayk7IHggPSB4LmFkZChiaWdJbnQoMSkpKSBjb2VmZiA9IGNvZWZmLmRpdmlkZSh4KTtcbiAgcmV0dXJuIG1sX3pfbm9ybWFsaXplKGNvZWZmKTtcblxufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmQsIEFuZHkgUmF5XG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4vL1xuLy8gQmlnYXJyYXkuXG4vL1xuLy8gLSBhbGwgYmlnYXJyYXkgdHlwZXMgaW5jbHVkaW5nIEludDY0IGFuZCBDb21wbGV4LlxuLy8gLSBmb3J0cmFuICsgYyBsYXlvdXRzXG4vLyAtIHN1Yi9zbGljZS9yZXNoYXBlXG4vLyAtIHJldGFpbiBmYXN0IHBhdGggZm9yIDFkIGFycmF5IGFjY2Vzc1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2luaXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfYmFfaW5pdCgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfc2l6ZShkaW1zKSB7XG4gIHZhciBuX2RpbXMgPSBkaW1zLmxlbmd0aDtcbiAgdmFyIHNpemUgPSAxO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG5fZGltczsgaSsrKSB7XG4gICAgaWYgKGRpbXNbaV0gPCAwKVxuICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuY3JlYXRlOiBuZWdhdGl2ZSBkaW1lbnNpb25cIik7XG4gICAgc2l6ZSA9IHNpemUgKiBkaW1zW2ldO1xuICB9XG4gIHJldHVybiBzaXplO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpe1xuICBzd2l0Y2goa2luZCl7XG4gIGNhc2UgNzogY2FzZSAxMDogY2FzZSAxMTogcmV0dXJuIDI7XG4gIGRlZmF1bHQ6IHJldHVybiAxO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3JlYXRlX2J1ZmZlclxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2NyZWF0ZV9idWZmZXIoa2luZCwgc2l6ZSl7XG4gIHZhciBnID0gZ2xvYmFsVGhpcztcbiAgdmFyIHZpZXc7XG4gIHN3aXRjaChraW5kKXtcbiAgY2FzZSAwOiAgdmlldyA9IGcuRmxvYXQzMkFycmF5OyBicmVhaztcbiAgY2FzZSAxOiAgdmlldyA9IGcuRmxvYXQ2NEFycmF5OyBicmVhaztcbiAgY2FzZSAyOiAgdmlldyA9IGcuSW50OEFycmF5OyBicmVhaztcbiAgY2FzZSAzOiAgdmlldyA9IGcuVWludDhBcnJheTsgYnJlYWs7XG4gIGNhc2UgNDogIHZpZXcgPSBnLkludDE2QXJyYXk7IGJyZWFrO1xuICBjYXNlIDU6ICB2aWV3ID0gZy5VaW50MTZBcnJheTsgYnJlYWs7XG4gIGNhc2UgNjogIHZpZXcgPSBnLkludDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDc6ICB2aWV3ID0gZy5JbnQzMkFycmF5OyBicmVhaztcbiAgY2FzZSA4OiAgdmlldyA9IGcuSW50MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgOTogIHZpZXcgPSBnLkludDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDEwOiB2aWV3ID0gZy5GbG9hdDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDExOiB2aWV3ID0gZy5GbG9hdDY0QXJyYXk7IGJyZWFrO1xuICBjYXNlIDEyOiB2aWV3ID0gZy5VaW50OEFycmF5OyBicmVhaztcbiAgfVxuICBpZiAoIXZpZXcpIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmNyZWF0ZTogdW5zdXBwb3J0ZWQga2luZFwiKTtcbiAgdmFyIGRhdGEgPSBuZXcgdmlldyhzaXplICogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChraW5kKSk7XG4gIHJldHVybiBkYXRhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2N1c3RvbV9uYW1lXG4vL1ZlcnNpb246IDwgNC4xMVxudmFyIGNhbWxfYmFfY3VzdG9tX25hbWUgPSBcIl9iaWdhcnJheVwiXG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3VzdG9tX25hbWVcbi8vVmVyc2lvbjogPj0gNC4xMVxudmFyIGNhbWxfYmFfY3VzdG9tX25hbWUgPSBcIl9iaWdhcnIwMlwiXG5cbi8vUHJvdmlkZXM6IE1sX0JpZ2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfY3VzdG9tX25hbWVcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpLCBjYW1sX2ludDY0X2hpMzIsIGNhbWxfaW50NjRfbG8zMlxuZnVuY3Rpb24gTWxfQmlnYXJyYXkgKGtpbmQsIGxheW91dCwgZGltcywgYnVmZmVyKSB7XG5cbiAgdGhpcy5raW5kICAgPSBraW5kIDtcbiAgdGhpcy5sYXlvdXQgPSBsYXlvdXQ7XG4gIHRoaXMuZGltcyAgID0gZGltcztcbiAgdGhpcy5kYXRhID0gYnVmZmVyO1xufVxuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUuY2FtbF9jdXN0b20gPSBjYW1sX2JhX2N1c3RvbV9uYW1lO1xuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUub2Zmc2V0ID0gZnVuY3Rpb24gKGFyZykge1xuICB2YXIgb2ZzID0gMDtcbiAgaWYodHlwZW9mIGFyZyA9PT0gXCJudW1iZXJcIikgYXJnID0gW2FyZ107XG4gIGlmICghIChhcmcgaW5zdGFuY2VvZiBBcnJheSkpIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImJpZ2FycmF5LmpzOiBpbnZhbGlkIG9mZnNldFwiKTtcbiAgaWYgKHRoaXMuZGltcy5sZW5ndGggIT0gYXJnLmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5nZXQvc2V0OiBiYWQgbnVtYmVyIG9mIGRpbWVuc2lvbnNcIik7XG4gIGlmKHRoaXMubGF5b3V0ID09IDAgLyogY19sYXlvdXQgKi8pIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGltcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGFyZ1tpXSA8IDAgfHwgYXJnW2ldID49IHRoaXMuZGltc1tpXSlcbiAgICAgICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICAgICAgb2ZzID0gKG9mcyAqIHRoaXMuZGltc1tpXSkgKyBhcmdbaV07XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGkgPSB0aGlzLmRpbXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGlmIChhcmdbaV0gPCAxIHx8IGFyZ1tpXSA+IHRoaXMuZGltc1tpXSl7XG4gICAgICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgICAgIH1cbiAgICAgIG9mcyA9IChvZnMgKiB0aGlzLmRpbXNbaV0pICsgKGFyZ1tpXSAtIDEpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb2ZzO1xufVxuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKG9mcykge1xuICBzd2l0Y2godGhpcy5raW5kKXtcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgdmFyIGwgPSB0aGlzLmRhdGFbb2ZzICogMiArIDBdO1xuICAgIHZhciBoID0gdGhpcy5kYXRhW29mcyAqIDIgKyAxXTtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkobCxoKTtcbiAgY2FzZSAxMDogY2FzZSAxMTpcbiAgICAvLyBDb21wbGV4MzIsIENvbXBsZXg2NFxuICAgIHZhciByID0gdGhpcy5kYXRhW29mcyAqIDIgKyAwXTtcbiAgICB2YXIgaSA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMV07XG4gICAgcmV0dXJuIFsyNTQsIHIsIGldO1xuICBkZWZhdWx0OlxuICAgIHJldHVybiB0aGlzLmRhdGFbb2ZzXVxuICB9XG59XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAob2ZzLHYpIHtcbiAgc3dpdGNoKHRoaXMua2luZCl7XG4gIGNhc2UgNzpcbiAgICAvLyBJbnQ2NFxuICAgIHRoaXMuZGF0YVtvZnMgKiAyICsgMF0gPSBjYW1sX2ludDY0X2xvMzIodik7XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAxXSA9IGNhbWxfaW50NjRfaGkzMih2KTtcbiAgICBicmVhaztcbiAgY2FzZSAxMDogY2FzZSAxMTpcbiAgICAvLyBDb21wbGV4MzIsIENvbXBsZXg2NFxuICAgIHRoaXMuZGF0YVtvZnMgKiAyICsgMF0gPSB2WzFdO1xuICAgIHRoaXMuZGF0YVtvZnMgKiAyICsgMV0gPSB2WzJdO1xuICAgIGJyZWFrO1xuICBkZWZhdWx0OlxuICAgIHRoaXMuZGF0YVtvZnNdID0gdjtcbiAgICBicmVhaztcbiAgfVxuICByZXR1cm4gMFxufVxuXG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5maWxsID0gZnVuY3Rpb24gKHYpIHtcbiAgc3dpdGNoKHRoaXMua2luZCl7XG4gIGNhc2UgNzpcbiAgICAvLyBJbnQ2NFxuICAgIHZhciBhID0gY2FtbF9pbnQ2NF9sbzMyKHYpO1xuICAgIHZhciBiID0gY2FtbF9pbnQ2NF9oaTMyKHYpO1xuICAgIGlmKGEgPT0gYil7XG4gICAgICB0aGlzLmRhdGEuZmlsbChhKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBmb3IodmFyIGkgPSAwOyBpPHRoaXMuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICAgIHRoaXMuZGF0YVtpXSA9IChpJTIgPT0gMCkgPyBhIDogYjtcbiAgICAgIH1cbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IGNhc2UgMTE6XG4gICAgLy8gQ29tcGxleDMyLCBDb21wbGV4NjRcbiAgICB2YXIgaW0gPSB2WzFdO1xuICAgIHZhciByZSA9IHZbMl07XG4gICAgaWYoaW0gPT0gcmUpe1xuICAgICAgdGhpcy5kYXRhLmZpbGwoaW0pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGZvcih2YXIgaSA9IDA7IGk8dGhpcy5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgdGhpcy5kYXRhW2ldID0gKGklMiA9PSAwKSA/IGltIDogcmU7XG4gICAgICB9XG4gICAgfVxuICAgIGJyZWFrO1xuICBkZWZhdWx0OlxuICAgIHRoaXMuZGF0YS5maWxsKHYpO1xuICAgIGJyZWFrO1xuICB9XG59XG5cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbiAoYiwgdG90YWwpIHtcbiAgaWYgKHRoaXMubGF5b3V0ICE9IGIubGF5b3V0IHx8IHRoaXMua2luZCAhPSBiLmtpbmQpIHtcbiAgICB2YXIgazEgPSB0aGlzLmtpbmQgfCAodGhpcy5sYXlvdXQgPDwgOCk7XG4gICAgdmFyIGsyID0gICAgYi5raW5kIHwgKGIubGF5b3V0IDw8IDgpO1xuICAgIHJldHVybiBrMiAtIGsxO1xuICB9XG4gIGlmICh0aGlzLmRpbXMubGVuZ3RoICE9IGIuZGltcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gYi5kaW1zLmxlbmd0aCAtIHRoaXMuZGltcy5sZW5ndGg7XG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRpbXMubGVuZ3RoOyBpKyspXG4gICAgaWYgKHRoaXMuZGltc1tpXSAhPSBiLmRpbXNbaV0pXG4gICAgICByZXR1cm4gKHRoaXMuZGltc1tpXSA8IGIuZGltc1tpXSkgPyAtMSA6IDE7XG4gIHN3aXRjaCAodGhpcy5raW5kKSB7XG4gIGNhc2UgMDpcbiAgY2FzZSAxOlxuICBjYXNlIDEwOlxuICBjYXNlIDExOlxuICAgIC8vIEZsb2F0c1xuICAgIHZhciB4LCB5O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICB4ID0gdGhpcy5kYXRhW2ldO1xuICAgICAgeSA9IGIuZGF0YVtpXTtcbiAgICAgIGlmICh4IDwgeSlcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgaWYgKHggPiB5KVxuICAgICAgICByZXR1cm4gMTtcbiAgICAgIGlmICh4ICE9IHkpIHtcbiAgICAgICAgaWYgKCF0b3RhbCkgcmV0dXJuIE5hTjtcbiAgICAgICAgaWYgKHggPT0geCkgcmV0dXJuIDE7XG4gICAgICAgIGlmICh5ID09IHkpIHJldHVybiAtMTtcbiAgICAgIH1cbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNzpcbiAgICAvLyBJbnQ2NFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kYXRhLmxlbmd0aDsgaSs9Mikge1xuICAgICAgLy8gQ2hlY2sgaGlnaGVzdCBiaXRzIGZpcnN0XG4gICAgICBpZiAodGhpcy5kYXRhW2krMV0gPCBiLmRhdGFbaSsxXSlcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgaWYgKHRoaXMuZGF0YVtpKzFdID4gYi5kYXRhW2krMV0pXG4gICAgICAgIHJldHVybiAxO1xuICAgICAgaWYgKCh0aGlzLmRhdGFbaV0gPj4+IDApIDwgKGIuZGF0YVtpXSA+Pj4gMCkpXG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIGlmICgodGhpcy5kYXRhW2ldID4+PiAwKSA+IChiLmRhdGFbaV0gPj4+IDApKVxuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMjpcbiAgY2FzZSAzOlxuICBjYXNlIDQ6XG4gIGNhc2UgNTpcbiAgY2FzZSA2OlxuICBjYXNlIDg6XG4gIGNhc2UgOTpcbiAgY2FzZSAxMjpcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHRoaXMuZGF0YVtpXSA8IGIuZGF0YVtpXSlcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgaWYgKHRoaXMuZGF0YVtpXSA+IGIuZGF0YVtpXSlcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBNbF9CaWdhcnJheV9jXzFfMVxuLy9SZXF1aXJlczogTWxfQmlnYXJyYXksIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gTWxfQmlnYXJyYXlfY18xXzEoa2luZCwgbGF5b3V0LCBkaW1zLCBidWZmZXIpIHtcbiAgdGhpcy5raW5kICAgPSBraW5kIDtcbiAgdGhpcy5sYXlvdXQgPSBsYXlvdXQ7XG4gIHRoaXMuZGltcyAgID0gZGltcztcbiAgdGhpcy5kYXRhICAgPSBidWZmZXI7XG59XG5cbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZSA9IG5ldyBNbF9CaWdhcnJheSgpXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUub2Zmc2V0ID0gZnVuY3Rpb24gKGFyZykge1xuICBpZih0eXBlb2YgYXJnICE9PSBcIm51bWJlclwiKXtcbiAgICBpZigoYXJnIGluc3RhbmNlb2YgQXJyYXkpICYmIGFyZy5sZW5ndGggPT0gMSlcbiAgICAgIGFyZyA9IGFyZ1swXTtcbiAgICBlbHNlIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIk1sX0JpZ2FycmF5X2NfMV8xLm9mZnNldFwiKTtcbiAgfVxuICBpZiAoYXJnIDwgMCB8fCBhcmcgPj0gdGhpcy5kaW1zWzBdKVxuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGFyZztcbn1cblxuTWxfQmlnYXJyYXlfY18xXzEucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChvZnMpIHtcbiAgcmV0dXJuIHRoaXMuZGF0YVtvZnNdO1xufVxuXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKG9mcyx2KSB7XG4gIHRoaXMuZGF0YVtvZnNdID0gdjtcbiAgcmV0dXJuIDBcbn1cblxuTWxfQmlnYXJyYXlfY18xXzEucHJvdG90eXBlLmZpbGwgPSBmdW5jdGlvbiAodikge1xuICB0aGlzLmRhdGEuZmlsbCh2KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jb21wYXJlXG5mdW5jdGlvbiBjYW1sX2JhX2NvbXBhcmUoYSxiLHRvdGFsKXtcbiAgcmV0dXJuIGEuY29tcGFyZShiLHRvdGFsKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbi8vUmVxdWlyZXM6IE1sX0JpZ2FycmF5LCBNbF9CaWdhcnJheV9jXzFfMSwgY2FtbF9iYV9nZXRfc2l6ZSwgY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKXtcbiAgdmFyIHNpemVfcGVyX2VsZW1lbnQgPSBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpO1xuICBpZihjYW1sX2JhX2dldF9zaXplKGRpbXMpICogc2l6ZV9wZXJfZWxlbWVudCAhPSBkYXRhLmxlbmd0aCkge1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImxlbmd0aCBkb2Vzbid0IG1hdGNoIGRpbXNcIik7XG4gIH1cbiAgaWYobGF5b3V0ID09IDAgJiYgLy8gY19sYXlvdXRcbiAgICAgZGltcy5sZW5ndGggPT0gMSAmJiAvLyBBcnJheTFcbiAgICAgc2l6ZV9wZXJfZWxlbWVudCA9PSAxKSAvLyAxLXRvLTEgbWFwcGluZ1xuICAgIHJldHVybiBuZXcgTWxfQmlnYXJyYXlfY18xXzEoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcbiAgcmV0dXJuIG5ldyBNbF9CaWdhcnJheShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xuXG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZSwgY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV9idWZmZXJcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlKGtpbmQsIGxheW91dCwgZGltc19tbCkge1xuICB2YXIgZGltcyA9IGNhbWxfanNfZnJvbV9hcnJheShkaW1zX21sKTtcbiAgdmFyIGRhdGEgPSBjYW1sX2JhX2NyZWF0ZV9idWZmZXIoa2luZCwgY2FtbF9iYV9nZXRfc2l6ZShkaW1zKSk7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbmZ1bmN0aW9uIGNhbWxfYmFfY2hhbmdlX2xheW91dChiYSwgbGF5b3V0KSB7XG4gIGlmKGJhLmxheW91dCA9PSBsYXlvdXQpIHJldHVybiBiYTtcbiAgdmFyIG5ld19kaW1zID0gW11cbiAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspIG5ld19kaW1zW2ldID0gYmEuZGltc1tiYS5kaW1zLmxlbmd0aCAtIGkgLSAxXTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShiYS5raW5kLCBsYXlvdXQsIG5ld19kaW1zLCBiYS5kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9raW5kXG5mdW5jdGlvbiBjYW1sX2JhX2tpbmQoYmEpIHtcbiAgcmV0dXJuIGJhLmtpbmQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbGF5b3V0XG5mdW5jdGlvbiBjYW1sX2JhX2xheW91dChiYSkge1xuICByZXR1cm4gYmEubGF5b3V0O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX251bV9kaW1zXG5mdW5jdGlvbiBjYW1sX2JhX251bV9kaW1zKGJhKSB7XG4gIHJldHVybiBiYS5kaW1zLmxlbmd0aDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9kaW1cbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9kaW0oYmEsIGkpIHtcbiAgaWYgKGkgPCAwIHx8IGkgPj0gYmEuZGltcy5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuZGltXCIpO1xuICByZXR1cm4gYmEuZGltc1tpXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9kaW1fMVxuLy9SZXF1aXJlczogY2FtbF9iYV9kaW1cbmZ1bmN0aW9uIGNhbWxfYmFfZGltXzEoYmEpIHtcbiAgcmV0dXJuIGNhbWxfYmFfZGltKGJhLCAwKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9kaW1fMlxuLy9SZXF1aXJlczogY2FtbF9iYV9kaW1cbmZ1bmN0aW9uIGNhbWxfYmFfZGltXzIoYmEpIHtcbiAgcmV0dXJuIGNhbWxfYmFfZGltKGJhLCAxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9kaW1fM1xuLy9SZXF1aXJlczogY2FtbF9iYV9kaW1cbmZ1bmN0aW9uIGNhbWxfYmFfZGltXzMoYmEpIHtcbiAgcmV0dXJuIGNhbWxfYmFfZGltKGJhLCAyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfZ2VuZXJpY1xuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2JhX2dldF9nZW5lcmljKGJhLCBpKSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoY2FtbF9qc19mcm9tX2FycmF5KGkpKTtcbiAgcmV0dXJuIGJhLmdldChvZnMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X2dldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X2dldDE2KGJhLCBpMCkge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgMSA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBiYS5nZXQob2ZzKTtcbiAgdmFyIGIyID0gYmEuZ2V0KG9mcyArIDEpO1xuICByZXR1cm4gKGIxIHwgKGIyIDw8IDgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9nZXQzMlxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9nZXQzMihiYSwgaTApIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDMgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gYmEuZ2V0KG9mcyswKTtcbiAgdmFyIGIyID0gYmEuZ2V0KG9mcysxKTtcbiAgdmFyIGIzID0gYmEuZ2V0KG9mcysyKTtcbiAgdmFyIGI0ID0gYmEuZ2V0KG9mcyszKTtcbiAgcmV0dXJuICggKGIxIDw8IDApICB8XG4gICAgICAgICAgIChiMiA8PCA4KSAgfFxuICAgICAgICAgICAoYjMgPDwgMTYpIHxcbiAgICAgICAgICAgKGI0IDw8IDI0KSApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X2dldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X2dldDY0KGJhLCBpMCkge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgNyA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBiYS5nZXQob2ZzKzApO1xuICB2YXIgYjIgPSBiYS5nZXQob2ZzKzEpO1xuICB2YXIgYjMgPSBiYS5nZXQob2ZzKzIpO1xuICB2YXIgYjQgPSBiYS5nZXQob2ZzKzMpO1xuICB2YXIgYjUgPSBiYS5nZXQob2ZzKzQpO1xuICB2YXIgYjYgPSBiYS5nZXQob2ZzKzUpO1xuICB2YXIgYjcgPSBiYS5nZXQob2ZzKzYpO1xuICB2YXIgYjggPSBiYS5nZXQob2ZzKzcpO1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyhbYjgsYjcsYjYsYjUsYjQsYjMsYjIsYjFdKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfMVxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfMShiYSwgaTApIHtcbiAgcmV0dXJuIGJhLmdldChiYS5vZmZzZXQoaTApKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfMlxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfMihiYSwgaTAsIGkxKSB7XG4gIHJldHVybiBiYS5nZXQoYmEub2Zmc2V0KFtpMCxpMV0pKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfM1xuZnVuY3Rpb24gY2FtbF9iYV9nZXRfMyhiYSwgaTAsIGkxLCBpMikge1xuICByZXR1cm4gYmEuZ2V0KGJhLm9mZnNldChbaTAsaTEsaTJdKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0X2dlbmVyaWNcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9iYV9zZXRfZ2VuZXJpYyhiYSwgaSwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KGNhbWxfanNfZnJvbV9hcnJheShpKSksIHYpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X3NldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X3NldDE2KGJhLCBpMCwgdikge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgMSA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICBiYS5zZXQob2ZzKzAsICB2ICAgICAgICAmIDB4ZmYpO1xuICBiYS5zZXQob2ZzKzEsICh2ID4+PiA4KSAmIDB4ZmYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9zZXQzMlxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9zZXQzMihiYSwgaTAsIHYpIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDMgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgYmEuc2V0KG9mcyswLCAgdiAgICAgICAgICYgMHhmZik7XG4gIGJhLnNldChvZnMrMSwgKHYgPj4+IDgpICAmIDB4ZmYpO1xuICBiYS5zZXQob2ZzKzIsICh2ID4+PiAxNikgJiAweGZmKTtcbiAgYmEuc2V0KG9mcyszLCAodiA+Pj4gMjQpICYgMHhmZik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X3NldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2ludDY0X3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X3NldDY0KGJhLCBpMCwgdikge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgNyA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgdiA9IGNhbWxfaW50NjRfdG9fYnl0ZXModik7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCA4OyBpKyspIGJhLnNldChvZnMraSwgdls3LWldKVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXRfMVxuZnVuY3Rpb24gY2FtbF9iYV9zZXRfMShiYSwgaTAsIHYpIHtcbiAgYmEuc2V0KGJhLm9mZnNldChpMCksIHYpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NldF8yXG5mdW5jdGlvbiBjYW1sX2JhX3NldF8yKGJhLCBpMCwgaTEsIHYpIHtcbiAgYmEuc2V0KGJhLm9mZnNldChbaTAsaTFdKSwgdik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NldF8zXG5mdW5jdGlvbiBjYW1sX2JhX3NldF8zKGJhLCBpMCwgaTEsIGkyLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoW2kwLGkxLGkyXSksIHYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9maWxsXG5mdW5jdGlvbiBjYW1sX2JhX2ZpbGwoYmEsIHYpIHtcbiAgYmEuZmlsbCh2KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfYmxpdFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2JsaXQoc3JjLCBkc3QpIHtcbiAgaWYgKGRzdC5kaW1zLmxlbmd0aCAhPSBzcmMuZGltcy5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuYmxpdDogZGltZW5zaW9uIG1pc21hdGNoXCIpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGRzdC5kaW1zLmxlbmd0aDsgaSsrKVxuICAgIGlmIChkc3QuZGltc1tpXSAhPSBzcmMuZGltc1tpXSlcbiAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmJsaXQ6IGRpbWVuc2lvbiBtaXNtYXRjaFwiKTtcbiAgZHN0LmRhdGEuc2V0KHNyYy5kYXRhKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc3ViXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9iYV9nZXRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuZnVuY3Rpb24gY2FtbF9iYV9zdWIoYmEsIG9mcywgbGVuKSB7XG4gIHZhciBjaGFuZ2VkX2RpbTtcbiAgdmFyIG11bCA9IDE7XG4gIGlmIChiYS5sYXlvdXQgPT0gMCkge1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKylcbiAgICAgIG11bCA9IG11bCAqIGJhLmRpbXNbaV07XG4gICAgY2hhbmdlZF9kaW0gPSAwO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgKGJhLmRpbXMubGVuZ3RoIC0gMSk7IGkrKylcbiAgICAgIG11bCA9IG11bCAqIGJhLmRpbXNbaV07XG4gICAgY2hhbmdlZF9kaW0gPSBiYS5kaW1zLmxlbmd0aCAtIDE7XG4gICAgb2ZzID0gb2ZzIC0gMTtcbiAgfVxuICBpZiAob2ZzIDwgMCB8fCBsZW4gPCAwIHx8IChvZnMgKyBsZW4pID4gYmEuZGltc1tjaGFuZ2VkX2RpbV0pe1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnN1YjogYmFkIHN1Yi1hcnJheVwiKTtcbiAgfVxuICB2YXIgbmV3X2RpbXMgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKVxuICAgIG5ld19kaW1zW2ldID0gYmEuZGltc1tpXTtcbiAgbmV3X2RpbXNbY2hhbmdlZF9kaW1dID0gbGVuO1xuICBtdWwgKj0gY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChiYS5raW5kKTtcbiAgdmFyIG5ld19kYXRhID0gYmEuZGF0YS5zdWJhcnJheShvZnMgKiBtdWwsIChvZnMgKyBsZW4pICogbXVsKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShiYS5raW5kLCBiYS5sYXlvdXQsIG5ld19kaW1zLCBuZXdfZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2xpY2Vcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheSwgY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfc2xpY2UoYmEsIHZpbmQpIHtcbiAgdmluZCA9IGNhbWxfanNfZnJvbV9hcnJheSh2aW5kKTtcbiAgdmFyIG51bV9pbmRzID0gdmluZC5sZW5ndGg7XG4gIHZhciBpbmRleCA9IFtdO1xuICB2YXIgc3ViX2RpbXMgPSBbXTtcbiAgdmFyIG9mcztcblxuICBpZiAobnVtX2luZHMgPiBiYS5kaW1zLmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5zbGljZTogdG9vIG1hbnkgaW5kaWNlc1wiKTtcblxuICAvLyBDb21wdXRlIG9mZnNldCBhbmQgY2hlY2sgYm91bmRzXG4gIGlmIChiYS5sYXlvdXQgPT0gMCkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2luZHM7IGkrKylcbiAgICAgIGluZGV4W2ldID0gdmluZFtpXTtcbiAgICBmb3IgKDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspXG4gICAgICBpbmRleFtpXSA9IDA7XG4gICAgc3ViX2RpbXMgPSBiYS5kaW1zLnNsaWNlKG51bV9pbmRzKTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9pbmRzOyBpKyspXG4gICAgICBpbmRleFtiYS5kaW1zLmxlbmd0aCAtIG51bV9pbmRzICsgaV0gPSB2aW5kW2ldO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGggLSBudW1faW5kczsgaSsrKVxuICAgICAgaW5kZXhbaV0gPSAxO1xuICAgIHN1Yl9kaW1zID0gYmEuZGltcy5zbGljZSgwLCBiYS5kaW1zLmxlbmd0aCAtIG51bV9pbmRzKTtcbiAgfVxuICBvZnMgPSBiYS5vZmZzZXQoaW5kZXgpO1xuICB2YXIgc2l6ZSA9IGNhbWxfYmFfZ2V0X3NpemUoc3ViX2RpbXMpO1xuICB2YXIgc2l6ZV9wZXJfZWxlbWVudCA9IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoYmEua2luZCk7XG4gIHZhciBuZXdfZGF0YSA9IGJhLmRhdGEuc3ViYXJyYXkob2ZzICogc2l6ZV9wZXJfZWxlbWVudCwgKG9mcyArIHNpemUpICogc2l6ZV9wZXJfZWxlbWVudCk7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmEua2luZCwgYmEubGF5b3V0LCBzdWJfZGltcywgbmV3X2RhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3Jlc2hhcGVcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheSwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfYmFfZ2V0X3NpemVcbmZ1bmN0aW9uIGNhbWxfYmFfcmVzaGFwZShiYSwgdmluZCkge1xuICB2aW5kID0gY2FtbF9qc19mcm9tX2FycmF5KHZpbmQpO1xuICB2YXIgbmV3X2RpbSA9IFtdO1xuICB2YXIgbnVtX2RpbXMgPSB2aW5kLmxlbmd0aDtcblxuICBpZiAobnVtX2RpbXMgPCAwIHx8IG51bV9kaW1zID4gMTYpe1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnJlc2hhcGU6IGJhZCBudW1iZXIgb2YgZGltZW5zaW9uc1wiKTtcbiAgfVxuICB2YXIgbnVtX2VsdHMgPSAxO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9kaW1zOyBpKyspIHtcbiAgICBuZXdfZGltW2ldID0gdmluZFtpXTtcbiAgICBpZiAobmV3X2RpbVtpXSA8IDApXG4gICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5yZXNoYXBlOiBuZWdhdGl2ZSBkaW1lbnNpb25cIik7XG4gICAgbnVtX2VsdHMgPSBudW1fZWx0cyAqIG5ld19kaW1baV07XG4gIH1cblxuICB2YXIgc2l6ZSA9IGNhbWxfYmFfZ2V0X3NpemUoYmEuZGltcyk7XG4gIC8vIENoZWNrIHRoYXQgc2l6ZXMgYWdyZWVcbiAgaWYgKG51bV9lbHRzICE9IHNpemUpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkucmVzaGFwZTogc2l6ZSBtaXNtYXRjaFwiKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShiYS5raW5kLCBiYS5sYXlvdXQsIG5ld19kaW0sIGJhLmRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NlcmlhbGl6ZVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0LCBjYW1sX2ludDY0X3RvX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXRcbmZ1bmN0aW9uIGNhbWxfYmFfc2VyaWFsaXplKHdyaXRlciwgYmEsIHN6KSB7XG4gIHdyaXRlci53cml0ZSgzMiwgYmEuZGltcy5sZW5ndGgpO1xuICB3cml0ZXIud3JpdGUoMzIsIChiYS5raW5kIHwgKGJhLmxheW91dCA8PCA4KSkpO1xuICBpZihiYS5jYW1sX2N1c3RvbSA9PSBcIl9iaWdhcnIwMlwiKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZihiYS5kaW1zW2ldIDwgMHhmZmZmKVxuICAgICAgICB3cml0ZXIud3JpdGUoMTYsIGJhLmRpbXNbaV0pO1xuICAgICAgZWxzZSB7XG4gICAgICAgIHdyaXRlci53cml0ZSgxNiwgMHhmZmZmKTtcbiAgICAgICAgd3JpdGVyLndyaXRlKDMyLCAwKTtcbiAgICAgICAgd3JpdGVyLndyaXRlKDMyLCBiYS5kaW1zW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gIGVsc2VcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKykgd3JpdGVyLndyaXRlKDMyLGJhLmRpbXNbaV0pXG4gIHN3aXRjaChiYS5raW5kKXtcbiAgY2FzZSAyOiAgLy9JbnQ4QXJyYXlcbiAgY2FzZSAzOiAgLy9VaW50OEFycmF5XG4gIGNhc2UgMTI6IC8vVWludDhBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHdyaXRlci53cml0ZSg4LCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNDogIC8vIEludDE2QXJyYXlcbiAgY2FzZSA1OiAgLy8gVWludDE2QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB3cml0ZXIud3JpdGUoMTYsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA2OiAgLy8gSW50MzJBcnJheSAoaW50MzIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgd3JpdGVyLndyaXRlKDMyLCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgODogIC8vIEludDMyQXJyYXkgKGludClcbiAgY2FzZSA5OiAgLy8gSW50MzJBcnJheSAobmF0aXZlaW50KVxuICAgIHdyaXRlci53cml0ZSg4LDApO1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgYmEuZGF0YVtpXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDc6ICAvLyBJbnQzMkFycmF5IChpbnQ2NClcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGggLyAyOyBpKyspe1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGJhLmdldChpKSk7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgd3JpdGVyLndyaXRlICg4LCBiW2pdKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTogIC8vIEZsb2F0NjRBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyhjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQoYmEuZ2V0KGkpKSk7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgd3JpdGVyLndyaXRlICg4LCBiW2pdKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMDogIC8vIEZsb2F0MzJBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHZhciBiID0gY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0KGJhLmdldChpKSk7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGIpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMDogLy8gRmxvYXQzMkFycmF5IChjb21wbGV4MzIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoIC8gMjsgaSsrKXtcbiAgICAgIHZhciBqID0gYmEuZ2V0KGkpO1xuICAgICAgd3JpdGVyLndyaXRlKDMyLCBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQoalsxXSkpO1xuICAgICAgd3JpdGVyLndyaXRlKDMyLCBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQoalsyXSkpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMTogLy8gRmxvYXQ2NEFycmF5IChjb21wbGV4NjQpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoIC8gMjsgaSsrKXtcbiAgICAgIHZhciBjb21wbGV4ID0gYmEuZ2V0KGkpO1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdChjb21wbGV4WzFdKSk7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgd3JpdGVyLndyaXRlICg4LCBiW2pdKTtcbiAgICAgIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyhjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQoY29tcGxleFsyXSkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHdyaXRlci53cml0ZSAoOCwgYltqXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICB9XG4gIHN6WzBdID0gKDQgKyBiYS5kaW1zLmxlbmd0aCkgKiA0O1xuICBzelsxXSA9ICg0ICsgYmEuZGltcy5sZW5ndGgpICogODtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9kZXNlcmlhbGl6ZVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2ZhaWx3aXRoXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2J5dGVzLCBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNcbi8vUmVxdWlyZXM6IGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0c1xuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfYnVmZmVyXG5mdW5jdGlvbiBjYW1sX2JhX2Rlc2VyaWFsaXplKHJlYWRlciwgc3osIG5hbWUpe1xuICB2YXIgbnVtX2RpbXMgPSByZWFkZXIucmVhZDMycygpO1xuICBpZiAobnVtX2RpbXMgPCAwIHx8IG51bV9kaW1zID4gMTYpXG4gICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiB3cm9uZyBudW1iZXIgb2YgYmlnYXJyYXkgZGltZW5zaW9uc1wiKTtcbiAgdmFyIHRhZyA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIHZhciBraW5kID0gdGFnICYgMHhmZlxuICB2YXIgbGF5b3V0ID0gKHRhZyA+PiA4KSAmIDE7XG4gIHZhciBkaW1zID0gW11cbiAgaWYobmFtZSA9PSBcIl9iaWdhcnIwMlwiKVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2RpbXM7IGkrKykge1xuICAgICAgdmFyIHNpemVfZGltID0gcmVhZGVyLnJlYWQxNnUoKTtcbiAgICAgIGlmKHNpemVfZGltID09IDB4ZmZmZil7XG4gICAgICAgIHZhciBzaXplX2RpbV9oaSA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgIHZhciBzaXplX2RpbV9sbyA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgIGlmKHNpemVfZGltX2hpICE9IDApXG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBiaWdhcnJheSBkaW1lbnNpb24gb3ZlcmZsb3cgaW4gMzJiaXRcIik7XG4gICAgICAgIHNpemVfZGltID0gc2l6ZV9kaW1fbG87XG4gICAgICB9XG4gICAgICBkaW1zLnB1c2goc2l6ZV9kaW0pO1xuICAgIH1cbiAgZWxzZVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2RpbXM7IGkrKykgZGltcy5wdXNoKHJlYWRlci5yZWFkMzJ1KCkpO1xuICB2YXIgc2l6ZSA9IGNhbWxfYmFfZ2V0X3NpemUoZGltcyk7XG4gIHZhciBkYXRhID0gY2FtbF9iYV9jcmVhdGVfYnVmZmVyKGtpbmQsIHNpemUpO1xuICB2YXIgYmEgPSBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcbiAgc3dpdGNoKGtpbmQpe1xuICBjYXNlIDI6ICAvL0ludDhBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkOHMoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMzogIC8vVWludDhBcnJheVxuICBjYXNlIDEyOiAvL1VpbnQ4QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDQ6ICAvLyBJbnQxNkFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQxNnMoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNTogIC8vIFVpbnQxNkFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQxNnUoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNjogIC8vIEludDMyQXJyYXkgKGludDMyKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMzJzKCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDg6ICAvLyBJbnQzMkFycmF5IChpbnQpXG4gIGNhc2UgOTogIC8vIEludDMyQXJyYXkgKG5hdGl2ZWludClcbiAgICB2YXIgc2l4dHkgPSByZWFkZXIucmVhZDh1KCk7XG4gICAgaWYoc2l4dHkpIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogY2Fubm90IHJlYWQgYmlnYXJyYXkgd2l0aCA2NC1iaXQgT0NhbWwgaW50c1wiKTtcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDMycygpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA3OiAvLyAoaW50NjQpXG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIGludDY0ID0gY2FtbF9pbnQ2NF9vZl9ieXRlcyh0KTtcbiAgICAgIGJhLnNldChpLGludDY0KTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTogIC8vIEZsb2F0NjRBcnJheVxuICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgIHZhciBmID0gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGNhbWxfaW50NjRfb2ZfYnl0ZXModCkpO1xuICAgICAgYmEuc2V0KGksZik7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDA6ICAvLyBGbG9hdDMyQXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIHZhciBmID0gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzKHJlYWRlci5yZWFkMzJzKCkpO1xuICAgICAgYmEuc2V0KGksZik7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDEwOiAvLyBGbG9hdDMyQXJyYXkgKGNvbXBsZXgzMilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIHZhciByZSA9IGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyhyZWFkZXIucmVhZDMycygpKTtcbiAgICAgIHZhciBpbSA9IGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyhyZWFkZXIucmVhZDMycygpKTtcbiAgICAgIGJhLnNldChpLFsyNTQscmUsaW1dKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTE6IC8vIEZsb2F0NjRBcnJheSAoY29tcGxleDY0KVxuICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgIHZhciByZSA9IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyhjYW1sX2ludDY0X29mX2J5dGVzKHQpKTtcbiAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgIHZhciBpbSA9IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyhjYW1sX2ludDY0X29mX2J5dGVzKHQpKTtcbiAgICAgIGJhLnNldChpLFsyNTQscmUsaW1dKTtcbiAgICB9XG4gICAgYnJlYWtcbiAgfVxuICBzelswXSA9ICg0ICsgbnVtX2RpbXMpICogNDtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xufVxuXG4vL0RlcHJlY2F0ZWRcbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3JlYXRlX2Zyb21cbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2NyZWF0ZV9mcm9tKGRhdGExLCBkYXRhMiwganN0eXAsIGtpbmQsIGxheW91dCwgZGltcyl7XG4gIGlmKGRhdGEyIHx8IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoa2luZCkgPT0gMil7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iYV9jcmVhdGVfZnJvbTogdXNlIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcIik7XG4gIH1cbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGExKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9oYXNoIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplLCBjYW1sX2hhc2hfbWl4X2ludCwgY2FtbF9oYXNoX21peF9mbG9hdFxuZnVuY3Rpb24gY2FtbF9iYV9oYXNoKGJhKXtcbiAgdmFyIG51bV9lbHRzID0gY2FtbF9iYV9nZXRfc2l6ZShiYS5kaW1zKTtcbiAgdmFyIGggPSAwO1xuICBzd2l0Y2goYmEua2luZCl7XG4gIGNhc2UgMjogIC8vSW50OEFycmF5XG4gIGNhc2UgMzogIC8vVWludDhBcnJheVxuICBjYXNlIDEyOiAvL1VpbnQ4QXJyYXlcbiAgICBpZihudW1fZWx0cyA+IDI1NikgbnVtX2VsdHMgPSAyNTY7XG4gICAgdmFyIHcgPSAwLCBpID0wO1xuICAgIGZvcihpID0gMDsgaSArIDQgPD0gYmEuZGF0YS5sZW5ndGg7IGkrPTQpe1xuICAgICAgdyA9IGJhLmRhdGFbaSswXSB8IChiYS5kYXRhW2krMV0gPDwgOCkgfCAoYmEuZGF0YVtpKzJdIDw8IDE2KSB8IChiYS5kYXRhW2krM10gPDwgMjQpO1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsdyk7XG4gICAgfVxuICAgIHcgPSAwO1xuICAgIHN3aXRjaCAobnVtX2VsdHMgJiAzKSB7XG4gICAgY2FzZSAzOiB3ICA9IGJhLmRhdGFbaSsyXSA8PCAxNjsgICAgLyogZmFsbHRocm91Z2ggKi9cbiAgICBjYXNlIDI6IHcgfD0gYmEuZGF0YVtpKzFdIDw8IDg7ICAgICAvKiBmYWxsdGhyb3VnaCAqL1xuICAgIGNhc2UgMTogdyB8PSBiYS5kYXRhW2krMF07XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDQ6ICAvLyBJbnQxNkFycmF5XG4gIGNhc2UgNTogIC8vIFVpbnQxNkFycmF5XG4gICAgaWYobnVtX2VsdHMgPiAxMjgpIG51bV9lbHRzID0gMTI4O1xuICAgIHZhciB3ID0gMCwgaSA9MDtcbiAgICBmb3IoaSA9IDA7IGkgKyAyIDw9IGJhLmRhdGEubGVuZ3RoOyBpKz0yKXtcbiAgICAgIHcgPSBiYS5kYXRhW2krMF0gfCAoYmEuZGF0YVtpKzFdIDw8IDE2KTtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLHcpO1xuICAgIH1cbiAgICBpZiAoKG51bV9lbHRzICYgMSkgIT0gMClcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgY2FzZSA2OiAgLy8gSW50MzJBcnJheSAoaW50MzIpXG4gICAgaWYgKG51bV9lbHRzID4gNjQpIG51bV9lbHRzID0gNjQ7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgYmEuZGF0YVtpXSk7XG4gICAgYnJlYWs7XG4gIGNhc2UgODogIC8vIEludDMyQXJyYXkgKGludClcbiAgY2FzZSA5OiAgLy8gSW50MzJBcnJheSAobmF0aXZlaW50KVxuICAgIGlmIChudW1fZWx0cyA+IDY0KSBudW1fZWx0cyA9IDY0O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICBjYXNlIDc6ICAvLyBJbnQzMkFycmF5IChpbnQ2NClcbiAgICBpZiAobnVtX2VsdHMgPiAzMikgbnVtX2VsdHMgPSAzMjtcbiAgICBudW1fZWx0cyAqPSAyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgYmEuZGF0YVtpXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDEwOiAvLyBGbG9hdDMyQXJyYXkgKGNvbXBsZXgzMilcbiAgICBudW1fZWx0cyAqPTI7IC8qIGZhbGx0aHJvdWdoICovXG4gIGNhc2UgMDogIC8vIEZsb2F0MzJBcnJheVxuICAgIGlmIChudW1fZWx0cyA+IDY0KSBudW1fZWx0cyA9IDY0O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykgaCA9IGNhbWxfaGFzaF9taXhfZmxvYXQoaCwgYmEuZGF0YVtpXSk7XG4gICAgYnJlYWs7XG4gIGNhc2UgMTE6IC8vIEZsb2F0NjRBcnJheSAoY29tcGxleDY0KVxuICAgIG51bV9lbHRzICo9MjsgLyogZmFsbHRocm91Z2ggKi9cbiAgY2FzZSAxOiAgLy8gRmxvYXQ2NEFycmF5XG4gICAgaWYgKG51bV9lbHRzID4gMzIpIG51bV9lbHRzID0gMzI7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9mbG9hdChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgfVxuICByZXR1cm4gaDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV90b190eXBlZF9hcnJheSBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5KGJhKXtcbiAgcmV0dXJuIGJhLmRhdGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheSh0YSl7XG4gIHZhciBnID0gZ2xvYmFsVGhpcztcbiAgdmFyIGtpbmQ7XG4gIGlmICh0YSBpbnN0YW5jZW9mIGcuRmxvYXQzMkFycmF5KSBraW5kID0gMDtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBnLkZsb2F0NjRBcnJheSkga2luZCA9IDE7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgZy5JbnQ4QXJyYXkpIGtpbmQgPSAyO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIGcuVWludDhBcnJheSkga2luZCA9IDM7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgZy5JbnQxNkFycmF5KSBraW5kID0gNDtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBnLlVpbnQxNkFycmF5KSBraW5kID0gNTtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBnLkludDMyQXJyYXkpIGtpbmQgPSA2O1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIGcuVWludDMyQXJyYXkpIGtpbmQgPSA2O1xuICBlbHNlIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheTogdW5zdXBwb3J0ZWQga2luZFwiKTtcbiAgcmV0dXJuIGtpbmQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZnJvbV90eXBlZF9hcnJheSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5KHRhKXtcbiAgdmFyIGtpbmQgPSBjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkodGEpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIDAsIFt0YS5sZW5ndGhdLCB0YSk7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBsaWJyYXJ5XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSnNsaWJcblxuLy9Qcm92aWRlczogY2FtbF9qc19wdXJlX2V4cHIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfanNfcHVyZV9leHByIChmKSB7IHJldHVybiBmKCk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19zZXQgKG11dGFibGUsIGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfc2V0KG8sZix2KSB7IG9bZl09djtyZXR1cm4gMH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfZ2V0IG11dGFibGUgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfZ2V0KG8sZikgeyByZXR1cm4gb1tmXTsgfVxuLy9Qcm92aWRlczogY2FtbF9qc19kZWxldGUgKG11dGFibGUsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19kZWxldGUobyxmKSB7IGRlbGV0ZSBvW2ZdOyByZXR1cm4gMH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19pbnN0YW5jZW9mIChjb25zdCwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2luc3RhbmNlb2YobyxjKSB7IHJldHVybiAobyBpbnN0YW5jZW9mIGMpID8gMSA6IDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc190eXBlb2YgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc190eXBlb2YobykgeyByZXR1cm4gdHlwZW9mIG87IH1cblxuLy9Qcm92aWRlczpjYW1sX3RyYW1wb2xpbmVcbmZ1bmN0aW9uIGNhbWxfdHJhbXBvbGluZShyZXMpIHtcbiAgdmFyIGMgPSAxO1xuICB3aGlsZShyZXMgJiYgcmVzLmpvb190cmFtcCl7XG4gICAgcmVzID0gcmVzLmpvb190cmFtcC5hcHBseShudWxsLCByZXMuam9vX2FyZ3MpO1xuICAgIGMrKztcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOmNhbWxfdHJhbXBvbGluZV9yZXR1cm5cbmZ1bmN0aW9uIGNhbWxfdHJhbXBvbGluZV9yZXR1cm4oZixhcmdzKSB7XG4gIHJldHVybiB7am9vX3RyYW1wOmYsam9vX2FyZ3M6YXJnc307XG59XG5cbi8vUHJvdmlkZXM6IGpzX3ByaW50X3N0ZG91dCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3V0ZjE2X29mX3V0ZjhcbmZ1bmN0aW9uIGpzX3ByaW50X3N0ZG91dChzKSB7XG4gIHZhciBzID0gY2FtbF91dGYxNl9vZl91dGY4KHMpO1xuICB2YXIgZyA9IGdsb2JhbFRoaXM7XG4gIGlmIChnLnByb2Nlc3MgJiYgZy5wcm9jZXNzLnN0ZG91dCAmJiBnLnByb2Nlc3Muc3Rkb3V0LndyaXRlKSB7XG4gICAgZy5wcm9jZXNzLnN0ZG91dC53cml0ZShzKVxuICB9IGVsc2Uge1xuICAgIC8vIERvIG5vdCBvdXRwdXQgdGhlIGxhc3QgXFxuIGlmIHByZXNlbnRcbiAgICAvLyBhcyBjb25zb2xlIGxvZ2dpbmcgZGlzcGxheSBhIG5ld2xpbmUgYXQgdGhlIGVuZFxuICAgIGlmKHMuY2hhckNvZGVBdChzLmxlbmd0aCAtIDEpID09IDEwKVxuICAgICAgcyA9IHMuc3Vic3RyKDAscy5sZW5ndGggLSAxICk7XG4gICAgdmFyIHYgPSBnLmNvbnNvbGU7XG4gICAgdiAgJiYgdi5sb2cgJiYgdi5sb2cocyk7XG4gIH1cbn1cbi8vUHJvdmlkZXM6IGpzX3ByaW50X3N0ZGVyciAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3V0ZjE2X29mX3V0ZjhcbmZ1bmN0aW9uIGpzX3ByaW50X3N0ZGVycihzKSB7XG4gIHZhciBzID0gY2FtbF91dGYxNl9vZl91dGY4KHMpO1xuICB2YXIgZyA9IGdsb2JhbFRoaXM7XG4gIGlmIChnLnByb2Nlc3MgJiYgZy5wcm9jZXNzLnN0ZG91dCAmJiBnLnByb2Nlc3Muc3Rkb3V0LndyaXRlKSB7XG4gICAgZy5wcm9jZXNzLnN0ZGVyci53cml0ZShzKVxuICB9IGVsc2Uge1xuICAgIC8vIERvIG5vdCBvdXRwdXQgdGhlIGxhc3QgXFxuIGlmIHByZXNlbnRcbiAgICAvLyBhcyBjb25zb2xlIGxvZ2dpbmcgZGlzcGxheSBhIG5ld2xpbmUgYXQgdGhlIGVuZFxuICAgIGlmKHMuY2hhckNvZGVBdChzLmxlbmd0aCAtIDEpID09IDEwKVxuICAgICAgcyA9IHMuc3Vic3RyKDAscy5sZW5ndGggLSAxICk7XG4gICAgdmFyIHYgPSBnLmNvbnNvbGU7XG4gICAgdiAmJiB2LmVycm9yICYmIHYuZXJyb3Iocyk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19qc1xuZnVuY3Rpb24gY2FtbF9pc19qcygpIHtcbiAgcmV0dXJuIDE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfd3JhcF9leGNlcHRpb24gY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YSxjYW1sX3N0cmluZ19vZl9qc3N0cmluZyxjYW1sX25hbWVkX3ZhbHVlXG4vL1JlcXVpcmVzOiBjYW1sX3JldHVybl9leG5fY29uc3RhbnRcbmZ1bmN0aW9uIGNhbWxfd3JhcF9leGNlcHRpb24oZSkge1xuICBpZihlIGluc3RhbmNlb2YgQXJyYXkpIHJldHVybiBlO1xuICAvL1N0YWNrX292ZXJmbG93OiBjaHJvbWUsIHNhZmFyaVxuICBpZihnbG9iYWxUaGlzLlJhbmdlRXJyb3JcbiAgICAgJiYgZSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuUmFuZ2VFcnJvclxuICAgICAmJiBlLm1lc3NhZ2VcbiAgICAgJiYgZS5tZXNzYWdlLm1hdGNoKC9tYXhpbXVtIGNhbGwgc3RhY2svaSkpXG4gICAgcmV0dXJuIGNhbWxfcmV0dXJuX2V4bl9jb25zdGFudChjYW1sX2dsb2JhbF9kYXRhLlN0YWNrX292ZXJmbG93KTtcbiAgLy9TdGFja19vdmVyZmxvdzogZmlyZWZveFxuICBpZihnbG9iYWxUaGlzLkludGVybmFsRXJyb3JcbiAgICAgJiYgZSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuSW50ZXJuYWxFcnJvclxuICAgICAmJiBlLm1lc3NhZ2VcbiAgICAgJiYgZS5tZXNzYWdlLm1hdGNoKC90b28gbXVjaCByZWN1cnNpb24vaSkpXG4gICAgcmV0dXJuIGNhbWxfcmV0dXJuX2V4bl9jb25zdGFudChjYW1sX2dsb2JhbF9kYXRhLlN0YWNrX292ZXJmbG93KTtcbiAgLy9XcmFwIEVycm9yIGluIEpzLkVycm9yIGV4Y2VwdGlvblxuICBpZihlIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5FcnJvciAmJiBjYW1sX25hbWVkX3ZhbHVlKFwianNFcnJvclwiKSlcbiAgICByZXR1cm4gWzAsY2FtbF9uYW1lZF92YWx1ZShcImpzRXJyb3JcIiksZV07XG4gIC8vZmFsbGJhY2s6IHdyYXBwZWQgaW4gRmFpbHVyZVxuICByZXR1cm4gWzAsY2FtbF9nbG9iYWxfZGF0YS5GYWlsdXJlLGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChTdHJpbmcoZSkpXTtcbn1cblxuLy8gRXhwZXJpbWVudGFsXG4vL1Byb3ZpZGVzOiBjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2UoZXhuLCBmb3JjZSkge1xuICAvL25ldmVyIHJlcmFpc2UgZm9yIGNvbnN0YW50IGV4blxuICBpZighZXhuLmpzX2Vycm9yIHx8IGZvcmNlIHx8IGV4blswXSA9PSAyNDgpIGV4bi5qc19lcnJvciA9IG5ldyBnbG9iYWxUaGlzLkVycm9yKFwiSnMgZXhjZXB0aW9uIGNvbnRhaW5pbmcgYmFja3RyYWNlXCIpO1xuICByZXR1cm4gZXhuO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXJyb3Jfb3B0aW9uX29mX2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uKGV4bikge1xuICBpZihleG4uanNfZXJyb3IpIHsgcmV0dXJuIFswLCBleG4uanNfZXJyb3JdOyB9XG4gIHJldHVybiAwO1xufVxuXG5cblxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX2Jvb2wgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19mcm9tX2Jvb2woeCkgeyByZXR1cm4gISF4OyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2Jvb2wgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc190b19ib29sKHgpIHsgcmV0dXJuICt4OyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Zyb21fZmxvYXQgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19mcm9tX2Zsb2F0KHgpIHsgcmV0dXJuIHg7IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fZmxvYXQgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc190b19mbG9hdCh4KSB7IHJldHVybiB4OyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9hcnJheSBtdXRhYmxlIChzaGFsbG93KVxuZnVuY3Rpb24gY2FtbF9qc19mcm9tX2FycmF5KGEpIHtcbiAgcmV0dXJuIGEuc2xpY2UoMSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2FycmF5IG11dGFibGUgKHNoYWxsb3cpXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2FycmF5KGEpIHtcbiAgdmFyIGxlbiA9IGEubGVuZ3RoO1xuICB2YXIgYiA9IG5ldyBBcnJheShsZW4rMSk7XG4gIGJbMF0gPSAwO1xuICBmb3IodmFyIGk9MDtpPGxlbjtpKyspIGJbaSsxXSA9IGFbaV07XG4gIHJldHVybiBiO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xpc3Rfb2ZfanNfYXJyYXkgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9saXN0X29mX2pzX2FycmF5KGEpe1xuICB2YXIgbCA9IDA7XG4gIGZvcih2YXIgaT1hLmxlbmd0aCAtIDE7IGk+PTA7IGktLSl7XG4gICAgdmFyIGUgPSBhW2ldO1xuICAgIGwgPSBbMCxlLGxdO1xuICB9XG4gIHJldHVybiBsXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGlzdF90b19qc19hcnJheSBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2xpc3RfdG9fanNfYXJyYXkobCl7XG4gIHZhciBhID0gW107XG4gIGZvcig7IGwgIT09IDA7IGwgPSBsWzJdKSB7XG4gICAgYS5wdXNoKGxbMV0pO1xuICB9XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3ZhciBtdXRhYmxlIChjb25zdClcbi8vUmVxdWlyZXM6IGpzX3ByaW50X3N0ZGVyclxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfdmFyKHgpIHtcbiAgdmFyIHggPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyh4KTtcbiAgLy9DaGVja3MgdGhhdCB4IGhhcyB0aGUgZm9ybSBpZGVudFsuaWRlbnRdKlxuICBpZigheC5tYXRjaCgvXlthLXpBLVpfJF1bYS16QS1aXyQwLTldKihcXC5bYS16QS1aXyRdW2EtekEtWl8kMC05XSopKiQvKSl7XG4gICAganNfcHJpbnRfc3RkZXJyKFwiY2FtbF9qc192YXI6IFxcXCJcIiArIHggKyBcIlxcXCIgaXMgbm90IGEgdmFsaWQgSmF2YVNjcmlwdCB2YXJpYWJsZS4gY29udGludWluZyAuLlwiKTtcbiAgICAvL2dsb2JhbFRoaXMuY29uc29sZS5lcnJvcihcIkpzLlVuc2FmZS5ldmFsX3N0cmluZ1wiKVxuICB9XG4gIHJldHVybiBldmFsKHgpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc19jYWxsIChjb25zdCwgbXV0YWJsZSwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19jYWxsKGYsIG8sIGFyZ3MpIHsgcmV0dXJuIGYuYXBwbHkobywgY2FtbF9qc19mcm9tX2FycmF5KGFyZ3MpKTsgfVxuLy9Qcm92aWRlczogY2FtbF9qc19mdW5fY2FsbCAoY29uc3QsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfanNfZnVuX2NhbGwoZiwgYSkge1xuICBzd2l0Y2ggKGEubGVuZ3RoKSB7XG4gIGNhc2UgMTogcmV0dXJuIGYoKTtcbiAgY2FzZSAyOiByZXR1cm4gZiAoYVsxXSk7XG4gIGNhc2UgMzogcmV0dXJuIGYgKGFbMV0sYVsyXSk7XG4gIGNhc2UgNDogcmV0dXJuIGYgKGFbMV0sYVsyXSxhWzNdKTtcbiAgY2FzZSA1OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10sYVs0XSk7XG4gIGNhc2UgNjogcmV0dXJuIGYgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSk7XG4gIGNhc2UgNzogcmV0dXJuIGYgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdKTtcbiAgY2FzZSA4OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0sYVs3XSk7XG4gIH1cbiAgcmV0dXJuIGYuYXBwbHkobnVsbCwgY2FtbF9qc19mcm9tX2FycmF5KGEpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfbWV0aF9jYWxsIChtdXRhYmxlLCBjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfanNfbWV0aF9jYWxsKG8sIGYsIGFyZ3MpIHtcbiAgcmV0dXJuIG9bY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoZildLmFwcGx5KG8sIGNhbWxfanNfZnJvbV9hcnJheShhcmdzKSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX25ldyAoY29uc3QsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfanNfbmV3KGMsIGEpIHtcbiAgc3dpdGNoIChhLmxlbmd0aCkge1xuICBjYXNlIDE6IHJldHVybiBuZXcgYztcbiAgY2FzZSAyOiByZXR1cm4gbmV3IGMgKGFbMV0pO1xuICBjYXNlIDM6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdKTtcbiAgY2FzZSA0OiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSxhWzNdKTtcbiAgY2FzZSA1OiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSxhWzNdLGFbNF0pO1xuICBjYXNlIDY6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdKTtcbiAgY2FzZSA3OiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdKTtcbiAgY2FzZSA4OiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdLGFbN10pO1xuICB9XG4gIGZ1bmN0aW9uIEYoKSB7IHJldHVybiBjLmFwcGx5KHRoaXMsIGNhbWxfanNfZnJvbV9hcnJheShhKSk7IH1cbiAgRi5wcm90b3R5cGUgPSBjLnByb3RvdHlwZTtcbiAgcmV0dXJuIG5ldyBGO1xufVxuLy9Qcm92aWRlczogY2FtbF9vanNfbmV3X2FyciAoY29uc3QsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfb2pzX25ld19hcnIoYywgYSkge1xuICBzd2l0Y2ggKGEubGVuZ3RoKSB7XG4gIGNhc2UgMDogcmV0dXJuIG5ldyBjO1xuICBjYXNlIDE6IHJldHVybiBuZXcgYyAoYVswXSk7XG4gIGNhc2UgMjogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0pO1xuICBjYXNlIDM6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdLGFbMl0pO1xuICBjYXNlIDQ6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdLGFbMl0sYVszXSk7XG4gIGNhc2UgNTogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdLGFbNF0pO1xuICBjYXNlIDY6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0pO1xuICBjYXNlIDc6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSk7XG4gIH1cbiAgZnVuY3Rpb24gRigpIHsgcmV0dXJuIGMuYXBwbHkodGhpcywgYSk7IH1cbiAgRi5wcm90b3R5cGUgPSBjLnByb3RvdHlwZTtcbiAgcmV0dXJuIG5ldyBGO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbF9nZW5cbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9jYWxsYmFjayhmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgaWYobGVuID4gMCl7XG4gICAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4pO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGYsIGFyZ3MpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihmLCBbdW5kZWZpbmVkXSk7XG4gICAgfVxuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHNcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbF9nZW5cbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHMoZikge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGYsIFthcmdzXSk7XG4gIH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3QgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbF9nZW5cbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3QoYXJpdHksIGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgaWYobiA9PSBhcml0eSAmJiBmLmxlbmd0aCA9PSBhcml0eSkgcmV0dXJuIGYuYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcml0eSk7XG4gICAgdmFyIGxlbiA9IE1hdGgubWluKGFyZ3VtZW50cy5sZW5ndGgsIGFyaXR5KVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZiwgYXJncyk7XG4gIH07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFjayBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxfZ2VuXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFjayhmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuICsgMSk7XG4gICAgYXJnc1swXSA9IHRoaXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpKzFdID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGYsYXJncyk7XG4gIH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50cyBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxfZ2VuXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHMoZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihmLFt0aGlzLGFyZ3NdKTtcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxfZ2VuXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3QoYXJpdHksIGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcml0eSArIDEpO1xuICAgIHZhciBsZW4gPSBNYXRoLm1pbihhcmd1bWVudHMubGVuZ3RoLCBhcml0eSlcbiAgICBhcmdzWzBdID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2krMV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZiwgYXJncyk7XG4gIH07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja191bnNhZmUgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsX2dlblxuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4gKyAxKTtcbiAgICBhcmdzWzBdID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2krMV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgYXJncyk7IH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXF1YWxzIG11dGFibGUgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfZXF1YWxzICh4LCB5KSB7IHJldHVybiArKHggPT0geSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19ldmFsX3N0cmluZyAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc19ldmFsX3N0cmluZyAocykge3JldHVybiBldmFsKGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpKTt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXhwciAoY29uc3QpXG4vL1JlcXVpcmVzOiBqc19wcmludF9zdGRlcnJcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX2V4cHIocykge1xuICBqc19wcmludF9zdGRlcnIoXCJjYW1sX2pzX2V4cHI6IGZhbGxiYWNrIHRvIHJ1bnRpbWUgZXZhbHVhdGlvblxcblwiKTtcbiAgcmV0dXJuIGV2YWwoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocykpO31cblxuLy9Qcm92aWRlczogY2FtbF9wdXJlX2pzX2V4cHIgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczoganNfcHJpbnRfc3RkZXJyXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9wdXJlX2pzX2V4cHIgKHMpe1xuICBqc19wcmludF9zdGRlcnIoXCJjYW1sX3B1cmVfanNfZXhwcjogZmFsbGJhY2sgdG8gcnVudGltZSBldmFsdWF0aW9uXFxuXCIpO1xuICByZXR1cm4gZXZhbChjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKSk7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX29iamVjdCAob2JqZWN0X2xpdGVyYWwpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc19vYmplY3QgKGEpIHtcbiAgdmFyIG8gPSB7fTtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHAgPSBhW2ldO1xuICAgIG9bY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocFsxXSldID0gcFsyXTtcbiAgfVxuICByZXR1cm4gbztcbn1cbiIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKi9cbi8qICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKi9cbi8qICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgd2l0aCAgICAgKi9cbi8qICB0aGUgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gZmlsZSAuLi9MSUNFTlNFLiAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyogJElkOiBwYXJzaW5nLmMgODk4MyAyMDA4LTA4LTA2IDA5OjM4OjI1WiB4bGVyb3kgJCAqL1xuXG4vKiBUaGUgUERBIGF1dG9tYXRvbiBmb3IgcGFyc2VycyBnZW5lcmF0ZWQgYnkgY2FtbHlhY2MgKi9cblxuLyogVGhlIHB1c2hkb3duIGF1dG9tYXRhICovXG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2VfZW5naW5lXG4vL1JlcXVpcmVzOiBjYW1sX2xleF9hcnJheVxuZnVuY3Rpb24gY2FtbF9wYXJzZV9lbmdpbmUodGFibGVzLCBlbnYsIGNtZCwgYXJnKVxue1xuICB2YXIgRVJSQ09ERSA9IDI1NjtcblxuICAvL3ZhciBTVEFSVCA9IDA7XG4gIC8vdmFyIFRPS0VOX1JFQUQgPSAxO1xuICAvL3ZhciBTVEFDS1NfR1JPV05fMSA9IDI7XG4gIC8vdmFyIFNUQUNLU19HUk9XTl8yID0gMztcbiAgLy92YXIgU0VNQU5USUNfQUNUSU9OX0NPTVBVVEVEID0gNDtcbiAgLy92YXIgRVJST1JfREVURUNURUQgPSA1O1xuICB2YXIgbG9vcCA9IDY7XG4gIHZhciB0ZXN0c2hpZnQgPSA3O1xuICB2YXIgc2hpZnQgPSA4O1xuICB2YXIgc2hpZnRfcmVjb3ZlciA9IDk7XG4gIHZhciByZWR1Y2UgPSAxMDtcblxuICB2YXIgUkVBRF9UT0tFTiA9IDA7XG4gIHZhciBSQUlTRV9QQVJTRV9FUlJPUiA9IDE7XG4gIHZhciBHUk9XX1NUQUNLU18xID0gMjtcbiAgdmFyIEdST1dfU1RBQ0tTXzIgPSAzO1xuICB2YXIgQ09NUFVURV9TRU1BTlRJQ19BQ1RJT04gPSA0O1xuICB2YXIgQ0FMTF9FUlJPUl9GVU5DVElPTiA9IDU7XG5cbiAgdmFyIGVudl9zX3N0YWNrID0gMTtcbiAgdmFyIGVudl92X3N0YWNrID0gMjtcbiAgdmFyIGVudl9zeW1iX3N0YXJ0X3N0YWNrID0gMztcbiAgdmFyIGVudl9zeW1iX2VuZF9zdGFjayA9IDQ7XG4gIHZhciBlbnZfc3RhY2tzaXplID0gNTtcbiAgdmFyIGVudl9zdGFja2Jhc2UgPSA2O1xuICB2YXIgZW52X2N1cnJfY2hhciA9IDc7XG4gIHZhciBlbnZfbHZhbCA9IDg7XG4gIHZhciBlbnZfc3ltYl9zdGFydCA9IDk7XG4gIHZhciBlbnZfc3ltYl9lbmQgPSAxMDtcbiAgdmFyIGVudl9hc3AgPSAxMTtcbiAgdmFyIGVudl9ydWxlX2xlbiA9IDEyO1xuICB2YXIgZW52X3J1bGVfbnVtYmVyID0gMTM7XG4gIHZhciBlbnZfc3AgPSAxNDtcbiAgdmFyIGVudl9zdGF0ZSA9IDE1O1xuICB2YXIgZW52X2VycmZsYWcgPSAxNjtcblxuICAvLyB2YXIgX3RibF9hY3Rpb25zID0gMTtcbiAgdmFyIHRibF90cmFuc2xfY29uc3QgPSAyO1xuICB2YXIgdGJsX3RyYW5zbF9ibG9jayA9IDM7XG4gIHZhciB0YmxfbGhzID0gNDtcbiAgdmFyIHRibF9sZW4gPSA1O1xuICB2YXIgdGJsX2RlZnJlZCA9IDY7XG4gIHZhciB0YmxfZGdvdG8gPSA3O1xuICB2YXIgdGJsX3NpbmRleCA9IDg7XG4gIHZhciB0YmxfcmluZGV4ID0gOTtcbiAgdmFyIHRibF9naW5kZXggPSAxMDtcbiAgdmFyIHRibF90YWJsZXNpemUgPSAxMTtcbiAgdmFyIHRibF90YWJsZSA9IDEyO1xuICB2YXIgdGJsX2NoZWNrID0gMTM7XG4gIC8vIHZhciBfdGJsX2Vycm9yX2Z1bmN0aW9uID0gMTQ7XG4gIC8vIHZhciBfdGJsX25hbWVzX2NvbnN0ID0gMTU7XG4gIC8vIHZhciBfdGJsX25hbWVzX2Jsb2NrID0gMTY7XG5cbiAgaWYgKCF0YWJsZXMuZGdvdG8pIHtcbiAgICB0YWJsZXMuZGVmcmVkID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfZGVmcmVkXSk7XG4gICAgdGFibGVzLnNpbmRleCA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX3NpbmRleF0pO1xuICAgIHRhYmxlcy5jaGVjayAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9jaGVja10pO1xuICAgIHRhYmxlcy5yaW5kZXggPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9yaW5kZXhdKTtcbiAgICB0YWJsZXMudGFibGUgID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfdGFibGVdKTtcbiAgICB0YWJsZXMubGVuICAgID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfbGVuXSk7XG4gICAgdGFibGVzLmxocyAgICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2xoc10pO1xuICAgIHRhYmxlcy5naW5kZXggPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9naW5kZXhdKTtcbiAgICB0YWJsZXMuZGdvdG8gID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfZGdvdG9dKTtcbiAgfVxuXG4gIHZhciByZXMgPSAwLCBuLCBuMSwgbjIsIHN0YXRlMTtcblxuICAvLyBSRVNUT1JFXG4gIHZhciBzcCA9IGVudltlbnZfc3BdO1xuICB2YXIgc3RhdGUgPSBlbnZbZW52X3N0YXRlXTtcbiAgdmFyIGVycmZsYWcgPSBlbnZbZW52X2VycmZsYWddO1xuXG4gIGV4aXQ6Zm9yICg7Oykge1xuICAgIHN3aXRjaChjbWQpIHtcbiAgICBjYXNlIDA6Ly9TVEFSVDpcbiAgICAgIHN0YXRlID0gMDtcbiAgICAgIGVycmZsYWcgPSAwO1xuICAgICAgLy8gRmFsbCB0aHJvdWdoXG5cbiAgICBjYXNlIDY6Ly9sb29wOlxuICAgICAgbiA9IHRhYmxlcy5kZWZyZWRbc3RhdGVdO1xuICAgICAgaWYgKG4gIT0gMCkgeyBjbWQgPSByZWR1Y2U7IGJyZWFrOyB9XG4gICAgICBpZiAoZW52W2Vudl9jdXJyX2NoYXJdID49IDApIHsgY21kID0gdGVzdHNoaWZ0OyBicmVhazsgfVxuICAgICAgcmVzID0gUkVBRF9UT0tFTjtcbiAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgbGV4ZXIgYW5kIHVwZGF0ZXMgKi9cbiAgICAgIC8qIHN5bWJfc3RhcnQgYW5kIHN5bWJfZW5kICovXG4gICAgY2FzZSAxOi8vVE9LRU5fUkVBRDpcbiAgICAgIGlmIChhcmcgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSB0YWJsZXNbdGJsX3RyYW5zbF9ibG9ja11bYXJnWzBdICsgMV07XG4gICAgICAgIGVudltlbnZfbHZhbF0gPSBhcmdbMV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSB0YWJsZXNbdGJsX3RyYW5zbF9jb25zdF1bYXJnICsgMV07XG4gICAgICAgIGVudltlbnZfbHZhbF0gPSAwO1xuICAgICAgfVxuICAgICAgLy8gRmFsbCB0aHJvdWdoXG5cbiAgICBjYXNlIDc6Ly90ZXN0c2hpZnQ6XG4gICAgICBuMSA9IHRhYmxlcy5zaW5kZXhbc3RhdGVdO1xuICAgICAgbjIgPSBuMSArIGVudltlbnZfY3Vycl9jaGFyXTtcbiAgICAgIGlmIChuMSAhPSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PSBlbnZbZW52X2N1cnJfY2hhcl0pIHtcbiAgICAgICAgY21kID0gc2hpZnQ7IGJyZWFrO1xuICAgICAgfVxuICAgICAgbjEgPSB0YWJsZXMucmluZGV4W3N0YXRlXTtcbiAgICAgIG4yID0gbjEgKyBlbnZbZW52X2N1cnJfY2hhcl07XG4gICAgICBpZiAobjEgIT0gMCAmJiBuMiA+PSAwICYmIG4yIDw9IHRhYmxlc1t0YmxfdGFibGVzaXplXSAmJlxuICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT0gZW52W2Vudl9jdXJyX2NoYXJdKSB7XG4gICAgICAgIG4gPSB0YWJsZXMudGFibGVbbjJdO1xuICAgICAgICBjbWQgPSByZWR1Y2U7IGJyZWFrO1xuICAgICAgfVxuICAgICAgaWYgKGVycmZsYWcgPD0gMCkge1xuICAgICAgICByZXMgPSBDQUxMX0VSUk9SX0ZVTkNUSU9OO1xuICAgICAgICBicmVhayBleGl0O1xuICAgICAgfVxuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgZXJyb3IgZnVuY3Rpb24gKi9cbiAgICBjYXNlIDU6Ly9FUlJPUl9ERVRFQ1RFRDpcbiAgICAgIGlmIChlcnJmbGFnIDwgMykge1xuICAgICAgICBlcnJmbGFnID0gMztcbiAgICAgICAgZm9yICg7Oykge1xuICAgICAgICAgIHN0YXRlMSA9IGVudltlbnZfc19zdGFja11bc3AgKyAxXTtcbiAgICAgICAgICBuMSA9IHRhYmxlcy5zaW5kZXhbc3RhdGUxXTtcbiAgICAgICAgICBuMiA9IG4xICsgRVJSQ09ERTtcbiAgICAgICAgICBpZiAobjEgIT0gMCAmJiBuMiA+PSAwICYmIG4yIDw9IHRhYmxlc1t0YmxfdGFibGVzaXplXSAmJlxuICAgICAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09IEVSUkNPREUpIHtcbiAgICAgICAgICAgIGNtZCA9IHNoaWZ0X3JlY292ZXI7IGJyZWFrO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoc3AgPD0gZW52W2Vudl9zdGFja2Jhc2VdKSByZXR1cm4gUkFJU0VfUEFSU0VfRVJST1I7XG4gICAgICAgICAgICAvKiBUaGUgTUwgY29kZSByYWlzZXMgUGFyc2VfZXJyb3IgKi9cbiAgICAgICAgICAgIHNwLS07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZW52W2Vudl9jdXJyX2NoYXJdID09IDApIHJldHVybiBSQUlTRV9QQVJTRV9FUlJPUjtcbiAgICAgICAgLyogVGhlIE1MIGNvZGUgcmFpc2VzIFBhcnNlX2Vycm9yICovXG4gICAgICAgIGVudltlbnZfY3Vycl9jaGFyXSA9IC0xO1xuICAgICAgICBjbWQgPSBsb29wOyBicmVhaztcbiAgICAgIH1cbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuICAgIGNhc2UgODovL3NoaWZ0OlxuICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gLTE7XG4gICAgICBpZiAoZXJyZmxhZyA+IDApIGVycmZsYWctLTtcbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuICAgIGNhc2UgOTovL3NoaWZ0X3JlY292ZXI6XG4gICAgICBzdGF0ZSA9IHRhYmxlcy50YWJsZVtuMl07XG4gICAgICBzcCsrO1xuICAgICAgaWYgKHNwID49IGVudltlbnZfc3RhY2tzaXplXSkge1xuICAgICAgICByZXMgPSBHUk9XX1NUQUNLU18xO1xuICAgICAgICBicmVhayBleGl0O1xuICAgICAgfVxuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgICAvKiBUaGUgTUwgY29kZSByZXNpemVzIHRoZSBzdGFja3MgKi9cbiAgICBjYXNlIDI6Ly9TVEFDS1NfR1JPV05fMTpcbiAgICAgIGVudltlbnZfc19zdGFja11bc3AgKyAxXSA9IHN0YXRlO1xuICAgICAgZW52W2Vudl92X3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9sdmFsXTtcbiAgICAgIGVudltlbnZfc3ltYl9zdGFydF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9zdGFydF07XG4gICAgICBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9zeW1iX2VuZF07XG4gICAgICBjbWQgPSBsb29wO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIDEwOi8vcmVkdWNlOlxuICAgICAgdmFyIG0gPSB0YWJsZXMubGVuW25dO1xuICAgICAgZW52W2Vudl9hc3BdID0gc3A7XG4gICAgICBlbnZbZW52X3J1bGVfbnVtYmVyXSA9IG47XG4gICAgICBlbnZbZW52X3J1bGVfbGVuXSA9IG07XG4gICAgICBzcCA9IHNwIC0gbSArIDE7XG4gICAgICBtID0gdGFibGVzLmxoc1tuXTtcbiAgICAgIHN0YXRlMSA9IGVudltlbnZfc19zdGFja11bc3BdO1xuICAgICAgbjEgPSB0YWJsZXMuZ2luZGV4W21dO1xuICAgICAgbjIgPSBuMSArIHN0YXRlMTtcbiAgICAgIGlmIChuMSAhPSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PSBzdGF0ZTEpXG4gICAgICAgIHN0YXRlID0gdGFibGVzLnRhYmxlW24yXTtcbiAgICAgIGVsc2VcbiAgICAgICAgc3RhdGUgPSB0YWJsZXMuZGdvdG9bbV07XG4gICAgICBpZiAoc3AgPj0gZW52W2Vudl9zdGFja3NpemVdKSB7XG4gICAgICAgIHJlcyA9IEdST1dfU1RBQ0tTXzI7XG4gICAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICAgIC8qIFRoZSBNTCBjb2RlIHJlc2l6ZXMgdGhlIHN0YWNrcyAqL1xuICAgIGNhc2UgMzovL1NUQUNLU19HUk9XTl8yOlxuICAgICAgcmVzID0gQ09NUFVURV9TRU1BTlRJQ19BQ1RJT047XG4gICAgICBicmVhayBleGl0O1xuICAgICAgLyogVGhlIE1MIGNvZGUgY2FsbHMgdGhlIHNlbWFudGljIGFjdGlvbiAqL1xuICAgIGNhc2UgNDovL1NFTUFOVElDX0FDVElPTl9DT01QVVRFRDpcbiAgICAgIGVudltlbnZfc19zdGFja11bc3AgKyAxXSA9IHN0YXRlO1xuICAgICAgZW52W2Vudl92X3N0YWNrXVtzcCArIDFdID0gYXJnO1xuICAgICAgdmFyIGFzcCA9IGVudltlbnZfYXNwXTtcbiAgICAgIGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVthc3AgKyAxXTtcbiAgICAgIGlmIChzcCA+IGFzcCkge1xuICAgICAgICAvKiBUaGlzIGlzIGFuIGVwc2lsb24gcHJvZHVjdGlvbi4gVGFrZSBzeW1iX3N0YXJ0IGVxdWFsIHRvIHN5bWJfZW5kLiAqL1xuICAgICAgICBlbnZbZW52X3N5bWJfc3RhcnRfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVthc3AgKyAxXTtcbiAgICAgIH1cbiAgICAgIGNtZCA9IGxvb3A7IGJyZWFrO1xuICAgICAgLyogU2hvdWxkIG5vdCBoYXBwZW4gKi9cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFJBSVNFX1BBUlNFX0VSUk9SO1xuICAgIH1cbiAgfVxuICAvLyBTQVZFXG4gIGVudltlbnZfc3BdID0gc3A7XG4gIGVudltlbnZfc3RhdGVdID0gc3RhdGU7XG4gIGVudltlbnZfZXJyZmxhZ10gPSBlcnJmbGFnO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NldF9wYXJzZXJfdHJhY2UgY29uc3Rcbi8vRHVtbXkgZnVuY3Rpb24hXG5mdW5jdGlvbiBjYW1sX3NldF9wYXJzZXJfdHJhY2UoKSB7IHJldHVybiAwOyB9XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zvcm1hdF9pbnQgY29uc3QgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2VfZm9ybWF0LCBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nLCBjYW1sX3N0cl9yZXBlYXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZm9ybWF0X2ludChmbXQsIGkpIHtcbiAgaWYgKGNhbWxfanNieXRlc19vZl9zdHJpbmcoZm10KSA9PSBcIiVkXCIpIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIraSk7XG4gIHZhciBmID0gY2FtbF9wYXJzZV9mb3JtYXQoZm10KTtcbiAgaWYgKGkgPCAwKSB7IGlmIChmLnNpZ25lZGNvbnYpIHsgZi5zaWduID0gLTE7IGkgPSAtaTsgfSBlbHNlIGkgPj4+PSAwOyB9XG4gIHZhciBzID0gaS50b1N0cmluZyhmLmJhc2UpO1xuICBpZiAoZi5wcmVjID49IDApIHtcbiAgICBmLmZpbGxlciA9ICcgJztcbiAgICB2YXIgbiA9IGYucHJlYyAtIHMubGVuZ3RoO1xuICAgIGlmIChuID4gMCkgcyA9IGNhbWxfc3RyX3JlcGVhdCAobiwgJzAnKSArIHM7XG4gIH1cbiAgcmV0dXJuIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UgKHMpIHtcbiAgdmFyIGkgPSAwLCBsZW4gPSBjYW1sX21sX3N0cmluZ19sZW5ndGgocyksIGJhc2UgPSAxMCwgc2lnbiA9IDE7XG4gIGlmIChsZW4gPiAwKSB7XG4gICAgc3dpdGNoIChjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsaSkpIHtcbiAgICBjYXNlIDQ1OiBpKys7IHNpZ24gPSAtMTsgYnJlYWs7XG4gICAgY2FzZSA0MzogaSsrOyBzaWduID0gMTsgYnJlYWs7XG4gICAgfVxuICB9XG4gIGlmIChpICsgMSA8IGxlbiAmJiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpID09IDQ4KVxuICAgIHN3aXRjaCAoY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpICsgMSkpIHtcbiAgICBjYXNlIDEyMDogY2FzZSA4ODogYmFzZSA9IDE2OyBpICs9IDI7IGJyZWFrO1xuICAgIGNhc2UgMTExOiBjYXNlIDc5OiBiYXNlID0gIDg7IGkgKz0gMjsgYnJlYWs7XG4gICAgY2FzZSAgOTg6IGNhc2UgNjY6IGJhc2UgPSAgMjsgaSArPSAyOyBicmVhaztcbiAgICBjYXNlIDExNzogY2FzZSA4NTogaSArPSAyOyBicmVhaztcbiAgICB9XG4gIHJldHVybiBbaSwgc2lnbiwgYmFzZV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2VfZGlnaXRcbmZ1bmN0aW9uIGNhbWxfcGFyc2VfZGlnaXQoYykge1xuICBpZiAoYyA+PSA0OCAmJiBjIDw9IDU3KSAgcmV0dXJuIGMgLSA0ODtcbiAgaWYgKGMgPj0gNjUgJiYgYyA8PSA5MCkgIHJldHVybiBjIC0gNTU7XG4gIGlmIChjID49IDk3ICYmIGMgPD0gMTIyKSByZXR1cm4gYyAtIDg3O1xuICByZXR1cm4gLTE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50X29mX3N0cmluZyAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSwgY2FtbF9wYXJzZV9kaWdpdCwgY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9pbnRfb2Zfc3RyaW5nIChzKSB7XG4gIHZhciByID0gY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlIChzKTtcbiAgdmFyIGkgPSByWzBdLCBzaWduID0gclsxXSwgYmFzZSA9IHJbMl07XG4gIHZhciBsZW4gPSBjYW1sX21sX3N0cmluZ19sZW5ndGgocyk7XG4gIHZhciB0aHJlc2hvbGQgPSAtMSA+Pj4gMDtcbiAgdmFyIGMgPSAoaSA8IGxlbik/Y2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKTowO1xuICB2YXIgZCA9IGNhbWxfcGFyc2VfZGlnaXQoYyk7XG4gIGlmIChkIDwgMCB8fCBkID49IGJhc2UpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICB2YXIgcmVzID0gZDtcbiAgZm9yIChpKys7aTxsZW47aSsrKSB7XG4gICAgYyA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk7XG4gICAgaWYgKGMgPT0gOTUpIGNvbnRpbnVlO1xuICAgIGQgPSBjYW1sX3BhcnNlX2RpZ2l0KGMpO1xuICAgIGlmIChkIDwgMCB8fCBkID49IGJhc2UpIGJyZWFrO1xuICAgIHJlcyA9IGJhc2UgKiByZXMgKyBkO1xuICAgIGlmIChyZXMgPiB0aHJlc2hvbGQpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICB9XG4gIGlmIChpICE9IGxlbikgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIC8vIEZvciBiYXNlIGRpZmZlcmVudCBmcm9tIDEwLCB3ZSBleHBlY3QgYW4gdW5zaWduZWQgcmVwcmVzZW50YXRpb24sXG4gIC8vIGhlbmNlIGFueSB2YWx1ZSBvZiAncmVzJyAobGVzcyB0aGFuICd0aHJlc2hvbGQnKSBpcyBhY2NlcHRhYmxlLlxuICAvLyBCdXQgd2UgaGF2ZSB0byBjb252ZXJ0IHRoZSByZXN1bHQgYmFjayB0byBhIHNpZ25lZCBpbnRlZ2VyLlxuICByZXMgPSBzaWduICogcmVzO1xuICBpZiAoKGJhc2UgPT0gMTApICYmICgocmVzIHwgMCkgIT0gcmVzKSlcbiAgICAvKiBTaWduZWQgcmVwcmVzZW50YXRpb24gZXhwZWN0ZWQsIGFsbG93IC0yXihuYml0cy0xKSB0byAyXihuYml0cy0xKSAtIDEgKi9cbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgcmV0dXJuIHJlcyB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbXVsIGNvbnN0XG5mdW5jdGlvbiBjYW1sX211bChhLGIpe1xuICByZXR1cm4gTWF0aC5pbXVsKGEsYik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZGl2XG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG5mdW5jdGlvbiBjYW1sX2Rpdih4LHkpIHtcbiAgaWYgKHkgPT0gMCkgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSAoKTtcbiAgcmV0dXJuICh4L3kpfDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbW9kXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG5mdW5jdGlvbiBjYW1sX21vZCh4LHkpIHtcbiAgaWYgKHkgPT0gMCkgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSAoKTtcbiAgcmV0dXJuIHgleTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ic3dhcDE2XG5mdW5jdGlvbiBjYW1sX2Jzd2FwMTYoeCkge1xuICByZXR1cm4gKCgoKHggJiAweDAwRkYpIDw8IDgpIHxcbiAgICAgICAgICAgKCh4ICYgMHhGRjAwKSA+PiA4KSkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9pbnQzMl9ic3dhcFxuZnVuY3Rpb24gY2FtbF9pbnQzMl9ic3dhcCh4KSB7XG4gIHJldHVybiAoKCh4ICYgMHgwMDAwMDBGRikgPDwgMjQpIHxcbiAgICAgICAgICAoKHggJiAweDAwMDBGRjAwKSA8PCA4KSB8XG4gICAgICAgICAgKCh4ICYgMHgwMEZGMDAwMCkgPj4+IDgpIHxcbiAgICAgICAgICAoKHggJiAweEZGMDAwMDAwKSA+Pj4gMjQpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfYnN3YXBcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXMsIGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfaW50NjRfYnN3YXAoeCkge1xuICB2YXIgeSA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoeCk7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKFt5WzddLCB5WzZdLCB5WzVdLCB5WzRdLCB5WzNdLCB5WzJdLCB5WzFdLCB5WzBdXSk7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEhhc2h0YmxcblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX3VuaXZfcGFyYW0gbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9pc19tbF9zdHJpbmcsIGNhbWxfaXNfbWxfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfY29udGVudFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlcywgY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0LCBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2hhc2hfdW5pdl9wYXJhbSAoY291bnQsIGxpbWl0LCBvYmopIHtcbiAgdmFyIGhhc2hfYWNjdSA9IDA7XG4gIGZ1bmN0aW9uIGhhc2hfYXV4IChvYmopIHtcbiAgICBsaW1pdCAtLTtcbiAgICBpZiAoY291bnQgPCAwIHx8IGxpbWl0IDwgMCkgcmV0dXJuO1xuICAgIGlmIChvYmogaW5zdGFuY2VvZiBBcnJheSAmJiBvYmpbMF0gPT09IChvYmpbMF18MCkpIHtcbiAgICAgIHN3aXRjaCAob2JqWzBdKSB7XG4gICAgICBjYXNlIDI0ODpcbiAgICAgICAgLy8gT2JqZWN0XG4gICAgICAgIGNvdW50IC0tO1xuICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogNjU1OTkgKyBvYmpbMl0pIHwgMDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1MDpcbiAgICAgICAgLy8gRm9yd2FyZFxuICAgICAgICBsaW1pdCsrOyBoYXNoX2F1eChvYmopOyBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGNvdW50IC0tO1xuICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBvYmpbMF0pIHwgMDtcbiAgICAgICAgZm9yICh2YXIgaSA9IG9iai5sZW5ndGggLSAxOyBpID4gMDsgaS0tKSBoYXNoX2F1eCAob2JqW2ldKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXMob2JqKSkge1xuICAgICAgY291bnQgLS07XG4gICAgICB2YXIgY29udGVudCA9IGNhbWxfbWxfYnl0ZXNfY29udGVudChvYmopO1xuICAgICAgaWYodHlwZW9mIGNvbnRlbnQgPT09IFwic3RyaW5nXCIpIHtcblx0Zm9yICh2YXIgYiA9IGNvbnRlbnQsIGwgPSBiLmxlbmd0aCwgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgYi5jaGFyQ29kZUF0KGkpKSB8IDA7XG4gICAgICB9IGVsc2UgeyAvKiBBUlJBWSAqL1xuICAgICAgICBmb3IgKHZhciBhID0gY29udGVudCwgbCA9IGEubGVuZ3RoLCBpID0gMDsgaSA8IGw7IGkrKylcbiAgICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBhW2ldKSB8IDA7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyhvYmopKSB7XG4gICAgICB2YXIganNieXRlcyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcob2JqKTtcbiAgICAgIGZvciAodmFyIGIgPSBqc2J5dGVzLCBsID0ganNieXRlcy5sZW5ndGgsIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBiLmNoYXJDb2RlQXQoaSkpIHwgMDtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBvYmogPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGZvciAodmFyIGIgPSBvYmosIGwgPSBvYmoubGVuZ3RoLCBpID0gMDsgaSA8IGw7IGkrKylcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgYi5jaGFyQ29kZUF0KGkpKSB8IDA7XG4gICAgfSBlbHNlIGlmIChvYmogPT09IChvYmp8MCkpIHtcbiAgICAgIC8vIEludGVnZXJcbiAgICAgIGNvdW50IC0tO1xuICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDY1NTk5ICsgb2JqKSB8IDA7XG4gICAgfSBlbHNlIGlmIChvYmogPT09ICtvYmopIHtcbiAgICAgIC8vIEZsb2F0XG4gICAgICBjb3VudC0tO1xuICAgICAgdmFyIHAgPSBjYW1sX2ludDY0X3RvX2J5dGVzIChjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQgKG9iaikpO1xuICAgICAgZm9yICh2YXIgaSA9IDc7IGkgPj0gMDsgaS0tKSBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBwW2ldKSB8IDA7XG4gICAgfSBlbHNlIGlmKG9iaiAmJiBvYmouY2FtbF9jdXN0b20pIHtcbiAgICAgIGlmKGNhbWxfY3VzdG9tX29wc1tvYmouY2FtbF9jdXN0b21dICYmIGNhbWxfY3VzdG9tX29wc1tvYmouY2FtbF9jdXN0b21dLmhhc2gpIHtcbiAgICAgICAgdmFyIGggPSBjYW1sX2N1c3RvbV9vcHNbb2JqLmNhbWxfY3VzdG9tXS5oYXNoKG9iaikgfCAwO1xuICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogNjU1OTkgKyBoKSB8IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGhhc2hfYXV4IChvYmopO1xuICByZXR1cm4gaGFzaF9hY2N1ICYgMHgzRkZGRkZGRjtcbn1cblxuLy9mdW5jdGlvbiBST1RMMzIoeCxuKSB7IHJldHVybiAoKHggPDwgbikgfCAoeCA+Pj4gKDMyLW4pKSk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfaW50XG4vL1JlcXVpcmVzOiBjYW1sX211bFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9pbnQoaCxkKSB7XG4gIGQgPSBjYW1sX211bChkLCAweGNjOWUyZDUxfDApO1xuICBkID0gKChkIDw8IDE1KSB8IChkID4+PiAoMzItMTUpKSk7IC8vIFJPVEwzMihkLCAxNSk7XG4gIGQgPSBjYW1sX211bChkLCAweDFiODczNTkzKTtcbiAgaCBePSBkO1xuICBoID0gKChoIDw8IDEzKSB8IChoID4+PiAoMzItMTMpKSk7ICAgLy9ST1RMMzIoaCwgMTMpO1xuICByZXR1cm4gKCgoaCArIChoIDw8IDIpKXwwKSArICgweGU2NTQ2YjY0fDApKXwwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2ZpbmFsXG4vL1JlcXVpcmVzOiBjYW1sX211bFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9maW5hbChoKSB7XG4gIGggXj0gaCA+Pj4gMTY7XG4gIGggPSBjYW1sX211bCAoaCwgMHg4NWViY2E2YnwwKTtcbiAgaCBePSBoID4+PiAxMztcbiAgaCA9IGNhbWxfbXVsIChoLCAweGMyYjJhZTM1fDApO1xuICBoIF49IGggPj4+IDE2O1xuICByZXR1cm4gaDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9mbG9hdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0LCBjYW1sX2hhc2hfbWl4X2ludDY0XG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2Zsb2F0IChoLCB2MCkge1xuICByZXR1cm4gY2FtbF9oYXNoX21peF9pbnQ2NChoLCBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQgKHYwKSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2ludDY0XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9sbzMyLCBjYW1sX2ludDY0X2hpMzJcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfaW50NjQgKGgsIHYpIHtcbiAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGNhbWxfaW50NjRfbG8zMih2KSk7XG4gIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBjYW1sX2ludDY0X2hpMzIodikpO1xuICByZXR1cm4gaDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsIHMpIHtcbiAgdmFyIGxlbiA9IHMubGVuZ3RoLCBpLCB3O1xuICBmb3IgKGkgPSAwOyBpICsgNCA8PSBsZW47IGkgKz0gNCkge1xuICAgIHcgPSBzLmNoYXJDb2RlQXQoaSlcbiAgICAgIHwgKHMuY2hhckNvZGVBdChpKzEpIDw8IDgpXG4gICAgICB8IChzLmNoYXJDb2RlQXQoaSsyKSA8PCAxNilcbiAgICAgIHwgKHMuY2hhckNvZGVBdChpKzMpIDw8IDI0KTtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIH1cbiAgdyA9IDA7XG4gIHN3aXRjaCAobGVuICYgMykge1xuICBjYXNlIDM6IHcgID0gcy5jaGFyQ29kZUF0KGkrMikgPDwgMTY7XG4gIGNhc2UgMjogdyB8PSBzLmNoYXJDb2RlQXQoaSsxKSA8PCA4O1xuICBjYXNlIDE6XG4gICAgdyB8PSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICBkZWZhdWx0OlxuICB9XG4gIGggXj0gbGVuO1xuICByZXR1cm4gaDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9ieXRlc19hcnJcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50XG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FycihoLCBzKSB7XG4gIHZhciBsZW4gPSBzLmxlbmd0aCwgaSwgdztcbiAgZm9yIChpID0gMDsgaSArIDQgPD0gbGVuOyBpICs9IDQpIHtcbiAgICB3ID0gc1tpXVxuICAgICAgfCAoc1tpKzFdIDw8IDgpXG4gICAgICB8IChzW2krMl0gPDwgMTYpXG4gICAgICB8IChzW2krM10gPDwgMjQpO1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgfVxuICB3ID0gMDtcbiAgc3dpdGNoIChsZW4gJiAzKSB7XG4gIGNhc2UgMzogdyAgPSBzW2krMl0gPDwgMTY7XG4gIGNhc2UgMjogdyB8PSBzW2krMV0gPDwgODtcbiAgY2FzZSAxOiB3IHw9IHNbaV07XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICBkZWZhdWx0OlxuICB9XG4gIGggXj0gbGVuO1xuICByZXR1cm4gaDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19jb250ZW50XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2J5dGVzKGgsIHYpIHtcbiAgdmFyIGNvbnRlbnQgPSBjYW1sX21sX2J5dGVzX2NvbnRlbnQodik7XG4gIGlmKHR5cGVvZiBjb250ZW50ID09PSBcInN0cmluZ1wiKVxuICAgIHJldHVybiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMoaCwgY29udGVudClcbiAgZWxzZSAvKiBBUlJBWSAqL1xuICAgIHJldHVybiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FycihoLCBjb250ZW50KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9zdHJpbmcoaCwgdikge1xuICByZXR1cm4gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsIGNhbWxfanNieXRlc19vZl9zdHJpbmcodikpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaCBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9pc19tbF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnQsIGNhbWxfaGFzaF9taXhfZmluYWxcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfZmxvYXQsIGNhbWxfaGFzaF9taXhfc3RyaW5nLCBjYW1sX2hhc2hfbWl4X2J5dGVzLCBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9oYXNoIChjb3VudCwgbGltaXQsIHNlZWQsIG9iaikge1xuICB2YXIgcXVldWUsIHJkLCB3ciwgc3osIG51bSwgaCwgdiwgaSwgbGVuO1xuICBzeiA9IGxpbWl0O1xuICBpZiAoc3ogPCAwIHx8IHN6ID4gMjU2KSBzeiA9IDI1NjtcbiAgbnVtID0gY291bnQ7XG4gIGggPSBzZWVkO1xuICBxdWV1ZSA9IFtvYmpdOyByZCA9IDA7IHdyID0gMTtcbiAgd2hpbGUgKHJkIDwgd3IgJiYgbnVtID4gMCkge1xuICAgIHYgPSBxdWV1ZVtyZCsrXTtcbiAgICBpZiAodiAmJiB2LmNhbWxfY3VzdG9tKXtcbiAgICAgIGlmKGNhbWxfY3VzdG9tX29wc1t2LmNhbWxfY3VzdG9tXSAmJiBjYW1sX2N1c3RvbV9vcHNbdi5jYW1sX2N1c3RvbV0uaGFzaCkge1xuICAgICAgICB2YXIgaGggPSBjYW1sX2N1c3RvbV9vcHNbdi5jYW1sX2N1c3RvbV0uaGFzaCh2KTtcbiAgICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50IChoLCBoaCk7XG4gICAgICAgIG51bSAtLTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAodiBpbnN0YW5jZW9mIEFycmF5ICYmIHZbMF0gPT09ICh2WzBdfDApKSB7XG4gICAgICBzd2l0Y2ggKHZbMF0pIHtcbiAgICAgIGNhc2UgMjQ4OlxuICAgICAgICAvLyBPYmplY3RcbiAgICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHZbMl0pO1xuICAgICAgICBudW0tLTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1MDpcbiAgICAgICAgLy8gRm9yd2FyZFxuICAgICAgICBxdWV1ZVstLXJkXSA9IHZbMV07XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdmFyIHRhZyA9ICgodi5sZW5ndGggLSAxKSA8PCAxMCkgfCB2WzBdO1xuICAgICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdGFnKTtcbiAgICAgICAgZm9yIChpID0gMSwgbGVuID0gdi5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgIGlmICh3ciA+PSBzeikgYnJlYWs7XG4gICAgICAgICAgcXVldWVbd3IrK10gPSB2W2ldO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyh2KSkge1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfYnl0ZXMoaCx2KVxuICAgICAgbnVtLS07XG4gICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyh2KSkge1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfc3RyaW5nKGgsdilcbiAgICAgIG51bS0tO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHYgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMoaCx2KVxuICAgICAgbnVtLS07XG4gICAgfSBlbHNlIGlmICh2ID09PSAodnwwKSkge1xuICAgICAgLy8gSW50ZWdlclxuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHYrdisxKTtcbiAgICAgIG51bS0tO1xuICAgIH0gZWxzZSBpZiAodiA9PT0gK3YpIHtcbiAgICAgIC8vIEZsb2F0XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9mbG9hdChoLHYpO1xuICAgICAgbnVtLS07XG4gICAgfVxuICB9XG4gIGggPSBjYW1sX2hhc2hfbWl4X2ZpbmFsKGgpO1xuICByZXR1cm4gaCAmIDB4M0ZGRkZGRkY7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmVfdmFsX3RhZ1xuLy9SZXF1aXJlczogY2FtbF9pc19tbF9zdHJpbmcsIGNhbWxfaXNfbWxfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWxfdGFnKGEpe1xuICBpZiAodHlwZW9mIGEgPT09IFwibnVtYmVyXCIpIHJldHVybiAxMDAwOyAvLyBpbnRfdGFnICh3ZSB1c2UgaXQgZm9yIGFsbCBudW1iZXJzKVxuICBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKGEpKSByZXR1cm4gMjUyOyAvLyBzdHJpbmdfdGFnXG4gIGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKGEpKSByZXR1cm4gMTI1MjsgLy8gb2NhbWwgc3RyaW5nIChpZiBkaWZmZXJlbnQgZnJvbSBieXRlcylcbiAgZWxzZSBpZiAoYSBpbnN0YW5jZW9mIEFycmF5ICYmIGFbMF0gPT09IChhWzBdPj4+MCkgJiYgYVswXSA8PSAyNTUpIHtcbiAgICAvLyBMb29rIGxpa2UgYW4gb2NhbWwgYmxvY2tcbiAgICB2YXIgdGFnID0gYVswXSB8IDA7XG4gICAgLy8gaWdub3JlIGRvdWJsZV9hcnJheV90YWcgYmVjYXVzZSB3ZSBjYW5ub3QgYWNjdXJhdGVseSBzZXRcbiAgICAvLyB0aGlzIHRhZyB3aGVuIHdlIGNyZWF0ZSBhbiBhcnJheSBvZiBmbG9hdC5cbiAgICByZXR1cm4gKHRhZyA9PSAyNTQpPzA6dGFnXG4gIH1cbiAgZWxzZSBpZiAoYSBpbnN0YW5jZW9mIFN0cmluZykgcmV0dXJuIDEyNTIwOyAvLyBqYXZhc2NyaXB0IHN0cmluZywgbGlrZSBzdHJpbmdfdGFnICgyNTIpXG4gIGVsc2UgaWYgKHR5cGVvZiBhID09IFwic3RyaW5nXCIpIHJldHVybiAxMjUyMDsgLy8gamF2YXNjcmlwdCBzdHJpbmcsIGxpa2Ugc3RyaW5nX3RhZyAoMjUyKVxuICBlbHNlIGlmIChhIGluc3RhbmNlb2YgTnVtYmVyKSByZXR1cm4gMTAwMDsgLy8gaW50X3RhZyAod2UgdXNlIGl0IGZvciBhbGwgbnVtYmVycylcbiAgZWxzZSBpZiAoYSAmJiBhLmNhbWxfY3VzdG9tKSByZXR1cm4gMTI1NTsgLy8gbGlrZSBjdXN0b21fdGFnICgyNTUpXG4gIGVsc2UgaWYgKGEgJiYgYS5jb21wYXJlKSByZXR1cm4gMTI1NjsgLy8gbGlrZSBjdXN0b21fdGFnICgyNTUpXG4gIGVsc2UgaWYgKHR5cGVvZiBhID09IFwiZnVuY3Rpb25cIikgcmV0dXJuIDEyNDc7IC8vIGxpa2UgY2xvc3VyZV90YWcgKDI0NylcbiAgZWxzZSBpZiAodHlwZW9mIGEgPT0gXCJzeW1ib2xcIikgcmV0dXJuIDEyNTE7XG4gIHJldHVybiAxMDAxOyAvL291dF9vZl9oZWFwX3RhZ1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b21cbi8vUmVxdWlyZXM6IGNhbWxfY3VzdG9tX29wc1xuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tKGEpe1xuICByZXR1cm4gY2FtbF9jdXN0b21fb3BzW2EuY2FtbF9jdXN0b21dICYmIGNhbWxfY3VzdG9tX29wc1thLmNhbWxfY3VzdG9tXS5jb21wYXJlO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b21cbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbVxuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tKG51bSwgY3VzdG9tLCBzd2FwLCB0b3RhbCkge1xuICB2YXIgY29tcCA9IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbShjdXN0b20pO1xuICBpZihjb21wKSB7XG4gICAgdmFyIHggPSAoc3dhcCA+IDApP2NvbXAoY3VzdG9tLG51bSx0b3RhbCk6Y29tcChudW0sY3VzdG9tLHRvdGFsKTtcbiAgICBpZih0b3RhbCAmJiB4ICE9IHgpIHJldHVybiBzd2FwOyAvLyB0b3RhbCAmJiBuYW5cbiAgICBpZigreCAhPSAreCkgcmV0dXJuICt4OyAvLyBuYW5cbiAgICBpZigoeCB8IDApICE9IDApIHJldHVybiAoeCB8IDApOyAvLyAhbmFuXG4gIH1cbiAgcmV0dXJuIHN3YXBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlX3ZhbCAoY29uc3QsIGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfaW50X2NvbXBhcmUsIGNhbWxfc3RyaW5nX2NvbXBhcmUsIGNhbWxfYnl0ZXNfY29tcGFyZVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20sIGNhbWxfY29tcGFyZV92YWxfdGFnXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b21cbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWwgKGEsIGIsIHRvdGFsKSB7XG4gIHZhciBzdGFjayA9IFtdO1xuICBmb3IoOzspIHtcbiAgICBpZiAoISh0b3RhbCAmJiBhID09PSBiKSkge1xuICAgICAgdmFyIHRhZ19hID0gY2FtbF9jb21wYXJlX3ZhbF90YWcoYSk7XG4gICAgICAvLyBmb3J3YXJkX3RhZyA/XG4gICAgICBpZih0YWdfYSA9PSAyNTApIHsgYSA9IGFbMV07IGNvbnRpbnVlIH1cblxuICAgICAgdmFyIHRhZ19iID0gY2FtbF9jb21wYXJlX3ZhbF90YWcoYik7XG4gICAgICAvLyBmb3J3YXJkX3RhZyA/XG4gICAgICBpZih0YWdfYiA9PSAyNTApIHsgYiA9IGJbMV07IGNvbnRpbnVlIH1cblxuICAgICAgLy8gdGFncyBhcmUgZGlmZmVyZW50XG4gICAgICBpZih0YWdfYSAhPT0gdGFnX2IpIHtcbiAgICAgICAgaWYodGFnX2EgPT0gMTAwMCkge1xuICAgICAgICAgIGlmKHRhZ19iID09IDEyNTUpIHsgLy9pbW1lZGlhdGUgY2FuIGNvbXBhcmUgYWdhaW5zdCBjdXN0b21cbiAgICAgICAgICAgIHJldHVybiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b20oYSwgYiwgLTEsIHRvdGFsKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIC0xXG4gICAgICAgIH1cbiAgICAgICAgaWYodGFnX2IgPT0gMTAwMCkge1xuICAgICAgICAgIGlmKHRhZ19hID09IDEyNTUpIHsgLy9pbW1lZGlhdGUgY2FuIGNvbXBhcmUgYWdhaW5zdCBjdXN0b21cbiAgICAgICAgICAgIHJldHVybiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b20oYiwgYSwgMSwgdG90YWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gMVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAodGFnX2EgPCB0YWdfYik/LTE6MTtcbiAgICAgIH1cbiAgICAgIHN3aXRjaCh0YWdfYSl7XG4gICAgICAgIC8vIDI0NjogTGF6eV90YWcgaGFuZGxlZCBiZWxsb3dcbiAgICAgIGNhc2UgMjQ3OiAvLyBDbG9zdXJlX3RhZ1xuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGZ1bmN0aW9uYWwgdmFsdWVcIik7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIDI0ODogLy8gT2JqZWN0XG4gICAgICAgIHZhciB4ID0gY2FtbF9pbnRfY29tcGFyZShhWzJdLCBiWzJdKTtcbiAgICAgICAgaWYgKHggIT0gMCkgcmV0dXJuICh4IHwgMCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNDk6IC8vIEluZml4XG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW5cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogZnVuY3Rpb25hbCB2YWx1ZVwiKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgMjUwOiAvLyBGb3J3YXJkIHRhZ1xuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuLCBoYW5kbGVkIGFib3ZlXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBnb3QgRm9yd2FyZF90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUxOiAvL0Fic3RyYWN0XG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBhYnN0cmFjdCB2YWx1ZVwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1MjogLy8gT0NhbWwgYnl0ZXNcbiAgICAgICAgaWYgKGEgIT09IGIpIHtcbiAgICAgICAgICB2YXIgeCA9IGNhbWxfYnl0ZXNfY29tcGFyZShhLCBiKTtcbiAgICAgICAgICBpZiAoeCAhPSAwKSByZXR1cm4gKHggfCAwKTtcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1MzogLy8gRG91YmxlX3RhZ1xuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBnb3QgRG91YmxlX3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTQ6IC8vIERvdWJsZV9hcnJheV90YWdcbiAgICAgICAgLy8gQ2Fubm90IGhhcHBlbiwgaGFuZGxlZCBhYm92ZVxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogZ290IERvdWJsZV9hcnJheV90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAyNTU6IC8vIEN1c3RvbV90YWdcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBDdXN0b21fdGFnLCBzaG91bGQgbm90IGhhcHBlblwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNDc6IC8vIEZ1bmN0aW9uXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGZ1bmN0aW9uYWwgdmFsdWVcIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjU1OiAvLyBDdXN0b21cbiAgICAgICAgdmFyIGNvbXAgPSBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20oYSk7XG4gICAgICAgIGlmKGNvbXAgIT0gY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tKGIpKXtcbiAgICAgICAgICByZXR1cm4gKGEuY2FtbF9jdXN0b208Yi5jYW1sX2N1c3RvbSk/LTE6MTtcbiAgICAgICAgfVxuICAgICAgICBpZighY29tcClcbiAgICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBhYnN0cmFjdCB2YWx1ZVwiKTtcbiAgICAgICAgdmFyIHggPSBjb21wKGEsYix0b3RhbCk7XG4gICAgICAgIGlmKHggIT0geCl7IC8vIFByb3RlY3QgYWdhaW5zdCBpbnZhbGlkIFVOT1JERVJFRFxuICAgICAgICAgIHJldHVybiB0b3RhbD8tMTp4O1xuICAgICAgICB9XG4gICAgICAgIGlmKHggIT09ICh4fDApKXsgLy8gUHJvdGVjdCBhZ2FpbnN0IGludmFsaWQgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgcmV0dXJuIC0xXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHggIT0gMCkgcmV0dXJuICh4IHwgMCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjU2OiAvLyBjb21wYXJlIGZ1bmN0aW9uXG4gICAgICAgIHZhciB4ID0gYS5jb21wYXJlKGIsdG90YWwpO1xuICAgICAgICBpZih4ICE9IHgpIHsgLy8gUHJvdGVjdCBhZ2FpbnN0IGludmFsaWQgVU5PUkRFUkVEXG4gICAgICAgICAgcmV0dXJuIHRvdGFsPy0xOng7XG4gICAgICAgIH1cbiAgICAgICAgaWYoeCAhPT0gKHh8MCkpeyAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCByZXR1cm4gdmFsdWVcbiAgICAgICAgICByZXR1cm4gLTFcbiAgICAgICAgfVxuICAgICAgICBpZiAoeCAhPSAwKSByZXR1cm4gKHggfCAwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEwMDA6IC8vIE51bWJlclxuICAgICAgICBhID0gK2E7XG4gICAgICAgIGIgPSArYjtcbiAgICAgICAgaWYgKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gICAgICAgIGlmIChhICE9IGIpIHtcbiAgICAgICAgICBpZiAoIXRvdGFsKSByZXR1cm4gTmFOO1xuICAgICAgICAgIGlmIChhID09IGEpIHJldHVybiAxO1xuICAgICAgICAgIGlmIChiID09IGIpIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTAwMTogLy8gVGhlIHJlc3RcbiAgICAgICAgLy8gSGVyZSB3ZSBjYW4gYmUgaW4gdGhlIGZvbGxvd2luZyBjYXNlczpcbiAgICAgICAgLy8gMS4gSmF2YVNjcmlwdCBwcmltaXRpdmUgdHlwZXNcbiAgICAgICAgLy8gMi4gSmF2YVNjcmlwdCBvYmplY3QgdGhhdCBjYW4gYmUgY29lcmNlZCB0byBwcmltaXRpdmUgdHlwZXNcbiAgICAgICAgLy8gMy4gSmF2YVNjcmlwdCBvYmplY3QgdGhhbiBjYW5ub3QgYmUgY29lcmNlZCB0byBwcmltaXRpdmUgdHlwZXNcbiAgICAgICAgLy9cbiAgICAgICAgLy8gKDMpIHdpbGwgcmFpc2UgYSBbVHlwZUVycm9yXVxuICAgICAgICAvLyAoMikgd2lsbCBjb2VyY2UgdG8gcHJpbWl0aXZlIHR5cGVzIHVzaW5nIFt2YWx1ZU9mXSBvciBbdG9TdHJpbmddXG4gICAgICAgIC8vICgyKSBhbmQgKDMpLCBhZnRlciBldmVudHVhbCBjb2VyY2lvblxuICAgICAgICAvLyAtIGlmIGEgYW5kIGIgYXJlIHN0cmluZ3MsIGFwcGx5IGxleGljb2dyYXBoaWMgY29tcGFyaXNvblxuICAgICAgICAvLyAtIGlmIGEgb3IgYiBhcmUgbm90IHN0cmluZ3MsIGNvbnZlcnQgYSBhbmQgYiB0byBudW1iZXJcbiAgICAgICAgLy8gICBhbmQgYXBwbHkgc3RhbmRhcmQgY29tcGFyaXNvblxuICAgICAgICAvL1xuICAgICAgICAvLyBFeGNlcHRpb246IGAhPWAgd2lsbCBub3QgY29lcmNlL2NvbnZlcnQgaWYgYm90aCBhIGFuZCBiIGFyZSBvYmplY3RzXG4gICAgICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgICAgICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICBpZiAoYSAhPSBiKSB7XG4gICAgICAgICAgaWYgKCF0b3RhbCkgcmV0dXJuIE5hTjtcbiAgICAgICAgICBpZiAoYSA9PSBhKSByZXR1cm4gMTtcbiAgICAgICAgICBpZiAoYiA9PSBiKSByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTE6IC8vIEphdmFTY3JpcHQgU3ltYm9sLCBubyBvcmRlcmluZy5cbiAgICAgICAgaWYoYSAhPT0gYikge1xuICAgICAgICAgIGlmICghdG90YWwpIHJldHVybiBOYU47XG4gICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTI6IC8vIG9jYW1sIHN0cmluZ3NcbiAgICAgICAgdmFyIGEgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGEpO1xuICAgICAgICB2YXIgYiA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoYik7XG4gICAgICAgIGlmKGEgIT09IGIpIHtcbiAgICAgICAgICBpZihhIDwgYikgcmV0dXJuIC0xO1xuICAgICAgICAgIGlmKGEgPiBiKSByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1MjA6IC8vIGphdmFzY3JpcHQgc3RyaW5nc1xuICAgICAgICB2YXIgYSA9IGEudG9TdHJpbmcoKTtcbiAgICAgICAgdmFyIGIgPSBiLnRvU3RyaW5nKCk7XG4gICAgICAgIGlmKGEgIT09IGIpIHtcbiAgICAgICAgICBpZihhIDwgYikgcmV0dXJuIC0xO1xuICAgICAgICAgIGlmKGEgPiBiKSByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjQ2OiAvLyBMYXp5X3RhZ1xuICAgICAgY2FzZSAyNTQ6IC8vIERvdWJsZV9hcnJheVxuICAgICAgZGVmYXVsdDogLy8gQmxvY2sgd2l0aCBvdGhlciB0YWdcbiAgICAgICAgaWYgKGEubGVuZ3RoICE9IGIubGVuZ3RoKSByZXR1cm4gKGEubGVuZ3RoIDwgYi5sZW5ndGgpPy0xOjE7XG4gICAgICAgIGlmIChhLmxlbmd0aCA+IDEpIHN0YWNrLnB1c2goYSwgYiwgMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoc3RhY2subGVuZ3RoID09IDApIHJldHVybiAwO1xuICAgIHZhciBpID0gc3RhY2sucG9wKCk7XG4gICAgYiA9IHN0YWNrLnBvcCgpO1xuICAgIGEgPSBzdGFjay5wb3AoKTtcbiAgICBpZiAoaSArIDEgPCBhLmxlbmd0aCkgc3RhY2sucHVzaChhLCBiLCBpICsgMSk7XG4gICAgYSA9IGFbaV07XG4gICAgYiA9IGJbaV07XG4gIH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9jb21wYXJlIChhLCBiKSB7IHJldHVybiBjYW1sX2NvbXBhcmVfdmFsIChhLCBiLCB0cnVlKTsgfVxuLy9Qcm92aWRlczogY2FtbF9pbnRfY29tcGFyZSBtdXRhYmxlIChjb25zdCwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2ludF9jb21wYXJlIChhLCBiKSB7XG4gIGlmIChhIDwgYikgcmV0dXJuICgtMSk7IGlmIChhID09IGIpIHJldHVybiAwOyByZXR1cm4gMTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9lcXVhbCAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgPT0gMCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbm90ZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9ub3RlcXVhbCAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgIT0gMCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JlYXRlcmVxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfZ3JlYXRlcmVxdWFsICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA+PSAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9ncmVhdGVydGhhbiBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2dyZWF0ZXJ0aGFuICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA+IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xlc3NlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2xlc3NlcXVhbCAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgPD0gMCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbGVzc3RoYW4gbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9sZXNzdGhhbiAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgPCAwKTsgfVxuIiwiLy8gSnNfb2Zfb2NhbWwgbGlicmFyeVxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEpzbGliOiBjb2RlIHNwZWNpZmljIHRvIEpzX29mX29jYW1sXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfb25faWUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfanNfb25faWUgKCkge1xuICB2YXIgdWEgPVxuICAgICAgZ2xvYmFsVGhpcy5uYXZpZ2F0b3I/Z2xvYmFsVGhpcy5uYXZpZ2F0b3IudXNlckFnZW50OlwiXCI7XG4gIHJldHVybiB1YS5pbmRleE9mKFwiTVNJRVwiKSAhPSAtMSAmJiB1YS5pbmRleE9mKFwiT3BlcmFcIikgIT0gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19odG1sX2VzY2FwZSBjb25zdCAoY29uc3QpXG52YXIgY2FtbF9qc19yZWdleHBzID0geyBhbXA6LyYvZywgbHQ6LzwvZywgcXVvdDovXFxcIi9nLCBhbGw6L1smPFxcXCJdLyB9O1xuZnVuY3Rpb24gY2FtbF9qc19odG1sX2VzY2FwZSAocykge1xuICBpZiAoIWNhbWxfanNfcmVnZXhwcy5hbGwudGVzdChzKSkgcmV0dXJuIHM7XG4gIHJldHVybiBzLnJlcGxhY2UoY2FtbF9qc19yZWdleHBzLmFtcCwgXCImYW1wO1wiKVxuICAgIC5yZXBsYWNlKGNhbWxfanNfcmVnZXhwcy5sdCwgXCImbHQ7XCIpXG4gICAgLnJlcGxhY2UoY2FtbF9qc19yZWdleHBzLnF1b3QsIFwiJnF1b3Q7XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2h0bWxfZW50aXRpZXNcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfanNfaHRtbF9lbnRpdGllcyhzKSB7XG4gIHZhciBlbnRpdHkgPSAvXiYjP1swLTlhLXpBLVpdKzskL1xuICBpZihzLm1hdGNoKGVudGl0eSkpXG4gIHtcbiAgICB2YXIgc3RyLCB0ZW1wID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpO1xuICAgIHRlbXAuaW5uZXJIVE1MPSBzO1xuICAgIHN0cj0gdGVtcC50ZXh0Q29udGVudCB8fCB0ZW1wLmlubmVyVGV4dDtcbiAgICB0ZW1wPW51bGw7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuICBlbHNlIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiSW52YWxpZCBlbnRpdHkgXCIgKyBzKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2dldF9jb25zb2xlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2pzX2dldF9jb25zb2xlICgpIHtcbiAgdmFyIGMgPSBnbG9iYWxUaGlzLmNvbnNvbGU/Z2xvYmFsVGhpcy5jb25zb2xlOnt9O1xuICB2YXIgbSA9IFtcImxvZ1wiLCBcImRlYnVnXCIsIFwiaW5mb1wiLCBcIndhcm5cIiwgXCJlcnJvclwiLCBcImFzc2VydFwiLCBcImRpclwiLCBcImRpcnhtbFwiLFxuICAgICAgICAgICBcInRyYWNlXCIsIFwiZ3JvdXBcIiwgXCJncm91cENvbGxhcHNlZFwiLCBcImdyb3VwRW5kXCIsIFwidGltZVwiLCBcInRpbWVFbmRcIl07XG4gIGZ1bmN0aW9uIGYgKCkge31cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtLmxlbmd0aDsgaSsrKSBpZiAoIWNbbVtpXV0pIGNbbVtpXV09ZjtcbiAgcmV0dXJuIGM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL1dlYWtkZWZcbmZ1bmN0aW9uIGNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlKHVuaXQpe1xuICB2YXIgZyA9IGdsb2JhbFRoaXM7XG4gIGlmKHR5cGVvZiBnLlhNTEh0dHBSZXF1ZXN0ICE9PSAndW5kZWZpbmVkJykge1xuICAgIHRyeSB7IHJldHVybiBuZXcgZy5YTUxIdHRwUmVxdWVzdCB9IGNhdGNoIChlKSB7IH07XG4gIH1cbiAgaWYodHlwZW9mIGcuYWN0aXZlWE9iamVjdCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICB0cnkgeyByZXR1cm4gbmV3IGcuYWN0aXZlWE9iamVjdChcIk1zeG1sMi5YTUxIVFRQXCIpIH0gY2F0Y2goZSl7IH07XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBnLmFjdGl2ZVhPYmplY3QoXCJNc3htbDMuWE1MSFRUUFwiKSB9IGNhdGNoKGUpeyB9O1xuICAgIHRyeSB7IHJldHVybiBuZXcgZy5hY3RpdmVYT2JqZWN0KFwiTWljcm9zb2Z0LlhNTEhUVFBcIikgfSBjYXRjaChlKXsgfTtcbiAgfVxuICBjYW1sX2ZhaWx3aXRoKFwiQ2Fubm90IGNyZWF0ZSBhIFhNTEh0dHBSZXF1ZXN0XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Vycm9yX29mX2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9qc19lcnJvcl9vZl9leGNlcHRpb24oZXhuKSB7XG4gIGlmKGV4bi5qc19lcnJvcikgeyByZXR1cm4gZXhuLmpzX2Vycm9yOyB9XG4gIHJldHVybiBudWxsO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF91cGRhdGVfZHVtbXlcbmZ1bmN0aW9uIGNhbWxfdXBkYXRlX2R1bW15ICh4LCB5KSB7XG4gIGlmKCB0eXBlb2YgeT09PVwiZnVuY3Rpb25cIiApIHsgeC5mdW4gPSB5OyByZXR1cm4gMDsgfVxuICBpZiggeS5mdW4gKSB7IHguZnVuID0geS5mdW47IHJldHVybiAwOyB9XG4gIHZhciBpID0geS5sZW5ndGg7IHdoaWxlIChpLS0pIHhbaV0gPSB5W2ldOyByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfaXNfYmxvY2sgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9vYmpfaXNfYmxvY2sgKHgpIHsgcmV0dXJuICsoeCBpbnN0YW5jZW9mIEFycmF5KTsgfVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3RhZ1xuLy9SZXF1aXJlczogY2FtbF9pc19tbF9ieXRlcywgY2FtbF9pc19tbF9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfb2JqX3RhZyAoeCkge1xuICBpZiAoKHggaW5zdGFuY2VvZiBBcnJheSkgJiYgeFswXSA9PSAoeFswXSA+Pj4gMCkpXG4gICAgcmV0dXJuIHhbMF1cbiAgZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyh4KSlcbiAgICByZXR1cm4gMjUyXG4gIGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKHgpKVxuICAgIHJldHVybiAyNTJcbiAgZWxzZSBpZiAoKHggaW5zdGFuY2VvZiBGdW5jdGlvbikgfHwgdHlwZW9mIHggPT0gXCJmdW5jdGlvblwiKVxuICAgIHJldHVybiAyNDdcbiAgZWxzZSBpZiAoeCAmJiB4LmNhbWxfY3VzdG9tKVxuICAgIHJldHVybiAyNTVcbiAgZWxzZVxuICAgIHJldHVybiAxMDAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3NldF90YWcgKG11dGFibGUsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9vYmpfc2V0X3RhZyAoeCwgdGFnKSB7IHhbMF0gPSB0YWc7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX29ial9ibG9jayBjb25zdCAoY29uc3QsY29uc3QpXG5mdW5jdGlvbiBjYW1sX29ial9ibG9jayAodGFnLCBzaXplKSB7XG4gIHZhciBvID0gbmV3IEFycmF5KHNpemUrMSk7XG4gIG9bMF09dGFnO1xuICBmb3IgKHZhciBpID0gMTsgaSA8PSBzaXplOyBpKyspIG9baV0gPSAwO1xuICByZXR1cm4gbztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfd2l0aF90YWdcbmZ1bmN0aW9uIGNhbWxfb2JqX3dpdGhfdGFnKHRhZyx4KSB7XG4gIHZhciBsID0geC5sZW5ndGg7XG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICBhWzBdID0gdGFnO1xuICBmb3IodmFyIGkgPSAxOyBpIDwgbDsgaSsrICkgYVtpXSA9IHhbaV07XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9kdXAgbXV0YWJsZSAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX29ial9kdXAgKHgpIHtcbiAgdmFyIGwgPSB4Lmxlbmd0aDtcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsOyBpKysgKSBhW2ldID0geFtpXTtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3RydW5jYXRlIChtdXRhYmxlLCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9vYmpfdHJ1bmNhdGUgKHgsIHMpIHtcbiAgaWYgKHM8PTAgfHwgcyArIDEgPiB4Lmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiT2JqLnRydW5jYXRlXCIpO1xuICBpZiAoeC5sZW5ndGggIT0gcyArIDEpIHgubGVuZ3RoID0gcyArIDE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9tYWtlX2ZvcndhcmRcbmZ1bmN0aW9uIGNhbWxfb2JqX21ha2VfZm9yd2FyZCAoYix2KSB7XG4gIGJbMF09MjUwO1xuICBiWzFdPXY7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGF6eV9tYWtlX2ZvcndhcmQgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9sYXp5X21ha2VfZm9yd2FyZCAodikgeyByZXR1cm4gWzI1MCwgdl07IH1cblxuLy8vLy8vLy8vLy8vLyBDYW1saW50ZXJuYWxPT1xuLy9Qcm92aWRlczogY2FtbF9nZXRfcHVibGljX21ldGhvZCBjb25zdFxudmFyIGNhbWxfbWV0aG9kX2NhY2hlID0gW107XG5mdW5jdGlvbiBjYW1sX2dldF9wdWJsaWNfbWV0aG9kIChvYmosIHRhZywgY2FjaGVpZCkge1xuICB2YXIgbWV0aHMgPSBvYmpbMV07XG4gIHZhciBvZnMgPSBjYW1sX21ldGhvZF9jYWNoZVtjYWNoZWlkXTtcbiAgaWYgKG9mcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gTWFrZSBzdXJlIHRoZSBhcnJheSBpcyBub3Qgc3BhcnNlXG4gICAgZm9yICh2YXIgaSA9IGNhbWxfbWV0aG9kX2NhY2hlLmxlbmd0aDsgaSA8IGNhY2hlaWQ7IGkrKylcbiAgICAgIGNhbWxfbWV0aG9kX2NhY2hlW2ldID0gMDtcbiAgfSBlbHNlIGlmIChtZXRoc1tvZnNdID09PSB0YWcpIHtcbiAgICByZXR1cm4gbWV0aHNbb2ZzIC0gMV07XG4gIH1cbiAgdmFyIGxpID0gMywgaGkgPSBtZXRoc1sxXSAqIDIgKyAxLCBtaTtcbiAgd2hpbGUgKGxpIDwgaGkpIHtcbiAgICBtaSA9ICgobGkraGkpID4+IDEpIHwgMTtcbiAgICBpZiAodGFnIDwgbWV0aHNbbWkrMV0pIGhpID0gbWktMjtcbiAgICBlbHNlIGxpID0gbWk7XG4gIH1cbiAgY2FtbF9tZXRob2RfY2FjaGVbY2FjaGVpZF0gPSBsaSArIDE7XG4gIC8qIHJldHVybiAwIGlmIHRhZyBpcyBub3QgdGhlcmUgKi9cbiAgcmV0dXJuICh0YWcgPT0gbWV0aHNbbGkrMV0gPyBtZXRoc1tsaV0gOiAwKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vb19sYXN0X2lkXG52YXIgY2FtbF9vb19sYXN0X2lkID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9zZXRfb29faWRcbi8vUmVxdWlyZXM6IGNhbWxfb29fbGFzdF9pZFxuZnVuY3Rpb24gY2FtbF9zZXRfb29faWQgKGIpIHtcbiAgYlsyXT1jYW1sX29vX2xhc3RfaWQrKztcbiAgcmV0dXJuIGI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZnJlc2hfb29faWQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfb29fbGFzdF9pZFxuZnVuY3Rpb24gY2FtbF9mcmVzaF9vb19pZCgpIHtcbiAgcmV0dXJuIGNhbWxfb29fbGFzdF9pZCsrO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9yYXdfZmllbGRcbmZ1bmN0aW9uIGNhbWxfb2JqX3Jhd19maWVsZChvLGkpIHsgcmV0dXJuIG9baSsxXSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3NldF9yYXdfZmllbGRcbmZ1bmN0aW9uIGNhbWxfb2JqX3NldF9yYXdfZmllbGQobyxpLHYpIHsgcmV0dXJuIG9baSsxXSA9IHYgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9yZWFjaGFibGVfd29yZHNcbmZ1bmN0aW9uIGNhbWxfb2JqX3JlYWNoYWJsZV93b3JkcyhvKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2FkZF9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfb2JqX2FkZF9vZmZzZXQodixvZmZzZXQpIHtcbiAgY2FtbF9mYWlsd2l0aChcIk9iai5hZGRfb2Zmc2V0IGlzIG5vdCBzdXBwb3J0ZWRcIik7XG59XG4iLCIvLy8vLy8vLy8gQklHU1RSSU5HXG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfYmlnc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FyclxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9iaWdzdHJpbmcoaCwgYnMpIHtcbiAgcmV0dXJuIGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyKGgsYnMuZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ190b19hcnJheV9idWZmZXIgbXV0YWJsZVxuZnVuY3Rpb24gYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlcihicykge1xuICByZXR1cm4gYnMuZGF0YS5idWZmZXJcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5IG11dGFibGVcbmZ1bmN0aW9uIGJpZ3N0cmluZ190b190eXBlZF9hcnJheShicykge1xuICByZXR1cm4gYnMuZGF0YVxufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gYmlnc3RyaW5nX29mX2FycmF5X2J1ZmZlcihhYikge1xuICB2YXIgdGEgPSBuZXcgZ2xvYmFsVGhpcy5VaW50OEFycmF5KGFiKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSgxMiwgMCwgW3RhLmxlbmd0aF0sIHRhKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5KGJhKSB7XG4gIHZhciB0YSA9IG5ldyBnbG9iYWxUaGlzLlVpbnQ4QXJyYXkoYmEuYnVmZmVyLCBiYS5ieXRlT2Zmc2V0LCBiYS5sZW5ndGggKiBiYS5CWVRFU19QRVJfRUxFTUVOVCk7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoMTIsIDAsIFt0YS5sZW5ndGhdLCB0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX21lbWNtcFxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfMVxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfbWVtY21wKHMxLCBwb3MxLCBzMiwgcG9zMiwgbGVuKXtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciBhID0gY2FtbF9iYV9nZXRfMShzMSxwb3MxICsgaSk7XG4gICAgdmFyIGIgPSBjYW1sX2JhX2dldF8xKHMyLHBvczIgKyBpKTtcbiAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmEoYmExLCBwb3MxLCBiYTIsIHBvczIsIGxlbil7XG4gIGlmKDEyICE9IGJhMS5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmKDEyICE9IGJhMi5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgdmFyIG9mczEgPSBiYTEub2Zmc2V0KHBvczEpO1xuICB2YXIgb2ZzMiA9IGJhMi5vZmZzZXQocG9zMik7XG4gIGlmKG9mczEgKyBsZW4gPiBiYTEuZGF0YS5sZW5ndGgpe1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICBpZihvZnMyICsgbGVuID4gYmEyLmRhdGEubGVuZ3RoKXtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgdmFyIHNsaWNlID0gYmExLmRhdGEuc3ViYXJyYXkob2ZzMSxvZnMxK2xlbik7XG4gIGJhMi5kYXRhLnNldChzbGljZSxwb3MyKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmFcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF9hcnJheV9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmEoc3RyMSwgcG9zMSwgYmEyLCBwb3MyLCBsZW4pe1xuICBpZigxMiAhPSBiYTIua2luZClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYobGVuID09IDApIHJldHVybiAwO1xuICB2YXIgb2ZzMiA9IGJhMi5vZmZzZXQocG9zMik7XG4gIGlmKHBvczEgKyBsZW4gPiBjYW1sX21sX3N0cmluZ19sZW5ndGgoc3RyMSkpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgaWYob2ZzMiArIGxlbiA+IGJhMi5kYXRhLmxlbmd0aCkge1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBjYW1sX2FycmF5X29mX3N0cmluZyhzdHIxKS5zbGljZShwb3MxLHBvczEgKyBsZW4pO1xuICBiYTIuZGF0YS5zZXQoc2xpY2Usb2ZzMik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYnl0ZXNfdG9fYmFcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF9hcnJheV9vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfYmlnc3RyaW5nX2JsaXRfYnl0ZXNfdG9fYmEoc3RyMSwgcG9zMSwgYmEyLCBwb3MyLCBsZW4pe1xuICBpZigxMiAhPSBiYTIua2luZClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYobGVuID09IDApIHJldHVybiAwO1xuICB2YXIgb2ZzMiA9IGJhMi5vZmZzZXQocG9zMik7XG4gIGlmKHBvczEgKyBsZW4gPiBjYW1sX21sX2J5dGVzX2xlbmd0aChzdHIxKSkge1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICBpZihvZnMyICsgbGVuID4gYmEyLmRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIHZhciBzbGljZSA9IGNhbWxfYXJyYXlfb2ZfYnl0ZXMoc3RyMSkuc2xpY2UocG9zMSxwb3MxICsgbGVuKTtcbiAgYmEyLmRhdGEuc2V0KHNsaWNlLG9mczIpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYXJyYXlfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfYmxpdF9ieXRlcywgY2FtbF9ieXRlc19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXMoYmExLCBwb3MxLCBieXRlczIsIHBvczIsIGxlbil7XG4gIGlmKDEyICE9IGJhMS5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMxID0gYmExLm9mZnNldChwb3MxKTtcbiAgaWYob2ZzMSArIGxlbiA+IGJhMS5kYXRhLmxlbmd0aCl7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmKHBvczIgKyBsZW4gPiBjYW1sX21sX2J5dGVzX2xlbmd0aChieXRlczIpKXtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgdmFyIHNsaWNlID0gYmExLmRhdGEuc2xpY2Uob2ZzMSwgb2ZzMStsZW4pO1xuICBjYW1sX2JsaXRfYnl0ZXMoY2FtbF9ieXRlc19vZl9hcnJheShzbGljZSksIDAsIGJ5dGVzMiwgcG9zMiwgbGVuKTtcbiAgcmV0dXJuIDBcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXMgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXMgKCkgeyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9iYWNrdHJhY2Vfc3RhdHVzIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2JhY2t0cmFjZV9zdGF0dXMgKCkgeyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9nZXRfZXhjZXB0aW9uX2JhY2t0cmFjZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9nZXRfZXhjZXB0aW9uX2JhY2t0cmFjZSAoKSB7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9leGNlcHRpb25fcmF3X2JhY2t0cmFjZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2UgKCkgeyByZXR1cm4gWzBdOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3JlY29yZF9iYWNrdHJhY2VcbmZ1bmN0aW9uIGNhbWxfcmVjb3JkX2JhY2t0cmFjZSAoKSB7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2UgKCkgeyByZXR1cm4gWzBdOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3Jhd19iYWNrdHJhY2VfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3Jhd19iYWNrdHJhY2VfbGVuZ3RoKCkgeyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdFxuZnVuY3Rpb24gY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdCgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3QgKCkge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJQcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZV9zbG90OiBpbmRleCBvdXQgb2YgYm91bmRzXCIpO1xufVxuLy9Qcm92aWRlczogY2FtbF9yZXN0b3JlX3Jhd19iYWNrdHJhY2VcbmZ1bmN0aW9uIGNhbWxfcmVzdG9yZV9yYXdfYmFja3RyYWNlKGV4biwgYnQpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2sgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZ2V0X2N1cnJlbnRfY2FsbHN0YWNrICgpIHsgcmV0dXJuIFswXTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90KCl7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90XCIpO1xufVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RpdmUgQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAqL1xuLyogIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCAgICAqL1xuLyogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB3aXRoICAgICAqL1xuLyogIHRoZSBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiBmaWxlIC4uL0xJQ0VOU0UuICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKiAkSWQ6IGxleGluZy5jIDYwNDUgMjAwNC0wMS0wMSAxNjo0Mjo0M1ogZG9saWdleiAkICovXG5cbi8qIFRoZSB0YWJsZS1kcml2ZW4gYXV0b21hdG9uIGZvciBsZXhlcnMgZ2VuZXJhdGVkIGJ5IGNhbWxsZXguICovXG5cbi8vUHJvdmlkZXM6IGNhbWxfbGV4X2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2xleF9hcnJheShzKSB7XG4gIHMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpO1xuICB2YXIgbCA9IHMubGVuZ3RoIC8gMjtcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgIGFbaV0gPSAocy5jaGFyQ29kZUF0KDIgKiBpKSB8IChzLmNoYXJDb2RlQXQoMiAqIGkgKyAxKSA8PCA4KSkgPDwgMTYgPj4gMTY7XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xleF9lbmdpbmVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfbGV4X2FycmF5LCBjYW1sX2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2xleF9lbmdpbmUodGJsLCBzdGFydF9zdGF0ZSwgbGV4YnVmKSB7XG4gIHZhciBsZXhfYnVmZmVyID0gMjtcbiAgdmFyIGxleF9idWZmZXJfbGVuID0gMztcbiAgdmFyIGxleF9zdGFydF9wb3MgPSA1O1xuICB2YXIgbGV4X2N1cnJfcG9zID0gNjtcbiAgdmFyIGxleF9sYXN0X3BvcyA9IDc7XG4gIHZhciBsZXhfbGFzdF9hY3Rpb24gPSA4O1xuICB2YXIgbGV4X2VvZl9yZWFjaGVkID0gOTtcbiAgdmFyIGxleF9iYXNlID0gMTtcbiAgdmFyIGxleF9iYWNrdHJrID0gMjtcbiAgdmFyIGxleF9kZWZhdWx0ID0gMztcbiAgdmFyIGxleF90cmFucyA9IDQ7XG4gIHZhciBsZXhfY2hlY2sgPSA1O1xuXG4gIGlmICghdGJsLmxleF9kZWZhdWx0KSB7XG4gICAgdGJsLmxleF9iYXNlID0gICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFzZV0pO1xuICAgIHRibC5sZXhfYmFja3RyayA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2JhY2t0cmtdKTtcbiAgICB0YmwubGV4X2NoZWNrID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9jaGVja10pO1xuICAgIHRibC5sZXhfdHJhbnMgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X3RyYW5zXSk7XG4gICAgdGJsLmxleF9kZWZhdWx0ID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfZGVmYXVsdF0pO1xuICB9XG5cbiAgdmFyIGMsIHN0YXRlID0gc3RhcnRfc3RhdGU7XG5cbiAgdmFyIGJ1ZmZlciA9IGNhbWxfYXJyYXlfb2ZfYnl0ZXMobGV4YnVmW2xleF9idWZmZXJdKTtcblxuICBpZiAoc3RhdGUgPj0gMCkge1xuICAgIC8qIEZpcnN0IGVudHJ5ICovXG4gICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X3N0YXJ0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTtcbiAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IC0xO1xuICB9IGVsc2Uge1xuICAgIC8qIFJlZW50cnkgYWZ0ZXIgcmVmaWxsICovXG4gICAgc3RhdGUgPSAtc3RhdGUgLSAxO1xuICB9XG4gIGZvcig7Oykge1xuICAgIC8qIExvb2t1cCBiYXNlIGFkZHJlc3Mgb3IgYWN0aW9uIG51bWJlciBmb3IgY3VycmVudCBzdGF0ZSAqL1xuICAgIHZhciBiYXNlID0gdGJsLmxleF9iYXNlW3N0YXRlXTtcbiAgICBpZiAoYmFzZSA8IDApIHJldHVybiAtYmFzZS0xO1xuICAgIC8qIFNlZSBpZiBpdCdzIGEgYmFja3RyYWNrIHBvaW50ICovXG4gICAgdmFyIGJhY2t0cmsgPSB0YmwubGV4X2JhY2t0cmtbc3RhdGVdO1xuICAgIGlmIChiYWNrdHJrID49IDApIHtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IGJhY2t0cms7XG4gICAgfVxuICAgIC8qIFNlZSBpZiB3ZSBuZWVkIGEgcmVmaWxsICovXG4gICAgaWYgKGxleGJ1ZltsZXhfY3Vycl9wb3NdID49IGxleGJ1ZltsZXhfYnVmZmVyX2xlbl0pe1xuICAgICAgaWYgKGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID09IDApXG4gICAgICAgIHJldHVybiAtc3RhdGUgLSAxO1xuICAgICAgZWxzZVxuICAgICAgICBjID0gMjU2O1xuICAgIH1lbHNle1xuICAgICAgLyogUmVhZCBuZXh0IGlucHV0IGNoYXIgKi9cbiAgICAgIGMgPSBidWZmZXJbbGV4YnVmW2xleF9jdXJyX3Bvc11dO1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gKys7XG4gICAgfVxuICAgIC8qIERldGVybWluZSBuZXh0IHN0YXRlICovXG4gICAgaWYgKHRibC5sZXhfY2hlY2tbYmFzZSArIGNdID09IHN0YXRlKVxuICAgICAgc3RhdGUgPSB0YmwubGV4X3RyYW5zW2Jhc2UgKyBjXTtcbiAgICBlbHNlXG4gICAgICBzdGF0ZSA9IHRibC5sZXhfZGVmYXVsdFtzdGF0ZV07XG4gICAgLyogSWYgbm8gdHJhbnNpdGlvbiBvbiB0aGlzIGNoYXIsIHJldHVybiB0byBsYXN0IGJhY2t0cmFjayBwb2ludCAqL1xuICAgIGlmIChzdGF0ZSA8IDApIHtcbiAgICAgIGxleGJ1ZltsZXhfY3Vycl9wb3NdID0gbGV4YnVmW2xleF9sYXN0X3Bvc107XG4gICAgICBpZiAobGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPT0gLTEpXG4gICAgICAgIGNhbWxfZmFpbHdpdGgoXCJsZXhpbmc6IGVtcHR5IHRva2VuXCIpO1xuICAgICAgZWxzZVxuICAgICAgICByZXR1cm4gbGV4YnVmW2xleF9sYXN0X2FjdGlvbl07XG4gICAgfWVsc2V7XG4gICAgICAvKiBFcmFzZSB0aGUgRU9GIGNvbmRpdGlvbiBvbmx5IGlmIHRoZSBFT0YgcHNldWRvLWNoYXJhY3RlciB3YXNcbiAgICAgICAgIGNvbnN1bWVkIGJ5IHRoZSBhdXRvbWF0b24gKGkuZS4gdGhlcmUgd2FzIG5vIGJhY2t0cmFjayBhYm92ZSlcbiAgICAgICovXG4gICAgICBpZiAoYyA9PSAyNTYpIGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID0gMDtcbiAgICB9XG4gIH1cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogTmV3IGxleGVyIGVuZ2luZSwgd2l0aCBtZW1vcnkgb2YgcG9zaXRpb25zICAqL1xuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX25ld19sZXhfZW5naW5lXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCBjYW1sX2xleF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9hcnJheV9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9sZXhfcnVuX21lbShzLCBpLCBtZW0sIGN1cnJfcG9zKSB7XG4gIGZvciAoOzspIHtcbiAgICB2YXIgZHN0ID0gcy5jaGFyQ29kZUF0KGkpOyBpKys7XG4gICAgaWYgKGRzdCA9PSAweGZmKSByZXR1cm47XG4gICAgdmFyIHNyYyA9IHMuY2hhckNvZGVBdChpKTsgaSsrO1xuICAgIGlmIChzcmMgPT0gMHhmZilcbiAgICAgIG1lbSBbZHN0ICsgMV0gPSBjdXJyX3BvcztcbiAgICBlbHNlXG4gICAgICBtZW0gW2RzdCArIDFdID0gbWVtIFtzcmMgKyAxXTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjYW1sX2xleF9ydW5fdGFnKHMsIGksIG1lbSkge1xuICBmb3IgKDs7KSB7XG4gICAgdmFyIGRzdCA9IHMuY2hhckNvZGVBdChpKTsgaSsrO1xuICAgIGlmIChkc3QgPT0gMHhmZikgcmV0dXJuIDtcbiAgICB2YXIgc3JjID0gcy5jaGFyQ29kZUF0KGkpOyBpKys7XG4gICAgaWYgKHNyYyA9PSAweGZmKVxuICAgICAgbWVtIFtkc3QgKyAxXSA9IC0xO1xuICAgIGVsc2VcbiAgICAgIG1lbSBbZHN0ICsgMV0gPSBtZW0gW3NyYyArIDFdO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNhbWxfbmV3X2xleF9lbmdpbmUodGJsLCBzdGFydF9zdGF0ZSwgbGV4YnVmKSB7XG4gIHZhciBsZXhfYnVmZmVyID0gMjtcbiAgdmFyIGxleF9idWZmZXJfbGVuID0gMztcbiAgdmFyIGxleF9zdGFydF9wb3MgPSA1O1xuICB2YXIgbGV4X2N1cnJfcG9zID0gNjtcbiAgdmFyIGxleF9sYXN0X3BvcyA9IDc7XG4gIHZhciBsZXhfbGFzdF9hY3Rpb24gPSA4O1xuICB2YXIgbGV4X2VvZl9yZWFjaGVkID0gOTtcbiAgdmFyIGxleF9tZW0gPSAxMDtcbiAgdmFyIGxleF9iYXNlID0gMTtcbiAgdmFyIGxleF9iYWNrdHJrID0gMjtcbiAgdmFyIGxleF9kZWZhdWx0ID0gMztcbiAgdmFyIGxleF90cmFucyA9IDQ7XG4gIHZhciBsZXhfY2hlY2sgPSA1O1xuICB2YXIgbGV4X2Jhc2VfY29kZSA9IDY7XG4gIHZhciBsZXhfYmFja3Rya19jb2RlID0gNztcbiAgdmFyIGxleF9kZWZhdWx0X2NvZGUgPSA4O1xuICB2YXIgbGV4X3RyYW5zX2NvZGUgPSA5O1xuICB2YXIgbGV4X2NoZWNrX2NvZGUgPSAxMDtcbiAgdmFyIGxleF9jb2RlID0gMTE7XG5cbiAgaWYgKCF0YmwubGV4X2RlZmF1bHQpIHtcbiAgICB0YmwubGV4X2Jhc2UgPSAgICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYXNlXSk7XG4gICAgdGJsLmxleF9iYWNrdHJrID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFja3Rya10pO1xuICAgIHRibC5sZXhfY2hlY2sgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2NoZWNrXSk7XG4gICAgdGJsLmxleF90cmFucyA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfdHJhbnNdKTtcbiAgICB0YmwubGV4X2RlZmF1bHQgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9kZWZhdWx0XSk7XG4gIH1cbiAgaWYgKCF0YmwubGV4X2RlZmF1bHRfY29kZSkge1xuICAgIHRibC5sZXhfYmFzZV9jb2RlID0gICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFzZV9jb2RlXSk7XG4gICAgdGJsLmxleF9iYWNrdHJrX2NvZGUgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYWNrdHJrX2NvZGVdKTtcbiAgICB0YmwubGV4X2NoZWNrX2NvZGUgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2NoZWNrX2NvZGVdKTtcbiAgICB0YmwubGV4X3RyYW5zX2NvZGUgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X3RyYW5zX2NvZGVdKTtcbiAgICB0YmwubGV4X2RlZmF1bHRfY29kZSA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2RlZmF1bHRfY29kZV0pO1xuICB9XG4gIGlmICh0YmwubGV4X2NvZGUgPT0gbnVsbCkgdGJsLmxleF9jb2RlID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyh0YmxbbGV4X2NvZGVdKTtcblxuICB2YXIgYywgc3RhdGUgPSBzdGFydF9zdGF0ZTtcblxuICB2YXIgYnVmZmVyID0gY2FtbF9hcnJheV9vZl9ieXRlcyhsZXhidWZbbGV4X2J1ZmZlcl0pO1xuXG4gIGlmIChzdGF0ZSA+PSAwKSB7XG4gICAgLyogRmlyc3QgZW50cnkgKi9cbiAgICBsZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhfc3RhcnRfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3NdO1xuICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gLTE7XG4gIH0gZWxzZSB7XG4gICAgLyogUmVlbnRyeSBhZnRlciByZWZpbGwgKi9cbiAgICBzdGF0ZSA9IC1zdGF0ZSAtIDE7XG4gIH1cbiAgZm9yKDs7KSB7XG4gICAgLyogTG9va3VwIGJhc2UgYWRkcmVzcyBvciBhY3Rpb24gbnVtYmVyIGZvciBjdXJyZW50IHN0YXRlICovXG4gICAgdmFyIGJhc2UgPSB0YmwubGV4X2Jhc2Vbc3RhdGVdO1xuICAgIGlmIChiYXNlIDwgMCkge1xuICAgICAgdmFyIHBjX29mZiA9IHRibC5sZXhfYmFzZV9jb2RlW3N0YXRlXTtcbiAgICAgIGNhbWxfbGV4X3J1bl90YWcodGJsLmxleF9jb2RlLCBwY19vZmYsIGxleGJ1ZltsZXhfbWVtXSk7XG4gICAgICByZXR1cm4gLWJhc2UtMTtcbiAgICB9XG4gICAgLyogU2VlIGlmIGl0J3MgYSBiYWNrdHJhY2sgcG9pbnQgKi9cbiAgICB2YXIgYmFja3RyayA9IHRibC5sZXhfYmFja3Rya1tzdGF0ZV07XG4gICAgaWYgKGJhY2t0cmsgPj0gMCkge1xuICAgICAgdmFyIHBjX29mZiA9IHRibC5sZXhfYmFja3Rya19jb2RlW3N0YXRlXTtcbiAgICAgIGNhbWxfbGV4X3J1bl90YWcodGJsLmxleF9jb2RlLCBwY19vZmYsIGxleGJ1ZltsZXhfbWVtXSk7XG4gICAgICBsZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3NdO1xuICAgICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSBiYWNrdHJrO1xuICAgIH1cbiAgICAvKiBTZWUgaWYgd2UgbmVlZCBhIHJlZmlsbCAqL1xuICAgIGlmIChsZXhidWZbbGV4X2N1cnJfcG9zXSA+PSBsZXhidWZbbGV4X2J1ZmZlcl9sZW5dKXtcbiAgICAgIGlmIChsZXhidWZbbGV4X2VvZl9yZWFjaGVkXSA9PSAwKVxuICAgICAgICByZXR1cm4gLXN0YXRlIC0gMTtcbiAgICAgIGVsc2VcbiAgICAgICAgYyA9IDI1NjtcbiAgICB9ZWxzZXtcbiAgICAgIC8qIFJlYWQgbmV4dCBpbnB1dCBjaGFyICovXG4gICAgICBjID0gYnVmZmVyW2xleGJ1ZltsZXhfY3Vycl9wb3NdXTtcbiAgICAgIGxleGJ1ZltsZXhfY3Vycl9wb3NdICsrO1xuICAgIH1cbiAgICAvKiBEZXRlcm1pbmUgbmV4dCBzdGF0ZSAqL1xuICAgIHZhciBwc3RhdGUgPSBzdGF0ZSA7XG4gICAgaWYgKHRibC5sZXhfY2hlY2tbYmFzZSArIGNdID09IHN0YXRlKVxuICAgICAgc3RhdGUgPSB0YmwubGV4X3RyYW5zW2Jhc2UgKyBjXTtcbiAgICBlbHNlXG4gICAgICBzdGF0ZSA9IHRibC5sZXhfZGVmYXVsdFtzdGF0ZV07XG4gICAgLyogSWYgbm8gdHJhbnNpdGlvbiBvbiB0aGlzIGNoYXIsIHJldHVybiB0byBsYXN0IGJhY2t0cmFjayBwb2ludCAqL1xuICAgIGlmIChzdGF0ZSA8IDApIHtcbiAgICAgIGxleGJ1ZltsZXhfY3Vycl9wb3NdID0gbGV4YnVmW2xleF9sYXN0X3Bvc107XG4gICAgICBpZiAobGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPT0gLTEpXG4gICAgICAgIGNhbWxfZmFpbHdpdGgoXCJsZXhpbmc6IGVtcHR5IHRva2VuXCIpO1xuICAgICAgZWxzZVxuICAgICAgICByZXR1cm4gbGV4YnVmW2xleF9sYXN0X2FjdGlvbl07XG4gICAgfWVsc2V7XG4gICAgICAvKiBJZiBzb21lIHRyYW5zaXRpb24sIGdldCBhbmQgcGVyZm9ybSBtZW1vcnkgbW92ZXMgKi9cbiAgICAgIHZhciBiYXNlX2NvZGUgPSB0YmwubGV4X2Jhc2VfY29kZVtwc3RhdGVdLCBwY19vZmY7XG4gICAgICBpZiAodGJsLmxleF9jaGVja19jb2RlW2Jhc2VfY29kZSArIGNdID09IHBzdGF0ZSlcbiAgICAgICAgcGNfb2ZmID0gdGJsLmxleF90cmFuc19jb2RlW2Jhc2VfY29kZSArIGNdO1xuICAgICAgZWxzZVxuICAgICAgICBwY19vZmYgPSB0YmwubGV4X2RlZmF1bHRfY29kZVtwc3RhdGVdO1xuICAgICAgaWYgKHBjX29mZiA+IDApXG4gICAgICAgIGNhbWxfbGV4X3J1bl9tZW1cbiAgICAgICh0YmwubGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dLCBsZXhidWZbbGV4X2N1cnJfcG9zXSk7XG4gICAgICAvKiBFcmFzZSB0aGUgRU9GIGNvbmRpdGlvbiBvbmx5IGlmIHRoZSBFT0YgcHNldWRvLWNoYXJhY3RlciB3YXNcbiAgICAgICAgIGNvbnN1bWVkIGJ5IHRoZSBhdXRvbWF0b24gKGkuZS4gdGhlcmUgd2FzIG5vIGJhY2t0cmFjayBhYm92ZSlcbiAgICAgICovXG4gICAgICBpZiAoYyA9PSAyNTYpIGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID0gMDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gQXJyYXlcblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9zdWIgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9hcnJheV9zdWIgKGEsIGksIGxlbikge1xuICB2YXIgYTIgPSBuZXcgQXJyYXkobGVuKzEpO1xuICBhMlswXT0wO1xuICBmb3IodmFyIGkyID0gMSwgaTE9IGkrMTsgaTIgPD0gbGVuOyBpMisrLGkxKysgKXtcbiAgICBhMltpMl09YVtpMV07XG4gIH1cbiAgcmV0dXJuIGEyO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2FwcGVuZCBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2FycmF5X2FwcGVuZChhMSwgYTIpIHtcbiAgdmFyIGwxID0gYTEubGVuZ3RoLCBsMiA9IGEyLmxlbmd0aDtcbiAgdmFyIGwgPSBsMStsMi0xXG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICBhWzBdID0gMDtcbiAgdmFyIGkgPSAxLGogPSAxO1xuICBmb3IoO2k8bDE7aSsrKSBhW2ldPWExW2ldO1xuICBmb3IoO2k8bDtpKyssaisrKSBhW2ldPWEyW2pdO1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9jb25jYXQgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9hcnJheV9jb25jYXQobCkge1xuICB2YXIgYSA9IFswXTtcbiAgd2hpbGUgKGwgIT09IDApIHtcbiAgICB2YXIgYiA9IGxbMV07XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBiLmxlbmd0aDsgaSsrKSBhLnB1c2goYltpXSk7XG4gICAgbCA9IGxbMl07XG4gIH1cbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfYmxpdFxuZnVuY3Rpb24gY2FtbF9hcnJheV9ibGl0KGExLCBpMSwgYTIsIGkyLCBsZW4pIHtcbiAgaWYgKGkyIDw9IGkxKSB7XG4gICAgZm9yICh2YXIgaiA9IDE7IGogPD0gbGVuOyBqKyspIGEyW2kyICsgal0gPSBhMVtpMSArIGpdO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGogPSBsZW47IGogPj0gMTsgai0tKSBhMltpMiArIGpdID0gYTFbaTEgKyBqXTtcbiAgfTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRhcnJheV9ibGl0XG5mdW5jdGlvbiBjYW1sX2Zsb2F0YXJyYXlfYmxpdChhMSwgaTEsIGEyLCBpMiwgbGVuKSB7XG4gIGlmIChpMiA8PSBpMSkge1xuICAgIGZvciAodmFyIGogPSAxOyBqIDw9IGxlbjsgaisrKSBhMltpMiArIGpdID0gYTFbaTEgKyBqXTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBqID0gbGVuOyBqID49IDE7IGotLSkgYTJbaTIgKyBqXSA9IGExW2kxICsgal07XG4gIH07XG4gIHJldHVybiAwO1xufVxuXG4vLy8vLy8vLy8vLy8vIFBlcnZhc2l2ZVxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9zZXQgKG11dGFibGUsIGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfc2V0IChhcnJheSwgaW5kZXgsIG5ld3ZhbCkge1xuICBpZiAoKGluZGV4IDwgMCkgfHwgKGluZGV4ID49IGFycmF5Lmxlbmd0aCAtIDEpKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIGFycmF5W2luZGV4KzFdPW5ld3ZhbDsgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfZ2V0IG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfZ2V0IChhcnJheSwgaW5kZXgpIHtcbiAgaWYgKChpbmRleCA8IDApIHx8IChpbmRleCA+PSBhcnJheS5sZW5ndGggLSAxKSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gYXJyYXlbaW5kZXgrMV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfZmlsbFxuZnVuY3Rpb24gY2FtbF9hcnJheV9maWxsKGFycmF5LCBvZnMsIGxlbiwgdil7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKyl7XG4gICAgYXJyYXlbb2ZzK2krMV0gPSB2O1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NoZWNrX2JvdW5kIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2NoZWNrX2JvdW5kIChhcnJheSwgaW5kZXgpIHtcbiAgaWYgKGluZGV4ID4+PiAwID49IGFycmF5Lmxlbmd0aCAtIDEpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGFycmF5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21ha2VfdmVjdCBjb25zdCAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9tYWtlX3ZlY3QgKGxlbiwgaW5pdCkge1xuICBpZiAobGVuIDwgMCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgbGVuID0gbGVuICsgMSB8IDA7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbik7XG4gIGJbMF09MDtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBsZW47IGkrKykgYltpXSA9IGluaXQ7XG4gIHJldHVybiBiO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21ha2VfZmxvYXRfdmVjdCBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX21ha2VfZmxvYXRfdmVjdChsZW4pe1xuICBpZiAobGVuIDwgMCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgbGVuID0gbGVuICsgMSB8IDA7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbik7XG4gIGJbMF09MjU0O1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGxlbjsgaSsrKSBiW2ldID0gMDtcbiAgcmV0dXJuIGJcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRhcnJheV9jcmVhdGUgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9mbG9hdGFycmF5X2NyZWF0ZShsZW4pe1xuICBpZiAobGVuIDwgMCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgbGVuID0gbGVuICsgMSB8IDA7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbik7XG4gIGJbMF09MjU0O1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGxlbjsgaSsrKSBiW2ldID0gMDtcbiAgcmV0dXJuIGJcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLyBXZWFrIEFQSSwgYnV0IHdpdGhvdXQgdGhlIHdlYWsgc2VtYW50aWNzXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG52YXIgY2FtbF9lcGhlX2tleV9vZmZzZXQgPSAzXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldFxudmFyIGNhbWxfZXBoZV9kYXRhX29mZnNldCA9IDJcblxuLy9Qcm92aWRlczogY2FtbF93ZWFrX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2tleV9vZmZzZXQsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF93ZWFrX2NyZWF0ZSAobikge1xuICBpZiAobiA8IDApIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJXZWFrLmNyZWF0ZVwiKTtcbiAgdmFyIHggPSBbMjUxLFwiY2FtbF9lcGhlX2xpc3RfaGVhZFwiXTtcbiAgeC5sZW5ndGggPSBjYW1sX2VwaGVfa2V5X29mZnNldCArIG47XG4gIHJldHVybiB4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3dlYWtfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfa2V5X29mZnNldCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3dlYWtfc2V0KHgsIGksIHYpIHtcbiAgaWYoaSA8IDAgfHwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpID49IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJXZWFrLnNldFwiKTtcbiAgeFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldID0gdjtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3dlYWtfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfa2V5X29mZnNldCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3dlYWtfZ2V0KHgsIGkpIHtcbiAgaWYoaSA8IDAgfHwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpID49IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJXZWFrLmdldF9rZXlcIik7XG4gIHJldHVybiAoeFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGkgXT09PXVuZGVmaW5lZCk/MDp4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3dlYWtfZ2V0X2NvcHlcbi8vUmVxdWlyZXM6IGNhbWxfd2Vha19nZXQsY2FtbF9lcGhlX2tleV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX2R1cCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3dlYWtfZ2V0X2NvcHkoeCwgaSkge1xuICBpZihpIDwgMCB8fCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkgPj0geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuZ2V0X2NvcHlcIik7XG4gIHZhciB5ID0gY2FtbF93ZWFrX2dldCh4LCBpKTtcbiAgaWYgKHkgPT09IDApIHJldHVybiB5O1xuICB2YXIgeiA9IHlbMV07XG4gIGlmICh6IGluc3RhbmNlb2YgQXJyYXkpIHJldHVybiBbMCwgY2FtbF9vYmpfZHVwKHopXTtcbiAgcmV0dXJuIHk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfd2Vha19jaGVjayBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfa2V5X29mZnNldFxuZnVuY3Rpb24gY2FtbF93ZWFrX2NoZWNrKHgsIGkpIHtcbiAgaWYoeFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldIT09dW5kZWZpbmVkICYmIHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXSAhPT0wKVxuICAgIHJldHVybiAxO1xuICBlbHNlXG4gICAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfd2Vha19ibGl0XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JsaXRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX3dlYWtfYmxpdChhMSwgaTEsIGEyLCBpMiwgbGVuKSB7XG4gIC8vIG1pbnVzIG9uZSBiZWNhdXNlIGNhbWxfYXJyYXlfYmxpdCB3b3JrcyBvbiBvY2FtbCBhcnJheVxuICBjYW1sX2FycmF5X2JsaXQoYTEsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaTEgLSAxLFxuICAgICAgICAgICAgICAgICAgYTIsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaTIgLSAxLFxuICAgICAgICAgICAgICAgICAgbGVuKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfd2Vha19jcmVhdGVcbnZhciBjYW1sX2VwaGVfY3JlYXRlID0gY2FtbF93ZWFrX2NyZWF0ZVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfYmxpdF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfd2Vha19ibGl0XG52YXIgY2FtbF9lcGhlX2JsaXRfa2V5ID0gY2FtbF93ZWFrX2JsaXRcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfd2Vha19nZXRcbnZhciBjYW1sX2VwaGVfZ2V0X2tleSA9IGNhbWxfd2Vha19nZXRcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9rZXlfY29weVxuLy9SZXF1aXJlczogY2FtbF93ZWFrX2dldF9jb3B5XG52YXIgY2FtbF9lcGhlX2dldF9rZXlfY29weSA9IGNhbWxfd2Vha19nZXRfY29weVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfY2hlY2tfa2V5XG4vL1JlcXVpcmVzOiBjYW1sX3dlYWtfY2hlY2tcbnZhciBjYW1sX2VwaGVfY2hlY2tfa2V5ID0gY2FtbF93ZWFrX2NoZWNrXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9zZXRfa2V5XG4vL1JlcXVpcmVzOiBjYW1sX3dlYWtfc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfc2V0X2tleSh4LCBpLCB2KSB7XG4gIHJldHVybiBjYW1sX3dlYWtfc2V0KHgsIGksIFswLCB2XSlcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3Vuc2V0X2tleVxuLy9SZXF1aXJlczogY2FtbF93ZWFrX3NldFxuZnVuY3Rpb24gY2FtbF9lcGhlX3Vuc2V0X2tleSh4LCBpKSB7XG4gIHJldHVybiBjYW1sX3dlYWtfc2V0KHgsIGksIDApXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9ibGl0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX2JsaXRfZGF0YShzcmMsIGRzdCl7XG4gIGRzdFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdID0gc3JjW2NhbWxfZXBoZV9kYXRhX29mZnNldF07XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZ2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX2dldF9kYXRhKHgpe1xuICBpZih4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gMDtcbiAgZWxzZVxuICAgIHJldHVybiBbMCwgeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9kYXRhX2NvcHlcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldFxuLy9SZXF1aXJlczogY2FtbF9vYmpfZHVwXG5mdW5jdGlvbiBjYW1sX2VwaGVfZ2V0X2RhdGFfY29weSh4KXtcbiAgaWYoeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIDA7XG4gIGVsc2VcbiAgICByZXR1cm4gWzAsIGNhbWxfb2JqX2R1cCh4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0pXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3NldF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9zZXRfZGF0YSh4LCBkYXRhKXtcbiAgeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdID0gZGF0YTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV91bnNldF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV91bnNldF9kYXRhKHgsIGRhdGEpe1xuICB4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPSB1bmRlZmluZWQ7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfY2hlY2tfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfY2hlY2tfZGF0YSh4KXtcbiAgaWYoeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIDA7XG4gIGVsc2VcbiAgICByZXR1cm4gMTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWQ1X2NoYW5cbi8vUmVxdWlyZXM6IGNhbWxfbWQ1X3N0cmluZywgY2FtbF9zdHJpbmdfb2ZfYXJyYXksY2FtbF9tbF9jaGFubmVsc1xuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSwgY2FtbF9jcmVhdGVfYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX21kNV9jaGFuKGNoYW5pZCxsZW4pe1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgdmFyIGNoYW5fbGVuID0gY2hhbi5maWxlLmxlbmd0aCgpO1xuICBpZihsZW48MCkgbGVuID0gY2hhbl9sZW4gLSBjaGFuLm9mZnNldDtcbiAgaWYoY2hhbi5vZmZzZXQgKyBsZW4gPiBjaGFuX2xlbikgY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSgpO1xuICB2YXIgYnVmID0gY2FtbF9jcmVhdGVfYnl0ZXMobGVuKTtcbiAgY2hhbi5maWxlLnJlYWQoY2hhbi5vZmZzZXQsYnVmLDAsbGVuKTtcbiAgcmV0dXJuIGNhbWxfbWQ1X3N0cmluZyhjYW1sX3N0cmluZ19vZl9ieXRlcyhidWYpLDAsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZDVfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX29mX3N0cmluZywgY2FtbF9tZDVfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWQ1X3N0cmluZyhzLCBvZnMsIGxlbikge1xuICByZXR1cm4gY2FtbF9tZDVfYnl0ZXMoY2FtbF9ieXRlc19vZl9zdHJpbmcocyksb2ZzLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWQ1X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9hcnJheSwgY2FtbF9tbF9ieXRlc19jb250ZW50XG52YXIgY2FtbF9tZDVfYnl0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIGFkZCAoeCwgeSkgeyByZXR1cm4gKHggKyB5KSB8IDA7IH1cbiAgZnVuY3Rpb24geHgocSxhLGIseCxzLHQpIHtcbiAgICBhID0gYWRkKGFkZChhLCBxKSwgYWRkKHgsIHQpKTtcbiAgICByZXR1cm4gYWRkKChhIDw8IHMpIHwgKGEgPj4+ICgzMiAtIHMpKSwgYik7XG4gIH1cbiAgZnVuY3Rpb24gZmYoYSxiLGMsZCx4LHMsdCkge1xuICAgIHJldHVybiB4eCgoYiAmIGMpIHwgKCh+YikgJiBkKSwgYSwgYiwgeCwgcywgdCk7XG4gIH1cbiAgZnVuY3Rpb24gZ2coYSxiLGMsZCx4LHMsdCkge1xuICAgIHJldHVybiB4eCgoYiAmIGQpIHwgKGMgJiAofmQpKSwgYSwgYiwgeCwgcywgdCk7XG4gIH1cbiAgZnVuY3Rpb24gaGgoYSxiLGMsZCx4LHMsdCkgeyByZXR1cm4geHgoYiBeIGMgXiBkLCBhLCBiLCB4LCBzLCB0KTsgfVxuICBmdW5jdGlvbiBpaShhLGIsYyxkLHgscyx0KSB7IHJldHVybiB4eChjIF4gKGIgfCAofmQpKSwgYSwgYiwgeCwgcywgdCk7IH1cblxuICBmdW5jdGlvbiBtZDUoYnVmZmVyLCBsZW5ndGgpIHtcbiAgICB2YXIgaSA9IGxlbmd0aDtcbiAgICBidWZmZXJbaSA+PiAyXSB8PSAweDgwIDw8ICg4ICogKGkgJiAzKSk7XG4gICAgZm9yIChpID0gKGkgJiB+MHgzKSArIDg7KGkgJiAweDNGKSA8IDYwIDtpICs9IDQpXG4gICAgICBidWZmZXJbKGkgPj4gMikgLSAxXSA9IDA7XG4gICAgYnVmZmVyWyhpID4+IDIpIC0xXSA9IGxlbmd0aCA8PCAzO1xuICAgIGJ1ZmZlcltpID4+IDJdID0gKGxlbmd0aCA+PiAyOSkgJiAweDFGRkZGRkZGO1xuXG4gICAgdmFyIHcgPSBbMHg2NzQ1MjMwMSwgMHhFRkNEQUI4OSwgMHg5OEJBRENGRSwgMHgxMDMyNTQ3Nl07XG5cbiAgICBmb3IoaSA9IDA7IGkgPCBidWZmZXIubGVuZ3RoOyBpICs9IDE2KSB7XG4gICAgICB2YXIgYSA9IHdbMF0sIGIgPSB3WzFdLCBjID0gd1syXSwgZCA9IHdbM107XG5cbiAgICAgIGEgPSBmZihhLCBiLCBjLCBkLCBidWZmZXJbaSsgMF0sIDcsIDB4RDc2QUE0NzgpO1xuICAgICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlcltpKyAxXSwgMTIsIDB4RThDN0I3NTYpO1xuICAgICAgYyA9IGZmKGMsIGQsIGEsIGIsIGJ1ZmZlcltpKyAyXSwgMTcsIDB4MjQyMDcwREIpO1xuICAgICAgYiA9IGZmKGIsIGMsIGQsIGEsIGJ1ZmZlcltpKyAzXSwgMjIsIDB4QzFCRENFRUUpO1xuICAgICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlcltpKyA0XSwgNywgMHhGNTdDMEZBRik7XG4gICAgICBkID0gZmYoZCwgYSwgYiwgYywgYnVmZmVyW2krIDVdLCAxMiwgMHg0Nzg3QzYyQSk7XG4gICAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyW2krIDZdLCAxNywgMHhBODMwNDYxMyk7XG4gICAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyW2krIDddLCAyMiwgMHhGRDQ2OTUwMSk7XG4gICAgICBhID0gZmYoYSwgYiwgYywgZCwgYnVmZmVyW2krIDhdLCA3LCAweDY5ODA5OEQ4KTtcbiAgICAgIGQgPSBmZihkLCBhLCBiLCBjLCBidWZmZXJbaSsgOV0sIDEyLCAweDhCNDRGN0FGKTtcbiAgICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbaSsxMF0sIDE3LCAweEZGRkY1QkIxKTtcbiAgICAgIGIgPSBmZihiLCBjLCBkLCBhLCBidWZmZXJbaSsxMV0sIDIyLCAweDg5NUNEN0JFKTtcbiAgICAgIGEgPSBmZihhLCBiLCBjLCBkLCBidWZmZXJbaSsxMl0sIDcsIDB4NkI5MDExMjIpO1xuICAgICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlcltpKzEzXSwgMTIsIDB4RkQ5ODcxOTMpO1xuICAgICAgYyA9IGZmKGMsIGQsIGEsIGIsIGJ1ZmZlcltpKzE0XSwgMTcsIDB4QTY3OTQzOEUpO1xuICAgICAgYiA9IGZmKGIsIGMsIGQsIGEsIGJ1ZmZlcltpKzE1XSwgMjIsIDB4NDlCNDA4MjEpO1xuXG4gICAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyW2krIDFdLCA1LCAweEY2MUUyNTYyKTtcbiAgICAgIGQgPSBnZyhkLCBhLCBiLCBjLCBidWZmZXJbaSsgNl0sIDksIDB4QzA0MEIzNDApO1xuICAgICAgYyA9IGdnKGMsIGQsIGEsIGIsIGJ1ZmZlcltpKzExXSwgMTQsIDB4MjY1RTVBNTEpO1xuICAgICAgYiA9IGdnKGIsIGMsIGQsIGEsIGJ1ZmZlcltpKyAwXSwgMjAsIDB4RTlCNkM3QUEpO1xuICAgICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlcltpKyA1XSwgNSwgMHhENjJGMTA1RCk7XG4gICAgICBkID0gZ2coZCwgYSwgYiwgYywgYnVmZmVyW2krMTBdLCA5LCAweDAyNDQxNDUzKTtcbiAgICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbaSsxNV0sIDE0LCAweEQ4QTFFNjgxKTtcbiAgICAgIGIgPSBnZyhiLCBjLCBkLCBhLCBidWZmZXJbaSsgNF0sIDIwLCAweEU3RDNGQkM4KTtcbiAgICAgIGEgPSBnZyhhLCBiLCBjLCBkLCBidWZmZXJbaSsgOV0sIDUsIDB4MjFFMUNERTYpO1xuICAgICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlcltpKzE0XSwgOSwgMHhDMzM3MDdENik7XG4gICAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyW2krIDNdLCAxNCwgMHhGNEQ1MEQ4Nyk7XG4gICAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyW2krIDhdLCAyMCwgMHg0NTVBMTRFRCk7XG4gICAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyW2krMTNdLCA1LCAweEE5RTNFOTA1KTtcbiAgICAgIGQgPSBnZyhkLCBhLCBiLCBjLCBidWZmZXJbaSsgMl0sIDksIDB4RkNFRkEzRjgpO1xuICAgICAgYyA9IGdnKGMsIGQsIGEsIGIsIGJ1ZmZlcltpKyA3XSwgMTQsIDB4Njc2RjAyRDkpO1xuICAgICAgYiA9IGdnKGIsIGMsIGQsIGEsIGJ1ZmZlcltpKzEyXSwgMjAsIDB4OEQyQTRDOEEpO1xuXG4gICAgICBhID0gaGgoYSwgYiwgYywgZCwgYnVmZmVyW2krIDVdLCA0LCAweEZGRkEzOTQyKTtcbiAgICAgIGQgPSBoaChkLCBhLCBiLCBjLCBidWZmZXJbaSsgOF0sIDExLCAweDg3NzFGNjgxKTtcbiAgICAgIGMgPSBoaChjLCBkLCBhLCBiLCBidWZmZXJbaSsxMV0sIDE2LCAweDZEOUQ2MTIyKTtcbiAgICAgIGIgPSBoaChiLCBjLCBkLCBhLCBidWZmZXJbaSsxNF0sIDIzLCAweEZERTUzODBDKTtcbiAgICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbaSsgMV0sIDQsIDB4QTRCRUVBNDQpO1xuICAgICAgZCA9IGhoKGQsIGEsIGIsIGMsIGJ1ZmZlcltpKyA0XSwgMTEsIDB4NEJERUNGQTkpO1xuICAgICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlcltpKyA3XSwgMTYsIDB4RjZCQjRCNjApO1xuICAgICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlcltpKzEwXSwgMjMsIDB4QkVCRkJDNzApO1xuICAgICAgYSA9IGhoKGEsIGIsIGMsIGQsIGJ1ZmZlcltpKzEzXSwgNCwgMHgyODlCN0VDNik7XG4gICAgICBkID0gaGgoZCwgYSwgYiwgYywgYnVmZmVyW2krIDBdLCAxMSwgMHhFQUExMjdGQSk7XG4gICAgICBjID0gaGgoYywgZCwgYSwgYiwgYnVmZmVyW2krIDNdLCAxNiwgMHhENEVGMzA4NSk7XG4gICAgICBiID0gaGgoYiwgYywgZCwgYSwgYnVmZmVyW2krIDZdLCAyMywgMHgwNDg4MUQwNSk7XG4gICAgICBhID0gaGgoYSwgYiwgYywgZCwgYnVmZmVyW2krIDldLCA0LCAweEQ5RDREMDM5KTtcbiAgICAgIGQgPSBoaChkLCBhLCBiLCBjLCBidWZmZXJbaSsxMl0sIDExLCAweEU2REI5OUU1KTtcbiAgICAgIGMgPSBoaChjLCBkLCBhLCBiLCBidWZmZXJbaSsxNV0sIDE2LCAweDFGQTI3Q0Y4KTtcbiAgICAgIGIgPSBoaChiLCBjLCBkLCBhLCBidWZmZXJbaSsgMl0sIDIzLCAweEM0QUM1NjY1KTtcblxuICAgICAgYSA9IGlpKGEsIGIsIGMsIGQsIGJ1ZmZlcltpKyAwXSwgNiwgMHhGNDI5MjI0NCk7XG4gICAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyW2krIDddLCAxMCwgMHg0MzJBRkY5Nyk7XG4gICAgICBjID0gaWkoYywgZCwgYSwgYiwgYnVmZmVyW2krMTRdLCAxNSwgMHhBQjk0MjNBNyk7XG4gICAgICBiID0gaWkoYiwgYywgZCwgYSwgYnVmZmVyW2krIDVdLCAyMSwgMHhGQzkzQTAzOSk7XG4gICAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyW2krMTJdLCA2LCAweDY1NUI1OUMzKTtcbiAgICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbaSsgM10sIDEwLCAweDhGMENDQzkyKTtcbiAgICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbaSsxMF0sIDE1LCAweEZGRUZGNDdEKTtcbiAgICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbaSsgMV0sIDIxLCAweDg1ODQ1REQxKTtcbiAgICAgIGEgPSBpaShhLCBiLCBjLCBkLCBidWZmZXJbaSsgOF0sIDYsIDB4NkZBODdFNEYpO1xuICAgICAgZCA9IGlpKGQsIGEsIGIsIGMsIGJ1ZmZlcltpKzE1XSwgMTAsIDB4RkUyQ0U2RTApO1xuICAgICAgYyA9IGlpKGMsIGQsIGEsIGIsIGJ1ZmZlcltpKyA2XSwgMTUsIDB4QTMwMTQzMTQpO1xuICAgICAgYiA9IGlpKGIsIGMsIGQsIGEsIGJ1ZmZlcltpKzEzXSwgMjEsIDB4NEUwODExQTEpO1xuICAgICAgYSA9IGlpKGEsIGIsIGMsIGQsIGJ1ZmZlcltpKyA0XSwgNiwgMHhGNzUzN0U4Mik7XG4gICAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyW2krMTFdLCAxMCwgMHhCRDNBRjIzNSk7XG4gICAgICBjID0gaWkoYywgZCwgYSwgYiwgYnVmZmVyW2krIDJdLCAxNSwgMHgyQUQ3RDJCQik7XG4gICAgICBiID0gaWkoYiwgYywgZCwgYSwgYnVmZmVyW2krIDldLCAyMSwgMHhFQjg2RDM5MSk7XG5cbiAgICAgIHdbMF0gPSBhZGQoYSwgd1swXSk7XG4gICAgICB3WzFdID0gYWRkKGIsIHdbMV0pO1xuICAgICAgd1syXSA9IGFkZChjLCB3WzJdKTtcbiAgICAgIHdbM10gPSBhZGQoZCwgd1szXSk7XG4gICAgfVxuXG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoMTYpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKVxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA0OyBqKyspXG4gICAgICAgIHRbaSAqIDQgKyBqXSA9ICh3W2ldID4+ICg4ICogaikpICYgMHhGRjtcbiAgICByZXR1cm4gdDtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAocywgb2ZzLCBsZW4pIHtcbiAgICAvLyBGSVg6IG1heWJlIHdlIHNob3VsZCBwZXJmb3JtIHRoZSBjb21wdXRhdGlvbiBieSBjaHVuayBvZiA2NCBieXRlc1xuICAgIC8vIGFzIGluIGh0dHA6Ly93d3cubXllcnNkYWlseS5vcmcvam9zZXBoL2phdmFzY3JpcHQvbWQ1LmpzXG4gICAgdmFyIGJ1ZiA9IFtdO1xuICAgIHZhciBjb250ZW50ID0gY2FtbF9tbF9ieXRlc19jb250ZW50KHMpO1xuICAgIGlmKHR5cGVvZiBjb250ZW50ID09PSBcInN0cmluZ1wiKXtcbiAgICAgIHZhciBiID0gY29udGVudDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKz00KSB7XG4gICAgICAgIHZhciBqID0gaSArIG9mcztcbiAgICAgICAgYnVmW2k+PjJdID1cbiAgICAgICAgICBiLmNoYXJDb2RlQXQoaikgfCAoYi5jaGFyQ29kZUF0KGorMSkgPDwgOCkgfFxuICAgICAgICAgIChiLmNoYXJDb2RlQXQoaisyKSA8PCAxNikgfCAoYi5jaGFyQ29kZUF0KGorMykgPDwgMjQpO1xuICAgICAgfVxuICAgICAgZm9yICg7IGkgPCBsZW47IGkrKykgYnVmW2k+PjJdIHw9IGIuY2hhckNvZGVBdChpICsgb2ZzKSA8PCAoOCAqIChpICYgMykpO1xuICAgIH0gZWxzZSB7IC8qIEFSUkFZICovXG4gICAgICB2YXIgYSA9IGNvbnRlbnQ7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSs9NCkge1xuICAgICAgICB2YXIgaiA9IGkgKyBvZnM7XG4gICAgICAgIGJ1ZltpPj4yXSA9IGFbal0gfCAoYVtqKzFdIDw8IDgpIHwgKGFbaisyXSA8PCAxNikgfCAoYVtqKzNdIDw8IDI0KTtcbiAgICAgIH1cbiAgICAgIGZvciAoOyBpIDwgbGVuOyBpKyspIGJ1ZltpPj4yXSB8PSBhW2kgKyBvZnNdIDw8ICg4ICogKGkgJiAzKSk7XG4gICAgfVxuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheShtZDUoYnVmLCBsZW4pKTtcbiAgfVxufSAoKTtcbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAyMCAtIEh1Z28gSGV1emFyZFxuLy8gQ29weXJpZ2h0IChDKSAyMDIwIC0gU2hhY2hhciBJdHpoYWt5XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLyBCYXNlZCBvbiBodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwvYmxvYi80LjA3L290aGVybGlicy9zdHIvc3Ryc3R1YnMuY1xuLy8gQ29waWVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2pzY29xL2pzY29xL2Jsb2IvdjguMTEvY29xLWpzL2pzX3N0dWIvc3RyLmpzXG5cbi8vUHJvdmlkZXM6IHJlX21hdGNoXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX2pzX2Zyb21fYXJyYXksIGNhbWxfYXJyYXlfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19nZXRcblxudmFyIHJlX21hdGNoID0gZnVuY3Rpb24oKXtcbiAgdmFyIHJlX3dvcmRfbGV0dGVycyA9IFtcbiAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgICAgICAvKiAweDAwLTB4MUY6IG5vbmUgKi9cbiAgICAweDAwLCAweDAwLCAweEZGLCAweDAzLCAgICAgICAvKiAweDIwLTB4M0Y6IGRpZ2l0cyAwLTkgKi9cbiAgICAweEZFLCAweEZGLCAweEZGLCAweDg3LCAgICAgICAvKiAweDQwLTB4NUY6IEEgdG8gWiwgXyAqL1xuICAgIDB4RkUsIDB4RkYsIDB4RkYsIDB4MDcsICAgICAgIC8qIDB4NjAtMHg3RjogYSB0byB6ICovXG4gICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgICAgICAgLyogMHg4MC0weDlGOiBub25lICovXG4gICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgICAgICAgLyogMHhBMC0weEJGOiBub25lICovXG4gICAgMHhGRiwgMHhGRiwgMHg3RiwgMHhGRiwgICAgICAgLyogMHhDMC0weERGOiBMYXRpbi0xIGFjY2VudGVkIHVwcGVyY2FzZSAqL1xuICAgIDB4RkYsIDB4RkYsIDB4N0YsIDB4RkYgICAgICAgIC8qIDB4RTAtMHhGRjogTGF0aW4tMSBhY2NlbnRlZCBsb3dlcmNhc2UgKi9cbiAgXTtcblxuICB2YXIgb3Bjb2RlcyA9IHtcbiAgICBDSEFSOiAwLCBDSEFSTk9STTogMSwgU1RSSU5HOiAyLCBTVFJJTkdOT1JNOiAzLCBDSEFSQ0xBU1M6IDQsXG4gICAgQk9MOiA1LCBFT0w6IDYsIFdPUkRCT1VOREFSWTogNyxcbiAgICBCRUdHUk9VUDogOCwgRU5ER1JPVVA6IDksIFJFRkdST1VQOiAxMCxcbiAgICBBQ0NFUFQ6IDExLFxuICAgIFNJTVBMRU9QVDogMTIsIFNJTVBMRVNUQVI6IDEzLCBTSU1QTEVQTFVTOiAxNCxcbiAgICBHT1RPOiAxNSwgUFVTSEJBQ0s6IDE2LCBTRVRNQVJLOiAxNyxcbiAgICBDSEVDS1BST0dSRVNTOiAxOFxuICB9O1xuXG4gIGZ1bmN0aW9uIGlzX3dvcmRfbGV0dGVyKGMpIHtcbiAgICByZXR1cm4gKHJlX3dvcmRfbGV0dGVyc1sgIChjID4+IDMpXSA+PiAoYyAmIDcpKSAmIDE7XG4gIH1cblxuICBmdW5jdGlvbiBpbl9iaXRzZXQocyxpKSB7XG4gICAgcmV0dXJuIChjYW1sX3N0cmluZ19nZXQocywoaSA+PiAzKSkgPj4gKGkgJiA3KSkgJiAxO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVfbWF0Y2hfaW1wbChyZSwgcywgcG9zLCBwYXJ0aWFsKSB7XG5cbiAgICB2YXIgcHJvZyAgICAgICAgICA9IGNhbWxfanNfZnJvbV9hcnJheShyZVsxXSksXG4gICAgICAgIGNwb29sICAgICAgICAgPSBjYW1sX2pzX2Zyb21fYXJyYXkocmVbMl0pLFxuICAgICAgICBub3JtdGFibGUgICAgID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhyZVszXSksXG4gICAgICAgIG51bWdyb3VwcyAgICAgPSByZVs0XSB8IDAsXG4gICAgICAgIG51bXJlZ2lzdGVycyAgPSByZVs1XSB8IDAsXG4gICAgICAgIHN0YXJ0Y2hhcnMgICAgPSByZVs2XSB8IDA7XG5cbiAgICB2YXIgcyA9IGNhbWxfYXJyYXlfb2Zfc3RyaW5nKHMpO1xuXG4gICAgdmFyIHBjID0gMCxcbiAgICAgICAgcXVpdCA9IGZhbHNlLFxuICAgICAgICBzdGFjayA9IFtdLFxuICAgICAgICBncm91cHMgPSBuZXcgQXJyYXkobnVtZ3JvdXBzKSxcbiAgICAgICAgcmVfcmVnaXN0ZXIgPSBuZXcgQXJyYXkobnVtcmVnaXN0ZXJzKTtcblxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBncm91cHMubGVuZ3RoOyBpKyspe1xuICAgICAgZ3JvdXBzW2ldID0ge3N0YXJ0OiAtMSwgZW5kOi0xfVxuICAgIH1cbiAgICBncm91cHNbMF0uc3RhcnQgPSBwb3M7XG5cbiAgICB2YXIgYmFja3RyYWNrID0gZnVuY3Rpb24gKCkge1xuICAgICAgd2hpbGUgKHN0YWNrLmxlbmd0aCkge1xuICAgICAgICB2YXIgaXRlbSA9IHN0YWNrLnBvcCgpO1xuICAgICAgICBpZiAoaXRlbS51bmRvKSB7XG4gICAgICAgICAgaXRlbS51bmRvLm9ialtpdGVtLnVuZG8ucHJvcF0gPSBpdGVtLnVuZG8udmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZihpdGVtLnBvcykge1xuICAgICAgICAgIHBjID0gaXRlbS5wb3MucGM7XG4gICAgICAgICAgcG9zID0gaXRlbS5wb3MudHh0O1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcXVpdCA9IHRydWU7XG4gICAgfTtcblxuICAgIHZhciBwdXNoID0gZnVuY3Rpb24oaXRlbSkgeyBzdGFjay5wdXNoKGl0ZW0pOyB9O1xuXG4gICAgdmFyIGFjY2VwdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGdyb3Vwc1swXS5lbmQgPSBwb3M7XG4gICAgICB2YXIgcmVzdWx0ID0gbmV3IEFycmF5KDEgKyBncm91cHMubGVuZ3RoKjIpO1xuICAgICAgcmVzdWx0WzBdID0gMDsgLy8gdGFnXG4gICAgICBmb3IodmFyIGkgPSAwOyBpIDwgZ3JvdXBzLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgdmFyIGcgPSBncm91cHNbaV07XG4gICAgICAgIGlmKGcuc3RhcnQgPCAwIHx8IGcuZW5kIDwgMCkge1xuICAgICAgICAgIGcuc3RhcnQgPSBnLmVuZCA9IC0xO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdFsyKmkgKyAxIF0gPSBnLnN0YXJ0O1xuICAgICAgICByZXN1bHRbMippICsgMSArIDEgXSA9IGcuZW5kO1xuICAgICAgfTtcbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9O1xuXG4gICAgdmFyIHByZWZpeF9tYXRjaCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmKHBhcnRpYWwpIHJldHVybiBhY2NlcHQgKCk7XG4gICAgICBlbHNlIGJhY2t0cmFjayAoKTtcbiAgICB9XG5cbiAgICAvKiBNYWluIERGQSBpbnRlcnByZXRlciBsb29wICovXG4gICAgd2hpbGUgKCFxdWl0KSB7XG4gICAgICB2YXIgb3AgPSBwcm9nW3BjXSAmIDB4ZmYsXG4gICAgICAgICAgc2FyZyA9IHByb2dbcGNdID4+IDgsXG4gICAgICAgICAgdWFyZyA9IHNhcmcgJiAweGZmLFxuICAgICAgICAgIGMgPSBzW3Bvc10sXG4gICAgICAgICAgZ3JvdXA7XG5cbiAgICAgIHBjKys7XG5cbiAgICAgIHN3aXRjaCAob3ApIHtcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5DSEFSOlxuICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgIGlmIChjID09PSB1YXJnKSBwb3MrKztcbiAgICAgICAgZWxzZSBiYWNrdHJhY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuQ0hBUk5PUk06XG4gICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgaWYgKG5vcm10YWJsZS5jaGFyQ29kZUF0KGMpID09PSB1YXJnKSBwb3MrKztcbiAgICAgICAgZWxzZSBiYWNrdHJhY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU1RSSU5HOlxuICAgICAgICBmb3IgKHZhciBhcmcgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGNwb29sW3VhcmddKSwgaSA9IDA7IGkgPCBhcmcubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgICAgaWYgKGMgPT09IGFyZy5jaGFyQ29kZUF0KGkpKVxuICAgICAgICAgICAgYyA9IHNbKytwb3NdO1xuICAgICAgICAgIGVsc2UgeyBiYWNrdHJhY2soKTsgYnJlYWs7IH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TVFJJTkdOT1JNOlxuICAgICAgICBmb3IgKHZhciBhcmcgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGNwb29sW3VhcmddKSwgaSA9IDA7IGkgPCBhcmcubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgICAgaWYgKG5vcm10YWJsZS5jaGFyQ29kZUF0KGMpID09PSBhcmcuY2hhckNvZGVBdChpKSlcbiAgICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgICBlbHNlIHsgYmFja3RyYWNrKCk7IGJyZWFrOyB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuQ0hBUkNMQVNTOlxuICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgIGlmIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKSBwb3MrKztcbiAgICAgICAgZWxzZSBiYWNrdHJhY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuQk9MOlxuICAgICAgICBpZihwb3MgPiAwICYmIHNbcG9zIC0gMV0gIT0gMTAgLyogXFxuICovKSB7YmFja3RyYWNrKCl9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkVPTDpcbiAgICAgICAgaWYocG9zIDwgcy5sZW5ndGggJiYgc1twb3NdICE9IDEwIC8qIFxcbiAqLykge2JhY2t0cmFjaygpfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5XT1JEQk9VTkRBUlk6XG4gICAgICAgIGlmKHBvcyA9PSAwKSB7XG4gICAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICAgIGlmKGlzX3dvcmRfbGV0dGVyKHNbMF0pKSBicmVhaztcbiAgICAgICAgICBiYWNrdHJhY2soKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChwb3MgPT09IHMubGVuZ3RoKSB7XG4gICAgICAgICAgaWYoaXNfd29yZF9sZXR0ZXIoc1twb3MgLSAxXSkpIGJyZWFrO1xuICAgICAgICAgIGJhY2t0cmFjayAoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBpZihpc193b3JkX2xldHRlcihzW3BvcyAtIDFdKSAhPSBpc193b3JkX2xldHRlcihzW3Bvc10pKSBicmVhaztcbiAgICAgICAgICBiYWNrdHJhY2sgKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuQkVHR1JPVVA6XG4gICAgICAgIGdyb3VwID0gZ3JvdXBzW3VhcmddO1xuICAgICAgICBwdXNoKHt1bmRvOiB7b2JqOmdyb3VwLFxuICAgICAgICAgICAgICAgICAgICAgcHJvcDonc3RhcnQnLFxuICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGdyb3VwLnN0YXJ0fX0pO1xuICAgICAgICBncm91cC5zdGFydCA9IHBvcztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuRU5ER1JPVVA6XG4gICAgICAgIGdyb3VwID0gZ3JvdXBzW3VhcmddO1xuICAgICAgICBwdXNoKHt1bmRvOiB7b2JqOiBncm91cCxcbiAgICAgICAgICAgICAgICAgICAgIHByb3A6J2VuZCcsXG4gICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZ3JvdXAuZW5kfX0pO1xuICAgICAgICBncm91cC5lbmQgPSBwb3M7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlJFRkdST1VQOlxuICAgICAgICBncm91cCA9IGdyb3Vwc1t1YXJnXTtcbiAgICAgICAgaWYoZ3JvdXAuc3RhcnQgPCAwIHx8IGdyb3VwLmVuZCA8IDApIHtiYWNrdHJhY2sgKCk7IGJyZWFrfVxuICAgICAgICBmb3IgKHZhciBpID0gZ3JvdXAuc3RhcnQ7IGkgPCBncm91cC5lbmQ7IGkrKyl7XG4gICAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICAgIGlmKHNbaV0gIT0gc1twb3NdKSB7YmFja3RyYWNrICgpOyBicmVha31cbiAgICAgICAgICBwb3MrKztcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TSU1QTEVPUFQ6XG4gICAgICAgIGlmIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKSBwb3MrKztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU0lNUExFU1RBUjpcbiAgICAgICAgd2hpbGUgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpXG4gICAgICAgICAgYyA9IHNbKytwb3NdO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TSU1QTEVQTFVTOlxuICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgIGlmIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKSB7XG4gICAgICAgICAgZG8ge1xuICAgICAgICAgICAgYyA9IHNbKytwb3NdO1xuICAgICAgICAgIH0gd2hpbGUgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkFDQ0VQVDpcbiAgICAgICAgcmV0dXJuIGFjY2VwdCgpO1xuICAgICAgY2FzZSBvcGNvZGVzLkdPVE86XG4gICAgICAgIHBjID0gcGMgKyBzYXJnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5QVVNIQkFDSzpcbiAgICAgICAgcHVzaCh7cG9zOiB7cGM6IHBjICsgc2FyZywgdHh0OiBwb3N9fSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNFVE1BUks6XG4gICAgICAgIHB1c2goe3VuZG86IHtvYmo6cmVfcmVnaXN0ZXIsXG4gICAgICAgICAgICAgICAgICAgICBwcm9wOiB1YXJnLFxuICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHJlX3JlZ2lzdGVyW3VhcmddfX0pO1xuICAgICAgICByZV9yZWdpc3Rlclt1YXJnXSA9IHBvcztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuQ0hFQ0tQUk9HUkVTUzpcbiAgICAgICAgaWYgKHJlX3JlZ2lzdGVyW3VhcmddID09PSBwb3MpIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYnl0ZWNvZGVcIik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9XG5cbiAgcmV0dXJuIHJlX21hdGNoX2ltcGw7XG59KCk7XG5cblxuLy9Qcm92aWRlczogcmVfc2VhcmNoX2ZvcndhcmRcbi8vUmVxdWlyZXM6IHJlX21hdGNoLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gcmVfc2VhcmNoX2ZvcndhcmQocmUsIHMsIHBvcykge1xuICBpZihwb3MgPCAwIHx8IHBvcyA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHIuc2VhcmNoX2ZvcndhcmRcIilcbiAgd2hpbGUgKHBvcyA8PSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpIHtcbiAgICB2YXIgcmVzID0gcmVfbWF0Y2gocmUsIHMsIHBvcywgMCk7XG4gICAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgICBwb3MrKztcbiAgfVxuXG4gIHJldHVybiBbMF07ICAvKiBbfHxdIDogaW50IGFycmF5ICovXG59XG5cbi8vUHJvdmlkZXM6IHJlX3NlYXJjaF9iYWNrd2FyZFxuLy9SZXF1aXJlczogcmVfbWF0Y2gsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiByZV9zZWFyY2hfYmFja3dhcmQocmUsIHMsIHBvcykge1xuICBpZihwb3MgPCAwIHx8IHBvcyA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHIuc2VhcmNoX2JhY2t3YXJkXCIpXG4gIHdoaWxlIChwb3MgPj0gMCkge1xuICAgIHZhciByZXMgPSByZV9tYXRjaChyZSwgcywgcG9zLCAwKTtcbiAgICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICAgIHBvcy0tO1xuICB9XG5cbiAgcmV0dXJuIFswXTsgIC8qIFt8fF0gOiBpbnQgYXJyYXkgKi9cbn1cblxuXG4vL1Byb3ZpZGVzOiByZV9zdHJpbmdfbWF0Y2hcbi8vUmVxdWlyZXM6IHJlX21hdGNoLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gcmVfc3RyaW5nX21hdGNoKHJlLHMscG9zKXtcbiAgaWYocG9zIDwgMCB8fCBwb3MgPiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyLnN0cmluZ19tYXRjaFwiKVxuICB2YXIgcmVzID0gcmVfbWF0Y2gocmUsIHMsIHBvcywgMCk7XG4gIGlmIChyZXMpIHJldHVybiByZXM7XG4gIGVsc2UgcmV0dXJuIFswXTtcbn1cblxuLy9Qcm92aWRlczogcmVfcGFydGlhbF9tYXRjaFxuLy9SZXF1aXJlczogcmVfbWF0Y2gsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiByZV9wYXJ0aWFsX21hdGNoKHJlLHMscG9zKXtcbiAgaWYocG9zIDwgMCB8fCBwb3MgPiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyLnBhcnRpYWxfbWF0Y2hcIilcbiAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDEpO1xuICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICBlbHNlIHJldHVybiBbMF07XG59XG5cbi8vUHJvdmlkZXM6IHJlX3JlcGxhY2VtZW50X3RleHRcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vLyBleHRlcm5hbCByZV9yZXBsYWNlbWVudF90ZXh0OiBzdHJpbmcgLT4gaW50IGFycmF5IC0+IHN0cmluZyAtPiBzdHJpbmdcbmZ1bmN0aW9uIHJlX3JlcGxhY2VtZW50X3RleHQocmVwbCxncm91cHMsb3JpZykge1xuICB2YXIgcmVwbCA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocmVwbCk7XG4gIHZhciBsZW4gPSByZXBsLmxlbmd0aDtcbiAgdmFyIG9yaWcgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG9yaWcpO1xuICB2YXIgcmVzID0gXCJcIjsgLy9yZXN1bHRcbiAgdmFyIG4gPSAwOyAvLyBjdXJyZW50IHBvc2l0aW9uXG4gIHZhciBjdXI7IC8vY3VycmVudCBjaGFyXG4gIHZhciBzdGFydCwgZW5kLCBjO1xuICB3aGlsZShuIDwgbGVuKXtcbiAgICBjdXIgPSByZXBsLmNoYXJBdChuKyspO1xuICAgIGlmKGN1ciAhPSAnXFxcXCcpe1xuICAgICAgcmVzICs9IGN1cjtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBpZihuID09IGxlbikgY2FtbF9mYWlsd2l0aChcIlN0ci5yZXBsYWNlOiBpbGxlZ2FsIGJhY2tzbGFzaCBzZXF1ZW5jZVwiKTtcbiAgICAgIGN1ciA9IHJlcGwuY2hhckF0KG4rKyk7XG4gICAgICBzd2l0Y2goY3VyKXtcbiAgICAgIGNhc2UgJ1xcXFwnOlxuICAgICAgICByZXMgKz0gY3VyO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJzAnOiBjYXNlICcxJzogY2FzZSAnMic6IGNhc2UgJzMnOiBjYXNlICc0JzpcbiAgICAgIGNhc2UgJzUnOiBjYXNlICc2JzogY2FzZSAnNyc6IGNhc2UgJzgnOiBjYXNlICc5JzpcbiAgICAgICAgYyA9ICtjdXI7XG4gICAgICAgIGlmIChjKjIgPj0gZ3JvdXBzLmxlbmd0aCAtIDEgKVxuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJTdHIucmVwbGFjZTogcmVmZXJlbmNlIHRvIHVubWF0Y2hlZCBncm91cFwiICk7XG4gICAgICAgIHN0YXJ0ID0gY2FtbF9hcnJheV9nZXQoZ3JvdXBzLGMqMik7XG4gICAgICAgIGVuZCA9IGNhbWxfYXJyYXlfZ2V0KGdyb3VwcywgYyoyICsxKTtcbiAgICAgICAgaWYgKHN0YXJ0ID09IC0xKVxuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJTdHIucmVwbGFjZTogcmVmZXJlbmNlIHRvIHVubWF0Y2hlZCBncm91cFwiKTtcbiAgICAgICAgcmVzKz1vcmlnLnNsaWNlKHN0YXJ0LGVuZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmVzICs9ICgnXFxcXCcgICsgY3VyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocmVzKTsgfVxuIiwiLy9UaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVkIGluIENzdHJ1Y3Rcbi8vVGhlcmUgYXJlIGp1c3QgcHJvdmlkZWQgaGVyZSBmb3IgY29tcGF0aWJpbGl0eSByZWFzb25zXG5cbi8vUHJvdmlkZXM6IGNhbWxfYmxpdF9iaWdzdHJpbmdfdG9fYmlnc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhXG4vL1dlYWtkZWZcbnZhciBjYW1sX2JsaXRfYmlnc3RyaW5nX3RvX2JpZ3N0cmluZyA9IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmFcbi8vUHJvdmlkZXM6IGNhbWxfYmxpdF9iaWdzdHJpbmdfdG9fc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzXG4vL1dlYWtkZWZcbnZhciBjYW1sX2JsaXRfYmlnc3RyaW5nX3RvX3N0cmluZyA9IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXNcbi8vUHJvdmlkZXM6IGNhbWxfYmxpdF9zdHJpbmdfdG9fYmlnc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYVxuLy9XZWFrZGVmXG52YXIgY2FtbF9ibGl0X3N0cmluZ190b19iaWdzdHJpbmcgPSBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICBEYW5pZWwgQy4gQnVlbnpsaSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leHRlcm5hbCBmb3JtYXRfaW50IDogc3RyaW5nIC0+IGludCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2ludFwiXG5cbmxldCBlcnJfbm9fcHJlZCA9IFwiVSswMDAwIGhhcyBubyBwcmVkZWNlc3NvclwiXG5sZXQgZXJyX25vX3N1Y2MgPSBcIlUrMTBGRkZGIGhhcyBubyBzdWNjZXNzb3JcIlxubGV0IGVycl9ub3Rfc3YgaSA9IGZvcm1hdF9pbnQgXCIlWFwiIGkgXiBcIiBpcyBub3QgYW4gVW5pY29kZSBzY2FsYXIgdmFsdWVcIlxubGV0IGVycl9ub3RfbGF0aW4xIHUgPSBcIlUrXCIgXiBmb3JtYXRfaW50IFwiJTA0WFwiIHUgXiBcIiBpcyBub3QgYSBsYXRpbjEgY2hhcmFjdGVyXCJcblxudHlwZSB0ID0gaW50XG5cbmxldCBtaW4gPSAweDAwMDBcbmxldCBtYXggPSAweDEwRkZGRlxubGV0IGxvX2JvdW5kID0gMHhEN0ZGXG5sZXQgaGlfYm91bmQgPSAweEUwMDBcblxubGV0IGJvbSA9IDB4RkVGRlxubGV0IHJlcCA9IDB4RkZGRFxuXG5sZXQgc3VjYyB1ID1cbiAgaWYgdSA9IGxvX2JvdW5kIHRoZW4gaGlfYm91bmQgZWxzZVxuICBpZiB1ID0gbWF4IHRoZW4gaW52YWxpZF9hcmcgZXJyX25vX3N1Y2MgZWxzZVxuICB1ICsgMVxuXG5sZXQgcHJlZCB1ID1cbiAgaWYgdSA9IGhpX2JvdW5kIHRoZW4gbG9fYm91bmQgZWxzZVxuICBpZiB1ID0gbWluIHRoZW4gaW52YWxpZF9hcmcgZXJyX25vX3ByZWQgZWxzZVxuICB1IC0gMVxuXG5sZXQgaXNfdmFsaWQgaSA9IChtaW4gPD0gaSAmJiBpIDw9IGxvX2JvdW5kKSB8fCAoaGlfYm91bmQgPD0gaSAmJiBpIDw9IG1heClcbmxldCBvZl9pbnQgaSA9IGlmIGlzX3ZhbGlkIGkgdGhlbiBpIGVsc2UgaW52YWxpZF9hcmcgKGVycl9ub3Rfc3YgaSlcbmV4dGVybmFsIHVuc2FmZV9vZl9pbnQgOiBpbnQgLT4gdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHRvX2ludCA6IHQgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgaXNfY2hhciB1ID0gdSA8IDI1NlxubGV0IG9mX2NoYXIgYyA9IENoYXIuY29kZSBjXG5sZXQgdG9fY2hhciB1ID1cbiAgaWYgdSA+IDI1NSB0aGVuIGludmFsaWRfYXJnIChlcnJfbm90X2xhdGluMSB1KSBlbHNlXG4gIENoYXIudW5zYWZlX2NociB1XG5cbmxldCB1bnNhZmVfdG9fY2hhciA9IENoYXIudW5zYWZlX2NoclxuXG5sZXQgZXF1YWwgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSAoID0gKVxubGV0IGNvbXBhcmUgOiBpbnQgLT4gaW50IC0+IGludCA9IFN0ZGxpYi5jb21wYXJlXG5sZXQgaGFzaCA9IHRvX2ludFxuXG4oKiBVVEYgY29kZWNzIHRvb2xzICopXG5cbnR5cGUgdXRmX2RlY29kZSA9IGludFxuKCogVGhpcyBpcyBhbiBpbnQgWzB4RFVVVVVVVV0gZGVjb21wb3NlZCBhcyBmb2xsb3dzOlxuICAgLSBbRF0gaXMgZm91ciBiaXRzIGZvciBkZWNvZGUgaW5mb3JtYXRpb24sIHRoZSBoaWdoZXN0IGJpdCBpcyBzZXQgaWYgdGhlXG4gICAgIGRlY29kZSBpcyB2YWxpZC4gVGhlIHRocmVlIGxvd2VyIGJpdHMgaW5kaWNhdGUgdGhlIG51bWJlciBvZiBlbGVtZW50c1xuICAgICBmcm9tIHRoZSBzb3VyY2UgdGhhdCB3ZXJlIGNvbnN1bWVkIGJ5IHRoZSBkZWNvZGUuXG4gICAtIFtVVVVVVVVdIGlzIHRoZSBkZWNvZGVkIFVuaWNvZGUgY2hhcmFjdGVyIG9yIHRoZSBVbmljb2RlIHJlcGxhY2VtZW50XG4gICAgIGNoYXJhY3RlciBVK0ZGRkQgaWYgZm9yIGludmFsaWQgZGVjb2Rlcy4gKilcblxubGV0IHZhbGlkX2JpdCA9IDI3XG5sZXQgZGVjb2RlX2JpdHMgPSAyNFxuXG5sZXRbQGlubGluZV0gdXRmX2RlY29kZV9pc192YWxpZCBkID0gKGQgbHNyIHZhbGlkX2JpdCkgPSAxXG5sZXRbQGlubGluZV0gdXRmX2RlY29kZV9sZW5ndGggZCA9IChkIGxzciBkZWNvZGVfYml0cykgbGFuZCAwYjExMVxubGV0W0BpbmxpbmVdIHV0Zl9kZWNvZGVfdWNoYXIgZCA9IHVuc2FmZV9vZl9pbnQgKGQgbGFuZCAweEZGRkZGRilcbmxldFtAaW5saW5lXSB1dGZfZGVjb2RlIG4gdSA9ICgoOCBsb3IgbikgbHNsIGRlY29kZV9iaXRzKSBsb3IgKHRvX2ludCB1KVxubGV0W0BpbmxpbmVdIHV0Zl9kZWNvZGVfaW52YWxpZCBuID0gKG4gbHNsIGRlY29kZV9iaXRzKSBsb3IgcmVwXG5cbmxldCB1dGZfOF9ieXRlX2xlbmd0aCB1ID0gbWF0Y2ggdG9faW50IHUgd2l0aFxufCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG58IHUgd2hlbiB1IDw9IDB4MDA3RiAtPiAxXG58IHUgd2hlbiB1IDw9IDB4MDdGRiAtPiAyXG58IHUgd2hlbiB1IDw9IDB4RkZGRiAtPiAzXG58IHUgd2hlbiB1IDw9IDB4MTBGRkZGIC0+IDRcbnwgXyAtPiBhc3NlcnQgZmFsc2VcblxubGV0IHV0Zl8xNl9ieXRlX2xlbmd0aCB1ID0gbWF0Y2ggdG9faW50IHUgd2l0aFxufCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG58IHUgd2hlbiB1IDw9IDB4RkZGRiAtPiAyXG58IHUgd2hlbiB1IDw9IDB4MTBGRkZGIC0+IDRcbnwgXyAtPiBhc3NlcnQgZmFsc2VcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtJbnQ2NF06IDY0LWJpdCBpbnRlZ2VycyAqKVxuXG5leHRlcm5hbCBuZWcgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X25lZ1wiXG5leHRlcm5hbCBhZGQgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2FkZFwiXG5leHRlcm5hbCBzdWIgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X3N1YlwiXG5leHRlcm5hbCBtdWwgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X211bFwiXG5leHRlcm5hbCBkaXYgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2RpdlwiXG5leHRlcm5hbCByZW0gOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X21vZFwiXG5leHRlcm5hbCBsb2dhbmQgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2FuZFwiXG5leHRlcm5hbCBsb2dvciA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfb3JcIlxuZXh0ZXJuYWwgbG9neG9yIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF94b3JcIlxuZXh0ZXJuYWwgc2hpZnRfbGVmdCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2xzbFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2FzclwiXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfbHNyXCJcbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludFwiXG5leHRlcm5hbCB0b19pbnQgOiBpbnQ2NCAtPiBpbnQgPSBcIiVpbnQ2NF90b19pbnRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9vZl9mbG9hdFwiIFwiY2FtbF9pbnQ2NF9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRvX2Zsb2F0IDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfdG9fZmxvYXRcIiBcImNhbWxfaW50NjRfdG9fZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBvZl9pbnQzMiA6IGludDMyIC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50MzJcIlxuZXh0ZXJuYWwgdG9faW50MzIgOiBpbnQ2NCAtPiBpbnQzMiA9IFwiJWludDY0X3RvX2ludDMyXCJcbmV4dGVybmFsIG9mX25hdGl2ZWludCA6IG5hdGl2ZWludCAtPiBpbnQ2NCA9IFwiJWludDY0X29mX25hdGl2ZWludFwiXG5leHRlcm5hbCB0b19uYXRpdmVpbnQgOiBpbnQ2NCAtPiBuYXRpdmVpbnQgPSBcIiVpbnQ2NF90b19uYXRpdmVpbnRcIlxuXG5sZXQgemVybyA9IDBMXG5sZXQgb25lID0gMUxcbmxldCBtaW51c19vbmUgPSAtMUxcbmxldCBzdWNjIG4gPSBhZGQgbiAxTFxubGV0IHByZWQgbiA9IHN1YiBuIDFMXG5sZXQgYWJzIG4gPSBpZiBuID49IDBMIHRoZW4gbiBlbHNlIG5lZyBuXG5sZXQgbWluX2ludCA9IDB4ODAwMDAwMDAwMDAwMDAwMExcbmxldCBtYXhfaW50ID0gMHg3RkZGRkZGRkZGRkZGRkZGTFxubGV0IGxvZ25vdCBuID0gbG9neG9yIG4gKC0xTClcblxubGV0IHVuc2lnbmVkX3RvX2ludCA9XG4gIGxldCBtYXhfaW50ID0gb2ZfaW50IFN0ZGxpYi5tYXhfaW50IGluXG4gIGZ1biBuIC0+XG4gICAgaWYgY29tcGFyZSB6ZXJvIG4gPD0gMCAmJiBjb21wYXJlIG4gbWF4X2ludCA8PSAwIHRoZW5cbiAgICAgIFNvbWUgKHRvX2ludCBuKVxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxuZXh0ZXJuYWwgZm9ybWF0IDogc3RyaW5nIC0+IGludDY0IC0+IHN0cmluZyA9IFwiY2FtbF9pbnQ2NF9mb3JtYXRcIlxubGV0IHRvX3N0cmluZyBuID0gZm9ybWF0IFwiJWRcIiBuXG5cbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQ2NCA9IFwiY2FtbF9pbnQ2NF9vZl9zdHJpbmdcIlxuXG5sZXQgb2Zfc3RyaW5nX29wdCBzID1cbiAgKCogVE9ETzogZXhwb3NlIGEgbm9uLXJhaXNpbmcgcHJpbWl0aXZlIGRpcmVjdGx5LiAqKVxuICB0cnkgU29tZSAob2Zfc3RyaW5nIHMpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxuXG5cbmV4dGVybmFsIGJpdHNfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0XCIgXCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbG9hdF9vZl9iaXRzIDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1wiIFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzX3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG50eXBlIHQgPSBpbnQ2NFxuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5sZXQgZXF1YWwgKHg6IHQpICh5OiB0KSA9IGNvbXBhcmUgeCB5ID0gMFxuXG5sZXQgdW5zaWduZWRfY29tcGFyZSBuIG0gPVxuICBjb21wYXJlIChzdWIgbiBtaW5faW50KSAoc3ViIG0gbWluX2ludClcblxubGV0IG1pbiB4IHkgOiB0ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5IDogdCA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbigqIFVuc2lnbmVkIGRpdmlzaW9uIGZyb20gc2lnbmVkIGRpdmlzaW9uIG9mIHRoZSBzYW1lXG4gICBiaXRuZXNzLiBTZWUgV2FycmVuIEpyLiwgSGVucnkgUy4gKDIwMTMpLiBIYWNrZXIncyBEZWxpZ2h0ICgyIGVkLiksIFNlYyA5LTMuXG4qKVxubGV0IHVuc2lnbmVkX2RpdiBuIGQgPVxuICBpZiBkIDwgemVybyB0aGVuXG4gICAgaWYgdW5zaWduZWRfY29tcGFyZSBuIGQgPCAwIHRoZW4gemVybyBlbHNlIG9uZVxuICBlbHNlXG4gICAgbGV0IHEgPSBzaGlmdF9sZWZ0IChkaXYgKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgbiAxKSBkKSAxIGluXG4gICAgbGV0IHIgPSBzdWIgbiAobXVsIHEgZCkgaW5cbiAgICBpZiB1bnNpZ25lZF9jb21wYXJlIHIgZCA+PSAwIHRoZW4gc3VjYyBxIGVsc2UgcVxuXG5sZXQgdW5zaWduZWRfcmVtIG4gZCA9XG4gIHN1YiBuIChtdWwgKHVuc2lnbmVkX2RpdiBuIGQpIGQpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFRoZSBydW4tdGltZSBsaWJyYXJ5IGZvciBsZXhlcnMgZ2VuZXJhdGVkIGJ5IGNhbWxsZXggKilcblxudHlwZSBwb3NpdGlvbiA9IHtcbiAgcG9zX2ZuYW1lIDogc3RyaW5nO1xuICBwb3NfbG51bSA6IGludDtcbiAgcG9zX2JvbCA6IGludDtcbiAgcG9zX2NudW0gOiBpbnQ7XG59XG5cbmxldCBkdW1teV9wb3MgPSB7XG4gIHBvc19mbmFtZSA9IFwiXCI7XG4gIHBvc19sbnVtID0gMDtcbiAgcG9zX2JvbCA9IDA7XG4gIHBvc19jbnVtID0gLTE7XG59XG5cbnR5cGUgbGV4YnVmID1cbiAgeyByZWZpbGxfYnVmZiA6IGxleGJ1ZiAtPiB1bml0O1xuICAgIG11dGFibGUgbGV4X2J1ZmZlciA6IGJ5dGVzO1xuICAgIG11dGFibGUgbGV4X2J1ZmZlcl9sZW4gOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfYWJzX3BvcyA6IGludDtcbiAgICBtdXRhYmxlIGxleF9zdGFydF9wb3MgOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfY3Vycl9wb3MgOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfbGFzdF9wb3MgOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfbGFzdF9hY3Rpb24gOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfZW9mX3JlYWNoZWQgOiBib29sO1xuICAgIG11dGFibGUgbGV4X21lbSA6IGludCBhcnJheTtcbiAgICBtdXRhYmxlIGxleF9zdGFydF9wIDogcG9zaXRpb247XG4gICAgbXV0YWJsZSBsZXhfY3Vycl9wIDogcG9zaXRpb247XG4gIH1cblxudHlwZSBsZXhfdGFibGVzID1cbiAgeyBsZXhfYmFzZTogc3RyaW5nO1xuICAgIGxleF9iYWNrdHJrOiBzdHJpbmc7XG4gICAgbGV4X2RlZmF1bHQ6IHN0cmluZztcbiAgICBsZXhfdHJhbnM6IHN0cmluZztcbiAgICBsZXhfY2hlY2s6IHN0cmluZztcbiAgICBsZXhfYmFzZV9jb2RlIDogc3RyaW5nO1xuICAgIGxleF9iYWNrdHJrX2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X2RlZmF1bHRfY29kZSA6IHN0cmluZztcbiAgICBsZXhfdHJhbnNfY29kZSA6IHN0cmluZztcbiAgICBsZXhfY2hlY2tfY29kZSA6IHN0cmluZztcbiAgICBsZXhfY29kZTogc3RyaW5nO31cblxuZXh0ZXJuYWwgY19lbmdpbmUgOiBsZXhfdGFibGVzIC0+IGludCAtPiBsZXhidWYgLT4gaW50ID0gXCJjYW1sX2xleF9lbmdpbmVcIlxuZXh0ZXJuYWwgY19uZXdfZW5naW5lIDogbGV4X3RhYmxlcyAtPiBpbnQgLT4gbGV4YnVmIC0+IGludFxuICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX25ld19sZXhfZW5naW5lXCJcblxubGV0IGVuZ2luZSB0Ymwgc3RhdGUgYnVmID1cbiAgbGV0IHJlc3VsdCA9IGNfZW5naW5lIHRibCBzdGF0ZSBidWYgaW5cbiAgaWYgcmVzdWx0ID49IDAgJiYgYnVmLmxleF9jdXJyX3AgIT0gZHVtbXlfcG9zIHRoZW4gYmVnaW5cbiAgICBidWYubGV4X3N0YXJ0X3AgPC0gYnVmLmxleF9jdXJyX3A7XG4gICAgYnVmLmxleF9jdXJyX3AgPC0ge2J1Zi5sZXhfY3Vycl9wXG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGggcG9zX2NudW0gPSBidWYubGV4X2Fic19wb3MgKyBidWYubGV4X2N1cnJfcG9zfTtcbiAgZW5kO1xuICByZXN1bHRcblxuXG5sZXQgbmV3X2VuZ2luZSB0Ymwgc3RhdGUgYnVmID1cbiAgbGV0IHJlc3VsdCA9IGNfbmV3X2VuZ2luZSB0Ymwgc3RhdGUgYnVmIGluXG4gIGlmIHJlc3VsdCA+PSAwICYmIGJ1Zi5sZXhfY3Vycl9wICE9IGR1bW15X3BvcyB0aGVuIGJlZ2luXG4gICAgYnVmLmxleF9zdGFydF9wIDwtIGJ1Zi5sZXhfY3Vycl9wO1xuICAgIGJ1Zi5sZXhfY3Vycl9wIDwtIHtidWYubGV4X2N1cnJfcFxuICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHBvc19jbnVtID0gYnVmLmxleF9hYnNfcG9zICsgYnVmLmxleF9jdXJyX3Bvc307XG4gIGVuZDtcbiAgcmVzdWx0XG5cbmxldCBsZXhfcmVmaWxsIHJlYWRfZnVuIGF1eF9idWZmZXIgbGV4YnVmID1cbiAgbGV0IHJlYWQgPVxuICAgIHJlYWRfZnVuIGF1eF9idWZmZXIgKEJ5dGVzLmxlbmd0aCBhdXhfYnVmZmVyKSBpblxuICBsZXQgbiA9XG4gICAgaWYgcmVhZCA+IDBcbiAgICB0aGVuIHJlYWRcbiAgICBlbHNlIChsZXhidWYubGV4X2VvZl9yZWFjaGVkIDwtIHRydWU7IDApIGluXG4gICgqIEN1cnJlbnQgc3RhdGUgb2YgdGhlIGJ1ZmZlcjpcbiAgICAgICAgPC0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tPlxuICAgICAgICB8ICBqdW5rIHwgICAgICB2YWxpZCBkYXRhICAgICB8ICAganVuayAgICB8XG4gICAgICAgIF4gICAgICAgXiAgICAgICAgICAgICAgICAgICAgIF4gICAgICAgICAgIF5cbiAgICAgICAgMCAgICBzdGFydF9wb3MgICAgICAgICAgICAgYnVmZmVyX2VuZCAgICBCeXRlcy5sZW5ndGggYnVmZmVyXG4gICopXG4gIGlmIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiArIG4gPiBCeXRlcy5sZW5ndGggbGV4YnVmLmxleF9idWZmZXIgdGhlbiBiZWdpblxuICAgICgqIFRoZXJlIGlzIG5vdCBlbm91Z2ggc3BhY2UgYXQgdGhlIGVuZCBvZiB0aGUgYnVmZmVyICopXG4gICAgaWYgbGV4YnVmLmxleF9idWZmZXJfbGVuIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgKyBuXG4gICAgICAgPD0gQnl0ZXMubGVuZ3RoIGxleGJ1Zi5sZXhfYnVmZmVyXG4gICAgdGhlbiBiZWdpblxuICAgICAgKCogQnV0IHRoZXJlIGlzIGVub3VnaCBzcGFjZSBpZiB3ZSByZWNsYWltIHRoZSBqdW5rIGF0IHRoZSBiZWdpbm5pbmdcbiAgICAgICAgIG9mIHRoZSBidWZmZXIgKilcbiAgICAgIEJ5dGVzLmJsaXQgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3NcbiAgICAgICAgICAgICAgICAgIGxleGJ1Zi5sZXhfYnVmZmVyIDBcbiAgICAgICAgICAgICAgICAgIChsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBsZXhidWYubGV4X3N0YXJ0X3BvcylcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgKCogV2UgbXVzdCBncm93IHRoZSBidWZmZXIuICBEb3VibGluZyBpdHMgc2l6ZSB3aWxsIHByb3ZpZGUgZW5vdWdoXG4gICAgICAgICBzcGFjZSBzaW5jZSBuIDw9IFN0cmluZy5sZW5ndGggYXV4X2J1ZmZlciA8PSBTdHJpbmcubGVuZ3RoIGJ1ZmZlci5cbiAgICAgICAgIFdhdGNoIG91dCBmb3Igc3RyaW5nIGxlbmd0aCBvdmVyZmxvdywgdGhvdWdoLiAqKVxuICAgICAgbGV0IG5ld2xlbiA9XG4gICAgICAgIEludC5taW4gKDIgKiBCeXRlcy5sZW5ndGggbGV4YnVmLmxleF9idWZmZXIpIFN5cy5tYXhfc3RyaW5nX2xlbmd0aCBpblxuICAgICAgaWYgbGV4YnVmLmxleF9idWZmZXJfbGVuIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgKyBuID4gbmV3bGVuXG4gICAgICB0aGVuIGZhaWx3aXRoIFwiTGV4aW5nLmxleF9yZWZpbGw6IGNhbm5vdCBncm93IGJ1ZmZlclwiO1xuICAgICAgbGV0IG5ld2J1ZiA9IEJ5dGVzLmNyZWF0ZSBuZXdsZW4gaW5cbiAgICAgICgqIENvcHkgdGhlIHZhbGlkIGRhdGEgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV3IGJ1ZmZlciAqKVxuICAgICAgQnl0ZXMuYmxpdCBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3Bvc1xuICAgICAgICAgICAgICAgICAgbmV3YnVmIDBcbiAgICAgICAgICAgICAgICAgIChsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBsZXhidWYubGV4X3N0YXJ0X3Bvcyk7XG4gICAgICBsZXhidWYubGV4X2J1ZmZlciA8LSBuZXdidWZcbiAgICBlbmQ7XG4gICAgKCogUmVhbGxvY2F0aW9uIG9yIG5vdCwgd2UgaGF2ZSBzaGlmdGVkIHRoZSBkYXRhIGxlZnQgYnlcbiAgICAgICBzdGFydF9wb3MgY2hhcmFjdGVyczsgdXBkYXRlIHRoZSBwb3NpdGlvbnMgKilcbiAgICBsZXQgcyA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgbGV4YnVmLmxleF9hYnNfcG9zIDwtIGxleGJ1Zi5sZXhfYWJzX3BvcyArIHM7XG4gICAgbGV4YnVmLmxleF9jdXJyX3BvcyA8LSBsZXhidWYubGV4X2N1cnJfcG9zIC0gcztcbiAgICBsZXhidWYubGV4X3N0YXJ0X3BvcyA8LSAwO1xuICAgIGxleGJ1Zi5sZXhfbGFzdF9wb3MgPC0gbGV4YnVmLmxleF9sYXN0X3BvcyAtIHM7XG4gICAgbGV4YnVmLmxleF9idWZmZXJfbGVuIDwtIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIHMgO1xuICAgIGxldCB0ID0gbGV4YnVmLmxleF9tZW0gaW5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIHQtMSBkb1xuICAgICAgbGV0IHYgPSB0LihpKSBpblxuICAgICAgaWYgdiA+PSAwIHRoZW5cbiAgICAgICAgdC4oaSkgPC0gdi1zXG4gICAgZG9uZVxuICBlbmQ7XG4gICgqIFRoZXJlIGlzIG5vdyBlbm91Z2ggc3BhY2UgYXQgdGhlIGVuZCBvZiB0aGUgYnVmZmVyICopXG4gIEJ5dGVzLmJsaXQgYXV4X2J1ZmZlciAwIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiBuO1xuICBsZXhidWYubGV4X2J1ZmZlcl9sZW4gPC0gbGV4YnVmLmxleF9idWZmZXJfbGVuICsgblxuXG5sZXQgemVyb19wb3MgPSB7XG4gIHBvc19mbmFtZSA9IFwiXCI7XG4gIHBvc19sbnVtID0gMTtcbiAgcG9zX2JvbCA9IDA7XG4gIHBvc19jbnVtID0gMDtcbn1cblxubGV0IGZyb21fZnVuY3Rpb24gPyh3aXRoX3Bvc2l0aW9ucyA9IHRydWUpIGYgPVxuICB7IHJlZmlsbF9idWZmID0gbGV4X3JlZmlsbCBmIChCeXRlcy5jcmVhdGUgNTEyKTtcbiAgICBsZXhfYnVmZmVyID0gQnl0ZXMuY3JlYXRlIDEwMjQ7XG4gICAgbGV4X2J1ZmZlcl9sZW4gPSAwO1xuICAgIGxleF9hYnNfcG9zID0gMDtcbiAgICBsZXhfc3RhcnRfcG9zID0gMDtcbiAgICBsZXhfY3Vycl9wb3MgPSAwO1xuICAgIGxleF9sYXN0X3BvcyA9IDA7XG4gICAgbGV4X2xhc3RfYWN0aW9uID0gMDtcbiAgICBsZXhfbWVtID0gW3x8XTtcbiAgICBsZXhfZW9mX3JlYWNoZWQgPSBmYWxzZTtcbiAgICBsZXhfc3RhcnRfcCA9IGlmIHdpdGhfcG9zaXRpb25zIHRoZW4gemVyb19wb3MgZWxzZSBkdW1teV9wb3M7XG4gICAgbGV4X2N1cnJfcCA9IGlmIHdpdGhfcG9zaXRpb25zIHRoZW4gemVyb19wb3MgZWxzZSBkdW1teV9wb3M7XG4gIH1cblxubGV0IGZyb21fY2hhbm5lbCA/d2l0aF9wb3NpdGlvbnMgaWMgPVxuICBmcm9tX2Z1bmN0aW9uID93aXRoX3Bvc2l0aW9ucyAoZnVuIGJ1ZiBuIC0+IGlucHV0IGljIGJ1ZiAwIG4pXG5cbmxldCBmcm9tX3N0cmluZyA/KHdpdGhfcG9zaXRpb25zID0gdHJ1ZSkgcyA9XG4gIHsgcmVmaWxsX2J1ZmYgPSAoZnVuIGxleGJ1ZiAtPiBsZXhidWYubGV4X2VvZl9yZWFjaGVkIDwtIHRydWUpO1xuICAgIGxleF9idWZmZXIgPSBCeXRlcy5vZl9zdHJpbmcgczsgKCogaGF2ZSB0byBtYWtlIGEgY29weSBmb3IgY29tcGF0aWJpbGl0eVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCB1bnNhZmUtc3RyaW5nIG1vZGUgKilcbiAgICBsZXhfYnVmZmVyX2xlbiA9IFN0cmluZy5sZW5ndGggcztcbiAgICBsZXhfYWJzX3BvcyA9IDA7XG4gICAgbGV4X3N0YXJ0X3BvcyA9IDA7XG4gICAgbGV4X2N1cnJfcG9zID0gMDtcbiAgICBsZXhfbGFzdF9wb3MgPSAwO1xuICAgIGxleF9sYXN0X2FjdGlvbiA9IDA7XG4gICAgbGV4X21lbSA9IFt8fF07XG4gICAgbGV4X2VvZl9yZWFjaGVkID0gdHJ1ZTtcbiAgICBsZXhfc3RhcnRfcCA9IGlmIHdpdGhfcG9zaXRpb25zIHRoZW4gemVyb19wb3MgZWxzZSBkdW1teV9wb3M7XG4gICAgbGV4X2N1cnJfcCA9IGlmIHdpdGhfcG9zaXRpb25zIHRoZW4gemVyb19wb3MgZWxzZSBkdW1teV9wb3M7XG4gIH1cblxubGV0IHNldF9wb3NpdGlvbiBsZXhidWYgcG9zaXRpb24gPVxuICBsZXhidWYubGV4X2N1cnJfcCAgPC0ge3Bvc2l0aW9uIHdpdGggcG9zX2ZuYW1lID0gbGV4YnVmLmxleF9jdXJyX3AucG9zX2ZuYW1lfTtcbiAgbGV4YnVmLmxleF9hYnNfcG9zIDwtIHBvc2l0aW9uLnBvc19jbnVtXG5cbmxldCBzZXRfZmlsZW5hbWUgbGV4YnVmIGZuYW1lID1cbiAgbGV4YnVmLmxleF9jdXJyX3AgPC0ge2xleGJ1Zi5sZXhfY3Vycl9wIHdpdGggcG9zX2ZuYW1lID0gZm5hbWV9XG5cbmxldCB3aXRoX3Bvc2l0aW9ucyBsZXhidWYgPSBsZXhidWYubGV4X2N1cnJfcCAhPSBkdW1teV9wb3NcblxubGV0IGxleGVtZSBsZXhidWYgPVxuICBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gIEJ5dGVzLnN1Yl9zdHJpbmcgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgbGVuXG5cbmxldCBzdWJfbGV4ZW1lIGxleGJ1ZiBpMSBpMiA9XG4gIGxldCBsZW4gPSBpMi1pMSBpblxuICBCeXRlcy5zdWJfc3RyaW5nIGxleGJ1Zi5sZXhfYnVmZmVyIGkxIGxlblxuXG5sZXQgc3ViX2xleGVtZV9vcHQgbGV4YnVmIGkxIGkyID1cbiAgaWYgaTEgPj0gMCB0aGVuIGJlZ2luXG4gICAgbGV0IGxlbiA9IGkyLWkxIGluXG4gICAgU29tZSAoQnl0ZXMuc3ViX3N0cmluZyBsZXhidWYubGV4X2J1ZmZlciBpMSBsZW4pXG4gIGVuZCBlbHNlIGJlZ2luXG4gICAgTm9uZVxuICBlbmRcblxubGV0IHN1Yl9sZXhlbWVfY2hhciBsZXhidWYgaSA9IEJ5dGVzLmdldCBsZXhidWYubGV4X2J1ZmZlciBpXG5cbmxldCBzdWJfbGV4ZW1lX2NoYXJfb3B0IGxleGJ1ZiBpID1cbiAgaWYgaSA+PSAwIHRoZW5cbiAgICBTb21lIChCeXRlcy5nZXQgbGV4YnVmLmxleF9idWZmZXIgaSlcbiAgZWxzZVxuICAgIE5vbmVcblxuXG5sZXQgbGV4ZW1lX2NoYXIgbGV4YnVmIGkgPVxuICBCeXRlcy5nZXQgbGV4YnVmLmxleF9idWZmZXIgKGxleGJ1Zi5sZXhfc3RhcnRfcG9zICsgaSlcblxubGV0IGxleGVtZV9zdGFydCBsZXhidWYgPSBsZXhidWYubGV4X3N0YXJ0X3AucG9zX2NudW1cbmxldCBsZXhlbWVfZW5kIGxleGJ1ZiA9IGxleGJ1Zi5sZXhfY3Vycl9wLnBvc19jbnVtXG5cbmxldCBsZXhlbWVfc3RhcnRfcCBsZXhidWYgPSBsZXhidWYubGV4X3N0YXJ0X3BcbmxldCBsZXhlbWVfZW5kX3AgbGV4YnVmID0gbGV4YnVmLmxleF9jdXJyX3BcblxubGV0IG5ld19saW5lIGxleGJ1ZiA9XG4gIGxldCBsY3AgPSBsZXhidWYubGV4X2N1cnJfcCBpblxuICBpZiBsY3AgIT0gZHVtbXlfcG9zIHRoZW5cbiAgICBsZXhidWYubGV4X2N1cnJfcCA8LVxuICAgICAgeyBsY3Agd2l0aFxuICAgICAgICBwb3NfbG51bSA9IGxjcC5wb3NfbG51bSArIDE7XG4gICAgICAgIHBvc19ib2wgPSBsY3AucG9zX2NudW07XG4gICAgICB9XG5cblxuXG4oKiBEaXNjYXJkIGRhdGEgbGVmdCBpbiBsZXhlciBidWZmZXIuICopXG5cbmxldCBmbHVzaF9pbnB1dCBsYiA9XG4gIGxiLmxleF9jdXJyX3BvcyA8LSAwO1xuICBsYi5sZXhfYWJzX3BvcyA8LSAwO1xuICBsZXQgbGNwID0gbGIubGV4X2N1cnJfcCBpblxuICBpZiBsY3AgIT0gZHVtbXlfcG9zIHRoZW5cbiAgICBsYi5sZXhfY3Vycl9wIDwtIHt6ZXJvX3BvcyB3aXRoIHBvc19mbmFtZSA9IGxjcC5wb3NfZm5hbWV9O1xuICBsYi5sZXhfYnVmZmVyX2xlbiA8LSAwO1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgIEJlbm9pdCBWYXVnb24sIEVOU1RBICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljc1xuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAoKiBUb29scyB0byBtYW5pcHVsYXRlIHNjYW5uaW5nIHNldCBvZiBjaGFycyAoc2VlICVbLi4uXSkgKilcblxudHlwZSBtdXRhYmxlX2NoYXJfc2V0ID0gYnl0ZXNcblxuKCogQ3JlYXRlIGEgZnJlc2gsIGVtcHR5LCBtdXRhYmxlIGNoYXIgc2V0LiAqKVxubGV0IGNyZWF0ZV9jaGFyX3NldCAoKSA9IEJ5dGVzLm1ha2UgMzIgJ1xcMDAwJ1xuXG4oKiBBZGQgYSBjaGFyIGluIGEgbXV0YWJsZSBjaGFyIHNldC4gKilcbmxldCBhZGRfaW5fY2hhcl9zZXQgY2hhcl9zZXQgYyA9XG4gIGxldCBpbmQgPSBpbnRfb2ZfY2hhciBjIGluXG4gIGxldCBzdHJfaW5kID0gaW5kIGxzciAzIGFuZCBtYXNrID0gMSBsc2wgKGluZCBsYW5kIDBiMTExKSBpblxuICBCeXRlcy5zZXQgY2hhcl9zZXQgc3RyX2luZFxuICAgIChjaGFyX29mX2ludCAoaW50X29mX2NoYXIgKEJ5dGVzLmdldCBjaGFyX3NldCBzdHJfaW5kKSBsb3IgbWFzaykpXG5cbmxldCBmcmVlemVfY2hhcl9zZXQgY2hhcl9zZXQgPVxuICBCeXRlcy50b19zdHJpbmcgY2hhcl9zZXRcblxuKCogQ29tcHV0ZSB0aGUgY29tcGxlbWVudCBvZiBhIGNoYXIgc2V0LiAqKVxubGV0IHJldl9jaGFyX3NldCBjaGFyX3NldCA9XG4gIGxldCBjaGFyX3NldCcgPSBjcmVhdGVfY2hhcl9zZXQgKCkgaW5cbiAgZm9yIGkgPSAwIHRvIDMxIGRvXG4gICAgQnl0ZXMuc2V0IGNoYXJfc2V0JyBpXG4gICAgICAoY2hhcl9vZl9pbnQgKGludF9vZl9jaGFyIChTdHJpbmcuZ2V0IGNoYXJfc2V0IGkpIGx4b3IgMHhGRikpO1xuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGNoYXJfc2V0J1xuXG4oKiBSZXR1cm4gdHJ1ZSBpZiBhIGBjJyBpcyBpbiBgY2hhcl9zZXQnLiAqKVxubGV0IGlzX2luX2NoYXJfc2V0IGNoYXJfc2V0IGMgPVxuICBsZXQgaW5kID0gaW50X29mX2NoYXIgYyBpblxuICBsZXQgc3RyX2luZCA9IGluZCBsc3IgMyBhbmQgbWFzayA9IDEgbHNsIChpbmQgbGFuZCAwYjExMSkgaW5cbiAgKGludF9vZl9jaGFyIChTdHJpbmcuZ2V0IGNoYXJfc2V0IHN0cl9pbmQpIGxhbmQgbWFzaykgPD4gMFxuXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCogSWdub3JlZCBwYXJhbSBjb252ZXJzaW9uICopXG5cbigqIEdBRFQgdXNlZCB0byBhYnN0cmFjdCBhbiBleGlzdGVudGlhbCB0eXBlIHBhcmFtZXRlci4gKilcbigqIFNlZSBwYXJhbV9mb3JtYXRfb2ZfaWdub3JlZF9mb3JtYXQuICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYXJhbV9mb3JtYXRfZWJiID0gUGFyYW1fZm9ybWF0X0VCQiA6XG4gICAgKCd4IC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYXJhbV9mb3JtYXRfZWJiXG5cbigqIENvbXB1dGUgYSBwYWRkaW5nIGFzc29jaWF0ZWQgdG8gYSBwYWRfb3B0aW9uIChzZWUgXCIlXzQyZFwiKS4gKilcbmxldCBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0ID0gbWF0Y2ggcGFkX29wdCB3aXRoXG4gIHwgTm9uZSAtPiBOb19wYWRkaW5nXG4gIHwgU29tZSB3aWR0aCAtPiBMaXRfcGFkZGluZyAoUmlnaHQsIHdpZHRoKVxuXG4oKiBDb21wdXRlIGEgcHJlY2lzaW9uIGFzc29jaWF0ZWQgdG8gYSBwcmVjX29wdGlvbiAoc2VlIFwiJV8uNDJmXCIpLiAqKVxubGV0IHByZWNfb2ZfcHJlY19vcHQgcHJlY19vcHQgPSBtYXRjaCBwcmVjX29wdCB3aXRoXG4gIHwgTm9uZSAtPiBOb19wcmVjaXNpb25cbiAgfCBTb21lIG5kZWMgLT4gTGl0X3ByZWNpc2lvbiBuZGVjXG5cbigqIFR1cm4gYW4gaWdub3JlZCBwYXJhbSBpbnRvIGl0cyBlcXVpdmFsZW50IG5vdC1pZ25vcmVkIGZvcm1hdCBub2RlLiAqKVxuKCogVXNlZCBmb3IgZm9ybWF0IHByZXR0eS1wcmludGluZyBhbmQgU2NhbmYuICopXG5sZXQgcGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IDogdHlwZSBhIGIgYyBkIGUgZiB4IHkgLlxuICAgIChhLCBiLCBjLCBkLCB5LCB4KSBpZ25vcmVkIC0+ICh4LCBiLCBjLCB5LCBlLCBmKSBmbXQgLT5cbiAgICAgIChhLCBiLCBjLCBkLCBlLCBmKSBwYXJhbV9mb3JtYXRfZWJiID1cbmZ1biBpZ24gZm10IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9jaGFyIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoQ2hhciBmbXQpXG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChDYW1sX2NoYXIgZm10KVxuICB8IElnbm9yZWRfc3RyaW5nIHBhZF9vcHQgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChTdHJpbmcgKHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIGZtdCkpXG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBwYWRfb3B0IC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoQ2FtbF9zdHJpbmcgKHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIGZtdCkpXG4gIHwgSWdub3JlZF9pbnQgKGljb252LCBwYWRfb3B0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKEludCAoaWNvbnYsIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIE5vX3ByZWNpc2lvbiwgZm10KSlcbiAgfCBJZ25vcmVkX2ludDMyIChpY29udiwgcGFkX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoSW50MzIgKGljb252LCBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBOb19wcmVjaXNpb24sIGZtdCkpXG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgKGljb252LCBwYWRfb3B0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChOYXRpdmVpbnQgKGljb252LCBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBOb19wcmVjaXNpb24sIGZtdCkpXG4gIHwgSWdub3JlZF9pbnQ2NCAoaWNvbnYsIHBhZF9vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKEludDY0IChpY29udiwgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgTm9fcHJlY2lzaW9uLCBmbXQpKVxuICB8IElnbm9yZWRfZmxvYXQgKHBhZF9vcHQsIHByZWNfb3B0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChGbG9hdCAoKEZsb2F0X2ZsYWdfLCBGbG9hdF9mKSxcbiAgICAgICAgICAgICAgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgcHJlY19vZl9wcmVjX29wdCBwcmVjX29wdCwgZm10KSlcbiAgfCBJZ25vcmVkX2Jvb2wgcGFkX29wdCAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKEJvb2wgKHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIGZtdCkpXG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIChwYWRfb3B0LCBmbXR0eSkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChGb3JtYXRfYXJnIChwYWRfb3B0LCBmbXR0eSwgZm10KSlcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAocGFkX29wdCwgZm10dHkpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKEZvcm1hdF9zdWJzdCAocGFkX29wdCwgZm10dHksIGZtdCkpXG4gIHwgSWdub3JlZF9yZWFkZXIgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChSZWFkZXIgZm10KVxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBmbXQpKVxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBjb3VudGVyIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgZm10KSlcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoU2Nhbl9uZXh0X2NoYXIgZm10KVxuXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBUeXBlcyAqKVxuXG50eXBlICgnYiwgJ2MpIGFjY19mb3JtYXR0aW5nX2dlbiA9XG4gIHwgQWNjX29wZW5fdGFnIG9mICgnYiwgJ2MpIGFjY1xuICB8IEFjY19vcGVuX2JveCBvZiAoJ2IsICdjKSBhY2NcblxuKCogUmV2ZXJzZWQgbGlzdCBvZiBwcmludGluZyBhdG9tcy4gKilcbigqIFVzZWQgdG8gYWNjdW11bGF0ZSBwcmludGYgYXJndW1lbnRzLiAqKVxuYW5kICgnYiwgJ2MpIGFjYyA9XG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IG9mICgnYiwgJ2MpIGFjYyAqIGZvcm1hdHRpbmdfbGl0XG4gICAgICAoKiBTcGVjaWFsIGZtdHRpbmcgKGJveCkgKilcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gb2YgKCdiLCAnYykgYWNjICogKCdiLCAnYykgYWNjX2Zvcm1hdHRpbmdfZ2VuXG4gICAgICAoKiBTcGVjaWFsIGZtdHRpbmcgKGJveCkgKilcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgb2YgKCdiLCAnYykgYWNjICogc3RyaW5nICAgICAoKiBMaXRlcmFsIHN0cmluZyAqKVxuICB8IEFjY19jaGFyX2xpdGVyYWwgICBvZiAoJ2IsICdjKSBhY2MgKiBjaGFyICAgICAgICgqIExpdGVyYWwgY2hhciAqKVxuICB8IEFjY19kYXRhX3N0cmluZyAgICBvZiAoJ2IsICdjKSBhY2MgKiBzdHJpbmcgICAgICgqIEdlbmVyYXRlZCBzdHJpbmcgKilcbiAgfCBBY2NfZGF0YV9jaGFyICAgICAgb2YgKCdiLCAnYykgYWNjICogY2hhciAgICAgICAoKiBHZW5lcmF0ZWQgY2hhciAqKVxuICB8IEFjY19kZWxheSAgICAgICAgICBvZiAoJ2IsICdjKSBhY2MgKiAoJ2IgLT4gJ2MpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBEZWxheWVkIHByaW50aW5nICglYSwgJXQpICopXG4gIHwgQWNjX2ZsdXNoICAgICAgICAgIG9mICgnYiwgJ2MpIGFjYyAgICAgICAgICAgICAgKCogRmx1c2ggKilcbiAgfCBBY2NfaW52YWxpZF9hcmcgICAgb2YgKCdiLCAnYykgYWNjICogc3RyaW5nXG4gICAgICAoKiBSYWlzZSBJbnZhbGlkX2FyZ3VtZW50IG1zZyAqKVxuICB8IEVuZF9vZl9hY2NcblxuKCogTGlzdCBvZiBoZXRlcm9nZW5lb3VzIHZhbHVlcy4gKilcbigqIFVzZWQgdG8gYWNjdW11bGF0ZSBzY2FuZiBjYWxsYmFjayBhcmd1bWVudHMuICopXG50eXBlICgnYSwgJ2IpIGhldGVyX2xpc3QgPVxuICB8IENvbnMgOiAnYyAqICgnYSwgJ2IpIGhldGVyX2xpc3QgLT4gKCdjIC0+ICdhLCAnYikgaGV0ZXJfbGlzdFxuICB8IE5pbCA6ICgnYiwgJ2IpIGhldGVyX2xpc3RcblxuKCogRXhpc3RlbnRpYWwgQmxhY2sgQm94ZXMuICopXG4oKiBVc2VkIHRvIGFic3RyYWN0IHNvbWUgZXhpc3RlbnRpYWwgdHlwZSBwYXJhbWV0ZXJzLiAqKVxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwYWRkaW5nIGFuZCBhbiBmbXR0eS4gKilcbigqIFNlZSB0aGUgdHlwZV9wYWRkaW5nIGZ1bmN0aW9uLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgcGFkZGluZ19mbXR0eV9lYmIgPSBQYWRkaW5nX2ZtdHR5X0VCQiA6XG4gICAgICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgLT5cbiAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhZGRpbmdfZm10dHlfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHBhZGRpbmcsIGEgcHJlY2lzaW9uIGFuZCBhbiBmbXR0eS4gKilcbigqIFNlZSB0aGUgdHlwZV9wYWRwcmVjIGZ1bmN0aW9uLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgcGFkcHJlY19mbXR0eV9lYmIgPSBQYWRwcmVjX2ZtdHR5X0VCQiA6XG4gICAgICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksICd6KSBwcmVjaXNpb24gKiAoJ3osICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgLT5cbiAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhZHByZWNfZm10dHlfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHBhZGRpbmcgYW5kIGFuIGZtdC4gKilcbigqIFNlZSBtYWtlX3BhZGRpbmdfZm10X2ViYiBhbmQgcGFyc2VfZm9ybWF0IGZ1bmN0aW9ucy4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdlLCAnZikgcGFkZGluZ19mbXRfZWJiID0gUGFkZGluZ19mbXRfRUJCIDpcbiAgICAgKF8sICd4IC0+ICdhKSBwYWRkaW5nICpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAoJ3gsICdiLCAnYywgJ2UsICdmKSBwYWRkaW5nX2ZtdF9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcHJlY2lzaW9uIGFuZCBhbiBmbXQuICopXG4oKiBTZWUgbWFrZV9wcmVjaXNpb25fZm10X2ViYiBhbmQgcGFyc2VfZm9ybWF0IGZ1bmN0aW9ucy4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdlLCAnZikgcHJlY2lzaW9uX2ZtdF9lYmIgPSBQcmVjaXNpb25fZm10X0VCQiA6XG4gICAgIChfLCAneCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAoJ3gsICdiLCAnYywgJ2UsICdmKSBwcmVjaXNpb25fZm10X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwYWRkaW5nLCBhIHByZWNpc2lvbiBhbmQgYW4gZm10LiAqKVxuKCogU2VlIG1ha2VfcGFkcHJlY19mbXRfZWJiIGFuZCBwYXJzZV9mb3JtYXQgZnVuY3Rpb25zLiAqKVxudHlwZSAoJ3AsICdiLCAnYywgJ2UsICdmKSBwYWRwcmVjX2ZtdF9lYmIgPSBQYWRwcmVjX2ZtdF9FQkIgOlxuICAgICAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCAncCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAoJ3AsICdiLCAnYywgJ2UsICdmKSBwYWRwcmVjX2ZtdF9lYmJcblxuKCogQWJzdHJhY3QgdGhlICdhIGFuZCAnZCBwYXJhbWV0ZXJzIG9mIGFuIGZtdC4gKilcbigqIE91dHB1dCB0eXBlIG9mIHRoZSBmb3JtYXQgcGFyc2luZyBmdW5jdGlvbi4gKilcbnR5cGUgKCdiLCAnYywgJ2UsICdmKSBmbXRfZWJiID0gRm10X0VCQiA6XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgKCdiLCAnYywgJ2UsICdmKSBmbXRfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhbiBmbXR0eSBhbmQgYW4gZm10LiAqKVxuKCogU2VlIHRoZSB0eXBlX2Zvcm1hdF9nZW4gZnVuY3Rpb24uICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRfZm10dHlfZWJiID0gRm10X2ZtdHR5X0VCQiA6XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ3ksICd4KSBmbXQgKlxuICAgICAoJ3gsICdiLCAnYywgJ3ksICdlLCAnZikgZm10dHkgLT5cbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdF9mbXR0eV9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGFuIGZtdHR5IGFuZCBhbiBmbXQuICopXG4oKiBTZWUgdGhlIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIGZ1bmN0aW9uLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHlfZm10X2ViYiA9IEZtdHR5X2ZtdF9FQkIgOlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICd5LCAneCkgZm10dHkgKlxuICAgICAoJ3gsICdiLCAnYywgJ3ksICdlLCAnZikgZm10X2ZtdHR5X2ViYiAtPlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHlfZm10X2ViYlxuXG4oKiBBYnN0cmFjdCBhbGwgZm10dHkgdHlwZSBwYXJhbWV0ZXJzLiAqKVxuKCogVXNlZCB0byBjb21wYXJlIGZvcm1hdCB0eXBlcy4gKilcbnR5cGUgZm10dHlfZWJiID0gRm10dHlfRUJCIDogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5IC0+IGZtdHR5X2ViYlxuXG4oKiBBYnN0cmFjdCBhbGwgcGFkZGluZyB0eXBlIHBhcmFtZXRlcnMuICopXG4oKiBVc2VkIHRvIGNvbXBhcmUgcGFkZGluZ3MuICopXG50eXBlIHBhZGRpbmdfZWJiID0gUGFkZGluZ19FQkIgOiAoJ2EsICdiKSBwYWRkaW5nIC0+IHBhZGRpbmdfZWJiXG5cbigqIEFic3RyYWN0IGFsbCBwcmVjaXNpb24gdHlwZSBwYXJhbWV0ZXJzLiAqKVxuKCogVXNlZCB0byBjb21wYXJlIHByZWNpc2lvbnMuICopXG50eXBlIHByZWNpc2lvbl9lYmIgPSBQcmVjaXNpb25fRUJCIDogKCdhLCAnYikgcHJlY2lzaW9uIC0+IHByZWNpc2lvbl9lYmJcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBDb25zdGFudHMgKilcblxuKCogRGVmYXVsdCBwcmVjaXNpb24gZm9yIGZsb2F0IHByaW50aW5nLiAqKVxubGV0IGRlZmF1bHRfZmxvYXRfcHJlY2lzaW9uIGZjb252ID1cbiAgbWF0Y2ggc25kIGZjb252IHdpdGhcbiAgfCBGbG9hdF9mIHwgRmxvYXRfZSB8IEZsb2F0X0UgfCBGbG9hdF9nIHwgRmxvYXRfRyB8IEZsb2F0X2ggfCBGbG9hdF9IXG4gIHwgRmxvYXRfQ0YgLT4gLTZcbiAgKCogRm9yICVoICVIIGFuZCAlI0YgZm9ybWF0cywgYSBuZWdhdGl2ZSBwcmVjaXNpb24gbWVhbnMgXCJhcyBtYW55IGRpZ2l0cyBhc1xuICAgICBuZWNlc3NhcnlcIi4gIEZvciB0aGUgb3RoZXIgRlAgZm9ybWF0cywgd2UgdGFrZSB0aGUgYWJzb2x1dGUgdmFsdWVcbiAgICAgb2YgdGhlIHByZWNpc2lvbiwgaGVuY2UgNiBkaWdpdHMgYnkgZGVmYXVsdC4gKilcbiAgfCBGbG9hdF9GIC0+IDEyXG4gICgqIERlZmF1bHQgcHJlY2lzaW9uIGZvciBPQ2FtbCBmbG9hdCBwcmludGluZyAoJUYpLiAqKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEV4dGVybmFscyAqKVxuXG5leHRlcm5hbCBmb3JtYXRfZmxvYXQ6IHN0cmluZyAtPiBmbG9hdCAtPiBzdHJpbmdcbiAgPSBcImNhbWxfZm9ybWF0X2Zsb2F0XCJcbmV4dGVybmFsIGZvcm1hdF9pbnQ6IHN0cmluZyAtPiBpbnQgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2Zvcm1hdF9pbnRcIlxuZXh0ZXJuYWwgZm9ybWF0X2ludDMyOiBzdHJpbmcgLT4gaW50MzIgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2ludDMyX2Zvcm1hdFwiXG5leHRlcm5hbCBmb3JtYXRfbmF0aXZlaW50OiBzdHJpbmcgLT4gbmF0aXZlaW50IC0+IHN0cmluZ1xuICA9IFwiY2FtbF9uYXRpdmVpbnRfZm9ybWF0XCJcbmV4dGVybmFsIGZvcm1hdF9pbnQ2NDogc3RyaW5nIC0+IGludDY0IC0+IHN0cmluZ1xuICA9IFwiY2FtbF9pbnQ2NF9mb3JtYXRcIlxuZXh0ZXJuYWwgaGV4c3RyaW5nX29mX2Zsb2F0OiBmbG9hdCAtPiBpbnQgLT4gY2hhciAtPiBzdHJpbmdcbiAgPSBcImNhbWxfaGV4c3RyaW5nX29mX2Zsb2F0XCJcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICgqIFRvb2xzIHRvIHByZXR0eS1wcmludCBmb3JtYXRzICopXG5cbigqIFR5cGUgb2YgZXh0ZW5zaWJsZSBjaGFyYWN0ZXIgYnVmZmVycy4gKilcbnR5cGUgYnVmZmVyID0ge1xuICBtdXRhYmxlIGluZCA6IGludDtcbiAgbXV0YWJsZSBieXRlcyA6IGJ5dGVzO1xufVxuXG4oKiBDcmVhdGUgYSBmcmVzaCBidWZmZXIuICopXG5sZXQgYnVmZmVyX2NyZWF0ZSBpbml0X3NpemUgPSB7IGluZCA9IDA7IGJ5dGVzID0gQnl0ZXMuY3JlYXRlIGluaXRfc2l6ZSB9XG5cbigqIENoZWNrIHNpemUgb2YgdGhlIGJ1ZmZlciBhbmQgZ3JvdyBpdCBpZiBuZWVkZWQuICopXG5sZXQgYnVmZmVyX2NoZWNrX3NpemUgYnVmIG92ZXJoZWFkID1cbiAgbGV0IGxlbiA9IEJ5dGVzLmxlbmd0aCBidWYuYnl0ZXMgaW5cbiAgbGV0IG1pbl9sZW4gPSBidWYuaW5kICsgb3ZlcmhlYWQgaW5cbiAgaWYgbWluX2xlbiA+IGxlbiB0aGVuIChcbiAgICBsZXQgbmV3X2xlbiA9IEludC5tYXggKGxlbiAqIDIpIG1pbl9sZW4gaW5cbiAgICBsZXQgbmV3X3N0ciA9IEJ5dGVzLmNyZWF0ZSBuZXdfbGVuIGluXG4gICAgQnl0ZXMuYmxpdCBidWYuYnl0ZXMgMCBuZXdfc3RyIDAgbGVuO1xuICAgIGJ1Zi5ieXRlcyA8LSBuZXdfc3RyO1xuICApXG5cbigqIEFkZCB0aGUgY2hhcmFjdGVyIGBjJyB0byB0aGUgYnVmZmVyIGBidWYnLiAqKVxubGV0IGJ1ZmZlcl9hZGRfY2hhciBidWYgYyA9XG4gIGJ1ZmZlcl9jaGVja19zaXplIGJ1ZiAxO1xuICBCeXRlcy5zZXQgYnVmLmJ5dGVzIGJ1Zi5pbmQgYztcbiAgYnVmLmluZCA8LSBidWYuaW5kICsgMVxuXG4oKiBBZGQgdGhlIHN0cmluZyBgcycgdG8gdGhlIGJ1ZmZlciBgYnVmJy4gKilcbmxldCBidWZmZXJfYWRkX3N0cmluZyBidWYgcyA9XG4gIGxldCBzdHJfbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGJ1ZmZlcl9jaGVja19zaXplIGJ1ZiBzdHJfbGVuO1xuICBTdHJpbmcuYmxpdCBzIDAgYnVmLmJ5dGVzIGJ1Zi5pbmQgc3RyX2xlbjtcbiAgYnVmLmluZCA8LSBidWYuaW5kICsgc3RyX2xlblxuXG4oKiBHZXQgdGhlIGNvbnRlbnQgb2YgdGhlIGJ1ZmZlci4gKilcbmxldCBidWZmZXJfY29udGVudHMgYnVmID1cbiAgQnl0ZXMuc3ViX3N0cmluZyBidWYuYnl0ZXMgMCBidWYuaW5kXG5cbigqKiopXG5cbigqIENvbnZlcnQgYW4gaW50ZWdlciBjb252ZXJzaW9uIHRvIGNoYXIuICopXG5sZXQgY2hhcl9vZl9pY29udiBpY29udiA9IG1hdGNoIGljb252IHdpdGhcbiAgfCBJbnRfZCB8IEludF9wZCB8IEludF9zZCB8IEludF9DZCAtPiAnZCcgfCBJbnRfaSB8IEludF9waSB8IEludF9zaVxuICB8IEludF9DaSAtPiAnaScgfCBJbnRfeCB8IEludF9DeCAtPiAneCcgfCBJbnRfWCB8IEludF9DWCAtPiAnWCcgfCBJbnRfb1xuICB8IEludF9DbyAtPiAnbycgfCBJbnRfdSB8IEludF9DdSAtPiAndSdcblxuKCogQ29udmVydCBhIGZsb2F0IGNvbnZlcnNpb24gdG8gY2hhci4gKilcbigqIGBjRicgd2lsbCBiZSAnRicgZm9yIGRpc3BsYXlpbmcgZm9ybWF0IGFuZCAnZycgdG8gY2FsbCBsaWJjIHByaW50ZiAqKVxubGV0IGNoYXJfb2ZfZmNvbnYgPyhjRj0nRicpIGZjb252ID0gbWF0Y2ggc25kIGZjb252IHdpdGhcbiAgfCBGbG9hdF9mIC0+ICdmJyB8IEZsb2F0X2UgLT4gJ2UnXG4gIHwgRmxvYXRfRSAtPiAnRScgfCBGbG9hdF9nIC0+ICdnJ1xuICB8IEZsb2F0X0cgLT4gJ0cnIHwgRmxvYXRfRiAtPiBjRlxuICB8IEZsb2F0X2ggLT4gJ2gnIHwgRmxvYXRfSCAtPiAnSCdcbiAgfCBGbG9hdF9DRiAtPiAnRidcblxuXG4oKiBDb252ZXJ0IGEgc2Nhbm5pbmcgY291bnRlciB0byBjaGFyLiAqKVxubGV0IGNoYXJfb2ZfY291bnRlciBjb3VudGVyID0gbWF0Y2ggY291bnRlciB3aXRoXG4gIHwgTGluZV9jb3VudGVyICAtPiAnbCdcbiAgfCBDaGFyX2NvdW50ZXIgIC0+ICduJ1xuICB8IFRva2VuX2NvdW50ZXIgLT4gJ04nXG5cbigqKiopXG5cbigqIFByaW50IGEgY2hhcl9zZXQgaW4gYSBidWZmZXIgd2l0aCB0aGUgT0NhbWwgZm9ybWF0IGxleGljYWwgY29udmVudGlvbi4gKilcbmxldCBicHJpbnRfY2hhcl9zZXQgYnVmIGNoYXJfc2V0ID1cbiAgbGV0IHJlYyBwcmludF9zdGFydCBzZXQgPVxuICAgIGxldCBpc19hbG9uZSBjID1cbiAgICAgIGxldCBiZWZvcmUsIGFmdGVyID0gQ2hhci4oY2hyIChjb2RlIGMgLSAxKSwgY2hyIChjb2RlIGMgKyAxKSkgaW5cbiAgICAgIGlzX2luX2NoYXJfc2V0IHNldCBjXG4gICAgICAmJiBub3QgKGlzX2luX2NoYXJfc2V0IHNldCBiZWZvcmUgJiYgaXNfaW5fY2hhcl9zZXQgc2V0IGFmdGVyKSBpblxuICAgIGlmIGlzX2Fsb25lICddJyB0aGVuIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ10nO1xuICAgIHByaW50X291dCBzZXQgMTtcbiAgICBpZiBpc19hbG9uZSAnLScgdGhlbiBidWZmZXJfYWRkX2NoYXIgYnVmICctJztcbiAgYW5kIHByaW50X291dCBzZXQgaSA9XG4gICAgaWYgaSA8IDI1NiB0aGVuXG4gICAgICBpZiBpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IGkpIHRoZW4gcHJpbnRfZmlyc3Qgc2V0IGlcbiAgICAgIGVsc2UgcHJpbnRfb3V0IHNldCAoaSArIDEpXG4gIGFuZCBwcmludF9maXJzdCBzZXQgaSA9XG4gICAgbWF0Y2ggY2hhcl9vZl9pbnQgaSB3aXRoXG4gICAgfCAnXFwyNTUnIC0+IHByaW50X2NoYXIgYnVmIDI1NTtcbiAgICB8ICddJyB8ICctJyAtPiBwcmludF9vdXQgc2V0IChpICsgMSk7XG4gICAgfCBfIC0+IHByaW50X3NlY29uZCBzZXQgKGkgKyAxKTtcbiAgYW5kIHByaW50X3NlY29uZCBzZXQgaSA9XG4gICAgaWYgaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCBpKSB0aGVuXG4gICAgICBtYXRjaCBjaGFyX29mX2ludCBpIHdpdGhcbiAgICAgIHwgJ1xcMjU1JyAtPlxuICAgICAgICBwcmludF9jaGFyIGJ1ZiAyNTQ7XG4gICAgICAgIHByaW50X2NoYXIgYnVmIDI1NTtcbiAgICAgIHwgJ10nIHwgJy0nIHdoZW4gbm90IChpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IChpICsgMSkpKSAtPlxuICAgICAgICBwcmludF9jaGFyIGJ1ZiAoaSAtIDEpO1xuICAgICAgICBwcmludF9vdXQgc2V0IChpICsgMSk7XG4gICAgICB8IF8gd2hlbiBub3QgKGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgKGkgKyAxKSkpIC0+XG4gICAgICAgIHByaW50X2NoYXIgYnVmIChpIC0gMSk7XG4gICAgICAgIHByaW50X2NoYXIgYnVmIGk7XG4gICAgICAgIHByaW50X291dCBzZXQgKGkgKyAyKTtcbiAgICAgIHwgXyAtPlxuICAgICAgICBwcmludF9pbiBzZXQgKGkgLSAxKSAoaSArIDIpO1xuICAgIGVsc2UgKFxuICAgICAgcHJpbnRfY2hhciBidWYgKGkgLSAxKTtcbiAgICAgIHByaW50X291dCBzZXQgKGkgKyAxKTtcbiAgICApXG4gIGFuZCBwcmludF9pbiBzZXQgaSBqID1cbiAgICBpZiBqID0gMjU2IHx8IG5vdCAoaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCBqKSkgdGhlbiAoXG4gICAgICBwcmludF9jaGFyIGJ1ZiBpO1xuICAgICAgcHJpbnRfY2hhciBidWYgKGludF9vZl9jaGFyICctJyk7XG4gICAgICBwcmludF9jaGFyIGJ1ZiAoaiAtIDEpO1xuICAgICAgaWYgaiA8IDI1NiB0aGVuIHByaW50X291dCBzZXQgKGogKyAxKTtcbiAgICApIGVsc2VcbiAgICAgIHByaW50X2luIHNldCBpIChqICsgMSk7XG4gIGFuZCBwcmludF9jaGFyIGJ1ZiBpID0gbWF0Y2ggY2hhcl9vZl9pbnQgaSB3aXRoXG4gICAgfCAnJScgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnO1xuICAgIHwgJ0AnIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBidWZmZXJfYWRkX2NoYXIgYnVmICdAJztcbiAgICB8IGMgICAtPiBidWZmZXJfYWRkX2NoYXIgYnVmIGM7XG4gIGluXG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ1snO1xuICBwcmludF9zdGFydCAoXG4gICAgaWYgaXNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgJ1xcMDAwJ1xuICAgIHRoZW4gKCBidWZmZXJfYWRkX2NoYXIgYnVmICdeJzsgcmV2X2NoYXJfc2V0IGNoYXJfc2V0IClcbiAgICBlbHNlIGNoYXJfc2V0XG4gICk7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ10nXG5cbigqKiopXG5cbigqIFByaW50IGEgcGFkdHkgaW4gYSBidWZmZXIgd2l0aCB0aGUgZm9ybWF0LWxpa2Ugc3ludGF4LiAqKVxubGV0IGJwcmludF9wYWR0eSBidWYgcGFkdHkgPSBtYXRjaCBwYWR0eSB3aXRoXG4gIHwgTGVmdCAgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnLSdcbiAgfCBSaWdodCAtPiAoKVxuICB8IFplcm9zIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJzAnXG5cbigqIFByaW50IHRoZSAnXycgb2YgYW4gaWdub3JlZCBmbGFnIGlmIG5lZWRlZC4gKilcbmxldCBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZyA9XG4gIGlmIGlnbl9mbGFnIHRoZW4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnXydcblxuKCoqKilcblxubGV0IGJwcmludF9wYWRfb3B0IGJ1ZiBwYWRfb3B0ID0gbWF0Y2ggcGFkX29wdCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgd2lkdGggLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIChJbnQudG9fc3RyaW5nIHdpZHRoKVxuXG4oKioqKVxuXG4oKiBQcmludCBwYWRkaW5nIGluIGEgYnVmZmVyIHdpdGggdGhlIGZvcm1hdC1saWtlIHN5bnRheC4gKilcbmxldCBicHJpbnRfcGFkZGluZyA6IHR5cGUgYSBiIC4gYnVmZmVyIC0+IChhLCBiKSBwYWRkaW5nIC0+IHVuaXQgPVxuZnVuIGJ1ZiBwYWQgLT4gbWF0Y2ggcGFkIHdpdGhcbiAgfCBOb19wYWRkaW5nIC0+ICgpXG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCBuKSAtPlxuICAgIGJwcmludF9wYWR0eSBidWYgcGFkdHk7XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIChJbnQudG9fc3RyaW5nIG4pO1xuICB8IEFyZ19wYWRkaW5nIHBhZHR5IC0+XG4gICAgYnByaW50X3BhZHR5IGJ1ZiBwYWR0eTtcbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmICcqJ1xuXG4oKiBQcmludCBwcmVjaXNpb24gaW4gYSBidWZmZXIgd2l0aCB0aGUgZm9ybWF0LWxpa2Ugc3ludGF4LiAqKVxubGV0IGJwcmludF9wcmVjaXNpb24gOiB0eXBlIGEgYiAuIGJ1ZmZlciAtPiAoYSwgYikgcHJlY2lzaW9uIC0+IHVuaXQgPVxuICBmdW4gYnVmIHByZWMgLT4gbWF0Y2ggcHJlYyB3aXRoXG4gIHwgTm9fcHJlY2lzaW9uIC0+ICgpXG4gIHwgTGl0X3ByZWNpc2lvbiBuIC0+XG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnLic7XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIChJbnQudG9fc3RyaW5nIG4pO1xuICB8IEFyZ19wcmVjaXNpb24gLT5cbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIuKlwiXG5cbigqKiopXG5cbigqIFByaW50IHRoZSBvcHRpb25hbCAnKycsICcgJyBvciAnIycgYXNzb2NpYXRlZCB0byBhbiBpbnQgY29udmVyc2lvbi4gKilcbmxldCBicHJpbnRfaWNvbnZfZmxhZyBidWYgaWNvbnYgPSBtYXRjaCBpY29udiB3aXRoXG4gIHwgSW50X3BkIHwgSW50X3BpIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJysnXG4gIHwgSW50X3NkIHwgSW50X3NpIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyAnXG4gIHwgSW50X0N4IHwgSW50X0NYIHwgSW50X0NvIHwgSW50X0NkIHwgSW50X0NpIHwgSW50X0N1IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICcjJ1xuICB8IEludF9kIHwgSW50X2kgfCBJbnRfeCB8IEludF9YIHwgSW50X28gfCBJbnRfdSAtPiAoKVxuXG4oKiBQcmludCBhbiBjb21wbGV0ZSBpbnQgZm9ybWF0IGluIGEgYnVmZmVyIChleDogXCIlMy4qZFwiKS4gKilcbmxldCBicHJpbnRfaW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWMgPVxuICBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gIGJwcmludF9pY29udl9mbGFnIGJ1ZiBpY29udjtcbiAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDtcbiAgYnByaW50X3ByZWNpc2lvbiBidWYgcHJlYztcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAoY2hhcl9vZl9pY29udiBpY29udilcblxuKCogUHJpbnQgYSBjb21wbGV0ZSBpbnQzMiwgbmF0aXZlaW50IG9yIGludDY0IGZvcm1hdCBpbiBhIGJ1ZmZlci4gKilcbmxldCBicHJpbnRfYWx0aW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWMgYyA9XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnO1xuICBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgYnByaW50X2ljb252X2ZsYWcgYnVmIGljb252O1xuICBicHJpbnRfcGFkZGluZyBidWYgcGFkO1xuICBicHJpbnRfcHJlY2lzaW9uIGJ1ZiBwcmVjO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmIGM7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpXG5cbigqKiopXG5cbigqIFByaW50IHRoZSBvcHRpb25hbCAnKycsICcgJyBhbmQvb3IgJyMnIGFzc29jaWF0ZWQgdG8gYSBmbG9hdCBjb252ZXJzaW9uLiAqKVxubGV0IGJwcmludF9mY29udl9mbGFnIGJ1ZiBmY29udiA9XG4gIGJlZ2luIG1hdGNoIGZzdCBmY29udiB3aXRoXG4gIHwgRmxvYXRfZmxhZ19wIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJysnXG4gIHwgRmxvYXRfZmxhZ19zIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyAnXG4gIHwgRmxvYXRfZmxhZ18gLT4gKCkgZW5kO1xuICBtYXRjaCBzbmQgZmNvbnYgd2l0aFxuICB8IEZsb2F0X0NGIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyMnXG4gIHwgRmxvYXRfZiB8IEZsb2F0X2UgfCBGbG9hdF9FIHwgRmxvYXRfZyB8IEZsb2F0X0dcbiAgfCBGbG9hdF9GIHwgRmxvYXRfaCB8IEZsb2F0X0ggLT4gKClcblxuKCogUHJpbnQgYSBjb21wbGV0ZSBmbG9hdCBmb3JtYXQgaW4gYSBidWZmZXIgKGV4OiBcIiUrKi4zZlwiKS4gKilcbmxldCBicHJpbnRfZmxvYXRfZm10IGJ1ZiBpZ25fZmxhZyBmY29udiBwYWQgcHJlYyA9XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnO1xuICBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgYnByaW50X2Zjb252X2ZsYWcgYnVmIGZjb252O1xuICBicHJpbnRfcGFkZGluZyBidWYgcGFkO1xuICBicHJpbnRfcHJlY2lzaW9uIGJ1ZiBwcmVjO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmIChjaGFyX29mX2Zjb252IGZjb252KVxuXG4oKiBDb21wdXRlIHRoZSBsaXRlcmFsIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIEZvcm1hdHRpbmdfbGl0LiAqKVxuKCogVXNlZCBieSBQcmludGYgYW5kIFNjYW5mIHdoZXJlIGZvcm1hdHRpbmcgaXMgbm90IGludGVycHJldGVkLiAqKVxubGV0IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmb3JtYXR0aW5nX2xpdCA9IG1hdGNoIGZvcm1hdHRpbmdfbGl0IHdpdGhcbiAgfCBDbG9zZV9ib3ggICAgICAgICAgICAtPiBcIkBdXCJcbiAgfCBDbG9zZV90YWcgICAgICAgICAgICAtPiBcIkB9XCJcbiAgfCBCcmVhayAoc3RyLCBfLCBfKSAgICAtPiBzdHJcbiAgfCBGRmx1c2ggICAgICAgICAgICAgICAtPiBcIkA/XCJcbiAgfCBGb3JjZV9uZXdsaW5lICAgICAgICAtPiBcIkBcXG5cIlxuICB8IEZsdXNoX25ld2xpbmUgICAgICAgIC0+IFwiQC5cIlxuICB8IE1hZ2ljX3NpemUgKHN0ciwgXykgIC0+IHN0clxuICB8IEVzY2FwZWRfYXQgICAgICAgICAgIC0+IFwiQEBcIlxuICB8IEVzY2FwZWRfcGVyY2VudCAgICAgIC0+IFwiQCVcIlxuICB8IFNjYW5faW5kaWMgYyAtPiBcIkBcIiBeIChTdHJpbmcubWFrZSAxIGMpXG5cbigqKiopXG5cbigqIFByaW50IGEgbGl0ZXJhbCBjaGFyIGluIGEgYnVmZmVyLCBlc2NhcGUgJyUnIGJ5IFwiJSVcIi4gKilcbmxldCBicHJpbnRfY2hhcl9saXRlcmFsIGJ1ZiBjaHIgPSBtYXRjaCBjaHIgd2l0aFxuICB8ICclJyAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlJVwiXG4gIHwgXyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmIGNoclxuXG4oKiBQcmludCBhIGxpdGVyYWwgc3RyaW5nIGluIGEgYnVmZmVyLCBlc2NhcGUgYWxsICclJyBieSBcIiUlXCIuICopXG5sZXQgYnByaW50X3N0cmluZ19saXRlcmFsIGJ1ZiBzdHIgPVxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzdHIgLSAxIGRvXG4gICAgYnByaW50X2NoYXJfbGl0ZXJhbCBidWYgc3RyLltpXVxuICBkb25lXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdCBwcmV0dHktcHJpbnRpbmcgKilcblxuKCogUHJpbnQgYSBjb21wbGV0ZSBmb3JtYXQgdHlwZSAoYW4gZm10dHkpIGluIGEgYnVmZmVyLiAqKVxubGV0IHJlYyBicHJpbnRfZm10dHkgOiB0eXBlIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIC5cbiAgICBidWZmZXIgLT4gKGEsIGIsIGMsIGQsIGUsIGYsIGcsIGgsIGksIGosIGssIGwpIGZtdHR5X3JlbCAtPiB1bml0ID1cbmZ1biBidWYgZm10dHkgLT4gbWF0Y2ggZm10dHkgd2l0aFxuICB8IENoYXJfdHkgcmVzdCAgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVjXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgU3RyaW5nX3R5IHJlc3QgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJXNcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBJbnRfdHkgcmVzdCAgICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlaVwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEludDMyX3R5IHJlc3QgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVsaVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJW5pXCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBJbnQ2NF90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlTGlcIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEZsb2F0X3R5IHJlc3QgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVmXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgQm9vbF90eSByZXN0ICAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJUJcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBBbHBoYV90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlYVwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IFRoZXRhX3R5IHJlc3QgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiV0XCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgQW55X3R5IHJlc3QgICAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJT9cIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBSZWFkZXJfdHkgcmVzdCAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlclwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPlxuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVfclwiO1xuICAgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcblxuICB8IEZvcm1hdF9hcmdfdHkgKHN1Yl9mbXR0eSwgcmVzdCkgLT5cbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIle1wiOyBicHJpbnRfZm10dHkgYnVmIHN1Yl9mbXR0eTtcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlfVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgRm9ybWF0X3N1YnN0X3R5IChzdWJfZm10dHksIF8sIHJlc3QpIC0+XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJShcIjsgYnByaW50X2ZtdHR5IGJ1ZiBzdWJfZm10dHk7XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJSlcIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuXG4gIHwgRW5kX29mX2ZtdHR5IC0+ICgpXG5cbigqKiopXG5cbmxldCByZWMgaW50X29mX2N1c3RvbV9hcml0eSA6IHR5cGUgYSBiIGMgLlxuICAoYSwgYiwgYykgY3VzdG9tX2FyaXR5IC0+IGludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQ3VzdG9tX3plcm8gLT4gMFxuICB8IEN1c3RvbV9zdWNjIHggLT4gMSArIGludF9vZl9jdXN0b21fYXJpdHkgeFxuXG4oKiBQcmludCBhIGNvbXBsZXRlIGZvcm1hdCBpbiBhIGJ1ZmZlci4gKilcbmxldCBicHJpbnRfZm10IGJ1ZiBmbXQgPVxuICBsZXQgcmVjIGZtdGl0ZXIgOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gYm9vbCAtPiB1bml0ID1cbiAgZnVuIGZtdCBpZ25fZmxhZyAtPiBtYXRjaCBmbXQgd2l0aFxuICAgIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkZGluZyBidWYgcGFkOyBidWZmZXJfYWRkX2NoYXIgYnVmICdzJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IENhbWxfc3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkZGluZyBidWYgcGFkOyBidWZmZXJfYWRkX2NoYXIgYnVmICdTJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcblxuICAgIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgYnByaW50X2ludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgSW50MzIgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfYWx0aW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWMgJ2wnO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgYnByaW50X2FsdGludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjICduJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgYnByaW50X2FsdGludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjICdMJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgYnByaW50X2Zsb2F0X2ZtdCBidWYgaWduX2ZsYWcgZmNvbnYgcGFkIHByZWM7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG5cbiAgICB8IENoYXIgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnYyc7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICdDJzsgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQm9vbCAocGFkLCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnQic7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBBbHBoYSByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICdhJzsgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgVGhldGEgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAndCc7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEN1c3RvbSAoYXJpdHksIF8sIHJlc3QpIC0+XG4gICAgICBmb3IgX2kgPSAxIHRvIGludF9vZl9jdXN0b21fYXJpdHkgYXJpdHkgZG9cbiAgICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICc/JztcbiAgICAgIGRvbmU7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBSZWFkZXIgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAncic7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEZsdXNoIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiUhXCI7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG5cbiAgICB8IFN0cmluZ19saXRlcmFsIChzdHIsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfc3RyaW5nX2xpdGVyYWwgYnVmIHN0cjtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcbiAgICB8IENoYXJfbGl0ZXJhbCAoY2hyLCByZXN0KSAtPlxuICAgICAgYnByaW50X2NoYXJfbGl0ZXJhbCBidWYgY2hyO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuXG4gICAgfCBGb3JtYXRfYXJnIChwYWRfb3B0LCBmbXR0eSwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRfb3B0IGJ1ZiBwYWRfb3B0OyBidWZmZXJfYWRkX2NoYXIgYnVmICd7JztcbiAgICAgIGJwcmludF9mbXR0eSBidWYgZm10dHk7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBidWZmZXJfYWRkX2NoYXIgYnVmICd9JztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEZvcm1hdF9zdWJzdCAocGFkX29wdCwgZm10dHksIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkX29wdCBidWYgcGFkX29wdDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKCc7XG4gICAgICBicHJpbnRfZm10dHkgYnVmIGZtdHR5OyBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKSc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG5cbiAgICB8IFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkX29wdCBidWYgd2lkdGhfb3B0OyBicHJpbnRfY2hhcl9zZXQgYnVmIGNoYXJfc2V0O1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgKGNoYXJfb2ZfY291bnRlciBjb3VudGVyKTtcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9zdHJpbmdfbGl0ZXJhbCBidWYgXCIwY1wiOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG5cbiAgICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgLT5cbiAgICAgIGxldCBQYXJhbV9mb3JtYXRfRUJCIGZtdCcgPSBwYXJhbV9mb3JtYXRfb2ZfaWdub3JlZF9mb3JtYXQgaWduIHJlc3QgaW5cbiAgICAgIGZtdGl0ZXIgZm10JyB0cnVlO1xuXG4gICAgfCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkgLT5cbiAgICAgIGJwcmludF9zdHJpbmdfbGl0ZXJhbCBidWYgKHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0KTtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcbiAgICB8IEZvcm1hdHRpbmdfZ2VuIChmbXRpbmdfZ2VuLCByZXN0KSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggZm10aW5nX2dlbiB3aXRoXG4gICAgICB8IE9wZW5fdGFnIChGb3JtYXQgKF8sIHN0cikpIC0+XG4gICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIkB7XCI7IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBzdHJcbiAgICAgIHwgT3Blbl9ib3ggKEZvcm1hdCAoXywgc3RyKSkgLT5cbiAgICAgICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiQFtcIjsgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIHN0clxuICAgICAgZW5kO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuXG4gICAgfCBFbmRfb2ZfZm9ybWF0IC0+ICgpXG5cbiAgaW4gZm10aXRlciBmbXQgZmFsc2VcblxuKCoqKilcblxuKCogQ29udmVydCBhIGZvcm1hdCB0byBzdHJpbmcuICopXG5sZXQgc3RyaW5nX29mX2ZtdCBmbXQgPVxuICBsZXQgYnVmID0gYnVmZmVyX2NyZWF0ZSAxNiBpblxuICBicHJpbnRfZm10IGJ1ZiBmbXQ7XG4gIGJ1ZmZlcl9jb250ZW50cyBidWZcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogVHlwZSBleHRyYWN0aW9uICopXG5cbnR5cGUgKF8sIF8pIGVxID0gUmVmbCA6ICgnYSwgJ2EpIGVxXG5cbigqIEludmFyaWFudDogdGhpcyBmdW5jdGlvbiBpcyB0aGUgaWRlbnRpdHkgb24gdmFsdWVzLlxuXG4gICBJbiBwYXJ0aWN1bGFyLCBpZiAodHkxLCB0eTIpIGhhdmUgZXF1YWwgdmFsdWVzLCB0aGVuXG4gICAodHJhbnMgKHN5bW0gdHkxKSB0eTIpIHJlc3BlY3RzIHRoZSAndHJhbnMnIHByZWNvbmRpdGlvbi4gKilcbmxldCByZWMgc3ltbSA6IHR5cGUgYTEgYjEgYzEgZDEgZTEgZjEgYTIgYjIgYzIgZDIgZTIgZjIgLlxuICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEsXG4gICAgYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlfcmVsXG4tPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMixcbiAgICBhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmbXR0eV9yZWxcbj0gZnVuY3Rpb25cbiAgfCBDaGFyX3R5IHJlc3QgLT4gQ2hhcl90eSAoc3ltbSByZXN0KVxuICB8IEludF90eSByZXN0IC0+IEludF90eSAoc3ltbSByZXN0KVxuICB8IEludDMyX3R5IHJlc3QgLT4gSW50MzJfdHkgKHN5bW0gcmVzdClcbiAgfCBJbnQ2NF90eSByZXN0IC0+IEludDY0X3R5IChzeW1tIHJlc3QpXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgLT4gTmF0aXZlaW50X3R5IChzeW1tIHJlc3QpXG4gIHwgRmxvYXRfdHkgcmVzdCAtPiBGbG9hdF90eSAoc3ltbSByZXN0KVxuICB8IEJvb2xfdHkgcmVzdCAtPiBCb29sX3R5IChzeW1tIHJlc3QpXG4gIHwgU3RyaW5nX3R5IHJlc3QgLT4gU3RyaW5nX3R5IChzeW1tIHJlc3QpXG4gIHwgVGhldGFfdHkgcmVzdCAtPiBUaGV0YV90eSAoc3ltbSByZXN0KVxuICB8IEFscGhhX3R5IHJlc3QgLT4gQWxwaGFfdHkgKHN5bW0gcmVzdClcbiAgfCBBbnlfdHkgcmVzdCAtPiBBbnlfdHkgKHN5bW0gcmVzdClcbiAgfCBSZWFkZXJfdHkgcmVzdCAtPiBSZWFkZXJfdHkgKHN5bW0gcmVzdClcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+IElnbm9yZWRfcmVhZGVyX3R5IChzeW1tIHJlc3QpXG4gIHwgRm9ybWF0X2FyZ190eSAodHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHksIHN5bW0gcmVzdClcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkyLCB0eTEsIHN5bW0gcmVzdClcbiAgfCBFbmRfb2ZfZm10dHkgLT4gRW5kX29mX2ZtdHR5XG5cbmxldCByZWMgZm10dHlfcmVsX2RldCA6IHR5cGUgYTEgYiBjIGQxIGUxIGYxIGEyIGQyIGUyIGYyIC5cbiAgKGExLCBiLCBjLCBkMSwgZTEsIGYxLFxuICAgYTIsIGIsIGMsIGQyLCBlMiwgZjIpIGZtdHR5X3JlbCAtPlxuICAgICgoZjEsIGYyKSBlcSAtPiAoYTEsIGEyKSBlcSlcbiAgKiAoKGExLCBhMikgZXEgLT4gKGYxLCBmMikgZXEpXG4gICogKChlMSwgZTIpIGVxIC0+IChkMSwgZDIpIGVxKVxuICAqICgoZDEsIGQyKSBlcSAtPiAoZTEsIGUyKSBlcSlcbj0gZnVuY3Rpb25cbiAgfCBFbmRfb2ZfZm10dHkgLT5cbiAgICAoZnVuIFJlZmwgLT4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gUmVmbClcbiAgfCBDaGFyX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgU3RyaW5nX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgSW50X3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgSW50MzJfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBJbnQ2NF90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IE5hdGl2ZWludF90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEZsb2F0X3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgQm9vbF90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuXG4gIHwgVGhldGFfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBBbHBoYV90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEFueV90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IFJlYWRlcl90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGVkIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZGUgUmVmbCBpbiBSZWZsKVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZWQgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBkZSBSZWZsIGluIFJlZmwpXG4gIHwgRm9ybWF0X2FyZ190eSAoX3R5LCByZXN0KSAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIGxldCB0eSA9IHRyYW5zIChzeW1tIHR5MSkgdHkyIGluXG4gICAgbGV0IGFnLCBnYSwgZGosIGpkID0gZm10dHlfcmVsX2RldCB0eSBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gbGV0IFJlZmwgPSBhZyBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGdhIFJlZmwgaW4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGVkIFJlZmwgaW4gbGV0IFJlZmwgPSBkaiBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGpkIFJlZmwgaW4gbGV0IFJlZmwgPSBkZSBSZWZsIGluIFJlZmwpXG5cbigqIFByZWNvbmRpdGlvbjogd2UgYXNzdW1lIHRoYXQgdGhlIHR3byBmbXR0eV9yZWwgYXJndW1lbnRzIGhhdmUgZXF1YWxcbiAgIHZhbHVlcyAoYXQgcG9zc2libHkgZGlzdGluY3QgdHlwZXMpOyB0aGlzIGludmFyaWFudCBjb21lcyBmcm9tIHRoZSB3YXlcbiAgIGZtdHR5X3JlbCB3aXRuZXNzZXMgYXJlIHByb2R1Y2VkIGJ5IHRoZSB0eXBlLWNoZWNrZXJcblxuICAgVGhlIGNvZGUgYmVsb3cgdXNlcyAoYXNzZXJ0IGZhbHNlKSB3aGVuIHRoaXMgYXNzdW1wdGlvbiBpcyBicm9rZW4uIFRoZVxuICAgY29kZSBwYXR0ZXJuIGlzIHRoZSBmb2xsb3dpbmc6XG5cbiAgICAgfCBGb28geCwgRm9vIHkgLT5cbiAgICAgICAoKiBjYXNlIHdoZXJlIGluZGVlZCBib3RoIHZhbHVlc1xuICAgICAgICAgIHN0YXJ0IHdpdGggY29uc3RydWN0b3IgRm9vICopXG4gICAgIHwgRm9vIF8sIF9cbiAgICAgfCBfLCBGb28gXyAtPlxuICAgICAgICgqIGRpZmZlcmVudCBoZWFkIGNvbnN0cnVjdG9yczogYnJva2VuIHByZWNvbmRpdGlvbiAqKVxuICAgICAgIGFzc2VydCBmYWxzZVxuKilcbmFuZCB0cmFucyA6IHR5cGVcbiAgYTEgYjEgYzEgZDEgZTEgZjFcbiAgYTIgYjIgYzIgZDIgZTIgZjJcbiAgYTMgYjMgYzMgZDMgZTMgZjNcbi5cbiAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgIGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5X3JlbFxuLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIsXG4gICAgYTMsIGIzLCBjMywgZDMsIGUzLCBmMykgZm10dHlfcmVsXG4tPiAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICBhMywgYjMsIGMzLCBkMywgZTMsIGYzKSBmbXR0eV9yZWxcbj0gZnVuIHR5MSB0eTIgLT4gbWF0Y2ggdHkxLCB0eTIgd2l0aFxuICB8IENoYXJfdHkgcmVzdDEsIENoYXJfdHkgcmVzdDIgLT4gQ2hhcl90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgU3RyaW5nX3R5IHJlc3QxLCBTdHJpbmdfdHkgcmVzdDIgLT4gU3RyaW5nX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBCb29sX3R5IHJlc3QxLCBCb29sX3R5IHJlc3QyIC0+IEJvb2xfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEludF90eSByZXN0MSwgSW50X3R5IHJlc3QyIC0+IEludF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgSW50MzJfdHkgcmVzdDEsIEludDMyX3R5IHJlc3QyIC0+IEludDMyX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBJbnQ2NF90eSByZXN0MSwgSW50NjRfdHkgcmVzdDIgLT4gSW50NjRfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IE5hdGl2ZWludF90eSByZXN0MSwgTmF0aXZlaW50X3R5IHJlc3QyIC0+IE5hdGl2ZWludF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgRmxvYXRfdHkgcmVzdDEsIEZsb2F0X3R5IHJlc3QyIC0+IEZsb2F0X3R5ICh0cmFucyByZXN0MSByZXN0MilcblxuICB8IEFscGhhX3R5IHJlc3QxLCBBbHBoYV90eSByZXN0MiAtPiBBbHBoYV90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgQWxwaGFfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBBbHBoYV90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgVGhldGFfdHkgcmVzdDEsIFRoZXRhX3R5IHJlc3QyIC0+IFRoZXRhX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBUaGV0YV90eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIFRoZXRhX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBBbnlfdHkgcmVzdDEsIEFueV90eSByZXN0MiAtPiBBbnlfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEFueV90eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIEFueV90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgUmVhZGVyX3R5IHJlc3QxLCBSZWFkZXJfdHkgcmVzdDIgLT4gUmVhZGVyX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBSZWFkZXJfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBSZWFkZXJfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QxLCBJZ25vcmVkX3JlYWRlcl90eSByZXN0MiAtPlxuICAgIElnbm9yZWRfcmVhZGVyX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIElnbm9yZWRfcmVhZGVyX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBGb3JtYXRfYXJnX3R5ICh0eTEsIHJlc3QxKSwgRm9ybWF0X2FyZ190eSAodHkyLCByZXN0MikgLT5cbiAgICBGb3JtYXRfYXJnX3R5ICh0cmFucyB0eTEgdHkyLCB0cmFucyByZXN0MSByZXN0MilcbiAgfCBGb3JtYXRfYXJnX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgRm9ybWF0X2FyZ190eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTExLCB0eTEyLCByZXN0MSksXG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eTIxLCB0eTIyLCByZXN0MikgLT5cbiAgICBsZXQgdHkgPSB0cmFucyAoc3ltbSB0eTEyKSB0eTIxIGluXG4gICAgbGV0IF8sIGYyLCBfLCBmNCA9IGZtdHR5X3JlbF9kZXQgdHkgaW5cbiAgICBsZXQgUmVmbCA9IGYyIFJlZmwgaW5cbiAgICBsZXQgUmVmbCA9IGY0IFJlZmwgaW5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MTEsIHR5MjIsIHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEZvcm1hdF9zdWJzdF90eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIEZvcm1hdF9zdWJzdF90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgRW5kX29mX2ZtdHR5LCBFbmRfb2ZfZm10dHkgLT4gRW5kX29mX2ZtdHR5XG4gIHwgRW5kX29mX2ZtdHR5LCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIEVuZF9vZl9mbXR0eSAtPiBhc3NlcnQgZmFsc2VcblxubGV0IHJlYyBmbXR0eV9vZl9mb3JtYXR0aW5nX2dlbiA6IHR5cGUgYSBiIGMgZCBlIGYgLlxuICAoYSwgYiwgYywgZCwgZSwgZikgZm9ybWF0dGluZ19nZW4gLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuZnVuIGZvcm1hdHRpbmdfZ2VuIC0+IG1hdGNoIGZvcm1hdHRpbmdfZ2VuIHdpdGhcbiAgfCBPcGVuX3RhZyAoRm9ybWF0IChmbXQsIF8pKSAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgT3Blbl9ib3ggKEZvcm1hdCAoZm10LCBfKSkgLT4gZm10dHlfb2ZfZm10IGZtdFxuXG4oKiBFeHRyYWN0IHRoZSB0eXBlIHJlcHJlc2VudGF0aW9uIChhbiBmbXR0eSkgb2YgYSBmb3JtYXQuICopXG5hbmQgZm10dHlfb2ZfZm10IDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbmZ1biBmbXR0eSAtPiBtYXRjaCBmbXR0eSB3aXRoXG4gIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgKFN0cmluZ190eSAoZm10dHlfb2ZfZm10IHJlc3QpKVxuICB8IENhbWxfc3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgKFN0cmluZ190eSAoZm10dHlfb2ZfZm10IHJlc3QpKVxuXG4gIHwgSW50IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IHR5X3Jlc3QgPSBmbXR0eV9vZl9mbXQgcmVzdCBpblxuICAgIGxldCBwcmVjX3R5ID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IHByZWMgKEludF90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcbiAgfCBJbnQzMiAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChJbnQzMl90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcbiAgfCBOYXRpdmVpbnQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoTmF0aXZlaW50X3R5IHR5X3Jlc3QpIGluXG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgcHJlY190eVxuICB8IEludDY0IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IHR5X3Jlc3QgPSBmbXR0eV9vZl9mbXQgcmVzdCBpblxuICAgIGxldCBwcmVjX3R5ID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IHByZWMgKEludDY0X3R5IHR5X3Jlc3QpIGluXG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgcHJlY190eVxuICB8IEZsb2F0IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IHR5X3Jlc3QgPSBmbXR0eV9vZl9mbXQgcmVzdCBpblxuICAgIGxldCBwcmVjX3R5ID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IHByZWMgKEZsb2F0X3R5IHR5X3Jlc3QpIGluXG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgcHJlY190eVxuXG4gIHwgQ2hhciByZXN0ICAgICAgICAgICAgICAgICAgLT4gQ2hhcl90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgQ2FtbF9jaGFyIHJlc3QgICAgICAgICAgICAgLT4gQ2hhcl90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgQm9vbCAocGFkLCByZXN0KSAgICAgICAgICAgLT5cbiAgICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIChCb29sX3R5IChmbXR0eV9vZl9mbXQgcmVzdCkpXG4gIHwgQWxwaGEgcmVzdCAgICAgICAgICAgICAgICAgLT4gQWxwaGFfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IFRoZXRhIHJlc3QgICAgICAgICAgICAgICAgIC0+IFRoZXRhX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBDdXN0b20gKGFyaXR5LCBfLCByZXN0KSAgICAtPiBmbXR0eV9vZl9jdXN0b20gYXJpdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IFJlYWRlciByZXN0ICAgICAgICAgICAgICAgIC0+IFJlYWRlcl90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG5cbiAgfCBGb3JtYXRfYXJnIChfLCB0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfYXJnX3R5ICh0eSwgZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgRm9ybWF0X3N1YnN0IChfLCB0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5LCB0eSwgZm10dHlfb2ZfZm10IHJlc3QpXG5cbiAgfCBGbHVzaCByZXN0ICAgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgcmVzdFxuICB8IFN0cmluZ19saXRlcmFsIChfLCByZXN0KSAgIC0+IGZtdHR5X29mX2ZtdCByZXN0XG4gIHwgQ2hhcl9saXRlcmFsIChfLCByZXN0KSAgICAgLT4gZm10dHlfb2ZfZm10IHJlc3RcblxuICB8IFNjYW5fY2hhcl9zZXQgKF8sIF8sIHJlc3QpIC0+IFN0cmluZ190eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgU2Nhbl9nZXRfY291bnRlciAoXywgcmVzdCkgLT4gSW50X3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBTY2FuX25leHRfY2hhciByZXN0ICAgICAgICAtPiBDaGFyX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpICAtPiBmbXR0eV9vZl9pZ25vcmVkX2Zvcm1hdCBpZ24gcmVzdFxuICB8IEZvcm1hdHRpbmdfbGl0IChfLCByZXN0KSAgIC0+IGZtdHR5X29mX2ZtdCByZXN0XG4gIHwgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIHJlc3QpICAtPlxuICAgIGNvbmNhdF9mbXR0eSAoZm10dHlfb2ZfZm9ybWF0dGluZ19nZW4gZm10aW5nX2dlbikgKGZtdHR5X29mX2ZtdCByZXN0KVxuXG4gIHwgRW5kX29mX2Zvcm1hdCAgICAgICAgICAgICAgLT4gRW5kX29mX2ZtdHR5XG5cbmFuZCBmbXR0eV9vZl9jdXN0b20gOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gIChhLCB4LCB5KSBjdXN0b21fYXJpdHkgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICh5LCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG5mdW4gYXJpdHkgZm10dHkgLT4gbWF0Y2ggYXJpdHkgd2l0aFxuICB8IEN1c3RvbV96ZXJvIC0+IGZtdHR5XG4gIHwgQ3VzdG9tX3N1Y2MgYXJpdHkgLT4gQW55X3R5IChmbXR0eV9vZl9jdXN0b20gYXJpdHkgZm10dHkpXG5cbigqIEV4dHJhY3QgdGhlIGZtdHR5IG9mIGFuIGlnbm9yZWQgcGFyYW1ldGVyIGZvbGxvd2VkIGJ5IHRoZSByZXN0IG9mXG4gICB0aGUgZm9ybWF0LiAqKVxuYW5kIGZtdHR5X29mX2lnbm9yZWRfZm9ybWF0IDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAgIChhLCBiLCBjLCBkLCB5LCB4KSBpZ25vcmVkIC0+XG4gICAgKHgsIGIsIGMsIHksIGUsIGYpIGZtdCAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG5mdW4gaWduIGZtdCAtPiBtYXRjaCBpZ24gd2l0aFxuICB8IElnbm9yZWRfY2hhciAgICAgICAgICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfY2FtbF9jaGFyICAgICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfc3RyaW5nIF8gICAgICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfY2FtbF9zdHJpbmcgXyAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfaW50IChfLCBfKSAgICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfaW50MzIgKF8sIF8pICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfbmF0aXZlaW50IChfLCBfKSAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfaW50NjQgKF8sIF8pICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfZmxvYXQgKF8sIF8pICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfYm9vbCBfICAgICAgICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyBfICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChfLCBmbXR0eSkgLT4gY29uY2F0X2ZtdHR5IGZtdHR5IChmbXR0eV9vZl9mbXQgZm10KVxuICB8IElnbm9yZWRfcmVhZGVyICAgICAgICAgICAgICAgICAgLT4gSWdub3JlZF9yZWFkZXJfdHkgKGZtdHR5X29mX2ZtdCBmbXQpXG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IF8gICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIF8gICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG5cbigqIEFkZCBhbiBJbnRfdHkgbm9kZSBpZiBwYWRkaW5nIGlzIHRha2VuIGFzIGFuIGV4dHJhIGFyZ3VtZW50IChleDogXCIlKnNcIikuICopXG5hbmQgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSA6IHR5cGUgeCBhIGIgYyBkIGUgZiAuXG4gICAgKHgsIGEpIHBhZGRpbmcgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+ICh4LCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG4gIGZ1biBwYWQgZm10dHkgLT4gbWF0Y2ggcGFkIHdpdGhcbiAgICB8IE5vX3BhZGRpbmcgICAgLT4gZm10dHlcbiAgICB8IExpdF9wYWRkaW5nIF8gLT4gZm10dHlcbiAgICB8IEFyZ19wYWRkaW5nIF8gLT4gSW50X3R5IGZtdHR5XG5cbigqIEFkZCBhbiBJbnRfdHkgbm9kZSBpZiBwcmVjaXNpb24gaXMgdGFrZW4gYXMgYW4gZXh0cmEgYXJndW1lbnQgKGV4OiBcIiUuKmZcIikuKilcbmFuZCBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgOiB0eXBlIHggYSBiIGMgZCBlIGYgLlxuICAgICh4LCBhKSBwcmVjaXNpb24gLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+ICh4LCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG4gIGZ1biBwcmVjIGZtdHR5IC0+IG1hdGNoIHByZWMgd2l0aFxuICAgIHwgTm9fcHJlY2lzaW9uICAgIC0+IGZtdHR5XG4gICAgfCBMaXRfcHJlY2lzaW9uIF8gLT4gZm10dHlcbiAgICB8IEFyZ19wcmVjaXNpb24gICAtPiBJbnRfdHkgZm10dHlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgdHlwaW5nICopXG5cbigqIEV4Y2VwdGlvbiByYWlzZWQgd2hlbiBhIGZvcm1hdCBkb2VzIG5vdCBtYXRjaCBhIGdpdmVuIGZvcm1hdCB0eXBlLiAqKVxuZXhjZXB0aW9uIFR5cGVfbWlzbWF0Y2hcblxuKCogVHlwZSBhIHBhZGRpbmcuICopXG4oKiBUYWtlIGFuIEludF90eSBmcm9tIHRoZSBmbXR0eSBpZiB0aGUgaW50ZWdlciBzaG91bGQgYmUga2VwdCBhcyBhcmd1bWVudC4gKilcbigqIFJhaXNlIFR5cGVfbWlzbWF0Y2ggaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IHR5cGVfcGFkZGluZyA6IHR5cGUgYSBiIGMgZCBlIGYgeCB5IC5cbiAgICAoeCwgeSkgcGFkZGluZyAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgICAgIChhLCBiLCBjLCBkLCBlLCBmKSBwYWRkaW5nX2ZtdHR5X2ViYiA9XG5mdW4gcGFkIGZtdHR5IC0+IG1hdGNoIHBhZCwgZm10dHkgd2l0aFxuICB8IE5vX3BhZGRpbmcsIF8gLT4gUGFkZGluZ19mbXR0eV9FQkIgKE5vX3BhZGRpbmcsIGZtdHR5KVxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIF8gLT4gUGFkZGluZ19mbXR0eV9FQkIgKExpdF9wYWRkaW5nIChwYWR0eSx3KSxmbXR0eSlcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgSW50X3R5IHJlc3QgLT4gUGFkZGluZ19mbXR0eV9FQkIgKEFyZ19wYWRkaW5nIHBhZHR5LHJlc3QpXG4gIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbigqIENvbnZlcnQgYSAodXBhZGRpbmcsIHVwcmVjaXNpb24pIHRvIGEgKHBhZGRpbmcsIHByZWNpc2lvbikuICopXG4oKiBUYWtlIG9uZSBvciB0d28gSW50X3R5IGZyb20gdGhlIGZtdHR5IGlmIG5lZWRlZC4gKilcbigqIFJhaXNlIFR5cGVfbWlzbWF0Y2ggaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IHR5cGVfcGFkcHJlYyA6IHR5cGUgYSBiIGMgZCBlIGYgeCB5IHogLlxuICAoeCwgeSkgcGFkZGluZyAtPiAoeSwgeikgcHJlY2lzaW9uIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBwYWRwcmVjX2ZtdHR5X2ViYiA9XG5mdW4gcGFkIHByZWMgZm10dHkgLT4gbWF0Y2ggcHJlYywgdHlwZV9wYWRkaW5nIHBhZCBmbXR0eSB3aXRoXG4gIHwgTm9fcHJlY2lzaW9uLCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCByZXN0KSAtPlxuICAgIFBhZHByZWNfZm10dHlfRUJCIChwYWQsIE5vX3ByZWNpc2lvbiwgcmVzdClcbiAgfCBMaXRfcHJlY2lzaW9uIHAsIFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIHJlc3QpIC0+XG4gICAgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgTGl0X3ByZWNpc2lvbiBwLCByZXN0KVxuICB8IEFyZ19wcmVjaXNpb24sIFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIEludF90eSByZXN0KSAtPlxuICAgIFBhZHByZWNfZm10dHlfRUJCIChwYWQsIEFyZ19wcmVjaXNpb24sIHJlc3QpXG4gIHwgXywgUGFkZGluZ19mbXR0eV9FQkIgKF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuKCogVHlwZSBhIGZvcm1hdCBhY2NvcmRpbmcgdG8gYW4gZm10dHkuICopXG4oKiBJZiB0eXBpbmcgc3VjY2VlZCwgZ2VuZXJhdGUgYSBjb3B5IG9mIHRoZSBmb3JtYXQgd2l0aCB0aGUgc2FtZVxuICAgIHR5cGUgcGFyYW1ldGVycyBhcyB0aGUgZm10dHkuICopXG4oKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhbiBlcnJvciBtZXNzYWdlIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCByZWMgdHlwZV9mb3JtYXQgOlxuICB0eXBlIGExIGIxIGMxIGQxIGUxIGYxXG4gICAgICAgYTIgYjIgYzIgZDIgZTIgZjIgIC5cbiAgICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdFxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlcbiAgLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdFxuPSBmdW4gZm10IGZtdHR5IC0+IG1hdGNoIHR5cGVfZm9ybWF0X2dlbiBmbXQgZm10dHkgd2l0aFxuICB8IEZtdF9mbXR0eV9FQkIgKGZtdCcsIEVuZF9vZl9mbXR0eSkgLT4gZm10J1xuICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG5hbmQgdHlwZV9mb3JtYXRfZ2VuIDpcbiAgdHlwZSBhMSBiMSBjMSBkMSBlMSBmMVxuICAgICAgIGEyIGIyIGMyIGQyIGUyIGYyICAuXG4gICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmbXRcbiAgLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5XG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXRfZm10dHlfZWJiXG49IGZ1biBmbXQgZm10dHkgLT4gbWF0Y2ggZm10LCBmbXR0eSB3aXRoXG4gIHwgQ2hhciBmbXRfcmVzdCwgQ2hhcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKENoYXIgZm10JywgZm10dHknKVxuICB8IENhbWxfY2hhciBmbXRfcmVzdCwgQ2hhcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKENhbWxfY2hhciBmbXQnLCBmbXR0eScpXG4gIHwgU3RyaW5nIChwYWQsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRkaW5nIHBhZCBmbXR0eSB3aXRoXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCBTdHJpbmdfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKFN0cmluZyAocGFkLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IENhbWxfc3RyaW5nIChwYWQsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRkaW5nIHBhZCBmbXR0eSB3aXRoXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCBTdHJpbmdfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKENhbWxfc3RyaW5nIChwYWQsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAoXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBJbnRfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKEludCAoaWNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZHByZWMgcGFkIHByZWMgZm10dHkgd2l0aFxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgcHJlYywgSW50MzJfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKEludDMyIChpY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZHByZWMgcGFkIHByZWMgZm10dHkgd2l0aFxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgcHJlYywgTmF0aXZlaW50X3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIEludDY0X3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZHByZWMgcGFkIHByZWMgZm10dHkgd2l0aFxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgcHJlYywgRmxvYXRfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEJvb2wgKHBhZCwgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZGRpbmcgcGFkIGZtdHR5IHdpdGhcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIEJvb2xfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKEJvb2wgKHBhZCwgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBGbHVzaCBmbXRfcmVzdCwgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGbHVzaCBmbXQnLCBmbXR0eScpXG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCBmbXRfcmVzdCksIGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoU3RyaW5nX2xpdGVyYWwgKHN0ciwgZm10JyksIGZtdHR5JylcbiAgfCBDaGFyX2xpdGVyYWwgKGNociwgZm10X3Jlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKENoYXJfbGl0ZXJhbCAoY2hyLCBmbXQnKSwgZm10dHknKVxuXG4gIHwgRm9ybWF0X2FyZyAocGFkX29wdCwgc3ViX2ZtdHR5LCBmbXRfcmVzdCksXG4gICAgRm9ybWF0X2FyZ190eSAoc3ViX2ZtdHR5JywgZm10dHlfcmVzdCkgLT5cbiAgICBpZiBGbXR0eV9FQkIgc3ViX2ZtdHR5IDw+IEZtdHR5X0VCQiBzdWJfZm10dHknIHRoZW4gcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRm9ybWF0X2FyZyAocGFkX29wdCwgc3ViX2ZtdHR5JywgZm10JyksIGZtdHR5JylcbiAgfCBGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIHN1Yl9mbXR0eSwgZm10X3Jlc3QpLFxuICAgIEZvcm1hdF9zdWJzdF90eSAoc3ViX2ZtdHR5MSwgX3N1Yl9mbXR0eTIsIGZtdHR5X3Jlc3QpIC0+XG4gICAgaWYgRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViX2ZtdHR5KSA8PiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWJfZm10dHkxKSB0aGVuXG4gICAgICByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID1cbiAgICAgIHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCAoZXJhc2VfcmVsIGZtdHR5X3Jlc3QpXG4gICAgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIHN1Yl9mbXR0eTEsIGZtdCcpLCBmbXR0eScpXG4gICgqIFByaW50ZiBhbmQgRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9yczogKilcbiAgfCBBbHBoYSBmbXRfcmVzdCwgQWxwaGFfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChBbHBoYSBmbXQnLCBmbXR0eScpXG4gIHwgVGhldGEgZm10X3Jlc3QsIFRoZXRhX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoVGhldGEgZm10JywgZm10dHknKVxuXG4gICgqIEZvcm1hdCBzcGVjaWZpYyBjb25zdHJ1Y3RvcnM6ICopXG4gIHwgRm9ybWF0dGluZ19saXQgKGZvcm1hdHRpbmdfbGl0LCBmbXRfcmVzdCksIGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRm9ybWF0dGluZ19saXQgKGZvcm1hdHRpbmdfbGl0LCBmbXQnKSwgZm10dHknKVxuICB8IEZvcm1hdHRpbmdfZ2VuIChmb3JtYXR0aW5nX2dlbiwgZm10X3Jlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgdHlwZV9mb3JtYXR0aW5nX2dlbiBmb3JtYXR0aW5nX2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0XG5cbiAgKCogU2NhbmYgc3BlY2lmaWMgY29uc3RydWN0b3JzOiAqKVxuICB8IFJlYWRlciBmbXRfcmVzdCwgUmVhZGVyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoUmVhZGVyIGZtdCcsIGZtdHR5JylcbiAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBmbXRfcmVzdCksIFN0cmluZ190eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIGZtdCcpLCBmbXR0eScpXG4gIHwgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgZm10X3Jlc3QpLCBJbnRfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXQnKSwgZm10dHknKVxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCksIGZtdHR5X3Jlc3QgLT5cbiAgICB0eXBlX2lnbm9yZWRfcGFyYW0gaWduIHJlc3QgZm10dHlfcmVzdFxuXG4gIHwgRW5kX29mX2Zvcm1hdCwgZm10dHlfcmVzdCAtPiBGbXRfZm10dHlfRUJCIChFbmRfb2ZfZm9ybWF0LCBmbXR0eV9yZXN0KVxuXG4gIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbmFuZCB0eXBlX2Zvcm1hdHRpbmdfZ2VuIDogdHlwZSBhMSBhMyBiMSBiMyBjMSBjMyBkMSBkMyBlMSBlMiBlMyBmMSBmMiBmMyAuXG4gICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZvcm1hdHRpbmdfZ2VuIC0+XG4gICAgKGYxLCBiMSwgYzEsIGUxLCBlMiwgZjIpIGZtdCAtPlxuICAgIChhMywgYjMsIGMzLCBkMywgZTMsIGYzKSBmbXR0eSAtPlxuICAgIChhMywgYjMsIGMzLCBkMywgZTMsIGYzKSBmbXRfZm10dHlfZWJiID1cbmZ1biBmb3JtYXR0aW5nX2dlbiBmbXQwIGZtdHR5MCAtPiBtYXRjaCBmb3JtYXR0aW5nX2dlbiB3aXRoXG4gIHwgT3Blbl90YWcgKEZvcm1hdCAoZm10MSwgc3RyKSkgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10MiwgZm10dHkyKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQxIGZtdHR5MCBpblxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQzLCBmbXR0eTMpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdDAgZm10dHkyIGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdDIsIHN0cikpLCBmbXQzKSwgZm10dHkzKVxuICB8IE9wZW5fYm94IChGb3JtYXQgKGZtdDEsIHN0cikpIC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdDIsIGZtdHR5MikgPSB0eXBlX2Zvcm1hdF9nZW4gZm10MSBmbXR0eTAgaW5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10MywgZm10dHkzKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQwIGZtdHR5MiBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQyLCBzdHIpKSwgZm10MyksIGZtdHR5MylcblxuKCogVHlwZSBhbiBJZ25vcmVkX3BhcmFtIG5vZGUgYWNjb3JkaW5nIHRvIGFuIGZtdHR5LiAqKVxuYW5kIHR5cGVfaWdub3JlZF9wYXJhbSA6IHR5cGUgcCBxIHggeSB6IHQgdSB2IGEgYiBjIGQgZSBmIC5cbiAgICAoeCwgeSwgeiwgdCwgcSwgcCkgaWdub3JlZCAtPlxuICAgIChwLCB5LCB6LCBxLCB1LCB2KSBmbXQgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10X2ZtdHR5X2ViYiA9XG5mdW4gaWduIGZtdCBmbXR0eSAtPiBtYXRjaCBpZ24gd2l0aFxuICB8IElnbm9yZWRfY2hhciAgICAgICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfY2FtbF9jaGFyICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfc3RyaW5nIF8gICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfY2FtbF9zdHJpbmcgXyAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfaW50IF8gICAgICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfaW50MzIgXyAgICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfbmF0aXZlaW50IF8gICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfaW50NjQgXyAgICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfZmxvYXQgXyAgICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfYm9vbCBfICAgICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCBfICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBfIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyAocGFkX29wdCwgc3ViX2ZtdHR5KSAtPlxuICAgIHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgKElnbm9yZWRfZm9ybWF0X2FyZyAocGFkX29wdCwgc3ViX2ZtdHR5KSkgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgKHBhZF9vcHQsIHN1Yl9mbXR0eSkgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5JywgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSkgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5IGZtdCBmbXR0eSBpblxuICAgIEZtdF9mbXR0eV9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfZm9ybWF0X3N1YnN0IChwYWRfb3B0LCBzdWJfZm10dHknKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXQnKSxcbiAgICAgICAgICAgICAgICAgICBmbXR0eScpXG4gIHwgSWdub3JlZF9yZWFkZXIgLT4gKFxuICAgIG1hdGNoIGZtdHR5IHdpdGhcbiAgICB8IElnbm9yZWRfcmVhZGVyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX3JlYWRlciwgZm10JyksIGZtdHR5JylcbiAgICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG5cbmFuZCB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIDogdHlwZSBhMSBhMiBiMSBiMiBjMSBjMiBkMSBkMiBlMSBlMiBmMSBmMiAuXG4gICAgKGEyLCBiMiwgYzIsIGQyLCBkMiwgYTIpIGlnbm9yZWQgLT5cbiAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10IC0+XG4gICAgKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5IC0+XG4gICAgKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdF9mbXR0eV9lYmJcbj0gZnVuIGlnbiBmbXQgZm10dHkgLT5cbiAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10IGZtdHR5IGluXG4gIEZtdF9mbXR0eV9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbiwgZm10JyksIGZtdHR5JylcblxuKCogVHlwaW5nIG9mIHRoZSBjb21wbGV4IGNhc2U6IFwiJV8oLi4uJSlcIi4gKilcbmFuZCB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiA6IHR5cGUgdyB4IHkgeiBwIHMgdCB1IGEgYiBjIGQgZSBmIC5cbiAgICAodywgeCwgeSwgeiwgcywgcCkgZm10dHkgLT5cbiAgICAocCwgeCwgeSwgcywgdCwgdSkgZm10IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eV9mbXRfZWJiID1cbmZ1biBzdWJfZm10dHkgZm10IGZtdHR5IC0+IG1hdGNoIHN1Yl9mbXR0eSwgZm10dHkgd2l0aFxuICB8IENoYXJfdHkgc3ViX2ZtdHR5X3Jlc3QsIENoYXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoQ2hhcl90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgU3RyaW5nX3R5IHN1Yl9mbXR0eV9yZXN0LCBTdHJpbmdfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoU3RyaW5nX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBJbnRfdHkgc3ViX2ZtdHR5X3Jlc3QsIEludF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChJbnRfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEludDMyX3R5IHN1Yl9mbXR0eV9yZXN0LCBJbnQzMl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChJbnQzMl90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgTmF0aXZlaW50X3R5IHN1Yl9mbXR0eV9yZXN0LCBOYXRpdmVpbnRfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoTmF0aXZlaW50X3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBJbnQ2NF90eSBzdWJfZm10dHlfcmVzdCwgSW50NjRfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoSW50NjRfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEZsb2F0X3R5IHN1Yl9mbXR0eV9yZXN0LCBGbG9hdF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChGbG9hdF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgQm9vbF90eSBzdWJfZm10dHlfcmVzdCwgQm9vbF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChCb29sX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBBbHBoYV90eSBzdWJfZm10dHlfcmVzdCwgQWxwaGFfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoQWxwaGFfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IFRoZXRhX3R5IHN1Yl9mbXR0eV9yZXN0LCBUaGV0YV90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChUaGV0YV90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgUmVhZGVyX3R5IHN1Yl9mbXR0eV9yZXN0LCBSZWFkZXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoUmVhZGVyX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSBzdWJfZm10dHlfcmVzdCwgSWdub3JlZF9yZWFkZXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoSWdub3JlZF9yZWFkZXJfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuXG4gIHwgRm9ybWF0X2FyZ190eSAoc3ViMl9mbXR0eSwgc3ViX2ZtdHR5X3Jlc3QpLFxuICAgIEZvcm1hdF9hcmdfdHkgKHN1YjJfZm10dHknLCBmbXR0eV9yZXN0KSAtPlxuICAgIGlmIEZtdHR5X0VCQiBzdWIyX2ZtdHR5IDw+IEZtdHR5X0VCQiBzdWIyX2ZtdHR5JyB0aGVuIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChGb3JtYXRfYXJnX3R5IChzdWIyX2ZtdHR5Jywgc3ViX2ZtdHR5X3Jlc3QnKSwgZm10JylcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHN1YjFfZm10dHksICBzdWIyX2ZtdHR5LCAgc3ViX2ZtdHR5X3Jlc3QpLFxuICAgIEZvcm1hdF9zdWJzdF90eSAoc3ViMV9mbXR0eScsIHN1YjJfZm10dHknLCBmbXR0eV9yZXN0KSAtPlxuICAgICgqIFRPRE8gZGVmaW5lIEZtdHR5X3JlbF9FQkIgdG8gcmVtb3ZlIHRob3NlIGVyYXNlX3JlbCAqKVxuICAgIGlmIEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1YjFfZm10dHkpIDw+IEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1YjFfZm10dHknKVxuICAgIHRoZW4gcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBpZiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWIyX2ZtdHR5KSA8PiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWIyX2ZtdHR5JylcbiAgICB0aGVuIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgbGV0IHN1Yl9mbXR0eScgPSB0cmFucyAoc3ltbSBzdWIxX2ZtdHR5Jykgc3ViMl9mbXR0eScgaW5cbiAgICBsZXQgXywgZjIsIF8sIGY0ID0gZm10dHlfcmVsX2RldCBzdWJfZm10dHknIGluXG4gICAgbGV0IFJlZmwgPSBmMiBSZWZsIGluXG4gICAgbGV0IFJlZmwgPSBmNCBSZWZsIGluXG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gKGVyYXNlX3JlbCBzdWJfZm10dHlfcmVzdCkgZm10IGZtdHR5X3Jlc3RcbiAgICBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEZvcm1hdF9zdWJzdF90eSAoc3ViMV9mbXR0eScsIHN1YjJfZm10dHknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltbSBzdWJfZm10dHlfcmVzdCcpLFxuICAgICAgICAgICAgICAgICAgIGZtdCcpXG4gIHwgRW5kX29mX2ZtdHR5LCBmbXR0eSAtPlxuICAgIEZtdHR5X2ZtdF9FQkIgKEVuZF9vZl9mbXR0eSwgdHlwZV9mb3JtYXRfZ2VuIGZtdCBmbXR0eSlcbiAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuKCogVGhpcyBpbXBsZW1lbnRhdGlvbiBvZiBgcmVjYXN0YCBpcyBhIGJpdCBkaXNhcHBvaW50aW5nLiBUaGVcbiAgIGludmFyaWFudCBwcm92aWRlZCBieSB0aGUgdHlwZSBhcmUgdmVyeSBzdHJvbmc6IHRoZSBpbnB1dCBmb3JtYXQnc1xuICAgdHlwZSBpcyBpbiByZWxhdGlvbiB0byB0aGUgb3V0cHV0IHR5cGUncyBhcyB3aXRuZXNzZWQgYnkgdGhlXG4gICBmbXR0eV9yZWwgYXJndW1lbnQuIE9uZSB3b3VsZCBhdCBmaXJzdCBleHBlY3QgdGhpcyBmdW5jdGlvbiB0byBiZVxuICAgdG90YWwsIGFuZCBpbXBsZW1lbnRhYmxlIGJ5IGV4aGF1c3RpdmUgcGF0dGVybiBtYXRjaGluZy4gSW5zdGVhZCxcbiAgIHdlIHJldXNlIHRoZSBoaWdobHkgcGFydGlhbCBhbmQgbXVjaCBsZXNzIHdlbGwtZGVmaW5lZCBmdW5jdGlvblxuICAgYHR5cGVfZm9ybWF0YCB0aGF0IGhhcyBsb3N0IGFsbCBrbm93bGVkZ2Ugb2YgdGhlIGNvcnJlc3BvbmRlbmNlXG4gICBiZXR3ZWVuIHRoZSBhcmd1bWVudCdzIHR5cGVzLlxuXG4gICBCZXNpZGVzIHRoZSBmYWN0IHRoYXQgdGhpcyBmdW5jdGlvbiByZXVzZXMgYSBsb3Qgb2YgdGhlXG4gICBgdHlwZV9mb3JtYXRgIGxvZ2ljIChlZy46IHNlZWluZyBJbnRfdHkgaW4gdGhlIGZtdHR5IHBhcmFtZXRlciBkb2VzXG4gICBub3QgbGV0IHlvdSBtYXRjaCBvbiBJbnQgb25seSwgYXMgeW91IG1heSBpbiBmYWN0IGhhdmUgRmxvYXRcbiAgIChBcmdfcGFkZGluZywgLi4uKSAoXCIlLipkXCIpIGJlZ2lubmluZyB3aXRoIGFuIEludF90eSksIGl0IGlzIGFsc29cbiAgIGEgcGFydGlhbCBmdW5jdGlvbiwgYmVjYXVzZSB0aGUgdHlwaW5nIGluZm9ybWF0aW9uIGluIGEgZm9ybWF0IGlzXG4gICBub3QgcXVpdGUgZW5vdWdoIHRvIHJlY29uc3RydWN0IGl0IHVuYW1iaWd1b3VzbHkuIEZvciBleGFtcGxlLCB0aGVcbiAgIGZvcm1hdCB0eXBlcyBvZiBcIiVkJV9yXCIgYW5kIFwiJV9yJWRcIiBoYXZlIHRoZSBzYW1lIGZvcm1hdDZcbiAgIHBhcmFtZXRlcnMsIGJ1dCB0aGV5IGFyZSBub3QgYXQgYWxsIGV4Y2hhbmdlYWJsZSwgYW5kIHB1dHRpbmcgb25lXG4gICBpbiBwbGFjZSBvZiB0aGUgb3RoZXIgbXVzdCByZXN1bHQgaW4gYSBkeW5hbWljIGZhaWx1cmUuXG5cbiAgIEdpdmVuIHRoYXQ6XG4gICAtIHdlJ2QgaGF2ZSB0byBkdXBsaWNhdGUgYSBsb3Qgb2Ygbm9uLXRyaXZpYWwgdHlwaW5nIGxvZ2ljIGZyb20gdHlwZV9mb3JtYXRcbiAgIC0gdGhpcyB3b3VsZG4ndCBldmVuIGVsaW1pbmF0ZSAoYWxsKSB0aGUgZHluYW1pYyBmYWlsdXJlc1xuICAgd2UgZGVjaWRlZCB0byBqdXN0IHJldXNlIHR5cGVfZm9ybWF0IGRpcmVjdGx5IGZvciBub3cuXG4qKVxubGV0IHJlY2FzdCA6XG4gIHR5cGUgYTEgYjEgYzEgZDEgZTEgZjFcbiAgICAgICBhMiBiMiBjMiBkMiBlMiBmMlxuICAuXG4gICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmbXRcbiAgLT4gKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEsXG4gICAgICBhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWxcbiAgLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdFxuPSBmdW4gZm10IGZtdHR5IC0+XG4gIHR5cGVfZm9ybWF0IGZtdCAoZXJhc2VfcmVsIChzeW1tIGZtdHR5KSlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogUHJpbnRpbmcgdG9vbHMgKilcblxuKCogQWRkIHBhZGRpbmcgc3BhY2VzIGFyb3VuZCBhIHN0cmluZy4gKilcbmxldCBmaXhfcGFkZGluZyBwYWR0eSB3aWR0aCBzdHIgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IHdpZHRoLCBwYWR0eSA9XG4gICAgYWJzIHdpZHRoLFxuICAgICgqIHdoaWxlIGxpdGVyYWwgcGFkZGluZyB3aWR0aHMgYXJlIGFsd2F5cyBub24tbmVnYXRpdmUsXG4gICAgICAgZHluYW1pY2FsbHktc2V0IHdpZHRocyAoQXJnX3BhZGRpbmcsIGVnLiAlKmQpIG1heSBiZSBuZWdhdGl2ZTtcbiAgICAgICB3ZSBpbnRlcnByZXQgdGhvc2UgYXMgc3BlY2lmeWluZyBhIHBhZGRpbmctdG8tdGhlLWxlZnQ7IHRoaXNcbiAgICAgICBtZWFucyB0aGF0ICcwJyBtYXkgZ2V0IGRyb3BwZWQgZXZlbiBpZiBpdCB3YXMgZXhwbGljaXRseSBzZXQsXG4gICAgICAgYnV0OlxuICAgICAgIC0gdGhpcyBpcyB3aGF0IHRoZSBsZWdhY3kgaW1wbGVtZW50YXRpb24gZG9lcywgYW5kXG4gICAgICAgICB3ZSBwcmVzZXJ2ZSBjb21wYXRpYmlsaXR5IGlmIHBvc3NpYmxlXG4gICAgICAgLSB3ZSBjb3VsZCBvbmx5IHNpZ25hbCB0aGlzIGlzc3VlIGJ5IGZhaWxpbmcgYXQgcnVudGltZSxcbiAgICAgICAgIHdoaWNoIGlzIG5vdCB2ZXJ5IG5pY2UuLi4gKilcbiAgICBpZiB3aWR0aCA8IDAgdGhlbiBMZWZ0IGVsc2UgcGFkdHkgaW5cbiAgaWYgd2lkdGggPD0gbGVuIHRoZW4gc3RyIGVsc2VcbiAgICBsZXQgcmVzID0gQnl0ZXMubWFrZSB3aWR0aCAoaWYgcGFkdHkgPSBaZXJvcyB0aGVuICcwJyBlbHNlICcgJykgaW5cbiAgICBiZWdpbiBtYXRjaCBwYWR0eSB3aXRoXG4gICAgfCBMZWZ0ICAtPiBTdHJpbmcuYmxpdCBzdHIgMCByZXMgMCBsZW5cbiAgICB8IFJpZ2h0IC0+IFN0cmluZy5ibGl0IHN0ciAwIHJlcyAod2lkdGggLSBsZW4pIGxlblxuICAgIHwgWmVyb3Mgd2hlbiBsZW4gPiAwICYmIChzdHIuWzBdID0gJysnIHx8IHN0ci5bMF0gPSAnLScgfHwgc3RyLlswXSA9ICcgJykgLT5cbiAgICAgIEJ5dGVzLnNldCByZXMgMCBzdHIuWzBdO1xuICAgICAgU3RyaW5nLmJsaXQgc3RyIDEgcmVzICh3aWR0aCAtIGxlbiArIDEpIChsZW4gLSAxKVxuICAgIHwgWmVyb3Mgd2hlbiBsZW4gPiAxICYmIHN0ci5bMF0gPSAnMCcgJiYgKHN0ci5bMV0gPSAneCcgfHwgc3RyLlsxXSA9ICdYJykgLT5cbiAgICAgIEJ5dGVzLnNldCByZXMgMSBzdHIuWzFdO1xuICAgICAgU3RyaW5nLmJsaXQgc3RyIDIgcmVzICh3aWR0aCAtIGxlbiArIDIpIChsZW4gLSAyKVxuICAgIHwgWmVyb3MgLT5cbiAgICAgIFN0cmluZy5ibGl0IHN0ciAwIHJlcyAod2lkdGggLSBsZW4pIGxlblxuICAgIGVuZDtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuXG4oKiBBZGQgJzAnIHBhZGRpbmcgdG8gaW50LCBpbnQzMiwgbmF0aXZlaW50IG9yIGludDY0IHN0cmluZyByZXByZXNlbnRhdGlvbi4gKilcbmxldCBmaXhfaW50X3ByZWNpc2lvbiBwcmVjIHN0ciA9XG4gIGxldCBwcmVjID0gYWJzIHByZWMgaW5cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIG1hdGNoIHN0ci5bMF0gd2l0aFxuICB8ICgnKycgfCAnLScgfCAnICcpIGFzIGMgd2hlbiBwcmVjICsgMSA+IGxlbiAtPlxuICAgIGxldCByZXMgPSBCeXRlcy5tYWtlIChwcmVjICsgMSkgJzAnIGluXG4gICAgQnl0ZXMuc2V0IHJlcyAwIGM7XG4gICAgU3RyaW5nLmJsaXQgc3RyIDEgcmVzIChwcmVjIC0gbGVuICsgMikgKGxlbiAtIDEpO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG4gIHwgJzAnIHdoZW4gcHJlYyArIDIgPiBsZW4gJiYgbGVuID4gMSAmJiAoc3RyLlsxXSA9ICd4JyB8fCBzdHIuWzFdID0gJ1gnKSAtPlxuICAgIGxldCByZXMgPSBCeXRlcy5tYWtlIChwcmVjICsgMikgJzAnIGluXG4gICAgQnl0ZXMuc2V0IHJlcyAxIHN0ci5bMV07XG4gICAgU3RyaW5nLmJsaXQgc3RyIDIgcmVzIChwcmVjIC0gbGVuICsgNCkgKGxlbiAtIDIpO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG4gIHwgJzAnIC4uICc5JyB8ICdhJyAuLiAnZicgfCAnQScgLi4gJ0YnIHdoZW4gcHJlYyA+IGxlbiAtPlxuICAgIGxldCByZXMgPSBCeXRlcy5tYWtlIHByZWMgJzAnIGluXG4gICAgU3RyaW5nLmJsaXQgc3RyIDAgcmVzIChwcmVjIC0gbGVuKSBsZW47XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcbiAgfCBfIC0+XG4gICAgc3RyXG5cbigqIEVzY2FwZSBhIHN0cmluZyBhY2NvcmRpbmcgdG8gdGhlIE9DYW1sIGxleGluZyBjb252ZW50aW9uLiAqKVxubGV0IHN0cmluZ190b19jYW1sX3N0cmluZyBzdHIgPVxuICBsZXQgc3RyID0gU3RyaW5nLmVzY2FwZWQgc3RyIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgKGwgKyAyKSAnXFxcIicgaW5cbiAgU3RyaW5nLnVuc2FmZV9ibGl0IHN0ciAwIHJlcyAxIGw7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG5cbigqIEdlbmVyYXRlIHRoZSBmb3JtYXRfaW50L2ludDMyL25hdGl2ZWludC9pbnQ2NCBmaXJzdCBhcmd1bWVudFxuICAgZnJvbSBhbiBpbnRfY29udi4gKilcbmxldCBmb3JtYXRfb2ZfaWNvbnYgPSBmdW5jdGlvblxuICB8IEludF9kIHwgSW50X0NkIC0+IFwiJWRcIiB8IEludF9wZCAtPiBcIiUrZFwiIHwgSW50X3NkIC0+IFwiJSBkXCJcbiAgfCBJbnRfaSB8IEludF9DaSAtPiBcIiVpXCIgfCBJbnRfcGkgLT4gXCIlK2lcIiB8IEludF9zaSAtPiBcIiUgaVwiXG4gIHwgSW50X3ggLT4gXCIleFwiIHwgSW50X0N4IC0+IFwiJSN4XCJcbiAgfCBJbnRfWCAtPiBcIiVYXCIgfCBJbnRfQ1ggLT4gXCIlI1hcIlxuICB8IEludF9vIC0+IFwiJW9cIiB8IEludF9DbyAtPiBcIiUjb1wiXG4gIHwgSW50X3UgfCBJbnRfQ3UgLT4gXCIldVwiXG5cbmxldCBmb3JtYXRfb2ZfaWNvbnZMID0gZnVuY3Rpb25cbiAgfCBJbnRfZCB8IEludF9DZCAtPiBcIiVMZFwiIHwgSW50X3BkIC0+IFwiJStMZFwiIHwgSW50X3NkIC0+IFwiJSBMZFwiXG4gIHwgSW50X2kgfCBJbnRfQ2kgLT4gXCIlTGlcIiB8IEludF9waSAtPiBcIiUrTGlcIiB8IEludF9zaSAtPiBcIiUgTGlcIlxuICB8IEludF94IC0+IFwiJUx4XCIgfCBJbnRfQ3ggLT4gXCIlI0x4XCJcbiAgfCBJbnRfWCAtPiBcIiVMWFwiIHwgSW50X0NYIC0+IFwiJSNMWFwiXG4gIHwgSW50X28gLT4gXCIlTG9cIiB8IEludF9DbyAtPiBcIiUjTG9cIlxuICB8IEludF91IHwgSW50X0N1IC0+IFwiJUx1XCJcblxubGV0IGZvcm1hdF9vZl9pY29udmwgPSBmdW5jdGlvblxuICB8IEludF9kIHwgSW50X0NkIC0+IFwiJWxkXCIgfCBJbnRfcGQgLT4gXCIlK2xkXCIgfCBJbnRfc2QgLT4gXCIlIGxkXCJcbiAgfCBJbnRfaSB8IEludF9DaSAtPiBcIiVsaVwiIHwgSW50X3BpIC0+IFwiJStsaVwiIHwgSW50X3NpIC0+IFwiJSBsaVwiXG4gIHwgSW50X3ggLT4gXCIlbHhcIiB8IEludF9DeCAtPiBcIiUjbHhcIlxuICB8IEludF9YIC0+IFwiJWxYXCIgfCBJbnRfQ1ggLT4gXCIlI2xYXCJcbiAgfCBJbnRfbyAtPiBcIiVsb1wiIHwgSW50X0NvIC0+IFwiJSNsb1wiXG4gIHwgSW50X3UgfCBJbnRfQ3UgLT4gXCIlbHVcIlxuXG5sZXQgZm9ybWF0X29mX2ljb252biA9IGZ1bmN0aW9uXG4gIHwgSW50X2QgfCBJbnRfQ2QgLT4gXCIlbmRcIiB8IEludF9wZCAtPiBcIiUrbmRcIiB8IEludF9zZCAtPiBcIiUgbmRcIlxuICB8IEludF9pIHwgSW50X0NpIC0+IFwiJW5pXCIgfCBJbnRfcGkgLT4gXCIlK25pXCIgfCBJbnRfc2kgLT4gXCIlIG5pXCJcbiAgfCBJbnRfeCAtPiBcIiVueFwiIHwgSW50X0N4IC0+IFwiJSNueFwiXG4gIHwgSW50X1ggLT4gXCIlblhcIiB8IEludF9DWCAtPiBcIiUjblhcIlxuICB8IEludF9vIC0+IFwiJW5vXCIgfCBJbnRfQ28gLT4gXCIlI25vXCJcbiAgfCBJbnRfdSB8IEludF9DdSAtPiBcIiVudVwiXG5cbigqIEdlbmVyYXRlIHRoZSBmb3JtYXRfZmxvYXQgZmlyc3QgYXJndW1lbnQgZnJvbSBhIGZsb2F0X2NvbnYuICopXG5sZXQgZm9ybWF0X29mX2Zjb252IGZjb252IHByZWMgPVxuICAgIGxldCBwcmVjID0gYWJzIHByZWMgaW5cbiAgICBsZXQgc3ltYiA9IGNoYXJfb2ZfZmNvbnYgfmNGOidnJyBmY29udiBpblxuICAgIGxldCBidWYgPSBidWZmZXJfY3JlYXRlIDE2IGluXG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gICAgYnByaW50X2Zjb252X2ZsYWcgYnVmIGZjb252O1xuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJy4nO1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiAoSW50LnRvX3N0cmluZyBwcmVjKTtcbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmIHN5bWI7XG4gICAgYnVmZmVyX2NvbnRlbnRzIGJ1ZlxuXG5sZXQgdHJhbnNmb3JtX2ludF9hbHQgaWNvbnYgcyA9XG4gIG1hdGNoIGljb252IHdpdGhcbiAgfCBJbnRfQ2QgfCBJbnRfQ2kgfCBJbnRfQ3UgLT5cbiAgICBsZXQgZGlnaXRzID1cbiAgICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICAgIHwgJzAnLi4nOScgLT4gaW5jciBuXG4gICAgICAgIHwgXyAtPiAoKVxuICAgICAgZG9uZTtcbiAgICAgICFuXG4gICAgaW5cbiAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHMgKyAoZGlnaXRzIC0gMSkgLyAzKSBpblxuICAgIGxldCBwb3MgPSByZWYgMCBpblxuICAgIGxldCBwdXQgYyA9IEJ5dGVzLnNldCBidWYgIXBvcyBjOyBpbmNyIHBvcyBpblxuICAgIGxldCBsZWZ0ID0gcmVmICgoZGlnaXRzIC0gMSkgbW9kIDMgKyAxKSBpblxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgfCAnMCcuLic5JyBhcyBjIC0+XG4gICAgICAgICAgaWYgIWxlZnQgPSAwIHRoZW4gKHB1dCAnXyc7IGxlZnQgOj0gMyk7IGRlY3IgbGVmdDsgcHV0IGNcbiAgICAgIHwgYyAtPiBwdXQgY1xuICAgIGRvbmU7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBidWZcbiAgfCBfIC0+IHNcblxuKCogQ29udmVydCBhbiBpbnRlZ2VyIHRvIGEgc3RyaW5nIGFjY29yZGluZyB0byBhIGNvbnZlcnNpb24uICopXG5sZXQgY29udmVydF9pbnQgaWNvbnYgbiA9XG4gIHRyYW5zZm9ybV9pbnRfYWx0IGljb252IChmb3JtYXRfaW50IChmb3JtYXRfb2ZfaWNvbnYgaWNvbnYpIG4pXG5sZXQgY29udmVydF9pbnQzMiBpY29udiBuID1cbiAgdHJhbnNmb3JtX2ludF9hbHQgaWNvbnYgKGZvcm1hdF9pbnQzMiAoZm9ybWF0X29mX2ljb252bCBpY29udikgbilcbmxldCBjb252ZXJ0X25hdGl2ZWludCBpY29udiBuID1cbiAgdHJhbnNmb3JtX2ludF9hbHQgaWNvbnYgKGZvcm1hdF9uYXRpdmVpbnQgKGZvcm1hdF9vZl9pY29udm4gaWNvbnYpIG4pXG5sZXQgY29udmVydF9pbnQ2NCBpY29udiBuID1cbiAgdHJhbnNmb3JtX2ludF9hbHQgaWNvbnYgKGZvcm1hdF9pbnQ2NCAoZm9ybWF0X29mX2ljb252TCBpY29udikgbilcblxuKCogQ29udmVydCBhIGZsb2F0IHRvIHN0cmluZy4gKilcbigqIEZpeCBzcGVjaWFsIGNhc2Ugb2YgXCJPQ2FtbCBmbG9hdCBmb3JtYXRcIi4gKilcbmxldCBjb252ZXJ0X2Zsb2F0IGZjb252IHByZWMgeCA9XG4gIGxldCBoZXggKCkgPVxuICAgIGxldCBzaWduID1cbiAgICAgIG1hdGNoIGZzdCBmY29udiB3aXRoXG4gICAgICB8IEZsb2F0X2ZsYWdfcCAtPiAnKydcbiAgICAgIHwgRmxvYXRfZmxhZ19zIC0+ICcgJ1xuICAgICAgfCBfIC0+ICctJyBpblxuICAgIGhleHN0cmluZ19vZl9mbG9hdCB4IHByZWMgc2lnbiBpblxuICBsZXQgYWRkX2RvdF9pZl9uZWVkZWQgc3RyID1cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBsZXQgcmVjIGlzX3ZhbGlkIGkgPVxuICAgICAgaWYgaSA9IGxlbiB0aGVuIGZhbHNlIGVsc2VcbiAgICAgICAgbWF0Y2ggc3RyLltpXSB3aXRoXG4gICAgICAgIHwgJy4nIHwgJ2UnIHwgJ0UnIC0+IHRydWVcbiAgICAgICAgfCBfIC0+IGlzX3ZhbGlkIChpICsgMSkgaW5cbiAgICBpZiBpc192YWxpZCAwIHRoZW4gc3RyIGVsc2Ugc3RyIF4gXCIuXCIgaW5cbiAgbGV0IGNhbWxfc3BlY2lhbF92YWwgc3RyID0gbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgfCBGUF9ub3JtYWwgfCBGUF9zdWJub3JtYWwgfCBGUF96ZXJvIC0+IHN0clxuICAgIHwgRlBfaW5maW5pdGUgLT4gaWYgeCA8IDAuMCB0aGVuIFwibmVnX2luZmluaXR5XCIgZWxzZSBcImluZmluaXR5XCJcbiAgICB8IEZQX25hbiAtPiBcIm5hblwiIGluXG4gIG1hdGNoIHNuZCBmY29udiB3aXRoXG4gIHwgRmxvYXRfaCAtPiBoZXggKClcbiAgfCBGbG9hdF9IIC0+IFN0cmluZy51cHBlcmNhc2VfYXNjaWkgKGhleCAoKSlcbiAgfCBGbG9hdF9DRiAtPiBjYW1sX3NwZWNpYWxfdmFsIChoZXggKCkpXG4gIHwgRmxvYXRfRiAtPlxuICAgIGxldCBzdHIgPSBmb3JtYXRfZmxvYXQgKGZvcm1hdF9vZl9mY29udiBmY29udiBwcmVjKSB4IGluXG4gICAgY2FtbF9zcGVjaWFsX3ZhbCAoYWRkX2RvdF9pZl9uZWVkZWQgc3RyKVxuICB8IEZsb2F0X2YgfCBGbG9hdF9lIHwgRmxvYXRfRSB8IEZsb2F0X2cgfCBGbG9hdF9HIC0+XG4gICAgZm9ybWF0X2Zsb2F0IChmb3JtYXRfb2ZfZmNvbnYgZmNvbnYgcHJlYykgeFxuXG4oKiBDb252ZXJ0IGEgY2hhciB0byBhIHN0cmluZyBhY2NvcmRpbmcgdG8gdGhlIE9DYW1sIGxleGljYWwgY29udmVudGlvbi4gKilcbmxldCBmb3JtYXRfY2FtbF9jaGFyIGMgPVxuICBsZXQgc3RyID0gQ2hhci5lc2NhcGVkIGMgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgcmVzID0gQnl0ZXMubWFrZSAobCArIDIpICdcXCcnIGluXG4gIFN0cmluZy51bnNhZmVfYmxpdCBzdHIgMCByZXMgMSBsO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuXG4oKiBDb252ZXJ0IGEgZm9ybWF0IHR5cGUgdG8gc3RyaW5nICopXG5sZXQgc3RyaW5nX29mX2ZtdHR5IGZtdHR5ID1cbiAgbGV0IGJ1ZiA9IGJ1ZmZlcl9jcmVhdGUgMTYgaW5cbiAgYnByaW50X2ZtdHR5IGJ1ZiBmbXR0eTtcbiAgYnVmZmVyX2NvbnRlbnRzIGJ1ZlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgKCogR2VuZXJpYyBwcmludGluZyBmdW5jdGlvbiAqKVxuXG4oKiBNYWtlIGEgZ2VuZXJpYyBwcmludGluZyBmdW5jdGlvbi4gKilcbigqIFVzZWQgdG8gZ2VuZXJhdGUgUHJpbnRmIGFuZCBGb3JtYXQgcHJpbnRpbmcgZnVuY3Rpb25zLiAqKVxuKCogUGFyYW1ldGVyczpcbiAgICAgazogYSBjb250aW51YXRpb24gZmluYWxseSBhcHBsaWVkIHRvIHRoZSBvdXRwdXQgc3RyZWFtIGFuZCB0aGUgYWNjdW11bGF0b3IuXG4gICAgIG86IHRoZSBvdXRwdXQgc3RyZWFtIChzZWUgaywgJWEgYW5kICV0KS5cbiAgICAgYWNjOiByZXYgbGlzdCBvZiBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzaCwgZm9ybWF0dGluZywgLi4uKS5cbiAgICAgZm10OiB0aGUgZm9ybWF0LiAqKVxubGV0IHJlYyBtYWtlX3ByaW50ZiA6IHR5cGUgYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IGEgPVxuZnVuIGsgYWNjIGZtdCAtPiBtYXRjaCBmbXQgd2l0aFxuICB8IENoYXIgcmVzdCAtPlxuICAgIGZ1biBjIC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX2NoYXIgKGFjYywgYykgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICBmdW4gYyAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgZm9ybWF0X2NhbWxfY2hhciBjKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIHJlc3RcbiAgfCBTdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBtYWtlX3BhZGRpbmcgayBhY2MgcmVzdCBwYWQgKGZ1biBzdHIgLT4gc3RyKVxuICB8IENhbWxfc3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgbWFrZV9wYWRkaW5nIGsgYWNjIHJlc3QgcGFkIHN0cmluZ190b19jYW1sX3N0cmluZ1xuICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGNvbnZlcnRfaW50IGljb252XG4gIHwgSW50MzIgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBjb252ZXJ0X2ludDMyIGljb252XG4gIHwgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgY29udmVydF9uYXRpdmVpbnQgaWNvbnZcbiAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGNvbnZlcnRfaW50NjQgaWNvbnZcbiAgfCBGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBtYWtlX2Zsb2F0X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgZmNvbnZcbiAgfCBCb29sIChwYWQsIHJlc3QpIC0+XG4gICAgbWFrZV9wYWRkaW5nIGsgYWNjIHJlc3QgcGFkIHN0cmluZ19vZl9ib29sXG4gIHwgQWxwaGEgcmVzdCAtPlxuICAgIGZ1biBmIHggLT4gbWFrZV9wcmludGYgayAoQWNjX2RlbGF5IChhY2MsIGZ1biBvIC0+IGYgbyB4KSkgcmVzdFxuICB8IFRoZXRhIHJlc3QgLT5cbiAgICBmdW4gZiAtPiBtYWtlX3ByaW50ZiBrIChBY2NfZGVsYXkgKGFjYywgZikpIHJlc3RcbiAgfCBDdXN0b20gKGFyaXR5LCBmLCByZXN0KSAtPlxuICAgIG1ha2VfY3VzdG9tIGsgYWNjIHJlc3QgYXJpdHkgKGYgKCkpXG4gIHwgUmVhZGVyIF8gLT5cbiAgICAoKiBUaGlzIGNhc2UgaXMgaW1wb3NzaWJsZSwgYnkgdHlwaW5nIG9mIGZvcm1hdHMuICopXG4gICAgKCogSW5kZWVkLCBzaW5jZSBwcmludGYgYW5kIGNvLiB0YWtlIGEgZm9ybWF0NCBhcyBhcmd1bWVudCwgdGhlICdkIGFuZCAnZVxuICAgICAgIHR5cGUgcGFyYW1ldGVycyBvZiBmbXQgYXJlIG9idmlvdXNseSBlcXVhbHMuIFRoZSBSZWFkZXIgaXMgdGhlXG4gICAgICAgb25seSBjb25zdHJ1Y3RvciB3aGljaCB0b3VjaCAnZCBhbmQgJ2UgdHlwZSBwYXJhbWV0ZXJzIG9mIHRoZSBmb3JtYXRcbiAgICAgICB0eXBlLCBpdCBhZGRzIGFuICgtPikgdG8gdGhlICdkIHBhcmFtZXRlcnMuIENvbnNlcXVlbnRseSwgYSBmb3JtYXQ0XG4gICAgICAgY2Fubm90IGNvbnRhaW4gYSBSZWFkZXIgbm9kZSwgZXhjZXB0IGluIHRoZSBzdWItZm9ybWF0IGFzc29jaWF0ZWQgdG9cbiAgICAgICBhbiAley4uLiV9LiBJdCdzIG5vdCBhIHByb2JsZW0gYmVjYXVzZSBtYWtlX3ByaW50ZiBkbyBub3QgY2FsbFxuICAgICAgIGl0c2VsZiByZWN1cnNpdmVseSBvbiB0aGUgc3ViLWZvcm1hdCBhc3NvY2lhdGVkIHRvICV7Li4uJX0uICopXG4gICAgYXNzZXJ0IGZhbHNlXG4gIHwgRmx1c2ggcmVzdCAtPlxuICAgIG1ha2VfcHJpbnRmIGsgKEFjY19mbHVzaCBhY2MpIHJlc3RcblxuICB8IFN0cmluZ19saXRlcmFsIChzdHIsIHJlc3QpIC0+XG4gICAgbWFrZV9wcmludGYgayAoQWNjX3N0cmluZ19saXRlcmFsIChhY2MsIHN0cikpIHJlc3RcbiAgfCBDaGFyX2xpdGVyYWwgKGNociwgcmVzdCkgLT5cbiAgICBtYWtlX3ByaW50ZiBrIChBY2NfY2hhcl9saXRlcmFsIChhY2MsIGNocikpIHJlc3RcblxuICB8IEZvcm1hdF9hcmcgKF8sIHN1Yl9mbXR0eSwgcmVzdCkgLT5cbiAgICBsZXQgdHkgPSBzdHJpbmdfb2ZfZm10dHkgc3ViX2ZtdHR5IGluXG4gICAgKGZ1biBzdHIgLT5cbiAgICAgIGlnbm9yZSBzdHI7XG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgdHkpKSByZXN0KVxuICB8IEZvcm1hdF9zdWJzdCAoXywgZm10dHksIHJlc3QpIC0+XG4gICAgZnVuIChGb3JtYXQgKGZtdCwgXykpIC0+IG1ha2VfcHJpbnRmIGsgYWNjXG4gICAgICAoY29uY2F0X2ZtdCAocmVjYXN0IGZtdCBmbXR0eSkgcmVzdClcblxuICB8IFNjYW5fY2hhcl9zZXQgKF8sIF8sIHJlc3QpIC0+XG4gICAgbGV0IG5ld19hY2MgPSBBY2NfaW52YWxpZF9hcmcgKGFjYywgXCJQcmludGY6IGJhZCBjb252ZXJzaW9uICVbXCIpIGluXG4gICAgZnVuIF8gLT4gbWFrZV9wcmludGYgayBuZXdfYWNjIHJlc3RcbiAgfCBTY2FuX2dldF9jb3VudGVyIChfLCByZXN0KSAtPlxuICAgICgqIFRoaXMgY2FzZSBzaG91bGQgYmUgcmVmdXNlZCBmb3IgUHJpbnRmLiAqKVxuICAgICgqIEFjY2VwdGVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiAqKVxuICAgICgqIEludGVycHJldCAlbCwgJW4gYW5kICVMIGFzICV1LiAqKVxuICAgIGZ1biBuIC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX3N0cmluZyAoYWNjLCBmb3JtYXRfaW50IFwiJXVcIiBuKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIHJlc3RcbiAgfCBTY2FuX25leHRfY2hhciByZXN0IC0+XG4gICAgZnVuIGMgLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfY2hhciAoYWNjLCBjKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIHJlc3RcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgbWFrZV9pZ25vcmVkX3BhcmFtIGsgYWNjIGlnbiByZXN0XG5cbiAgfCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkgLT5cbiAgICBtYWtlX3ByaW50ZiBrIChBY2NfZm9ybWF0dGluZ19saXQgKGFjYywgZm10aW5nX2xpdCkpIHJlc3RcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgIGxldCBrJyBrYWNjID1cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19mb3JtYXR0aW5nX2dlbiAoYWNjLCBBY2Nfb3Blbl90YWcga2FjYykpIHJlc3QgaW5cbiAgICBtYWtlX3ByaW50ZiBrJyBFbmRfb2ZfYWNjIGZtdCdcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgIGxldCBrJyBrYWNjID1cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19mb3JtYXR0aW5nX2dlbiAoYWNjLCBBY2Nfb3Blbl9ib3gga2FjYykpIHJlc3QgaW5cbiAgICBtYWtlX3ByaW50ZiBrJyBFbmRfb2ZfYWNjIGZtdCdcblxuICB8IEVuZF9vZl9mb3JtYXQgLT5cbiAgICBrIGFjY1xuXG4oKiBEZWxheSB0aGUgZXJyb3IgKEludmFsaWRfYXJndW1lbnQgXCJQcmludGY6IGJhZCBjb252ZXJzaW9uICVfXCIpLiAqKVxuKCogR2VuZXJhdGUgZnVuY3Rpb25zIHRvIHRha2UgcmVtYWluaW5nIGFyZ3VtZW50cyAoYWZ0ZXIgdGhlIFwiJV9cIikuICopXG5hbmQgbWFrZV9pZ25vcmVkX3BhcmFtIDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgeSwgeCkgaWdub3JlZCAtPlxuICAgICh4LCBiLCBjLCB5LCBlLCBmKSBmbXQgLT4gYSA9XG5mdW4gayBhY2MgaWduIGZtdCAtPiBtYXRjaCBpZ24gd2l0aFxuICB8IElnbm9yZWRfY2hhciAgICAgICAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9zdHJpbmcgXyAgICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfY2FtbF9zdHJpbmcgXyAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2ludCAoXywgXykgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9pbnQzMiAoXywgXykgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfbmF0aXZlaW50IChfLCBfKSAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2ludDY0IChfLCBfKSAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9mbG9hdCAoXywgXykgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfYm9vbCBfICAgICAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgXyAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgKF8sIGZtdHR5KSAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgZm10dHkgZm10XG4gIHwgSWdub3JlZF9yZWFkZXIgICAgICAgICAgICAgICAgICAtPiBhc3NlcnQgZmFsc2VcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgXyAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIF8gICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcblxuXG4oKiBTcGVjaWFsIGNhc2Ugb2YgcHJpbnRmIFwiJV8oXCIuICopXG5hbmQgbWFrZV9mcm9tX2ZtdHR5IDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgeSwgeCkgZm10dHkgLT5cbiAgICAoeCwgYiwgYywgeSwgZSwgZikgZm10IC0+IGEgPVxuZnVuIGsgYWNjIGZtdHR5IGZtdCAtPiBtYXRjaCBmbXR0eSB3aXRoXG4gIHwgQ2hhcl90eSByZXN0ICAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgU3RyaW5nX3R5IHJlc3QgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgSW50X3R5IHJlc3QgICAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgSW50MzJfdHkgcmVzdCAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgSW50NjRfdHkgcmVzdCAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgRmxvYXRfdHkgcmVzdCAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgQm9vbF90eSByZXN0ICAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgQWxwaGFfdHkgcmVzdCAgICAgICAgICAgLT4gZnVuIF8gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBUaGV0YV90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBBbnlfdHkgcmVzdCAgICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBSZWFkZXJfdHkgXyAgICAgICAgICAgICAtPiBhc3NlcnQgZmFsc2VcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSBfICAgICAtPiBhc3NlcnQgZmFsc2VcbiAgfCBGb3JtYXRfYXJnX3R5IChfLCByZXN0KSAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBFbmRfb2ZfZm10dHkgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgbGV0IHR5ID0gdHJhbnMgKHN5bW0gdHkxKSB0eTIgaW5cbiAgICBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgKGNvbmNhdF9mbXR0eSB0eSByZXN0KSBmbXRcblxuKCogSW5zZXJ0IGFuIEFjY19pbnZhbGlkX2FyZyBpbiB0aGUgYWNjdW11bGF0b3IgYW5kIGNvbnRpbnVlIHRvIGdlbmVyYXRlXG4gICBjbG9zdXJlcyB0byBnZXQgdGhlIHJlbWFpbmluZyBhcmd1bWVudHMuICopXG5hbmQgbWFrZV9pbnZhbGlkX2FyZyA6IHR5cGUgYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IGEgPVxuZnVuIGsgYWNjIGZtdCAtPlxuICBtYWtlX3ByaW50ZiBrIChBY2NfaW52YWxpZF9hcmcgKGFjYywgXCJQcmludGY6IGJhZCBjb252ZXJzaW9uICVfXCIpKSBmbXRcblxuKCogRml4IHBhZGRpbmcsIHRha2UgaXQgYXMgYW4gZXh0cmEgaW50ZWdlciBhcmd1bWVudCBpZiBuZWVkZWQuICopXG5hbmQgbWFrZV9wYWRkaW5nIDogdHlwZSB4IHogYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgKHgsIHogLT4gYSkgcGFkZGluZyAtPiAoeiAtPiBzdHJpbmcpIC0+IHggPVxuICBmdW4gayBhY2MgZm10IHBhZCB0cmFucyAtPiBtYXRjaCBwYWQgd2l0aFxuICB8IE5vX3BhZGRpbmcgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgdHJhbnMgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHdpZHRoKSAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX3N0cmluZyAoYWNjLCBmaXhfcGFkZGluZyBwYWR0eSB3aWR0aCAodHJhbnMgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHkgLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX3N0cmluZyAoYWNjLCBmaXhfcGFkZGluZyBwYWR0eSB3ICh0cmFucyB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyBmbXRcblxuKCogRml4IHBhZGRpbmcgYW5kIHByZWNpc2lvbiBmb3IgaW50LCBpbnQzMiwgbmF0aXZlaW50IG9yIGludDY0LiAqKVxuKCogVGFrZSBvbmUgb3IgdHdvIGV4dHJhIGludGVnZXIgYXJndW1lbnRzIGlmIG5lZWRlZC4gKilcbmFuZCBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiA6IHR5cGUgeCB5IHogYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKHksIHogLT4gYSkgcHJlY2lzaW9uIC0+IChpbnRfY29udiAtPiB6IC0+IHN0cmluZykgLT5cbiAgICBpbnRfY29udiAtPiB4ID1cbiAgZnVuIGsgYWNjIGZtdCBwYWQgcHJlYyB0cmFucyBpY29udiAtPiBtYXRjaCBwYWQsIHByZWMgd2l0aFxuICB8IE5vX3BhZGRpbmcsIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gdHJhbnMgaWNvbnYgeCBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IE5vX3BhZGRpbmcsIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBOb19wYWRkaW5nLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3ICh0cmFucyBpY29udiB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKHRyYW5zIGljb252IHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB3IHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuXG4oKiBDb252ZXJ0IGEgZmxvYXQsIGZpeCBwYWRkaW5nIGFuZCBwcmVjaXNpb24gaWYgbmVlZGVkLiAqKVxuKCogVGFrZSB0aGUgZmxvYXQgYXJndW1lbnQgYW5kIG9uZSBvciB0d28gZXh0cmEgaW50ZWdlciBhcmd1bWVudHMgaWYgbmVlZGVkLiAqKVxuYW5kIG1ha2VfZmxvYXRfcGFkZGluZ19wcmVjaXNpb24gOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAoeCwgeSkgcGFkZGluZyAtPiAoeSwgZmxvYXQgLT4gYSkgcHJlY2lzaW9uIC0+IGZsb2F0X2NvbnYgLT4geCA9XG4gIGZ1biBrIGFjYyBmbXQgcGFkIHByZWMgZmNvbnYgLT4gbWF0Y2ggcGFkLCBwcmVjIHdpdGhcbiAgfCBOb19wYWRkaW5nLCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGNvbnZlcnRfZmxvYXQgZmNvbnYgKGRlZmF1bHRfZmxvYXRfcHJlY2lzaW9uIGZjb252KSB4IGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTm9fcGFkZGluZywgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IE5vX3BhZGRpbmcsIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gcCB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiBwIHggaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGNvbnZlcnRfZmxvYXQgZmNvbnYgKGRlZmF1bHRfZmxvYXRfcHJlY2lzaW9uIGZjb252KSB4IGluXG4gICAgICBsZXQgc3RyJyA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgc3RyIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyJykpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoY29udmVydF9mbG9hdCBmY29udiBwIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IHN0ciA9IGNvbnZlcnRfZmxvYXQgZmNvbnYgKGRlZmF1bHRfZmxvYXRfcHJlY2lzaW9uIGZjb252KSB4IGluXG4gICAgICBsZXQgc3RyJyA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgc3RyIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyJykpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoY29udmVydF9mbG9hdCBmY29udiBwIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gdyBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbmFuZCBtYWtlX2N1c3RvbSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gIChhLCB4LCB5KSBjdXN0b21fYXJpdHkgLT4geCAtPiB5ID1cbiAgZnVuIGsgYWNjIHJlc3QgYXJpdHkgZiAtPiBtYXRjaCBhcml0eSB3aXRoXG4gIHwgQ3VzdG9tX3plcm8gLT4gbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIGYpKSByZXN0XG4gIHwgQ3VzdG9tX3N1Y2MgYXJpdHkgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbWFrZV9jdXN0b20gayBhY2MgcmVzdCBhcml0eSAoZiB4KVxuXG5sZXQgY29uc3QgeCBfID0geFxuXG5sZXQgcmVjIG1ha2VfaXByaW50ZiA6IHR5cGUgYSBiIGMgZCBlIGYgc3RhdGUuXG4gIChzdGF0ZSAtPiBmKSAtPiBzdGF0ZSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IGEgPVxuICBmdW4gayBvIGZtdCAtPiBtYXRjaCBmbXQgd2l0aFxuICAgIHwgQ2hhciByZXN0IC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgU3RyaW5nIChOb19wYWRkaW5nLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgU3RyaW5nIChMaXRfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgU3RyaW5nIChBcmdfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdCkpXG4gICAgfCBDYW1sX3N0cmluZyAoTm9fcGFkZGluZywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IENhbWxfc3RyaW5nIChMaXRfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQ2FtbF9zdHJpbmcgKEFyZ19wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KSlcbiAgICB8IEludCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgSW50MzIgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IE5hdGl2ZWludCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgSW50NjQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IEZsb2F0IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBCb29sIChOb19wYWRkaW5nLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQm9vbCAoTGl0X3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IEJvb2wgKEFyZ19wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KSlcbiAgICB8IEFscGhhIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpKVxuICAgIHwgVGhldGEgcmVzdCAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQ3VzdG9tIChhcml0eSwgXywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfY3VzdG9tX2FyaXR5IGsgbyByZXN0IGFyaXR5XG4gICAgfCBSZWFkZXIgXyAtPlxuICAgICAgICAoKiBUaGlzIGNhc2UgaXMgaW1wb3NzaWJsZSwgYnkgdHlwaW5nIG9mIGZvcm1hdHMuICBTZWUgdGhlXG4gICAgICAgICAgIG5vdGUgaW4gdGhlIGNvcnJlc3BvbmRpbmcgY2FzZSBmb3IgbWFrZV9wcmludGYuICopXG4gICAgICAgIGFzc2VydCBmYWxzZVxuICAgIHwgRmx1c2ggcmVzdCAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIHJlc3RcbiAgICB8IFN0cmluZ19saXRlcmFsIChfLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIHJlc3RcbiAgICB8IENoYXJfbGl0ZXJhbCAoXywgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyByZXN0XG4gICAgfCBGb3JtYXRfYXJnIChfLCBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgRm9ybWF0X3N1YnN0IChfLCBmbXR0eSwgcmVzdCkgLT5cbiAgICAgICAgZnVuIChGb3JtYXQgKGZtdCwgXykpIC0+XG4gICAgICAgICAgbWFrZV9pcHJpbnRmIGsgb1xuICAgICAgICAgICAgKGNvbmNhdF9mbXQgKHJlY2FzdCBmbXQgZm10dHkpIHJlc3QpXG4gICAgfCBTY2FuX2NoYXJfc2V0IChfLCBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgU2Nhbl9nZXRfY291bnRlciAoXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pZ25vcmVkX3BhcmFtIChmdW4gXyAtPiBrIG8pIChFbmRfb2ZfYWNjKSBpZ24gcmVzdFxuICAgIHwgRm9ybWF0dGluZ19saXQgKF8sIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gcmVzdFxuICAgIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIChmdW4ga29jIC0+IG1ha2VfaXByaW50ZiBrIGtvYyByZXN0KSBvIGZtdCdcbiAgICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiAoZnVuIGtvYyAtPiBtYWtlX2lwcmludGYgayBrb2MgcmVzdCkgbyBmbXQnXG4gICAgfCBFbmRfb2ZfZm9ybWF0IC0+XG4gICAgICAgIGsgb1xuYW5kIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIDpcbiAgdHlwZSB4IHkgeiBhIGIgYyBkIGUgZiBzdGF0ZS5cbiAgKHN0YXRlIC0+IGYpIC0+IHN0YXRlIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgKHgsIHkpIHBhZGRpbmcgLT4gKHksIHogLT4gYSkgcHJlY2lzaW9uIC0+IHggPVxuICBmdW4gayBvIGZtdCBwYWQgcHJlYyAtPiBtYXRjaCBwYWQsIHByZWMgd2l0aFxuICAgIHwgTm9fcGFkZGluZyAgICwgTm9fcHJlY2lzaW9uICAgIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdClcbiAgICB8IE5vX3BhZGRpbmcgICAsIExpdF9wcmVjaXNpb24gXyAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpXG4gICAgfCBOb19wYWRkaW5nICAgLCBBcmdfcHJlY2lzaW9uICAgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpXG4gICAgfCBMaXRfcGFkZGluZyBfLCBOb19wcmVjaXNpb24gICAgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KVxuICAgIHwgTGl0X3BhZGRpbmcgXywgTGl0X3ByZWNpc2lvbiBfIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdClcbiAgICB8IExpdF9wYWRkaW5nIF8sIEFyZ19wcmVjaXNpb24gICAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KSlcbiAgICB8IEFyZ19wYWRkaW5nIF8sIE5vX3ByZWNpc2lvbiAgICAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KSlcbiAgICB8IEFyZ19wYWRkaW5nIF8sIExpdF9wcmVjaXNpb24gXyAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KSlcbiAgICB8IEFyZ19wYWRkaW5nIF8sIEFyZ19wcmVjaXNpb24gICAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpKVxuYW5kIGZuX29mX2N1c3RvbV9hcml0eSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIHN0YXRlLlxuICAoc3RhdGUgLT4gZikgLT5cbiAgc3RhdGUgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiAoYSwgeCwgeSkgY3VzdG9tX2FyaXR5IC0+IHkgPVxuICBmdW4gayBvIGZtdCAtPiBmdW5jdGlvblxuICAgIHwgQ3VzdG9tX3plcm8gLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyBmbXRcbiAgICB8IEN1c3RvbV9zdWNjIGFyaXR5IC0+XG4gICAgICAgIGNvbnN0IChmbl9vZl9jdXN0b21fYXJpdHkgayBvIGZtdCBhcml0eSlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQ29udGludWF0aW9ucyBmb3IgbWFrZV9wcmludGYgKilcblxuKCogUmVjdXJzaXZlbHkgb3V0cHV0IGFuIFwiYWNjdW11bGF0b3JcIiBjb250YWluaW5nIGEgcmV2ZXJzZWQgbGlzdCBvZlxuICAgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1cywgLi4uKSBpbiBhbiBvdXRwdXRfc3RyZWFtLiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBtYWtlX3ByaW50Zi4gKilcbmxldCByZWMgb3V0cHV0X2FjYyBvIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmbXRpbmdfbGl0KSAtPlxuICAgIGxldCBzID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQgaW5cbiAgICBvdXRwdXRfYWNjIG8gcDsgb3V0cHV0X3N0cmluZyBvIHM7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBvdXRwdXRfYWNjIG8gcDsgb3V0cHV0X3N0cmluZyBvIFwiQHtcIjsgb3V0cHV0X2FjYyBvIGFjYyc7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl9ib3ggYWNjJykgLT5cbiAgICBvdXRwdXRfYWNjIG8gcDsgb3V0cHV0X3N0cmluZyBvIFwiQFtcIjsgb3V0cHV0X2FjYyBvIGFjYyc7XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBvdXRwdXRfYWNjIG8gcDsgb3V0cHV0X3N0cmluZyBvIHNcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChwLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKHAsIGMpICAgICAtPiBvdXRwdXRfYWNjIG8gcDsgb3V0cHV0X2NoYXIgbyBjXG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IG91dHB1dF9hY2MgbyBwOyBmIG9cbiAgfCBBY2NfZmx1c2ggcCAgICAgICAgICAgICAgLT4gb3V0cHV0X2FjYyBvIHA7IGZsdXNoIG9cbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gb3V0cHV0X2FjYyBvIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCogUmVjdXJzaXZlbHkgb3V0cHV0IGFuIFwiYWNjdW11bGF0b3JcIiBjb250YWluaW5nIGEgcmV2ZXJzZWQgbGlzdCBvZlxuICAgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1cywgLi4uKSBpbiBhIGJ1ZmZlci4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgbWFrZV9wcmludGYuICopXG5sZXQgcmVjIGJ1ZnB1dF9hY2MgYiBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZm10aW5nX2xpdCkgLT5cbiAgICBsZXQgcyA9IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIFwiQHtcIjsgYnVmcHV0X2FjYyBiIGFjYyc7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl9ib3ggYWNjJykgLT5cbiAgICBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIkBbXCI7IGJ1ZnB1dF9hY2MgYiBhY2MnO1xuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgc1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IGJ1ZnB1dF9hY2MgYiBwOyBmIGJcbiAgfCBBY2NfZmx1c2ggcCAgICAgICAgICAgICAgLT4gYnVmcHV0X2FjYyBiIHA7XG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IGJ1ZnB1dF9hY2MgYiBwOyBpbnZhbGlkX2FyZyBtc2c7XG4gIHwgRW5kX29mX2FjYyAgICAgICAgICAgICAgIC0+ICgpXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYSBidWZmZXIuICopXG4oKiBEaWZmZXIgZnJvbSBidWZwdXRfYWNjIGJ5IHRoZSBpbnRlcnByZXRhdGlvbiBvZiAlYSBhbmQgJXQuICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIG1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBzdHJwdXRfYWNjIGIgYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGZtdGluZ19saXQpIC0+XG4gICAgbGV0IHMgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIkB7XCI7IHN0cnB1dF9hY2MgYiBhY2MnO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJAW1wiOyBzdHJwdXRfYWNjIGIgYWNjJztcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIHNcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChwLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKHAsIGMpICAgICAtPiBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiAoZiAoKSlcbiAgfCBBY2NfZmx1c2ggcCAgICAgICAgICAgICAgLT4gc3RycHV0X2FjYyBiIHA7XG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IHN0cnB1dF9hY2MgYiBwOyBpbnZhbGlkX2FyZyBtc2c7XG4gIHwgRW5kX29mX2FjYyAgICAgICAgICAgICAgIC0+ICgpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIEVycm9yIG1hbmFnZW1lbnQgKilcblxuKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBwcmV0dHktcHJpbnRlZCBlcnJvciBtZXNzYWdlLiAqKVxubGV0IGZhaWx3aXRoX21lc3NhZ2UgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAyNTYgaW5cbiAgbGV0IGsgYWNjID0gc3RycHV0X2FjYyBidWYgYWNjOyBmYWlsd2l0aCAoQnVmZmVyLmNvbnRlbnRzIGJ1ZikgaW5cbiAgbWFrZV9wcmludGYgayBFbmRfb2ZfYWNjIGZtdFxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdHRpbmcgdG9vbHMgKilcblxuKCogQ29udmVydCBhIHN0cmluZyB0byBhbiBvcGVuIGJsb2NrIGRlc2NyaXB0aW9uIChpbmRlbnQsIGJsb2NrX3R5cGUpICopXG5sZXQgb3Blbl9ib3hfb2Zfc3RyaW5nIHN0ciA9XG4gIGlmIHN0ciA9IFwiXCIgdGhlbiAoMCwgUHBfYm94KSBlbHNlXG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgbGV0IGludmFsaWRfYm94ICgpID0gZmFpbHdpdGhfbWVzc2FnZSBcImludmFsaWQgYm94IGRlc2NyaXB0aW9uICVTXCIgc3RyIGluXG4gICAgbGV0IHJlYyBwYXJzZV9zcGFjZXMgaSA9XG4gICAgICBpZiBpID0gbGVuIHRoZW4gaSBlbHNlXG4gICAgICAgIG1hdGNoIHN0ci5baV0gd2l0aFxuICAgICAgICB8ICcgJyB8ICdcXHQnIC0+IHBhcnNlX3NwYWNlcyAoaSArIDEpXG4gICAgICAgIHwgXyAtPiBpXG4gICAgYW5kIHBhcnNlX2x3b3JkIGkgaiA9XG4gICAgICBpZiBqID0gbGVuIHRoZW4gaiBlbHNlXG4gICAgICAgIG1hdGNoIHN0ci5bal0gd2l0aFxuICAgICAgICB8ICdhJyAuLiAneicgLT4gcGFyc2VfbHdvcmQgaSAoaiArIDEpXG4gICAgICAgIHwgXyAtPiBqXG4gICAgYW5kIHBhcnNlX2ludCBpIGogPVxuICAgICAgaWYgaiA9IGxlbiB0aGVuIGogZWxzZVxuICAgICAgICBtYXRjaCBzdHIuW2pdIHdpdGhcbiAgICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+IHBhcnNlX2ludCBpIChqICsgMSlcbiAgICAgICAgfCBfIC0+IGogaW5cbiAgICBsZXQgd3N0YXJ0ID0gcGFyc2Vfc3BhY2VzIDAgaW5cbiAgICBsZXQgd2VuZCA9IHBhcnNlX2x3b3JkIHdzdGFydCB3c3RhcnQgaW5cbiAgICBsZXQgYm94X25hbWUgPSBTdHJpbmcuc3ViIHN0ciB3c3RhcnQgKHdlbmQgLSB3c3RhcnQpIGluXG4gICAgbGV0IG5zdGFydCA9IHBhcnNlX3NwYWNlcyB3ZW5kIGluXG4gICAgbGV0IG5lbmQgPSBwYXJzZV9pbnQgbnN0YXJ0IG5zdGFydCBpblxuICAgIGxldCBpbmRlbnQgPVxuICAgICAgaWYgbnN0YXJ0ID0gbmVuZCB0aGVuIDAgZWxzZVxuICAgICAgICB0cnkgaW50X29mX3N0cmluZyAoU3RyaW5nLnN1YiBzdHIgbnN0YXJ0IChuZW5kIC0gbnN0YXJ0KSlcbiAgICAgICAgd2l0aCBGYWlsdXJlIF8gLT4gaW52YWxpZF9ib3ggKCkgaW5cbiAgICBsZXQgZXhwX2VuZCA9IHBhcnNlX3NwYWNlcyBuZW5kIGluXG4gICAgaWYgZXhwX2VuZCA8PiBsZW4gdGhlbiBpbnZhbGlkX2JveCAoKTtcbiAgICBsZXQgYm94X3R5cGUgPSBtYXRjaCBib3hfbmFtZSB3aXRoXG4gICAgICB8IFwiXCIgfCBcImJcIiAtPiBQcF9ib3hcbiAgICAgIHwgXCJoXCIgICAgICAtPiBQcF9oYm94XG4gICAgICB8IFwidlwiICAgICAgLT4gUHBfdmJveFxuICAgICAgfCBcImh2XCIgICAgIC0+IFBwX2h2Ym94XG4gICAgICB8IFwiaG92XCIgICAgLT4gUHBfaG92Ym94XG4gICAgICB8IF8gICAgICAgIC0+IGludmFsaWRfYm94ICgpIGluXG4gICAgKGluZGVudCwgYm94X3R5cGUpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogUGFyc2luZyB0b29scyAqKVxuXG4oKiBDcmVhdGUgYSBwYWRkaW5nX2ZtdF9lYmIgZnJvbSBhIHBhZGRpbmcgYW5kIGEgZm9ybWF0LiAqKVxuKCogQ29weSB0aGUgcGFkZGluZyB0byBkaXNqb2luIHRoZSB0eXBlIHBhcmFtZXRlcnMgb2YgYXJndW1lbnQgYW5kIHJlc3VsdC4gKilcbmxldCBtYWtlX3BhZGRpbmdfZm10X2ViYiA6IHR5cGUgeCB5IC5cbiAgICAoeCwgeSkgcGFkZGluZyAtPiAoXywgXywgXywgXywgXywgXykgZm10IC0+XG4gICAgICAoXywgXywgXywgXywgXykgcGFkZGluZ19mbXRfZWJiID1cbmZ1biBwYWQgZm10IC0+IG1hdGNoIHBhZCB3aXRoXG4gIHwgTm9fcGFkZGluZyAgICAgICAgIC0+IFBhZGRpbmdfZm10X0VCQiAoTm9fcGFkZGluZywgZm10KVxuICB8IExpdF9wYWRkaW5nIChzLCB3KSAtPiBQYWRkaW5nX2ZtdF9FQkIgKExpdF9wYWRkaW5nIChzLCB3KSwgZm10KVxuICB8IEFyZ19wYWRkaW5nIHMgICAgICAtPiBQYWRkaW5nX2ZtdF9FQkIgKEFyZ19wYWRkaW5nIHMsIGZtdClcblxuKCogQ3JlYXRlIGEgcHJlY2lzaW9uX2ZtdF9lYmIgZnJvbSBhIHByZWNpc2lvbiBhbmQgYSBmb3JtYXQuICopXG4oKiBDb3B5IHRoZSBwcmVjaXNpb24gdG8gZGlzam9pbiB0aGUgdHlwZSBwYXJhbWV0ZXJzIG9mIGFyZ3VtZW50IGFuZCByZXN1bHQuICopXG5sZXQgbWFrZV9wcmVjaXNpb25fZm10X2ViYiA6IHR5cGUgeCB5IC5cbiAgICAoeCwgeSkgcHJlY2lzaW9uIC0+IChfLCBfLCBfLCBfLCBfLCBfKSBmbXQgLT5cbiAgICAgIChfLCBfLCBfLCBfLCBfKSBwcmVjaXNpb25fZm10X2ViYiA9XG5mdW4gcHJlYyBmbXQgLT4gbWF0Y2ggcHJlYyB3aXRoXG4gIHwgTm9fcHJlY2lzaW9uICAgIC0+IFByZWNpc2lvbl9mbXRfRUJCIChOb19wcmVjaXNpb24sIGZtdClcbiAgfCBMaXRfcHJlY2lzaW9uIHAgLT4gUHJlY2lzaW9uX2ZtdF9FQkIgKExpdF9wcmVjaXNpb24gcCwgZm10KVxuICB8IEFyZ19wcmVjaXNpb24gICAtPiBQcmVjaXNpb25fZm10X0VCQiAoQXJnX3ByZWNpc2lvbiwgZm10KVxuXG4oKiBDcmVhdGUgYSBwYWRwcmVjX2ZtdF9lYmIgZnJvbSBhIHBhZGRpbmcsIGEgcHJlY2lzaW9uIGFuZCBhIGZvcm1hdC4gKilcbigqIENvcHkgdGhlIHBhZGRpbmcgYW5kIHRoZSBwcmVjaXNpb24gdG8gZGlzam9pbiB0eXBlIHBhcmFtZXRlcnMgb2YgYXJndW1lbnRzXG4gICBhbmQgcmVzdWx0LiAqKVxubGV0IG1ha2VfcGFkcHJlY19mbXRfZWJiIDogdHlwZSB4IHkgeiB0IC5cbiAgICAoeCwgeSkgcGFkZGluZyAtPiAoeiwgdCkgcHJlY2lzaW9uIC0+XG4gICAgKF8sIF8sIF8sIF8sIF8sIF8pIGZtdCAtPlxuICAgIChfLCBfLCBfLCBfLCBfKSBwYWRwcmVjX2ZtdF9lYmIgPVxuZnVuIHBhZCBwcmVjIGZtdCAtPlxuICBsZXQgUHJlY2lzaW9uX2ZtdF9FQkIgKHByZWMsIGZtdCcpID0gbWFrZV9wcmVjaXNpb25fZm10X2ViYiBwcmVjIGZtdCBpblxuICBtYXRjaCBwYWQgd2l0aFxuICB8IE5vX3BhZGRpbmcgICAgICAgICAtPiBQYWRwcmVjX2ZtdF9FQkIgKE5vX3BhZGRpbmcsIHByZWMsIGZtdCcpXG4gIHwgTGl0X3BhZGRpbmcgKHMsIHcpIC0+IFBhZHByZWNfZm10X0VCQiAoTGl0X3BhZGRpbmcgKHMsIHcpLCBwcmVjLCBmbXQnKVxuICB8IEFyZ19wYWRkaW5nIHMgICAgICAtPiBQYWRwcmVjX2ZtdF9FQkIgKEFyZ19wYWRkaW5nIHMsIHByZWMsIGZtdCcpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdCBwYXJzaW5nICopXG5cbigqIFBhcnNlIGEgc3RyaW5nIHJlcHJlc2VudGluZyBhIGZvcm1hdCBhbmQgY3JlYXRlIGEgZm10X2ViYi4gKilcbigqIFJhaXNlIFtGYWlsdXJlXSBpbiBjYXNlIG9mIGludmFsaWQgZm9ybWF0LiAqKVxubGV0IGZtdF9lYmJfb2Zfc3RyaW5nID9sZWdhY3lfYmVoYXZpb3Igc3RyID1cbiAgKCogUGFyYW1ldGVycyBuYW1pbmcgY29udmVudGlvbjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gbGl0X3N0YXJ0OiBzdGFydCBvZiB0aGUgbGl0ZXJhbCBzZXF1ZW5jZS4gICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBzdHJfaW5kOiBjdXJyZW50IGluZGV4IGluIHRoZSBzdHJpbmcuICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIGVuZF9pbmQ6IGVuZCBvZiB0aGUgY3VycmVudCAoc3ViLSlmb3JtYXQuICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gcGN0X2luZDogaW5kZXggb2YgdGhlICclJyBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAgICAgICopXG4gICgqICAgLSB6ZXJvOiAgaXMgdGhlICcwJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIG1pbnVzOiBpcyB0aGUgJy0nIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gcGx1czogIGlzIHRoZSAnKycgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBoYXNoOiAgaXMgdGhlICcjJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIHNwYWNlOiBpcyB0aGUgJyAnIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gaWduOiAgIGlzIHRoZSAnXycgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBwYWQ6IHBhZGRpbmcgb2YgdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIHByZWM6IHByZWNpc2lvbiBvZiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gc3ltYjogY2hhciByZXByZXNlbnRpbmcgdGhlIGNvbnZlcnNpb24gKCdjJywgJ3MnLCAnZCcsIC4uLikuICopXG4gICgqICAgLSBjaGFyX3NldDogc2V0IG9mIGNoYXJhY3RlcnMgYXMgYml0bWFwIChzZWUgc2NhbmYgJVsuLi5dKS4gICAgKilcblxuICBsZXQgbGVnYWN5X2JlaGF2aW9yID0gbWF0Y2ggbGVnYWN5X2JlaGF2aW9yIHdpdGhcbiAgICB8IFNvbWUgZmxhZyAtPiBmbGFnXG4gICAgfCBOb25lIC0+IHRydWVcbiAgKCogIFdoZW4gdGhpcyBmbGFnIGlzIGVuYWJsZWQsIHRoZSBmb3JtYXQgcGFyc2VyIHRyaWVzIHRvIGJlaGF2ZSBhc1xuICAgICAgdGhlIDw0LjAyIGltcGxlbWVudGF0aW9ucywgaW4gcGFydGljdWxhciBpdCBpZ25vcmVzIG1vc3QgYmVuaW5lXG4gICAgICBub25zZW5zaWNhbCBmb3JtYXQuIFdoZW4gdGhlIGZsYWcgaXMgZGlzYWJsZWQsIGl0IHdpbGwgcmVqZWN0IGFueVxuICAgICAgZm9ybWF0IHRoYXQgaXMgbm90IGFjY2VwdGVkIGJ5IHRoZSBzcGVjaWZpY2F0aW9uLlxuXG4gICAgICBBIHR5cGljYWwgZXhhbXBsZSB3b3VsZCBiZSBcIiUrIGRcIjogc3BlY2lmeWluZyBib3RoICcrJyAoaWYgdGhlXG4gICAgICBudW1iZXIgaXMgcG9zaXRpdmUsIHBhZCB3aXRoIGEgJysnIHRvIGdldCB0aGUgc2FtZSB3aWR0aCBhc1xuICAgICAgbmVnYXRpdmUgbnVtYmVycykgYW5kICcgJyAoaWYgdGhlIG51bWJlciBpcyBwb3NpdGl2ZSwgcGFkIHdpdGhcbiAgICAgIGEgc3BhY2UpIGRvZXMgbm90IG1ha2Ugc2Vuc2UsIGJ1dCB0aGUgbGVnYWN5ICg8IDQuMDIpXG4gICAgICBpbXBsZW1lbnRhdGlvbiB3YXMgaGFwcHkgdG8ganVzdCBpZ25vcmUgdGhlIHNwYWNlLlxuICAqKVxuICBpblxuXG4gICgqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgZnJpZW5kbHkgZXJyb3IgbWVzc2FnZS4gKilcbiAgbGV0IGludmFsaWRfZm9ybWF0X21lc3NhZ2Ugc3RyX2luZCBtc2cgPVxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsICVzXCJcbiAgICAgIHN0ciBzdHJfaW5kIG1zZ1xuICBpblxuXG4gICgqIFVzZWQgd2hlbiB0aGUgZW5kIG9mIHRoZSBmb3JtYXQgKG9yIHRoZSBjdXJyZW50IHN1Yi1mb3JtYXQpIHdhcyBlbmNvdW50ZXJlZFxuICAgICAgdW5leHBlY3RlZGx5LiAqKVxuICBsZXQgdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQgPVxuICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2UgZW5kX2luZFxuICAgICAgXCJ1bmV4cGVjdGVkIGVuZCBvZiBmb3JtYXRcIlxuICBpblxuXG4gICgqIFVzZWQgZm9yICUwYzogbm8gb3RoZXIgd2lkdGhzIGFyZSBpbXBsZW1lbnRlZCAqKVxuICBsZXQgaW52YWxpZF9ub25udWxsX2NoYXJfd2lkdGggc3RyX2luZCA9XG4gICAgaW52YWxpZF9mb3JtYXRfbWVzc2FnZSBzdHJfaW5kXG4gICAgICBcIm5vbi16ZXJvIHdpZHRocyBhcmUgdW5zdXBwb3J0ZWQgZm9yICVjIGNvbnZlcnNpb25zXCJcbiAgaW5cbiAgKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBmcmllbmRseSBlcnJvciBtZXNzYWdlIGFib3V0IGFuIG9wdGlvbiBkZXBlbmRlbmN5XG4gICAgIHByb2JsZW0uICopXG4gIGxldCBpbnZhbGlkX2Zvcm1hdF93aXRob3V0IHN0cl9pbmQgYyBzID1cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCAnJWMnIHdpdGhvdXQgJXNcIlxuICAgICAgc3RyIHN0cl9pbmQgYyBzXG4gIGluXG5cbiAgKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBmcmllbmRseSBlcnJvciBtZXNzYWdlIGFib3V0IGFuIHVuZXhwZWN0ZWRcbiAgICAgY2hhcmFjdGVyLiAqKVxuICBsZXQgZXhwZWN0ZWRfY2hhcmFjdGVyIHN0cl9pbmQgZXhwZWN0ZWQgcmVhZCA9XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCAlcyBleHBlY3RlZCwgcmVhZCAlQ1wiXG4gICAgICBzdHIgc3RyX2luZCBleHBlY3RlZCByZWFkXG4gIGluXG5cbiAgKCogUGFyc2UgdGhlIHN0cmluZyBmcm9tIGJlZ19pbmQgKGluY2x1ZGVkKSB0byBlbmRfaW5kIChleGNsdWRlZCkuICopXG4gIGxldCByZWMgcGFyc2UgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gYmVnX2luZCBlbmRfaW5kIC0+IHBhcnNlX2xpdGVyYWwgYmVnX2luZCBiZWdfaW5kIGVuZF9pbmRcblxuICAoKiBSZWFkIGxpdGVyYWwgY2hhcmFjdGVycyB1cCB0byAnJScgb3IgJ0AnIHNwZWNpYWwgY2hhcmFjdGVycy4gKilcbiAgYW5kIHBhcnNlX2xpdGVyYWwgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIGxpdF9zdGFydCBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIGFkZF9saXRlcmFsIGxpdF9zdGFydCBzdHJfaW5kIEVuZF9vZl9mb3JtYXQgZWxzZVxuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICclJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlX2Zvcm1hdCBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgICAgYWRkX2xpdGVyYWwgbGl0X3N0YXJ0IHN0cl9pbmQgZm10X3Jlc3RcbiAgICAgIHwgJ0AnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2VfYWZ0ZXJfYXQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIGFkZF9saXRlcmFsIGxpdF9zdGFydCBzdHJfaW5kIGZtdF9yZXN0XG4gICAgICB8IF8gLT5cbiAgICAgICAgcGFyc2VfbGl0ZXJhbCBsaXRfc3RhcnQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG5cbiAgKCogUGFyc2UgYSBmb3JtYXQgYWZ0ZXIgJyUnICopXG4gIGFuZCBwYXJzZV9mb3JtYXQgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBlbmRfaW5kIC0+IHBhcnNlX2lnbiBwY3RfaW5kIChwY3RfaW5kICsgMSkgZW5kX2luZFxuXG4gIGFuZCBwYXJzZV9pZ24gOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ18nIC0+IHBhcnNlX2ZsYWdzIHBjdF9pbmQgKHN0cl9pbmQrMSkgZW5kX2luZCB0cnVlXG4gICAgICB8IF8gLT4gcGFyc2VfZmxhZ3MgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgZmFsc2VcblxuICBhbmQgcGFyc2VfZmxhZ3MgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmJcbiAgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgaWduIC0+XG4gICAgbGV0IHplcm8gPSByZWYgZmFsc2UgYW5kIG1pbnVzID0gcmVmIGZhbHNlXG4gICAgYW5kIHBsdXMgPSByZWYgZmFsc2UgYW5kIHNwYWNlID0gcmVmIGZhbHNlXG4gICAgYW5kIGhhc2ggPSByZWYgZmFsc2UgaW5cbiAgICBsZXQgc2V0X2ZsYWcgc3RyX2luZCBmbGFnID1cbiAgICAgICgqIGluIGxlZ2FjeSBtb2RlLCBkdXBsaWNhdGUgZmxhZ3MgYXJlIGFjY2VwdGVkICopXG4gICAgICBpZiAhZmxhZyAmJiBub3QgbGVnYWN5X2JlaGF2aW9yIHRoZW5cbiAgICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsIGR1cGxpY2F0ZSBmbGFnICVDXCJcbiAgICAgICAgICBzdHIgc3RyX2luZCBzdHIuW3N0cl9pbmRdO1xuICAgICAgZmxhZyA6PSB0cnVlO1xuICAgIGluXG4gICAgbGV0IHJlYyByZWFkX2ZsYWdzIHN0cl9pbmQgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIGJlZ2luIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnMCcgLT4gc2V0X2ZsYWcgc3RyX2luZCB6ZXJvOyAgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8ICctJyAtPiBzZXRfZmxhZyBzdHJfaW5kIG1pbnVzOyByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgJysnIC0+IHNldF9mbGFnIHN0cl9pbmQgcGx1czsgIHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCAnIycgLT4gc2V0X2ZsYWcgc3RyX2luZCBoYXNoOyByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgJyAnIC0+IHNldF9mbGFnIHN0cl9pbmQgc3BhY2U7IHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCBfIC0+XG4gICAgICAgIHBhcnNlX3BhZGRpbmcgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmRcbiAgICAgICAgICAhemVybyAhbWludXMgIXBsdXMgIWhhc2ggIXNwYWNlIGlnblxuICAgICAgZW5kXG4gICAgaW5cbiAgICByZWFkX2ZsYWdzIHN0cl9pbmRcblxuICAoKiBUcnkgdG8gcmVhZCBhIGRpZ2l0YWwgb3IgYSAnKicgcGFkZGluZy4gKilcbiAgYW5kIHBhcnNlX3BhZGRpbmcgOiB0eXBlIGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPlxuICAgICAgICAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCB6ZXJvIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ24gLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIGxldCBwYWR0eSA9IG1hdGNoIHplcm8sIG1pbnVzIHdpdGhcbiAgICAgIHwgZmFsc2UsIGZhbHNlIC0+IFJpZ2h0XG4gICAgICB8IGZhbHNlLCB0cnVlICAtPiBMZWZ0XG4gICAgICB8ICB0cnVlLCBmYWxzZSAtPiBaZXJvc1xuICAgICAgfCAgdHJ1ZSwgdHJ1ZSAgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gTGVmdFxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnLScgXCIwXCIgaW5cbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgLT5cbiAgICAgIGxldCBuZXdfaW5kLCB3aWR0aCA9IHBhcnNlX3Bvc2l0aXZlIHN0cl9pbmQgZW5kX2luZCAwIGluXG4gICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgbmV3X2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgKExpdF9wYWRkaW5nIChwYWR0eSwgd2lkdGgpKVxuICAgIHwgJyonIC0+XG4gICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZVxuICAgICAgICBpZ24gKEFyZ19wYWRkaW5nIHBhZHR5KVxuICAgIHwgXyAtPlxuICAgICAgYmVnaW4gbWF0Y2ggcGFkdHkgd2l0aFxuICAgICAgfCBMZWZ0ICAtPlxuICAgICAgICBpZiBub3QgbGVnYWN5X2JlaGF2aW9yIHRoZW5cbiAgICAgICAgICBpbnZhbGlkX2Zvcm1hdF93aXRob3V0IChzdHJfaW5kIC0gMSkgJy0nIFwicGFkZGluZ1wiO1xuICAgICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgICBOb19wYWRkaW5nXG4gICAgICB8IFplcm9zIC0+XG4gICAgICAgICAoKiBhICcwJyBwYWRkaW5nIGluZGljYXRpb24gbm90IGZvbGxvd2VkIGJ5IGFueXRoaW5nIHNob3VsZFxuICAgICAgICAgICBiZSBpbnRlcnByZXRlZCBhcyBhIFJpZ2h0IHBhZGRpbmcgb2Ygd2lkdGggMC4gVGhpcyBpcyB1c2VkXG4gICAgICAgICAgIGJ5IHNjYW5uaW5nIGNvbnZlcnNpb25zICUwcyBhbmQgJTBjICopXG4gICAgICAgIHBhcnNlX2FmdGVyX3BhZGRpbmcgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAgIChMaXRfcGFkZGluZyAoUmlnaHQsIDApKVxuICAgICAgfCBSaWdodCAtPlxuICAgICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgICBOb19wYWRkaW5nXG4gICAgICBlbmRcblxuICAoKiBJcyBwcmVjaXNpb24gZGVmaW5lZD8gKilcbiAgYW5kIHBhcnNlX2FmdGVyX3BhZGRpbmcgOiB0eXBlIHggZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPlxuICAgICAgICAoeCwgXykgcGFkZGluZyAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnLicgLT5cbiAgICAgIHBhcnNlX3ByZWNpc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgIHBhZFxuICAgIHwgc3ltYiAtPlxuICAgICAgcGFyc2VfY29udmVyc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZFxuICAgICAgICBOb19wcmVjaXNpb24gcGFkIHN5bWJcblxuICAoKiBSZWFkIHRoZSBkaWdpdGFsIG9yICcqJyBwcmVjaXNpb24uICopXG4gIGFuZCBwYXJzZV9wcmVjaXNpb24gOiB0eXBlIHggZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPlxuICAgICAgICAoeCwgXykgcGFkZGluZyAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbGV0IHBhcnNlX2xpdGVyYWwgbWludXMgc3RyX2luZCA9XG4gICAgICBsZXQgbmV3X2luZCwgcHJlYyA9IHBhcnNlX3Bvc2l0aXZlIHN0cl9pbmQgZW5kX2luZCAwIGluXG4gICAgICBwYXJzZV9hZnRlcl9wcmVjaXNpb24gcGN0X2luZCBuZXdfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICBwYWQgKExpdF9wcmVjaXNpb24gcHJlYykgaW5cbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgLT4gcGFyc2VfbGl0ZXJhbCBtaW51cyBzdHJfaW5kXG4gICAgfCAoJysnIHwgJy0nKSBhcyBzeW1iIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+XG4gICAgICAoKiBMZWdhY3kgbW9kZSB3b3VsZCBhY2NlcHQgYW5kIGlnbm9yZSAnKycgb3IgJy0nIGJlZm9yZSB0aGVcbiAgICAgICAgIGludGVnZXIgZGVzY3JpYmluZyB0aGUgZGVzaXJlZCBwcmVjaXNpb247IG5vdGUgdGhhdCB0aGlzXG4gICAgICAgICBjYW5ub3QgaGFwcGVuIGZvciBwYWRkaW5nIHdpZHRoLCBhcyAnKycgYW5kICctJyBhbHJlYWR5IGhhdmVcbiAgICAgICAgIGEgc2VtYW50aWNzIHRoZXJlLlxuXG4gICAgICAgICBUaGF0IHNhaWQsIHRoZSBpZGVhIChzdXBwb3J0ZWQgYnkgdGhpcyB0d2VhaykgdGhhdCB3aWR0aCBhbmRcbiAgICAgICAgIHByZWNpc2lvbiBsaXRlcmFscyBhcmUgXCJpbnRlZ2VyIGxpdGVyYWxzXCIgaW4gdGhlIE9DYW1sIHNlbnNlIGlzXG4gICAgICAgICBzdGlsbCBibGF0YW50bHkgd3JvbmcsIGFzIDEyM180NTYgb3IgMHhGRiBhcmUgcmVqZWN0ZWQuICopXG4gICAgICBwYXJzZV9saXRlcmFsIChtaW51cyB8fCBzeW1iID0gJy0nKSAoc3RyX2luZCArIDEpXG4gICAgfCAnKicgLT5cbiAgICAgIHBhcnNlX2FmdGVyX3ByZWNpc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2VcbiAgICAgICAgaWduIHBhZCBBcmdfcHJlY2lzaW9uXG4gICAgfCBfIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlblxuICAgICAgICAoKiBub3RlIHRoYXQgbGVnYWN5IGltcGxlbWVudGF0aW9uIGRpZCBub3QgaWdub3JlICcuJyB3aXRob3V0XG4gICAgICAgICAgIGEgbnVtYmVyIChhcyBpdCBkb2VzIGZvciBwYWRkaW5nIGluZGljYXRpb25zKSwgYnV0XG4gICAgICAgICAgIGludGVycHJldHMgaXQgYXMgJy4wJyAqKVxuICAgICAgICBwYXJzZV9hZnRlcl9wcmVjaXNpb24gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAgIHBhZCAoTGl0X3ByZWNpc2lvbiAwKVxuICAgICAgZWxzZVxuICAgICAgICBpbnZhbGlkX2Zvcm1hdF93aXRob3V0IChzdHJfaW5kIC0gMSkgJy4nIFwicHJlY2lzaW9uXCJcblxuICAoKiBUcnkgdG8gcmVhZCB0aGUgY29udmVyc2lvbi4gKilcbiAgYW5kIHBhcnNlX2FmdGVyX3ByZWNpc2lvbiA6IHR5cGUgeCB5IHogdCBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+XG4gICAgICAgICh4LCB5KSBwYWRkaW5nIC0+ICh6LCB0KSBwcmVjaXNpb24gLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWQgcHJlYyAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbGV0IHBhcnNlX2NvbnYgKHR5cGUgdSkgKHR5cGUgdikgKHBhZHByZWMgOiAodSwgdikgcGFkZGluZykgPVxuICAgICAgcGFyc2VfY29udmVyc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZFxuICAgICAgICBwcmVjIHBhZHByZWMgc3RyLltzdHJfaW5kXSBpblxuICAgICgqIGluIGxlZ2FjeSBtb2RlLCBzb21lIGZvcm1hdHMgKCVzIGFuZCAlUykgYWNjZXB0IGEgd2VpcmQgbWl4IG9mXG4gICAgICAgcGFkZGluZyBhbmQgcHJlY2lzaW9uLCB3aGljaCBpcyBtZXJnZWQgYXMgYSBzaW5nbGUgcGFkZGluZ1xuICAgICAgIGluZm9ybWF0aW9uLiBGb3IgZXhhbXBsZSwgaW4gJS4xMHMgdGhlIHByZWNpc2lvbiBpcyBpbXBsaWNpdGx5XG4gICAgICAgdW5kZXJzdG9vZCBhcyBwYWRkaW5nICUxMHMsIGJ1dCB0aGUgbGVmdC1wYWRkaW5nIGNvbXBvbmVudCBtYXlcbiAgICAgICBiZSBzcGVjaWZpZWQgZWl0aGVyIGFzIGEgbGVmdCBwYWRkaW5nIG9yIGEgbmVnYXRpdmUgcHJlY2lzaW9uOlxuICAgICAgICUtLjNzIGFuZCAlLi0zcyBhcmUgZXF1aXZhbGVudCB0byAlLTNzICopXG4gICAgbWF0Y2ggcGFkIHdpdGhcbiAgICB8IE5vX3BhZGRpbmcgLT4gKFxuICAgICAgbWF0Y2ggbWludXMsIHByZWMgd2l0aFxuICAgICAgICB8IF8sIE5vX3ByZWNpc2lvbiAtPiBwYXJzZV9jb252IE5vX3BhZGRpbmdcbiAgICAgICAgfCBmYWxzZSwgTGl0X3ByZWNpc2lvbiBuIC0+IHBhcnNlX2NvbnYgKExpdF9wYWRkaW5nIChSaWdodCwgbikpXG4gICAgICAgIHwgdHJ1ZSwgTGl0X3ByZWNpc2lvbiBuIC0+IHBhcnNlX2NvbnYgKExpdF9wYWRkaW5nIChMZWZ0LCBuKSlcbiAgICAgICAgfCBmYWxzZSwgQXJnX3ByZWNpc2lvbiAtPiBwYXJzZV9jb252IChBcmdfcGFkZGluZyBSaWdodClcbiAgICAgICAgfCB0cnVlLCBBcmdfcHJlY2lzaW9uIC0+IHBhcnNlX2NvbnYgKEFyZ19wYWRkaW5nIExlZnQpXG4gICAgKVxuICAgIHwgcGFkIC0+IHBhcnNlX2NvbnYgcGFkXG5cbiAgKCogQ2FzZSBhbmFseXNpcyBvbiBjb252ZXJzaW9uLiAqKVxuICBhbmQgcGFyc2VfY29udmVyc2lvbiA6IHR5cGUgeCB5IHogdCB1IHYgZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gKHgsIHkpIHBhZGRpbmcgLT5cbiAgICAgICAgKHosIHQpIHByZWNpc2lvbiAtPiAodSwgdikgcGFkZGluZyAtPiBjaGFyIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkIHByZWMgcGFkcHJlYyBzeW1iIC0+XG4gICAgKCogRmxhZ3MgdXNlZCB0byBjaGVjayBvcHRpb24gdXNhZ2VzL2NvbXBhdGliaWxpdGllcy4gKilcbiAgICBsZXQgcGx1c191c2VkICA9IHJlZiBmYWxzZSBhbmQgaGFzaF91c2VkID0gcmVmIGZhbHNlXG4gICAgYW5kIHNwYWNlX3VzZWQgPSByZWYgZmFsc2UgYW5kIGlnbl91c2VkICAgPSByZWYgZmFsc2VcbiAgICBhbmQgcGFkX3VzZWQgICA9IHJlZiBmYWxzZSBhbmQgcHJlY191c2VkICA9IHJlZiBmYWxzZSBpblxuXG4gICAgKCogQWNjZXNzIHRvIG9wdGlvbnMsIHVwZGF0ZSBmbGFncy4gKilcbiAgICBsZXQgZ2V0X3BsdXMgICAgKCkgPSBwbHVzX3VzZWQgIDo9IHRydWU7IHBsdXNcbiAgICBhbmQgZ2V0X2hhc2ggICAoKSA9IGhhc2hfdXNlZCA6PSB0cnVlOyBoYXNoXG4gICAgYW5kIGdldF9zcGFjZSAgICgpID0gc3BhY2VfdXNlZCA6PSB0cnVlOyBzcGFjZVxuICAgIGFuZCBnZXRfaWduICAgICAoKSA9IGlnbl91c2VkICAgOj0gdHJ1ZTsgaWduXG4gICAgYW5kIGdldF9wYWQgICAgICgpID0gcGFkX3VzZWQgICA6PSB0cnVlOyBwYWRcbiAgICBhbmQgZ2V0X3ByZWMgICAgKCkgPSBwcmVjX3VzZWQgIDo9IHRydWU7IHByZWNcbiAgICBhbmQgZ2V0X3BhZHByZWMgKCkgPSBwYWRfdXNlZCAgIDo9IHRydWU7IHBhZHByZWMgaW5cblxuICAgIGxldCBnZXRfaW50X3BhZCAoKSA6ICh4LHkpIHBhZGRpbmcgPVxuICAgICAgKCogJTUuM2QgaXMgYWNjZXB0ZWQgYW5kIG1lYW5pbmdmdWw6IHBhZCB0byBsZW5ndGggNSB3aXRoXG4gICAgICAgICBzcGFjZXMsIGJ1dCBmaXJzdCBwYWQgd2l0aCB6ZXJvcyB1cHRvIGxlbmd0aCAzICgwLXBhZGRpbmdcbiAgICAgICAgIGlzIHRoZSBpbnRlcnByZXRhdGlvbiBvZiBcInByZWNpc2lvblwiIGZvciBpbnRlZ2VyIGZvcm1hdHMpLlxuXG4gICAgICAgICAlMDUuM2QgaXMgcmVkdW5kYW50OiBwYWQgdG8gbGVuZ3RoIDUgKndpdGggemVyb3MqLCBidXRcbiAgICAgICAgIGZpcnN0IHBhZCB3aXRoIHplcm9zLi4uIFRvIGFkZCBpbnN1bHQgdG8gdGhlIGluanVyeSwgdGhlXG4gICAgICAgICBsZWdhY3kgaW1wbGVtZW50YXRpb24gaWdub3JlcyB0aGUgMC1wYWRkaW5nIGluZGljYXRpb24gYW5kXG4gICAgICAgICBkb2VzIHRoZSA1IHBhZGRpbmcgd2l0aCBzcGFjZXMgaW5zdGVhZC4gV2UgcmV1c2UgdGhpc1xuICAgICAgICAgaW50ZXJwcmV0YXRpb24gZm9yIGNvbXBhdGliaWxpdHksIGJ1dCBzdGF0aWNhbGx5IHJlamVjdCB0aGlzXG4gICAgICAgICBmb3JtYXQgd2hlbiB0aGUgbGVnYWN5IG1vZGUgaXMgZGlzYWJsZWQsIHRvIHByb3RlY3Qgc3RyaWN0XG4gICAgICAgICB1c2VycyBmcm9tIHRoaXMgY29ybmVyIGNhc2UuICopXG4gICAgICAgbWF0Y2ggZ2V0X3BhZCAoKSwgZ2V0X3ByZWMgKCkgd2l0aFxuICAgICAgICAgfCBwYWQsIE5vX3ByZWNpc2lvbiAtPiBwYWRcbiAgICAgICAgIHwgTm9fcGFkZGluZywgXyAgICAgLT4gTm9fcGFkZGluZ1xuICAgICAgICAgfCBMaXRfcGFkZGluZyAoWmVyb3MsIG4pLCBfIC0+XG4gICAgICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIExpdF9wYWRkaW5nIChSaWdodCwgbilcbiAgICAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJzAnIFwicHJlY2lzaW9uXCJcbiAgICAgICAgIHwgQXJnX3BhZGRpbmcgWmVyb3MsIF8gLT5cbiAgICAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gQXJnX3BhZGRpbmcgUmlnaHRcbiAgICAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJzAnIFwicHJlY2lzaW9uXCJcbiAgICAgICAgIHwgTGl0X3BhZGRpbmcgXyBhcyBwYWQsIF8gLT4gcGFkXG4gICAgICAgICB8IEFyZ19wYWRkaW5nIF8gYXMgcGFkLCBfIC0+IHBhZCBpblxuXG4gICAgKCogQ2hlY2sgdGhhdCBwYWR0eSA8PiBaZXJvcy4gKilcbiAgICBsZXQgY2hlY2tfbm9fMCBzeW1iICh0eXBlIGEgYikgKHBhZCA6IChhLCBiKSBwYWRkaW5nKSA6IChhLGIpIHBhZGRpbmcgPVxuICAgICAgbWF0Y2ggcGFkIHdpdGhcbiAgICAgIHwgTm9fcGFkZGluZyAtPiBwYWRcbiAgICAgIHwgTGl0X3BhZGRpbmcgKChMZWZ0IHwgUmlnaHQpLCBfKSAtPiBwYWRcbiAgICAgIHwgQXJnX3BhZGRpbmcgKExlZnQgfCBSaWdodCkgLT4gcGFkXG4gICAgICB8IExpdF9wYWRkaW5nIChaZXJvcywgd2lkdGgpIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIExpdF9wYWRkaW5nIChSaWdodCwgd2lkdGgpXG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCIwXCJcbiAgICAgIHwgQXJnX3BhZGRpbmcgWmVyb3MgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gQXJnX3BhZGRpbmcgUmlnaHRcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIjBcIlxuICAgIGluXG5cbiAgICAoKiBHZXQgcGFkZGluZyBhcyBhIHBhZF9vcHRpb24gKHNlZSBcIiVfXCIsIFwiJXtcIiwgXCIlKFwiIGFuZCBcIiVbXCIpLlxuICAgICAgIChubyBuZWVkIGZvciBsZWdhY3kgbW9kZSB0d2Vha2luZywgdGhvc2Ugd2VyZSByZWplY3RlZCBieSB0aGVcbiAgICAgICBsZWdhY3kgcGFyc2VyIGFzIHdlbGwpICopXG4gICAgbGV0IG9wdF9vZl9wYWQgYyAodHlwZSBhKSAodHlwZSBiKSAocGFkIDogKGEsIGIpIHBhZGRpbmcpID0gbWF0Y2ggcGFkIHdpdGhcbiAgICAgIHwgTm9fcGFkZGluZyAtPiBOb25lXG4gICAgICB8IExpdF9wYWRkaW5nIChSaWdodCwgd2lkdGgpIC0+IFNvbWUgd2lkdGhcbiAgICAgIHwgTGl0X3BhZGRpbmcgKFplcm9zLCB3aWR0aCkgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gU29tZSB3aWR0aFxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBjIFwiJzAnXCJcbiAgICAgIHwgTGl0X3BhZGRpbmcgKExlZnQsIHdpZHRoKSAtPlxuICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBTb21lIHdpZHRoXG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIGMgXCInLSdcIlxuICAgICAgfCBBcmdfcGFkZGluZyBfIC0+IGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBjIFwiJyonXCJcbiAgICBpblxuICAgIGxldCBnZXRfcGFkX29wdCBjID0gb3B0X29mX3BhZCBjIChnZXRfcGFkICgpKSBpblxuICAgIGxldCBnZXRfcGFkcHJlY19vcHQgYyA9IG9wdF9vZl9wYWQgYyAoZ2V0X3BhZHByZWMgKCkpIGluXG5cbiAgICAoKiBHZXQgcHJlY2lzaW9uIGFzIGEgcHJlY19vcHRpb24gKHNlZSBcIiVfZlwiKS5cbiAgICAgICAobm8gbmVlZCBmb3IgbGVnYWN5IG1vZGUgdHdlYWtpbmcsIHRob3NlIHdlcmUgcmVqZWN0ZWQgYnkgdGhlXG4gICAgICAgbGVnYWN5IHBhcnNlciBhcyB3ZWxsKSAqKVxuICAgIGxldCBnZXRfcHJlY19vcHQgKCkgPSBtYXRjaCBnZXRfcHJlYyAoKSB3aXRoXG4gICAgICB8IE5vX3ByZWNpc2lvbiAgICAgICAtPiBOb25lXG4gICAgICB8IExpdF9wcmVjaXNpb24gbmRlYyAtPiBTb21lIG5kZWNcbiAgICAgIHwgQXJnX3ByZWNpc2lvbiAgICAgIC0+IGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnXycgXCInKidcIlxuICAgIGluXG5cbiAgICBsZXQgZm10X3Jlc3VsdCA9IG1hdGNoIHN5bWIgd2l0aFxuICAgIHwgJywnIC0+XG4gICAgICBwYXJzZSBzdHJfaW5kIGVuZF9pbmRcbiAgICB8ICdjJyAtPlxuICAgICAgbGV0IGNoYXJfZm9ybWF0IGZtdF9yZXN0ID0gKCogJWMgKilcbiAgICAgICAgaWYgZ2V0X2lnbiAoKVxuICAgICAgICB0aGVuIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfY2hhciwgZm10X3Jlc3QpKVxuICAgICAgICBlbHNlIEZtdF9FQkIgKENoYXIgZm10X3Jlc3QpXG4gICAgICBpblxuICAgICAgbGV0IHNjYW5fZm9ybWF0IGZtdF9yZXN0ID0gKCogJTBjICopXG4gICAgICAgIGlmIGdldF9pZ24gKClcbiAgICAgICAgdGhlbiBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX3NjYW5fbmV4dF9jaGFyLCBmbXRfcmVzdCkpXG4gICAgICAgIGVsc2UgRm10X0VCQiAoU2Nhbl9uZXh0X2NoYXIgZm10X3Jlc3QpXG4gICAgICBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGJlZ2luIG1hdGNoIGdldF9wYWRfb3B0ICdjJyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBjaGFyX2Zvcm1hdCBmbXRfcmVzdFxuICAgICAgICB8IFNvbWUgMCAtPiBzY2FuX2Zvcm1hdCBmbXRfcmVzdFxuICAgICAgICB8IFNvbWUgX24gLT5cbiAgICAgICAgICAgaWYgbm90IGxlZ2FjeV9iZWhhdmlvclxuICAgICAgICAgICB0aGVuIGludmFsaWRfbm9ubnVsbF9jaGFyX3dpZHRoIHN0cl9pbmRcbiAgICAgICAgICAgZWxzZSAoKiBsZWdhY3kgaWdub3JlcyAlYyB3aWR0aHMgKikgY2hhcl9mb3JtYXQgZm10X3Jlc3RcbiAgICAgIGVuZFxuICAgIHwgJ0MnIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfY2FtbF9jaGFyLGZtdF9yZXN0KSlcbiAgICAgIGVsc2UgRm10X0VCQiAoQ2FtbF9jaGFyIGZtdF9yZXN0KVxuICAgIHwgJ3MnIC0+XG4gICAgICBsZXQgcGFkID0gY2hlY2tfbm9fMCBzeW1iIChnZXRfcGFkcHJlYyAoKSkgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX3N0cmluZyAoZ2V0X3BhZHByZWNfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkZGluZ19mbXRfRUJCIChwYWQnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZGRpbmdfZm10X2ViYiBwYWQgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoU3RyaW5nIChwYWQnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ1MnIC0+XG4gICAgICBsZXQgcGFkID0gY2hlY2tfbm9fMCBzeW1iIChnZXRfcGFkcHJlYyAoKSkgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2NhbWxfc3RyaW5nIChnZXRfcGFkcHJlY19vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRkaW5nX2ZtdF9FQkIgKHBhZCcsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkZGluZ19mbXRfZWJiIHBhZCBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChDYW1sX3N0cmluZyAocGFkJywgZm10X3Jlc3QnKSlcbiAgICB8ICdkJyB8ICdpJyB8ICd4JyB8ICdYJyB8ICdvJyB8ICd1JyAtPlxuICAgICAgbGV0IGljb252ID0gY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgKGdldF9wbHVzICgpKSAoZ2V0X2hhc2ggKCkpXG4gICAgICAgIChnZXRfc3BhY2UgKCkpIHN5bWIgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2ludCAoaWNvbnYsIGdldF9wYWRfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9pbnRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEludCAoaWNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ04nIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgbGV0IGNvdW50ZXIgPSBUb2tlbl9jb3VudGVyIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgY291bnRlciBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdF9yZXN0KSlcbiAgICB8ICdsJyB8ICduJyB8ICdMJyB3aGVuIHN0cl9pbmQ9ZW5kX2luZCB8fCBub3QgKGlzX2ludF9iYXNlIHN0ci5bc3RyX2luZF0pIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgbGV0IGNvdW50ZXIgPSBjb3VudGVyX29mX2NoYXIgc3ltYiBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIGNvdW50ZXIgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXRfcmVzdCkpXG4gICAgfCAnbCcgLT5cbiAgICAgIGxldCBpY29udiA9XG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCAoc3RyX2luZCArIDEpIChnZXRfcGx1cyAoKSkgKGdldF9oYXNoICgpKVxuICAgICAgICAgIChnZXRfc3BhY2UgKCkpIHN0ci5bc3RyX2luZF0gaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2ludDMyIChpY29udiwgZ2V0X3BhZF9vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X2ludF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoSW50MzIgKGljb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICduJyAtPlxuICAgICAgbGV0IGljb252ID1cbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIChzdHJfaW5kICsgMSkgKGdldF9wbHVzICgpKVxuICAgICAgICAgIChnZXRfaGFzaCAoKSkgKGdldF9zcGFjZSAoKSkgc3RyLltzdHJfaW5kXSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfbmF0aXZlaW50IChpY29udiwgZ2V0X3BhZF9vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X2ludF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoTmF0aXZlaW50IChpY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnTCcgLT5cbiAgICAgIGxldCBpY29udiA9XG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCAoc3RyX2luZCArIDEpIChnZXRfcGx1cyAoKSkgKGdldF9oYXNoICgpKVxuICAgICAgICAgIChnZXRfc3BhY2UgKCkpIHN0ci5bc3RyX2luZF0gaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2ludDY0IChpY29udiwgZ2V0X3BhZF9vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X2ludF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoSW50NjQgKGljb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICdmJyB8ICdlJyB8ICdFJyB8ICdnJyB8ICdHJyB8ICdGJyB8ICdoJyB8ICdIJyAtPlxuICAgICAgbGV0IGZjb252ID1cbiAgICAgICAgY29tcHV0ZV9mbG9hdF9jb252IHBjdF9pbmQgc3RyX2luZFxuICAgICAgICAgIChnZXRfcGx1cyAoKSkgKGdldF9oYXNoICgpKSAoZ2V0X3NwYWNlICgpKSBzeW1iIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9mbG9hdCAoZ2V0X3BhZF9vcHQgJ18nLCBnZXRfcHJlY19vcHQgKCkpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZHByZWNfZm10X0VCQiAocGFkJywgcHJlYycsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkcHJlY19mbXRfZWJiIChnZXRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEZsb2F0IChmY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnYicgfCAnQicgLT5cbiAgICAgIGxldCBwYWQgPSBjaGVja19ub18wIHN5bWIgKGdldF9wYWRwcmVjICgpKSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfYm9vbCAoZ2V0X3BhZHByZWNfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkZGluZ19mbXRfRUJCIChwYWQnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZGRpbmdfZm10X2ViYiBwYWQgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoQm9vbCAocGFkJywgZm10X3Jlc3QnKSlcbiAgICB8ICdhJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKEFscGhhIGZtdF9yZXN0KVxuICAgIHwgJ3QnIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoVGhldGEgZm10X3Jlc3QpXG4gICAgfCAncicgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW4gRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9yZWFkZXIsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2UgRm10X0VCQiAoUmVhZGVyIGZtdF9yZXN0KVxuICAgIHwgJyEnIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoRmx1c2ggZm10X3Jlc3QpXG4gICAgfCAoJyUnIHwgJ0AnKSBhcyBjIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoQ2hhcl9saXRlcmFsIChjLCBmbXRfcmVzdCkpXG4gICAgfCAneycgLT5cbiAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgc3RyX2luZCBlbmRfaW5kICd9JyBpblxuICAgICAgbGV0IEZtdF9FQkIgc3ViX2ZtdCA9IHBhcnNlIHN0cl9pbmQgc3ViX2VuZCBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3ViX2VuZCArIDIpIGVuZF9pbmQgaW5cbiAgICAgIGxldCBzdWJfZm10dHkgPSBmbXR0eV9vZl9mbXQgc3ViX2ZtdCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9mb3JtYXRfYXJnIChnZXRfcGFkX29wdCAnXycsIHN1Yl9mbXR0eSkgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChGb3JtYXRfYXJnIChnZXRfcGFkX29wdCAneycsIHN1Yl9mbXR0eSwgZm10X3Jlc3QpKVxuICAgIHwgJygnIC0+XG4gICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIHN0cl9pbmQgZW5kX2luZCAnKScgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGluXG4gICAgICBsZXQgRm10X0VCQiBzdWJfZm10ID0gcGFyc2Ugc3RyX2luZCBzdWJfZW5kIGluXG4gICAgICBsZXQgc3ViX2ZtdHR5ID0gZm10dHlfb2ZfZm10IHN1Yl9mbXQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfZm9ybWF0X3N1YnN0IChnZXRfcGFkX29wdCAnXycsIHN1Yl9mbXR0eSkgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChGb3JtYXRfc3Vic3QgKGdldF9wYWRfb3B0ICcoJywgc3ViX2ZtdHR5LCBmbXRfcmVzdCkpXG4gICAgfCAnWycgLT5cbiAgICAgIGxldCBuZXh0X2luZCwgY2hhcl9zZXQgPSBwYXJzZV9jaGFyX3NldCBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgbmV4dF9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9zY2FuX2NoYXJfc2V0IChnZXRfcGFkX29wdCAnXycsIGNoYXJfc2V0KSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKFNjYW5fY2hhcl9zZXQgKGdldF9wYWRfb3B0ICdbJywgY2hhcl9zZXQsIGZtdF9yZXN0KSlcbiAgICB8ICctJyB8ICcrJyB8ICcjJyB8ICcgJyB8ICdfJyAtPlxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCBcXFxuICAgICAgICAgZmxhZyAlQyBpcyBvbmx5IGFsbG93ZWQgYWZ0ZXIgdGhlICclJScsIGJlZm9yZSBwYWRkaW5nIGFuZCBwcmVjaXNpb25cIlxuICAgICAgICBzdHIgcGN0X2luZCBzeW1iXG4gICAgfCBfIC0+XG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsIFxcXG4gICAgICAgICBpbnZhbGlkIGNvbnZlcnNpb24gXFxcIiUlJWNcXFwiXCIgc3RyIChzdHJfaW5kIC0gMSkgc3ltYlxuICAgIGluXG4gICAgKCogQ2hlY2sgZm9yIHVudXNlZCBvcHRpb25zLCBhbmQgcmVqZWN0IHRoZW0gYXMgaW5jb21wYXRpYmxlLlxuXG4gICAgICAgU3VjaCBjaGVja3MgbmVlZCB0byBiZSBkaXNhYmxlZCBpbiBsZWdhY3kgbW9kZSwgYXMgdGhlIGxlZ2FjeVxuICAgICAgIHBhcnNlciBzaWxlbnRseSBpZ25vcmVkIGluY29tcGF0aWJsZSBmbGFncy4gKilcbiAgICBpZiBub3QgbGVnYWN5X2JlaGF2aW9yIHRoZW4gYmVnaW5cbiAgICBpZiBub3QgIXBsdXNfdXNlZCAmJiBwbHVzIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJysnXCI7XG4gICAgaWYgbm90ICFoYXNoX3VzZWQgJiYgaGFzaCB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicjJ1wiO1xuICAgIGlmIG5vdCAhc3BhY2VfdXNlZCAmJiBzcGFjZSB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicgJ1wiO1xuICAgIGlmIG5vdCAhcGFkX3VzZWQgICYmIFBhZGRpbmdfRUJCIHBhZCA8PiBQYWRkaW5nX0VCQiBOb19wYWRkaW5nIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiYHBhZGRpbmcnXCI7XG4gICAgaWYgbm90ICFwcmVjX3VzZWQgJiYgUHJlY2lzaW9uX0VCQiBwcmVjIDw+IFByZWNpc2lvbl9FQkIgTm9fcHJlY2lzaW9uIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAoaWYgaWduIHRoZW4gJ18nIGVsc2Ugc3ltYilcbiAgICAgICAgXCJgcHJlY2lzaW9uJ1wiO1xuICAgIGlmIGlnbiAmJiBwbHVzIHRoZW4gaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICdfJyBcIicrJ1wiO1xuICAgIGVuZDtcbiAgICAoKiB0aGlzIGxhc3QgdGVzdCBtdXN0IG5vdCBiZSBkaXNhYmxlZCBpbiBsZWdhY3kgbW9kZSxcbiAgICAgICBhcyBpZ25vcmluZyBpdCB3b3VsZCB0eXBpY2FsbHkgcmVzdWx0IGluIGEgZGlmZmVyZW50IHR5cGluZ1xuICAgICAgIHRoYW4gd2hhdCB0aGUgbGVnYWN5IHBhcnNlciB1c2VkICopXG4gICAgaWYgbm90ICFpZ25fdXNlZCAmJiBpZ24gdGhlblxuICAgICAgYmVnaW4gbWF0Y2ggc3ltYiB3aXRoXG4gICAgICAgICgqIGFyZ3VtZW50LWxlc3MgZm9ybWF0cyBjYW4gc2FmZWx5IGJlIGlnbm9yZWQgaW4gbGVnYWN5IG1vZGUgKilcbiAgICAgICAgfCAoJ0AnIHwgJyUnIHwgJyEnIHwgJywnKSB3aGVuIGxlZ2FjeV9iZWhhdmlvciAtPiAoKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIidfJ1wiXG4gICAgICBlbmQ7XG4gICAgZm10X3Jlc3VsdFxuXG4gICgqIFBhcnNlIGZvcm1hdHRpbmcgaW5mb3JtYXRpb24gKGFmdGVyICdAJykuICopXG4gIGFuZCBwYXJzZV9hZnRlcl9hdCA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIEZtdF9FQkIgKENoYXJfbGl0ZXJhbCAoJ0AnLCBFbmRfb2ZfZm9ybWF0KSlcbiAgICBlbHNlXG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ1snIC0+XG4gICAgICAgIHBhcnNlX3RhZyBmYWxzZSAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgJ10nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChDbG9zZV9ib3gsIGZtdF9yZXN0KSlcbiAgICAgIHwgJ3snIC0+XG4gICAgICAgIHBhcnNlX3RhZyB0cnVlIChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCAnfScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKENsb3NlX3RhZywgZm10X3Jlc3QpKVxuICAgICAgfCAnLCcgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEJyZWFrIChcIkAsXCIsIDAsIDApLCBmbXRfcmVzdCkpXG4gICAgICB8ICcgJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoQnJlYWsgKFwiQCBcIiwgMSwgMCksIGZtdF9yZXN0KSlcbiAgICAgIHwgJzsnIC0+XG4gICAgICAgIHBhcnNlX2dvb2RfYnJlYWsgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8ICc/JyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRkZsdXNoLCBmbXRfcmVzdCkpXG4gICAgICB8ICdcXG4nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChGb3JjZV9uZXdsaW5lLCBmbXRfcmVzdCkpXG4gICAgICB8ICcuJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRmx1c2hfbmV3bGluZSwgZm10X3Jlc3QpKVxuICAgICAgfCAnPCcgLT5cbiAgICAgICAgcGFyc2VfbWFnaWNfc2l6ZSAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgJ0AnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChFc2NhcGVkX2F0LCBmbXRfcmVzdCkpXG4gICAgICB8ICclJyB3aGVuIHN0cl9pbmQgKyAxIDwgZW5kX2luZCAmJiBzdHIuW3N0cl9pbmQgKyAxXSA9ICclJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMikgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRXNjYXBlZF9wZXJjZW50LCBmbXRfcmVzdCkpXG4gICAgICB8ICclJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChDaGFyX2xpdGVyYWwgKCdAJywgZm10X3Jlc3QpKVxuICAgICAgfCBjIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChTY2FuX2luZGljIGMsIGZtdF9yZXN0KSlcblxuICAoKiBUcnkgdG8gcmVhZCB0aGUgb3B0aW9uYWwgPG5hbWU+IGFmdGVyIFwiQHtcIiBvciBcIkBbXCIuICopXG4gIGFuZCBwYXJzZV90YWcgOiB0eXBlIGUgZiAuIGJvb2wgLT4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBpc19vcGVuX3RhZyBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICB0cnlcbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICc8JyAtPlxuICAgICAgICBsZXQgaW5kID0gU3RyaW5nLmluZGV4X2Zyb20gc3RyIChzdHJfaW5kICsgMSkgJz4nIGluXG4gICAgICAgIGlmIGluZCA+PSBlbmRfaW5kIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgICBsZXQgc3ViX3N0ciA9IFN0cmluZy5zdWIgc3RyIHN0cl9pbmQgKGluZCAtIHN0cl9pbmQgKyAxKSBpblxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChpbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIGxldCBGbXRfRUJCIHN1Yl9mbXQgPSBwYXJzZSBzdHJfaW5kIChpbmQgKyAxKSBpblxuICAgICAgICBsZXQgc3ViX2Zvcm1hdCA9IEZvcm1hdCAoc3ViX2ZtdCwgc3ViX3N0cikgaW5cbiAgICAgICAgbGV0IGZvcm1hdHRpbmcgPVxuICAgICAgICAgIGlmIGlzX29wZW5fdGFnIHRoZW4gT3Blbl90YWcgc3ViX2Zvcm1hdCBlbHNlIE9wZW5fYm94IHN1Yl9mb3JtYXQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19nZW4gKGZvcm1hdHRpbmcsIGZtdF9yZXN0KSlcbiAgICAgIHwgXyAtPlxuICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGxldCBzdWJfZm9ybWF0ID0gRm9ybWF0IChFbmRfb2ZfZm9ybWF0LCBcIlwiKSBpblxuICAgICAgbGV0IGZvcm1hdHRpbmcgPVxuICAgICAgICBpZiBpc19vcGVuX3RhZyB0aGVuIE9wZW5fdGFnIHN1Yl9mb3JtYXQgZWxzZSBPcGVuX2JveCBzdWJfZm9ybWF0IGluXG4gICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2dlbiAoZm9ybWF0dGluZywgZm10X3Jlc3QpKVxuXG4gICgqIFRyeSB0byByZWFkIHRoZSBvcHRpb25hbCA8d2lkdGggb2Zmc2V0PiBhZnRlciBcIkA7XCIuICopXG4gIGFuZCBwYXJzZV9nb29kX2JyZWFrIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIGxldCBuZXh0X2luZCwgZm9ybWF0dGluZ19saXQgPVxuICAgICAgdHJ5XG4gICAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHx8IHN0ci5bc3RyX2luZF0gPD4gJzwnIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgICBsZXQgc3RyX2luZF8xID0gcGFyc2Vfc3BhY2VzIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBtYXRjaCBzdHIuW3N0cl9pbmRfMV0gd2l0aFxuICAgICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT4gKFxuICAgICAgICAgIGxldCBzdHJfaW5kXzIsIHdpZHRoID0gcGFyc2VfaW50ZWdlciBzdHJfaW5kXzEgZW5kX2luZCBpblxuICAgICAgICAgICAgbGV0IHN0cl9pbmRfMyA9IHBhcnNlX3NwYWNlcyBzdHJfaW5kXzIgZW5kX2luZCBpblxuICAgICAgICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXzNdIHdpdGhcbiAgICAgICAgICAgICAgfCAnPicgLT5cbiAgICAgICAgICAgICAgICBsZXQgcyA9IFN0cmluZy5zdWIgc3RyIChzdHJfaW5kLTIpIChzdHJfaW5kXzMtc3RyX2luZCszKSBpblxuICAgICAgICAgICAgICAgIHN0cl9pbmRfMyArIDEsIEJyZWFrIChzLCB3aWR0aCwgMClcbiAgICAgICAgICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+XG4gICAgICAgICAgICAgICAgbGV0IHN0cl9pbmRfNCwgb2Zmc2V0ID0gcGFyc2VfaW50ZWdlciBzdHJfaW5kXzMgZW5kX2luZCBpblxuICAgICAgICAgICAgICAgIGxldCBzdHJfaW5kXzUgPSBwYXJzZV9zcGFjZXMgc3RyX2luZF80IGVuZF9pbmQgaW5cbiAgICAgICAgICAgICAgICBpZiBzdHIuW3N0cl9pbmRfNV0gPD4gJz4nIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgICAgICAgICAgIGxldCBzID0gU3RyaW5nLnN1YiBzdHIgKHN0cl9pbmQtMikgKHN0cl9pbmRfNS1zdHJfaW5kKzMpIGluXG4gICAgICAgICAgICAgICAgc3RyX2luZF81ICsgMSwgQnJlYWsgKHMsIHdpZHRoLCBvZmZzZXQpXG4gICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgKVxuICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB3aXRoIE5vdF9mb3VuZCB8IEZhaWx1cmUgXyAtPlxuICAgICAgICBzdHJfaW5kLCBCcmVhayAoXCJAO1wiLCAxLCAwKVxuICAgIGluXG4gICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBuZXh0X2luZCBlbmRfaW5kIGluXG4gICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKGZvcm1hdHRpbmdfbGl0LCBmbXRfcmVzdCkpXG5cbiAgKCogUGFyc2UgdGhlIHNpemUgaW4gYSA8bj4uICopXG4gIGFuZCBwYXJzZV9tYWdpY19zaXplIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIG1hdGNoXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHN0cl9pbmRfMSA9IHBhcnNlX3NwYWNlcyBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXzFdIHdpdGhcbiAgICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+XG4gICAgICAgICAgbGV0IHN0cl9pbmRfMiwgc2l6ZSA9IHBhcnNlX2ludGVnZXIgc3RyX2luZF8xIGVuZF9pbmQgaW5cbiAgICAgICAgICBsZXQgc3RyX2luZF8zID0gcGFyc2Vfc3BhY2VzIHN0cl9pbmRfMiBlbmRfaW5kIGluXG4gICAgICAgICAgaWYgc3RyLltzdHJfaW5kXzNdIDw+ICc+JyB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgICAgICBsZXQgcyA9IFN0cmluZy5zdWIgc3RyIChzdHJfaW5kIC0gMikgKHN0cl9pbmRfMyAtIHN0cl9pbmQgKyAzKSBpblxuICAgICAgICAgIFNvbWUgKHN0cl9pbmRfMyArIDEsIE1hZ2ljX3NpemUgKHMsIHNpemUpKVxuICAgICAgICB8IF8gLT4gTm9uZVxuICAgICAgd2l0aCBOb3RfZm91bmQgfCBGYWlsdXJlIF8gLT5cbiAgICAgICAgTm9uZVxuICAgIHdpdGhcbiAgICB8IFNvbWUgKG5leHRfaW5kLCBmb3JtYXR0aW5nX2xpdCkgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgbmV4dF9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKGZvcm1hdHRpbmdfbGl0LCBmbXRfcmVzdCkpXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKFNjYW5faW5kaWMgJzwnLCBmbXRfcmVzdCkpXG5cbiAgKCogUGFyc2UgYW5kIGNvbnN0cnVjdCBhIGNoYXIgc2V0LiAqKVxuICBhbmQgcGFyc2VfY2hhcl9zZXQgc3RyX2luZCBlbmRfaW5kID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuXG4gICAgbGV0IGNoYXJfc2V0ID0gY3JlYXRlX2NoYXJfc2V0ICgpIGluXG4gICAgbGV0IGFkZF9jaGFyIGMgPVxuICAgICAgYWRkX2luX2NoYXJfc2V0IGNoYXJfc2V0IGM7XG4gICAgaW5cbiAgICBsZXQgYWRkX3JhbmdlIGMgYycgPVxuICAgICAgZm9yIGkgPSBpbnRfb2ZfY2hhciBjIHRvIGludF9vZl9jaGFyIGMnIGRvXG4gICAgICAgIGFkZF9pbl9jaGFyX3NldCBjaGFyX3NldCAoY2hhcl9vZl9pbnQgaSk7XG4gICAgICBkb25lO1xuICAgIGluXG5cbiAgICBsZXQgZmFpbF9zaW5nbGVfcGVyY2VudCBzdHJfaW5kID1cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogJyUlJyBhbG9uZSBpcyBub3QgYWNjZXB0ZWQgaW4gY2hhcmFjdGVyIHNldHMsIFxcXG4gICAgICAgICB1c2UgJSUlJSBpbnN0ZWFkIGF0IHBvc2l0aW9uICVkLlwiIHN0ciBzdHJfaW5kXG4gICAgaW5cblxuICAgICgqIFBhcnNlIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgYSBjaGFyIHNldC4gKilcbiAgICBsZXQgcmVjIHBhcnNlX2NoYXJfc2V0X3N0YXJ0IHN0cl9pbmQgZW5kX2luZCA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbGV0IGMgPSBzdHIuW3N0cl9pbmRdIGluXG4gICAgICBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIChzdHJfaW5kICsgMSkgZW5kX2luZCBjXG5cbiAgICAoKiBQYXJzZSB0aGUgY29udGVudCBvZiBhIGNoYXIgc2V0IHVudGlsIHRoZSBmaXJzdCAnXScuICopXG4gICAgYW5kIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgc3RyX2luZCBlbmRfaW5kID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ10nIC0+XG4gICAgICAgIHN0cl9pbmQgKyAxXG4gICAgICB8ICctJyAtPlxuICAgICAgICBhZGRfY2hhciAnLSc7XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8IGMgLT5cbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciAoc3RyX2luZCArIDEpIGVuZF9pbmQgY1xuXG4gICAgKCogVGVzdCBmb3IgcmFuZ2UgaW4gY2hhciBzZXQuICopXG4gICAgYW5kIHBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIgc3RyX2luZCBlbmRfaW5kIGMgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnXScgLT5cbiAgICAgICAgYWRkX2NoYXIgYztcbiAgICAgICAgc3RyX2luZCArIDFcbiAgICAgIHwgJy0nIC0+XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2FmdGVyX21pbnVzIChzdHJfaW5kICsgMSkgZW5kX2luZCBjXG4gICAgICB8ICgnJScgfCAnQCcpIGFzIGMnIHdoZW4gYyA9ICclJyAtPlxuICAgICAgICBhZGRfY2hhciBjJztcbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfY29udGVudCAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgYycgLT5cbiAgICAgICAgaWYgYyA9ICclJyB0aGVuIGZhaWxfc2luZ2xlX3BlcmNlbnQgc3RyX2luZDtcbiAgICAgICAgKCogbm90ZSB0aGF0ICdAJyBhbG9uZSBpcyBhY2NlcHRlZCwgYXMgZG9uZSBieSB0aGUgbGVnYWN5XG4gICAgICAgICAgIGltcGxlbWVudGF0aW9uOyB0aGUgZG9jdW1lbnRhdGlvbiBzcGVjaWZpY2FsbHkgcmVxdWlyZXMgJUBcbiAgICAgICAgICAgc28gd2UgY291bGQgd2FybiBvbiB0aGF0ICopXG4gICAgICAgIGFkZF9jaGFyIGM7XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGMnXG5cbiAgICAoKiBNYW5hZ2UgcmFuZ2UgaW4gY2hhciBzZXQgKGV4Y2VwdCBpZiB0aGUgJy0nIHRoZSBsYXN0IGNoYXIgYmVmb3JlICddJykgKilcbiAgICBhbmQgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfbWludXMgc3RyX2luZCBlbmRfaW5kIGMgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnXScgLT5cbiAgICAgICAgYWRkX2NoYXIgYztcbiAgICAgICAgYWRkX2NoYXIgJy0nO1xuICAgICAgICBzdHJfaW5kICsgMVxuICAgICAgfCAnJScgLT5cbiAgICAgICAgaWYgc3RyX2luZCArIDEgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICAgIGJlZ2luIG1hdGNoIHN0ci5bc3RyX2luZCArIDFdIHdpdGhcbiAgICAgICAgICB8ICgnJScgfCAnQCcpIGFzIGMnIC0+XG4gICAgICAgICAgICBhZGRfcmFuZ2UgYyBjJztcbiAgICAgICAgICAgIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgKHN0cl9pbmQgKyAyKSBlbmRfaW5kXG4gICAgICAgICAgfCBfIC0+IGZhaWxfc2luZ2xlX3BlcmNlbnQgc3RyX2luZFxuICAgICAgICBlbmRcbiAgICAgIHwgYycgLT5cbiAgICAgICAgYWRkX3JhbmdlIGMgYyc7XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgaW5cbiAgICBsZXQgc3RyX2luZCwgcmV2ZXJzZSA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICAgIHwgJ14nIC0+IHN0cl9pbmQgKyAxLCB0cnVlXG4gICAgICAgIHwgXyAtPiBzdHJfaW5kLCBmYWxzZSBpblxuICAgIGxldCBuZXh0X2luZCA9IHBhcnNlX2NoYXJfc2V0X3N0YXJ0IHN0cl9pbmQgZW5kX2luZCBpblxuICAgIGxldCBjaGFyX3NldCA9IGZyZWV6ZV9jaGFyX3NldCBjaGFyX3NldCBpblxuICAgIG5leHRfaW5kLCAoaWYgcmV2ZXJzZSB0aGVuIHJldl9jaGFyX3NldCBjaGFyX3NldCBlbHNlIGNoYXJfc2V0KVxuXG4gICgqIENvbnN1bWUgYWxsIG5leHQgc3BhY2VzLCByYWlzZSBhbiBGYWlsdXJlIGlmIGVuZF9pbmQgaXMgcmVhY2hlZC4gKilcbiAgYW5kIHBhcnNlX3NwYWNlcyBzdHJfaW5kIGVuZF9pbmQgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgaWYgc3RyLltzdHJfaW5kXSA9ICcgJyB0aGVuIHBhcnNlX3NwYWNlcyAoc3RyX2luZCArIDEpIGVuZF9pbmQgZWxzZSBzdHJfaW5kXG5cbiAgKCogUmVhZCBhIHBvc2l0aXZlIGludGVnZXIgZnJvbSB0aGUgc3RyaW5nLCByYWlzZSBhIEZhaWx1cmUgaWYgZW5kX2luZCBpc1xuICAgICByZWFjaGVkLiAqKVxuICBhbmQgcGFyc2VfcG9zaXRpdmUgc3RyX2luZCBlbmRfaW5kIGFjYyA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgYXMgYyAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBhY2MgKiAxMCArIChpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJzAnKSBpblxuICAgICAgaWYgbmV3X2FjYyA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBpbnRlZ2VyICVkIGlzIGdyZWF0ZXIgdGhhbiB0aGUgbGltaXQgJWRcIlxuICAgICAgICAgIHN0ciBuZXdfYWNjIFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgICAgZWxzZVxuICAgICAgICBwYXJzZV9wb3NpdGl2ZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgbmV3X2FjY1xuICAgIHwgXyAtPiBzdHJfaW5kLCBhY2NcblxuICAoKiBSZWFkIGEgcG9zaXRpdmUgb3IgbmVnYXRpdmUgaW50ZWdlciBmcm9tIHRoZSBzdHJpbmcsIHJhaXNlIGEgRmFpbHVyZVxuICAgICBpZiBlbmRfaW5kIGlzIHJlYWNoZWQuICopXG4gIGFuZCBwYXJzZV9pbnRlZ2VyIHN0cl9pbmQgZW5kX2luZCA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgLT4gcGFyc2VfcG9zaXRpdmUgc3RyX2luZCBlbmRfaW5kIDBcbiAgICB8ICctJyAtPiAoXG4gICAgICBpZiBzdHJfaW5kICsgMSA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZCArIDFdIHdpdGhcbiAgICAgIHwgJzAnIC4uICc5JyAtPlxuICAgICAgICBsZXQgbmV4dF9pbmQsIG4gPSBwYXJzZV9wb3NpdGl2ZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgMCBpblxuICAgICAgICBuZXh0X2luZCwgLW5cbiAgICAgIHwgYyAtPlxuICAgICAgICBleHBlY3RlZF9jaGFyYWN0ZXIgKHN0cl9pbmQgKyAxKSBcImRpZ2l0XCIgY1xuICAgIClcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgKCogQWRkIGEgbGl0ZXJhbCB0byBhIGZvcm1hdCBmcm9tIGEgbGl0ZXJhbCBjaGFyYWN0ZXIgc3ViLXNlcXVlbmNlLiAqKVxuICBhbmQgYWRkX2xpdGVyYWwgOiB0eXBlIGEgZCBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiAoYSwgXywgXywgZCwgZSwgZikgZm10IC0+XG4gICAgICAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBsaXRfc3RhcnQgc3RyX2luZCBmbXQgLT4gbWF0Y2ggc3RyX2luZCAtIGxpdF9zdGFydCB3aXRoXG4gICAgfCAwICAgIC0+IEZtdF9FQkIgZm10XG4gICAgfCAxICAgIC0+IEZtdF9FQkIgKENoYXJfbGl0ZXJhbCAoc3RyLltsaXRfc3RhcnRdLCBmbXQpKVxuICAgIHwgc2l6ZSAtPiBGbXRfRUJCIChTdHJpbmdfbGl0ZXJhbCAoU3RyaW5nLnN1YiBzdHIgbGl0X3N0YXJ0IHNpemUsIGZtdCkpXG5cbiAgKCogU2VhcmNoIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgc3ViLWZvcm1hdFxuICAgICAoaS5lLiB0aGUgY29ycmVzcG9uZGluZyBcIiV9XCIgb3IgXCIlKVwiKSAqKVxuICBhbmQgc2VhcmNoX3N1YmZvcm1hdF9lbmQgc3RyX2luZCBlbmRfaW5kIGMgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW5cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogdW5jbG9zZWQgc3ViLWZvcm1hdCwgXFxcbiAgICAgICAgIGV4cGVjdGVkIFxcXCIlJSVjXFxcIiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkXCIgc3RyIGMgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICclJyAtPlxuICAgICAgaWYgc3RyX2luZCArIDEgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBpZiBzdHIuW3N0cl9pbmQgKyAxXSA9IGMgdGhlbiAoKiBFbmQgb2YgZm9ybWF0IGZvdW5kICopIHN0cl9pbmQgZWxzZVxuICAgICAgICBiZWdpbiBtYXRjaCBzdHIuW3N0cl9pbmQgKyAxXSB3aXRoXG4gICAgICAgIHwgJ18nIC0+XG4gICAgICAgICAgKCogU2VhcmNoIGZvciBcIiVfKFwiIG9yIFwiJV97XCIuICopXG4gICAgICAgICAgaWYgc3RyX2luZCArIDIgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggc3RyLltzdHJfaW5kICsgMl0gd2l0aFxuICAgICAgICAgIHwgJ3snIC0+XG4gICAgICAgICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMykgZW5kX2luZCAnfScgaW5cbiAgICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdWJfZW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgICAgfCAnKCcgLT5cbiAgICAgICAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAzKSBlbmRfaW5kICcpJyBpblxuICAgICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgICB8IF8gLT4gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAzKSBlbmRfaW5kIGNcbiAgICAgICAgICBlbmRcbiAgICAgICAgfCAneycgLT5cbiAgICAgICAgICAoKiAley4uLiV9IHN1Yi1mb3JtYXQgZm91bmQuICopXG4gICAgICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDIpIGVuZF9pbmQgJ30nIGluXG4gICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgfCAnKCcgLT5cbiAgICAgICAgICAoKiAlKC4uLiUpIHN1Yi1mb3JtYXQgZm91bmQuICopXG4gICAgICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDIpIGVuZF9pbmQgJyknIGluXG4gICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgfCAnfScgLT5cbiAgICAgICAgICAoKiBFcnJvcjogJSguLi4lfS4gKilcbiAgICAgICAgICBleHBlY3RlZF9jaGFyYWN0ZXIgKHN0cl9pbmQgKyAxKSBcImNoYXJhY3RlciAnKSdcIiAnfSdcbiAgICAgICAgfCAnKScgLT5cbiAgICAgICAgICAoKiBFcnJvcjogJXsuLi4lKS4gKilcbiAgICAgICAgICBleHBlY3RlZF9jaGFyYWN0ZXIgKHN0cl9pbmQgKyAxKSBcImNoYXJhY3RlciAnfSdcIiAnKSdcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgZW5kXG4gICAgfCBfIC0+IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBjXG5cbiAgKCogQ2hlY2sgaWYgc3ltYiBpcyBhIHZhbGlkIGludCBjb252ZXJzaW9uIGFmdGVyIFwiJWxcIiwgXCIlblwiIG9yIFwiJUxcIiAqKVxuICBhbmQgaXNfaW50X2Jhc2Ugc3ltYiA9IG1hdGNoIHN5bWIgd2l0aFxuICAgIHwgJ2QnIHwgJ2knIHwgJ3gnIHwgJ1gnIHwgJ28nIHwgJ3UnIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcblxuICAoKiBDb252ZXJ0IGEgY2hhciAobCwgbiBvciBMKSB0byBpdHMgYXNzb2NpYXRlZCBjb3VudGVyLiAqKVxuICBhbmQgY291bnRlcl9vZl9jaGFyIHN5bWIgPSBtYXRjaCBzeW1iIHdpdGhcbiAgICB8ICdsJyAtPiBMaW5lX2NvdW50ZXIgIHwgJ24nIC0+IENoYXJfY291bnRlclxuICAgIHwgJ0wnIC0+IFRva2VuX2NvdW50ZXIgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gICgqIENvbnZlcnQgKHBsdXMsIHN5bWIpIHRvIGl0cyBhc3NvY2lhdGVkIGludF9jb252LiAqKVxuICBhbmQgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBoYXNoIHNwYWNlIHN5bWIgPVxuICAgIG1hdGNoIHBsdXMsIGhhc2gsIHNwYWNlLCBzeW1iIHdpdGhcbiAgICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICdkJyAtPiBJbnRfZCAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAnaScgLT4gSW50X2lcbiAgICB8IGZhbHNlLCBmYWxzZSwgIHRydWUsICdkJyAtPiBJbnRfc2QgfCBmYWxzZSwgZmFsc2UsICB0cnVlLCAnaScgLT4gSW50X3NpXG4gICAgfCAgdHJ1ZSwgZmFsc2UsIGZhbHNlLCAnZCcgLT4gSW50X3BkIHwgIHRydWUsIGZhbHNlLCBmYWxzZSwgJ2knIC0+IEludF9waVxuICAgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ3gnIC0+IEludF94ICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICdYJyAtPiBJbnRfWFxuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ3gnIC0+IEludF9DeCB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICdYJyAtPiBJbnRfQ1hcbiAgICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICdvJyAtPiBJbnRfb1xuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ28nIC0+IEludF9Db1xuICAgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ3UnIC0+IEludF91XG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAnZCcgLT4gSW50X0NkXG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAnaScgLT4gSW50X0NpXG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAndScgLT4gSW50X0N1XG4gICAgfCBfLCB0cnVlLCBfLCAneCcgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT4gSW50X0N4XG4gICAgfCBfLCB0cnVlLCBfLCAnWCcgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT4gSW50X0NYXG4gICAgfCBfLCB0cnVlLCBfLCAnbycgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT4gSW50X0NvXG4gICAgfCBfLCB0cnVlLCBfLCAoJ2QnIHwgJ2knIHwgJ3UnKSAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gKCogaWdub3JlICopXG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgZmFsc2Ugc3BhY2Ugc3ltYlxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicjJ1wiXG4gICAgfCB0cnVlLCBfLCB0cnVlLCBfIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlblxuICAgICAgICAoKiBwbHVzIGFuZCBzcGFjZTogbGVnYWN5IGltcGxlbWVudGF0aW9uIHByZWZlcnMgcGx1cyAqKVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGhhc2ggZmFsc2Ugc3ltYlxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJyAnIFwiJysnXCJcbiAgICB8IGZhbHNlLCBfLCB0cnVlLCBfICAgIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiAoKiBpZ25vcmUgKilcbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBoYXNoIGZhbHNlIHN5bWJcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInICdcIlxuICAgIHwgdHJ1ZSwgXywgZmFsc2UsIF8gICAgLT5cbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuICgqIGlnbm9yZSAqKVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBmYWxzZSBoYXNoIHNwYWNlIHN5bWJcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInKydcIlxuICAgIHwgZmFsc2UsIF8sIGZhbHNlLCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gICgqIENvbnZlcnQgKHBsdXMsIHNwYWNlLCBzeW1iKSB0byBpdHMgYXNzb2NpYXRlZCBmbG9hdF9jb252LiAqKVxuICBhbmQgY29tcHV0ZV9mbG9hdF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGhhc2ggc3BhY2Ugc3ltYiA9XG4gICAgbGV0IGZsYWcgPSBtYXRjaCBwbHVzLCBzcGFjZSB3aXRoXG4gICAgfCBmYWxzZSwgZmFsc2UgLT4gRmxvYXRfZmxhZ19cbiAgICB8IGZhbHNlLCAgdHJ1ZSAtPiBGbG9hdF9mbGFnX3NcbiAgICB8ICB0cnVlLCBmYWxzZSAtPiBGbG9hdF9mbGFnX3BcbiAgICB8ICB0cnVlLCAgdHJ1ZSAtPlxuICAgICAgKCogcGx1cyBhbmQgc3BhY2U6IGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBwcmVmZXJzIHBsdXMgKilcbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIEZsb2F0X2ZsYWdfcFxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJyAnIFwiJysnXCIgaW5cbiAgICBsZXQga2luZCA9IG1hdGNoIGhhc2gsIHN5bWIgd2l0aFxuICAgIHwgXywgJ2YnIC0+IEZsb2F0X2ZcbiAgICB8IF8sICdlJyAtPiBGbG9hdF9lXG4gICAgfCBfLCAnRScgLT4gRmxvYXRfRVxuICAgIHwgXywgJ2cnIC0+IEZsb2F0X2dcbiAgICB8IF8sICdHJyAtPiBGbG9hdF9HXG4gICAgfCBfLCAnaCcgLT4gRmxvYXRfaFxuICAgIHwgXywgJ0gnIC0+IEZsb2F0X0hcbiAgICB8IGZhbHNlLCAnRicgLT4gRmxvYXRfRlxuICAgIHwgdHJ1ZSwgJ0YnIC0+IEZsb2F0X0NGXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZSBpblxuICAgIGZsYWcsIGtpbmRcblxuICAoKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIGZyaWVuZGx5IGVycm9yIG1lc3NhZ2UgYWJvdXQgaW5jb21wYXRpYmxlIG9wdGlvbnMuKilcbiAgYW5kIGluY29tcGF0aWJsZV9mbGFnIDogdHlwZSBhIC4gaW50IC0+IGludCAtPiBjaGFyIC0+IHN0cmluZyAtPiBhID1cbiAgICBmdW4gcGN0X2luZCBzdHJfaW5kIHN5bWIgb3B0aW9uIC0+XG4gICAgICBsZXQgc3ViZm10ID0gU3RyaW5nLnN1YiBzdHIgcGN0X2luZCAoc3RyX2luZCAtIHBjdF9pbmQpIGluXG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsIFxcXG4gICAgICAgICAlcyBpcyBpbmNvbXBhdGlibGUgd2l0aCAnJWMnIGluIHN1Yi1mb3JtYXQgJVNcIlxuICAgICAgICBzdHIgcGN0X2luZCBvcHRpb24gc3ltYiBzdWJmbXRcblxuICBpbiBwYXJzZSAwIChTdHJpbmcubGVuZ3RoIHN0cilcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICgqIEd1YXJkZWQgc3RyaW5nIHRvIGZvcm1hdCBjb252ZXJzaW9ucyAqKVxuXG4oKiBDb252ZXJ0IGEgc3RyaW5nIHRvIGEgZm9ybWF0IGFjY29yZGluZyB0byBhbiBmbXR0eS4gKilcbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IGZvcm1hdF9vZl9zdHJpbmdfZm10dHkgc3RyIGZtdHR5ID1cbiAgbGV0IEZtdF9FQkIgZm10ID0gZm10X2ViYl9vZl9zdHJpbmcgc3RyIGluXG4gIHRyeSBGb3JtYXQgKHR5cGVfZm9ybWF0IGZtdCBmbXR0eSwgc3RyKVxuICB3aXRoIFR5cGVfbWlzbWF0Y2ggLT5cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICBcImJhZCBpbnB1dDogZm9ybWF0IHR5cGUgbWlzbWF0Y2ggYmV0d2VlbiAlUyBhbmQgJVNcIlxuICAgICAgc3RyIChzdHJpbmdfb2ZfZm10dHkgZm10dHkpXG5cbigqIENvbnZlcnQgYSBzdHJpbmcgdG8gYSBmb3JtYXQgY29tcGF0aWJsZSB3aXRoIGFuIG90aGVyIGZvcm1hdC4gKilcbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IGZvcm1hdF9vZl9zdHJpbmdfZm9ybWF0IHN0ciAoRm9ybWF0IChmbXQnLCBzdHInKSkgPVxuICBsZXQgRm10X0VCQiBmbXQgPSBmbXRfZWJiX29mX3N0cmluZyBzdHIgaW5cbiAgdHJ5IEZvcm1hdCAodHlwZV9mb3JtYXQgZm10IChmbXR0eV9vZl9mbXQgZm10JyksIHN0cilcbiAgd2l0aCBUeXBlX21pc21hdGNoIC0+XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgXCJiYWQgaW5wdXQ6IGZvcm1hdCB0eXBlIG1pc21hdGNoIGJldHdlZW4gJVMgYW5kICVTXCIgc3RyIHN0cidcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBQcmludGZcblxudHlwZSB0ID0gZXhuID0gLi5cblxubGV0IHByaW50ZXJzID0gQXRvbWljLm1ha2UgW11cblxubGV0IGxvY2ZtdCA9IGZvcm1hdF9vZl9zdHJpbmcgXCJGaWxlIFxcXCIlc1xcXCIsIGxpbmUgJWQsIGNoYXJhY3RlcnMgJWQtJWQ6ICVzXCJcblxubGV0IGZpZWxkIHggaSA9XG4gIGxldCBmID0gT2JqLmZpZWxkIHggaSBpblxuICBpZiBub3QgKE9iai5pc19ibG9jayBmKSB0aGVuXG4gICAgc3ByaW50ZiBcIiVkXCIgKE9iai5tYWdpYyBmIDogaW50KSAgICAgICAgICAgKCogY2FuIGFsc28gYmUgYSBjaGFyICopXG4gIGVsc2UgaWYgT2JqLnRhZyBmID0gT2JqLnN0cmluZ190YWcgdGhlblxuICAgIHNwcmludGYgXCIlU1wiIChPYmoubWFnaWMgZiA6IHN0cmluZylcbiAgZWxzZSBpZiBPYmoudGFnIGYgPSBPYmouZG91YmxlX3RhZyB0aGVuXG4gICAgc3RyaW5nX29mX2Zsb2F0IChPYmoubWFnaWMgZiA6IGZsb2F0KVxuICBlbHNlXG4gICAgXCJfXCJcblxubGV0IHJlYyBvdGhlcl9maWVsZHMgeCBpID1cbiAgaWYgaSA+PSBPYmouc2l6ZSB4IHRoZW4gXCJcIlxuICBlbHNlIHNwcmludGYgXCIsICVzJXNcIiAoZmllbGQgeCBpKSAob3RoZXJfZmllbGRzIHggKGkrMSkpXG5cbmxldCBmaWVsZHMgeCA9XG4gIG1hdGNoIE9iai5zaXplIHggd2l0aFxuICB8IDAgLT4gXCJcIlxuICB8IDEgLT4gXCJcIlxuICB8IDIgLT4gc3ByaW50ZiBcIiglcylcIiAoZmllbGQgeCAxKVxuICB8IF8gLT4gc3ByaW50ZiBcIiglcyVzKVwiIChmaWVsZCB4IDEpIChvdGhlcl9maWVsZHMgeCAyKVxuXG5sZXQgdXNlX3ByaW50ZXJzIHggPVxuICBsZXQgcmVjIGNvbnYgPSBmdW5jdGlvblxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgKG1hdGNoIGhkIHggd2l0aFxuICAgICAgICAgfCBOb25lIHwgZXhjZXB0aW9uIF8gLT4gY29udiB0bFxuICAgICAgICAgfCBTb21lIHMgLT4gU29tZSBzKVxuICAgIHwgW10gLT4gTm9uZSBpblxuICBjb252IChBdG9taWMuZ2V0IHByaW50ZXJzKVxuXG5sZXQgdG9fc3RyaW5nX2RlZmF1bHQgPSBmdW5jdGlvblxuICB8IE91dF9vZl9tZW1vcnkgLT4gXCJPdXQgb2YgbWVtb3J5XCJcbiAgfCBTdGFja19vdmVyZmxvdyAtPiBcIlN0YWNrIG92ZXJmbG93XCJcbiAgfCBNYXRjaF9mYWlsdXJlKGZpbGUsIGxpbmUsIGNoYXIpIC0+XG4gICAgICBzcHJpbnRmIGxvY2ZtdCBmaWxlIGxpbmUgY2hhciAoY2hhcis1KSBcIlBhdHRlcm4gbWF0Y2hpbmcgZmFpbGVkXCJcbiAgfCBBc3NlcnRfZmFpbHVyZShmaWxlLCBsaW5lLCBjaGFyKSAtPlxuICAgICAgc3ByaW50ZiBsb2NmbXQgZmlsZSBsaW5lIGNoYXIgKGNoYXIrNikgXCJBc3NlcnRpb24gZmFpbGVkXCJcbiAgfCBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZShmaWxlLCBsaW5lLCBjaGFyKSAtPlxuICAgICAgc3ByaW50ZiBsb2NmbXQgZmlsZSBsaW5lIGNoYXIgKGNoYXIrNikgXCJVbmRlZmluZWQgcmVjdXJzaXZlIG1vZHVsZVwiXG4gIHwgeCAtPlxuICAgICAgbGV0IHggPSBPYmoucmVwciB4IGluXG4gICAgICBpZiBPYmoudGFnIHggPD4gMCB0aGVuXG4gICAgICAgIChPYmoubWFnaWMgKE9iai5maWVsZCB4IDApIDogc3RyaW5nKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgY29uc3RydWN0b3IgPVxuICAgICAgICAgIChPYmoubWFnaWMgKE9iai5maWVsZCAoT2JqLmZpZWxkIHggMCkgMCkgOiBzdHJpbmcpIGluXG4gICAgICAgIGNvbnN0cnVjdG9yIF4gKGZpZWxkcyB4KVxuXG5sZXQgdG9fc3RyaW5nIGUgPVxuICBtYXRjaCB1c2VfcHJpbnRlcnMgZSB3aXRoXG4gIHwgU29tZSBzIC0+IHNcbiAgfCBOb25lIC0+IHRvX3N0cmluZ19kZWZhdWx0IGVcblxubGV0IHByaW50IGZjdCBhcmcgPVxuICB0cnlcbiAgICBmY3QgYXJnXG4gIHdpdGggeCAtPlxuICAgIGVwcmludGYgXCJVbmNhdWdodCBleGNlcHRpb246ICVzXFxuXCIgKHRvX3N0cmluZyB4KTtcbiAgICBmbHVzaCBzdGRlcnI7XG4gICAgcmFpc2UgeFxuXG5sZXQgY2F0Y2ggZmN0IGFyZyA9XG4gIHRyeVxuICAgIGZjdCBhcmdcbiAgd2l0aCB4IC0+XG4gICAgZmx1c2ggc3Rkb3V0O1xuICAgIGVwcmludGYgXCJVbmNhdWdodCBleGNlcHRpb246ICVzXFxuXCIgKHRvX3N0cmluZyB4KTtcbiAgICBleGl0IDJcblxudHlwZSByYXdfYmFja3RyYWNlX3Nsb3RcbnR5cGUgcmF3X2JhY2t0cmFjZV9lbnRyeSA9IHByaXZhdGUgaW50XG50eXBlIHJhd19iYWNrdHJhY2UgPSByYXdfYmFja3RyYWNlX2VudHJ5IGFycmF5XG5cbmxldCByYXdfYmFja3RyYWNlX2VudHJpZXMgYnQgPSBidFxuXG5leHRlcm5hbCBnZXRfcmF3X2JhY2t0cmFjZTpcbiAgdW5pdCAtPiByYXdfYmFja3RyYWNlID0gXCJjYW1sX2dldF9leGNlcHRpb25fcmF3X2JhY2t0cmFjZVwiXG5cbmV4dGVybmFsIHJhaXNlX3dpdGhfYmFja3RyYWNlOiBleG4gLT4gcmF3X2JhY2t0cmFjZSAtPiAnYVxuICA9IFwiJXJhaXNlX3dpdGhfYmFja3RyYWNlXCJcblxudHlwZSBiYWNrdHJhY2Vfc2xvdCA9XG4gIHwgS25vd25fbG9jYXRpb24gb2Yge1xuICAgICAgaXNfcmFpc2UgICAgOiBib29sO1xuICAgICAgZmlsZW5hbWUgICAgOiBzdHJpbmc7XG4gICAgICBsaW5lX251bWJlciA6IGludDtcbiAgICAgIHN0YXJ0X2NoYXIgIDogaW50O1xuICAgICAgZW5kX2NoYXIgICAgOiBpbnQ7XG4gICAgICBpc19pbmxpbmUgICA6IGJvb2w7XG4gICAgICBkZWZuYW1lICAgICA6IHN0cmluZztcbiAgICB9XG4gIHwgVW5rbm93bl9sb2NhdGlvbiBvZiB7XG4gICAgICBpc19yYWlzZSA6IGJvb2xcbiAgICB9XG5cbigqIHRvIGF2b2lkIHdhcm5pbmcgKilcbmxldCBfID0gW0tub3duX2xvY2F0aW9uIHsgaXNfcmFpc2UgPSBmYWxzZTsgZmlsZW5hbWUgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lX251bWJlciA9IDA7IHN0YXJ0X2NoYXIgPSAwOyBlbmRfY2hhciA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2lubGluZSA9IGZhbHNlOyBkZWZuYW1lID0gXCJcIiB9O1xuICAgICAgICAgVW5rbm93bl9sb2NhdGlvbiB7IGlzX3JhaXNlID0gZmFsc2UgfV1cblxuZXh0ZXJuYWwgY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3Q6XG4gIHJhd19iYWNrdHJhY2Vfc2xvdCAtPiBiYWNrdHJhY2Vfc2xvdCA9IFwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdFwiXG5cbmV4dGVybmFsIGNvbnZlcnRfcmF3X2JhY2t0cmFjZTpcbiAgcmF3X2JhY2t0cmFjZSAtPiBiYWNrdHJhY2Vfc2xvdCBhcnJheSA9IFwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2VcIlxuXG5sZXQgY29udmVydF9yYXdfYmFja3RyYWNlIGJ0ID1cbiAgdHJ5IFNvbWUgKGNvbnZlcnRfcmF3X2JhY2t0cmFjZSBidClcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5sZXQgZm9ybWF0X2JhY2t0cmFjZV9zbG90IHBvcyBzbG90ID1cbiAgbGV0IGluZm8gaXNfcmFpc2UgPVxuICAgIGlmIGlzX3JhaXNlIHRoZW5cbiAgICAgIGlmIHBvcyA9IDAgdGhlbiBcIlJhaXNlZCBhdFwiIGVsc2UgXCJSZS1yYWlzZWQgYXRcIlxuICAgIGVsc2VcbiAgICAgIGlmIHBvcyA9IDAgdGhlbiBcIlJhaXNlZCBieSBwcmltaXRpdmUgb3BlcmF0aW9uIGF0XCIgZWxzZSBcIkNhbGxlZCBmcm9tXCJcbiAgaW5cbiAgbWF0Y2ggc2xvdCB3aXRoXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBsIC0+XG4gICAgICBpZiBsLmlzX3JhaXNlIHRoZW5cbiAgICAgICAgKCogY29tcGlsZXItaW5zZXJ0ZWQgcmUtcmFpc2UsIHNraXBwZWQgKikgTm9uZVxuICAgICAgZWxzZVxuICAgICAgICBTb21lIChzcHJpbnRmIFwiJXMgdW5rbm93biBsb2NhdGlvblwiIChpbmZvIGZhbHNlKSlcbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+XG4gICAgICBTb21lIChzcHJpbnRmIFwiJXMgJXMgaW4gZmlsZSBcXFwiJXNcXFwiJXMsIGxpbmUgJWQsIGNoYXJhY3RlcnMgJWQtJWRcIlxuICAgICAgICAgICAgICAoaW5mbyBsLmlzX3JhaXNlKSBsLmRlZm5hbWUgbC5maWxlbmFtZVxuICAgICAgICAgICAgICAoaWYgbC5pc19pbmxpbmUgdGhlbiBcIiAoaW5saW5lZClcIiBlbHNlIFwiXCIpXG4gICAgICAgICAgICAgIGwubGluZV9udW1iZXIgbC5zdGFydF9jaGFyIGwuZW5kX2NoYXIpXG5cbmxldCBwcmludF9leGNlcHRpb25fYmFja3RyYWNlIG91dGNoYW4gYmFja3RyYWNlID1cbiAgbWF0Y2ggYmFja3RyYWNlIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgICBmcHJpbnRmIG91dGNoYW5cbiAgICAgICAgXCIoUHJvZ3JhbSBub3QgbGlua2VkIHdpdGggLWcsIGNhbm5vdCBwcmludCBzdGFjayBiYWNrdHJhY2UpXFxuXCJcbiAgfCBTb21lIGEgLT5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggYSAtIDEgZG9cbiAgICAgICAgbWF0Y2ggZm9ybWF0X2JhY2t0cmFjZV9zbG90IGkgYS4oaSkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBzdHIgLT4gZnByaW50ZiBvdXRjaGFuIFwiJXNcXG5cIiBzdHJcbiAgICAgIGRvbmVcblxubGV0IHByaW50X3Jhd19iYWNrdHJhY2Ugb3V0Y2hhbiByYXdfYmFja3RyYWNlID1cbiAgcHJpbnRfZXhjZXB0aW9uX2JhY2t0cmFjZSBvdXRjaGFuIChjb252ZXJ0X3Jhd19iYWNrdHJhY2UgcmF3X2JhY2t0cmFjZSlcblxuKCogY29uZnVzaW5nbHkgbmFtZWQ6IHByaW50cyB0aGUgZ2xvYmFsIGN1cnJlbnQgYmFja3RyYWNlICopXG5sZXQgcHJpbnRfYmFja3RyYWNlIG91dGNoYW4gPVxuICBwcmludF9yYXdfYmFja3RyYWNlIG91dGNoYW4gKGdldF9yYXdfYmFja3RyYWNlICgpKVxuXG5sZXQgYmFja3RyYWNlX3RvX3N0cmluZyBiYWNrdHJhY2UgPVxuICBtYXRjaCBiYWNrdHJhY2Ugd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgXCIoUHJvZ3JhbSBub3QgbGlua2VkIHdpdGggLWcsIGNhbm5vdCBwcmludCBzdGFjayBiYWNrdHJhY2UpXFxuXCJcbiAgfCBTb21lIGEgLT5cbiAgICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAxMDI0IGluXG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGEgLSAxIGRvXG4gICAgICAgIG1hdGNoIGZvcm1hdF9iYWNrdHJhY2Vfc2xvdCBpIGEuKGkpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgc3RyIC0+IGJwcmludGYgYiBcIiVzXFxuXCIgc3RyXG4gICAgICBkb25lO1xuICAgICAgQnVmZmVyLmNvbnRlbnRzIGJcblxubGV0IHJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIHJhd19iYWNrdHJhY2UgPVxuICBiYWNrdHJhY2VfdG9fc3RyaW5nIChjb252ZXJ0X3Jhd19iYWNrdHJhY2UgcmF3X2JhY2t0cmFjZSlcblxubGV0IGJhY2t0cmFjZV9zbG90X2lzX3JhaXNlID0gZnVuY3Rpb25cbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+IGwuaXNfcmFpc2VcbiAgfCBVbmtub3duX2xvY2F0aW9uIGwgLT4gbC5pc19yYWlzZVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfaXNfaW5saW5lID0gZnVuY3Rpb25cbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+IGwuaXNfaW5saW5lXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBfIC0+IGZhbHNlXG5cbnR5cGUgbG9jYXRpb24gPSB7XG4gIGZpbGVuYW1lIDogc3RyaW5nO1xuICBsaW5lX251bWJlciA6IGludDtcbiAgc3RhcnRfY2hhciA6IGludDtcbiAgZW5kX2NoYXIgOiBpbnQ7XG59XG5cbmxldCBiYWNrdHJhY2Vfc2xvdF9sb2NhdGlvbiA9IGZ1bmN0aW9uXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBfIC0+IE5vbmVcbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+XG4gICAgU29tZSB7XG4gICAgICBmaWxlbmFtZSAgICA9IGwuZmlsZW5hbWU7XG4gICAgICBsaW5lX251bWJlciA9IGwubGluZV9udW1iZXI7XG4gICAgICBzdGFydF9jaGFyICA9IGwuc3RhcnRfY2hhcjtcbiAgICAgIGVuZF9jaGFyICAgID0gbC5lbmRfY2hhcjtcbiAgICB9XG5cbmxldCBiYWNrdHJhY2Vfc2xvdF9kZWZuYW1lID0gZnVuY3Rpb25cbiAgfCBVbmtub3duX2xvY2F0aW9uIF9cbiAgfCBLbm93bl9sb2NhdGlvbiB7IGRlZm5hbWUgPSBcIlwiIH0gLT4gTm9uZVxuICB8IEtub3duX2xvY2F0aW9uIGwgLT4gU29tZSBsLmRlZm5hbWVcblxubGV0IGJhY2t0cmFjZV9zbG90cyByYXdfYmFja3RyYWNlID1cbiAgKCogVGhlIGRvY3VtZW50YXRpb24gb2YgdGhpcyBmdW5jdGlvbiBndWFyYW50ZWVzIHRoYXQgU29tZSBpc1xuICAgICByZXR1cm5lZCBvbmx5IGlmIGEgcGFydCBvZiB0aGUgdHJhY2UgaXMgdXNhYmxlLiBUaGlzIGdpdmVzIHVzXG4gICAgIGEgYml0IG1vcmUgd29yayB0aGFuIGp1c3QgY29udmVydF9yYXdfYmFja3RyYWNlLCBidXQgaXQgbWFrZXMgdGhlXG4gICAgIEFQSSBtb3JlIHVzZXItZnJpZW5kbHkgLS0gb3RoZXJ3aXNlIG1vc3QgdXNlcnMgd291bGQgaGF2ZSB0b1xuICAgICByZWltcGxlbWVudCB0aGUgXCJQcm9ncmFtIG5vdCBsaW5rZWQgd2l0aCAtZywgc29ycnlcIiBsb2dpY1xuICAgICB0aGVtc2VsdmVzLiAqKVxuICBtYXRjaCBjb252ZXJ0X3Jhd19iYWNrdHJhY2UgcmF3X2JhY2t0cmFjZSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgYmFja3RyYWNlIC0+XG4gICAgICBsZXQgdXNhYmxlX3Nsb3QgPSBmdW5jdGlvblxuICAgICAgICB8IFVua25vd25fbG9jYXRpb24gXyAtPiBmYWxzZVxuICAgICAgICB8IEtub3duX2xvY2F0aW9uIF8gLT4gdHJ1ZSBpblxuICAgICAgbGV0IHJlYyBleGlzdHNfdXNhYmxlID0gZnVuY3Rpb25cbiAgICAgICAgfCAoLTEpIC0+IGZhbHNlXG4gICAgICAgIHwgaSAtPiB1c2FibGVfc2xvdCBiYWNrdHJhY2UuKGkpIHx8IGV4aXN0c191c2FibGUgKGkgLSAxKSBpblxuICAgICAgaWYgZXhpc3RzX3VzYWJsZSAoQXJyYXkubGVuZ3RoIGJhY2t0cmFjZSAtIDEpXG4gICAgICB0aGVuIFNvbWUgYmFja3RyYWNlXG4gICAgICBlbHNlIE5vbmVcblxubGV0IGJhY2t0cmFjZV9zbG90c19vZl9yYXdfZW50cnkgZW50cnkgPVxuICBiYWNrdHJhY2Vfc2xvdHMgW3wgZW50cnkgfF1cblxubW9kdWxlIFNsb3QgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gYmFja3RyYWNlX3Nsb3RcbiAgbGV0IGZvcm1hdCA9IGZvcm1hdF9iYWNrdHJhY2Vfc2xvdFxuICBsZXQgaXNfcmFpc2UgPSBiYWNrdHJhY2Vfc2xvdF9pc19yYWlzZVxuICBsZXQgaXNfaW5saW5lID0gYmFja3RyYWNlX3Nsb3RfaXNfaW5saW5lXG4gIGxldCBsb2NhdGlvbiA9IGJhY2t0cmFjZV9zbG90X2xvY2F0aW9uXG4gIGxldCBuYW1lID0gYmFja3RyYWNlX3Nsb3RfZGVmbmFtZVxuZW5kXG5cbmxldCByYXdfYmFja3RyYWNlX2xlbmd0aCBidCA9IEFycmF5Lmxlbmd0aCBidFxuXG5leHRlcm5hbCBnZXRfcmF3X2JhY2t0cmFjZV9zbG90IDpcbiAgcmF3X2JhY2t0cmFjZSAtPiBpbnQgLT4gcmF3X2JhY2t0cmFjZV9zbG90ID0gXCJjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdFwiXG5cbmV4dGVybmFsIGdldF9yYXdfYmFja3RyYWNlX25leHRfc2xvdCA6XG4gIHJhd19iYWNrdHJhY2Vfc2xvdCAtPiByYXdfYmFja3RyYWNlX3Nsb3Qgb3B0aW9uXG4gID0gXCJjYW1sX3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90XCJcblxuKCogY29uZnVzaW5nbHkgbmFtZWQ6XG4gICByZXR1cm5zIHRoZSAqc3RyaW5nKiBjb3JyZXNwb25kaW5nIHRvIHRoZSBnbG9iYWwgY3VycmVudCBiYWNrdHJhY2UgKilcbmxldCBnZXRfYmFja3RyYWNlICgpID0gcmF3X2JhY2t0cmFjZV90b19zdHJpbmcgKGdldF9yYXdfYmFja3RyYWNlICgpKVxuXG5leHRlcm5hbCByZWNvcmRfYmFja3RyYWNlOiBib29sIC0+IHVuaXQgPSBcImNhbWxfcmVjb3JkX2JhY2t0cmFjZVwiXG5leHRlcm5hbCBiYWNrdHJhY2Vfc3RhdHVzOiB1bml0IC0+IGJvb2wgPSBcImNhbWxfYmFja3RyYWNlX3N0YXR1c1wiXG5cbmxldCByZWMgcmVnaXN0ZXJfcHJpbnRlciBmbiA9XG4gIGxldCBvbGRfcHJpbnRlcnMgPSBBdG9taWMuZ2V0IHByaW50ZXJzIGluXG4gIGxldCBuZXdfcHJpbnRlcnMgPSBmbiA6OiBvbGRfcHJpbnRlcnMgaW5cbiAgbGV0IHN1Y2Nlc3MgPSBBdG9taWMuY29tcGFyZV9hbmRfc2V0IHByaW50ZXJzIG9sZF9wcmludGVycyBuZXdfcHJpbnRlcnMgaW5cbiAgaWYgbm90IHN1Y2Nlc3MgdGhlbiByZWdpc3Rlcl9wcmludGVyIGZuXG5cbmV4dGVybmFsIGdldF9jYWxsc3RhY2s6IGludCAtPiByYXdfYmFja3RyYWNlID0gXCJjYW1sX2dldF9jdXJyZW50X2NhbGxzdGFja1wiXG5cbmxldCBleG5fc2xvdCB4ID1cbiAgbGV0IHggPSBPYmoucmVwciB4IGluXG4gIGlmIE9iai50YWcgeCA9IDAgdGhlbiBPYmouZmllbGQgeCAwIGVsc2UgeFxuXG5sZXQgZXhuX3Nsb3RfaWQgeCA9XG4gIGxldCBzbG90ID0gZXhuX3Nsb3QgeCBpblxuICAoT2JqLm9iaiAoT2JqLmZpZWxkIHNsb3QgMSkgOiBpbnQpXG5cbmxldCBleG5fc2xvdF9uYW1lIHggPVxuICBsZXQgc2xvdCA9IGV4bl9zbG90IHggaW5cbiAgKE9iai5vYmogKE9iai5maWVsZCBzbG90IDApIDogc3RyaW5nKVxuXG5leHRlcm5hbCBnZXRfZGVidWdfaW5mb19zdGF0dXMgOiB1bml0IC0+IGludCA9IFwiY2FtbF9tbF9kZWJ1Z19pbmZvX3N0YXR1c1wiXG5cbigqIERlc2NyaXB0aW9ucyBmb3IgZXJyb3JzIGluIHN0YXJ0dXAuaC4gU2VlIGFsc28gYmFja3RyYWNlLmMgKilcbmxldCBlcnJvcnMgPSBbfCBcIlwiO1xuICAoKiBGSUxFX05PVF9GT1VORCAqKVxuICBcIihDYW5ub3QgcHJpbnQgbG9jYXRpb25zOlxcbiBcXFxuICAgICAgYnl0ZWNvZGUgZXhlY3V0YWJsZSBwcm9ncmFtIGZpbGUgbm90IGZvdW5kKVwiO1xuICAoKiBCQURfQllURUNPREUgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIGFwcGVhcnMgdG8gYmUgY29ycnVwdClcIjtcbiAgKCogV1JPTkdfTUFHSUMgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIGhhcyB3cm9uZyBtYWdpYyBudW1iZXIpXCI7XG4gICgqIE5PX0ZEUyAqKVxuICBcIihDYW5ub3QgcHJpbnQgbG9jYXRpb25zOlxcbiBcXFxuICAgICAgYnl0ZWNvZGUgZXhlY3V0YWJsZSBwcm9ncmFtIGZpbGUgY2Fubm90IGJlIG9wZW5lZDtcXG4gXFxcbiAgICAgIC0tIHRvbyBtYW55IG9wZW4gZmlsZXMuIFRyeSBydW5uaW5nIHdpdGggT0NBTUxSVU5QQVJBTT1iPTIpXCJcbnxdXG5cbmxldCBkZWZhdWx0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIGV4biByYXdfYmFja3RyYWNlID1cbiAgZXByaW50ZiBcIkZhdGFsIGVycm9yOiBleGNlcHRpb24gJXNcXG5cIiAodG9fc3RyaW5nIGV4bik7XG4gIHByaW50X3Jhd19iYWNrdHJhY2Ugc3RkZXJyIHJhd19iYWNrdHJhY2U7XG4gIGxldCBzdGF0dXMgPSBnZXRfZGVidWdfaW5mb19zdGF0dXMgKCkgaW5cbiAgaWYgc3RhdHVzIDwgMCB0aGVuXG4gICAgcHJlcnJfZW5kbGluZSBlcnJvcnMuKGFicyBzdGF0dXMpO1xuICBmbHVzaCBzdGRlcnJcblxubGV0IHVuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyID0gcmVmIGRlZmF1bHRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXJcblxubGV0IHNldF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciBmbiA9IHVuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIDo9IGZuXG5cbmxldCBlbXB0eV9iYWNrdHJhY2UgOiByYXdfYmFja3RyYWNlID0gW3wgfF1cblxubGV0IHRyeV9nZXRfcmF3X2JhY2t0cmFjZSAoKSA9XG4gIHRyeVxuICAgIGdldF9yYXdfYmFja3RyYWNlICgpXG4gIHdpdGggXyAoKiBPdXRfb2ZfbWVtb3J5PyAqKSAtPlxuICAgIGVtcHR5X2JhY2t0cmFjZVxuXG5sZXQgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbicgZXhuIGRlYnVnZ2VyX2luX3VzZSA9XG4gIHRyeVxuICAgICgqIEdldCB0aGUgYmFja3RyYWNlIG5vdywgaW4gY2FzZSBvbmUgb2YgdGhlIFthdF9leGl0XSBmdW5jdGlvblxuICAgICAgIGRlc3Ryb3lzIGl0LiAqKVxuICAgIGxldCByYXdfYmFja3RyYWNlID1cbiAgICAgIGlmIGRlYnVnZ2VyX2luX3VzZSAoKiBTYW1lIHRlc3QgYXMgaW4gW3J1bnRpbWUvcHJpbnRleGMuY10gKikgdGhlblxuICAgICAgICBlbXB0eV9iYWNrdHJhY2VcbiAgICAgIGVsc2VcbiAgICAgICAgdHJ5X2dldF9yYXdfYmFja3RyYWNlICgpXG4gICAgaW5cbiAgICAodHJ5IFN0ZGxpYi5kb19hdF9leGl0ICgpIHdpdGggXyAtPiAoKSk7XG4gICAgdHJ5XG4gICAgICAhdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgZXhuIHJhd19iYWNrdHJhY2VcbiAgICB3aXRoIGV4bicgLT5cbiAgICAgIGxldCByYXdfYmFja3RyYWNlJyA9IHRyeV9nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgICAgZXByaW50ZiBcIkZhdGFsIGVycm9yOiBleGNlcHRpb24gJXNcXG5cIiAodG9fc3RyaW5nIGV4bik7XG4gICAgICBwcmludF9yYXdfYmFja3RyYWNlIHN0ZGVyciByYXdfYmFja3RyYWNlO1xuICAgICAgZXByaW50ZiBcIkZhdGFsIGVycm9yIGluIHVuY2F1Z2h0IGV4Y2VwdGlvbiBoYW5kbGVyOiBleGNlcHRpb24gJXNcXG5cIlxuICAgICAgICAodG9fc3RyaW5nIGV4bicpO1xuICAgICAgcHJpbnRfcmF3X2JhY2t0cmFjZSBzdGRlcnIgcmF3X2JhY2t0cmFjZSc7XG4gICAgICBmbHVzaCBzdGRlcnJcbiAgd2l0aFxuICAgIHwgT3V0X29mX21lbW9yeSAtPlxuICAgICAgICBwcmVycl9lbmRsaW5lXG4gICAgICAgICAgXCJGYXRhbCBlcnJvcjogb3V0IG9mIG1lbW9yeSBpbiB1bmNhdWdodCBleGNlcHRpb24gaGFuZGxlclwiXG5cbigqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IFtjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbl0gaW5cbiAgIFtydW50aW1lL3ByaW50ZXhjLmNdIHdoaWNoIGV4cGVjdHMgbm8gZXhjZXB0aW9uIGlzIHJhaXNlZC4gKilcbmxldCBoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uIGV4biBkZWJ1Z2dlcl9pbl91c2UgPVxuICB0cnlcbiAgICBoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uJyBleG4gZGVidWdnZXJfaW5fdXNlXG4gIHdpdGggXyAtPlxuICAgICgqIFRoZXJlIGlzIG5vdCBtdWNoIHdlIGNhbiBkbyBhdCB0aGlzIHBvaW50ICopXG4gICAgKClcblxuZXh0ZXJuYWwgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgOiBzdHJpbmcgLT4gJ2EgLT4gdW5pdFxuICA9IFwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZVwiXG5cbmxldCAoKSA9XG4gIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIFwiUHJpbnRleGMuaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvblwiXG4gICAgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvblxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgIFhhdmllciBMZXJveSBhbmQgRGFtaWVuIERvbGlnZXosIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgZ2VuZXJpY19xdW90ZSBxdW90ZXF1b3RlIHMgPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgKGwgKyAyMCkgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcJyc7XG4gIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgIGlmIHMuW2ldID0gJ1xcJydcbiAgICB0aGVuIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcXVvdGVxdW90ZVxuICAgIGVsc2UgQnVmZmVyLmFkZF9jaGFyIGIgIHMuW2ldXG4gIGRvbmU7XG4gIEJ1ZmZlci5hZGRfY2hhciBiICdcXCcnO1xuICBCdWZmZXIuY29udGVudHMgYlxuXG4oKiBUaGlzIGZ1bmN0aW9uIGltcGxlbWVudHMgdGhlIE9wZW4gR3JvdXAgc3BlY2lmaWNhdGlvbiBmb3VuZCBoZXJlOlxuICBbWzFdXSBodHRwOi8vcHVicy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvOTY5OTkxOTc5OS91dGlsaXRpZXMvYmFzZW5hbWUuaHRtbFxuICBJbiBzdGVwIDEgb2YgW1sxXV0sIHdlIGNob29zZSB0byByZXR1cm4gXCIuXCIgZm9yIGVtcHR5IGlucHV0LlxuICAgIChmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzIHZlcnNpb25zIG9mIE9DYW1sKVxuICBJbiBzdGVwIDIsIHdlIGNob29zZSB0byBwcm9jZXNzIFwiLy9cIiBub3JtYWxseS5cbiAgU3RlcCA2IGlzIG5vdCBpbXBsZW1lbnRlZDogd2UgY29uc2lkZXIgdGhhdCB0aGUgW3N1ZmZpeF0gb3BlcmFuZCBpc1xuICAgIGFsd2F5cyBhYnNlbnQuICBTdWZmaXhlcyBhcmUgaGFuZGxlZCBieSBbY2hvcF9zdWZmaXhdIGFuZCBbY2hvcF9leHRlbnNpb25dLlxuKilcbmxldCBnZW5lcmljX2Jhc2VuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZSBuYW1lID1cbiAgbGV0IHJlYyBmaW5kX2VuZCBuID1cbiAgICBpZiBuIDwgMCB0aGVuIFN0cmluZy5zdWIgbmFtZSAwIDFcbiAgICBlbHNlIGlmIGlzX2Rpcl9zZXAgbmFtZSBuIHRoZW4gZmluZF9lbmQgKG4gLSAxKVxuICAgIGVsc2UgZmluZF9iZWcgbiAobiArIDEpXG4gIGFuZCBmaW5kX2JlZyBuIHAgPVxuICAgIGlmIG4gPCAwIHRoZW4gU3RyaW5nLnN1YiBuYW1lIDAgcFxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiBTdHJpbmcuc3ViIG5hbWUgKG4gKyAxKSAocCAtIG4gLSAxKVxuICAgIGVsc2UgZmluZF9iZWcgKG4gLSAxKSBwXG4gIGluXG4gIGlmIG5hbWUgPSBcIlwiXG4gIHRoZW4gY3VycmVudF9kaXJfbmFtZVxuICBlbHNlIGZpbmRfZW5kIChTdHJpbmcubGVuZ3RoIG5hbWUgLSAxKVxuXG4oKiBUaGlzIGZ1bmN0aW9uIGltcGxlbWVudHMgdGhlIE9wZW4gR3JvdXAgc3BlY2lmaWNhdGlvbiBmb3VuZCBoZXJlOlxuICBbWzJdXSBodHRwOi8vcHVicy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvOTY5OTkxOTc5OS91dGlsaXRpZXMvZGlybmFtZS5odG1sXG4gIEluIHN0ZXAgNiBvZiBbWzJdXSwgd2UgY2hvb3NlIHRvIHByb2Nlc3MgXCIvL1wiIG5vcm1hbGx5LlxuKilcbmxldCBnZW5lcmljX2Rpcm5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lIG5hbWUgPVxuICBsZXQgcmVjIHRyYWlsaW5nX3NlcCBuID1cbiAgICBpZiBuIDwgMCB0aGVuIFN0cmluZy5zdWIgbmFtZSAwIDFcbiAgICBlbHNlIGlmIGlzX2Rpcl9zZXAgbmFtZSBuIHRoZW4gdHJhaWxpbmdfc2VwIChuIC0gMSlcbiAgICBlbHNlIGJhc2UgblxuICBhbmQgYmFzZSBuID1cbiAgICBpZiBuIDwgMCB0aGVuIGN1cnJlbnRfZGlyX25hbWVcbiAgICBlbHNlIGlmIGlzX2Rpcl9zZXAgbmFtZSBuIHRoZW4gaW50ZXJtZWRpYXRlX3NlcCBuXG4gICAgZWxzZSBiYXNlIChuIC0gMSlcbiAgYW5kIGludGVybWVkaWF0ZV9zZXAgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCAxXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIGludGVybWVkaWF0ZV9zZXAgKG4gLSAxKVxuICAgIGVsc2UgU3RyaW5nLnN1YiBuYW1lIDAgKG4gKyAxKVxuICBpblxuICBpZiBuYW1lID0gXCJcIlxuICB0aGVuIGN1cnJlbnRfZGlyX25hbWVcbiAgZWxzZSB0cmFpbGluZ19zZXAgKFN0cmluZy5sZW5ndGggbmFtZSAtIDEpXG5cbm1vZHVsZSB0eXBlIFNZU0RFUFMgPSBzaWdcbiAgdmFsIG51bGwgOiBzdHJpbmdcbiAgdmFsIGN1cnJlbnRfZGlyX25hbWUgOiBzdHJpbmdcbiAgdmFsIHBhcmVudF9kaXJfbmFtZSA6IHN0cmluZ1xuICB2YWwgZGlyX3NlcCA6IHN0cmluZ1xuICB2YWwgaXNfZGlyX3NlcCA6IHN0cmluZyAtPiBpbnQgLT4gYm9vbFxuICB2YWwgaXNfcmVsYXRpdmUgOiBzdHJpbmcgLT4gYm9vbFxuICB2YWwgaXNfaW1wbGljaXQgOiBzdHJpbmcgLT4gYm9vbFxuICB2YWwgY2hlY2tfc3VmZml4IDogc3RyaW5nIC0+IHN0cmluZyAtPiBib29sXG4gIHZhbCBjaG9wX3N1ZmZpeF9vcHQgOiBzdWZmaXg6c3RyaW5nIC0+IHN0cmluZyAtPiBzdHJpbmcgb3B0aW9uXG4gIHZhbCB0ZW1wX2Rpcl9uYW1lIDogc3RyaW5nXG4gIHZhbCBxdW90ZSA6IHN0cmluZyAtPiBzdHJpbmdcbiAgdmFsIHF1b3RlX2NvbW1hbmQgOlxuICAgIHN0cmluZyAtPiA/c3RkaW46IHN0cmluZyAtPiA/c3Rkb3V0OiBzdHJpbmcgLT4gP3N0ZGVycjogc3RyaW5nXG4gICAgICAgICAgIC0+IHN0cmluZyBsaXN0IC0+IHN0cmluZ1xuICB2YWwgYmFzZW5hbWUgOiBzdHJpbmcgLT4gc3RyaW5nXG4gIHZhbCBkaXJuYW1lIDogc3RyaW5nIC0+IHN0cmluZ1xuZW5kXG5cbm1vZHVsZSBVbml4IDogU1lTREVQUyA9IHN0cnVjdFxuICBsZXQgbnVsbCA9IFwiL2Rldi9udWxsXCJcbiAgbGV0IGN1cnJlbnRfZGlyX25hbWUgPSBcIi5cIlxuICBsZXQgcGFyZW50X2Rpcl9uYW1lID0gXCIuLlwiXG4gIGxldCBkaXJfc2VwID0gXCIvXCJcbiAgbGV0IGlzX2Rpcl9zZXAgcyBpID0gcy5baV0gPSAnLydcbiAgbGV0IGlzX3JlbGF0aXZlIG4gPSBTdHJpbmcubGVuZ3RoIG4gPCAxIHx8IG4uWzBdIDw+ICcvJ1xuICBsZXQgaXNfaW1wbGljaXQgbiA9XG4gICAgaXNfcmVsYXRpdmUgblxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAyIHx8IFN0cmluZy5zdWIgbiAwIDIgPD4gXCIuL1wiKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAzIHx8IFN0cmluZy5zdWIgbiAwIDMgPD4gXCIuLi9cIilcbiAgbGV0IGNoZWNrX3N1ZmZpeCBuYW1lIHN1ZmYgPVxuICAgIFN0cmluZy5lbmRzX3dpdGggfnN1ZmZpeDpzdWZmIG5hbWVcblxuICBsZXQgY2hvcF9zdWZmaXhfb3B0IH5zdWZmaXggZmlsZW5hbWUgPVxuICAgIGxldCBsZW5fcyA9IFN0cmluZy5sZW5ndGggc3VmZml4IGFuZCBsZW5fZiA9IFN0cmluZy5sZW5ndGggZmlsZW5hbWUgaW5cbiAgICBpZiBsZW5fZiA+PSBsZW5fcyB0aGVuXG4gICAgICBsZXQgciA9IFN0cmluZy5zdWIgZmlsZW5hbWUgKGxlbl9mIC0gbGVuX3MpIGxlbl9zIGluXG4gICAgICBpZiByID0gc3VmZml4IHRoZW5cbiAgICAgICAgU29tZSAoU3RyaW5nLnN1YiBmaWxlbmFtZSAwIChsZW5fZiAtIGxlbl9zKSlcbiAgICAgIGVsc2VcbiAgICAgICAgTm9uZVxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxuICBsZXQgdGVtcF9kaXJfbmFtZSA9XG4gICAgdHJ5IFN5cy5nZXRlbnYgXCJUTVBESVJcIiB3aXRoIE5vdF9mb3VuZCAtPiBcIi90bXBcIlxuICBsZXQgcXVvdGUgPSBnZW5lcmljX3F1b3RlIFwiJ1xcXFwnJ1wiXG4gIGxldCBxdW90ZV9jb21tYW5kIGNtZCA/c3RkaW4gP3N0ZG91dCA/c3RkZXJyIGFyZ3MgPVxuICAgIFN0cmluZy5jb25jYXQgXCIgXCIgKExpc3QubWFwIHF1b3RlIChjbWQgOjogYXJncykpXG4gICAgXiAobWF0Y2ggc3RkaW4gIHdpdGggTm9uZSAtPiBcIlwiIHwgU29tZSBmIC0+IFwiIDxcIiBeIHF1b3RlIGYpXG4gICAgXiAobWF0Y2ggc3Rkb3V0IHdpdGggTm9uZSAtPiBcIlwiIHwgU29tZSBmIC0+IFwiID5cIiBeIHF1b3RlIGYpXG4gICAgXiAobWF0Y2ggc3RkZXJyIHdpdGggTm9uZSAtPiBcIlwiIHwgU29tZSBmIC0+IGlmIHN0ZGVyciA9IHN0ZG91dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBcIiAyPiYxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgXCIgMj5cIiBeIHF1b3RlIGYpXG4gIGxldCBiYXNlbmFtZSA9IGdlbmVyaWNfYmFzZW5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lXG4gIGxldCBkaXJuYW1lID0gZ2VuZXJpY19kaXJuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZVxuZW5kXG5cbm1vZHVsZSBXaW4zMiA6IFNZU0RFUFMgPSBzdHJ1Y3RcbiAgbGV0IG51bGwgPSBcIk5VTFwiXG4gIGxldCBjdXJyZW50X2Rpcl9uYW1lID0gXCIuXCJcbiAgbGV0IHBhcmVudF9kaXJfbmFtZSA9IFwiLi5cIlxuICBsZXQgZGlyX3NlcCA9IFwiXFxcXFwiXG4gIGxldCBpc19kaXJfc2VwIHMgaSA9IGxldCBjID0gcy5baV0gaW4gYyA9ICcvJyB8fCBjID0gJ1xcXFwnIHx8IGMgPSAnOidcbiAgbGV0IGlzX3JlbGF0aXZlIG4gPVxuICAgIChTdHJpbmcubGVuZ3RoIG4gPCAxIHx8IG4uWzBdIDw+ICcvJylcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMSB8fCBuLlswXSA8PiAnXFxcXCcpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDIgfHwgbi5bMV0gPD4gJzonKVxuICBsZXQgaXNfaW1wbGljaXQgbiA9XG4gICAgaXNfcmVsYXRpdmUgblxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAyIHx8IFN0cmluZy5zdWIgbiAwIDIgPD4gXCIuL1wiKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAyIHx8IFN0cmluZy5zdWIgbiAwIDIgPD4gXCIuXFxcXFwiKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAzIHx8IFN0cmluZy5zdWIgbiAwIDMgPD4gXCIuLi9cIilcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMyB8fCBTdHJpbmcuc3ViIG4gMCAzIDw+IFwiLi5cXFxcXCIpXG4gIGxldCBjaGVja19zdWZmaXggbmFtZSBzdWZmID1cbiAgIFN0cmluZy5sZW5ndGggbmFtZSA+PSBTdHJpbmcubGVuZ3RoIHN1ZmYgJiZcbiAgIChsZXQgcyA9IFN0cmluZy5zdWIgbmFtZSAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gU3RyaW5nLmxlbmd0aCBzdWZmKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTdHJpbmcubGVuZ3RoIHN1ZmYpIGluXG4gICAgU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBzID0gU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBzdWZmKVxuXG4gIGxldCBjaG9wX3N1ZmZpeF9vcHQgfnN1ZmZpeCBmaWxlbmFtZSA9XG4gICAgbGV0IGxlbl9zID0gU3RyaW5nLmxlbmd0aCBzdWZmaXggYW5kIGxlbl9mID0gU3RyaW5nLmxlbmd0aCBmaWxlbmFtZSBpblxuICAgIGlmIGxlbl9mID49IGxlbl9zIHRoZW5cbiAgICAgIGxldCByID0gU3RyaW5nLnN1YiBmaWxlbmFtZSAobGVuX2YgLSBsZW5fcykgbGVuX3MgaW5cbiAgICAgIGlmIFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgciA9IFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgc3VmZml4IHRoZW5cbiAgICAgICAgU29tZSAoU3RyaW5nLnN1YiBmaWxlbmFtZSAwIChsZW5fZiAtIGxlbl9zKSlcbiAgICAgIGVsc2VcbiAgICAgICAgTm9uZVxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxuXG4gIGxldCB0ZW1wX2Rpcl9uYW1lID1cbiAgICB0cnkgU3lzLmdldGVudiBcIlRFTVBcIiB3aXRoIE5vdF9mb3VuZCAtPiBcIi5cIlxuICBsZXQgcXVvdGUgcyA9XG4gICAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgKGwgKyAyMCkgaW5cbiAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcIic7XG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IGwgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcIicgZWxzZVxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnXFxcIicgLT4gbG9vcF9icyAwIGk7XG4gICAgICB8ICdcXFxcJyAtPiBsb29wX2JzIDAgaTtcbiAgICAgIHwgYyAgICAtPiBCdWZmZXIuYWRkX2NoYXIgYiBjOyBsb29wIChpKzEpO1xuICAgIGFuZCBsb29wX2JzIG4gaSA9XG4gICAgICBpZiBpID0gbCB0aGVuIGJlZ2luXG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFwiJztcbiAgICAgICAgYWRkX2JzIG47XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgIHwgJ1xcXCInIC0+IGFkZF9icyAoMipuKzEpOyBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcIic7IGxvb3AgKGkrMSk7XG4gICAgICAgIHwgJ1xcXFwnIC0+IGxvb3BfYnMgKG4rMSkgKGkrMSk7XG4gICAgICAgIHwgXyAgICAtPiBhZGRfYnMgbjsgbG9vcCBpXG4gICAgICBlbmRcbiAgICBhbmQgYWRkX2JzIG4gPSBmb3IgX2ogPSAxIHRvIG4gZG8gQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXFwnOyBkb25lXG4gICAgaW5cbiAgICBsb29wIDA7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJcbigqXG5RdW90aW5nIGNvbW1hbmRzIGZvciBleGVjdXRpb24gYnkgY21kLmV4ZSBpcyBkaWZmaWN1bHQuXG4xLSBFYWNoIGFyZ3VtZW50IGlzIGZpcnN0IHF1b3RlZCB1c2luZyB0aGUgXCJxdW90ZVwiIGZ1bmN0aW9uIGFib3ZlLCB0b1xuICAgcHJvdGVjdCBpdCBhZ2FpbnN0IHRoZSBwcm9jZXNzaW5nIHBlcmZvcm1lZCBieSB0aGUgQyBydW50aW1lIHN5c3RlbSxcbiAgIHRoZW4gY21kLmV4ZSdzIHNwZWNpYWwgY2hhcmFjdGVycyBhcmUgZXNjYXBlZCB3aXRoICdeJywgdXNpbmdcbiAgIHRoZSBcInF1b3RlX2NtZFwiIGZ1bmN0aW9uIGJlbG93LiAgRm9yIG1vcmUgZGV0YWlscywgc2VlXG4gICBodHRwczovL2Jsb2dzLm1zZG4ubWljcm9zb2Z0LmNvbS90d2lzdHlsaXR0bGVwYXNzYWdlc2FsbGFsaWtlLzIwMTEvMDQvMjNcbjItIFRoZSBjb21tYW5kIGFuZCB0aGUgcmVkaXJlY3Rpb24gZmlsZXMsIGlmIGFueSwgbXVzdCBiZSBkb3VibGUtcXVvdGVkXG4gICBpbiBjYXNlIHRoZXkgY29udGFpbiBzcGFjZXMuICBUaGlzIHF1b3RpbmcgaXMgaW50ZXJwcmV0ZWQgYnkgY21kLmV4ZSxcbiAgIG5vdCBieSB0aGUgQyBydW50aW1lIHN5c3RlbSwgaGVuY2UgdGhlIFwicXVvdGVcIiBmdW5jdGlvbiBhYm92ZVxuICAgY2Fubm90IGJlIHVzZWQuICBUaGUgdHdvIGNoYXJhY3RlcnMgd2UgZG9uJ3Qga25vdyBob3cgdG8gcXVvdGVcbiAgIGluc2lkZSBhIGRvdWJsZS1xdW90ZWQgY21kLmV4ZSBzdHJpbmcgYXJlIGRvdWJsZS1xdW90ZSBhbmQgcGVyY2VudC5cbiAgIFdlIGp1c3QgZmFpbCBpZiB0aGUgY29tbWFuZCBuYW1lIG9yIHRoZSByZWRpcmVjdGlvbiBmaWxlIG5hbWVzXG4gICBjb250YWluIGEgZG91YmxlIHF1b3RlIChub3QgYWxsb3dlZCBpbiBXaW5kb3dzIGZpbGUgbmFtZXMsIGFueXdheSlcbiAgIG9yIGEgcGVyY2VudC4gIFNlZSBmdW5jdGlvbiBcInF1b3RlX2NtZF9maWxlbmFtZVwiIGJlbG93LlxuMy0gVGhlIHdob2xlIHN0cmluZyBwYXNzZWQgdG8gU3lzLmNvbW1hbmQgaXMgdGhlbiBlbmNsb3NlZCBpbiBkb3VibGVcbiAgIHF1b3Rlcywgd2hpY2ggYXJlIGltbWVkaWF0ZWx5IHN0cmlwcGVkIGJ5IGNtZC5leGUuICBPdGhlcndpc2UsXG4gICBzb21lIG9mIHRoZSBkb3VibGUgcXVvdGVzIGZyb20gc3RlcCAyIGFib3ZlIGNhbiBiZSBtaXNwYXJzZWQuXG4gICBTZWUgZS5nLiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvOTk2NTE0MVxuKilcbiAgbGV0IHF1b3RlX2NtZCBzID1cbiAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgKFN0cmluZy5sZW5ndGggcyArIDIwKSBpblxuICAgIFN0cmluZy5pdGVyXG4gICAgICAoZnVuIGMgLT5cbiAgICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgIHwgJygnIHwgJyknIHwgJyEnIHwgJ14nIHwgJyUnIHwgJ1xcXCInIHwgJzwnIHwgJz4nIHwgJyYnIHwgJ3wnIC0+XG4gICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXic7IEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjKVxuICAgICAgcztcbiAgICBCdWZmZXIuY29udGVudHMgYlxuICBsZXQgcXVvdGVfY21kX2ZpbGVuYW1lIGYgPVxuICAgIGlmIFN0cmluZy5jb250YWlucyBmICdcXFwiJyB8fCBTdHJpbmcuY29udGFpbnMgZiAnJScgdGhlblxuICAgICAgZmFpbHdpdGggKFwiRmlsZW5hbWUucXVvdGVfY29tbWFuZDogYmFkIGZpbGUgbmFtZSBcIiBeIGYpXG4gICAgZWxzZSBpZiBTdHJpbmcuY29udGFpbnMgZiAnICcgdGhlblxuICAgICAgXCJcXFwiXCIgXiBmIF4gXCJcXFwiXCJcbiAgICBlbHNlXG4gICAgICBmXG4gICgqIFJlZGlyZWN0aW9ucyBpbiBjbWQuZXhlOiBzZWUgaHR0cHM6Ly9zczY0LmNvbS9udC9zeW50YXgtcmVkaXJlY3Rpb24uaHRtbFxuICAgICBhbmQgaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvcHJldmlvdXMtdmVyc2lvbnMvd2luZG93cy9pdC1wcm8vd2luZG93cy14cC9iYjQ5MDk4Mih2PXRlY2huZXQuMTApXG4gICopXG4gIGxldCBxdW90ZV9jb21tYW5kIGNtZCA/c3RkaW4gP3N0ZG91dCA/c3RkZXJyIGFyZ3MgPVxuICAgIFN0cmluZy5jb25jYXQgXCJcIiBbXG4gICAgICBcIlxcXCJcIjtcbiAgICAgIHF1b3RlX2NtZF9maWxlbmFtZSBjbWQ7XG4gICAgICBcIiBcIjtcbiAgICAgIHF1b3RlX2NtZCAoU3RyaW5nLmNvbmNhdCBcIiBcIiAoTGlzdC5tYXAgcXVvdGUgYXJncykpO1xuICAgICAgKG1hdGNoIHN0ZGluICB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBcIiA8XCIgXiBxdW90ZV9jbWRfZmlsZW5hbWUgZik7XG4gICAgICAobWF0Y2ggc3Rkb3V0IHdpdGggTm9uZSAtPiBcIlwiIHwgU29tZSBmIC0+IFwiID5cIiBeIHF1b3RlX2NtZF9maWxlbmFtZSBmKTtcbiAgICAgIChtYXRjaCBzdGRlcnIgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBzdGRlcnIgPSBzdGRvdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuIFwiIDI+JjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgXCIgMj5cIiBeIHF1b3RlX2NtZF9maWxlbmFtZSBmKTtcbiAgICAgIFwiXFxcIlwiXG4gICAgXVxuICBsZXQgaGFzX2RyaXZlIHMgPVxuICAgIGxldCBpc19sZXR0ZXIgPSBmdW5jdGlvblxuICAgICAgfCAnQScgLi4gJ1onIHwgJ2EnIC4uICd6JyAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2VcbiAgICBpblxuICAgIFN0cmluZy5sZW5ndGggcyA+PSAyICYmIGlzX2xldHRlciBzLlswXSAmJiBzLlsxXSA9ICc6J1xuICBsZXQgZHJpdmVfYW5kX3BhdGggcyA9XG4gICAgaWYgaGFzX2RyaXZlIHNcbiAgICB0aGVuIChTdHJpbmcuc3ViIHMgMCAyLCBTdHJpbmcuc3ViIHMgMiAoU3RyaW5nLmxlbmd0aCBzIC0gMikpXG4gICAgZWxzZSAoXCJcIiwgcylcbiAgbGV0IGRpcm5hbWUgcyA9XG4gICAgbGV0IChkcml2ZSwgcGF0aCkgPSBkcml2ZV9hbmRfcGF0aCBzIGluXG4gICAgbGV0IGRpciA9IGdlbmVyaWNfZGlybmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWUgcGF0aCBpblxuICAgIGRyaXZlIF4gZGlyXG4gIGxldCBiYXNlbmFtZSBzID1cbiAgICBsZXQgKF9kcml2ZSwgcGF0aCkgPSBkcml2ZV9hbmRfcGF0aCBzIGluXG4gICAgZ2VuZXJpY19iYXNlbmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWUgcGF0aFxuZW5kXG5cbm1vZHVsZSBDeWd3aW4gOiBTWVNERVBTID0gc3RydWN0XG4gIGxldCBudWxsID0gXCIvZGV2L251bGxcIlxuICBsZXQgY3VycmVudF9kaXJfbmFtZSA9IFwiLlwiXG4gIGxldCBwYXJlbnRfZGlyX25hbWUgPSBcIi4uXCJcbiAgbGV0IGRpcl9zZXAgPSBcIi9cIlxuICBsZXQgaXNfZGlyX3NlcCA9IFdpbjMyLmlzX2Rpcl9zZXBcbiAgbGV0IGlzX3JlbGF0aXZlID0gV2luMzIuaXNfcmVsYXRpdmVcbiAgbGV0IGlzX2ltcGxpY2l0ID0gV2luMzIuaXNfaW1wbGljaXRcbiAgbGV0IGNoZWNrX3N1ZmZpeCA9IFdpbjMyLmNoZWNrX3N1ZmZpeFxuICBsZXQgY2hvcF9zdWZmaXhfb3B0ID0gV2luMzIuY2hvcF9zdWZmaXhfb3B0XG4gIGxldCB0ZW1wX2Rpcl9uYW1lID0gVW5peC50ZW1wX2Rpcl9uYW1lXG4gIGxldCBxdW90ZSA9IFVuaXgucXVvdGVcbiAgbGV0IHF1b3RlX2NvbW1hbmQgPSBVbml4LnF1b3RlX2NvbW1hbmRcbiAgbGV0IGJhc2VuYW1lID0gZ2VuZXJpY19iYXNlbmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWVcbiAgbGV0IGRpcm5hbWUgPSBnZW5lcmljX2Rpcm5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lXG5lbmRcblxubW9kdWxlIFN5c2RlcHMgPVxuICAodmFsIChtYXRjaCBTeXMub3NfdHlwZSB3aXRoXG4gICAgICAgfCBcIldpbjMyXCIgLT4gKG1vZHVsZSBXaW4zMjogU1lTREVQUylcbiAgICAgICB8IFwiQ3lnd2luXCIgLT4gKG1vZHVsZSBDeWd3aW46IFNZU0RFUFMpXG4gICAgICAgfCBfIC0+IChtb2R1bGUgVW5peDogU1lTREVQUykpKVxuXG5pbmNsdWRlIFN5c2RlcHNcblxubGV0IGNvbmNhdCBkaXJuYW1lIGZpbGVuYW1lID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIGRpcm5hbWUgaW5cbiAgaWYgbCA9IDAgfHwgaXNfZGlyX3NlcCBkaXJuYW1lIChsLTEpXG4gIHRoZW4gZGlybmFtZSBeIGZpbGVuYW1lXG4gIGVsc2UgZGlybmFtZSBeIGRpcl9zZXAgXiBmaWxlbmFtZVxuXG5sZXQgY2hvcF9zdWZmaXggbmFtZSBzdWZmID1cbiAgaWYgY2hlY2tfc3VmZml4IG5hbWUgc3VmZlxuICB0aGVuIFN0cmluZy5zdWIgbmFtZSAwIChTdHJpbmcubGVuZ3RoIG5hbWUgLSBTdHJpbmcubGVuZ3RoIHN1ZmYpXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJGaWxlbmFtZS5jaG9wX3N1ZmZpeFwiXG5cbmxldCBleHRlbnNpb25fbGVuIG5hbWUgPVxuICBsZXQgcmVjIGNoZWNrIGkwIGkgPVxuICAgIGlmIGkgPCAwIHx8IGlzX2Rpcl9zZXAgbmFtZSBpIHRoZW4gMFxuICAgIGVsc2UgaWYgbmFtZS5baV0gPSAnLicgdGhlbiBjaGVjayBpMCAoaSAtIDEpXG4gICAgZWxzZSBTdHJpbmcubGVuZ3RoIG5hbWUgLSBpMFxuICBpblxuICBsZXQgcmVjIHNlYXJjaF9kb3QgaSA9XG4gICAgaWYgaSA8IDAgfHwgaXNfZGlyX3NlcCBuYW1lIGkgdGhlbiAwXG4gICAgZWxzZSBpZiBuYW1lLltpXSA9ICcuJyB0aGVuIGNoZWNrIGkgKGkgLSAxKVxuICAgIGVsc2Ugc2VhcmNoX2RvdCAoaSAtIDEpXG4gIGluXG4gIHNlYXJjaF9kb3QgKFN0cmluZy5sZW5ndGggbmFtZSAtIDEpXG5cbmxldCBleHRlbnNpb24gbmFtZSA9XG4gIGxldCBsID0gZXh0ZW5zaW9uX2xlbiBuYW1lIGluXG4gIGlmIGwgPSAwIHRoZW4gXCJcIiBlbHNlIFN0cmluZy5zdWIgbmFtZSAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gbCkgbFxuXG5sZXQgY2hvcF9leHRlbnNpb24gbmFtZSA9XG4gIGxldCBsID0gZXh0ZW5zaW9uX2xlbiBuYW1lIGluXG4gIGlmIGwgPSAwIHRoZW4gaW52YWxpZF9hcmcgXCJGaWxlbmFtZS5jaG9wX2V4dGVuc2lvblwiXG4gIGVsc2UgU3RyaW5nLnN1YiBuYW1lIDAgKFN0cmluZy5sZW5ndGggbmFtZSAtIGwpXG5cbmxldCByZW1vdmVfZXh0ZW5zaW9uIG5hbWUgPVxuICBsZXQgbCA9IGV4dGVuc2lvbl9sZW4gbmFtZSBpblxuICBpZiBsID0gMCB0aGVuIG5hbWUgZWxzZSBTdHJpbmcuc3ViIG5hbWUgMCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gbClcblxuZXh0ZXJuYWwgb3Blbl9kZXNjOiBzdHJpbmcgLT4gb3Blbl9mbGFnIGxpc3QgLT4gaW50IC0+IGludCA9IFwiY2FtbF9zeXNfb3BlblwiXG5leHRlcm5hbCBjbG9zZV9kZXNjOiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9zeXNfY2xvc2VcIlxuXG5sZXQgcHJuZyA9IGxhenkoUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0ICgpKVxuXG5sZXQgdGVtcF9maWxlX25hbWUgdGVtcF9kaXIgcHJlZml4IHN1ZmZpeCA9XG4gIGxldCBybmQgPSAoUmFuZG9tLlN0YXRlLmJpdHMgKExhenkuZm9yY2UgcHJuZykpIGxhbmQgMHhGRkZGRkYgaW5cbiAgY29uY2F0IHRlbXBfZGlyIChQcmludGYuc3ByaW50ZiBcIiVzJTA2eCVzXCIgcHJlZml4IHJuZCBzdWZmaXgpXG5cblxubGV0IGN1cnJlbnRfdGVtcF9kaXJfbmFtZSA9IHJlZiB0ZW1wX2Rpcl9uYW1lXG5cbmxldCBzZXRfdGVtcF9kaXJfbmFtZSBzID0gY3VycmVudF90ZW1wX2Rpcl9uYW1lIDo9IHNcbmxldCBnZXRfdGVtcF9kaXJfbmFtZSAoKSA9ICFjdXJyZW50X3RlbXBfZGlyX25hbWVcblxubGV0IHRlbXBfZmlsZSA/KHRlbXBfZGlyID0gIWN1cnJlbnRfdGVtcF9kaXJfbmFtZSkgcHJlZml4IHN1ZmZpeCA9XG4gIGxldCByZWMgdHJ5X25hbWUgY291bnRlciA9XG4gICAgbGV0IG5hbWUgPSB0ZW1wX2ZpbGVfbmFtZSB0ZW1wX2RpciBwcmVmaXggc3VmZml4IGluXG4gICAgdHJ5XG4gICAgICBjbG9zZV9kZXNjKG9wZW5fZGVzYyBuYW1lIFtPcGVuX3dyb25seTsgT3Blbl9jcmVhdDsgT3Blbl9leGNsXSAwbzYwMCk7XG4gICAgICBuYW1lXG4gICAgd2l0aCBTeXNfZXJyb3IgXyBhcyBlIC0+XG4gICAgICBpZiBjb3VudGVyID49IDEwMDAgdGhlbiByYWlzZSBlIGVsc2UgdHJ5X25hbWUgKGNvdW50ZXIgKyAxKVxuICBpbiB0cnlfbmFtZSAwXG5cbmxldCBvcGVuX3RlbXBfZmlsZSA/KG1vZGUgPSBbT3Blbl90ZXh0XSkgPyhwZXJtcyA9IDBvNjAwKVxuICAgICAgICAgICAgICAgICAgID8odGVtcF9kaXIgPSAhY3VycmVudF90ZW1wX2Rpcl9uYW1lKSBwcmVmaXggc3VmZml4ID1cbiAgbGV0IHJlYyB0cnlfbmFtZSBjb3VudGVyID1cbiAgICBsZXQgbmFtZSA9IHRlbXBfZmlsZV9uYW1lIHRlbXBfZGlyIHByZWZpeCBzdWZmaXggaW5cbiAgICB0cnlcbiAgICAgIChuYW1lLFxuICAgICAgIG9wZW5fb3V0X2dlbiAoT3Blbl93cm9ubHk6Ok9wZW5fY3JlYXQ6Ok9wZW5fZXhjbDo6bW9kZSkgcGVybXMgbmFtZSlcbiAgICB3aXRoIFN5c19lcnJvciBfIGFzIGUgLT5cbiAgICAgIGlmIGNvdW50ZXIgPj0gMTAwMCB0aGVuIHJhaXNlIGUgZWxzZSB0cnlfbmFtZSAoY291bnRlciArIDEpXG4gIGluIHRyeV9uYW1lIDBcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQ29tcGxleCBudW1iZXJzICopXG5cbnR5cGUgdCA9IHsgcmU6IGZsb2F0OyBpbTogZmxvYXQgfVxuXG5sZXQgemVybyA9IHsgcmUgPSAwLjA7IGltID0gMC4wIH1cbmxldCBvbmUgPSB7IHJlID0gMS4wOyBpbSA9IDAuMCB9XG5sZXQgaSA9IHsgcmUgPSAwLjA7IGltID0gMS4wIH1cblxubGV0IGFkZCB4IHkgPSB7IHJlID0geC5yZSArLiB5LnJlOyBpbSA9IHguaW0gKy4geS5pbSB9XG5cbmxldCBzdWIgeCB5ID0geyByZSA9IHgucmUgLS4geS5yZTsgaW0gPSB4LmltIC0uIHkuaW0gfVxuXG5sZXQgbmVnIHggPSB7IHJlID0gLS4geC5yZTsgaW0gPSAtLiB4LmltIH1cblxubGV0IGNvbmogeCA9IHsgcmUgPSB4LnJlOyBpbSA9IC0uIHguaW0gfVxuXG5sZXQgbXVsIHggeSA9IHsgcmUgPSB4LnJlICouIHkucmUgLS4geC5pbSAqLiB5LmltO1xuICAgICAgICAgICAgICAgIGltID0geC5yZSAqLiB5LmltICsuIHguaW0gKi4geS5yZSB9XG5cbmxldCBkaXYgeCB5ID1cbiAgaWYgYWJzX2Zsb2F0IHkucmUgPj0gYWJzX2Zsb2F0IHkuaW0gdGhlblxuICAgIGxldCByID0geS5pbSAvLiB5LnJlIGluXG4gICAgbGV0IGQgPSB5LnJlICsuIHIgKi4geS5pbSBpblxuICAgIHsgcmUgPSAoeC5yZSArLiByICouIHguaW0pIC8uIGQ7XG4gICAgICBpbSA9ICh4LmltIC0uIHIgKi4geC5yZSkgLy4gZCB9XG4gIGVsc2VcbiAgICBsZXQgciA9IHkucmUgLy4geS5pbSBpblxuICAgIGxldCBkID0geS5pbSArLiByICouIHkucmUgaW5cbiAgICB7IHJlID0gKHIgKi4geC5yZSArLiB4LmltKSAvLiBkO1xuICAgICAgaW0gPSAociAqLiB4LmltIC0uIHgucmUpIC8uIGQgfVxuXG5sZXQgaW52IHggPSBkaXYgb25lIHhcblxubGV0IG5vcm0yIHggPSB4LnJlICouIHgucmUgKy4geC5pbSAqLiB4LmltXG5cbmxldCBub3JtIHggPVxuICAoKiBXYXRjaCBvdXQgZm9yIG92ZXJmbG93IGluIGNvbXB1dGluZyByZV4yICsgaW1eMiAqKVxuICBsZXQgciA9IGFic19mbG9hdCB4LnJlIGFuZCBpID0gYWJzX2Zsb2F0IHguaW0gaW5cbiAgaWYgciA9IDAuMCB0aGVuIGlcbiAgZWxzZSBpZiBpID0gMC4wIHRoZW4gclxuICBlbHNlIGlmIHIgPj0gaSB0aGVuXG4gICAgbGV0IHEgPSBpIC8uIHIgaW4gciAqLiBzcXJ0KDEuMCArLiBxICouIHEpXG4gIGVsc2VcbiAgICBsZXQgcSA9IHIgLy4gaSBpbiBpICouIHNxcnQoMS4wICsuIHEgKi4gcSlcblxubGV0IGFyZyB4ID0gYXRhbjIgeC5pbSB4LnJlXG5cbmxldCBwb2xhciBuIGEgPSB7IHJlID0gY29zIGEgKi4gbjsgaW0gPSBzaW4gYSAqLiBuIH1cblxubGV0IHNxcnQgeCA9XG4gIGlmIHgucmUgPSAwLjAgJiYgeC5pbSA9IDAuMCB0aGVuIHsgcmUgPSAwLjA7IGltID0gMC4wIH1cbiAgZWxzZSBiZWdpblxuICAgIGxldCByID0gYWJzX2Zsb2F0IHgucmUgYW5kIGkgPSBhYnNfZmxvYXQgeC5pbSBpblxuICAgIGxldCB3ID1cbiAgICAgIGlmIHIgPj0gaSB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBxID0gaSAvLiByIGluXG4gICAgICAgIHNxcnQocikgKi4gc3FydCgwLjUgKi4gKDEuMCArLiBzcXJ0KDEuMCArLiBxICouIHEpKSlcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIGxldCBxID0gciAvLiBpIGluXG4gICAgICAgIHNxcnQoaSkgKi4gc3FydCgwLjUgKi4gKHEgKy4gc3FydCgxLjAgKy4gcSAqLiBxKSkpXG4gICAgICBlbmQgaW5cbiAgICBpZiB4LnJlID49IDAuMFxuICAgIHRoZW4geyByZSA9IHc7ICBpbSA9IDAuNSAqLiB4LmltIC8uIHcgfVxuICAgIGVsc2UgeyByZSA9IDAuNSAqLiBpIC8uIHc7ICBpbSA9IGlmIHguaW0gPj0gMC4wIHRoZW4gdyBlbHNlIC0uIHcgfVxuICBlbmRcblxubGV0IGV4cCB4ID1cbiAgbGV0IGUgPSBleHAgeC5yZSBpbiB7IHJlID0gZSAqLiBjb3MgeC5pbTsgaW0gPSBlICouIHNpbiB4LmltIH1cblxubGV0IGxvZyB4ID0geyByZSA9IGxvZyAobm9ybSB4KTsgaW0gPSBhdGFuMiB4LmltIHgucmUgfVxuXG5sZXQgcG93IHggeSA9IGV4cCAobXVsIHkgKGxvZyB4KSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICBCZW5vaXQgVmF1Z29uLCBFTlNUQSAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogUGFkZGluZyBwb3NpdGlvbi4gKilcbnR5cGUgcGFkdHkgPVxuICB8IExlZnQgICAoKiBUZXh0IGlzIGxlZnQganVzdGlmaWVkICgnLScgb3B0aW9uKS4gICAgICAgICAgICAgICAqKVxuICB8IFJpZ2h0ICAoKiBUZXh0IGlzIHJpZ2h0IGp1c3RpZmllZCAobm8gJy0nIG9wdGlvbikuICAgICAgICAgICAqKVxuICB8IFplcm9zICAoKiBUZXh0IGlzIHJpZ2h0IGp1c3RpZmllZCBieSB6ZXJvcyAoc2VlICcwJyBvcHRpb24pLiAqKVxuXG4oKioqKVxuXG4oKiBJbnRlZ2VyIGNvbnZlcnNpb24uICopXG50eXBlIGludF9jb252ID1cbiAgfCBJbnRfZCB8IEludF9wZCB8IEludF9zZCAgICAgICAgKCogICVkIHwgJStkIHwgJSBkICAqKVxuICB8IEludF9pIHwgSW50X3BpIHwgSW50X3NpICAgICAgICAoKiAgJWkgfCAlK2kgfCAlIGkgICopXG4gIHwgSW50X3ggfCBJbnRfQ3ggICAgICAgICAgICAgICAgICgqICAleCB8ICUjeCAgICAgICAgKilcbiAgfCBJbnRfWCB8IEludF9DWCAgICAgICAgICAgICAgICAgKCogICVYIHwgJSNYICAgICAgICAqKVxuICB8IEludF9vIHwgSW50X0NvICAgICAgICAgICAgICAgICAoKiAgJW8gfCAlI28gICAgICAgICopXG4gIHwgSW50X3UgICAgICAgICAgICAgICAgICAgICAgICAgICgqICAldSAgICAgICAgICAgICAgKilcbiAgfCBJbnRfQ2QgfCBJbnRfQ2kgfCBJbnRfQ3UgICAgICAgKCogICUjZCB8ICUjaSB8ICUjdSAqKVxuXG4oKiBGbG9hdCBjb252ZXJzaW9uLiAqKVxudHlwZSBmbG9hdF9mbGFnX2NvbnYgPVxuICB8IEZsb2F0X2ZsYWdfICAgICAgICAgICAgICAgICAgICAoKiAlW2ZlRWdHRmhIXSAqKVxuICB8IEZsb2F0X2ZsYWdfcCAgICAgICAgICAgICAgICAgICAoKiAlK1tmZUVnR0ZoSF0gKilcbiAgfCBGbG9hdF9mbGFnX3MgICAgICAgICAgICAgICAgICAgKCogJSBbZmVFZ0dGaEhdICopXG50eXBlIGZsb2F0X2tpbmRfY29udiA9XG4gIHwgRmxvYXRfZiAgICAgICAgICAgICAgICAgICAgICAgICgqICAlZiB8ICUrZiB8ICUgZiAgKilcbiAgfCBGbG9hdF9lICAgICAgICAgICAgICAgICAgICAgICAgKCogICVlIHwgJStlIHwgJSBlICAqKVxuICB8IEZsb2F0X0UgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJUUgfCAlK0UgfCAlIEUgICopXG4gIHwgRmxvYXRfZyAgICAgICAgICAgICAgICAgICAgICAgICgqICAlZyB8ICUrZyB8ICUgZyAgKilcbiAgfCBGbG9hdF9HICAgICAgICAgICAgICAgICAgICAgICAgKCogICVHIHwgJStHIHwgJSBHICAqKVxuICB8IEZsb2F0X0YgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJUYgfCAlK0YgfCAlIEYgICopXG4gIHwgRmxvYXRfaCAgICAgICAgICAgICAgICAgICAgICAgICgqICAlaCB8ICUraCB8ICUgaCAgKilcbiAgfCBGbG9hdF9IICAgICAgICAgICAgICAgICAgICAgICAgKCogICVIIHwgJStIIHwgJSBIICAqKVxuICB8IEZsb2F0X0NGICAgICAgICAgICAgICAgICAgICAgICAoKiAgJSNGfCAlKyNGfCAlICNGICopXG50eXBlIGZsb2F0X2NvbnYgPSBmbG9hdF9mbGFnX2NvbnYgKiBmbG9hdF9raW5kX2NvbnZcblxuKCoqKilcblxuKCogQ2hhciBzZXRzIChzZWUgJVsuLi5dKSBhcmUgYml0bWFwcyBpbXBsZW1lbnRlZCBhcyAzMi1jaGFyIHN0cmluZ3MuICopXG50eXBlIGNoYXJfc2V0ID0gc3RyaW5nXG5cbigqKiopXG5cbigqIENvdW50ZXIgdXNlZCBpbiBTY2FuZi4gKilcbnR5cGUgY291bnRlciA9XG4gIHwgTGluZV9jb3VudGVyICAgICAoKiAgJWwgICAgICAqKVxuICB8IENoYXJfY291bnRlciAgICAgKCogICVuICAgICAgKilcbiAgfCBUb2tlbl9jb3VudGVyICAgICgqICAlTiwgJUwgICopXG5cbigqKiopXG5cbigqIFBhZGRpbmcgb2Ygc3RyaW5ncyBhbmQgbnVtYmVycy4gKilcbnR5cGUgKCdhLCAnYikgcGFkZGluZyA9XG4gICgqIE5vIHBhZGRpbmcgKGV4OiBcIiVkXCIpICopXG4gIHwgTm9fcGFkZGluZyAgOiAoJ2EsICdhKSBwYWRkaW5nXG4gICgqIExpdGVyYWwgcGFkZGluZyAoZXg6IFwiJThkXCIpICopXG4gIHwgTGl0X3BhZGRpbmcgOiBwYWR0eSAqIGludCAtPiAoJ2EsICdhKSBwYWRkaW5nXG4gICgqIFBhZGRpbmcgYXMgZXh0cmEgYXJndW1lbnQgKGV4OiBcIiUqZFwiKSAqKVxuICB8IEFyZ19wYWRkaW5nIDogcGFkdHkgLT4gKGludCAtPiAnYSwgJ2EpIHBhZGRpbmdcblxuKCogU29tZSBmb3JtYXRzLCBzdWNoIGFzICVfZCxcbiAgIG9ubHkgYWNjZXB0IGFuIG9wdGlvbmFsIG51bWJlciBhcyBwYWRkaW5nIG9wdGlvbiAobm8gZXh0cmEgYXJndW1lbnQpICopXG50eXBlIHBhZF9vcHRpb24gPSBpbnQgb3B0aW9uXG5cbigqIFByZWNpc2lvbiBvZiBmbG9hdHMgYW5kICcwJy1wYWRkaW5nIG9mIGludGVnZXJzLiAqKVxudHlwZSAoJ2EsICdiKSBwcmVjaXNpb24gPVxuICAoKiBObyBwcmVjaXNpb24gKGV4OiBcIiVmXCIpICopXG4gIHwgTm9fcHJlY2lzaW9uIDogKCdhLCAnYSkgcHJlY2lzaW9uXG4gICgqIExpdGVyYWwgcHJlY2lzaW9uIChleDogXCIlLjNmXCIpICopXG4gIHwgTGl0X3ByZWNpc2lvbiA6IGludCAtPiAoJ2EsICdhKSBwcmVjaXNpb25cbiAgKCogUHJlY2lzaW9uIGFzIGV4dHJhIGFyZ3VtZW50IChleDogXCIlLipmXCIpICopXG4gIHwgQXJnX3ByZWNpc2lvbiA6IChpbnQgLT4gJ2EsICdhKSBwcmVjaXNpb25cblxuKCogU29tZSBmb3JtYXRzLCBzdWNoIGFzICVfZixcbiAgIG9ubHkgYWNjZXB0IGFuIG9wdGlvbmFsIG51bWJlciBhcyBwcmVjaXNpb24gb3B0aW9uIChubyBleHRyYSBhcmd1bWVudCkgKilcbnR5cGUgcHJlY19vcHRpb24gPSBpbnQgb3B0aW9uXG5cbigqIHNlZSB0aGUgQ3VzdG9tIGZvcm1hdCBjb21iaW5hdG9yICopXG50eXBlICgnYSwgJ2IsICdjKSBjdXN0b21fYXJpdHkgPVxuICB8IEN1c3RvbV96ZXJvIDogKCdhLCBzdHJpbmcsICdhKSBjdXN0b21fYXJpdHlcbiAgfCBDdXN0b21fc3VjYyA6ICgnYSwgJ2IsICdjKSBjdXN0b21fYXJpdHkgLT5cbiAgICAoJ2EsICd4IC0+ICdiLCAneCAtPiAnYykgY3VzdG9tX2FyaXR5XG5cbigqKiopXG5cbigqICAgICAgICBSZWxhdGlvbmFsIGZvcm1hdCB0eXBlc1xuXG5JbiB0aGUgZmlyc3QgZm9ybWF0K2dhZHRzIGltcGxlbWVudGF0aW9uLCB0aGUgdHlwZSBmb3IgJSguLiUpIGluIHRoZVxuZm10IEdBRFQgd2FzIGFzIGZvbGxvd3M6XG5cbnwgRm9ybWF0X3N1YnN0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgIHBhZF9vcHRpb24gKiAoJ2QxLCAncTEsICdkMiwgJ3EyKSByZWFkZXJfbmJfdW5pZmllciAqXG4gICAgKCd4LCAnYiwgJ2MsICdkMSwgJ3ExLCAndSkgZm10dHkgKlxuICAgICgndSwgJ2IsICdjLCAncTEsICdlMSwgJ2YpIGZtdCAtPlxuICAgICAgKCgneCwgJ2IsICdjLCAnZDIsICdxMiwgJ3UpIGZvcm1hdDYgLT4gJ3gsICdiLCAnYywgJ2QxLCAnZTEsICdmKSBmbXRcblxuTm90aWNlIHRoYXQgdGhlICd1IHBhcmFtZXRlciBpbiAnZiBwb3NpdGlvbiBpbiB0aGUgZm9ybWF0IGFyZ3VtZW50XG4oKCd4LCAuLiwgJ3UpIGZvcm1hdDYgLT4gLi4pIGlzIGVxdWFsIHRvIHRoZSAndSBwYXJhbWV0ZXIgaW4gJ2FcbnBvc2l0aW9uIGluIHRoZSBmb3JtYXQgdGFpbCAoKCd1LCAuLiwgJ2YpIGZtdCkuIFRoaXMgbWVhbnMgdGhhdCB0aGVcbnR5cGUgb2YgdGhlIGV4cGVjdGVkIGZvcm1hdCBwYXJhbWV0ZXIgZGVwZW5kcyBvZiB3aGVyZSB0aGUgJSguLi4lKVxuYXJlIGluIHRoZSBmb3JtYXQgc3RyaW5nOlxuXG4gICMgUHJpbnRmLnByaW50ZiBcIiUoJSlcIlxuICAtIDogKHVuaXQsIG91dF9jaGFubmVsLCB1bml0LCAnX2EsICdfYSwgdW5pdClcbiAgICAgIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2IC0+IHVuaXRcbiAgPSA8ZnVuPlxuICAjIFByaW50Zi5wcmludGYgXCIlKCUpJWRcIlxuICAtIDogKGludCAtPiB1bml0LCBvdXRfY2hhbm5lbCwgdW5pdCwgJ19hLCAnX2EsIGludCAtPiB1bml0KVxuICAgICAgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZvcm1hdDYgLT4gaW50IC0+IHVuaXRcbiAgPSA8ZnVuPlxuXG5PbiB0aGUgY29udHJhcnksIHRoZSBsZWdhY3kgdHlwZXIgZ2l2ZXMgYSBjbGV2ZXIgdHlwZSB0aGF0IGRvZXMgbm90XG5kZXBlbmQgb24gdGhlIHBvc2l0aW9uIG9mICUoLi4lKSBpbiB0aGUgZm9ybWF0IHN0cmluZy4gRm9yIGV4YW1wbGUsXG4lKCUpIHdpbGwgaGF2ZSB0aGUgcG9seW1vcnBoaWMgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSk6IGl0IGNhblxuYmUgY29uY2F0ZW5hdGVkIHRvIGFueSBmb3JtYXQgdHlwZSwgYW5kIG9ubHkgZW5mb3JjZXMgdGhlIGNvbnN0cmFpbnRcbnRoYXQgaXRzICdhIGFuZCAnZiBwYXJhbWV0ZXJzIGFyZSBlcXVhbCAobm8gZm9ybWF0IGFyZ3VtZW50cykgYW5kICdkXG5hbmQgJ2UgYXJlIGVxdWFsIChubyByZWFkZXIgYXJndW1lbnQpLlxuXG5UaGUgd2Vha2VuaW5nIG9mIHRoaXMgcGFyYW1ldGVyIHR5cGUgaW4gdGhlIEdBRFQgdmVyc2lvbiBicm9rZSB1c2VyXG5jb2RlIChpbiBmYWN0IGl0IGVzc2VudGlhbGx5IG1hZGUgJSguLi4lKSB1bnVzYWJsZSBleGNlcHQgYXQgdGhlIGxhc3RcbnBvc2l0aW9uIG9mIGEgZm9ybWF0KS4gSW4gcGFydGljdWxhciwgdGhlIGZvbGxvd2luZyB3b3VsZCBub3Qgd29ya1xuYW55bW9yZTpcblxuICBmdW4gc2VwIC0+XG4gICAgRm9ybWF0LnByaW50ZiBcImZvbyUoJSliYXIlKCUpYmF6XCIgc2VwIHNlcFxuXG5BcyB0aGUgdHlwZS1jaGVja2VyIHdvdWxkIHJlcXVpcmUgdHdvICppbmNvbXBhdGlibGUqIHR5cGVzIGZvciB0aGUgJSglKVxuaW4gZGlmZmVyZW50IHBvc2l0aW9ucy5cblxuVGhlIHNvbHV0aW9uIHRvIHJlZ2FpbiBhIGdlbmVyYWwgdHlwZSBmb3IgJSguLiUpIGlzIHRvIGdlbmVyYWxpemUgdGhpc1xudGVjaG5pcXVlLCBub3Qgb25seSBvbiB0aGUgJ2QsICdlIHBhcmFtZXRlcnMsIGJ1dCBvbiBhbGwgc2l4XG5wYXJhbWV0ZXJzIG9mIGEgZm9ybWF0OiB3ZSBpbnRyb2R1Y2UgYSBcInJlbGF0aW9uYWxcIiB0eXBlXG4gICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG53aG9zZSB2YWx1ZXMgYXJlIHByb29mcyB0aGF0ICgnYTEsIC4uLCAnZjEpIGFuZCAoJ2EyLCAuLiwgJ2YyKSBtb3JhbGx5XG5jb3JyZXNwb25kIHRvIHRoZSBzYW1lIGZvcm1hdCB0eXBlOiAnYTEgaXMgb2J0YWluZWQgZnJvbSAnZjEsJ2IxLCdjMVxuaW4gdGhlIGV4YWN0IHNhbWUgd2F5IHRoYXQgJ2EyIGlzIG9idGFpbmVkIGZyb20gJ2YyLCdiMiwnYzIsIGV0Yy5cblxuRm9yIGV4YW1wbGUsIHRoZSByZWxhdGlvbiBiZXR3ZWVuIHR3byBmb3JtYXQgdHlwZXMgYmVnaW5uaW5nIHdpdGggYSBDaGFyXG5wYXJhbWV0ZXIgaXMgYXMgZm9sbG93czpcblxufCBDaGFyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWMgICopXG4gICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgIChjaGFyIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgIGNoYXIgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbkluIHRoZSBnZW5lcmFsIGNhc2UsIHRoZSB0ZXJtIHN0cnVjdHVyZSBvZiBmbXR0eV9yZWwgaXMgKGFsbW9zdFsxXSlcbmlzb21vcnBoaWMgdG8gdGhlIGZtdHR5IG9mIHRoZSBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbjogZXZlcnlcbmNvbnN0cnVjdG9yIGlzIHJlLXJlYWQgd2l0aCBhIGJpbmFyeSwgcmVsYXRpb25hbCB0eXBlLCBpbnN0ZWFkIG9mIHRoZVxucHJldmlvdXMgdW5hcnkgdHlwaW5nLiBmbXR0eSBjYW4gdGhlbiBiZSByZS1kZWZpbmVkIGFzIHRoZSBkaWFnb25hbCBvZlxuZm10dHlfcmVsOlxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5ID1cbiAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZixcbiAgICAgICAgJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHlfcmVsXG5cbk9uY2Ugd2UgaGF2ZSB0aGlzIGZtdHR5X3JlbCB0eXBlIGluIHBsYWNlLCB3ZSBjYW4gZ2l2ZSB0aGUgbW9yZVxuZ2VuZXJhbCB0eXBlIHRvICUoLi4uJSk6XG5cbnwgRm9ybWF0X3N1YnN0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgIHBhZF9vcHRpb24gKlxuICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAnZzIsICdiLCAnYywgJ2oyLCAnZCwgJ2EpIGZtdHR5X3JlbCAqXG4gICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzIsICdiLCAnYywgJ2oyLCAnZSwgJ2YpIGZtdFxuXG5XZSBhY2NlcHQgYW55IGZvcm1hdCAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYpICh0aGlzIGlzXG5jb21wbGV0ZWx5IHVucmVsYXRlZCB0byB0aGUgdHlwZSBvZiB0aGUgY3VycmVudCBmb3JtYXQpLCBidXQgYWxzb1xucmVxdWlyZSBhIHByb29mIHRoYXQgdGhpcyBmb3JtYXQgaXMgaW4gcmVsYXRpb24gdG8gYW5vdGhlciBmb3JtYXQgdGhhdFxuaXMgY29uY2F0ZW5hYmxlIHRvIHRoZSBmb3JtYXQgdGFpbC4gV2hlbiBleGVjdXRpbmcgYSAlKC4uLiUpIGZvcm1hdFxuKGluIGNhbWxpbnRlcm5hbEZvcm1hdC5tbDptYWtlX3ByaW50ZiBvciBzY2FuZi5tbDptYWtlX3NjYW5mKSwgd2VcbnRyYW5zdHlwZSB0aGUgZm9ybWF0IGFsb25nIHRoaXMgcmVsYXRpb24gdXNpbmcgdGhlICdyZWNhc3QnIGZ1bmN0aW9uXG50byB0cmFuc3Bvc2UgYmV0d2VlbiByZWxhdGVkIGZvcm1hdCB0eXBlcy5cblxuICB2YWwgcmVjYXN0IDpcbiAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEpIGZtdFxuICAtPiAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICAtPiAoJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10XG5cbk5PVEUgWzFdOiB0aGUgdHlwaW5nIG9mIEZvcm1hdF9zdWJzdF90eSByZXF1aXJlcyBub3Qgb25lIGZvcm1hdCB0eXBlLCBidXRcbnR3bywgb25lIHRvIGVzdGFibGlzaCB0aGUgbGluayBiZXR3ZWVuIHRoZSBmb3JtYXQgYXJndW1lbnQgYW5kIHRoZVxuZmlyc3Qgc2l4IHBhcmFtZXRlcnMsIGFuZCB0aGUgb3RoZXIgZm9yIHRoZSBsaW5rIGJldHdlZW4gdGhlIGZvcm1hdFxuYXJndW1lbnQgYW5kIHRoZSBsYXN0IHNpeCBwYXJhbWV0ZXJzLlxuXG58IEZvcm1hdF9zdWJzdF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICdnMSwgJ2IxLCAnYzEsICdqMSwgJ2QxLCAnYTEpIGZtdHR5X3JlbCAqXG4gICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICdnMiwgJ2IyLCAnYzIsICdqMiwgJ2QyLCAnYTIpIGZtdHR5X3JlbCAqXG4gICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzEsICdiMSwgJ2MxLCAnajEsICdlMSwgJ2YxLFxuICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzIsICdiMiwgJ2MyLCAnajIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuV2hlbiB3ZSBnZW5lcmF0ZSBhIGZvcm1hdCBBU1QsIHdlIGdlbmVyYXRlIGV4YWN0bHkgdGhlIHNhbWUgd2l0bmVzc1xuZm9yIGJvdGggcmVsYXRpb25zLCBhbmQgdGhlIHdpdG5lc3MtY29udmVyc2lvbiBmdW5jdGlvbnMgaW5cbmNhbWxpbnRlcm5hbEZvcm1hdCBkbyByZWx5IG9uIHRoaXMgaW52YXJpYW50LiBGb3IgZXhhbXBsZSwgdGhlXG5mdW5jdGlvbiB0aGF0IHByb3ZlcyB0aGF0IHRoZSByZWxhdGlvbiBpcyB0cmFuc2l0aXZlXG5cbiAgdmFsIHRyYW5zIDpcbiAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgLT4gKCdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIsXG4gICAgICAnYTMsICdiMywgJ2MzLCAnZDMsICdlMywgJ2YzKSBmbXR0eV9yZWxcbiAgLT4gKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAnYTMsICdiMywgJ2MzLCAnZDMsICdlMywgJ2YzKSBmbXR0eV9yZWxcblxuZG9lcyBhc3N1bWUgdGhhdCB0aGUgdHdvIGlucHV0cyBoYXZlIGV4YWN0bHkgdGhlIHNhbWUgdGVybSBzdHJ1Y3R1cmVcbihhbmQgaXMgb25seSBldmVyeSB1c2VkIGZvciBhcmd1bWVudCB3aXRuZXNzZXMgb2YgdGhlXG5Gb3JtYXRfc3Vic3RfdHkgY29uc3RydWN0b3IpLlxuKilcblxuKCogVHlwZSBvZiBhIGJsb2NrIHVzZWQgYnkgdGhlIEZvcm1hdCBwcmV0dHktcHJpbnRlci4gKilcbnR5cGUgYmxvY2tfdHlwZSA9XG4gIHwgUHBfaGJveCAgICgqIEhvcml6b250YWwgYmxvY2sgbm8gbGluZSBicmVha2luZyAqKVxuICB8IFBwX3Zib3ggICAoKiBWZXJ0aWNhbCBibG9jayBlYWNoIGJyZWFrIGxlYWRzIHRvIGEgbmV3IGxpbmUgKilcbiAgfCBQcF9odmJveCAgKCogSG9yaXpvbnRhbC12ZXJ0aWNhbCBibG9jazogc2FtZSBhcyB2Ym94LCBleGNlcHQgaWYgdGhpcyBibG9ja1xuICAgICAgICAgICAgICAgICBpcyBzbWFsbCBlbm91Z2ggdG8gZml0IG9uIGEgc2luZ2xlIGxpbmUgKilcbiAgfCBQcF9ob3Zib3ggKCogSG9yaXpvbnRhbCBvciBWZXJ0aWNhbCBibG9jazogYnJlYWtzIGxlYWQgdG8gbmV3IGxpbmVcbiAgICAgICAgICAgICAgICAgb25seSB3aGVuIG5lY2Vzc2FyeSB0byBwcmludCB0aGUgY29udGVudCBvZiB0aGUgYmxvY2sgKilcbiAgfCBQcF9ib3ggICAgKCogSG9yaXpvbnRhbCBvciBJbmRlbnQgYmxvY2s6IGJyZWFrcyBsZWFkIHRvIG5ldyBsaW5lXG4gICAgICAgICAgICAgICAgIG9ubHkgd2hlbiBuZWNlc3NhcnkgdG8gcHJpbnQgdGhlIGNvbnRlbnQgb2YgdGhlIGJsb2NrLCBvclxuICAgICAgICAgICAgICAgICB3aGVuIGl0IGxlYWRzIHRvIGEgbmV3IGluZGVudGF0aW9uIG9mIHRoZSBjdXJyZW50IGxpbmUgKilcbiAgfCBQcF9maXRzICAgKCogSW50ZXJuYWwgdXNhZ2U6IHdoZW4gYSBibG9jayBmaXRzIG9uIGEgc2luZ2xlIGxpbmUgKilcblxuKCogRm9ybWF0dGluZyBlbGVtZW50IHVzZWQgYnkgdGhlIEZvcm1hdCBwcmV0dHktcHJpbnRlci4gKilcbnR5cGUgZm9ybWF0dGluZ19saXQgPVxuICB8IENsb3NlX2JveCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAXSAgICopXG4gIHwgQ2xvc2VfdGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEB9ICAgKilcbiAgfCBCcmVhayBvZiBzdHJpbmcgKiBpbnQgKiBpbnQgICAgICAgICAgKCogQCwgfCBAICB8IEA7IHwgQDs8PiAqKVxuICB8IEZGbHVzaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAPyAgICopXG4gIHwgRm9yY2VfbmV3bGluZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBcXG4gICopXG4gIHwgRmx1c2hfbmV3bGluZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEAuICAgKilcbiAgfCBNYWdpY19zaXplIG9mIHN0cmluZyAqIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQDxuPiAqKVxuICB8IEVzY2FwZWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAQCAgICopXG4gIHwgRXNjYXBlZF9wZXJjZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEAlJSAgKilcbiAgfCBTY2FuX2luZGljIG9mIGNoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQFggICAqKVxuXG4oKiBGb3JtYXR0aW5nIGVsZW1lbnQgdXNlZCBieSB0aGUgRm9ybWF0IHByZXR0eS1wcmludGVyLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0dGluZ19nZW4gPVxuICB8IE9wZW5fdGFnIDogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT4gICAgICAoKiBAeyAgICopXG4gICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdHRpbmdfZ2VuXG4gIHwgT3Blbl9ib3ggOiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPiAgICAgICgqIEBbICAgKilcbiAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0dGluZ19nZW5cblxuKCoqKilcblxuKCogTGlzdCBvZiBmb3JtYXQgdHlwZSBlbGVtZW50cy4gKilcbigqIEluIHBhcnRpY3VsYXIgdXNlZCB0byByZXByZXNlbnQgJSguLi4lKSBhbmQgJXsuLi4lfSBjb250ZW50cy4gKilcbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgPVxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZixcbiAgICAgICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X3JlbFxuYW5kICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgPVxuICB8IENoYXJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYyAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGNoYXIgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBjaGFyIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IFN0cmluZ190eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlcyAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKHN0cmluZyAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIHN0cmluZyAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBJbnRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWQgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChpbnQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBpbnQgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgSW50MzJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVsZCAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoaW50MzIgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBpbnQzMiAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBOYXRpdmVpbnRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJW5kICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChuYXRpdmVpbnQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBuYXRpdmVpbnQgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgSW50NjRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVMZCAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoaW50NjQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBpbnQ2NCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBGbG9hdF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWYgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChmbG9hdCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGZsb2F0IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEJvb2xfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlQiAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGJvb2wgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBib29sIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG4gIHwgRm9ybWF0X2FyZ190eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICV7Li4uJX0gKilcbiAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmbXR0eSAqXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpXG4gICAgICAgICAgIGZtdHR5X3JlbFxuICB8IEZvcm1hdF9zdWJzdF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgICAnZzEsICdiMSwgJ2MxLCAnajEsICdkMSwgJ2ExKSBmbXR0eV9yZWwgKlxuICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICAgJ2cyLCAnYjIsICdjMiwgJ2oyLCAnZDIsICdhMikgZm10dHlfcmVsICpcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMSwgJ2IxLCAnYzEsICdqMSwgJ2UxLCAnZjEsXG4gICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cyLCAnYjIsICdjMiwgJ2oyLCAnZTIsICdmMilcbiAgICAgICAgICAgZm10dHlfcmVsXG5cbiAgKCogUHJpbnRmIGFuZCBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3JzLiAqKVxuICB8IEFscGhhX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYSAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCgnYjEgLT4gJ3ggLT4gJ2MxKSAtPiAneCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICgnYjIgLT4gJ3ggLT4gJ2MyKSAtPiAneCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBUaGV0YV90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXQgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgoJ2IxIC0+ICdjMSkgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAoJ2IyIC0+ICdjMikgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgQW55X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBVc2VkIGZvciBjdXN0b20gZm9ybWF0cyAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoJ3ggLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAneCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuICAoKiBTY2FuZiBzcGVjaWZpYyBjb25zdHJ1Y3Rvci4gKilcbiAgfCBSZWFkZXJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXIgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgneCAtPiAnYTEsICdiMSwgJ2MxLCAoJ2IxIC0+ICd4KSAtPiAnZDEsICdlMSwgJ2YxLFxuICAgICAgICd4IC0+ICdhMiwgJ2IyLCAnYzIsICgnYjIgLT4gJ3gpIC0+ICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IElnbm9yZWRfcmVhZGVyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX3IgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgnYTEsICdiMSwgJ2MxLCAoJ2IxIC0+ICd4KSAtPiAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICgnYjIgLT4gJ3gpIC0+ICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG4gIHwgRW5kX29mX2ZtdHR5IDpcbiAgICAgICgnZjEsICdiMSwgJ2MxLCAnZDEsICdkMSwgJ2YxLFxuICAgICAgICdmMiwgJ2IyLCAnYzIsICdkMiwgJ2QyLCAnZjIpIGZtdHR5X3JlbFxuXG4oKioqKVxuXG4oKiBMaXN0IG9mIGZvcm1hdCBlbGVtZW50cy4gKilcbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10ID1cbiAgfCBDaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoY2hhciAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBDYW1sX2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlQyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoY2hhciAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTdHJpbmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlcyAqKVxuICAgICAgKCd4LCBzdHJpbmcgLT4gJ2EpIHBhZGRpbmcgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBDYW1sX3N0cmluZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlUyAqKVxuICAgICAgKCd4LCBzdHJpbmcgLT4gJ2EpIHBhZGRpbmcgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBJbnQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW2RpeFh1b10gKilcbiAgICAgIGludF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgaW50IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSW50MzIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWxbZGl4WHVvXSAqKVxuICAgICAgaW50X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBpbnQzMiAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IE5hdGl2ZWludCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVuW2RpeFh1b10gKilcbiAgICAgIGludF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgbmF0aXZlaW50IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSW50NjQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJUxbZGl4WHVvXSAqKVxuICAgICAgaW50X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBpbnQ2NCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZsb2F0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVbZmVFZ0dGaEhdICopXG4gICAgICBmbG9hdF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgZmxvYXQgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBCb29sIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW2JCXSAqKVxuICAgICAgKCd4LCBib29sIC0+ICdhKSBwYWRkaW5nICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgRmx1c2ggOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSEgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogYWJjICopXG4gICAgICBzdHJpbmcgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBDaGFyX2xpdGVyYWwgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiB4ICopXG4gICAgICBjaGFyICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgfCBGb3JtYXRfYXJnIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAley4uLiV9ICopXG4gICAgICBwYWRfb3B0aW9uICogKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZtdHR5ICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZvcm1hdF9zdWJzdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICAgIHBhZF9vcHRpb24gKlxuICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICAgJ2cyLCAnYiwgJ2MsICdqMiwgJ2QsICdhKSBmbXR0eV9yZWwgKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMiwgJ2IsICdjLCAnajIsICdlLCAnZikgZm10XG5cbiAgKCogUHJpbnRmIGFuZCBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3IuICopXG4gIHwgQWxwaGEgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWEgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCgnYiAtPiAneCAtPiAnYykgLT4gJ3ggLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgVGhldGEgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXQgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCgnYiAtPiAnYykgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgKCogRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9yOiAqKVxuICB8IEZvcm1hdHRpbmdfbGl0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBfICopXG4gICAgICBmb3JtYXR0aW5nX2xpdCAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZvcm1hdHRpbmdfZ2VuIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAXyAqKVxuICAgICAgKCdhMSwgJ2IsICdjLCAnZDEsICdlMSwgJ2YxKSBmb3JtYXR0aW5nX2dlbiAqXG4gICAgICAoJ2YxLCAnYiwgJ2MsICdlMSwgJ2UyLCAnZjIpIGZtdCAtPiAoJ2ExLCAnYiwgJ2MsICdkMSwgJ2UyLCAnZjIpIGZtdFxuXG4gICgqIFNjYW5mIHNwZWNpZmljIGNvbnN0cnVjdG9yczogKilcbiAgfCBSZWFkZXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlciAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3ggLT4gJ2EsICdiLCAnYywgKCdiIC0+ICd4KSAtPiAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTY2FuX2NoYXJfc2V0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlWy4uLl0gKilcbiAgICAgIHBhZF9vcHRpb24gKiBjaGFyX3NldCAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKHN0cmluZyAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTY2FuX2dldF9jb3VudGVyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW25sTkxdICopXG4gICAgICBjb3VudGVyICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoaW50IC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IFNjYW5fbmV4dF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUwYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgKGNoYXIgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSWdub3JlZF9wYXJhbSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV8gKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ3ksICd4KSBpZ25vcmVkICogKCd4LCAnYiwgJ2MsICd5LCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgKCogQ3VzdG9tIHByaW50aW5nIGZvcm1hdCAoUFIjNjQ1MiwgR1BSIzE0MClcblxuICAgICBXZSBpbmNsdWRlIGEgdHlwZSBDdXN0b20gb2YgXCJjdXN0b20gY29udmVydGVyc1wiLCB3aGVyZSBhblxuICAgICBhcmJpdHJhcnkgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gY29udmVydCBvbmUgb3IgbW9yZVxuICAgICBhcmd1bWVudHMuIFRoZXJlIGlzIG5vIHN5bnRheCBmb3IgY3VzdG9tIGNvbnZlcnRlcnMsIGl0IGlzIG9ubHlcbiAgICAgaW50ZW5kZWQgZm9yIGN1c3RvbSBwcm9jZXNzb3JzIHRoYXQgd2lzaCB0byByZWx5IG9uIHRoZVxuICAgICBzdGRsaWItZGVmaW5lZCBmb3JtYXQgR0FEVHMuXG5cbiAgICAgRm9yIGluc3RhbmNlIGEgcHJlLXByb2Nlc3NvciBjb3VsZCBjaG9vc2UgdG8gaW50ZXJwcmV0IHN0cmluZ3NcbiAgICAgcHJlZml4ZWQgd2l0aCBbXCIhXCJdIGFzIGZvcm1hdCBzdHJpbmdzIHdoZXJlIFsle3sgLi4uIH19XSBpc1xuICAgICBhIHNwZWNpYWwgZm9ybSB0byBwYXNzIGEgdG9fc3RyaW5nIGZ1bmN0aW9uLCBzbyB0aGF0IG9uZSBjb3VsZFxuICAgICB3cml0ZTpcblxuICAgICB7W1xuICAgICAgIHR5cGUgdCA9IHsgeCA6IGludDsgeSA6IGludCB9XG5cbiAgICAgICBsZXQgc3RyaW5nX29mX3QgdCA9IFByaW50Zi5zcHJpbnRmIFwieyB4ID0gJWQ7IHkgPSAlZCB9XCIgdC54IHQueVxuXG4gICAgICAgUHJpbnRmLnByaW50ZiAhXCJ0ID0gJXt7c3RyaW5nX29mX3R9fVwiIHsgeCA9IDQyOyB5ID0gNDIgfVxuICAgICBdfVxuICAqKVxuICB8IEN1c3RvbSA6XG4gICAgICAoJ2EsICd4LCAneSkgY3VzdG9tX2FyaXR5ICogKHVuaXQgLT4gJ3gpICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgKCd5LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gICgqIGVuZCBvZiBhIGZvcm1hdCBzcGVjaWZpY2F0aW9uICopXG4gIHwgRW5kX29mX2Zvcm1hdCA6XG4gICAgICAgICgnZiwgJ2IsICdjLCAnZSwgJ2UsICdmKSBmbXRcblxuKCoqKilcblxuKCogVHlwZSBmb3IgaWdub3JlZCBwYXJhbWV0ZXJzIChzZWUgXCIlX1wiKS4gKilcbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgaWdub3JlZCA9XG4gIHwgSWdub3JlZF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9jICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfY2FtbF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfQyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3N0cmluZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX3MgKilcbiAgICAgIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX1MgKilcbiAgICAgIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2ludCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX2QgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfaW50MzIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfbGQgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfbmF0aXZlaW50IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfbmQgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfaW50NjQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfTGQgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfZmxvYXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfZiAqKVxuICAgICAgcGFkX29wdGlvbiAqIHByZWNfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9ib29sIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9CICopXG4gICAgICBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV97Li4uJX0gKilcbiAgICAgIHBhZF9vcHRpb24gKiAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm10dHkgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlXyguLi4lKSAqKVxuICAgICAgcGFkX29wdGlvbiAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgaWdub3JlZFxuICB8IElnbm9yZWRfcmVhZGVyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfciAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICgnYiAtPiAneCkgLT4gJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfWy4uLl0gKilcbiAgICAgIHBhZF9vcHRpb24gKiBjaGFyX3NldCAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfW25sTkxdICopXG4gICAgICBjb3VudGVyIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV8wYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcblxuYW5kICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID1cbiAgRm9ybWF0IG9mICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgKiBzdHJpbmdcblxubGV0IHJlYyBlcmFzZV9yZWwgOiB0eXBlIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIC5cbiAgKGEsIGIsIGMsIGQsIGUsIGYsXG4gICBnLCBoLCBpLCBqLCBrLCBsKSBmbXR0eV9yZWwgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5XG49IGZ1bmN0aW9uXG4gIHwgQ2hhcl90eSByZXN0IC0+XG4gICAgQ2hhcl90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgU3RyaW5nX3R5IHJlc3QgLT5cbiAgICBTdHJpbmdfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEludF90eSByZXN0IC0+XG4gICAgSW50X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBJbnQzMl90eSByZXN0IC0+XG4gICAgSW50MzJfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEludDY0X3R5IHJlc3QgLT5cbiAgICBJbnQ2NF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgLT5cbiAgICBOYXRpdmVpbnRfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEZsb2F0X3R5IHJlc3QgLT5cbiAgICBGbG9hdF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgQm9vbF90eSByZXN0IC0+XG4gICAgQm9vbF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgRm9ybWF0X2FyZ190eSAodHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHksIGVyYXNlX3JlbCByZXN0KVxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCBfdHkyLCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTEsIGVyYXNlX3JlbCByZXN0KVxuICB8IEFscGhhX3R5IHJlc3QgLT5cbiAgICBBbHBoYV90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgVGhldGFfdHkgcmVzdCAtPlxuICAgIFRoZXRhX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBBbnlfdHkgcmVzdCAtPlxuICAgIEFueV90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgUmVhZGVyX3R5IHJlc3QgLT5cbiAgICBSZWFkZXJfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT5cbiAgICBJZ25vcmVkX3JlYWRlcl90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgRW5kX29mX2ZtdHR5IC0+IEVuZF9vZl9mbXR0eVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdCB0eXBlIGNvbmNhdGVuYXRpb24gKilcblxuKCogQ29uY2F0ZW5hdGUgdHdvIGZvcm1hdCB0eXBlcy4gKilcbigqIFVzZWQgYnk6XG4gICAqIHJlYWRlcl9uYl91bmlmaWVyX29mX2ZtdHR5IHRvIGNvdW50IHJlYWRlcnMgaW4gYW4gZm10dHksXG4gICAqIFNjYW5mLnRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgdG8gZXh0cmFjdCByZWFkZXJzIGluc2lkZSAlKC4uLiUpLFxuICAgKiBDYW1saW50ZXJuYWxGb3JtYXQuZm10dHlfb2ZfaWdub3JlZF9mb3JtYXQgdG8gZXh0cmFjdCBmb3JtYXQgdHlwZS4gKilcblxuKCpcbmxldCByZWMgY29uY2F0X2ZtdHR5IDogdHlwZSBhIGIgYyBkIGUgZiBnIGggLlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAgIChmLCBiLCBjLCBlLCBnLCBoKSBmbXR0eSAtPlxuICAgIChhLCBiLCBjLCBkLCBnLCBoKSBmbXR0eSA9XG4qKVxubGV0IHJlYyBjb25jYXRfZm10dHkgOlxuICB0eXBlIGExIGIxIGMxIGQxIGUxIGYxXG4gICAgICAgYTIgYjIgYzIgZDIgZTIgZjJcbiAgICAgICBnMSBqMSBnMiBqMlxuICAuXG4gICAgKGcxLCBiMSwgYzEsIGoxLCBkMSwgYTEsXG4gICAgIGcyLCBiMiwgYzIsIGoyLCBkMiwgYTIpIGZtdHR5X3JlbCAtPlxuICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgICBhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWwgLT5cbiAgICAoZzEsIGIxLCBjMSwgajEsIGUxLCBmMSxcbiAgICAgZzIsIGIyLCBjMiwgajIsIGUyLCBmMikgZm10dHlfcmVsID1cbmZ1biBmbXR0eTEgZm10dHkyIC0+IG1hdGNoIGZtdHR5MSB3aXRoXG4gIHwgQ2hhcl90eSByZXN0IC0+XG4gICAgQ2hhcl90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IFN0cmluZ190eSByZXN0IC0+XG4gICAgU3RyaW5nX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgSW50X3R5IHJlc3QgLT5cbiAgICBJbnRfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBJbnQzMl90eSByZXN0IC0+XG4gICAgSW50MzJfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPlxuICAgIE5hdGl2ZWludF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEludDY0X3R5IHJlc3QgLT5cbiAgICBJbnQ2NF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEZsb2F0X3R5IHJlc3QgLT5cbiAgICBGbG9hdF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEJvb2xfdHkgcmVzdCAtPlxuICAgIEJvb2xfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBBbHBoYV90eSByZXN0IC0+XG4gICAgQWxwaGFfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBUaGV0YV90eSByZXN0IC0+XG4gICAgVGhldGFfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBBbnlfdHkgcmVzdCAtPlxuICAgIEFueV90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IFJlYWRlcl90eSByZXN0IC0+XG4gICAgUmVhZGVyX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPlxuICAgIElnbm9yZWRfcmVhZGVyX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgRm9ybWF0X2FyZ190eSAodHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHksIGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBFbmRfb2ZfZm10dHkgLT4gZm10dHkyXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgY29uY2F0ZW5hdGlvbiAqKVxuXG4oKiBDb25jYXRlbmF0ZSB0d28gZm9ybWF0cy4gKilcbmxldCByZWMgY29uY2F0X2ZtdCA6IHR5cGUgYSBiIGMgZCBlIGYgZyBoIC5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgKGYsIGIsIGMsIGUsIGcsIGgpIGZtdCAtPlxuICAgIChhLCBiLCBjLCBkLCBnLCBoKSBmbXQgPVxuZnVuIGZtdDEgZm10MiAtPiBtYXRjaCBmbXQxIHdpdGhcbiAgfCBTdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBTdHJpbmcgKHBhZCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBDYW1sX3N0cmluZyAocGFkLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBJbnQgKGljb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEludDMyIChpY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgQ2hhciAocmVzdCkgLT5cbiAgICBDaGFyIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgIENhbWxfY2hhciAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQm9vbCAocGFkLCByZXN0KSAtPlxuICAgIEJvb2wgKHBhZCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQWxwaGEgcmVzdCAtPlxuICAgIEFscGhhIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBUaGV0YSByZXN0IC0+XG4gICAgVGhldGEgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEN1c3RvbSAoYXJpdHksIGYsIHJlc3QpIC0+XG4gICAgQ3VzdG9tIChhcml0eSwgZiwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgUmVhZGVyIHJlc3QgLT5cbiAgICBSZWFkZXIgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEZsdXNoIHJlc3QgLT5cbiAgICBGbHVzaCAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgIFN0cmluZ19saXRlcmFsIChzdHIsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IENoYXJfbGl0ZXJhbCAoY2hyLCByZXN0KSAtPlxuICAgIENoYXJfbGl0ZXJhbCAgIChjaHIsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgRm9ybWF0X2FyZyAocGFkLCBmbXR0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfYXJnICAgKHBhZCwgZm10dHksIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEZvcm1hdF9zdWJzdCAocGFkLCBmbXR0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3QgKHBhZCwgZm10dHksIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgcmVzdCkgLT5cbiAgICBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCByZXN0KSAtPlxuICAgIFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IFNjYW5fbmV4dF9jaGFyIChyZXN0KSAtPlxuICAgIFNjYW5fbmV4dF9jaGFyIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgSWdub3JlZF9wYXJhbSAoaWduLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSAtPlxuICAgIEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgcmVzdCkgLT5cbiAgICBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBFbmRfb2ZfZm9ybWF0IC0+XG4gICAgZm10MlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgR2FicmllbCBTY2hlcmVyLCBwcm9qZXQgUGFydG91dCwgSU5SSUEgUGFyaXMtU2FjbGF5ICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAyMCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBDYW1saW50ZXJuYWxBdG9taWMgaXMgYSBkZXBlbmRlbmN5IG9mIFN0ZGxpYiwgc28gaXQgaXMgY29tcGlsZWQgd2l0aFxuICAgLW5vcGVydmFzaXZlcy4gKilcbmV4dGVybmFsICggPT0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcVwiXG5leHRlcm5hbCAoICsgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYWRkaW50XCJcbmV4dGVybmFsIGlnbm9yZSA6ICdhIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuXG4oKiBXZSBhcmUgbm90IHJldXNpbmcgKCdhIHJlZikgZGlyZWN0bHkgdG8gbWFrZSBpdCBlYXNpZXIgdG8gcmVhc29uXG4gICBhYm91dCBhdG9taWNpdHkgaWYgd2Ugd2lzaCB0bzogZXZlbiBpbiBhIHNlcXVlbnRpYWwgaW1wbGVtZW50YXRpb24sXG4gICBzaWduYWxzIGFuZCBvdGhlciBhc3luY2hyb25vdXMgY2FsbGJhY2tzIG1pZ2h0IGJyZWFrIGF0b21pY2l0eS4gKilcbnR5cGUgJ2EgdCA9IHttdXRhYmxlIHY6ICdhfVxuXG5sZXQgbWFrZSB2ID0ge3Z9XG5sZXQgZ2V0IHIgPSByLnZcbmxldCBzZXQgciB2ID0gci52IDwtIHZcblxuKCogVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgYXJlIHNldCB0byBuZXZlciBiZSBpbmxpbmVkOiBGbGFtYmRhIGlzXG4gICBhbGxvd2VkIHRvIG1vdmUgc3Vycm91bmRpbmcgY29kZSBpbnNpZGUgdGhlIGNyaXRpY2FsIHNlY3Rpb24sXG4gICBpbmNsdWRpbmcgYWxsb2NhdGlvbnMuICopXG5cbmxldFtAaW5saW5lIG5ldmVyXSBleGNoYW5nZSByIHYgPVxuICAoKiBCRUdJTiBBVE9NSUMgKilcbiAgbGV0IGN1ciA9IHIudiBpblxuICByLnYgPC0gdjtcbiAgKCogRU5EIEFUT01JQyAqKVxuICBjdXJcblxubGV0W0BpbmxpbmUgbmV2ZXJdIGNvbXBhcmVfYW5kX3NldCByIHNlZW4gdiA9XG4gICgqIEJFR0lOIEFUT01JQyAqKVxuICBsZXQgY3VyID0gci52IGluXG4gIGlmIGN1ciA9PSBzZWVuIHRoZW4gKFxuICAgIHIudiA8LSB2O1xuICAgICgqIEVORCBBVE9NSUMgKilcbiAgICB0cnVlXG4gICkgZWxzZVxuICAgIGZhbHNlXG5cbmxldFtAaW5saW5lIG5ldmVyXSBmZXRjaF9hbmRfYWRkIHIgbiA9XG4gICgqIEJFR0lOIEFUT01JQyAqKVxuICBsZXQgY3VyID0gci52IGluXG4gIHIudiA8LSAoY3VyICsgbik7XG4gICgqIEVORCBBVE9NSUMgKilcbiAgY3VyXG5cbmxldCBpbmNyIHIgPSBpZ25vcmUgKGZldGNoX2FuZF9hZGQgciAxKVxubGV0IGRlY3IgciA9IGlnbm9yZSAoZmV0Y2hfYW5kX2FkZCByICgtMSkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEV4Y2VwdGlvbnMgKilcblxuZXh0ZXJuYWwgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgOiBzdHJpbmcgLT4gJ2EgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWVcIlxuXG5sZXQgKCkgPVxuICAoKiBmb3IgcnVudGltZS9mYWlsX25hdC5jICopXG4gIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIFwiUGVydmFzaXZlcy5hcnJheV9ib3VuZF9lcnJvclwiXG4gICAgKEludmFsaWRfYXJndW1lbnQgXCJpbmRleCBvdXQgb2YgYm91bmRzXCIpXG5cbmV4dGVybmFsIHJhaXNlIDogZXhuIC0+ICdhID0gXCIlcmFpc2VcIlxuZXh0ZXJuYWwgcmFpc2Vfbm90cmFjZSA6IGV4biAtPiAnYSA9IFwiJXJhaXNlX25vdHJhY2VcIlxuXG5sZXQgZmFpbHdpdGggcyA9IHJhaXNlKEZhaWx1cmUgcylcbmxldCBpbnZhbGlkX2FyZyBzID0gcmFpc2UoSW52YWxpZF9hcmd1bWVudCBzKVxuXG5leGNlcHRpb24gRXhpdFxuZXhjZXB0aW9uIE1hdGNoX2ZhaWx1cmUgPSBNYXRjaF9mYWlsdXJlXG5leGNlcHRpb24gQXNzZXJ0X2ZhaWx1cmUgPSBBc3NlcnRfZmFpbHVyZVxuZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgPSBJbnZhbGlkX2FyZ3VtZW50XG5leGNlcHRpb24gRmFpbHVyZSA9IEZhaWx1cmVcbmV4Y2VwdGlvbiBOb3RfZm91bmQgPSBOb3RfZm91bmRcbmV4Y2VwdGlvbiBPdXRfb2ZfbWVtb3J5ID0gT3V0X29mX21lbW9yeVxuZXhjZXB0aW9uIFN0YWNrX292ZXJmbG93ID0gU3RhY2tfb3ZlcmZsb3dcbmV4Y2VwdGlvbiBTeXNfZXJyb3IgPSBTeXNfZXJyb3JcbmV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSA9IEVuZF9vZl9maWxlXG5leGNlcHRpb24gRGl2aXNpb25fYnlfemVybyA9IERpdmlzaW9uX2J5X3plcm9cbmV4Y2VwdGlvbiBTeXNfYmxvY2tlZF9pbyA9IFN5c19ibG9ja2VkX2lvXG5leGNlcHRpb24gVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUgPSBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZVxuXG4oKiBDb21wb3NpdGlvbiBvcGVyYXRvcnMgKilcblxuZXh0ZXJuYWwgKCB8PiApIDogJ2EgLT4gKCdhIC0+ICdiKSAtPiAnYiA9IFwiJXJldmFwcGx5XCJcbmV4dGVybmFsICggQEAgKSA6ICgnYSAtPiAnYikgLT4gJ2EgLT4gJ2IgPSBcIiVhcHBseVwiXG5cbigqIERlYnVnZ2luZyAqKVxuXG5leHRlcm5hbCBfX0xPQ19fIDogc3RyaW5nID0gXCIlbG9jX0xPQ1wiXG5leHRlcm5hbCBfX0ZJTEVfXyA6IHN0cmluZyA9IFwiJWxvY19GSUxFXCJcbmV4dGVybmFsIF9fTElORV9fIDogaW50ID0gXCIlbG9jX0xJTkVcIlxuZXh0ZXJuYWwgX19NT0RVTEVfXyA6IHN0cmluZyA9IFwiJWxvY19NT0RVTEVcIlxuZXh0ZXJuYWwgX19QT1NfXyA6IHN0cmluZyAqIGludCAqIGludCAqIGludCA9IFwiJWxvY19QT1NcIlxuZXh0ZXJuYWwgX19GVU5DVElPTl9fIDogc3RyaW5nID0gXCIlbG9jX0ZVTkNUSU9OXCJcblxuZXh0ZXJuYWwgX19MT0NfT0ZfXyA6ICdhIC0+IHN0cmluZyAqICdhID0gXCIlbG9jX0xPQ1wiXG5leHRlcm5hbCBfX0xJTkVfT0ZfXyA6ICdhIC0+IGludCAqICdhID0gXCIlbG9jX0xJTkVcIlxuZXh0ZXJuYWwgX19QT1NfT0ZfXyA6ICdhIC0+IChzdHJpbmcgKiBpbnQgKiBpbnQgKiBpbnQpICogJ2EgPSBcIiVsb2NfUE9TXCJcblxuKCogQ29tcGFyaXNvbnMgKilcblxuZXh0ZXJuYWwgKCA9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuZXh0ZXJuYWwgKCA8PiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcbmV4dGVybmFsICggPCApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcbmV4dGVybmFsICggPiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJ0aGFuXCJcbmV4dGVybmFsICggPD0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzZXF1YWxcIlxuZXh0ZXJuYWwgKCA+PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5leHRlcm5hbCBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5cbmxldCBtaW4geCB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuZXh0ZXJuYWwgKCA9PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxXCJcbmV4dGVybmFsICggIT0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVub3RlcVwiXG5cbigqIEJvb2xlYW4gb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBub3QgOiBib29sIC0+IGJvb2wgPSBcIiVib29sbm90XCJcbmV4dGVybmFsICggJiApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcbmV4dGVybmFsICggJiYgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdWFuZFwiXG5leHRlcm5hbCAoIG9yICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVvclwiXG5leHRlcm5hbCAoIHx8ICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVvclwiXG5cbigqIEludGVnZXIgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCAoIH4tICkgOiBpbnQgLT4gaW50ID0gXCIlbmVnaW50XCJcbmV4dGVybmFsICggfisgKSA6IGludCAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBzdWNjIDogaW50IC0+IGludCA9IFwiJXN1Y2NpbnRcIlxuZXh0ZXJuYWwgcHJlZCA6IGludCAtPiBpbnQgPSBcIiVwcmVkaW50XCJcbmV4dGVybmFsICggKyApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhZGRpbnRcIlxuZXh0ZXJuYWwgKCAtICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXN1YmludFwiXG5leHRlcm5hbCAoICogKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbXVsaW50XCJcbmV4dGVybmFsICggLyApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVkaXZpbnRcIlxuZXh0ZXJuYWwgKCBtb2QgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbW9kaW50XCJcblxubGV0IGFicyB4ID0gaWYgeCA+PSAwIHRoZW4geCBlbHNlIC14XG5cbmV4dGVybmFsICggbGFuZCApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhbmRpbnRcIlxuZXh0ZXJuYWwgKCBsb3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlb3JpbnRcIlxuZXh0ZXJuYWwgKCBseG9yICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXhvcmludFwiXG5cbmxldCBsbm90IHggPSB4IGx4b3IgKC0xKVxuXG5leHRlcm5hbCAoIGxzbCApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc2xpbnRcIlxuZXh0ZXJuYWwgKCBsc3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNyaW50XCJcbmV4dGVybmFsICggYXNyICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFzcmludFwiXG5cbmxldCBtYXhfaW50ID0gKC0xKSBsc3IgMVxubGV0IG1pbl9pbnQgPSBtYXhfaW50ICsgMVxuXG4oKiBGbG9hdGluZy1wb2ludCBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsICggfi0uICkgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJW5lZ2Zsb2F0XCJcbmV4dGVybmFsICggfisuICkgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsICggKy4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWRkZmxvYXRcIlxuZXh0ZXJuYWwgKCAtLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVzdWJmbG9hdFwiXG5leHRlcm5hbCAoICouICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJW11bGZsb2F0XCJcbmV4dGVybmFsICggLy4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlZGl2ZmxvYXRcIlxuZXh0ZXJuYWwgKCAqKiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfcG93ZXJfZmxvYXRcIiBcInBvd1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBfZmxvYXRcIiBcImV4cFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHBtMSA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cG0xX2Zsb2F0XCIgXCJjYW1sX2V4cG0xXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zX2Zsb2F0XCIgXCJhY29zXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luX2Zsb2F0XCIgXCJhc2luXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuX2Zsb2F0XCIgXCJhdGFuXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4yIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbjJfZmxvYXRcIiBcImF0YW4yXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGh5cG90IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgID0gXCJjYW1sX2h5cG90X2Zsb2F0XCIgXCJjYW1sX2h5cG90XCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc19mbG9hdFwiIFwiY29zXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NoX2Zsb2F0XCIgXCJjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc2hfZmxvYXRcIiBcImNhbWxfYWNvc2hcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nX2Zsb2F0XCIgXCJsb2dcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nMTAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxMF9mbG9hdFwiIFwibG9nMTBcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nMXAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxcF9mbG9hdFwiIFwiY2FtbF9sb2cxcFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5fZmxvYXRcIiBcInNpblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luaF9mbG9hdFwiIFwic2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhc2luaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2FzaW5oX2Zsb2F0XCIgXCJjYW1sX2FzaW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNxcnQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zcXJ0X2Zsb2F0XCIgXCJzcXJ0XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Rhbl9mbG9hdFwiIFwidGFuXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5oX2Zsb2F0XCIgXCJ0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbmhfZmxvYXRcIiBcImNhbWxfYXRhbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2VpbCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2NlaWxfZmxvYXRcIiBcImNlaWxcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvb3IgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbG9vcl9mbG9hdFwiIFwiZmxvb3JcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWJzX2Zsb2F0IDogZmxvYXQgLT4gZmxvYXQgPSBcIiVhYnNmbG9hdFwiXG5leHRlcm5hbCBjb3B5c2lnbiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gICAgICAgICAgICAgICAgICA9IFwiY2FtbF9jb3B5c2lnbl9mbG9hdFwiIFwiY2FtbF9jb3B5c2lnblwiXG4gICAgICAgICAgICAgICAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbW9kX2Zsb2F0IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZm1vZF9mbG9hdFwiIFwiZm1vZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmcmV4cCA6IGZsb2F0IC0+IGZsb2F0ICogaW50ID0gXCJjYW1sX2ZyZXhwX2Zsb2F0XCJcbmV4dGVybmFsIGxkZXhwIDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IChpbnQgW0B1bnRhZ2dlZF0pIC0+IChmbG9hdCBbQHVuYm94ZWRdKSA9XG4gIFwiY2FtbF9sZGV4cF9mbG9hdFwiIFwiY2FtbF9sZGV4cF9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIG1vZGYgOiBmbG9hdCAtPiBmbG9hdCAqIGZsb2F0ID0gXCJjYW1sX21vZGZfZmxvYXRcIlxuZXh0ZXJuYWwgZmxvYXQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIGZsb2F0X29mX2ludCA6IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0b2ZpbnRcIlxuZXh0ZXJuYWwgdHJ1bmNhdGUgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcbmV4dGVybmFsIGludF9vZl9mbG9hdCA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuZXh0ZXJuYWwgZmxvYXRfb2ZfYml0cyA6IGludDY0IC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNcIiBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c191bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmxldCBpbmZpbml0eSA9XG4gIGZsb2F0X29mX2JpdHMgMHg3Rl9GMF8wMF8wMF8wMF8wMF8wMF8wMExcbmxldCBuZWdfaW5maW5pdHkgPVxuICBmbG9hdF9vZl9iaXRzIDB4RkZfRjBfMDBfMDBfMDBfMDBfMDBfMDBMXG5sZXQgbmFuID1cbiAgZmxvYXRfb2ZfYml0cyAweDdGX0YwXzAwXzAwXzAwXzAwXzAwXzAxTFxubGV0IG1heF9mbG9hdCA9XG4gIGZsb2F0X29mX2JpdHMgMHg3Rl9FRl9GRl9GRl9GRl9GRl9GRl9GRkxcbmxldCBtaW5fZmxvYXQgPVxuICBmbG9hdF9vZl9iaXRzIDB4MDBfMTBfMDBfMDBfMDBfMDBfMDBfMDBMXG5sZXQgZXBzaWxvbl9mbG9hdCA9XG4gIGZsb2F0X29mX2JpdHMgMHgzQ19CMF8wMF8wMF8wMF8wMF8wMF8wMExcblxudHlwZSBmcGNsYXNzID1cbiAgICBGUF9ub3JtYWxcbiAgfCBGUF9zdWJub3JtYWxcbiAgfCBGUF96ZXJvXG4gIHwgRlBfaW5maW5pdGVcbiAgfCBGUF9uYW5cbmV4dGVybmFsIGNsYXNzaWZ5X2Zsb2F0IDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IGZwY2xhc3MgPVxuICBcImNhbWxfY2xhc3NpZnlfZmxvYXRcIiBcImNhbWxfY2xhc3NpZnlfZmxvYXRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5cbigqIFN0cmluZyBhbmQgYnl0ZSBzZXF1ZW5jZSBvcGVyYXRpb25zIC0tIG1vcmUgaW4gbW9kdWxlcyBTdHJpbmcgYW5kIEJ5dGVzICopXG5cbmV4dGVybmFsIHN0cmluZ19sZW5ndGggOiBzdHJpbmcgLT4gaW50ID0gXCIlc3RyaW5nX2xlbmd0aFwiXG5leHRlcm5hbCBieXRlc19sZW5ndGggOiBieXRlcyAtPiBpbnQgPSBcIiVieXRlc19sZW5ndGhcIlxuZXh0ZXJuYWwgYnl0ZXNfY3JlYXRlIDogaW50IC0+IGJ5dGVzID0gXCJjYW1sX2NyZWF0ZV9ieXRlc1wiXG5leHRlcm5hbCBzdHJpbmdfYmxpdCA6IHN0cmluZyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBieXRlc19ibGl0IDogYnl0ZXMgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9ieXRlc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBieXRlc191bnNhZmVfdG9fc3RyaW5nIDogYnl0ZXMgLT4gc3RyaW5nID0gXCIlYnl0ZXNfdG9fc3RyaW5nXCJcblxubGV0ICggXiApIHMxIHMyID1cbiAgbGV0IGwxID0gc3RyaW5nX2xlbmd0aCBzMSBhbmQgbDIgPSBzdHJpbmdfbGVuZ3RoIHMyIGluXG4gIGxldCBzID0gYnl0ZXNfY3JlYXRlIChsMSArIGwyKSBpblxuICBzdHJpbmdfYmxpdCBzMSAwIHMgMCBsMTtcbiAgc3RyaW5nX2JsaXQgczIgMCBzIGwxIGwyO1xuICBieXRlc191bnNhZmVfdG9fc3RyaW5nIHNcblxuKCogQ2hhcmFjdGVyIG9wZXJhdGlvbnMgLS0gbW9yZSBpbiBtb2R1bGUgQ2hhciAqKVxuXG5leHRlcm5hbCBpbnRfb2ZfY2hhciA6IGNoYXIgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgdW5zYWZlX2NoYXJfb2ZfaW50IDogaW50IC0+IGNoYXIgPSBcIiVpZGVudGl0eVwiXG5sZXQgY2hhcl9vZl9pbnQgbiA9XG4gIGlmIG4gPCAwIHx8IG4gPiAyNTUgdGhlbiBpbnZhbGlkX2FyZyBcImNoYXJfb2ZfaW50XCIgZWxzZSB1bnNhZmVfY2hhcl9vZl9pbnQgblxuXG4oKiBVbml0IG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgaWdub3JlIDogJ2EgLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG5cbigqIFBhaXIgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBmc3QgOiAnYSAqICdiIC0+ICdhID0gXCIlZmllbGQwXCJcbmV4dGVybmFsIHNuZCA6ICdhICogJ2IgLT4gJ2IgPSBcIiVmaWVsZDFcIlxuXG4oKiBSZWZlcmVuY2VzICopXG5cbnR5cGUgJ2EgcmVmID0geyBtdXRhYmxlIGNvbnRlbnRzIDogJ2EgfVxuZXh0ZXJuYWwgcmVmIDogJ2EgLT4gJ2EgcmVmID0gXCIlbWFrZW11dGFibGVcIlxuZXh0ZXJuYWwgKCAhICkgOiAnYSByZWYgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuZXh0ZXJuYWwgKCA6PSApIDogJ2EgcmVmIC0+ICdhIC0+IHVuaXQgPSBcIiVzZXRmaWVsZDBcIlxuZXh0ZXJuYWwgaW5jciA6IGludCByZWYgLT4gdW5pdCA9IFwiJWluY3JcIlxuZXh0ZXJuYWwgZGVjciA6IGludCByZWYgLT4gdW5pdCA9IFwiJWRlY3JcIlxuXG4oKiBSZXN1bHQgdHlwZSAqKVxuXG50eXBlICgnYSwnYikgcmVzdWx0ID0gT2sgb2YgJ2EgfCBFcnJvciBvZiAnYlxuXG4oKiBTdHJpbmcgY29udmVyc2lvbiBmdW5jdGlvbnMgKilcblxuZXh0ZXJuYWwgZm9ybWF0X2ludCA6IHN0cmluZyAtPiBpbnQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9pbnRcIlxuZXh0ZXJuYWwgZm9ybWF0X2Zsb2F0IDogc3RyaW5nIC0+IGZsb2F0IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfZmxvYXRcIlxuXG5sZXQgc3RyaW5nX29mX2Jvb2wgYiA9XG4gIGlmIGIgdGhlbiBcInRydWVcIiBlbHNlIFwiZmFsc2VcIlxubGV0IGJvb2xfb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBcInRydWVcIiAtPiB0cnVlXG4gIHwgXCJmYWxzZVwiIC0+IGZhbHNlXG4gIHwgXyAtPiBpbnZhbGlkX2FyZyBcImJvb2xfb2Zfc3RyaW5nXCJcblxubGV0IGJvb2xfb2Zfc3RyaW5nX29wdCA9IGZ1bmN0aW9uXG4gIHwgXCJ0cnVlXCIgLT4gU29tZSB0cnVlXG4gIHwgXCJmYWxzZVwiIC0+IFNvbWUgZmFsc2VcbiAgfCBfIC0+IE5vbmVcblxubGV0IHN0cmluZ19vZl9pbnQgbiA9XG4gIGZvcm1hdF9pbnQgXCIlZFwiIG5cblxuZXh0ZXJuYWwgaW50X29mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQgPSBcImNhbWxfaW50X29mX3N0cmluZ1wiXG5cbmxldCBpbnRfb2Zfc3RyaW5nX29wdCBzID1cbiAgKCogVE9ETzogcHJvdmlkZSB0aGlzIGRpcmVjdGx5IGFzIGEgbm9uLXJhaXNpbmcgcHJpbWl0aXZlLiAqKVxuICB0cnkgU29tZSAoaW50X29mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmV4dGVybmFsIHN0cmluZ19nZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuXG5sZXQgdmFsaWRfZmxvYXRfbGV4ZW0gcyA9XG4gIGxldCBsID0gc3RyaW5nX2xlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID49IGwgdGhlbiBzIF4gXCIuXCIgZWxzZVxuICAgIG1hdGNoIHN0cmluZ19nZXQgcyBpIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgfCAnLScgLT4gbG9vcCAoaSArIDEpXG4gICAgfCBfIC0+IHNcbiAgaW5cbiAgbG9vcCAwXG5cbmxldCBzdHJpbmdfb2ZfZmxvYXQgZiA9IHZhbGlkX2Zsb2F0X2xleGVtIChmb3JtYXRfZmxvYXQgXCIlLjEyZ1wiIGYpXG5cbmV4dGVybmFsIGZsb2F0X29mX3N0cmluZyA6IHN0cmluZyAtPiBmbG9hdCA9IFwiY2FtbF9mbG9hdF9vZl9zdHJpbmdcIlxuXG5sZXQgZmxvYXRfb2Zfc3RyaW5nX29wdCBzID1cbiAgKCogVE9ETzogcHJvdmlkZSB0aGlzIGRpcmVjdGx5IGFzIGEgbm9uLXJhaXNpbmcgcHJpbWl0aXZlLiAqKVxuICB0cnkgU29tZSAoZmxvYXRfb2Zfc3RyaW5nIHMpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxuKCogTGlzdCBvcGVyYXRpb25zIC0tIG1vcmUgaW4gbW9kdWxlIExpc3QgKilcblxubGV0IHJlYyAoIEAgKSBsMSBsMiA9XG4gIG1hdGNoIGwxIHdpdGhcbiAgICBbXSAtPiBsMlxuICB8IGhkIDo6IHRsIC0+IGhkIDo6ICh0bCBAIGwyKVxuXG4oKiBJL08gb3BlcmF0aW9ucyAqKVxuXG50eXBlIGluX2NoYW5uZWxcbnR5cGUgb3V0X2NoYW5uZWxcblxuZXh0ZXJuYWwgb3Blbl9kZXNjcmlwdG9yX291dCA6IGludCAtPiBvdXRfY2hhbm5lbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0XCJcbmV4dGVybmFsIG9wZW5fZGVzY3JpcHRvcl9pbiA6IGludCAtPiBpbl9jaGFubmVsID0gXCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pblwiXG5cbmxldCBzdGRpbiA9IG9wZW5fZGVzY3JpcHRvcl9pbiAwXG5sZXQgc3Rkb3V0ID0gb3Blbl9kZXNjcmlwdG9yX291dCAxXG5sZXQgc3RkZXJyID0gb3Blbl9kZXNjcmlwdG9yX291dCAyXG5cbigqIEdlbmVyYWwgb3V0cHV0IGZ1bmN0aW9ucyAqKVxuXG50eXBlIG9wZW5fZmxhZyA9XG4gICAgT3Blbl9yZG9ubHkgfCBPcGVuX3dyb25seSB8IE9wZW5fYXBwZW5kXG4gIHwgT3Blbl9jcmVhdCB8IE9wZW5fdHJ1bmMgfCBPcGVuX2V4Y2xcbiAgfCBPcGVuX2JpbmFyeSB8IE9wZW5fdGV4dCB8IE9wZW5fbm9uYmxvY2tcblxuZXh0ZXJuYWwgb3Blbl9kZXNjIDogc3RyaW5nIC0+IG9wZW5fZmxhZyBsaXN0IC0+IGludCAtPiBpbnQgPSBcImNhbWxfc3lzX29wZW5cIlxuXG5leHRlcm5hbCBzZXRfb3V0X2NoYW5uZWxfbmFtZTogb3V0X2NoYW5uZWwgLT4gc3RyaW5nIC0+IHVuaXQgPVxuICBcImNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZVwiXG5cbmxldCBvcGVuX291dF9nZW4gbW9kZSBwZXJtIG5hbWUgPVxuICBsZXQgYyA9IG9wZW5fZGVzY3JpcHRvcl9vdXQob3Blbl9kZXNjIG5hbWUgbW9kZSBwZXJtKSBpblxuICBzZXRfb3V0X2NoYW5uZWxfbmFtZSBjIG5hbWU7XG4gIGNcblxubGV0IG9wZW5fb3V0IG5hbWUgPVxuICBvcGVuX291dF9nZW4gW09wZW5fd3Jvbmx5OyBPcGVuX2NyZWF0OyBPcGVuX3RydW5jOyBPcGVuX3RleHRdIDBvNjY2IG5hbWVcblxubGV0IG9wZW5fb3V0X2JpbiBuYW1lID1cbiAgb3Blbl9vdXRfZ2VuIFtPcGVuX3dyb25seTsgT3Blbl9jcmVhdDsgT3Blbl90cnVuYzsgT3Blbl9iaW5hcnldIDBvNjY2IG5hbWVcblxuZXh0ZXJuYWwgZmx1c2ggOiBvdXRfY2hhbm5lbCAtPiB1bml0ID0gXCJjYW1sX21sX2ZsdXNoXCJcblxuZXh0ZXJuYWwgb3V0X2NoYW5uZWxzX2xpc3QgOiB1bml0IC0+IG91dF9jaGFubmVsIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX291dF9jaGFubmVsc19saXN0XCJcblxubGV0IGZsdXNoX2FsbCAoKSA9XG4gIGxldCByZWMgaXRlciA9IGZ1bmN0aW9uXG4gICAgICBbXSAtPiAoKVxuICAgIHwgYTo6bCAtPlxuICAgICAgICBiZWdpbiB0cnlcbiAgICAgICAgICAgIGZsdXNoIGFcbiAgICAgICAgd2l0aCBTeXNfZXJyb3IgXyAtPlxuICAgICAgICAgICgpICgqIGlnbm9yZSBjaGFubmVscyBjbG9zZWQgZHVyaW5nIGEgcHJlY2VkaW5nIGZsdXNoLiAqKVxuICAgICAgICBlbmQ7XG4gICAgICAgIGl0ZXIgbFxuICBpbiBpdGVyIChvdXRfY2hhbm5lbHNfbGlzdCAoKSlcblxuZXh0ZXJuYWwgdW5zYWZlX291dHB1dCA6IG91dF9jaGFubmVsIC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9vdXRwdXRfYnl0ZXNcIlxuZXh0ZXJuYWwgdW5zYWZlX291dHB1dF9zdHJpbmcgOiBvdXRfY2hhbm5lbCAtPiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9vdXRwdXRcIlxuXG5leHRlcm5hbCBvdXRwdXRfY2hhciA6IG91dF9jaGFubmVsIC0+IGNoYXIgLT4gdW5pdCA9IFwiY2FtbF9tbF9vdXRwdXRfY2hhclwiXG5cbmxldCBvdXRwdXRfYnl0ZXMgb2MgcyA9XG4gIHVuc2FmZV9vdXRwdXQgb2MgcyAwIChieXRlc19sZW5ndGggcylcblxubGV0IG91dHB1dF9zdHJpbmcgb2MgcyA9XG4gIHVuc2FmZV9vdXRwdXRfc3RyaW5nIG9jIHMgMCAoc3RyaW5nX2xlbmd0aCBzKVxuXG5sZXQgb3V0cHV0IG9jIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBieXRlc19sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwib3V0cHV0XCJcbiAgZWxzZSB1bnNhZmVfb3V0cHV0IG9jIHMgb2ZzIGxlblxuXG5sZXQgb3V0cHV0X3N1YnN0cmluZyBvYyBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gc3RyaW5nX2xlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJvdXRwdXRfc3Vic3RyaW5nXCJcbiAgZWxzZSB1bnNhZmVfb3V0cHV0X3N0cmluZyBvYyBzIG9mcyBsZW5cblxuZXh0ZXJuYWwgb3V0cHV0X2J5dGUgOiBvdXRfY2hhbm5lbCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9tbF9vdXRwdXRfY2hhclwiXG5leHRlcm5hbCBvdXRwdXRfYmluYXJ5X2ludCA6IG91dF9jaGFubmVsIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX21sX291dHB1dF9pbnRcIlxuXG5leHRlcm5hbCBtYXJzaGFsX3RvX2NoYW5uZWwgOiBvdXRfY2hhbm5lbCAtPiAnYSAtPiB1bml0IGxpc3QgLT4gdW5pdFxuICAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVcIlxubGV0IG91dHB1dF92YWx1ZSBjaGFuIHYgPSBtYXJzaGFsX3RvX2NoYW5uZWwgY2hhbiB2IFtdXG5cbmV4dGVybmFsIHNlZWtfb3V0IDogb3V0X2NoYW5uZWwgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfbWxfc2Vla19vdXRcIlxuZXh0ZXJuYWwgcG9zX291dCA6IG91dF9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9wb3Nfb3V0XCJcbmV4dGVybmFsIG91dF9jaGFubmVsX2xlbmd0aCA6IG91dF9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9jaGFubmVsX3NpemVcIlxuZXh0ZXJuYWwgY2xvc2Vfb3V0X2NoYW5uZWwgOiBvdXRfY2hhbm5lbCAtPiB1bml0ID0gXCJjYW1sX21sX2Nsb3NlX2NoYW5uZWxcIlxubGV0IGNsb3NlX291dCBvYyA9IGZsdXNoIG9jOyBjbG9zZV9vdXRfY2hhbm5lbCBvY1xubGV0IGNsb3NlX291dF9ub2VyciBvYyA9XG4gICh0cnkgZmx1c2ggb2Mgd2l0aCBfIC0+ICgpKTtcbiAgKHRyeSBjbG9zZV9vdXRfY2hhbm5lbCBvYyB3aXRoIF8gLT4gKCkpXG5leHRlcm5hbCBzZXRfYmluYXJ5X21vZGVfb3V0IDogb3V0X2NoYW5uZWwgLT4gYm9vbCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX3NldF9iaW5hcnlfbW9kZVwiXG5cbigqIEdlbmVyYWwgaW5wdXQgZnVuY3Rpb25zICopXG5cbmV4dGVybmFsIHNldF9pbl9jaGFubmVsX25hbWU6IGluX2NoYW5uZWwgLT4gc3RyaW5nIC0+IHVuaXQgPVxuICBcImNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZVwiXG5cbmxldCBvcGVuX2luX2dlbiBtb2RlIHBlcm0gbmFtZSA9XG4gIGxldCBjID0gb3Blbl9kZXNjcmlwdG9yX2luKG9wZW5fZGVzYyBuYW1lIG1vZGUgcGVybSkgaW5cbiAgc2V0X2luX2NoYW5uZWxfbmFtZSBjIG5hbWU7XG4gIGNcblxubGV0IG9wZW5faW4gbmFtZSA9XG4gIG9wZW5faW5fZ2VuIFtPcGVuX3Jkb25seTsgT3Blbl90ZXh0XSAwIG5hbWVcblxubGV0IG9wZW5faW5fYmluIG5hbWUgPVxuICBvcGVuX2luX2dlbiBbT3Blbl9yZG9ubHk7IE9wZW5fYmluYXJ5XSAwIG5hbWVcblxuZXh0ZXJuYWwgaW5wdXRfY2hhciA6IGluX2NoYW5uZWwgLT4gY2hhciA9IFwiY2FtbF9tbF9pbnB1dF9jaGFyXCJcblxuZXh0ZXJuYWwgdW5zYWZlX2lucHV0IDogaW5fY2hhbm5lbCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IGludFxuICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX2lucHV0XCJcblxubGV0IGlucHV0IGljIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBieXRlc19sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiaW5wdXRcIlxuICBlbHNlIHVuc2FmZV9pbnB1dCBpYyBzIG9mcyBsZW5cblxubGV0IHJlYyB1bnNhZmVfcmVhbGx5X2lucHV0IGljIHMgb2ZzIGxlbiA9XG4gIGlmIGxlbiA8PSAwIHRoZW4gKCkgZWxzZSBiZWdpblxuICAgIGxldCByID0gdW5zYWZlX2lucHV0IGljIHMgb2ZzIGxlbiBpblxuICAgIGlmIHIgPSAwXG4gICAgdGhlbiByYWlzZSBFbmRfb2ZfZmlsZVxuICAgIGVsc2UgdW5zYWZlX3JlYWxseV9pbnB1dCBpYyBzIChvZnMgKyByKSAobGVuIC0gcilcbiAgZW5kXG5cbmxldCByZWFsbHlfaW5wdXQgaWMgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGJ5dGVzX2xlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJyZWFsbHlfaW5wdXRcIlxuICBlbHNlIHVuc2FmZV9yZWFsbHlfaW5wdXQgaWMgcyBvZnMgbGVuXG5cbmxldCByZWFsbHlfaW5wdXRfc3RyaW5nIGljIGxlbiA9XG4gIGxldCBzID0gYnl0ZXNfY3JlYXRlIGxlbiBpblxuICByZWFsbHlfaW5wdXQgaWMgcyAwIGxlbjtcbiAgYnl0ZXNfdW5zYWZlX3RvX3N0cmluZyBzXG5cbmV4dGVybmFsIGlucHV0X3NjYW5fbGluZSA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2lucHV0X3NjYW5fbGluZVwiXG5cbmxldCBpbnB1dF9saW5lIGNoYW4gPVxuICBsZXQgcmVjIGJ1aWxkX3Jlc3VsdCBidWYgcG9zID0gZnVuY3Rpb25cbiAgICBbXSAtPiBidWZcbiAgfCBoZCA6OiB0bCAtPlxuICAgICAgbGV0IGxlbiA9IGJ5dGVzX2xlbmd0aCBoZCBpblxuICAgICAgYnl0ZXNfYmxpdCBoZCAwIGJ1ZiAocG9zIC0gbGVuKSBsZW47XG4gICAgICBidWlsZF9yZXN1bHQgYnVmIChwb3MgLSBsZW4pIHRsIGluXG4gIGxldCByZWMgc2NhbiBhY2N1IGxlbiA9XG4gICAgbGV0IG4gPSBpbnB1dF9zY2FuX2xpbmUgY2hhbiBpblxuICAgIGlmIG4gPSAwIHRoZW4gYmVnaW4gICAgICAgICAgICAgICAgICAgKCogbiA9IDA6IHdlIGFyZSBhdCBFT0YgKilcbiAgICAgIG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICBbXSAtPiByYWlzZSBFbmRfb2ZfZmlsZVxuICAgICAgfCBfICAtPiBidWlsZF9yZXN1bHQgKGJ5dGVzX2NyZWF0ZSBsZW4pIGxlbiBhY2N1XG4gICAgZW5kIGVsc2UgaWYgbiA+IDAgdGhlbiBiZWdpbiAgICAgICAgICAoKiBuID4gMDogbmV3bGluZSBmb3VuZCBpbiBidWZmZXIgKilcbiAgICAgIGxldCByZXMgPSBieXRlc19jcmVhdGUgKG4gLSAxKSBpblxuICAgICAgaWdub3JlICh1bnNhZmVfaW5wdXQgY2hhbiByZXMgMCAobiAtIDEpKTtcbiAgICAgIGlnbm9yZSAoaW5wdXRfY2hhciBjaGFuKTsgICAgICAgICAgICgqIHNraXAgdGhlIG5ld2xpbmUgKilcbiAgICAgIG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICBbXSAtPiByZXNcbiAgICAgIHwgIF8gLT4gbGV0IGxlbiA9IGxlbiArIG4gLSAxIGluXG4gICAgICAgICAgICAgIGJ1aWxkX3Jlc3VsdCAoYnl0ZXNfY3JlYXRlIGxlbikgbGVuIChyZXMgOjogYWNjdSlcbiAgICBlbmQgZWxzZSBiZWdpbiAgICAgICAgICAgICAgICAgICAgICAgICgqIG4gPCAwOiBuZXdsaW5lIG5vdCBmb3VuZCAqKVxuICAgICAgbGV0IGJlZyA9IGJ5dGVzX2NyZWF0ZSAoLW4pIGluXG4gICAgICBpZ25vcmUodW5zYWZlX2lucHV0IGNoYW4gYmVnIDAgKC1uKSk7XG4gICAgICBzY2FuIChiZWcgOjogYWNjdSkgKGxlbiAtIG4pXG4gICAgZW5kXG4gIGluIGJ5dGVzX3Vuc2FmZV90b19zdHJpbmcgKHNjYW4gW10gMClcblxuZXh0ZXJuYWwgaW5wdXRfYnl0ZSA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2lucHV0X2NoYXJcIlxuZXh0ZXJuYWwgaW5wdXRfYmluYXJ5X2ludCA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2lucHV0X2ludFwiXG5leHRlcm5hbCBpbnB1dF92YWx1ZSA6IGluX2NoYW5uZWwgLT4gJ2EgPSBcImNhbWxfaW5wdXRfdmFsdWVcIlxuZXh0ZXJuYWwgc2Vla19pbiA6IGluX2NoYW5uZWwgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfbWxfc2Vla19pblwiXG5leHRlcm5hbCBwb3NfaW4gOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9wb3NfaW5cIlxuZXh0ZXJuYWwgaW5fY2hhbm5lbF9sZW5ndGggOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9jaGFubmVsX3NpemVcIlxuZXh0ZXJuYWwgY2xvc2VfaW4gOiBpbl9jaGFubmVsIC0+IHVuaXQgPSBcImNhbWxfbWxfY2xvc2VfY2hhbm5lbFwiXG5sZXQgY2xvc2VfaW5fbm9lcnIgaWMgPSAodHJ5IGNsb3NlX2luIGljIHdpdGggXyAtPiAoKSlcbmV4dGVybmFsIHNldF9iaW5hcnlfbW9kZV9pbiA6IGluX2NoYW5uZWwgLT4gYm9vbCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfc2V0X2JpbmFyeV9tb2RlXCJcblxuKCogT3V0cHV0IGZ1bmN0aW9ucyBvbiBzdGFuZGFyZCBvdXRwdXQgKilcblxubGV0IHByaW50X2NoYXIgYyA9IG91dHB1dF9jaGFyIHN0ZG91dCBjXG5sZXQgcHJpbnRfc3RyaW5nIHMgPSBvdXRwdXRfc3RyaW5nIHN0ZG91dCBzXG5sZXQgcHJpbnRfYnl0ZXMgcyA9IG91dHB1dF9ieXRlcyBzdGRvdXQgc1xubGV0IHByaW50X2ludCBpID0gb3V0cHV0X3N0cmluZyBzdGRvdXQgKHN0cmluZ19vZl9pbnQgaSlcbmxldCBwcmludF9mbG9hdCBmID0gb3V0cHV0X3N0cmluZyBzdGRvdXQgKHN0cmluZ19vZl9mbG9hdCBmKVxubGV0IHByaW50X2VuZGxpbmUgcyA9XG4gIG91dHB1dF9zdHJpbmcgc3Rkb3V0IHM7IG91dHB1dF9jaGFyIHN0ZG91dCAnXFxuJzsgZmx1c2ggc3Rkb3V0XG5sZXQgcHJpbnRfbmV3bGluZSAoKSA9IG91dHB1dF9jaGFyIHN0ZG91dCAnXFxuJzsgZmx1c2ggc3Rkb3V0XG5cbigqIE91dHB1dCBmdW5jdGlvbnMgb24gc3RhbmRhcmQgZXJyb3IgKilcblxubGV0IHByZXJyX2NoYXIgYyA9IG91dHB1dF9jaGFyIHN0ZGVyciBjXG5sZXQgcHJlcnJfc3RyaW5nIHMgPSBvdXRwdXRfc3RyaW5nIHN0ZGVyciBzXG5sZXQgcHJlcnJfYnl0ZXMgcyA9IG91dHB1dF9ieXRlcyBzdGRlcnIgc1xubGV0IHByZXJyX2ludCBpID0gb3V0cHV0X3N0cmluZyBzdGRlcnIgKHN0cmluZ19vZl9pbnQgaSlcbmxldCBwcmVycl9mbG9hdCBmID0gb3V0cHV0X3N0cmluZyBzdGRlcnIgKHN0cmluZ19vZl9mbG9hdCBmKVxubGV0IHByZXJyX2VuZGxpbmUgcyA9XG4gIG91dHB1dF9zdHJpbmcgc3RkZXJyIHM7IG91dHB1dF9jaGFyIHN0ZGVyciAnXFxuJzsgZmx1c2ggc3RkZXJyXG5sZXQgcHJlcnJfbmV3bGluZSAoKSA9IG91dHB1dF9jaGFyIHN0ZGVyciAnXFxuJzsgZmx1c2ggc3RkZXJyXG5cbigqIElucHV0IGZ1bmN0aW9ucyBvbiBzdGFuZGFyZCBpbnB1dCAqKVxuXG5sZXQgcmVhZF9saW5lICgpID0gZmx1c2ggc3Rkb3V0OyBpbnB1dF9saW5lIHN0ZGluXG5sZXQgcmVhZF9pbnQgKCkgPSBpbnRfb2Zfc3RyaW5nKHJlYWRfbGluZSgpKVxubGV0IHJlYWRfaW50X29wdCAoKSA9IGludF9vZl9zdHJpbmdfb3B0KHJlYWRfbGluZSgpKVxubGV0IHJlYWRfZmxvYXQgKCkgPSBmbG9hdF9vZl9zdHJpbmcocmVhZF9saW5lKCkpXG5sZXQgcmVhZF9mbG9hdF9vcHQgKCkgPSBmbG9hdF9vZl9zdHJpbmdfb3B0KHJlYWRfbGluZSgpKVxuXG4oKiBPcGVyYXRpb25zIG9uIGxhcmdlIGZpbGVzICopXG5cbm1vZHVsZSBMYXJnZUZpbGUgPVxuICBzdHJ1Y3RcbiAgICBleHRlcm5hbCBzZWVrX291dCA6IG91dF9jaGFubmVsIC0+IGludDY0IC0+IHVuaXQgPSBcImNhbWxfbWxfc2Vla19vdXRfNjRcIlxuICAgIGV4dGVybmFsIHBvc19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQ2NCA9IFwiY2FtbF9tbF9wb3Nfb3V0XzY0XCJcbiAgICBleHRlcm5hbCBvdXRfY2hhbm5lbF9sZW5ndGggOiBvdXRfY2hhbm5lbCAtPiBpbnQ2NFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9jaGFubmVsX3NpemVfNjRcIlxuICAgIGV4dGVybmFsIHNlZWtfaW4gOiBpbl9jaGFubmVsIC0+IGludDY0IC0+IHVuaXQgPSBcImNhbWxfbWxfc2Vla19pbl82NFwiXG4gICAgZXh0ZXJuYWwgcG9zX2luIDogaW5fY2hhbm5lbCAtPiBpbnQ2NCA9IFwiY2FtbF9tbF9wb3NfaW5fNjRcIlxuICAgIGV4dGVybmFsIGluX2NoYW5uZWxfbGVuZ3RoIDogaW5fY2hhbm5lbCAtPiBpbnQ2NCA9IFwiY2FtbF9tbF9jaGFubmVsX3NpemVfNjRcIlxuICBlbmRcblxuKCogRm9ybWF0cyAqKVxuXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2XG4gICA9ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm9ybWF0NlxuICAgPSBGb3JtYXQgb2YgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mbXRcbiAgICAgICAgICAgICAgICogc3RyaW5nXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0ID0gKCdhLCAnYiwgJ2MsICdjLCAnYywgJ2QpIGZvcm1hdDZcblxudHlwZSAoJ2EsICdiLCAnYykgZm9ybWF0ID0gKCdhLCAnYiwgJ2MsICdjKSBmb3JtYXQ0XG5cbmxldCBzdHJpbmdfb2ZfZm9ybWF0IChGb3JtYXQgKF9mbXQsIHN0cikpID0gc3RyXG5cbmV4dGVybmFsIGZvcm1hdF9vZl9zdHJpbmcgOlxuICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+XG4gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgPSBcIiVpZGVudGl0eVwiXG5cbmxldCAoIF5eICkgKEZvcm1hdCAoZm10MSwgc3RyMSkpIChGb3JtYXQgKGZtdDIsIHN0cjIpKSA9XG4gIEZvcm1hdCAoQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmNvbmNhdF9mbXQgZm10MSBmbXQyLFxuICAgICAgICAgIHN0cjEgXiBcIiUsXCIgXiBzdHIyKVxuXG4oKiBNaXNjZWxsYW5lb3VzICopXG5cbmV4dGVybmFsIHN5c19leGl0IDogaW50IC0+ICdhID0gXCJjYW1sX3N5c19leGl0XCJcblxubGV0IGV4aXRfZnVuY3Rpb24gPSBDYW1saW50ZXJuYWxBdG9taWMubWFrZSBmbHVzaF9hbGxcblxubGV0IHJlYyBhdF9leGl0IGYgPVxuICBsZXQgbW9kdWxlIEF0b21pYyA9IENhbWxpbnRlcm5hbEF0b21pYyBpblxuICAoKiBNUFIjNzI1MywgTVBSIzc3OTY6IG1ha2Ugc3VyZSBcImZcIiBpcyBleGVjdXRlZCBvbmx5IG9uY2UgKilcbiAgbGV0IGZfeWV0X3RvX3J1biA9IEF0b21pYy5tYWtlIHRydWUgaW5cbiAgbGV0IG9sZF9leGl0ID0gQXRvbWljLmdldCBleGl0X2Z1bmN0aW9uIGluXG4gIGxldCBuZXdfZXhpdCAoKSA9XG4gICAgaWYgQXRvbWljLmNvbXBhcmVfYW5kX3NldCBmX3lldF90b19ydW4gdHJ1ZSBmYWxzZSB0aGVuIGYgKCkgO1xuICAgIG9sZF9leGl0ICgpXG4gIGluXG4gIGxldCBzdWNjZXNzID0gQXRvbWljLmNvbXBhcmVfYW5kX3NldCBleGl0X2Z1bmN0aW9uIG9sZF9leGl0IG5ld19leGl0IGluXG4gIGlmIG5vdCBzdWNjZXNzIHRoZW4gYXRfZXhpdCBmXG5cbmxldCBkb19hdF9leGl0ICgpID0gKENhbWxpbnRlcm5hbEF0b21pYy5nZXQgZXhpdF9mdW5jdGlvbikgKClcblxubGV0IGV4aXQgcmV0Y29kZSA9XG4gIGRvX2F0X2V4aXQgKCk7XG4gIHN5c19leGl0IHJldGNvZGVcblxubGV0IF8gPSByZWdpc3Rlcl9uYW1lZF92YWx1ZSBcIlBlcnZhc2l2ZXMuZG9fYXRfZXhpdFwiIGRvX2F0X2V4aXRcblxuZXh0ZXJuYWwgbWFqb3IgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZ2NfbWFqb3JcIlxuZXh0ZXJuYWwgbmFrZWRfcG9pbnRlcnNfY2hlY2tlZCA6IHVuaXQgLT4gYm9vbFxuICA9IFwiY2FtbF9zeXNfY29uc3RfbmFrZWRfcG9pbnRlcnNfY2hlY2tlZFwiXG5sZXQgKCkgPSBpZiBuYWtlZF9wb2ludGVyc19jaGVja2VkICgpIHRoZW4gYXRfZXhpdCBtYWpvclxuXG4oKk1PRFVMRV9BTElBU0VTKilcbm1vZHVsZSBBcmcgICAgICAgICAgPSBBcmdcbm1vZHVsZSBBcnJheSAgICAgICAgPSBBcnJheVxubW9kdWxlIEFycmF5TGFiZWxzICA9IEFycmF5TGFiZWxzXG5tb2R1bGUgQXRvbWljICAgICAgID0gQXRvbWljXG5tb2R1bGUgQmlnYXJyYXkgICAgID0gQmlnYXJyYXlcbm1vZHVsZSBCb29sICAgICAgICAgPSBCb29sXG5tb2R1bGUgQnVmZmVyICAgICAgID0gQnVmZmVyXG5tb2R1bGUgQnl0ZXMgICAgICAgID0gQnl0ZXNcbm1vZHVsZSBCeXRlc0xhYmVscyAgPSBCeXRlc0xhYmVsc1xubW9kdWxlIENhbGxiYWNrICAgICA9IENhbGxiYWNrXG5tb2R1bGUgQ2hhciAgICAgICAgID0gQ2hhclxubW9kdWxlIENvbXBsZXggICAgICA9IENvbXBsZXhcbm1vZHVsZSBEaWdlc3QgICAgICAgPSBEaWdlc3Rcbm1vZHVsZSBFaXRoZXIgICAgICAgPSBFaXRoZXJcbm1vZHVsZSBFcGhlbWVyb24gICAgPSBFcGhlbWVyb25cbm1vZHVsZSBGaWxlbmFtZSAgICAgPSBGaWxlbmFtZVxubW9kdWxlIEZsb2F0ICAgICAgICA9IEZsb2F0XG5tb2R1bGUgRm9ybWF0ICAgICAgID0gRm9ybWF0XG5tb2R1bGUgRnVuICAgICAgICAgID0gRnVuXG5tb2R1bGUgR2MgICAgICAgICAgID0gR2Ncbm1vZHVsZSBHZW5sZXggICAgICAgPSBHZW5sZXhcbm1vZHVsZSBIYXNodGJsICAgICAgPSBIYXNodGJsXG5tb2R1bGUgSW5fY2hhbm5lbCAgID0gSW5fY2hhbm5lbFxubW9kdWxlIEludCAgICAgICAgICA9IEludFxubW9kdWxlIEludDMyICAgICAgICA9IEludDMyXG5tb2R1bGUgSW50NjQgICAgICAgID0gSW50NjRcbm1vZHVsZSBMYXp5ICAgICAgICAgPSBMYXp5XG5tb2R1bGUgTGV4aW5nICAgICAgID0gTGV4aW5nXG5tb2R1bGUgTGlzdCAgICAgICAgID0gTGlzdFxubW9kdWxlIExpc3RMYWJlbHMgICA9IExpc3RMYWJlbHNcbm1vZHVsZSBNYXAgICAgICAgICAgPSBNYXBcbm1vZHVsZSBNYXJzaGFsICAgICAgPSBNYXJzaGFsXG5tb2R1bGUgTW9yZUxhYmVscyAgID0gTW9yZUxhYmVsc1xubW9kdWxlIE5hdGl2ZWludCAgICA9IE5hdGl2ZWludFxubW9kdWxlIE9iaiAgICAgICAgICA9IE9ialxubW9kdWxlIE9vICAgICAgICAgICA9IE9vXG5tb2R1bGUgT3B0aW9uICAgICAgID0gT3B0aW9uXG5tb2R1bGUgT3V0X2NoYW5uZWwgID0gT3V0X2NoYW5uZWxcbm1vZHVsZSBQYXJzaW5nICAgICAgPSBQYXJzaW5nXG5tb2R1bGUgUGVydmFzaXZlcyAgID0gUGVydmFzaXZlc1xubW9kdWxlIFByaW50ZXhjICAgICA9IFByaW50ZXhjXG5tb2R1bGUgUHJpbnRmICAgICAgID0gUHJpbnRmXG5tb2R1bGUgUXVldWUgICAgICAgID0gUXVldWVcbm1vZHVsZSBSYW5kb20gICAgICAgPSBSYW5kb21cbm1vZHVsZSBSZXN1bHQgICAgICAgPSBSZXN1bHRcbm1vZHVsZSBTY2FuZiAgICAgICAgPSBTY2FuZlxubW9kdWxlIFNlcSAgICAgICAgICA9IFNlcVxubW9kdWxlIFNldCAgICAgICAgICA9IFNldFxubW9kdWxlIFN0YWNrICAgICAgICA9IFN0YWNrXG5tb2R1bGUgU3RkTGFiZWxzICAgID0gU3RkTGFiZWxzXG5tb2R1bGUgU3RyZWFtICAgICAgID0gU3RyZWFtXG5tb2R1bGUgU3RyaW5nICAgICAgID0gU3RyaW5nXG5tb2R1bGUgU3RyaW5nTGFiZWxzID0gU3RyaW5nTGFiZWxzXG5tb2R1bGUgU3lzICAgICAgICAgID0gU3lzXG5tb2R1bGUgVWNoYXIgICAgICAgID0gVWNoYXJcbm1vZHVsZSBVbml0ICAgICAgICAgPSBVbml0XG5tb2R1bGUgV2VhayAgICAgICAgID0gV2Vha1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgSmVyZW1pZSBEaW1pbm8sIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBKYW5lIFN0cmVldCBHcm91cCBMTEMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiogQGRlcHJlY2F0ZWQgVXNlIHshU3RkbGlifSAqKVxuXG5leHRlcm5hbCByYWlzZSA6IGV4biAtPiAnYSA9IFwiJXJhaXNlXCJcbmV4dGVybmFsIHJhaXNlX25vdHJhY2UgOiBleG4gLT4gJ2EgPSBcIiVyYWlzZV9ub3RyYWNlXCJcbmxldCBpbnZhbGlkX2FyZyA9IGludmFsaWRfYXJnXG5sZXQgZmFpbHdpdGggPSBmYWlsd2l0aFxuZXhjZXB0aW9uIEV4aXRcbmV4dGVybmFsICggPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbmV4dGVybmFsICggPD4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVub3RlcXVhbFwiXG5leHRlcm5hbCAoIDwgKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG5leHRlcm5hbCAoID4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG5leHRlcm5hbCAoIDw9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcbmV4dGVybmFsICggPj0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuZXh0ZXJuYWwgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludCA9IFwiJWNvbXBhcmVcIlxubGV0IG1pbiA9IG1pblxubGV0IG1heCA9IG1heFxuZXh0ZXJuYWwgKCA9PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxXCJcbmV4dGVybmFsICggIT0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVub3RlcVwiXG5leHRlcm5hbCBub3QgOiBib29sIC0+IGJvb2wgPSBcIiVib29sbm90XCJcbmV4dGVybmFsICggJiYgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdWFuZFwiXG5leHRlcm5hbCAoICYgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdWFuZFwiXG4gIFtAQG9jYW1sLmRlcHJlY2F0ZWQgXCJVc2UgKCYmKSBpbnN0ZWFkLlwiXVxuZXh0ZXJuYWwgKCB8fCApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1b3JcIlxuZXh0ZXJuYWwgKCBvciApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1b3JcIlxuICBbQEBvY2FtbC5kZXByZWNhdGVkIFwiVXNlICh8fCkgaW5zdGVhZC5cIl1cbmV4dGVybmFsIF9fTE9DX18gOiBzdHJpbmcgPSBcIiVsb2NfTE9DXCJcbmV4dGVybmFsIF9fRklMRV9fIDogc3RyaW5nID0gXCIlbG9jX0ZJTEVcIlxuZXh0ZXJuYWwgX19MSU5FX18gOiBpbnQgPSBcIiVsb2NfTElORVwiXG5leHRlcm5hbCBfX01PRFVMRV9fIDogc3RyaW5nID0gXCIlbG9jX01PRFVMRVwiXG5leHRlcm5hbCBfX1BPU19fIDogc3RyaW5nICogaW50ICogaW50ICogaW50ID0gXCIlbG9jX1BPU1wiXG5leHRlcm5hbCBfX0xPQ19PRl9fIDogJ2EgLT4gc3RyaW5nICogJ2EgPSBcIiVsb2NfTE9DXCJcbmV4dGVybmFsIF9fTElORV9PRl9fIDogJ2EgLT4gaW50ICogJ2EgPSBcIiVsb2NfTElORVwiXG5leHRlcm5hbCBfX1BPU19PRl9fIDogJ2EgLT4gKHN0cmluZyAqIGludCAqIGludCAqIGludCkgKiAnYSA9IFwiJWxvY19QT1NcIlxuZXh0ZXJuYWwgKCB8PiApIDogJ2EgLT4gKCdhIC0+ICdiKSAtPiAnYiA9IFwiJXJldmFwcGx5XCJcbmV4dGVybmFsICggQEAgKSA6ICgnYSAtPiAnYikgLT4gJ2EgLT4gJ2IgPSBcIiVhcHBseVwiXG5leHRlcm5hbCAoIH4tICkgOiBpbnQgLT4gaW50ID0gXCIlbmVnaW50XCJcbmV4dGVybmFsICggfisgKSA6IGludCAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBzdWNjIDogaW50IC0+IGludCA9IFwiJXN1Y2NpbnRcIlxuZXh0ZXJuYWwgcHJlZCA6IGludCAtPiBpbnQgPSBcIiVwcmVkaW50XCJcbmV4dGVybmFsICggKyApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhZGRpbnRcIlxuZXh0ZXJuYWwgKCAtICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXN1YmludFwiXG5leHRlcm5hbCAoICogKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbXVsaW50XCJcbmV4dGVybmFsICggLyApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVkaXZpbnRcIlxuZXh0ZXJuYWwgKCBtb2QgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbW9kaW50XCJcbmxldCBhYnMgPSBhYnNcbmxldCBtYXhfaW50ID0gbWF4X2ludFxubGV0IG1pbl9pbnQgPSBtaW5faW50XG5leHRlcm5hbCAoIGxhbmQgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYW5kaW50XCJcbmV4dGVybmFsICggbG9yICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW9yaW50XCJcbmV4dGVybmFsICggbHhvciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiV4b3JpbnRcIlxubGV0IGxub3QgPSBsbm90XG5leHRlcm5hbCAoIGxzbCApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc2xpbnRcIlxuZXh0ZXJuYWwgKCBsc3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNyaW50XCJcbmV4dGVybmFsICggYXNyICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFzcmludFwiXG5leHRlcm5hbCAoIH4tLiApIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVuZWdmbG9hdFwiXG5leHRlcm5hbCAoIH4rLiApIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCAoICsuICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFkZGZsb2F0XCJcbmV4dGVybmFsICggLS4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlc3ViZmxvYXRcIlxuZXh0ZXJuYWwgKCAqLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVtdWxmbG9hdFwiXG5leHRlcm5hbCAoIC8uICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWRpdmZsb2F0XCJcbmV4dGVybmFsICggKiogKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Bvd2VyX2Zsb2F0XCIgXCJwb3dcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc3FydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NxcnRfZmxvYXRcIiBcInNxcnRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwX2Zsb2F0XCIgXCJleHBcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nX2Zsb2F0XCIgXCJsb2dcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nMTAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxMF9mbG9hdFwiIFwibG9nMTBcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwbTEgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBtMV9mbG9hdFwiIFwiY2FtbF9leHBtMVwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxcCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzFwX2Zsb2F0XCIgXCJjYW1sX2xvZzFwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc19mbG9hdFwiIFwiY29zXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Npbl9mbG9hdFwiIFwic2luXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Rhbl9mbG9hdFwiIFwidGFuXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zX2Zsb2F0XCIgXCJhY29zXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luX2Zsb2F0XCIgXCJhc2luXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuX2Zsb2F0XCIgXCJhdGFuXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4yIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbjJfZmxvYXRcIiBcImF0YW4yXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGh5cG90IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfaHlwb3RfZmxvYXRcIiBcImNhbWxfaHlwb3RcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc2hfZmxvYXRcIiBcImNvc2hcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NpbmhfZmxvYXRcIiBcInNpbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3RhbmhfZmxvYXRcIiBcInRhbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2VpbCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2NlaWxfZmxvYXRcIiBcImNlaWxcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvb3IgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbG9vcl9mbG9hdFwiIFwiZmxvb3JcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWJzX2Zsb2F0IDogZmxvYXQgLT4gZmxvYXQgPSBcIiVhYnNmbG9hdFwiXG5leHRlcm5hbCBjb3B5c2lnbiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gICAgICAgICAgICAgICAgICA9IFwiY2FtbF9jb3B5c2lnbl9mbG9hdFwiIFwiY2FtbF9jb3B5c2lnblwiXG4gICAgICAgICAgICAgICAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbW9kX2Zsb2F0IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZm1vZF9mbG9hdFwiIFwiZm1vZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmcmV4cCA6IGZsb2F0IC0+IGZsb2F0ICogaW50ID0gXCJjYW1sX2ZyZXhwX2Zsb2F0XCJcbmV4dGVybmFsIGxkZXhwIDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IChpbnQgW0B1bnRhZ2dlZF0pIC0+IChmbG9hdCBbQHVuYm94ZWRdKSA9XG4gIFwiY2FtbF9sZGV4cF9mbG9hdFwiIFwiY2FtbF9sZGV4cF9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIG1vZGYgOiBmbG9hdCAtPiBmbG9hdCAqIGZsb2F0ID0gXCJjYW1sX21vZGZfZmxvYXRcIlxuZXh0ZXJuYWwgZmxvYXQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIGZsb2F0X29mX2ludCA6IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0b2ZpbnRcIlxuZXh0ZXJuYWwgdHJ1bmNhdGUgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcbmV4dGVybmFsIGludF9vZl9mbG9hdCA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxubGV0IGluZmluaXR5ID0gaW5maW5pdHlcbmxldCBuZWdfaW5maW5pdHkgPSBuZWdfaW5maW5pdHlcbmxldCBuYW4gPSBuYW5cbmxldCBtYXhfZmxvYXQgPSBtYXhfZmxvYXRcbmxldCBtaW5fZmxvYXQgPSBtaW5fZmxvYXRcbmxldCBlcHNpbG9uX2Zsb2F0ID0gZXBzaWxvbl9mbG9hdFxudHlwZSBub25yZWMgZnBjbGFzcyA9IGZwY2xhc3MgPVxuICAgIEZQX25vcm1hbFxuICB8IEZQX3N1Ym5vcm1hbFxuICB8IEZQX3plcm9cbiAgfCBGUF9pbmZpbml0ZVxuICB8IEZQX25hblxuZXh0ZXJuYWwgY2xhc3NpZnlfZmxvYXQgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gZnBjbGFzcyA9XG4gIFwiY2FtbF9jbGFzc2lmeV9mbG9hdFwiIFwiY2FtbF9jbGFzc2lmeV9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cbmxldCAoIF4gKSA9ICggXiApXG5leHRlcm5hbCBpbnRfb2ZfY2hhciA6IGNoYXIgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxubGV0IGNoYXJfb2ZfaW50ID0gY2hhcl9vZl9pbnRcbmV4dGVybmFsIGlnbm9yZSA6ICdhIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxubGV0IHN0cmluZ19vZl9ib29sID0gc3RyaW5nX29mX2Jvb2xcbmxldCBib29sX29mX3N0cmluZyA9IGJvb2xfb2Zfc3RyaW5nXG5sZXQgYm9vbF9vZl9zdHJpbmdfb3B0ID0gYm9vbF9vZl9zdHJpbmdfb3B0XG5sZXQgc3RyaW5nX29mX2ludCA9IHN0cmluZ19vZl9pbnRcbmV4dGVybmFsIGludF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50ID0gXCJjYW1sX2ludF9vZl9zdHJpbmdcIlxubGV0IGludF9vZl9zdHJpbmdfb3B0ID0gaW50X29mX3N0cmluZ19vcHRcbmxldCBzdHJpbmdfb2ZfZmxvYXQgPSBzdHJpbmdfb2ZfZmxvYXRcbmV4dGVybmFsIGZsb2F0X29mX3N0cmluZyA6IHN0cmluZyAtPiBmbG9hdCA9IFwiY2FtbF9mbG9hdF9vZl9zdHJpbmdcIlxubGV0IGZsb2F0X29mX3N0cmluZ19vcHQgPSBmbG9hdF9vZl9zdHJpbmdfb3B0XG5leHRlcm5hbCBmc3QgOiAnYSAqICdiIC0+ICdhID0gXCIlZmllbGQwXCJcbmV4dGVybmFsIHNuZCA6ICdhICogJ2IgLT4gJ2IgPSBcIiVmaWVsZDFcIlxubGV0ICggQCApICA9ICggQCApXG50eXBlIG5vbnJlYyBpbl9jaGFubmVsID0gaW5fY2hhbm5lbFxudHlwZSBub25yZWMgb3V0X2NoYW5uZWwgPSBvdXRfY2hhbm5lbFxubGV0IHN0ZGluID0gc3RkaW5cbmxldCBzdGRvdXQgPSBzdGRvdXRcbmxldCBzdGRlcnIgPSBzdGRlcnJcbmxldCBwcmludF9jaGFyID0gcHJpbnRfY2hhclxubGV0IHByaW50X3N0cmluZyA9IHByaW50X3N0cmluZ1xubGV0IHByaW50X2J5dGVzID0gcHJpbnRfYnl0ZXNcbmxldCBwcmludF9pbnQgPSBwcmludF9pbnRcbmxldCBwcmludF9mbG9hdCA9IHByaW50X2Zsb2F0XG5sZXQgcHJpbnRfZW5kbGluZSA9IHByaW50X2VuZGxpbmVcbmxldCBwcmludF9uZXdsaW5lID0gcHJpbnRfbmV3bGluZVxubGV0IHByZXJyX2NoYXIgPSBwcmVycl9jaGFyXG5sZXQgcHJlcnJfc3RyaW5nID0gcHJlcnJfc3RyaW5nXG5sZXQgcHJlcnJfYnl0ZXMgPSBwcmVycl9ieXRlc1xubGV0IHByZXJyX2ludCA9IHByZXJyX2ludFxubGV0IHByZXJyX2Zsb2F0ID0gcHJlcnJfZmxvYXRcbmxldCBwcmVycl9lbmRsaW5lID0gcHJlcnJfZW5kbGluZVxubGV0IHByZXJyX25ld2xpbmUgPSBwcmVycl9uZXdsaW5lXG5sZXQgcmVhZF9saW5lID0gcmVhZF9saW5lXG5sZXQgcmVhZF9pbnQgPSByZWFkX2ludFxubGV0IHJlYWRfaW50X29wdCA9IHJlYWRfaW50X29wdFxubGV0IHJlYWRfZmxvYXQgPSByZWFkX2Zsb2F0XG5sZXQgcmVhZF9mbG9hdF9vcHQgPSByZWFkX2Zsb2F0X29wdFxudHlwZSBub25yZWMgb3Blbl9mbGFnID0gb3Blbl9mbGFnID1cbiAgICBPcGVuX3Jkb25seVxuICB8IE9wZW5fd3Jvbmx5XG4gIHwgT3Blbl9hcHBlbmRcbiAgfCBPcGVuX2NyZWF0XG4gIHwgT3Blbl90cnVuY1xuICB8IE9wZW5fZXhjbFxuICB8IE9wZW5fYmluYXJ5XG4gIHwgT3Blbl90ZXh0XG4gIHwgT3Blbl9ub25ibG9ja1xubGV0IG9wZW5fb3V0ID0gb3Blbl9vdXRcbmxldCBvcGVuX291dF9iaW4gPSBvcGVuX291dF9iaW5cbmxldCBvcGVuX291dF9nZW4gPSBvcGVuX291dF9nZW5cbmxldCBmbHVzaCA9IGZsdXNoXG5sZXQgZmx1c2hfYWxsID0gZmx1c2hfYWxsXG5sZXQgb3V0cHV0X2NoYXIgPSBvdXRwdXRfY2hhclxubGV0IG91dHB1dF9zdHJpbmcgPSBvdXRwdXRfc3RyaW5nXG5sZXQgb3V0cHV0X2J5dGVzID0gb3V0cHV0X2J5dGVzXG5sZXQgb3V0cHV0ID0gb3V0cHV0XG5sZXQgb3V0cHV0X3N1YnN0cmluZyA9IG91dHB1dF9zdWJzdHJpbmdcbmxldCBvdXRwdXRfYnl0ZSA9IG91dHB1dF9ieXRlXG5sZXQgb3V0cHV0X2JpbmFyeV9pbnQgPSBvdXRwdXRfYmluYXJ5X2ludFxubGV0IG91dHB1dF92YWx1ZSA9IG91dHB1dF92YWx1ZVxubGV0IHNlZWtfb3V0ID0gc2Vla19vdXRcbmxldCBwb3Nfb3V0ID0gcG9zX291dFxubGV0IG91dF9jaGFubmVsX2xlbmd0aCA9IG91dF9jaGFubmVsX2xlbmd0aFxubGV0IGNsb3NlX291dCA9IGNsb3NlX291dFxubGV0IGNsb3NlX291dF9ub2VyciA9IGNsb3NlX291dF9ub2VyclxubGV0IHNldF9iaW5hcnlfbW9kZV9vdXQgPSBzZXRfYmluYXJ5X21vZGVfb3V0XG5sZXQgb3Blbl9pbiA9IG9wZW5faW5cbmxldCBvcGVuX2luX2JpbiA9IG9wZW5faW5fYmluXG5sZXQgb3Blbl9pbl9nZW4gPSBvcGVuX2luX2dlblxubGV0IGlucHV0X2NoYXIgPSBpbnB1dF9jaGFyXG5sZXQgaW5wdXRfbGluZSA9IGlucHV0X2xpbmVcbmxldCBpbnB1dCA9IGlucHV0XG5sZXQgcmVhbGx5X2lucHV0ID0gcmVhbGx5X2lucHV0XG5sZXQgcmVhbGx5X2lucHV0X3N0cmluZyA9IHJlYWxseV9pbnB1dF9zdHJpbmdcbmxldCBpbnB1dF9ieXRlID0gaW5wdXRfYnl0ZVxubGV0IGlucHV0X2JpbmFyeV9pbnQgPSBpbnB1dF9iaW5hcnlfaW50XG5sZXQgaW5wdXRfdmFsdWUgPSBpbnB1dF92YWx1ZVxubGV0IHNlZWtfaW4gPSBzZWVrX2luXG5sZXQgcG9zX2luID0gcG9zX2luXG5sZXQgaW5fY2hhbm5lbF9sZW5ndGggPSBpbl9jaGFubmVsX2xlbmd0aFxubGV0IGNsb3NlX2luID0gY2xvc2VfaW5cbmxldCBjbG9zZV9pbl9ub2VyciA9IGNsb3NlX2luX25vZXJyXG5sZXQgc2V0X2JpbmFyeV9tb2RlX2luID0gc2V0X2JpbmFyeV9tb2RlX2luXG5tb2R1bGUgTGFyZ2VGaWxlID0gTGFyZ2VGaWxlXG50eXBlIG5vbnJlYyAnYSByZWYgPSAnYSByZWYgPSB7IG11dGFibGUgY29udGVudHMgOiAnYSB9XG5leHRlcm5hbCByZWYgOiAnYSAtPiAnYSByZWYgPSBcIiVtYWtlbXV0YWJsZVwiXG5leHRlcm5hbCAoICEgKSA6ICdhIHJlZiAtPiAnYSA9IFwiJWZpZWxkMFwiXG5leHRlcm5hbCAoIDo9ICkgOiAnYSByZWYgLT4gJ2EgLT4gdW5pdCA9IFwiJXNldGZpZWxkMFwiXG5leHRlcm5hbCBpbmNyIDogaW50IHJlZiAtPiB1bml0ID0gXCIlaW5jclwiXG5leHRlcm5hbCBkZWNyIDogaW50IHJlZiAtPiB1bml0ID0gXCIlZGVjclwiXG50eXBlIG5vbnJlYyAoJ2EsJ2IpIHJlc3VsdCA9ICgnYSwnYikgcmVzdWx0ID0gT2sgb2YgJ2EgfCBFcnJvciBvZiAnYlxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA9XG4gICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm9ybWF0NlxudHlwZSAoJ2EsICdiLCAnYywgJ2QpIGZvcm1hdDQgPSAoJ2EsICdiLCAnYywgJ2MsICdjLCAnZCkgZm9ybWF0NlxudHlwZSAoJ2EsICdiLCAnYykgZm9ybWF0ID0gKCdhLCAnYiwgJ2MsICdjKSBmb3JtYXQ0XG5sZXQgc3RyaW5nX29mX2Zvcm1hdCA9IHN0cmluZ19vZl9mb3JtYXRcbmV4dGVybmFsIGZvcm1hdF9vZl9zdHJpbmcgOlxuICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPlxuICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA9IFwiJWlkZW50aXR5XCJcbmxldCAoIF5eICkgPSAoIF5eIClcbmxldCBleGl0ID0gZXhpdFxubGV0IGF0X2V4aXQgPSBhdF9leGl0XG5sZXQgdmFsaWRfZmxvYXRfbGV4ZW0gPSB2YWxpZF9mbG9hdF9sZXhlbVxubGV0IGRvX2F0X2V4aXQgPSBkb19hdF9leGl0XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgIE5pY29sYXMgT2plZGEgQmFyLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4dGVybmFsIG5lZyA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlbmVnZmxvYXRcIlxuZXh0ZXJuYWwgYWRkIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVhZGRmbG9hdFwiXG5leHRlcm5hbCBzdWIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJXN1YmZsb2F0XCJcbmV4dGVybmFsIG11bCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlbXVsZmxvYXRcIlxuZXh0ZXJuYWwgZGl2IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVkaXZmbG9hdFwiXG5leHRlcm5hbCByZW0gOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbW9kX2Zsb2F0XCIgXCJmbW9kXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZtYSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2ZtYV9mbG9hdFwiIFwiY2FtbF9mbWFcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWJzIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVhYnNmbG9hdFwiXG5cbmxldCB6ZXJvID0gMC5cbmxldCBvbmUgPSAxLlxubGV0IG1pbnVzX29uZSA9IC0xLlxubGV0IGluZmluaXR5ID0gU3RkbGliLmluZmluaXR5XG5sZXQgbmVnX2luZmluaXR5ID0gU3RkbGliLm5lZ19pbmZpbml0eVxubGV0IG5hbiA9IFN0ZGxpYi5uYW5cbmxldCBpc19maW5pdGUgKHg6IGZsb2F0KSA9IHggLS4geCA9IDAuXG5sZXQgaXNfaW5maW5pdGUgKHg6IGZsb2F0KSA9IDEuIC8uIHggPSAwLlxubGV0IGlzX25hbiAoeDogZmxvYXQpID0geCA8PiB4XG5cbmxldCBwaSA9IDB4MS45MjFmYjU0NDQyZDE4cCsxXG5sZXQgbWF4X2Zsb2F0ID0gU3RkbGliLm1heF9mbG9hdFxubGV0IG1pbl9mbG9hdCA9IFN0ZGxpYi5taW5fZmxvYXRcbmxldCBlcHNpbG9uID0gU3RkbGliLmVwc2lsb25fZmxvYXRcbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0b2ZpbnRcIlxuZXh0ZXJuYWwgdG9faW50IDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5leHRlcm5hbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gZmxvYXQgPSBcImNhbWxfZmxvYXRfb2Zfc3RyaW5nXCJcbmxldCBvZl9zdHJpbmdfb3B0ID0gU3RkbGliLmZsb2F0X29mX3N0cmluZ19vcHRcbmxldCB0b19zdHJpbmcgPSBTdGRsaWIuc3RyaW5nX29mX2Zsb2F0XG50eXBlIGZwY2xhc3MgPSBTdGRsaWIuZnBjbGFzcyA9XG4gICAgRlBfbm9ybWFsXG4gIHwgRlBfc3Vibm9ybWFsXG4gIHwgRlBfemVyb1xuICB8IEZQX2luZmluaXRlXG4gIHwgRlBfbmFuXG5leHRlcm5hbCBjbGFzc2lmeV9mbG9hdCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiBmcGNsYXNzID1cbiAgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0XCIgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgcG93IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfcG93ZXJfZmxvYXRcIiBcInBvd1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzcXJ0IDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc3FydF9mbG9hdFwiIFwic3FydFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjYnJ0IDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY2JydF9mbG9hdFwiIFwiY2FtbF9jYnJ0XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cF9mbG9hdFwiIFwiZXhwXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cDIgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHAyX2Zsb2F0XCIgXCJjYW1sX2V4cDJcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nX2Zsb2F0XCIgXCJsb2dcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nMTAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxMF9mbG9hdFwiIFwibG9nMTBcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nMiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzJfZmxvYXRcIiBcImNhbWxfbG9nMlwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHBtMSA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cG0xX2Zsb2F0XCIgXCJjYW1sX2V4cG0xXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzFwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMXBfZmxvYXRcIiBcImNhbWxfbG9nMXBcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zX2Zsb2F0XCIgXCJjb3NcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luX2Zsb2F0XCIgXCJzaW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuX2Zsb2F0XCIgXCJ0YW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NfZmxvYXRcIiBcImFjb3NcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2FzaW5fZmxvYXRcIiBcImFzaW5cIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5fZmxvYXRcIiBcImF0YW5cIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbjIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuMl9mbG9hdFwiIFwiYXRhbjJcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgaHlwb3QgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICAgICAgICAgICAgICAgPSBcImNhbWxfaHlwb3RfZmxvYXRcIiBcImNhbWxfaHlwb3RcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc2hfZmxvYXRcIiBcImNvc2hcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NpbmhfZmxvYXRcIiBcInNpbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3RhbmhfZmxvYXRcIiBcInRhbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zaF9mbG9hdFwiIFwiY2FtbF9hY29zaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhc2luaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2FzaW5oX2Zsb2F0XCIgXCJjYW1sX2FzaW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbmhfZmxvYXRcIiBcImNhbWxfYXRhbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXJmIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXJmX2Zsb2F0XCIgXCJjYW1sX2VyZlwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBlcmZjIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXJmY19mbG9hdFwiIFwiY2FtbF9lcmZjXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRydW5jIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdHJ1bmNfZmxvYXRcIiBcImNhbWxfdHJ1bmNcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgcm91bmQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9yb3VuZF9mbG9hdFwiIFwiY2FtbF9yb3VuZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjZWlsIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY2VpbF9mbG9hdFwiIFwiY2VpbFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbG9vciA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Zsb29yX2Zsb2F0XCIgXCJmbG9vclwiXG5bQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG5sZXQgaXNfaW50ZWdlciB4ID0geCA9IHRydW5jIHggJiYgaXNfZmluaXRlIHhcblxuZXh0ZXJuYWwgbmV4dF9hZnRlciA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gID0gXCJjYW1sX25leHRhZnRlcl9mbG9hdFwiIFwiY2FtbF9uZXh0YWZ0ZXJcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG5sZXQgc3VjYyB4ID0gbmV4dF9hZnRlciB4IGluZmluaXR5XG5sZXQgcHJlZCB4ID0gbmV4dF9hZnRlciB4IG5lZ19pbmZpbml0eVxuXG5leHRlcm5hbCBjb3B5X3NpZ24gOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICAgICAgICAgICAgICAgICAgPSBcImNhbWxfY29weXNpZ25fZmxvYXRcIiBcImNhbWxfY29weXNpZ25cIlxuICAgICAgICAgICAgICAgICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpZ25fYml0IDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IGJvb2xcbiAgPSBcImNhbWxfc2lnbmJpdF9mbG9hdFwiIFwiY2FtbF9zaWduYml0XCIgW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgZnJleHAgOiBmbG9hdCAtPiBmbG9hdCAqIGludCA9IFwiY2FtbF9mcmV4cF9mbG9hdFwiXG5leHRlcm5hbCBsZGV4cCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiAoaW50IFtAdW50YWdnZWRdKSAtPiAoZmxvYXQgW0B1bmJveGVkXSkgPVxuICBcImNhbWxfbGRleHBfZmxvYXRcIiBcImNhbWxfbGRleHBfZmxvYXRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtb2RmIDogZmxvYXQgLT4gZmxvYXQgKiBmbG9hdCA9IFwiY2FtbF9tb2RmX2Zsb2F0XCJcbnR5cGUgdCA9IGZsb2F0XG5leHRlcm5hbCBjb21wYXJlIDogZmxvYXQgLT4gZmxvYXQgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5sZXQgZXF1YWwgeCB5ID0gY29tcGFyZSB4IHkgPSAwXG5cbmxldFtAaW5saW5lXSBtaW4gKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuXG4gICAgaWYgaXNfbmFuIHkgdGhlbiB5IGVsc2UgeFxuICBlbHNlIGlmIGlzX25hbiB4IHRoZW4geCBlbHNlIHlcblxubGV0W0BpbmxpbmVdIG1heCAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW5cbiAgICBpZiBpc19uYW4geCB0aGVuIHggZWxzZSB5XG4gIGVsc2UgaWYgaXNfbmFuIHkgdGhlbiB5IGVsc2UgeFxuXG5sZXRbQGlubGluZV0gbWluX21heCAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiBpc19uYW4geCB8fCBpc19uYW4geSB0aGVuIChuYW4sIG5hbilcbiAgZWxzZSBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW4gKHgsIHkpIGVsc2UgKHksIHgpXG5cbmxldFtAaW5saW5lXSBtaW5fbnVtICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlblxuICAgIGlmIGlzX25hbiB4IHRoZW4geSBlbHNlIHhcbiAgZWxzZSBpZiBpc19uYW4geSB0aGVuIHggZWxzZSB5XG5cbmxldFtAaW5saW5lXSBtYXhfbnVtICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlblxuICAgIGlmIGlzX25hbiB5IHRoZW4geCBlbHNlIHlcbiAgZWxzZSBpZiBpc19uYW4geCB0aGVuIHkgZWxzZSB4XG5cbmxldFtAaW5saW5lXSBtaW5fbWF4X251bSAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiBpc19uYW4geCB0aGVuICh5LHkpXG4gIGVsc2UgaWYgaXNfbmFuIHkgdGhlbiAoeCx4KVxuICBlbHNlIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlbiAoeCx5KSBlbHNlICh5LHgpXG5cbmV4dGVybmFsIHNlZWRlZF9oYXNoX3BhcmFtIDogaW50IC0+IGludCAtPiBpbnQgLT4gZmxvYXQgLT4gaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBoYXNoIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgMCB4XG5cbm1vZHVsZSBBcnJheSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9IGZsb2F0YXJyYXlcblxuICBleHRlcm5hbCBsZW5ndGggOiB0IC0+IGludCA9IFwiJWZsb2F0YXJyYXlfbGVuZ3RoXCJcbiAgZXh0ZXJuYWwgZ2V0IDogdCAtPiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdGFycmF5X3NhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgc2V0IDogdCAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdCA9IFwiJWZsb2F0YXJyYXlfc2FmZV9zZXRcIlxuICBleHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gdCA9IFwiY2FtbF9mbG9hdGFycmF5X2NyZWF0ZVwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQgOiB0IC0+IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQgOiB0IC0+IGludCAtPiBmbG9hdCAtPiB1bml0ID0gXCIlZmxvYXRhcnJheV91bnNhZmVfc2V0XCJcblxuICBsZXQgdW5zYWZlX2ZpbGwgYSBvZnMgbGVuIHYgPVxuICAgIGZvciBpID0gb2ZzIHRvIG9mcyArIGxlbiAtIDEgZG8gdW5zYWZlX3NldCBhIGkgdiBkb25lXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX2JsaXQ6IHQgLT4gaW50IC0+IHQgLT4gaW50IC0+IGludCAtPiB1bml0ID1cbiAgICBcImNhbWxfZmxvYXRhcnJheV9ibGl0XCIgW0BAbm9hbGxvY11cblxuICBsZXQgY2hlY2sgYSBvZnMgbGVuIG1zZyA9XG4gICAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyArIGxlbiA8IDAgfHwgb2ZzICsgbGVuID4gbGVuZ3RoIGEgdGhlblxuICAgICAgaW52YWxpZF9hcmcgbXNnXG5cbiAgbGV0IG1ha2UgbiB2ID1cbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIG4gaW5cbiAgICB1bnNhZmVfZmlsbCByZXN1bHQgMCBuIHY7XG4gICAgcmVzdWx0XG5cbiAgbGV0IGluaXQgbCBmID1cbiAgICBpZiBsIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiRmxvYXQuQXJyYXkuaW5pdFwiXG4gICAgZWxzZVxuICAgICAgbGV0IHJlcyA9IGNyZWF0ZSBsIGluXG4gICAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgICAgdW5zYWZlX3NldCByZXMgaSAoZiBpKVxuICAgICAgZG9uZTtcbiAgICAgIHJlc1xuXG4gIGxldCBhcHBlbmQgYTEgYTIgPVxuICAgIGxldCBsMSA9IGxlbmd0aCBhMSBpblxuICAgIGxldCBsMiA9IGxlbmd0aCBhMiBpblxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgKGwxICsgbDIpIGluXG4gICAgdW5zYWZlX2JsaXQgYTEgMCByZXN1bHQgMCBsMTtcbiAgICB1bnNhZmVfYmxpdCBhMiAwIHJlc3VsdCBsMSBsMjtcbiAgICByZXN1bHRcblxuICAoKiBuZXh0IDMgZnVuY3Rpb25zOiBtb2RpZmllZCBjb3B5IG9mIGNvZGUgZnJvbSBzdHJpbmcubWwgKilcbiAgbGV0IGVuc3VyZV9nZSAoeDppbnQpIHkgPVxuICAgIGlmIHggPj0geSB0aGVuIHggZWxzZSBpbnZhbGlkX2FyZyBcIkZsb2F0LkFycmF5LmNvbmNhdFwiXG5cbiAgbGV0IHJlYyBzdW1fbGVuZ3RocyBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjXG4gICAgfCBoZCA6OiB0bCAtPiBzdW1fbGVuZ3RocyAoZW5zdXJlX2dlIChsZW5ndGggaGQgKyBhY2MpIGFjYykgdGxcblxuICBsZXQgY29uY2F0IGwgPVxuICAgIGxldCBsZW4gPSBzdW1fbGVuZ3RocyAwIGwgaW5cbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIGxlbiBpblxuICAgIGxldCByZWMgbG9vcCBsIGkgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IGFzc2VydCAoaSA9IGxlbilcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgbGV0IGhsZW4gPSBsZW5ndGggaGQgaW5cbiAgICAgICAgdW5zYWZlX2JsaXQgaGQgMCByZXN1bHQgaSBobGVuO1xuICAgICAgICBsb29wIHRsIChpICsgaGxlbilcbiAgICBpblxuICAgIGxvb3AgbCAwO1xuICAgIHJlc3VsdFxuXG4gIGxldCBzdWIgYSBvZnMgbGVuID1cbiAgICBjaGVjayBhIG9mcyBsZW4gXCJGbG9hdC5BcnJheS5zdWJcIjtcbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIGxlbiBpblxuICAgIHVuc2FmZV9ibGl0IGEgb2ZzIHJlc3VsdCAwIGxlbjtcbiAgICByZXN1bHRcblxuICBsZXQgY29weSBhID1cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSBsIGluXG4gICAgdW5zYWZlX2JsaXQgYSAwIHJlc3VsdCAwIGw7XG4gICAgcmVzdWx0XG5cbiAgbGV0IGZpbGwgYSBvZnMgbGVuIHYgPVxuICAgIGNoZWNrIGEgb2ZzIGxlbiBcIkZsb2F0LkFycmF5LmZpbGxcIjtcbiAgICB1bnNhZmVfZmlsbCBhIG9mcyBsZW4gdlxuXG4gIGxldCBibGl0IHNyYyBzb2ZzIGRzdCBkb2ZzIGxlbiA9XG4gICAgY2hlY2sgc3JjIHNvZnMgbGVuIFwiRmxvYXQuYXJyYXkuYmxpdFwiO1xuICAgIGNoZWNrIGRzdCBkb2ZzIGxlbiBcIkZsb2F0LmFycmF5LmJsaXRcIjtcbiAgICB1bnNhZmVfYmxpdCBzcmMgc29mcyBkc3QgZG9mcyBsZW5cblxuICBsZXQgdG9fbGlzdCBhID1cbiAgICBMaXN0LmluaXQgKGxlbmd0aCBhKSAodW5zYWZlX2dldCBhKVxuXG4gIGxldCBvZl9saXN0IGwgPVxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgKExpc3QubGVuZ3RoIGwpIGluXG4gICAgbGV0IHJlYyBmaWxsIGkgbCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gcmVzdWx0XG4gICAgICB8IGggOjogdCAtPiB1bnNhZmVfc2V0IHJlc3VsdCBpIGg7IGZpbGwgKGkgKyAxKSB0XG4gICAgaW5cbiAgICBmaWxsIDAgbFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgaXRlciBmIGEgPVxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGl0ZXIyIGYgYSBiID1cbiAgICBpZiBsZW5ndGggYSA8PiBsZW5ndGggYiB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIkZsb2F0LkFycmF5Lml0ZXIyOiBhcnJheXMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiXG4gICAgZWxzZVxuICAgICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmICh1bnNhZmVfZ2V0IGEgaSkgKHVuc2FmZV9nZXQgYiBpKSBkb25lXG5cbiAgbGV0IG1hcCBmIGEgPVxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuXG4gIGxldCBtYXAyIGYgYSBiID1cbiAgICBsZXQgbGEgPSBsZW5ndGggYSBpblxuICAgIGxldCBsYiA9IGxlbmd0aCBiIGluXG4gICAgaWYgbGEgPD4gbGIgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5tYXAyOiBhcnJheXMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBjcmVhdGUgbGEgaW5cbiAgICAgIGZvciBpID0gMCB0byBsYSAtIDEgZG9cbiAgICAgICAgdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSAodW5zYWZlX2dldCBiIGkpKVxuICAgICAgZG9uZTtcbiAgICAgIHJcbiAgICBlbmRcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGl0ZXJpIGYgYSA9XG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmIGkgKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbiAgbGV0IG1hcGkgZiBhID1cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgaSAodW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZm9sZF9sZWZ0IGYgeCBhID1cbiAgICBsZXQgciA9IHJlZiB4IGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IGEgaSlcbiAgICBkb25lO1xuICAgICFyXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBmb2xkX3JpZ2h0IGYgYSB4ID1cbiAgICBsZXQgciA9IHJlZiB4IGluXG4gICAgZm9yIGkgPSBsZW5ndGggYSAtIDEgZG93bnRvIDAgZG9cbiAgICAgIHIgOj0gZiAodW5zYWZlX2dldCBhIGkpICFyXG4gICAgZG9uZTtcbiAgICAhclxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZXhpc3RzIHAgYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSBsb29wIChpICsgMSkgaW5cbiAgICBsb29wIDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGZvcl9hbGwgcCBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiB0cnVlXG4gICAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIGxvb3AgKGkgKyAxKVxuICAgICAgZWxzZSBmYWxzZSBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgbWVtIHggYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICAgIGVsc2UgaWYgY29tcGFyZSAodW5zYWZlX2dldCBhIGkpIHggPSAwIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG4gICgqIG1vc3RseSBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwsIGJ1dCBzbGlnaHRseSBkaWZmZXJlbnQgKilcbiAgbGV0IG1lbV9pZWVlIHggYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICAgIGVsc2UgaWYgeCA9ICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgICBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGV4Y2VwdGlvbiBCb3R0b20gb2YgaW50XG4gIGxldCBzb3J0IGNtcCBhID1cbiAgICBsZXQgbWF4c29uIGwgaSA9XG4gICAgICBsZXQgaTMxID0gaStpK2krMSBpblxuICAgICAgbGV0IHggPSByZWYgaTMxIGluXG4gICAgICBpZiBpMzErMiA8IGwgdGhlbiBiZWdpblxuICAgICAgICBpZiBjbXAgKGdldCBhIGkzMSkgKGdldCBhIChpMzErMSkpIDwgMCB0aGVuIHggOj0gaTMxKzE7XG4gICAgICAgIGlmIGNtcCAoZ2V0IGEgIXgpIChnZXQgYSAoaTMxKzIpKSA8IDAgdGhlbiB4IDo9IGkzMSsyO1xuICAgICAgICAheFxuICAgICAgZW5kIGVsc2VcbiAgICAgICAgaWYgaTMxKzEgPCBsICYmIGNtcCAoZ2V0IGEgaTMxKSAoZ2V0IGEgKGkzMSsxKSkgPCAwXG4gICAgICAgIHRoZW4gaTMxKzFcbiAgICAgICAgZWxzZSBpZiBpMzEgPCBsIHRoZW4gaTMxIGVsc2UgcmFpc2UgKEJvdHRvbSBpKVxuICAgIGluXG4gICAgbGV0IHJlYyB0cmlja2xlZG93biBsIGkgZSA9XG4gICAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICAgIGlmIGNtcCAoZ2V0IGEgaikgZSA+IDAgdGhlbiBiZWdpblxuICAgICAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICAgICAgdHJpY2tsZWRvd24gbCBqIGU7XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXQgYSBpIGU7XG4gICAgICBlbmQ7XG4gICAgaW5cbiAgICBsZXQgdHJpY2tsZSBsIGkgZSA9IHRyeSB0cmlja2xlZG93biBsIGkgZSB3aXRoIEJvdHRvbSBpIC0+IHNldCBhIGkgZSBpblxuICAgIGxldCByZWMgYnViYmxlZG93biBsIGkgPVxuICAgICAgbGV0IGogPSBtYXhzb24gbCBpIGluXG4gICAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICAgIGJ1YmJsZWRvd24gbCBqXG4gICAgaW5cbiAgICBsZXQgYnViYmxlIGwgaSA9IHRyeSBidWJibGVkb3duIGwgaSB3aXRoIEJvdHRvbSBpIC0+IGkgaW5cbiAgICBsZXQgcmVjIHRyaWNrbGV1cCBpIGUgPVxuICAgICAgbGV0IGZhdGhlciA9IChpIC0gMSkgLyAzIGluXG4gICAgICBhc3NlcnQgKGkgPD4gZmF0aGVyKTtcbiAgICAgIGlmIGNtcCAoZ2V0IGEgZmF0aGVyKSBlIDwgMCB0aGVuIGJlZ2luXG4gICAgICAgIHNldCBhIGkgKGdldCBhIGZhdGhlcik7XG4gICAgICAgIGlmIGZhdGhlciA+IDAgdGhlbiB0cmlja2xldXAgZmF0aGVyIGUgZWxzZSBzZXQgYSAwIGU7XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXQgYSBpIGU7XG4gICAgICBlbmQ7XG4gICAgaW5cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgZm9yIGkgPSAobCArIDEpIC8gMyAtIDEgZG93bnRvIDAgZG8gdHJpY2tsZSBsIGkgKGdldCBhIGkpOyBkb25lO1xuICAgIGZvciBpID0gbCAtIDEgZG93bnRvIDIgZG9cbiAgICAgIGxldCBlID0gKGdldCBhIGkpIGluXG4gICAgICBzZXQgYSBpIChnZXQgYSAwKTtcbiAgICAgIHRyaWNrbGV1cCAoYnViYmxlIGkgMCkgZTtcbiAgICBkb25lO1xuICAgIGlmIGwgPiAxIHRoZW4gKGxldCBlID0gKGdldCBhIDEpIGluIHNldCBhIDEgKGdldCBhIDApOyBzZXQgYSAwIGUpXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sLCBleGNlcHQgZm9yIHRoZSBjYWxsIHRvIFtjcmVhdGVdICopXG4gIGxldCBjdXRvZmYgPSA1XG4gIGxldCBzdGFibGVfc29ydCBjbXAgYSA9XG4gICAgbGV0IG1lcmdlIHNyYzFvZnMgc3JjMWxlbiBzcmMyIHNyYzJvZnMgc3JjMmxlbiBkc3QgZHN0b2ZzID1cbiAgICAgIGxldCBzcmMxciA9IHNyYzFvZnMgKyBzcmMxbGVuIGFuZCBzcmMyciA9IHNyYzJvZnMgKyBzcmMybGVuIGluXG4gICAgICBsZXQgcmVjIGxvb3AgaTEgczEgaTIgczIgZCA9XG4gICAgICAgIGlmIGNtcCBzMSBzMiA8PSAwIHRoZW4gYmVnaW5cbiAgICAgICAgICBzZXQgZHN0IGQgczE7XG4gICAgICAgICAgbGV0IGkxID0gaTEgKyAxIGluXG4gICAgICAgICAgaWYgaTEgPCBzcmMxciB0aGVuXG4gICAgICAgICAgICBsb29wIGkxIChnZXQgYSBpMSkgaTIgczIgKGQgKyAxKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJsaXQgc3JjMiBpMiBkc3QgKGQgKyAxKSAoc3JjMnIgLSBpMilcbiAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICBzZXQgZHN0IGQgczI7XG4gICAgICAgICAgbGV0IGkyID0gaTIgKyAxIGluXG4gICAgICAgICAgaWYgaTIgPCBzcmMyciB0aGVuXG4gICAgICAgICAgICBsb29wIGkxIHMxIGkyIChnZXQgc3JjMiBpMikgKGQgKyAxKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJsaXQgYSBpMSBkc3QgKGQgKyAxKSAoc3JjMXIgLSBpMSlcbiAgICAgICAgZW5kXG4gICAgICBpbiBsb29wIHNyYzFvZnMgKGdldCBhIHNyYzFvZnMpIHNyYzJvZnMgKGdldCBzcmMyIHNyYzJvZnMpIGRzdG9mcztcbiAgICBpblxuICAgIGxldCBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiA9XG4gICAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICBsZXQgZSA9IChnZXQgYSAoc3Jjb2ZzICsgaSkpIGluXG4gICAgICAgIGxldCBqID0gcmVmIChkc3RvZnMgKyBpIC0gMSkgaW5cbiAgICAgICAgd2hpbGUgKCFqID49IGRzdG9mcyAmJiBjbXAgKGdldCBkc3QgIWopIGUgPiAwKSBkb1xuICAgICAgICAgIHNldCBkc3QgKCFqICsgMSkgKGdldCBkc3QgIWopO1xuICAgICAgICAgIGRlY3IgajtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgc2V0IGRzdCAoIWogKyAxKSBlO1xuICAgICAgZG9uZTtcbiAgICBpblxuICAgIGxldCByZWMgc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiA9XG4gICAgICBpZiBsZW4gPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gZWxzZSBiZWdpblxuICAgICAgICBsZXQgbDEgPSBsZW4gLyAyIGluXG4gICAgICAgIGxldCBsMiA9IGxlbiAtIGwxIGluXG4gICAgICAgIHNvcnR0byAoc3Jjb2ZzICsgbDEpIGRzdCAoZHN0b2ZzICsgbDEpIGwyO1xuICAgICAgICBzb3J0dG8gc3Jjb2ZzIGEgKHNyY29mcyArIGwyKSBsMTtcbiAgICAgICAgbWVyZ2UgKHNyY29mcyArIGwyKSBsMSBkc3QgKGRzdG9mcyArIGwxKSBsMiBkc3QgZHN0b2ZzO1xuICAgICAgZW5kO1xuICAgIGluXG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGlmIGwgPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byAwIGEgMCBsIGVsc2UgYmVnaW5cbiAgICAgIGxldCBsMSA9IGwgLyAyIGluXG4gICAgICBsZXQgbDIgPSBsIC0gbDEgaW5cbiAgICAgIGxldCB0ID0gY3JlYXRlIGwyIGluXG4gICAgICBzb3J0dG8gbDEgdCAwIGwyO1xuICAgICAgc29ydHRvIDAgYSBsMiBsMTtcbiAgICAgIG1lcmdlIGwyIGwxIHQgMCBsMiBhIDA7XG4gICAgZW5kXG5cbiAgbGV0IGZhc3Rfc29ydCA9IHN0YWJsZV9zb3J0XG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCB0b19zZXEgYSA9XG4gICAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgICBpZiBpIDwgbGVuZ3RoIGFcbiAgICAgIHRoZW5cbiAgICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgICBTZXEuQ29ucyAoeCwgYXV4IChpKzEpKVxuICAgICAgZWxzZSBTZXEuTmlsXG4gICAgaW5cbiAgICBhdXggMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgdG9fc2VxaSBhID1cbiAgICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICAgIGlmIGkgPCBsZW5ndGggYVxuICAgICAgdGhlblxuICAgICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICAgICAgZWxzZSBTZXEuTmlsXG4gICAgaW5cbiAgICBhdXggMFxuXG4gICgqIG1vc3RseSBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IG9mX3Jldl9saXN0IGwgPVxuICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgbGV0IGEgPSBjcmVhdGUgbGVuIGluXG4gICAgbGV0IHJlYyBmaWxsIGkgPSBmdW5jdGlvblxuICAgICAgICBbXSAtPiBhXG4gICAgICB8IGhkOjp0bCAtPiB1bnNhZmVfc2V0IGEgaSBoZDsgZmlsbCAoaS0xKSB0bFxuICAgIGluXG4gICAgZmlsbCAobGVuLTEpIGxcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IG9mX3NlcSBpID1cbiAgICBsZXQgbCA9IFNlcS5mb2xkX2xlZnQgKGZ1biBhY2MgeCAtPiB4OjphY2MpIFtdIGkgaW5cbiAgICBvZl9yZXZfbGlzdCBsXG5cblxuICBsZXQgbWFwX3RvX2FycmF5IGYgYSA9XG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGlmIGwgPSAwIHRoZW4gW3wgfF0gZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBBcnJheS5tYWtlIGwgKGYgKHVuc2FmZV9nZXQgYSAwKSkgaW5cbiAgICAgIGZvciBpID0gMSB0byBsIC0gMSBkb1xuICAgICAgICBBcnJheS51bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBhIGkpKVxuICAgICAgZG9uZTtcbiAgICAgIHJcbiAgICBlbmRcblxuICBsZXQgbWFwX2Zyb21fYXJyYXkgZiBhID1cbiAgICBsZXQgbCA9IEFycmF5Lmxlbmd0aCBhIGluXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgKEFycmF5LnVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcblxuZW5kXG5cbm1vZHVsZSBBcnJheUxhYmVscyA9IEFycmF5XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFBzZXVkby1yYW5kb20gbnVtYmVyIGdlbmVyYXRvclxuICAgVGhpcyBpcyBhIGxhZ2dlZC1GaWJvbmFjY2kgRig1NSwgMjQsICspIHdpdGggYSBtb2RpZmllZCBhZGRpdGlvblxuICAgZnVuY3Rpb24gdG8gZW5oYW5jZSB0aGUgbWl4aW5nIG9mIGJpdHMuXG4gICBJZiB3ZSB1c2Ugbm9ybWFsIGFkZGl0aW9uLCB0aGUgbG93LW9yZGVyIGJpdCBmYWlscyB0ZXN0cyAxIGFuZCA3XG4gICBvZiB0aGUgRGllaGFyZCB0ZXN0IHN1aXRlLCBhbmQgYml0cyAxIGFuZCAyIGFsc28gZmFpbCB0ZXN0IDcuXG4gICBJZiB3ZSB1c2UgbXVsdGlwbGljYXRpb24gYXMgc3VnZ2VzdGVkIGJ5IE1hcnNhZ2xpYSwgaXQgZG9lc24ndCBmYXJlXG4gICBtdWNoIGJldHRlci5cbiAgIEJ5IG1peGluZyB0aGUgYml0cyBvZiBvbmUgb2YgdGhlIG51bWJlcnMgYmVmb3JlIGFkZGl0aW9uIChYT1IgdGhlXG4gICA1IGhpZ2gtb3JkZXIgYml0cyBpbnRvIHRoZSBsb3ctb3JkZXIgYml0cyksIHdlIGdldCBhIGdlbmVyYXRvciB0aGF0XG4gICBwYXNzZXMgYWxsIHRoZSBEaWVoYXJkIHRlc3RzLlxuKilcblxuZXh0ZXJuYWwgcmFuZG9tX3NlZWQ6IHVuaXQgLT4gaW50IGFycmF5ID0gXCJjYW1sX3N5c19yYW5kb21fc2VlZFwiXG5cbm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9IHsgc3QgOiBpbnQgYXJyYXk7IG11dGFibGUgaWR4IDogaW50IH1cblxuICBsZXQgbmV3X3N0YXRlICgpID0geyBzdCA9IEFycmF5Lm1ha2UgNTUgMDsgaWR4ID0gMCB9XG4gIGxldCBhc3NpZ24gc3QxIHN0MiA9XG4gICAgQXJyYXkuYmxpdCBzdDIuc3QgMCBzdDEuc3QgMCA1NTtcbiAgICBzdDEuaWR4IDwtIHN0Mi5pZHhcblxuXG4gIGxldCBmdWxsX2luaXQgcyBzZWVkID1cbiAgICBsZXQgY29tYmluZSBhY2N1IHggPSBEaWdlc3Quc3RyaW5nIChhY2N1IF4gSW50LnRvX3N0cmluZyB4KSBpblxuICAgIGxldCBleHRyYWN0IGQgPVxuICAgICAgQ2hhci5jb2RlIGQuWzBdICsgKENoYXIuY29kZSBkLlsxXSBsc2wgOCkgKyAoQ2hhci5jb2RlIGQuWzJdIGxzbCAxNilcbiAgICAgICsgKENoYXIuY29kZSBkLlszXSBsc2wgMjQpXG4gICAgaW5cbiAgICBsZXQgc2VlZCA9IGlmIEFycmF5Lmxlbmd0aCBzZWVkID0gMCB0aGVuIFt8IDAgfF0gZWxzZSBzZWVkIGluXG4gICAgbGV0IGwgPSBBcnJheS5sZW5ndGggc2VlZCBpblxuICAgIGZvciBpID0gMCB0byA1NCBkb1xuICAgICAgcy5zdC4oaSkgPC0gaTtcbiAgICBkb25lO1xuICAgIGxldCBhY2N1ID0gcmVmIFwieFwiIGluXG4gICAgZm9yIGkgPSAwIHRvIDU0ICsgSW50Lm1heCA1NSBsIGRvXG4gICAgICBsZXQgaiA9IGkgbW9kIDU1IGluXG4gICAgICBsZXQgayA9IGkgbW9kIGwgaW5cbiAgICAgIGFjY3UgOj0gY29tYmluZSAhYWNjdSBzZWVkLihrKTtcbiAgICAgIHMuc3QuKGopIDwtIChzLnN0LihqKSBseG9yIGV4dHJhY3QgIWFjY3UpIGxhbmQgMHgzRkZGRkZGRjsgICgqIFBSIzU1NzUgKilcbiAgICBkb25lO1xuICAgIHMuaWR4IDwtIDBcblxuXG4gIGxldCBtYWtlIHNlZWQgPVxuICAgIGxldCByZXN1bHQgPSBuZXdfc3RhdGUgKCkgaW5cbiAgICBmdWxsX2luaXQgcmVzdWx0IHNlZWQ7XG4gICAgcmVzdWx0XG5cblxuICBsZXQgbWFrZV9zZWxmX2luaXQgKCkgPSBtYWtlIChyYW5kb21fc2VlZCAoKSlcblxuICBsZXQgY29weSBzID1cbiAgICBsZXQgcmVzdWx0ID0gbmV3X3N0YXRlICgpIGluXG4gICAgYXNzaWduIHJlc3VsdCBzO1xuICAgIHJlc3VsdFxuXG5cbiAgKCogUmV0dXJucyAzMCByYW5kb20gYml0cyBhcyBhbiBpbnRlZ2VyIDAgPD0geCA8IDEwNzM3NDE4MjQgKilcbiAgbGV0IGJpdHMgcyA9XG4gICAgcy5pZHggPC0gKHMuaWR4ICsgMSkgbW9kIDU1O1xuICAgIGxldCBjdXJ2YWwgPSBzLnN0LihzLmlkeCkgaW5cbiAgICBsZXQgbmV3dmFsID0gcy5zdC4oKHMuaWR4ICsgMjQpIG1vZCA1NSlcbiAgICAgICAgICAgICAgICAgKyAoY3VydmFsIGx4b3IgKChjdXJ2YWwgbHNyIDI1KSBsYW5kIDB4MUYpKSBpblxuICAgIGxldCBuZXd2YWwzMCA9IG5ld3ZhbCBsYW5kIDB4M0ZGRkZGRkYgaW4gICgqIFBSIzU1NzUgKilcbiAgICBzLnN0LihzLmlkeCkgPC0gbmV3dmFsMzA7XG4gICAgbmV3dmFsMzBcblxuXG4gIGxldCByZWMgaW50YXV4IHMgbiA9XG4gICAgbGV0IHIgPSBiaXRzIHMgaW5cbiAgICBsZXQgdiA9IHIgbW9kIG4gaW5cbiAgICBpZiByIC0gdiA+IDB4M0ZGRkZGRkYgLSBuICsgMSB0aGVuIGludGF1eCBzIG4gZWxzZSB2XG5cbiAgbGV0IGludCBzIGJvdW5kID1cbiAgICBpZiBib3VuZCA+IDB4M0ZGRkZGRkYgfHwgYm91bmQgPD0gMFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJSYW5kb20uaW50XCJcbiAgICBlbHNlIGludGF1eCBzIGJvdW5kXG5cbiAgbGV0IHJlYyBpbnQ2M2F1eCBzIG4gPVxuICAgIGxldCBtYXhfaW50XzMyID0gKDEgbHNsIDMwKSArIDB4M0ZGRkZGRkYgaW4gKCogMHg3RkZGRkZGRiAqKVxuICAgIGxldCBiMSA9IGJpdHMgcyBpblxuICAgIGxldCBiMiA9IGJpdHMgcyBpblxuICAgIGxldCAociwgbWF4X2ludCkgPVxuICAgICAgaWYgbiA8PSBtYXhfaW50XzMyIHRoZW5cbiAgICAgICAgKCogMzEgcmFuZG9tIGJpdHMgb24gYm90aCA2NC1iaXQgT0NhbWwgYW5kIEphdmFTY3JpcHQuXG4gICAgICAgICAgIFVzZSB1cHBlciAxNSBiaXRzIG9mIGIxIGFuZCAxNiBiaXRzIG9mIGIyLiAqKVxuICAgICAgICBsZXQgYnBvcyA9XG4gICAgICAgICAgKCgoYjIgbGFuZCAweDNGRkZDMDAwKSBsc2wgMSkgbG9yIChiMSBsc3IgMTUpKVxuICAgICAgICBpblxuICAgICAgICAgIChicG9zLCBtYXhfaW50XzMyKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgYjMgPSBiaXRzIHMgaW5cbiAgICAgICAgKCogNjIgcmFuZG9tIGJpdHMgb24gNjQtYml0IE9DYW1sOyB1bnJlYWNoYWJsZSBvbiBKYXZhU2NyaXB0LlxuICAgICAgICAgICBVc2UgdXBwZXIgMjAgYml0cyBvZiBiMSBhbmQgMjEgYml0cyBvZiBiMiBhbmQgYjMuICopXG4gICAgICAgIGxldCBicG9zID1cbiAgICAgICAgICAoKCgoYjMgbGFuZCAweDNGRkZGRTAwKSBsc2wgMTIpIGxvciAoYjIgbHNyIDkpKSBsc2wgMjApXG4gICAgICAgICAgICBsb3IgKGIxIGxzciAxMClcbiAgICAgICAgaW5cbiAgICAgICAgICAoYnBvcywgbWF4X2ludClcbiAgICBpblxuICAgIGxldCB2ID0gciBtb2QgbiBpblxuICAgIGlmIHIgLSB2ID4gbWF4X2ludCAtIG4gKyAxIHRoZW4gaW50NjNhdXggcyBuIGVsc2UgdlxuXG4gIGxldCBmdWxsX2ludCBzIGJvdW5kID1cbiAgICBpZiBib3VuZCA8PSAwIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiUmFuZG9tLmZ1bGxfaW50XCJcbiAgICBlbHNlIGlmIGJvdW5kID4gMHgzRkZGRkZGRiB0aGVuXG4gICAgICBpbnQ2M2F1eCBzIGJvdW5kXG4gICAgZWxzZVxuICAgICAgaW50YXV4IHMgYm91bmRcblxuXG4gIGxldCByZWMgaW50MzJhdXggcyBuID1cbiAgICBsZXQgYjEgPSBJbnQzMi5vZl9pbnQgKGJpdHMgcykgaW5cbiAgICBsZXQgYjIgPSBJbnQzMi5zaGlmdF9sZWZ0IChJbnQzMi5vZl9pbnQgKGJpdHMgcyBsYW5kIDEpKSAzMCBpblxuICAgIGxldCByID0gSW50MzIubG9nb3IgYjEgYjIgaW5cbiAgICBsZXQgdiA9IEludDMyLnJlbSByIG4gaW5cbiAgICBpZiBJbnQzMi5zdWIgciB2ID4gSW50MzIuYWRkIChJbnQzMi5zdWIgSW50MzIubWF4X2ludCBuKSAxbFxuICAgIHRoZW4gaW50MzJhdXggcyBuXG4gICAgZWxzZSB2XG5cbiAgbGV0IGludDMyIHMgYm91bmQgPVxuICAgIGlmIGJvdW5kIDw9IDBsXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIlJhbmRvbS5pbnQzMlwiXG4gICAgZWxzZSBpbnQzMmF1eCBzIGJvdW5kXG5cblxuICBsZXQgcmVjIGludDY0YXV4IHMgbiA9XG4gICAgbGV0IGIxID0gSW50NjQub2ZfaW50IChiaXRzIHMpIGluXG4gICAgbGV0IGIyID0gSW50NjQuc2hpZnRfbGVmdCAoSW50NjQub2ZfaW50IChiaXRzIHMpKSAzMCBpblxuICAgIGxldCBiMyA9IEludDY0LnNoaWZ0X2xlZnQgKEludDY0Lm9mX2ludCAoYml0cyBzIGxhbmQgNykpIDYwIGluXG4gICAgbGV0IHIgPSBJbnQ2NC5sb2dvciBiMSAoSW50NjQubG9nb3IgYjIgYjMpIGluXG4gICAgbGV0IHYgPSBJbnQ2NC5yZW0gciBuIGluXG4gICAgaWYgSW50NjQuc3ViIHIgdiA+IEludDY0LmFkZCAoSW50NjQuc3ViIEludDY0Lm1heF9pbnQgbikgMUxcbiAgICB0aGVuIGludDY0YXV4IHMgblxuICAgIGVsc2UgdlxuXG4gIGxldCBpbnQ2NCBzIGJvdW5kID1cbiAgICBpZiBib3VuZCA8PSAwTFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJSYW5kb20uaW50NjRcIlxuICAgIGVsc2UgaW50NjRhdXggcyBib3VuZFxuXG5cbiAgbGV0IG5hdGl2ZWludCA9XG4gICAgaWYgTmF0aXZlaW50LnNpemUgPSAzMlxuICAgIHRoZW4gZnVuIHMgYm91bmQgLT4gTmF0aXZlaW50Lm9mX2ludDMyIChpbnQzMiBzIChOYXRpdmVpbnQudG9faW50MzIgYm91bmQpKVxuICAgIGVsc2UgZnVuIHMgYm91bmQgLT4gSW50NjQudG9fbmF0aXZlaW50IChpbnQ2NCBzIChJbnQ2NC5vZl9uYXRpdmVpbnQgYm91bmQpKVxuXG5cbiAgKCogUmV0dXJucyBhIGZsb2F0IDAgPD0geCA8PSAxIHdpdGggYXQgbW9zdCA2MCBiaXRzIG9mIHByZWNpc2lvbi4gKilcbiAgbGV0IHJhd2Zsb2F0IHMgPVxuICAgIGxldCBzY2FsZSA9IDEwNzM3NDE4MjQuMCAgKCogMl4zMCAqKVxuICAgIGFuZCByMSA9IFN0ZGxpYi5mbG9hdCAoYml0cyBzKVxuICAgIGFuZCByMiA9IFN0ZGxpYi5mbG9hdCAoYml0cyBzKVxuICAgIGluIChyMSAvLiBzY2FsZSArLiByMikgLy4gc2NhbGVcblxuXG4gIGxldCBmbG9hdCBzIGJvdW5kID0gcmF3ZmxvYXQgcyAqLiBib3VuZFxuXG4gIGxldCBib29sIHMgPSAoYml0cyBzIGxhbmQgMSA9IDApXG5cbiAgbGV0IGJpdHMzMiBzID1cbiAgICBsZXQgYjEgPSBJbnQzMi4oc2hpZnRfcmlnaHRfbG9naWNhbCAob2ZfaW50IChiaXRzIHMpKSAxNCkgaW4gICgqIDE2IGJpdHMgKilcbiAgICBsZXQgYjIgPSBJbnQzMi4oc2hpZnRfcmlnaHRfbG9naWNhbCAob2ZfaW50IChiaXRzIHMpKSAxNCkgaW4gICgqIDE2IGJpdHMgKilcbiAgICBJbnQzMi4obG9nb3IgYjEgKHNoaWZ0X2xlZnQgYjIgMTYpKVxuXG4gIGxldCBiaXRzNjQgcyA9XG4gICAgbGV0IGIxID0gSW50NjQuKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKG9mX2ludCAoYml0cyBzKSkgOSkgaW4gICgqIDIxIGJpdHMgKilcbiAgICBsZXQgYjIgPSBJbnQ2NC4oc2hpZnRfcmlnaHRfbG9naWNhbCAob2ZfaW50IChiaXRzIHMpKSA5KSBpbiAgKCogMjEgYml0cyAqKVxuICAgIGxldCBiMyA9IEludDY0LihzaGlmdF9yaWdodF9sb2dpY2FsIChvZl9pbnQgKGJpdHMgcykpIDgpIGluICAoKiAyMiBiaXRzICopXG4gICAgSW50NjQuKGxvZ29yIGIxIChsb2dvciAoc2hpZnRfbGVmdCBiMiAyMSkgKHNoaWZ0X2xlZnQgYjMgNDIpKSlcblxuICBsZXQgbmF0aXZlYml0cyA9XG4gICAgaWYgTmF0aXZlaW50LnNpemUgPSAzMlxuICAgIHRoZW4gZnVuIHMgLT4gTmF0aXZlaW50Lm9mX2ludDMyIChiaXRzMzIgcylcbiAgICBlbHNlIGZ1biBzIC0+IEludDY0LnRvX25hdGl2ZWludCAoYml0czY0IHMpXG5cbmVuZFxuXG4oKiBUaGlzIGlzIHRoZSBzdGF0ZSB5b3UgZ2V0IHdpdGggW2luaXQgMjcxODI4MThdIGFuZCB0aGVuIGFwcGx5aW5nXG4gICB0aGUgXCJsYW5kIDB4M0ZGRkZGRkZcIiBmaWx0ZXIgdG8gdGhlbS4gIFNlZSAjNTU3NSwgIzU3OTMsICM1OTc3LiAqKVxubGV0IGRlZmF1bHQgPSB7XG4gIFN0YXRlLnN0ID0gW3xcbiAgICAgIDB4M2FlMjUyMmI7IDB4MWQ4ZDQ2MzQ7IDB4MTViNGZhZDA7IDB4MThiMTRhY2U7IDB4MTJmOGEzYzQ7IDB4M2IwODZjNDc7XG4gICAgICAweDE2ZDQ2N2Q2OyAweDEwMWQ5MWM3OyAweDMyMWRmMTc3OyAweDAxNzZjMTkzOyAweDFmZjcyYmYxOyAweDFlODg5MTA5O1xuICAgICAgMHgwYjQ2NGIxODsgMHgyYjg2Yjk3YzsgMHgwODkxZGE0ODsgMHgwMzEzNzQ2MzsgMHgwODVhYzVhMTsgMHgxNWQ2MWYyZjtcbiAgICAgIDB4M2JjZWQzNTk7IDB4MjljMWMxMzI7IDB4M2E4Njc2NmU7IDB4MzY2ZDhjODY7IDB4MWY1YjYyMjI7IDB4M2NlMWI1OWY7XG4gICAgICAweDJlYmY3OGUxOyAweDI3Y2QxYjg2OyAweDI1OGYzZGMzOyAweDM4OWE4MTk0OyAweDAyZTRjNDRjOyAweDE4YzQzZjdkO1xuICAgICAgMHgwZjZlNTM0ZjsgMHgxZTdkZjM1OTsgMHgwNTVkMGI3ZTsgMHgxMGU4NGU3ZTsgMHgxMjYxOThlNDsgMHgwZTc3MjJjYjtcbiAgICAgIDB4MWNiZWRlMjg7IDB4MzM5MWI5NjQ7IDB4M2Q0MGU5MmE7IDB4MGM1OTkzM2Q7IDB4MGI4Y2QwYjc7IDB4MjRlZmZmMWM7XG4gICAgICAweDI4MDNmZGFhOyAweDA4ZWJjNzJlOyAweDBmNTIyZTMyOyAweDA1Mzk4ZWRjOyAweDIxNDRhMDRjOyAweDBhZWYzY2JkO1xuICAgICAgMHgwMWFkNDcxOTsgMHgzNWI5M2NkNjsgMHgyYTU1OWQ0ZjsgMHgxZTZmZDc2ODsgMHgyNmUyN2YzNjsgMHgxODZmMThjMztcbiAgICAgIDB4MmZiZjk2N2E7XG4gICAgfF07XG4gIFN0YXRlLmlkeCA9IDA7XG59XG5cbmxldCBiaXRzICgpID0gU3RhdGUuYml0cyBkZWZhdWx0XG5sZXQgaW50IGJvdW5kID0gU3RhdGUuaW50IGRlZmF1bHQgYm91bmRcbmxldCBmdWxsX2ludCBib3VuZCA9IFN0YXRlLmZ1bGxfaW50IGRlZmF1bHQgYm91bmRcbmxldCBpbnQzMiBib3VuZCA9IFN0YXRlLmludDMyIGRlZmF1bHQgYm91bmRcbmxldCBuYXRpdmVpbnQgYm91bmQgPSBTdGF0ZS5uYXRpdmVpbnQgZGVmYXVsdCBib3VuZFxubGV0IGludDY0IGJvdW5kID0gU3RhdGUuaW50NjQgZGVmYXVsdCBib3VuZFxubGV0IGZsb2F0IHNjYWxlID0gU3RhdGUuZmxvYXQgZGVmYXVsdCBzY2FsZVxubGV0IGJvb2wgKCkgPSBTdGF0ZS5ib29sIGRlZmF1bHRcbmxldCBiaXRzMzIgKCkgPSBTdGF0ZS5iaXRzMzIgZGVmYXVsdFxubGV0IGJpdHM2NCAoKSA9IFN0YXRlLmJpdHM2NCBkZWZhdWx0XG5sZXQgbmF0aXZlYml0cyAoKSA9IFN0YXRlLm5hdGl2ZWJpdHMgZGVmYXVsdFxuXG5sZXQgZnVsbF9pbml0IHNlZWQgPSBTdGF0ZS5mdWxsX2luaXQgZGVmYXVsdCBzZWVkXG5sZXQgaW5pdCBzZWVkID0gU3RhdGUuZnVsbF9pbml0IGRlZmF1bHQgW3wgc2VlZCB8XVxubGV0IHNlbGZfaW5pdCAoKSA9IGZ1bGxfaW5pdCAocmFuZG9tX3NlZWQoKSlcblxuKCogTWFuaXB1bGF0aW5nIHRoZSBjdXJyZW50IHN0YXRlLiAqKVxuXG5sZXQgZ2V0X3N0YXRlICgpID0gU3RhdGUuY29weSBkZWZhdWx0XG5sZXQgc2V0X3N0YXRlIHMgPSBTdGF0ZS5hc3NpZ24gZGVmYXVsdCBzXG5cbigqKioqKioqKioqKioqKioqKioqKlxuXG4oKiBUZXN0IGZ1bmN0aW9ucy4gIE5vdCBpbmNsdWRlZCBpbiB0aGUgbGlicmFyeS5cbiAgIFRoZSBbY2hpc3F1YXJlXSBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIHdpdGggbiA+IDEwci5cbiAgIEl0IHJldHVybnMgYSB0cmlwbGUgKGxvdywgYWN0dWFsLCBoaWdoKS5cbiAgIElmIGxvdyA8PSBhY3R1YWwgPD0gaGlnaCwgdGhlIFtnXSBmdW5jdGlvbiBwYXNzZWQgdGhlIHRlc3QsXG4gICBvdGhlcndpc2UgaXQgZmFpbGVkLlxuXG4gIFNvbWUgcmVzdWx0czpcblxuaW5pdCAyNzE4MjgxODsgY2hpc3F1YXJlIGludCAxMDAwMDAgMTAwMFxuaW5pdCAyNzE4MjgxODsgY2hpc3F1YXJlIGludCAxMDAwMDAgMTAwXG5pbml0IDI3MTgyODE4OyBjaGlzcXVhcmUgaW50IDEwMDAwMCA1MDAwXG5pbml0IDI3MTgyODE4OyBjaGlzcXVhcmUgaW50IDEwMDAwMDAgMTAwMFxuaW5pdCAyNzE4MjgxODsgY2hpc3F1YXJlIGludCAxMDAwMDAgMTAyNFxuaW5pdCAyOTk3OTI2NDM7IGNoaXNxdWFyZSBpbnQgMTAwMDAwIDEwMjRcbmluaXQgMTQxNDIxMzY7IGNoaXNxdWFyZSBpbnQgMTAwMDAwIDEwMjRcbmluaXQgMjcxODI4MTg7IGluaXRfZGlmZiAxMDI0OyBjaGlzcXVhcmUgZGlmZiAxMDAwMDAgMTAyNFxuaW5pdCAyNzE4MjgxODsgaW5pdF9kaWZmIDEwMDsgY2hpc3F1YXJlIGRpZmYgMTAwMDAwIDEwMFxuaW5pdCAyNzE4MjgxODsgaW5pdF9kaWZmMiAxMDI0OyBjaGlzcXVhcmUgZGlmZjIgMTAwMDAwIDEwMjRcbmluaXQgMjcxODI4MTg7IGluaXRfZGlmZjIgMTAwOyBjaGlzcXVhcmUgZGlmZjIgMTAwMDAwIDEwMFxuaW5pdCAxNDE0MjEzNjsgaW5pdF9kaWZmMiAxMDA7IGNoaXNxdWFyZSBkaWZmMiAxMDAwMDAgMTAwXG5pbml0IDI5OTc5MjY0MzsgaW5pdF9kaWZmMiAxMDA7IGNoaXNxdWFyZSBkaWZmMiAxMDAwMDAgMTAwXG4tIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDkzNi43NTQ0NDY3OTY2MzI0NjUsIDk5Ny41LCAxMDYzLjI0NTU1MzIwMzM2NzU0KVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDgwLiwgODkuNzQwMDAwMDAwMDA1MjM4NywgMTIwLilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg0ODU4LjU3ODY0Mzc2MjY5LCA1MDQ1LjUsIDUxNDEuNDIxMzU2MjM3MzEpXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPVxuKDkzNi43NTQ0NDY3OTY2MzI0NjUsIDk0NC44MDU5OTk5OTk5ODIzMDUsIDEwNjMuMjQ1NTUzMjAzMzY3NTQpXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoOTYwLiwgMTAxOS4xOTc0NDAwMDAwMDM1NSwgMTA4OC4pXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoOTYwLiwgMTA1OS4zMTc3NjAwMDAwMDUzNiwgMTA4OC4pXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoOTYwLiwgMTAzOS45ODQ2Mzk5OTk5OTUxMiwgMTA4OC4pXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoOTYwLiwgMTA1NC4zODIwNzk5OTk5OTU3NywgMTA4OC4pXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoODAuLCA5MC4wOTYwMDAwMDAwMDUsIDEyMC4pXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoOTYwLiwgMTA3Ni43ODcyMDAwMDAwMDYxMiwgMTA4OC4pXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoODAuLCA4NS4xNzYwMDAwMDAwMDY3NTIxLCAxMjAuKVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDgwLiwgODUuMjE2MDAwMDAwMDAwMzQ5MiwgMTIwLilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg4MC4sIDgwLjYyMjAwMDAwMDAwMzAyNjgsIDEyMC4pXG5cbiopXG5cbigqIFJldHVybiB0aGUgc3VtIG9mIHRoZSBzcXVhcmVzIG9mIHZbaTAsaTFbICopXG5sZXQgcmVjIHN1bXNxIHYgaTAgaTEgPVxuICBpZiBpMCA+PSBpMSB0aGVuIDAuMFxuICBlbHNlIGlmIGkxID0gaTAgKyAxIHRoZW4gU3RkbGliLmZsb2F0IHYuKGkwKSAqLiBTdGRsaWIuZmxvYXQgdi4oaTApXG4gIGVsc2Ugc3Vtc3EgdiBpMCAoKGkwK2kxKS8yKSArLiBzdW1zcSB2ICgoaTAraTEpLzIpIGkxXG5cblxubGV0IGNoaXNxdWFyZSBnIG4gciA9XG4gIGlmIG4gPD0gMTAgKiByIHRoZW4gaW52YWxpZF9hcmcgXCJjaGlzcXVhcmVcIjtcbiAgbGV0IGYgPSBBcnJheS5tYWtlIHIgMCBpblxuICBmb3IgaSA9IDEgdG8gbiBkb1xuICAgIGxldCB0ID0gZyByIGluXG4gICAgZi4odCkgPC0gZi4odCkgKyAxXG4gIGRvbmU7XG4gIGxldCB0ID0gc3Vtc3EgZiAwIHJcbiAgYW5kIHIgPSBTdGRsaWIuZmxvYXQgclxuICBhbmQgbiA9IFN0ZGxpYi5mbG9hdCBuIGluXG4gIGxldCBzciA9IDIuMCAqLiBzcXJ0IHIgaW5cbiAgKHIgLS4gc3IsICAgKHIgKi4gdCAvLiBuKSAtLiBuLCAgIHIgKy4gc3IpXG5cblxuKCogVGhpcyBpcyB0byB0ZXN0IGZvciBsaW5lYXIgZGVwZW5kZW5jaWVzIGJldHdlZW4gc3VjY2Vzc2l2ZSByYW5kb20gbnVtYmVycy5cbiopXG5sZXQgc3QgPSByZWYgMFxubGV0IGluaXRfZGlmZiByID0gc3QgOj0gaW50IHJcbmxldCBkaWZmIHIgPVxuICBsZXQgeDEgPSAhc3RcbiAgYW5kIHgyID0gaW50IHJcbiAgaW5cbiAgc3QgOj0geDI7XG4gIGlmIHgxID49IHgyIHRoZW5cbiAgICB4MSAtIHgyXG4gIGVsc2VcbiAgICByICsgeDEgLSB4MlxuXG5cbmxldCBzdDEgPSByZWYgMFxuYW5kIHN0MiA9IHJlZiAwXG5cblxuKCogVGhpcyBpcyB0byB0ZXN0IGZvciBxdWFkcmF0aWMgZGVwZW5kZW5jaWVzIGJldHdlZW4gc3VjY2Vzc2l2ZSByYW5kb21cbiAgIG51bWJlcnMuXG4qKVxubGV0IGluaXRfZGlmZjIgciA9IHN0MSA6PSBpbnQgcjsgc3QyIDo9IGludCByXG5sZXQgZGlmZjIgciA9XG4gIGxldCB4MSA9ICFzdDFcbiAgYW5kIHgyID0gIXN0MlxuICBhbmQgeDMgPSBpbnQgclxuICBpblxuICBzdDEgOj0geDI7XG4gIHN0MiA6PSB4MztcbiAgKHgzIC0geDIgLSB4MiArIHgxICsgMipyKSBtb2QgclxuXG5cbioqKioqKioqKioqKioqKioqKioqKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBbiBhbGlhcyBmb3IgdGhlIHR5cGUgb2YgbGlzdHMuICopXG50eXBlICdhIHQgPSAnYSBsaXN0ID0gW10gfCAoOjopIG9mICdhICogJ2EgbGlzdFxuXG4oKiBMaXN0IG9wZXJhdGlvbnMgKilcblxubGV0IHJlYyBsZW5ndGhfYXV4IGxlbiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gbGVuXG4gIHwgXzo6bCAtPiBsZW5ndGhfYXV4IChsZW4gKyAxKSBsXG5cbmxldCBsZW5ndGggbCA9IGxlbmd0aF9hdXggMCBsXG5cbmxldCBjb25zIGEgbCA9IGE6OmxcblxubGV0IGhkID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWlsd2l0aCBcImhkXCJcbiAgfCBhOjpfIC0+IGFcblxubGV0IHRsID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWlsd2l0aCBcInRsXCJcbiAgfCBfOjpsIC0+IGxcblxubGV0IG50aCBsIG4gPVxuICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiTGlzdC5udGhcIiBlbHNlXG4gIGxldCByZWMgbnRoX2F1eCBsIG4gPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gZmFpbHdpdGggXCJudGhcIlxuICAgIHwgYTo6bCAtPiBpZiBuID0gMCB0aGVuIGEgZWxzZSBudGhfYXV4IGwgKG4tMSlcbiAgaW4gbnRoX2F1eCBsIG5cblxubGV0IG50aF9vcHQgbCBuID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkxpc3QubnRoXCIgZWxzZVxuICBsZXQgcmVjIG50aF9hdXggbCBuID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IGE6OmwgLT4gaWYgbiA9IDAgdGhlbiBTb21lIGEgZWxzZSBudGhfYXV4IGwgKG4tMSlcbiAgaW4gbnRoX2F1eCBsIG5cblxubGV0IGFwcGVuZCA9IChAKVxuXG5sZXQgcmVjIHJldl9hcHBlbmQgbDEgbDIgPVxuICBtYXRjaCBsMSB3aXRoXG4gICAgW10gLT4gbDJcbiAgfCBhIDo6IGwgLT4gcmV2X2FwcGVuZCBsIChhIDo6IGwyKVxuXG5sZXQgcmV2IGwgPSByZXZfYXBwZW5kIGwgW11cblxubGV0IHJlYyBpbml0X3RhaWxyZWNfYXV4IGFjYyBpIG4gZiA9XG4gIGlmIGkgPj0gbiB0aGVuIGFjY1xuICBlbHNlIGluaXRfdGFpbHJlY19hdXggKGYgaSA6OiBhY2MpIChpKzEpIG4gZlxuXG5sZXQgcmVjIGluaXRfYXV4IGkgbiBmID1cbiAgaWYgaSA+PSBuIHRoZW4gW11cbiAgZWxzZVxuICAgIGxldCByID0gZiBpIGluXG4gICAgciA6OiBpbml0X2F1eCAoaSsxKSBuIGZcblxubGV0IHJldl9pbml0X3RocmVzaG9sZCA9XG4gIG1hdGNoIFN5cy5iYWNrZW5kX3R5cGUgd2l0aFxuICB8IFN5cy5OYXRpdmUgfCBTeXMuQnl0ZWNvZGUgLT4gMTBfMDAwXG4gICgqIFdlIGRvbid0IGtub3cgdGhlIHNpemUgb2YgdGhlIHN0YWNrLCBiZXR0ZXIgYmUgc2FmZSBhbmQgYXNzdW1lIGl0J3NcbiAgICAgc21hbGwuICopXG4gIHwgU3lzLk90aGVyIF8gLT4gNTBcblxubGV0IGluaXQgbGVuIGYgPVxuICBpZiBsZW4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJMaXN0LmluaXRcIiBlbHNlXG4gIGlmIGxlbiA+IHJldl9pbml0X3RocmVzaG9sZCB0aGVuIHJldiAoaW5pdF90YWlscmVjX2F1eCBbXSAwIGxlbiBmKVxuICBlbHNlIGluaXRfYXV4IDAgbGVuIGZcblxubGV0IHJlYyBmbGF0dGVuID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbXVxuICB8IGw6OnIgLT4gbCBAIGZsYXR0ZW4gclxuXG5sZXQgY29uY2F0ID0gZmxhdHRlblxuXG5sZXQgcmVjIG1hcCBmID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbXVxuICB8IGE6OmwgLT4gbGV0IHIgPSBmIGEgaW4gciA6OiBtYXAgZiBsXG5cbmxldCByZWMgbWFwaSBpIGYgPSBmdW5jdGlvblxuICAgIFtdIC0+IFtdXG4gIHwgYTo6bCAtPiBsZXQgciA9IGYgaSBhIGluIHIgOjogbWFwaSAoaSArIDEpIGYgbFxuXG5sZXQgbWFwaSBmIGwgPSBtYXBpIDAgZiBsXG5cbmxldCByZXZfbWFwIGYgbCA9XG4gIGxldCByZWMgcm1hcF9mIGFjY3UgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjdVxuICAgIHwgYTo6bCAtPiBybWFwX2YgKGYgYSA6OiBhY2N1KSBsXG4gIGluXG4gIHJtYXBfZiBbXSBsXG5cblxubGV0IHJlYyBpdGVyIGYgPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgYTo6bCAtPiBmIGE7IGl0ZXIgZiBsXG5cbmxldCByZWMgaXRlcmkgaSBmID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IGE6OmwgLT4gZiBpIGE7IGl0ZXJpIChpICsgMSkgZiBsXG5cbmxldCBpdGVyaSBmIGwgPSBpdGVyaSAwIGYgbFxuXG5sZXQgcmVjIGZvbGRfbGVmdCBmIGFjY3UgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdIC0+IGFjY3VcbiAgfCBhOjpsIC0+IGZvbGRfbGVmdCBmIChmIGFjY3UgYSkgbFxuXG5sZXQgcmVjIGZvbGRfcmlnaHQgZiBsIGFjY3UgPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAtPiBhY2N1XG4gIHwgYTo6bCAtPiBmIGEgKGZvbGRfcmlnaHQgZiBsIGFjY3UpXG5cbmxldCByZWMgbWFwMiBmIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IFtdXG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBsZXQgciA9IGYgYTEgYTIgaW4gciA6OiBtYXAyIGYgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0Lm1hcDJcIlxuXG5sZXQgcmV2X21hcDIgZiBsMSBsMiA9XG4gIGxldCByZWMgcm1hcDJfZiBhY2N1IGwxIGwyID1cbiAgICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgfCAoW10sIFtdKSAtPiBhY2N1XG4gICAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IHJtYXAyX2YgKGYgYTEgYTIgOjogYWNjdSkgbDEgbDJcbiAgICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QucmV2X21hcDJcIlxuICBpblxuICBybWFwMl9mIFtdIGwxIGwyXG5cblxubGV0IHJlYyBpdGVyMiBmIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+ICgpXG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBmIGExIGEyOyBpdGVyMiBmIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5pdGVyMlwiXG5cbmxldCByZWMgZm9sZF9sZWZ0MiBmIGFjY3UgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gYWNjdVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gZm9sZF9sZWZ0MiBmIChmIGFjY3UgYTEgYTIpIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5mb2xkX2xlZnQyXCJcblxubGV0IHJlYyBmb2xkX3JpZ2h0MiBmIGwxIGwyIGFjY3UgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gYWNjdVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gZiBhMSBhMiAoZm9sZF9yaWdodDIgZiBsMSBsMiBhY2N1KVxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZm9sZF9yaWdodDJcIlxuXG5sZXQgcmVjIGZvcl9hbGwgcCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gdHJ1ZVxuICB8IGE6OmwgLT4gcCBhICYmIGZvcl9hbGwgcCBsXG5cbmxldCByZWMgZXhpc3RzIHAgPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhbHNlXG4gIHwgYTo6bCAtPiBwIGEgfHwgZXhpc3RzIHAgbFxuXG5sZXQgcmVjIGZvcl9hbGwyIHAgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gdHJ1ZVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gcCBhMSBhMiAmJiBmb3JfYWxsMiBwIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5mb3JfYWxsMlwiXG5cbmxldCByZWMgZXhpc3RzMiBwIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IGZhbHNlXG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBwIGExIGEyIHx8IGV4aXN0czIgcCBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZXhpc3RzMlwiXG5cbmxldCByZWMgbWVtIHggPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhbHNlXG4gIHwgYTo6bCAtPiBjb21wYXJlIGEgeCA9IDAgfHwgbWVtIHggbFxuXG5sZXQgcmVjIG1lbXEgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFsc2VcbiAgfCBhOjpsIC0+IGEgPT0geCB8fCBtZW1xIHggbFxuXG5sZXQgcmVjIGFzc29jIHggPSBmdW5jdGlvblxuICAgIFtdIC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IChhLGIpOjpsIC0+IGlmIGNvbXBhcmUgYSB4ID0gMCB0aGVuIGIgZWxzZSBhc3NvYyB4IGxcblxubGV0IHJlYyBhc3NvY19vcHQgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gTm9uZVxuICB8IChhLGIpOjpsIC0+IGlmIGNvbXBhcmUgYSB4ID0gMCB0aGVuIFNvbWUgYiBlbHNlIGFzc29jX29wdCB4IGxcblxubGV0IHJlYyBhc3NxIHggPSBmdW5jdGlvblxuICAgIFtdIC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IChhLGIpOjpsIC0+IGlmIGEgPT0geCB0aGVuIGIgZWxzZSBhc3NxIHggbFxuXG5sZXQgcmVjIGFzc3Ffb3B0IHggPSBmdW5jdGlvblxuICAgIFtdIC0+IE5vbmVcbiAgfCAoYSxiKTo6bCAtPiBpZiBhID09IHggdGhlbiBTb21lIGIgZWxzZSBhc3NxX29wdCB4IGxcblxubGV0IHJlYyBtZW1fYXNzb2MgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gZmFsc2VcbiAgfCAoYSwgXykgOjogbCAtPiBjb21wYXJlIGEgeCA9IDAgfHwgbWVtX2Fzc29jIHggbFxuXG5sZXQgcmVjIG1lbV9hc3NxIHggPSBmdW5jdGlvblxuICB8IFtdIC0+IGZhbHNlXG4gIHwgKGEsIF8pIDo6IGwgLT4gYSA9PSB4IHx8IG1lbV9hc3NxIHggbFxuXG5sZXQgcmVjIHJlbW92ZV9hc3NvYyB4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IChhLCBfIGFzIHBhaXIpIDo6IGwgLT5cbiAgICAgIGlmIGNvbXBhcmUgYSB4ID0gMCB0aGVuIGwgZWxzZSBwYWlyIDo6IHJlbW92ZV9hc3NvYyB4IGxcblxubGV0IHJlYyByZW1vdmVfYXNzcSB4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IChhLCBfIGFzIHBhaXIpIDo6IGwgLT4gaWYgYSA9PSB4IHRoZW4gbCBlbHNlIHBhaXIgOjogcmVtb3ZlX2Fzc3EgeCBsXG5cbmxldCByZWMgZmluZCBwID0gZnVuY3Rpb25cbiAgfCBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCB4IDo6IGwgLT4gaWYgcCB4IHRoZW4geCBlbHNlIGZpbmQgcCBsXG5cbmxldCByZWMgZmluZF9vcHQgcCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gTm9uZVxuICB8IHggOjogbCAtPiBpZiBwIHggdGhlbiBTb21lIHggZWxzZSBmaW5kX29wdCBwIGxcblxubGV0IHJlYyBmaW5kX21hcCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBOb25lXG4gIHwgeCA6OiBsIC0+XG4gICAgIGJlZ2luIG1hdGNoIGYgeCB3aXRoXG4gICAgICAgfCBTb21lIF8gYXMgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgIHwgTm9uZSAtPiBmaW5kX21hcCBmIGxcbiAgICAgZW5kXG5cbmxldCBmaW5kX2FsbCBwID1cbiAgbGV0IHJlYyBmaW5kIGFjY3UgPSBmdW5jdGlvblxuICB8IFtdIC0+IHJldiBhY2N1XG4gIHwgeCA6OiBsIC0+IGlmIHAgeCB0aGVuIGZpbmQgKHggOjogYWNjdSkgbCBlbHNlIGZpbmQgYWNjdSBsIGluXG4gIGZpbmQgW11cblxubGV0IGZpbHRlciA9IGZpbmRfYWxsXG5cbmxldCBmaWx0ZXJpIHAgbCA9XG4gIGxldCByZWMgYXV4IGkgYWNjID0gZnVuY3Rpb25cbiAgfCBbXSAtPiByZXYgYWNjXG4gIHwgeDo6bCAtPiBhdXggKGkgKyAxKSAoaWYgcCBpIHggdGhlbiB4OjphY2MgZWxzZSBhY2MpIGxcbiAgaW5cbiAgYXV4IDAgW10gbFxuXG5sZXQgZmlsdGVyX21hcCBmID1cbiAgbGV0IHJlYyBhdXggYWNjdSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiByZXYgYWNjdVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhdXggYWNjdSBsXG4gICAgICAgIHwgU29tZSB2IC0+IGF1eCAodiA6OiBhY2N1KSBsXG4gIGluXG4gIGF1eCBbXVxuXG5sZXQgY29uY2F0X21hcCBmIGwgPVxuICBsZXQgcmVjIGF1eCBmIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiByZXYgYWNjXG4gICAgfCB4IDo6IGwgLT5cbiAgICAgICBsZXQgeHMgPSBmIHggaW5cbiAgICAgICBhdXggZiAocmV2X2FwcGVuZCB4cyBhY2MpIGxcbiAgaW4gYXV4IGYgW10gbFxuXG5sZXQgZm9sZF9sZWZ0X21hcCBmIGFjY3UgbCA9XG4gIGxldCByZWMgYXV4IGFjY3UgbF9hY2N1ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY3UsIHJldiBsX2FjY3VcbiAgICB8IHggOjogbCAtPlxuICAgICAgICBsZXQgYWNjdSwgeCA9IGYgYWNjdSB4IGluXG4gICAgICAgIGF1eCBhY2N1ICh4IDo6IGxfYWNjdSkgbCBpblxuICBhdXggYWNjdSBbXSBsXG5cbmxldCBwYXJ0aXRpb24gcCBsID1cbiAgbGV0IHJlYyBwYXJ0IHllcyBubyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKHJldiB5ZXMsIHJldiBubylcbiAgfCB4IDo6IGwgLT4gaWYgcCB4IHRoZW4gcGFydCAoeCA6OiB5ZXMpIG5vIGwgZWxzZSBwYXJ0IHllcyAoeCA6OiBubykgbCBpblxuICBwYXJ0IFtdIFtdIGxcblxubGV0IHBhcnRpdGlvbl9tYXAgcCBsID1cbiAgbGV0IHJlYyBwYXJ0IGxlZnQgcmlnaHQgPSBmdW5jdGlvblxuICB8IFtdIC0+IChyZXYgbGVmdCwgcmV2IHJpZ2h0KVxuICB8IHggOjogbCAtPlxuICAgICBiZWdpbiBtYXRjaCBwIHggd2l0aFxuICAgICAgIHwgRWl0aGVyLkxlZnQgdiAtPiBwYXJ0ICh2IDo6IGxlZnQpIHJpZ2h0IGxcbiAgICAgICB8IEVpdGhlci5SaWdodCB2IC0+IHBhcnQgbGVmdCAodiA6OiByaWdodCkgbFxuICAgICBlbmRcbiAgaW5cbiAgcGFydCBbXSBbXSBsXG5cbmxldCByZWMgc3BsaXQgPSBmdW5jdGlvblxuICAgIFtdIC0+IChbXSwgW10pXG4gIHwgKHgseSk6OmwgLT5cbiAgICAgIGxldCAocngsIHJ5KSA9IHNwbGl0IGwgaW4gKHg6OnJ4LCB5OjpyeSlcblxubGV0IHJlYyBjb21iaW5lIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IFtdXG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiAoYTEsIGEyKSA6OiBjb21iaW5lIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5jb21iaW5lXCJcblxuKCoqIHNvcnRpbmcgKilcblxubGV0IHJlYyBtZXJnZSBjbXAgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBsMiAtPiBsMlxuICB8IGwxLCBbXSAtPiBsMVxuICB8IGgxIDo6IHQxLCBoMiA6OiB0MiAtPlxuICAgICAgaWYgY21wIGgxIGgyIDw9IDBcbiAgICAgIHRoZW4gaDEgOjogbWVyZ2UgY21wIHQxIGwyXG4gICAgICBlbHNlIGgyIDo6IG1lcmdlIGNtcCBsMSB0MlxuXG5cbmxldCBzdGFibGVfc29ydCBjbXAgbCA9XG4gIGxldCByZWMgcmV2X21lcmdlIGwxIGwyIGFjY3UgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBsMiBhY2N1XG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBsMSBhY2N1XG4gICAgfCBoMTo6dDEsIGgyOjp0MiAtPlxuICAgICAgICBpZiBjbXAgaDEgaDIgPD0gMFxuICAgICAgICB0aGVuIHJldl9tZXJnZSB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlIGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyByZXZfbWVyZ2VfcmV2IGwxIGwyIGFjY3UgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBsMiBhY2N1XG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBsMSBhY2N1XG4gICAgfCBoMTo6dDEsIGgyOjp0MiAtPlxuICAgICAgICBpZiBjbXAgaDEgaDIgPiAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlX3JldiB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlX3JldiBsMSB0MiAoaDI6OmFjY3UpXG4gIGluXG4gIGxldCByZWMgc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPSBpZiBjbXAgeDEgeDIgPD0gMCB0aGVuIFt4MTsgeDJdIGVsc2UgW3gyOyB4MV0gaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgMywgeDEgOjogeDIgOjogeDMgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGlmIGNtcCB4MSB4MiA8PSAwIHRoZW5cbiAgICAgICAgICAgIGlmIGNtcCB4MiB4MyA8PSAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlIGlmIGNtcCB4MSB4MyA8PSAwIHRoZW4gW3gxOyB4MzsgeDJdXG4gICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2UgaWYgY21wIHgxIHgzIDw9IDAgdGhlbiBbeDI7IHgxOyB4M11cbiAgICAgICAgICBlbHNlIGlmIGNtcCB4MiB4MyA8PSAwIHRoZW4gW3gyOyB4MzsgeDFdXG4gICAgICAgICAgZWxzZSBbeDM7IHgyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgbiwgbCAtPlxuICAgICAgICBsZXQgbjEgPSBuIGFzciAxIGluXG4gICAgICAgIGxldCBuMiA9IG4gLSBuMSBpblxuICAgICAgICBsZXQgczEsIGwyID0gcmV2X3NvcnQgbjEgbCBpblxuICAgICAgICBsZXQgczIsIHRsID0gcmV2X3NvcnQgbjIgbDIgaW5cbiAgICAgICAgKHJldl9tZXJnZV9yZXYgczEgczIgW10sIHRsKVxuICBhbmQgcmV2X3NvcnQgbiBsID1cbiAgICBtYXRjaCBuLCBsIHdpdGhcbiAgICB8IDIsIHgxIDo6IHgyIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID0gaWYgY21wIHgxIHgyID4gMCB0aGVuIFt4MTsgeDJdIGVsc2UgW3gyOyB4MV0gaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgMywgeDEgOjogeDIgOjogeDMgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGlmIGNtcCB4MSB4MiA+IDAgdGhlblxuICAgICAgICAgICAgaWYgY21wIHgyIHgzID4gMCB0aGVuIFt4MTsgeDI7IHgzXVxuICAgICAgICAgICAgZWxzZSBpZiBjbXAgeDEgeDMgPiAwIHRoZW4gW3gxOyB4MzsgeDJdXG4gICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2UgaWYgY21wIHgxIHgzID4gMCB0aGVuIFt4MjsgeDE7IHgzXVxuICAgICAgICAgIGVsc2UgaWYgY21wIHgyIHgzID4gMCB0aGVuIFt4MjsgeDM7IHgxXVxuICAgICAgICAgIGVsc2UgW3gzOyB4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IG4sIGwgLT5cbiAgICAgICAgbGV0IG4xID0gbiBhc3IgMSBpblxuICAgICAgICBsZXQgbjIgPSBuIC0gbjEgaW5cbiAgICAgICAgbGV0IHMxLCBsMiA9IHNvcnQgbjEgbCBpblxuICAgICAgICBsZXQgczIsIHRsID0gc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlIHMxIHMyIFtdLCB0bClcbiAgaW5cbiAgbGV0IGxlbiA9IGxlbmd0aCBsIGluXG4gIGlmIGxlbiA8IDIgdGhlbiBsIGVsc2UgZnN0IChzb3J0IGxlbiBsKVxuXG5cbmxldCBzb3J0ID0gc3RhYmxlX3NvcnRcbmxldCBmYXN0X3NvcnQgPSBzdGFibGVfc29ydFxuXG4oKiBOb3RlOiBvbiBhIGxpc3Qgb2YgbGVuZ3RoIGJldHdlZW4gYWJvdXQgMTAwMDAwIChkZXBlbmRpbmcgb24gdGhlIG1pbm9yXG4gICBoZWFwIHNpemUgYW5kIHRoZSB0eXBlIG9mIHRoZSBsaXN0KSBhbmQgU3lzLm1heF9hcnJheV9zaXplLCBpdCBpc1xuICAgYWN0dWFsbHkgZmFzdGVyIHRvIHVzZSB0aGUgZm9sbG93aW5nLCBidXQgaXQgbWlnaHQgYWxzbyB1c2UgbW9yZSBtZW1vcnlcbiAgIGJlY2F1c2UgdGhlIGFyZ3VtZW50IGxpc3QgY2Fubm90IGJlIGRlYWxsb2NhdGVkIGluY3JlbWVudGFsbHkuXG5cbiAgIEFsc28sIHRoZXJlIHNlZW1zIHRvIGJlIGEgYnVnIGluIHRoaXMgY29kZSBvciBpbiB0aGVcbiAgIGltcGxlbWVudGF0aW9uIG9mIG9ial90cnVuY2F0ZS5cblxuZXh0ZXJuYWwgb2JqX3RydW5jYXRlIDogJ2EgYXJyYXkgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfb2JqX3RydW5jYXRlXCJcblxubGV0IGFycmF5X3RvX2xpc3RfaW5fcGxhY2UgYSA9XG4gIGxldCBsID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGFjY3UgbiBwID1cbiAgICBpZiBwIDw9IDAgdGhlbiBhY2N1IGVsc2UgYmVnaW5cbiAgICAgIGlmIHAgPSBuIHRoZW4gYmVnaW5cbiAgICAgICAgb2JqX3RydW5jYXRlIGEgcDtcbiAgICAgICAgbG9vcCAoYS4ocC0xKSA6OiBhY2N1KSAobi0xMDAwKSAocC0xKVxuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgbG9vcCAoYS4ocC0xKSA6OiBhY2N1KSBuIChwLTEpXG4gICAgICBlbmRcbiAgICBlbmRcbiAgaW5cbiAgbG9vcCBbXSAobC0xMDAwKSBsXG5cblxubGV0IHN0YWJsZV9zb3J0IGNtcCBsID1cbiAgbGV0IGEgPSBBcnJheS5vZl9saXN0IGwgaW5cbiAgQXJyYXkuc3RhYmxlX3NvcnQgY21wIGE7XG4gIGFycmF5X3RvX2xpc3RfaW5fcGxhY2UgYVxuXG4qKVxuXG5cbigqKiBzb3J0aW5nICsgcmVtb3ZpbmcgZHVwbGljYXRlcyAqKVxuXG5sZXQgc29ydF91bmlxIGNtcCBsID1cbiAgbGV0IHJlYyByZXZfbWVyZ2UgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGxldCBjID0gY21wIGgxIGgyIGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW4gcmV2X21lcmdlIHQxIHQyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIHJldl9tZXJnZSB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlIGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyByZXZfbWVyZ2VfcmV2IGwxIGwyIGFjY3UgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBsMiBhY2N1XG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBsMSBhY2N1XG4gICAgfCBoMTo6dDEsIGgyOjp0MiAtPlxuICAgICAgICBsZXQgYyA9IGNtcCBoMSBoMiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuIHJldl9tZXJnZV9yZXYgdDEgdDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIGlmIGMgPiAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlX3JldiB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlX3JldiBsMSB0MiAoaDI6OmFjY3UpXG4gIGluXG4gIGxldCByZWMgc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDFdIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDE7IHgyXSBlbHNlIFt4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IDMsIHgxIDo6IHgyIDo6IHgzIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4Ml0gZWxzZSBpZiBjIDwgMCB0aGVuIFt4MjsgeDNdIGVsc2UgW3gzOyB4Ml1cbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MTsgeDJdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIFt4MTsgeDM7IHgyXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MjsgeDFdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIFt4MjsgeDM7IHgxXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSByZXZfc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSByZXZfc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlX3JldiBzMSBzMiBbXSwgdGwpXG4gIGFuZCByZXZfc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDFdIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDE7IHgyXSBlbHNlIFt4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IDMsIHgxIDo6IHgyIDo6IHgzIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4Ml0gZWxzZSBpZiBjID4gMCB0aGVuIFt4MjsgeDNdIGVsc2UgW3gzOyB4Ml1cbiAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MTsgeDJdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuIFt4MTsgeDM7IHgyXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MjsgeDFdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuIFt4MjsgeDM7IHgxXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSBzb3J0IG4xIGwgaW5cbiAgICAgICAgbGV0IHMyLCB0bCA9IHNvcnQgbjIgbDIgaW5cbiAgICAgICAgKHJldl9tZXJnZSBzMSBzMiBbXSwgdGwpXG4gIGluXG4gIGxldCBsZW4gPSBsZW5ndGggbCBpblxuICBpZiBsZW4gPCAyIHRoZW4gbCBlbHNlIGZzdCAoc29ydCBsZW4gbClcblxuXG5sZXQgcmVjIGNvbXBhcmVfbGVuZ3RocyBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IDBcbiAgfCBbXSwgXyAtPiAtMVxuICB8IF8sIFtdIC0+IDFcbiAgfCBfIDo6IGwxLCBfIDo6IGwyIC0+IGNvbXBhcmVfbGVuZ3RocyBsMSBsMlxuOztcblxubGV0IHJlYyBjb21wYXJlX2xlbmd0aF93aXRoIGwgbiA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+XG4gICAgaWYgbiA9IDAgdGhlbiAwIGVsc2VcbiAgICAgIGlmIG4gPiAwIHRoZW4gLTEgZWxzZSAxXG4gIHwgXyA6OiBsIC0+XG4gICAgaWYgbiA8PSAwIHRoZW4gMSBlbHNlXG4gICAgICBjb21wYXJlX2xlbmd0aF93aXRoIGwgKG4tMSlcbjs7XG5cbigqKiB7MSBDb21wYXJpc29ufSAqKVxuXG4oKiBOb3RlOiB3ZSBhcmUgKm5vdCogc2hvcnRjdXR0aW5nIHRoZSBsaXN0IGJ5IHVzaW5nXG4gICBbTGlzdC5jb21wYXJlX2xlbmd0aHNdIGZpcnN0OyB0aGlzIG1heSBiZSBzbG93ZXIgb24gbG9uZyBsaXN0c1xuICAgaW1tZWRpYXRlbHkgc3RhcnQgd2l0aCBkaXN0aW5jdCBlbGVtZW50cy4gSXQgaXMgYWxzbyBpbmNvcnJlY3QgZm9yXG4gICBbY29tcGFyZV0gYmVsb3csIGFuZCBpdCBpcyBiZXR0ZXIgKHByaW5jaXBsZSBvZiBsZWFzdCBzdXJwcmlzZSkgdG9cbiAgIHVzZSB0aGUgc2FtZSBhcHByb2FjaCBmb3IgYm90aCBmdW5jdGlvbnMuICopXG5sZXQgcmVjIGVxdWFsIGVxIGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgW10gLT4gdHJ1ZVxuICB8IFtdLCBfOjpfIHwgXzo6XywgW10gLT4gZmFsc2VcbiAgfCBhMTo6bDEsIGEyOjpsMiAtPiBlcSBhMSBhMiAmJiBlcXVhbCBlcSBsMSBsMlxuXG5sZXQgcmVjIGNvbXBhcmUgY21wIGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgW10gLT4gMFxuICB8IFtdLCBfOjpfIC0+IC0xXG4gIHwgXzo6XywgW10gLT4gMVxuICB8IGExOjpsMSwgYTI6OmwyIC0+XG4gICAgbGV0IGMgPSBjbXAgYTEgYTIgaW5cbiAgICBpZiBjIDw+IDAgdGhlbiBjXG4gICAgZWxzZSBjb21wYXJlIGNtcCBsMSBsMlxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIGwgPVxuICBsZXQgcmVjIGF1eCBsICgpID0gbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBTZXEuTmlsXG4gICAgfCB4IDo6IHRhaWwgLT4gU2VxLkNvbnMgKHgsIGF1eCB0YWlsKVxuICBpblxuICBhdXggbFxuXG5sZXQgb2Zfc2VxIHNlcSA9XG4gIGxldCByZWMgZGlyZWN0IGRlcHRoIHNlcSA6IF8gbGlzdCA9XG4gICAgaWYgZGVwdGg9MFxuICAgIHRoZW5cbiAgICAgIFNlcS5mb2xkX2xlZnQgKGZ1biBhY2MgeCAtPiB4OjphY2MpIFtdIHNlcVxuICAgICAgfD4gcmV2ICgqIHRhaWxyZWMgKilcbiAgICBlbHNlIG1hdGNoIHNlcSgpIHdpdGhcbiAgICAgIHwgU2VxLk5pbCAtPiBbXVxuICAgICAgfCBTZXEuQ29ucyAoeCwgbmV4dCkgLT4geCA6OiBkaXJlY3QgKGRlcHRoLTEpIG5leHRcbiAgaW5cbiAgZGlyZWN0IDUwMCBzZXFcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMjEgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gaW5fY2hhbm5lbFxuXG50eXBlIG9wZW5fZmxhZyA9IFN0ZGxpYi5vcGVuX2ZsYWcgPVxuICB8IE9wZW5fcmRvbmx5XG4gIHwgT3Blbl93cm9ubHlcbiAgfCBPcGVuX2FwcGVuZFxuICB8IE9wZW5fY3JlYXRcbiAgfCBPcGVuX3RydW5jXG4gIHwgT3Blbl9leGNsXG4gIHwgT3Blbl9iaW5hcnlcbiAgfCBPcGVuX3RleHRcbiAgfCBPcGVuX25vbmJsb2NrXG5cbmxldCBzdGRpbiA9IFN0ZGxpYi5zdGRpblxubGV0IG9wZW5fYmluID0gU3RkbGliLm9wZW5faW5fYmluXG5sZXQgb3Blbl90ZXh0ID0gU3RkbGliLm9wZW5faW5cbmxldCBvcGVuX2dlbiA9IFN0ZGxpYi5vcGVuX2luX2dlblxuXG5sZXQgd2l0aF9vcGVuIG9wZW5mdW4gcyBmID1cbiAgbGV0IGljID0gb3BlbmZ1biBzIGluXG4gIEZ1bi5wcm90ZWN0IH5maW5hbGx5OihmdW4gKCkgLT4gU3RkbGliLmNsb3NlX2luX25vZXJyIGljKVxuICAgIChmdW4gKCkgLT4gZiBpYylcblxubGV0IHdpdGhfb3Blbl9iaW4gcyBmID1cbiAgd2l0aF9vcGVuIFN0ZGxpYi5vcGVuX2luX2JpbiBzIGZcblxubGV0IHdpdGhfb3Blbl90ZXh0IHMgZiA9XG4gIHdpdGhfb3BlbiBTdGRsaWIub3Blbl9pbiBzIGZcblxubGV0IHdpdGhfb3Blbl9nZW4gZmxhZ3MgcGVybSBzIGYgPVxuICB3aXRoX29wZW4gKFN0ZGxpYi5vcGVuX2luX2dlbiBmbGFncyBwZXJtKSBzIGZcblxubGV0IHNlZWsgPSBTdGRsaWIuTGFyZ2VGaWxlLnNlZWtfaW5cbmxldCBwb3MgPSBTdGRsaWIuTGFyZ2VGaWxlLnBvc19pblxubGV0IGxlbmd0aCA9IFN0ZGxpYi5MYXJnZUZpbGUuaW5fY2hhbm5lbF9sZW5ndGhcbmxldCBjbG9zZSA9IFN0ZGxpYi5jbG9zZV9pblxubGV0IGNsb3NlX25vZXJyID0gU3RkbGliLmNsb3NlX2luX25vZXJyXG5cbmxldCBpbnB1dF9jaGFyIGljID1cbiAgbWF0Y2ggU3RkbGliLmlucHV0X2NoYXIgaWMgd2l0aFxuICB8IGMgLT4gU29tZSBjXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IE5vbmVcblxubGV0IGlucHV0X2J5dGUgaWMgPVxuICBtYXRjaCBTdGRsaWIuaW5wdXRfYnl0ZSBpYyB3aXRoXG4gIHwgbiAtPiBTb21lIG5cbiAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gTm9uZVxuXG5sZXQgaW5wdXRfbGluZSBpYyA9XG4gIG1hdGNoIFN0ZGxpYi5pbnB1dF9saW5lIGljIHdpdGhcbiAgfCBzIC0+IFNvbWUgc1xuICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPiBOb25lXG5cbmxldCBpbnB1dCA9IFN0ZGxpYi5pbnB1dFxuXG5sZXQgcmVhbGx5X2lucHV0IGljIGJ1ZiBwb3MgbGVuID1cbiAgbWF0Y2ggU3RkbGliLnJlYWxseV9pbnB1dCBpYyBidWYgcG9zIGxlbiB3aXRoXG4gIHwgKCkgLT4gU29tZSAoKVxuICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPiBOb25lXG5cbmxldCByZWFsbHlfaW5wdXRfc3RyaW5nIGljIGxlbiA9XG4gIG1hdGNoIFN0ZGxpYi5yZWFsbHlfaW5wdXRfc3RyaW5nIGljIGxlbiB3aXRoXG4gIHwgcyAtPiBTb21lIHNcbiAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gTm9uZVxuXG4oKiBSZWFkIHVwIHRvIFtsZW5dIGJ5dGVzIGludG8gW2J1Zl0sIHN0YXJ0aW5nIGF0IFtvZnNdLiBSZXR1cm4gdG90YWwgYnl0ZXNcbiAgIHJlYWQuICopXG5sZXQgcmVhZF91cHRvIGljIGJ1ZiBvZnMgbGVuID1cbiAgbGV0IHJlYyBsb29wIG9mcyBsZW4gPVxuICAgIGlmIGxlbiA9IDAgdGhlbiBvZnNcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IFN0ZGxpYi5pbnB1dCBpYyBidWYgb2ZzIGxlbiBpblxuICAgICAgaWYgciA9IDAgdGhlblxuICAgICAgICBvZnNcbiAgICAgIGVsc2VcbiAgICAgICAgbG9vcCAob2ZzICsgcikgKGxlbiAtIHIpXG4gICAgZW5kXG4gIGluXG4gIGxvb3Agb2ZzIGxlbiAtIG9mc1xuXG4oKiBCZXN0IGVmZm9ydCBhdHRlbXB0IHRvIHJldHVybiBhIGJ1ZmZlciB3aXRoID49IChvZnMgKyBuKSBieXRlcyBvZiBzdG9yYWdlLFxuICAgYW5kIHN1Y2ggdGhhdCBpdCBjb2luY2lkZXMgd2l0aCBbYnVmXSBhdCBpbmRpY2VzIDwgW29mc10uXG5cbiAgIFRoZSByZXR1cm5lZCBidWZmZXIgaXMgZXF1YWwgdG8gW2J1Zl0gaXRzZWxmIGlmIGl0IGFscmVhZHkgaGFzIHN1ZmZpY2llbnRcbiAgIGZyZWUgc3BhY2UuXG5cbiAgIFRoZSByZXR1cm5lZCBidWZmZXIgbWF5IGhhdmUgKmZld2VyKiB0aGFuIFtvZnMgKyBuXSBieXRlcyBvZiBzdG9yYWdlIGlmIHRoaXNcbiAgIG51bWJlciBpcyA+IFtTeXMubWF4X3N0cmluZ19sZW5ndGhdLiBIb3dldmVyIHRoZSByZXR1cm5lZCBidWZmZXIgd2lsbFxuICAgKmFsd2F5cyogaGF2ZSA+IFtvZnNdIGJ5dGVzIG9mIHN0b3JhZ2UuIEluIHRoZSBsaW1pdGluZyBjYXNlIHdoZW4gW29mcyA9IGxlblxuICAgPSBTeXMubWF4X3N0cmluZ19sZW5ndGhdIChzbyB0aGF0IGl0IGlzIG5vdCBwb3NzaWJsZSB0byByZXNpemUgdGhlIGJ1ZmZlciBhdFxuICAgYWxsKSwgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZC4gKilcblxubGV0IGVuc3VyZSBidWYgb2ZzIG4gPVxuICBsZXQgbGVuID0gQnl0ZXMubGVuZ3RoIGJ1ZiBpblxuICBpZiBsZW4gPj0gb2ZzICsgbiB0aGVuIGJ1ZlxuICBlbHNlIGJlZ2luXG4gICAgbGV0IG5ld19sZW4gPSByZWYgbGVuIGluXG4gICAgd2hpbGUgIW5ld19sZW4gPCBvZnMgKyBuIGRvXG4gICAgICBuZXdfbGVuIDo9IDIgKiAhbmV3X2xlbiArIDFcbiAgICBkb25lO1xuICAgIGxldCBuZXdfbGVuID0gIW5ld19sZW4gaW5cbiAgICBsZXQgbmV3X2xlbiA9XG4gICAgICBpZiBuZXdfbGVuIDw9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgICAgIG5ld19sZW5cbiAgICAgIGVsc2UgaWYgb2ZzIDwgU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW5cbiAgICAgICAgU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gICAgICBlbHNlXG4gICAgICAgIGZhaWx3aXRoIFwiSW5fY2hhbm5lbC5pbnB1dF9hbGw6IGNoYW5uZWwgY29udGVudCBcXFxuICAgICAgICAgICAgICAgICAgaXMgbGFyZ2VyIHRoYW4gbWF4aW11bSBzdHJpbmcgbGVuZ3RoXCJcbiAgICBpblxuICAgIGxldCBuZXdfYnVmID0gQnl0ZXMuY3JlYXRlIG5ld19sZW4gaW5cbiAgICBCeXRlcy5ibGl0IGJ1ZiAwIG5ld19idWYgMCBvZnM7XG4gICAgbmV3X2J1ZlxuICBlbmRcblxubGV0IGlucHV0X2FsbCBpYyA9XG4gIGxldCBjaHVua19zaXplID0gNjU1MzYgaW4gKCogSU9fQlVGRkVSX1NJWkUgKilcbiAgbGV0IGluaXRpYWxfc2l6ZSA9XG4gICAgdHJ5XG4gICAgICBTdGRsaWIuaW5fY2hhbm5lbF9sZW5ndGggaWMgLSBTdGRsaWIucG9zX2luIGljXG4gICAgd2l0aCBTeXNfZXJyb3IgXyAtPlxuICAgICAgLTFcbiAgaW5cbiAgbGV0IGluaXRpYWxfc2l6ZSA9IGlmIGluaXRpYWxfc2l6ZSA8IDAgdGhlbiBjaHVua19zaXplIGVsc2UgaW5pdGlhbF9zaXplIGluXG4gIGxldCBpbml0aWFsX3NpemUgPVxuICAgIGlmIGluaXRpYWxfc2l6ZSA8PSBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlblxuICAgICAgaW5pdGlhbF9zaXplXG4gICAgZWxzZVxuICAgICAgU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gIGluXG4gIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgaW5pdGlhbF9zaXplIGluXG4gIGxldCBucmVhZCA9IHJlYWRfdXB0byBpYyBidWYgMCBpbml0aWFsX3NpemUgaW5cbiAgaWYgbnJlYWQgPCBpbml0aWFsX3NpemUgdGhlbiAoKiBFT0YgcmVhY2hlZCwgYnVmZmVyIHBhcnRpYWxseSBmaWxsZWQgKilcbiAgICBCeXRlcy5zdWJfc3RyaW5nIGJ1ZiAwIG5yZWFkXG4gIGVsc2UgYmVnaW4gKCogbnJlYWQgPSBpbml0aWFsX3NpemUsIG1heWJlIEVPRiByZWFjaGVkICopXG4gICAgbWF0Y2ggU3RkbGliLmlucHV0X2NoYXIgaWMgd2l0aFxuICAgIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+XG4gICAgICAgICgqIEVPRiByZWFjaGVkLCBidWZmZXIgaXMgY29tcGxldGVseSBmaWxsZWQgKilcbiAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBidWZcbiAgICB8IGMgLT5cbiAgICAgICAgKCogRU9GIG5vdCByZWFjaGVkICopXG4gICAgICAgIGxldCByZWMgbG9vcCBidWYgb2ZzID1cbiAgICAgICAgICBsZXQgYnVmID0gZW5zdXJlIGJ1ZiBvZnMgY2h1bmtfc2l6ZSBpblxuICAgICAgICAgIGxldCByZW0gPSBCeXRlcy5sZW5ndGggYnVmIC0gb2ZzIGluXG4gICAgICAgICAgKCogW3JlbV0gY2FuIGJlIDwgW2NodW5rX3NpemVdIGlmIGJ1ZmZlciBzaXplIGNsb3NlIHRvXG4gICAgICAgICAgICAgW1N5cy5tYXhfc3RyaW5nX2xlbmd0aF0gKilcbiAgICAgICAgICBsZXQgciA9IHJlYWRfdXB0byBpYyBidWYgb2ZzIHJlbSBpblxuICAgICAgICAgIGlmIHIgPCByZW0gdGhlbiAoKiBFT0YgcmVhY2hlZCAqKVxuICAgICAgICAgICAgQnl0ZXMuc3ViX3N0cmluZyBidWYgMCAob2ZzICsgcilcbiAgICAgICAgICBlbHNlICgqIHIgPSByZW0gKilcbiAgICAgICAgICAgIGxvb3AgYnVmIChvZnMgKyByZW0pXG4gICAgICAgIGluXG4gICAgICAgIGxldCBidWYgPSBlbnN1cmUgYnVmIG5yZWFkIChjaHVua19zaXplICsgMSkgaW5cbiAgICAgICAgQnl0ZXMuc2V0IGJ1ZiBucmVhZCBjO1xuICAgICAgICBsb29wIGJ1ZiAobnJlYWQgKyAxKVxuICBlbmRcblxubGV0IHNldF9iaW5hcnlfbW9kZSA9IFN0ZGxpYi5zZXRfYmluYXJ5X21vZGVfaW5cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMjEgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gb3V0X2NoYW5uZWxcblxudHlwZSBvcGVuX2ZsYWcgPSBTdGRsaWIub3Blbl9mbGFnID1cbiAgfCBPcGVuX3Jkb25seVxuICB8IE9wZW5fd3Jvbmx5XG4gIHwgT3Blbl9hcHBlbmRcbiAgfCBPcGVuX2NyZWF0XG4gIHwgT3Blbl90cnVuY1xuICB8IE9wZW5fZXhjbFxuICB8IE9wZW5fYmluYXJ5XG4gIHwgT3Blbl90ZXh0XG4gIHwgT3Blbl9ub25ibG9ja1xuXG5sZXQgc3Rkb3V0ID0gU3RkbGliLnN0ZG91dFxubGV0IHN0ZGVyciA9IFN0ZGxpYi5zdGRlcnJcbmxldCBvcGVuX2JpbiA9IFN0ZGxpYi5vcGVuX291dF9iaW5cbmxldCBvcGVuX3RleHQgPSBTdGRsaWIub3Blbl9vdXRcbmxldCBvcGVuX2dlbiA9IFN0ZGxpYi5vcGVuX291dF9nZW5cblxubGV0IHdpdGhfb3BlbiBvcGVuZnVuIHMgZiA9XG4gIGxldCBvYyA9IG9wZW5mdW4gcyBpblxuICBGdW4ucHJvdGVjdCB+ZmluYWxseTooZnVuICgpIC0+IFN0ZGxpYi5jbG9zZV9vdXRfbm9lcnIgb2MpXG4gICAgKGZ1biAoKSAtPiBmIG9jKVxuXG5sZXQgd2l0aF9vcGVuX2JpbiBzIGYgPVxuICB3aXRoX29wZW4gU3RkbGliLm9wZW5fb3V0X2JpbiBzIGZcblxubGV0IHdpdGhfb3Blbl90ZXh0IHMgZiA9XG4gIHdpdGhfb3BlbiBTdGRsaWIub3Blbl9vdXQgcyBmXG5cbmxldCB3aXRoX29wZW5fZ2VuIGZsYWdzIHBlcm0gcyBmID1cbiAgd2l0aF9vcGVuIChTdGRsaWIub3Blbl9vdXRfZ2VuIGZsYWdzIHBlcm0pIHMgZlxuXG5sZXQgc2VlayA9IFN0ZGxpYi5MYXJnZUZpbGUuc2Vla19vdXRcbmxldCBwb3MgPSBTdGRsaWIuTGFyZ2VGaWxlLnBvc19vdXRcbmxldCBsZW5ndGggPSBTdGRsaWIuTGFyZ2VGaWxlLm91dF9jaGFubmVsX2xlbmd0aFxubGV0IGNsb3NlID0gU3RkbGliLmNsb3NlX291dFxubGV0IGNsb3NlX25vZXJyID0gU3RkbGliLmNsb3NlX291dF9ub2VyclxubGV0IGZsdXNoID0gU3RkbGliLmZsdXNoXG5sZXQgZmx1c2hfYWxsID0gU3RkbGliLmZsdXNoX2FsbFxubGV0IG91dHB1dF9jaGFyID0gU3RkbGliLm91dHB1dF9jaGFyXG5sZXQgb3V0cHV0X2J5dGUgPSBTdGRsaWIub3V0cHV0X2J5dGVcbmxldCBvdXRwdXRfc3RyaW5nID0gU3RkbGliLm91dHB1dF9zdHJpbmdcbmxldCBvdXRwdXRfYnl0ZXMgPSBTdGRsaWIub3V0cHV0X2J5dGVzXG5sZXQgb3V0cHV0ID0gU3RkbGliLm91dHB1dFxubGV0IG91dHB1dF9zdWJzdHJpbmcgPSBTdGRsaWIub3V0cHV0X3N1YnN0cmluZ1xubGV0IHNldF9iaW5hcnlfbW9kZSA9IFN0ZGxpYi5zZXRfYmluYXJ5X21vZGVfb3V0XG5cbmV4dGVybmFsIHNldF9idWZmZXJlZCA6IHQgLT4gYm9vbCAtPiB1bml0ID0gXCJjYW1sX21sX3NldF9idWZmZXJlZFwiXG5cbmV4dGVybmFsIGlzX2J1ZmZlcmVkIDogdCAtPiBib29sID0gXCJjYW1sX21sX2lzX2J1ZmZlcmVkXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgR2FicmllbCBTY2hlcmVyLCBwcm9qZXQgUGFyc2lmYWwsIElOUklBIFNhY2xheSAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTkgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAoJ2EsICdiKSB0ID0gTGVmdCBvZiAnYSB8IFJpZ2h0IG9mICdiXG5cbmxldCBsZWZ0IHYgPSBMZWZ0IHZcbmxldCByaWdodCB2ID0gUmlnaHQgdlxuXG5sZXQgaXNfbGVmdCA9IGZ1bmN0aW9uXG58IExlZnQgXyAtPiB0cnVlXG58IFJpZ2h0IF8gLT4gZmFsc2VcblxubGV0IGlzX3JpZ2h0ID0gZnVuY3Rpb25cbnwgTGVmdCBfIC0+IGZhbHNlXG58IFJpZ2h0IF8gLT4gdHJ1ZVxuXG5sZXQgZmluZF9sZWZ0ID0gZnVuY3Rpb25cbnwgTGVmdCB2IC0+IFNvbWUgdlxufCBSaWdodCBfIC0+IE5vbmVcblxubGV0IGZpbmRfcmlnaHQgPSBmdW5jdGlvblxufCBMZWZ0IF8gLT4gTm9uZVxufCBSaWdodCB2IC0+IFNvbWUgdlxuXG5sZXQgbWFwX2xlZnQgZiA9IGZ1bmN0aW9uXG58IExlZnQgdiAtPiBMZWZ0IChmIHYpXG58IFJpZ2h0IF8gYXMgZSAtPiBlXG5cbmxldCBtYXBfcmlnaHQgZiA9IGZ1bmN0aW9uXG58IExlZnQgXyBhcyBlIC0+IGVcbnwgUmlnaHQgdiAtPiBSaWdodCAoZiB2KVxuXG5sZXQgbWFwIH5sZWZ0IH5yaWdodCA9IGZ1bmN0aW9uXG58IExlZnQgdiAtPiBMZWZ0IChsZWZ0IHYpXG58IFJpZ2h0IHYgLT4gUmlnaHQgKHJpZ2h0IHYpXG5cbmxldCBmb2xkIH5sZWZ0IH5yaWdodCA9IGZ1bmN0aW9uXG58IExlZnQgdiAtPiBsZWZ0IHZcbnwgUmlnaHQgdiAtPiByaWdodCB2XG5cbmxldCBpdGVyID0gZm9sZFxuXG5sZXQgZm9yX2FsbCA9IGZvbGRcblxubGV0IGVxdWFsIH5sZWZ0IH5yaWdodCBlMSBlMiA9IG1hdGNoIGUxLCBlMiB3aXRoXG58IExlZnQgdjEsIExlZnQgdjIgLT4gbGVmdCB2MSB2MlxufCBSaWdodCB2MSwgUmlnaHQgdjIgLT4gcmlnaHQgdjEgdjJcbnwgTGVmdCBfLCBSaWdodCBfIHwgUmlnaHQgXywgTGVmdCBfIC0+IGZhbHNlXG5cbmxldCBjb21wYXJlIH5sZWZ0IH5yaWdodCBlMSBlMiA9IG1hdGNoIGUxLCBlMiB3aXRoXG58IExlZnQgdjEsIExlZnQgdjIgLT4gbGVmdCB2MSB2MlxufCBSaWdodCB2MSwgUmlnaHQgdjIgLT4gcmlnaHQgdjEgdjJcbnwgTGVmdCBfLCBSaWdodCBfIC0+ICgtMSlcbnwgUmlnaHQgXywgTGVmdCBfIC0+IDFcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtOYXRpdmVpbnRdOiBwcm9jZXNzb3ItbmF0aXZlIGludGVnZXJzICopXG5cbmV4dGVybmFsIG5lZzogbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9uZWdcIlxuZXh0ZXJuYWwgYWRkOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9hZGRcIlxuZXh0ZXJuYWwgc3ViOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9zdWJcIlxuZXh0ZXJuYWwgbXVsOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9tdWxcIlxuZXh0ZXJuYWwgZGl2OiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9kaXZcIlxuZXh0ZXJuYWwgcmVtOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9tb2RcIlxuZXh0ZXJuYWwgbG9nYW5kOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9hbmRcIlxuZXh0ZXJuYWwgbG9nb3I6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X29yXCJcbmV4dGVybmFsIGxvZ3hvcjogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfeG9yXCJcbmV4dGVybmFsIHNoaWZ0X2xlZnQ6IG5hdGl2ZWludCAtPiBpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2xzbFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodDogbmF0aXZlaW50IC0+IGludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfYXNyXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWw6IG5hdGl2ZWludCAtPiBpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2xzclwiXG5leHRlcm5hbCBvZl9pbnQ6IGludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfb2ZfaW50XCJcbmV4dGVybmFsIHRvX2ludDogbmF0aXZlaW50IC0+IGludCA9IFwiJW5hdGl2ZWludF90b19pbnRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBuYXRpdmVpbnRcbiAgPSBcImNhbWxfbmF0aXZlaW50X29mX2Zsb2F0XCIgXCJjYW1sX25hdGl2ZWludF9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRvX2Zsb2F0IDogbmF0aXZlaW50IC0+IGZsb2F0XG4gID0gXCJjYW1sX25hdGl2ZWludF90b19mbG9hdFwiIFwiY2FtbF9uYXRpdmVpbnRfdG9fZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBvZl9pbnQzMjogaW50MzIgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X29mX2ludDMyXCJcbmV4dGVybmFsIHRvX2ludDMyOiBuYXRpdmVpbnQgLT4gaW50MzIgPSBcIiVuYXRpdmVpbnRfdG9faW50MzJcIlxuXG5sZXQgemVybyA9IDBuXG5sZXQgb25lID0gMW5cbmxldCBtaW51c19vbmUgPSAtMW5cbmxldCBzdWNjIG4gPSBhZGQgbiAxblxubGV0IHByZWQgbiA9IHN1YiBuIDFuXG5sZXQgYWJzIG4gPSBpZiBuID49IDBuIHRoZW4gbiBlbHNlIG5lZyBuXG5sZXQgc2l6ZSA9IFN5cy53b3JkX3NpemVcbmxldCBtaW5faW50ID0gc2hpZnRfbGVmdCAxbiAoc2l6ZSAtIDEpXG5sZXQgbWF4X2ludCA9IHN1YiBtaW5faW50IDFuXG5sZXQgbG9nbm90IG4gPSBsb2d4b3IgbiAoLTFuKVxuXG5sZXQgdW5zaWduZWRfdG9faW50ID1cbiAgbGV0IG1heF9pbnQgPSBvZl9pbnQgU3RkbGliLm1heF9pbnQgaW5cbiAgZnVuIG4gLT5cbiAgICBpZiBjb21wYXJlIHplcm8gbiA8PSAwICYmIGNvbXBhcmUgbiBtYXhfaW50IDw9IDAgdGhlblxuICAgICAgU29tZSAodG9faW50IG4pXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG5leHRlcm5hbCBmb3JtYXQgOiBzdHJpbmcgLT4gbmF0aXZlaW50IC0+IHN0cmluZyA9IFwiY2FtbF9uYXRpdmVpbnRfZm9ybWF0XCJcbmxldCB0b19zdHJpbmcgbiA9IGZvcm1hdCBcIiVkXCIgblxuXG5leHRlcm5hbCBvZl9zdHJpbmc6IHN0cmluZyAtPiBuYXRpdmVpbnQgPSBcImNhbWxfbmF0aXZlaW50X29mX3N0cmluZ1wiXG5cbmxldCBvZl9zdHJpbmdfb3B0IHMgPVxuICAoKiBUT0RPOiBleHBvc2UgYSBub24tcmFpc2luZyBwcmltaXRpdmUgZGlyZWN0bHkuICopXG4gIHRyeSBTb21lIChvZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG50eXBlIHQgPSBuYXRpdmVpbnRcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxubGV0IGVxdWFsICh4OiB0KSAoeTogdCkgPSBjb21wYXJlIHggeSA9IDBcblxubGV0IHVuc2lnbmVkX2NvbXBhcmUgbiBtID1cbiAgY29tcGFyZSAoc3ViIG4gbWluX2ludCkgKHN1YiBtIG1pbl9pbnQpXG5cbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4oKiBVbnNpZ25lZCBkaXZpc2lvbiBmcm9tIHNpZ25lZCBkaXZpc2lvbiBvZiB0aGUgc2FtZVxuICAgYml0bmVzcy4gU2VlIFdhcnJlbiBKci4sIEhlbnJ5IFMuICgyMDEzKS4gSGFja2VyJ3MgRGVsaWdodCAoMiBlZC4pLCBTZWMgOS0zLlxuKilcbmxldCB1bnNpZ25lZF9kaXYgbiBkID1cbiAgaWYgZCA8IHplcm8gdGhlblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgbiBkIDwgMCB0aGVuIHplcm8gZWxzZSBvbmVcbiAgZWxzZVxuICAgIGxldCBxID0gc2hpZnRfbGVmdCAoZGl2IChzaGlmdF9yaWdodF9sb2dpY2FsIG4gMSkgZCkgMSBpblxuICAgIGxldCByID0gc3ViIG4gKG11bCBxIGQpIGluXG4gICAgaWYgdW5zaWduZWRfY29tcGFyZSByIGQgPj0gMCB0aGVuIHN1Y2MgcSBlbHNlIHFcblxubGV0IHVuc2lnbmVkX3JlbSBuIGQgPVxuICBzdWIgbiAobXVsICh1bnNpZ25lZF9kaXYgbiBkKSBkKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBPcGVyYXRpb25zIG9uIGludGVybmFsIHJlcHJlc2VudGF0aW9ucyBvZiB2YWx1ZXMgKilcblxudHlwZSB0XG5cbnR5cGUgcmF3X2RhdGEgPSBuYXRpdmVpbnRcblxuZXh0ZXJuYWwgcmVwciA6ICdhIC0+IHQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBvYmogOiB0IC0+ICdhID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgbWFnaWMgOiAnYSAtPiAnYiA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGlzX2ludCA6IHQgLT4gYm9vbCA9IFwiJW9ial9pc19pbnRcIlxubGV0IFtAaW5saW5lIGFsd2F5c10gaXNfYmxvY2sgYSA9IG5vdCAoaXNfaW50IGEpXG5leHRlcm5hbCB0YWcgOiB0IC0+IGludCA9IFwiY2FtbF9vYmpfdGFnXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHNldF90YWcgOiB0IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX29ial9zZXRfdGFnXCJcbmV4dGVybmFsIHNpemUgOiB0IC0+IGludCA9IFwiJW9ial9zaXplXCJcbmV4dGVybmFsIHJlYWNoYWJsZV93b3JkcyA6IHQgLT4gaW50ID0gXCJjYW1sX29ial9yZWFjaGFibGVfd29yZHNcIlxuZXh0ZXJuYWwgZmllbGQgOiB0IC0+IGludCAtPiB0ID0gXCIlb2JqX2ZpZWxkXCJcbmV4dGVybmFsIHNldF9maWVsZCA6IHQgLT4gaW50IC0+IHQgLT4gdW5pdCA9IFwiJW9ial9zZXRfZmllbGRcIlxuZXh0ZXJuYWwgZmxvYXRhcnJheV9nZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCA9IFwiY2FtbF9mbG9hdGFycmF5X2dldFwiXG5leHRlcm5hbCBmbG9hdGFycmF5X3NldCA6XG4gICAgZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdCA9IFwiY2FtbF9mbG9hdGFycmF5X3NldFwiXG5sZXQgW0BpbmxpbmUgYWx3YXlzXSBkb3VibGVfZmllbGQgeCBpID0gZmxvYXRhcnJheV9nZXQgKG9iaiB4IDogZmxvYXRhcnJheSkgaVxubGV0IFtAaW5saW5lIGFsd2F5c10gc2V0X2RvdWJsZV9maWVsZCB4IGkgdiA9XG4gIGZsb2F0YXJyYXlfc2V0IChvYmogeCA6IGZsb2F0YXJyYXkpIGkgdlxuZXh0ZXJuYWwgcmF3X2ZpZWxkIDogdCAtPiBpbnQgLT4gcmF3X2RhdGEgPSBcImNhbWxfb2JqX3Jhd19maWVsZFwiXG5leHRlcm5hbCBzZXRfcmF3X2ZpZWxkIDogdCAtPiBpbnQgLT4gcmF3X2RhdGEgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfb2JqX3NldF9yYXdfZmllbGRcIlxuXG5leHRlcm5hbCBuZXdfYmxvY2sgOiBpbnQgLT4gaW50IC0+IHQgPSBcImNhbWxfb2JqX2Jsb2NrXCJcbmV4dGVybmFsIGR1cCA6IHQgLT4gdCA9IFwiY2FtbF9vYmpfZHVwXCJcbmV4dGVybmFsIHRydW5jYXRlIDogdCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9vYmpfdHJ1bmNhdGVcIlxuZXh0ZXJuYWwgYWRkX29mZnNldCA6IHQgLT4gSW50MzIudCAtPiB0ID0gXCJjYW1sX29ial9hZGRfb2Zmc2V0XCJcbmV4dGVybmFsIHdpdGhfdGFnIDogaW50IC0+IHQgLT4gdCA9IFwiY2FtbF9vYmpfd2l0aF90YWdcIlxuXG5sZXQgZmlyc3Rfbm9uX2NvbnN0YW50X2NvbnN0cnVjdG9yX3RhZyA9IDBcbmxldCBsYXN0X25vbl9jb25zdGFudF9jb25zdHJ1Y3Rvcl90YWcgPSAyNDVcblxubGV0IGxhenlfdGFnID0gMjQ2XG5sZXQgY2xvc3VyZV90YWcgPSAyNDdcbmxldCBvYmplY3RfdGFnID0gMjQ4XG5sZXQgaW5maXhfdGFnID0gMjQ5XG5sZXQgZm9yd2FyZF90YWcgPSAyNTBcblxubGV0IG5vX3NjYW5fdGFnID0gMjUxXG5cbmxldCBhYnN0cmFjdF90YWcgPSAyNTFcbmxldCBzdHJpbmdfdGFnID0gMjUyXG5sZXQgZG91YmxlX3RhZyA9IDI1M1xubGV0IGRvdWJsZV9hcnJheV90YWcgPSAyNTRcbmxldCBjdXN0b21fdGFnID0gMjU1XG5sZXQgZmluYWxfdGFnID0gY3VzdG9tX3RhZ1xuXG5cbmxldCBpbnRfdGFnID0gMTAwMFxubGV0IG91dF9vZl9oZWFwX3RhZyA9IDEwMDFcbmxldCB1bmFsaWduZWRfdGFnID0gMTAwMlxuXG5tb2R1bGUgQ2xvc3VyZSA9IHN0cnVjdFxuICB0eXBlIGluZm8gPSB7XG4gICAgYXJpdHk6IGludDtcbiAgICBzdGFydF9lbnY6IGludDtcbiAgfVxuXG4gIGxldCBpbmZvX29mX3JhdyAoaW5mbyA6IG5hdGl2ZWludCkgPVxuICAgIGxldCBvcGVuIE5hdGl2ZWludCBpblxuICAgIGxldCBhcml0eSA9XG4gICAgICAoKiBzaWduZWQ6IG5lZ2F0aXZlIGZvciB0dXBsZWQgZnVuY3Rpb25zICopXG4gICAgICBpZiBTeXMud29yZF9zaXplID0gNjQgdGhlblxuICAgICAgICB0b19pbnQgKHNoaWZ0X3JpZ2h0IGluZm8gNTYpXG4gICAgICBlbHNlXG4gICAgICAgIHRvX2ludCAoc2hpZnRfcmlnaHQgaW5mbyAyNClcbiAgICBpblxuICAgIGxldCBzdGFydF9lbnYgPVxuICAgICAgKCogc3RhcnRfZW52IGlzIHVuc2lnbmVkLCBidXQgd2Uga25vdyBpdCBjYW4gYWx3YXlzIGZpdCBhbiBPQ2FtbFxuICAgICAgICAgaW50ZWdlciBzbyB3ZSB1c2UgW3RvX2ludF0gaW5zdGVhZCBvZiBbdW5zaWduZWRfdG9faW50XS4gKilcbiAgICAgIHRvX2ludCAoc2hpZnRfcmlnaHRfbG9naWNhbCAoc2hpZnRfbGVmdCBpbmZvIDgpIDkpIGluXG4gICAgeyBhcml0eTsgc3RhcnRfZW52IH1cblxuICAoKiBub3RlOiB3ZSBleHBlY3QgYSBjbG9zdXJlLCBub3QgYW4gaW5maXggcG9pbnRlciAqKVxuICBsZXQgaW5mbyAob2JqIDogdCkgPVxuICAgIGFzc2VydCAodGFnIG9iaiA9IGNsb3N1cmVfdGFnKTtcbiAgICBpbmZvX29mX3JhdyAocmF3X2ZpZWxkIG9iaiAxKVxuZW5kXG5cbm1vZHVsZSBFeHRlbnNpb25fY29uc3RydWN0b3IgPVxuc3RydWN0XG4gIHR5cGUgdCA9IGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICBsZXQgb2ZfdmFsIHggPVxuICAgIGxldCB4ID0gcmVwciB4IGluXG4gICAgbGV0IHNsb3QgPVxuICAgICAgaWYgKGlzX2Jsb2NrIHgpICYmICh0YWcgeCkgPD4gb2JqZWN0X3RhZyAmJiAoc2l6ZSB4KSA+PSAxIHRoZW4gZmllbGQgeCAwXG4gICAgICBlbHNlIHhcbiAgICBpblxuICAgIGxldCBuYW1lID1cbiAgICAgIGlmIChpc19ibG9jayBzbG90KSAmJiAodGFnIHNsb3QpID0gb2JqZWN0X3RhZyB0aGVuIGZpZWxkIHNsb3QgMFxuICAgICAgZWxzZSBpbnZhbGlkX2FyZyBcIk9iai5leHRlbnNpb25fY29uc3RydWN0b3JcIlxuICAgIGluXG4gICAgICBpZiAodGFnIG5hbWUpID0gc3RyaW5nX3RhZyB0aGVuIChvYmogc2xvdCA6IHQpXG4gICAgICBlbHNlIGludmFsaWRfYXJnIFwiT2JqLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclwiXG5cbiAgbGV0IFtAaW5saW5lIGFsd2F5c10gbmFtZSAoc2xvdCA6IHQpID1cbiAgICAob2JqIChmaWVsZCAocmVwciBzbG90KSAwKSA6IHN0cmluZylcblxuICBsZXQgW0BpbmxpbmUgYWx3YXlzXSBpZCAoc2xvdCA6IHQpID1cbiAgICAob2JqIChmaWVsZCAocmVwciBzbG90KSAxKSA6IGludClcbmVuZFxuXG5sZXQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID0gRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbFxubGV0IGV4dGVuc2lvbl9uYW1lID0gRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm5hbWVcbmxldCBleHRlbnNpb25faWQgPSBFeHRlbnNpb25fY29uc3RydWN0b3IuaWRcblxubW9kdWxlIEVwaGVtZXJvbiA9IHN0cnVjdFxuICB0eXBlIG9ial90ID0gdFxuXG4gIHR5cGUgdCAoKiogZXBoZW1lcm9uICopXG5cbiAgICgqKiBUbyBjaGFuZ2UgaW4gc3luYyB3aXRoIHdlYWsuaCAqKVxuICBsZXQgYWRkaXRpb25hbF92YWx1ZXMgPSAyXG4gIGxldCBtYXhfZXBoZV9sZW5ndGggPSBTeXMubWF4X2FycmF5X2xlbmd0aCAtIGFkZGl0aW9uYWxfdmFsdWVzXG5cbiAgZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IHQgPSBcImNhbWxfZXBoZV9jcmVhdGVcIjs7XG4gIGxldCBjcmVhdGUgbCA9XG4gICAgaWYgbm90ICgwIDw9IGwgJiYgbCA8PSBtYXhfZXBoZV9sZW5ndGgpIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiT2JqLkVwaGVtZXJvbi5jcmVhdGVcIjtcbiAgICBjcmVhdGUgbFxuXG4gIGxldCBsZW5ndGggeCA9IHNpemUocmVwciB4KSAtIGFkZGl0aW9uYWxfdmFsdWVzXG5cbiAgbGV0IHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBtc2cgPVxuICAgIGlmIG5vdCAoMCA8PSBvICYmIG8gPCBsZW5ndGggZSkgdGhlblxuICAgICAgaW52YWxpZF9hcmcgbXNnXG5cbiAgZXh0ZXJuYWwgZ2V0X2tleTogdCAtPiBpbnQgLT4gb2JqX3Qgb3B0aW9uID0gXCJjYW1sX2VwaGVfZ2V0X2tleVwiXG4gIGxldCBnZXRfa2V5IGUgbyA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi5nZXRfa2V5XCI7XG4gICAgZ2V0X2tleSBlIG9cblxuICBleHRlcm5hbCBnZXRfa2V5X2NvcHk6IHQgLT4gaW50IC0+IG9ial90IG9wdGlvbiA9IFwiY2FtbF9lcGhlX2dldF9rZXlfY29weVwiXG4gIGxldCBnZXRfa2V5X2NvcHkgZSBvID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLmdldF9rZXlfY29weVwiO1xuICAgIGdldF9rZXlfY29weSBlIG9cblxuICBleHRlcm5hbCBzZXRfa2V5OiB0IC0+IGludCAtPiBvYmpfdCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfc2V0X2tleVwiXG4gIGxldCBzZXRfa2V5IGUgbyB4ID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLnNldF9rZXlcIjtcbiAgICBzZXRfa2V5IGUgbyB4XG5cbiAgZXh0ZXJuYWwgdW5zZXRfa2V5OiB0IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfdW5zZXRfa2V5XCJcbiAgbGV0IHVuc2V0X2tleSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24udW5zZXRfa2V5XCI7XG4gICAgdW5zZXRfa2V5IGUgb1xuXG4gIGV4dGVybmFsIGNoZWNrX2tleTogdCAtPiBpbnQgLT4gYm9vbCA9IFwiY2FtbF9lcGhlX2NoZWNrX2tleVwiXG4gIGxldCBjaGVja19rZXkgZSBvID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLmNoZWNrX2tleVwiO1xuICAgIGNoZWNrX2tleSBlIG9cblxuICBleHRlcm5hbCBibGl0X2tleSA6IHQgLT4gaW50IC0+IHQgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgPSBcImNhbWxfZXBoZV9ibGl0X2tleVwiXG5cbiAgbGV0IGJsaXRfa2V5IGUxIG8xIGUyIG8yIGwgPVxuICAgIGlmIGwgPCAwIHx8IG8xIDwgMCB8fCBvMSA+IGxlbmd0aCBlMSAtIGxcbiAgICAgICB8fCBvMiA8IDAgfHwgbzIgPiBsZW5ndGggZTIgLSBsXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIk9iai5FcGhlbWVyb24uYmxpdF9rZXlcIlxuICAgIGVsc2UgaWYgbCA8PiAwIHRoZW4gYmxpdF9rZXkgZTEgbzEgZTIgbzIgbFxuXG4gIGV4dGVybmFsIGdldF9kYXRhOiB0IC0+IG9ial90IG9wdGlvbiA9IFwiY2FtbF9lcGhlX2dldF9kYXRhXCJcbiAgZXh0ZXJuYWwgZ2V0X2RhdGFfY29weTogdCAtPiBvYmpfdCBvcHRpb24gPSBcImNhbWxfZXBoZV9nZXRfZGF0YV9jb3B5XCJcbiAgZXh0ZXJuYWwgc2V0X2RhdGE6IHQgLT4gb2JqX3QgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3NldF9kYXRhXCJcbiAgZXh0ZXJuYWwgdW5zZXRfZGF0YTogdCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfdW5zZXRfZGF0YVwiXG4gIGV4dGVybmFsIGNoZWNrX2RhdGE6IHQgLT4gYm9vbCA9IFwiY2FtbF9lcGhlX2NoZWNrX2RhdGFcIlxuICBleHRlcm5hbCBibGl0X2RhdGEgOiB0IC0+IHQgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX2JsaXRfZGF0YVwiXG5cbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBJbnRlcm5hbHMgb2YgZm9yY2luZyBsYXp5IHZhbHVlcy4gKilcblxudHlwZSAnYSB0ID0gJ2EgbGF6eV90XG5cbmV4Y2VwdGlvbiBVbmRlZmluZWRcblxubGV0IHJhaXNlX3VuZGVmaW5lZCA9IE9iai5yZXByIChmdW4gKCkgLT4gcmFpc2UgVW5kZWZpbmVkKVxuXG5leHRlcm5hbCBtYWtlX2ZvcndhcmQgOiBPYmoudCAtPiBPYmoudCAtPiB1bml0ID0gXCJjYW1sX29ial9tYWtlX2ZvcndhcmRcIlxuXG4oKiBBc3N1bWUgW2Jsa10gaXMgYSBibG9jayB3aXRoIHRhZyBsYXp5ICopXG5sZXQgZm9yY2VfbGF6eV9ibG9jayAoYmxrIDogJ2FyZyBsYXp5X3QpID1cbiAgbGV0IGNsb3N1cmUgPSAoT2JqLm9iaiAoT2JqLmZpZWxkIChPYmoucmVwciBibGspIDApIDogdW5pdCAtPiAnYXJnKSBpblxuICBPYmouc2V0X2ZpZWxkIChPYmoucmVwciBibGspIDAgcmFpc2VfdW5kZWZpbmVkO1xuICB0cnlcbiAgICBsZXQgcmVzdWx0ID0gY2xvc3VyZSAoKSBpblxuICAgIG1ha2VfZm9yd2FyZCAoT2JqLnJlcHIgYmxrKSAoT2JqLnJlcHIgcmVzdWx0KTtcbiAgICByZXN1bHRcbiAgd2l0aCBlIC0+XG4gICAgT2JqLnNldF9maWVsZCAoT2JqLnJlcHIgYmxrKSAwIChPYmoucmVwciAoZnVuICgpIC0+IHJhaXNlIGUpKTtcbiAgICByYWlzZSBlXG5cblxuKCogQXNzdW1lIFtibGtdIGlzIGEgYmxvY2sgd2l0aCB0YWcgbGF6eSAqKVxubGV0IGZvcmNlX3ZhbF9sYXp5X2Jsb2NrIChibGsgOiAnYXJnIGxhenlfdCkgPVxuICBsZXQgY2xvc3VyZSA9IChPYmoub2JqIChPYmouZmllbGQgKE9iai5yZXByIGJsaykgMCkgOiB1bml0IC0+ICdhcmcpIGluXG4gIE9iai5zZXRfZmllbGQgKE9iai5yZXByIGJsaykgMCByYWlzZV91bmRlZmluZWQ7XG4gIGxldCByZXN1bHQgPSBjbG9zdXJlICgpIGluXG4gIG1ha2VfZm9yd2FyZCAoT2JqLnJlcHIgYmxrKSAoT2JqLnJlcHIgcmVzdWx0KTtcbiAgcmVzdWx0XG5cblxuKCogW2ZvcmNlXSBpcyBub3QgdXNlZCwgc2luY2UgW0xhenkuZm9yY2VdIGlzIGRlY2xhcmVkIGFzIGEgcHJpbWl0aXZlXG4gICB3aG9zZSBjb2RlIGlubGluZXMgdGhlIHRhZyB0ZXN0cyBvZiBpdHMgYXJndW1lbnQsIGV4Y2VwdCB3aGVuIGFmbFxuICAgaW5zdHJ1bWVudGF0aW9uIGlzIHR1cm5lZCBvbi4gKilcblxubGV0IGZvcmNlIChsenYgOiAnYXJnIGxhenlfdCkgPVxuICAoKiBVc2luZyBbU3lzLm9wYXF1ZV9pZGVudGl0eV0gcHJldmVudHMgdHdvIHBvdGVudGlhbCBwcm9ibGVtczpcbiAgICAgLSBJZiB0aGUgdmFsdWUgaXMga25vd24gdG8gaGF2ZSBGb3J3YXJkX3RhZywgdGhlbiBpdHMgdGFnIGNvdWxkIGhhdmVcbiAgICAgICBjaGFuZ2VkIGR1cmluZyBHQywgc28gdGhhdCBpbmZvcm1hdGlvbiBtdXN0IGJlIGZvcmdvdHRlbiAoc2VlIEdQUiM3MTNcbiAgICAgICBhbmQgaXNzdWUgIzczMDEpXG4gICAgIC0gSWYgdGhlIHZhbHVlIGlzIGtub3duIHRvIGJlIGltbXV0YWJsZSwgdGhlbiBpZiB0aGUgY29tcGlsZXJcbiAgICAgICBjYW5ub3QgcHJvdmUgdGhhdCB0aGUgbGFzdCBicmFuY2ggaXMgbm90IHRha2VuIGl0IHdpbGwgaXNzdWUgYVxuICAgICAgIHdhcm5pbmcgNTkgKG1vZGlmaWNhdGlvbiBvZiBhbiBpbW11dGFibGUgdmFsdWUpICopXG4gIGxldCBsenYgPSBTeXMub3BhcXVlX2lkZW50aXR5IGx6diBpblxuICBsZXQgeCA9IE9iai5yZXByIGx6diBpblxuICBsZXQgdCA9IE9iai50YWcgeCBpblxuICBpZiB0ID0gT2JqLmZvcndhcmRfdGFnIHRoZW4gKE9iai5vYmogKE9iai5maWVsZCB4IDApIDogJ2FyZykgZWxzZVxuICBpZiB0IDw+IE9iai5sYXp5X3RhZyB0aGVuIChPYmoub2JqIHggOiAnYXJnKVxuICBlbHNlIGZvcmNlX2xhenlfYmxvY2sgbHp2XG5cblxubGV0IGZvcmNlX3ZhbCAobHp2IDogJ2FyZyBsYXp5X3QpID1cbiAgbGV0IHggPSBPYmoucmVwciBsenYgaW5cbiAgbGV0IHQgPSBPYmoudGFnIHggaW5cbiAgaWYgdCA9IE9iai5mb3J3YXJkX3RhZyB0aGVuIChPYmoub2JqIChPYmouZmllbGQgeCAwKSA6ICdhcmcpIGVsc2VcbiAgaWYgdCA8PiBPYmoubGF6eV90YWcgdGhlbiAoT2JqLm9iaiB4IDogJ2FyZylcbiAgZWxzZSBmb3JjZV92YWxfbGF6eV9ibG9jayBsenZcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtMYXp5XTogZGVmZXJyZWQgY29tcHV0YXRpb25zICopXG5cblxuKCpcbiAgIFdBUk5JTkc6IHNvbWUgcHVycGxlIG1hZ2ljIGlzIGdvaW5nIG9uIGhlcmUuICBEbyBub3QgdGFrZSB0aGlzIGZpbGVcbiAgIGFzIGFuIGV4YW1wbGUgb2YgaG93IHRvIHByb2dyYW0gaW4gT0NhbWwuXG4qKVxuXG5cbigqIFdlIG1ha2UgdXNlIG9mIHR3byBzcGVjaWFsIHRhZ3MgcHJvdmlkZWQgYnkgdGhlIHJ1bnRpbWU6XG4gICBbbGF6eV90YWddIGFuZCBbZm9yd2FyZF90YWddLlxuXG4gICBBIHZhbHVlIG9mIHR5cGUgWydhIExhenkudF0gY2FuIGJlIG9uZSBvZiB0aHJlZSB0aGluZ3M6XG4gICAxLiBBIGJsb2NrIG9mIHNpemUgMSB3aXRoIHRhZyBbbGF6eV90YWddLiAgSXRzIGZpZWxkIGlzIGEgY2xvc3VyZSBvZlxuICAgICAgdHlwZSBbdW5pdCAtPiAnYV0gdGhhdCBjb21wdXRlcyB0aGUgdmFsdWUuXG4gICAyLiBBIGJsb2NrIG9mIHNpemUgMSB3aXRoIHRhZyBbZm9yd2FyZF90YWddLiAgSXRzIGZpZWxkIGlzIHRoZSB2YWx1ZVxuICAgICAgb2YgdHlwZSBbJ2FdIHRoYXQgd2FzIGNvbXB1dGVkLlxuICAgMy4gQW55dGhpbmcgZWxzZSBleGNlcHQgYSBmbG9hdC4gIFRoaXMgaGFzIHR5cGUgWydhXSBhbmQgaXMgdGhlIHZhbHVlXG4gICAgICB0aGF0IHdhcyBjb21wdXRlZC5cbiAgIEV4Y2VwdGlvbnMgYXJlIHN0b3JlZCBpbiBmb3JtYXQgKDEpLlxuICAgVGhlIEdDIHdpbGwgbWFnaWNhbGx5IGNoYW5nZSB0aGluZ3MgZnJvbSAoMikgdG8gKDMpIGFjY29yZGluZyB0byBpdHNcbiAgIGZhbmN5LlxuXG4gICBJZiBPQ2FtbCB3YXMgY29uZmlndXJlZCB3aXRoIHRoZSAtZmxhdC1mbG9hdC1hcnJheSBvcHRpb24gKHdoaWNoIGlzXG4gICBjdXJyZW50bHkgdGhlIGRlZmF1bHQpLCB0aGUgZm9sbG93aW5nIGlzIGFsc28gdHJ1ZTpcbiAgIFdlIGNhbm5vdCB1c2UgcmVwcmVzZW50YXRpb24gKDMpIGZvciBhIFtmbG9hdCBMYXp5LnRdIGJlY2F1c2VcbiAgIFtjYW1sX21ha2VfYXJyYXldIGFzc3VtZXMgdGhhdCBvbmx5IGEgW2Zsb2F0XSB2YWx1ZSBjYW4gaGF2ZSB0YWdcbiAgIFtEb3VibGVfdGFnXS5cblxuICAgV2UgaGF2ZSB0byB1c2UgdGhlIGJ1aWx0LWluIHR5cGUgY29uc3RydWN0b3IgW2xhenlfdF0gdG9cbiAgIGxldCB0aGUgY29tcGlsZXIgaW1wbGVtZW50IHRoZSBzcGVjaWFsIHR5cGluZyBhbmQgY29tcGlsYXRpb25cbiAgIHJ1bGVzIGZvciB0aGUgW2xhenldIGtleXdvcmQuXG4qKVxuXG50eXBlICdhIHQgPSAnYSBDYW1saW50ZXJuYWxMYXp5LnRcblxuZXhjZXB0aW9uIFVuZGVmaW5lZCA9IENhbWxpbnRlcm5hbExhenkuVW5kZWZpbmVkXG5cbmV4dGVybmFsIG1ha2VfZm9yd2FyZCA6ICdhIC0+ICdhIGxhenlfdCA9IFwiY2FtbF9sYXp5X21ha2VfZm9yd2FyZFwiXG5cbmV4dGVybmFsIGZvcmNlIDogJ2EgdCAtPiAnYSA9IFwiJWxhenlfZm9yY2VcIlxuXG5cbmxldCBmb3JjZV92YWwgPSBDYW1saW50ZXJuYWxMYXp5LmZvcmNlX3ZhbFxuXG5sZXQgZnJvbV9mdW4gKGYgOiB1bml0IC0+ICdhcmcpID1cbiAgbGV0IHggPSBPYmoubmV3X2Jsb2NrIE9iai5sYXp5X3RhZyAxIGluXG4gIE9iai5zZXRfZmllbGQgeCAwIChPYmoucmVwciBmKTtcbiAgKE9iai5vYmogeCA6ICdhcmcgdClcblxubGV0IGZyb21fdmFsICh2IDogJ2FyZykgPVxuICBsZXQgdCA9IE9iai50YWcgKE9iai5yZXByIHYpIGluXG4gIGlmIHQgPSBPYmouZm9yd2FyZF90YWcgfHwgdCA9IE9iai5sYXp5X3RhZyB8fCB0ID0gT2JqLmRvdWJsZV90YWcgdGhlbiBiZWdpblxuICAgIG1ha2VfZm9yd2FyZCB2XG4gIGVuZCBlbHNlIGJlZ2luXG4gICAgKE9iai5tYWdpYyB2IDogJ2FyZyB0KVxuICBlbmRcblxuXG5sZXQgaXNfdmFsIChsIDogJ2FyZyB0KSA9IE9iai50YWcgKE9iai5yZXByIGwpIDw+IE9iai5sYXp5X3RhZ1xuXG5sZXQgbGF6eV9mcm9tX2Z1biA9IGZyb21fZnVuXG5cbmxldCBsYXp5X2Zyb21fdmFsID0gZnJvbV92YWxcblxubGV0IGxhenlfaXNfdmFsID0gaXNfdmFsXG5cblxubGV0IG1hcCBmIHggPVxuICBsYXp5IChmIChmb3JjZSB4KSlcblxubGV0IG1hcF92YWwgZiB4ID1cbiAgaWYgaXNfdmFsIHhcbiAgdGhlbiBsYXp5X2Zyb21fdmFsIChmIChmb3JjZSB4KSlcbiAgZWxzZSBsYXp5IChmIChmb3JjZSB4KSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICBTaW1vbiBDcnVhbmVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtTZXFdOiBmdW5jdGlvbmFsIGl0ZXJhdG9ycyAqKVxuXG50eXBlICsnYSBub2RlID1cbiAgfCBOaWxcbiAgfCBDb25zIG9mICdhICogJ2EgdFxuXG5hbmQgJ2EgdCA9IHVuaXQgLT4gJ2Egbm9kZVxuXG5sZXQgZW1wdHkgKCkgPSBOaWxcblxubGV0IHJldHVybiB4ICgpID0gQ29ucyAoeCwgZW1wdHkpXG5cbmxldCBjb25zIHggbmV4dCAoKSA9IENvbnMgKHgsIG5leHQpXG5cbmxldCByZWMgYXBwZW5kIHNlcTEgc2VxMiAoKSA9XG4gIG1hdGNoIHNlcTEoKSB3aXRoXG4gIHwgTmlsIC0+IHNlcTIoKVxuICB8IENvbnMgKHgsIG5leHQpIC0+IENvbnMgKHgsIGFwcGVuZCBuZXh0IHNlcTIpXG5cbmxldCByZWMgbWFwIGYgc2VxICgpID0gbWF0Y2ggc2VxKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPiBDb25zIChmIHgsIG1hcCBmIG5leHQpXG5cbmxldCByZWMgZmlsdGVyX21hcCBmIHNlcSAoKSA9IG1hdGNoIHNlcSgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfbWFwIGYgbmV4dCAoKVxuICAgICAgICB8IFNvbWUgeSAtPiBDb25zICh5LCBmaWx0ZXJfbWFwIGYgbmV4dClcblxubGV0IHJlYyBmaWx0ZXIgZiBzZXEgKCkgPSBtYXRjaCBzZXEoKSB3aXRoXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBpZiBmIHhcbiAgICAgIHRoZW4gQ29ucyAoeCwgZmlsdGVyIGYgbmV4dClcbiAgICAgIGVsc2UgZmlsdGVyIGYgbmV4dCAoKVxuXG5sZXQgcmVjIGNvbmNhdCBzZXEgKCkgPSBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICBhcHBlbmQgeCAoY29uY2F0IG5leHQpICgpXG5cbmxldCByZWMgZmxhdF9tYXAgZiBzZXEgKCkgPSBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgIGFwcGVuZCAoZiB4KSAoZmxhdF9tYXAgZiBuZXh0KSAoKVxuXG5sZXQgY29uY2F0X21hcCA9IGZsYXRfbWFwXG5cbmxldCByZWMgZm9sZF9sZWZ0IGYgYWNjIHNlcSA9XG4gIG1hdGNoIHNlcSAoKSB3aXRoXG4gICAgfCBOaWwgLT4gYWNjXG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBsZXQgYWNjID0gZiBhY2MgeCBpblxuICAgICAgICBmb2xkX2xlZnQgZiBhY2MgbmV4dFxuXG5sZXQgcmVjIGl0ZXIgZiBzZXEgPVxuICBtYXRjaCBzZXEgKCkgd2l0aFxuICAgIHwgTmlsIC0+ICgpXG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBmIHg7XG4gICAgICAgIGl0ZXIgZiBuZXh0XG5cbmxldCByZWMgdW5mb2xkIGYgdSAoKSA9XG4gIG1hdGNoIGYgdSB3aXRoXG4gIHwgTm9uZSAtPiBOaWxcbiAgfCBTb21lICh4LCB1JykgLT4gQ29ucyAoeCwgdW5mb2xkIGYgdScpXG5cbmxldCBpc19lbXB0eSB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgdHJ1ZVxuICB8IENvbnMgKF8sIF8pIC0+XG4gICAgICBmYWxzZVxuXG5sZXQgdW5jb25zIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBTb21lICh4LCB4cylcbiAgfCBOaWwgLT5cbiAgICAgIE5vbmVcblxuXG5cbmxldCByZWMgbGVuZ3RoX2F1eCBhY2N1IHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBhY2N1XG4gIHwgQ29ucyAoXywgeHMpIC0+XG4gICAgICBsZW5ndGhfYXV4IChhY2N1ICsgMSkgeHNcblxubGV0W0BpbmxpbmVdIGxlbmd0aCB4cyA9XG4gIGxlbmd0aF9hdXggMCB4c1xuXG5sZXQgcmVjIGl0ZXJpX2F1eCBmIGkgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgICgpXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBmIGkgeDtcbiAgICAgIGl0ZXJpX2F1eCBmIChpKzEpIHhzXG5cbmxldFtAaW5saW5lXSBpdGVyaSBmIHhzID1cbiAgaXRlcmlfYXV4IGYgMCB4c1xuXG5sZXQgcmVjIGZvbGRfbGVmdGlfYXV4IGYgYWNjdSBpIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBhY2N1XG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBsZXQgYWNjdSA9IGYgYWNjdSBpIHggaW5cbiAgICAgIGZvbGRfbGVmdGlfYXV4IGYgYWNjdSAoaSsxKSB4c1xuXG5sZXRbQGlubGluZV0gZm9sZF9sZWZ0aSBmIGFjY3UgeHMgPVxuICBmb2xkX2xlZnRpX2F1eCBmIGFjY3UgMCB4c1xuXG5sZXQgcmVjIGZvcl9hbGwgcCB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgdHJ1ZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgcCB4ICYmIGZvcl9hbGwgcCB4c1xuXG5sZXQgcmVjIGV4aXN0cyBwIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBmYWxzZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgcCB4IHx8IGV4aXN0cyBwIHhzXG5cbmxldCByZWMgZmluZCBwIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOb25lXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBpZiBwIHggdGhlbiBTb21lIHggZWxzZSBmaW5kIHAgeHNcblxubGV0IHJlYyBmaW5kX21hcCBmIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOb25lXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgZmluZF9tYXAgZiB4c1xuICAgICAgfCBTb21lIF8gYXMgcmVzdWx0IC0+XG4gICAgICAgICAgcmVzdWx0XG5cbigqIFtpdGVyMl0sIFtmb2xkX2xlZnQyXSwgW2Zvcl9hbGwyXSwgW2V4aXN0czJdLCBbbWFwMl0sIFt6aXBdIHdvcmsgYWxzbyBpblxuICAgdGhlIGNhc2Ugd2hlcmUgdGhlIHR3byBzZXF1ZW5jZXMgaGF2ZSBkaWZmZXJlbnQgbGVuZ3Rocy4gVGhleSBzdG9wIGFzIHNvb25cbiAgIGFzIG9uZSBzZXF1ZW5jZSBpcyBleGhhdXN0ZWQuIFRoZWlyIGJlaGF2aW9yIGlzIHNsaWdodGx5IGFzeW1tZXRyaWM6IHdoZW5cbiAgIFt4c10gaXMgZW1wdHksIHRoZXkgZG8gbm90IGZvcmNlIFt5c107IGhvd2V2ZXIsIHdoZW4gW3lzXSBpcyBlbXB0eSwgW3hzXSBpc1xuICAgZm9yY2VkLCBldmVuIHRob3VnaCB0aGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvbiBhcHBsaWNhdGlvbiBbeHMoKV0gdHVybnMgb3V0XG4gICB0byBiZSB1c2VsZXNzLiAqKVxuXG5sZXQgcmVjIGl0ZXIyIGYgeHMgeXMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgICgpXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCB5cygpIHdpdGhcbiAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgKClcbiAgICAgIHwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICAgICAgZiB4IHk7XG4gICAgICAgICAgaXRlcjIgZiB4cyB5c1xuXG5sZXQgcmVjIGZvbGRfbGVmdDIgZiBhY2N1IHhzIHlzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBhY2N1XG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCB5cygpIHdpdGhcbiAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgYWNjdVxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBsZXQgYWNjdSA9IGYgYWNjdSB4IHkgaW5cbiAgICAgICAgICBmb2xkX2xlZnQyIGYgYWNjdSB4cyB5c1xuXG5sZXQgcmVjIGZvcl9hbGwyIGYgeHMgeXMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIHRydWVcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIHlzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICB0cnVlXG4gICAgICB8IENvbnMgKHksIHlzKSAtPlxuICAgICAgICAgIGYgeCB5ICYmIGZvcl9hbGwyIGYgeHMgeXNcblxubGV0IHJlYyBleGlzdHMyIGYgeHMgeXMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIGZhbHNlXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCB5cygpIHdpdGhcbiAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIHwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICAgICAgZiB4IHkgfHwgZXhpc3RzMiBmIHhzIHlzXG5cbmxldCByZWMgZXF1YWwgZXEgeHMgeXMgPVxuICBtYXRjaCB4cygpLCB5cygpIHdpdGhcbiAgfCBOaWwsIE5pbCAtPlxuICAgICAgdHJ1ZVxuICB8IENvbnMgKHgsIHhzKSwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICBlcSB4IHkgJiYgZXF1YWwgZXEgeHMgeXNcbiAgfCBOaWwsIENvbnMgKF8sIF8pXG4gIHwgQ29ucyAoXywgXyksIE5pbCAtPlxuICAgICAgZmFsc2VcblxubGV0IHJlYyBjb21wYXJlIGNtcCB4cyB5cyA9XG4gIG1hdGNoIHhzKCksIHlzKCkgd2l0aFxuICB8IE5pbCwgTmlsIC0+XG4gICAgICAwXG4gIHwgQ29ucyAoeCwgeHMpLCBDb25zICh5LCB5cykgLT5cbiAgICAgIGxldCBjID0gY21wIHggeSBpblxuICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlIGNvbXBhcmUgY21wIHhzIHlzXG4gIHwgTmlsLCBDb25zIChfLCBfKSAtPlxuICAgICAgLTFcbiAgfCBDb25zIChfLCBfKSwgTmlsIC0+XG4gICAgICArMVxuXG5cblxuKCogW2luaXRfYXV4IGYgaSBqXSBpcyB0aGUgc2VxdWVuY2UgW2YgaSwgLi4uLCBmIChqLTEpXS4gKilcblxubGV0IHJlYyBpbml0X2F1eCBmIGkgaiAoKSA9XG4gIGlmIGkgPCBqIHRoZW4gYmVnaW5cbiAgICBDb25zIChmIGksIGluaXRfYXV4IGYgKGkgKyAxKSBqKVxuICBlbmRcbiAgZWxzZVxuICAgIE5pbFxuXG5sZXQgaW5pdCBuIGYgPVxuICBpZiBuIDwgMCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTZXEuaW5pdFwiXG4gIGVsc2VcbiAgICBpbml0X2F1eCBmIDAgblxuXG5sZXQgcmVjIHJlcGVhdCB4ICgpID1cbiAgQ29ucyAoeCwgcmVwZWF0IHgpXG5cbmxldCByZWMgZm9yZXZlciBmICgpID1cbiAgQ29ucyAoZigpLCBmb3JldmVyIGYpXG5cbigqIFRoaXMgcHJlbGltaW5hcnkgZGVmaW5pdGlvbiBvZiBbY3ljbGVdIHJlcXVpcmVzIHRoZSBzZXF1ZW5jZSBbeHNdXG4gICB0byBiZSBub25lbXB0eS4gQXBwbHlpbmcgaXQgdG8gYW4gZW1wdHkgc2VxdWVuY2Ugd291bGQgcHJvZHVjZSBhXG4gICBzZXF1ZW5jZSB0aGF0IGRpdmVyZ2VzIHdoZW4gaXQgaXMgZm9yY2VkLiAqKVxuXG5sZXQgcmVjIGN5Y2xlX25vbmVtcHR5IHhzICgpID1cbiAgYXBwZW5kIHhzIChjeWNsZV9ub25lbXB0eSB4cykgKClcblxuKCogW2N5Y2xlIHhzXSBjaGVja3Mgd2hldGhlciBbeHNdIGlzIGVtcHR5IGFuZCwgaWYgc28sIHJldHVybnMgYW4gZW1wdHlcbiAgIHNlcXVlbmNlLiBPdGhlcndpc2UsIFtjeWNsZSB4c10gcHJvZHVjZXMgb25lIGNvcHkgb2YgW3hzXSBmb2xsb3dlZFxuICAgd2l0aCB0aGUgaW5maW5pdGUgc2VxdWVuY2UgW2N5Y2xlX25vbmVtcHR5IHhzXS4gVGh1cywgdGhlIG5vbmVtcHRpbmVzc1xuICAgY2hlY2sgaXMgcGVyZm9ybWVkIGp1c3Qgb25jZS4gKilcblxubGV0IGN5Y2xlIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cycpIC0+XG4gICAgICBDb25zICh4LCBhcHBlbmQgeHMnIChjeWNsZV9ub25lbXB0eSB4cykpXG5cbigqIFtpdGVyYXRlMSBmIHhdIGlzIHRoZSBzZXF1ZW5jZSBbZiB4LCBmIChmIHgpLCAuLi5dLlxuICAgSXQgaXMgZXF1aXZhbGVudCB0byBbdGFpbCAoaXRlcmF0ZSBmIHgpXS5cbiAgIFtpdGVyYXRlMV0gaXMgdXNlZCBhcyBhIGJ1aWxkaW5nIGJsb2NrIGluIHRoZSBkZWZpbml0aW9uIG9mIFtpdGVyYXRlXS4gKilcblxubGV0IHJlYyBpdGVyYXRlMSBmIHggKCkgPVxuICBsZXQgeSA9IGYgeCBpblxuICBDb25zICh5LCBpdGVyYXRlMSBmIHkpXG5cbigqIFtpdGVyYXRlIGYgeF0gaXMgdGhlIHNlcXVlbmNlIFt4LCBmIHgsIC4uLl0uICopXG5cbigqIFRoZSByZWFzb24gd2h5IHdlIGdpdmUgdGhpcyBzbGlnaHRseSBpbmRpcmVjdCBkZWZpbml0aW9uIG9mIFtpdGVyYXRlXSxcbiAgIGFzIG9wcG9zZWQgdG8gdGhlIG1vcmUgbmFpdmUgZGVmaW5pdGlvbiB0aGF0IG1heSBjb21lIHRvIG1pbmQsIGlzIHRoYXRcbiAgIHdlIGFyZSBjYXJlZnVsIHRvIGF2b2lkIGV2YWx1YXRpbmcgW2YgeF0gdW50aWwgdGhpcyBmdW5jdGlvbiBjYWxsIGlzXG4gICBhY3R1YWxseSBuZWNlc3NhcnkuIFRoZSBuYWl2ZSBkZWZpbml0aW9uIChub3Qgc2hvd24gaGVyZSkgY29tcHV0ZXMgdGhlXG4gICBzZWNvbmQgYXJndW1lbnQgb2YgdGhlIHNlcXVlbmNlLCBbZiB4XSwgd2hlbiB0aGUgZmlyc3QgYXJndW1lbnQgaXNcbiAgIHJlcXVlc3RlZCBieSB0aGUgdXNlci4gKilcblxubGV0IGl0ZXJhdGUgZiB4ID1cbiAgY29ucyB4IChpdGVyYXRlMSBmIHgpXG5cblxuXG5sZXQgcmVjIG1hcGlfYXV4IGYgaSB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBDb25zIChmIGkgeCwgbWFwaV9hdXggZiAoaSsxKSB4cylcblxubGV0W0BpbmxpbmVdIG1hcGkgZiB4cyA9XG4gIG1hcGlfYXV4IGYgMCB4c1xuXG4oKiBbdGFpbF9zY2FuIGYgcyB4c10gaXMgZXF1aXZhbGVudCB0byBbdGFpbCAoc2NhbiBmIHMgeHMpXS5cbiAgIFt0YWlsX3NjYW5dIGlzIHVzZWQgYXMgYSBidWlsZGluZyBibG9jayBpbiB0aGUgZGVmaW5pdGlvbiBvZiBbc2Nhbl0uICopXG5cbigqIFRoaXMgc2xpZ2h0bHkgaW5kaXJlY3QgZGVmaW5pdGlvbiBvZiBbc2Nhbl0gaXMgbWVhbnQgdG8gYXZvaWQgY29tcHV0aW5nXG4gICBlbGVtZW50cyB0b28gZWFybHk7IHNlZSB0aGUgYWJvdmUgY29tbWVudCBhYm91dCBbaXRlcmF0ZTFdIGFuZCBbaXRlcmF0ZV0uICopXG5cbmxldCByZWMgdGFpbF9zY2FuIGYgcyB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBsZXQgcyA9IGYgcyB4IGluXG4gICAgICBDb25zIChzLCB0YWlsX3NjYW4gZiBzIHhzKVxuXG5sZXQgc2NhbiBmIHMgeHMgPVxuICBjb25zIHMgKHRhaWxfc2NhbiBmIHMgeHMpXG5cbigqIFt0YWtlXSBpcyBkZWZpbmVkIGluIHN1Y2ggYSB3YXkgdGhhdCBbdGFrZSAwIHhzXSByZXR1cm5zIFtlbXB0eV1cbiAgIGltbWVkaWF0ZWx5LCB3aXRob3V0IGFsbG9jYXRpbmcgYW55IG1lbW9yeS4gKilcblxubGV0IHJlYyB0YWtlX2F1eCBuIHhzID1cbiAgaWYgbiA9IDAgdGhlblxuICAgIGVtcHR5XG4gIGVsc2VcbiAgICBmdW4gKCkgLT5cbiAgICAgIG1hdGNoIHhzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICBOaWxcbiAgICAgIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICAgICAgQ29ucyAoeCwgdGFrZV9hdXggKG4tMSkgeHMpXG5cbmxldCB0YWtlIG4geHMgPVxuICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiU2VxLnRha2VcIjtcbiAgdGFrZV9hdXggbiB4c1xuXG4oKiBbZm9yY2VfZHJvcCBuIHhzXSBpcyBlcXVpdmFsZW50IHRvIFtkcm9wIG4geHMgKCldLlxuICAgW2ZvcmNlX2Ryb3AgbiB4c10gcmVxdWlyZXMgW24gPiAwXS5cbiAgIFtmb3JjZV9kcm9wXSBpcyB1c2VkIGFzIGEgYnVpbGRpbmcgYmxvY2sgaW4gdGhlIGRlZmluaXRpb24gb2YgW2Ryb3BdLiAqKVxuXG5sZXQgcmVjIGZvcmNlX2Ryb3AgbiB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoXywgeHMpIC0+XG4gICAgICBsZXQgbiA9IG4gLSAxIGluXG4gICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgIHhzKClcbiAgICAgIGVsc2VcbiAgICAgICAgZm9yY2VfZHJvcCBuIHhzXG5cbigqIFtkcm9wXSBpcyBkZWZpbmVkIGluIHN1Y2ggYSB3YXkgdGhhdCBbZHJvcCAwIHhzXSByZXR1cm5zIFt4c10gaW1tZWRpYXRlbHksXG4gICB3aXRob3V0IGFsbG9jYXRpbmcgYW55IG1lbW9yeS4gKilcblxubGV0IGRyb3AgbiB4cyA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJTZXEuZHJvcFwiXG4gIGVsc2UgaWYgbiA9IDAgdGhlblxuICAgIHhzXG4gIGVsc2VcbiAgICBmdW4gKCkgLT5cbiAgICAgIGZvcmNlX2Ryb3AgbiB4c1xuXG5sZXQgcmVjIHRha2Vfd2hpbGUgcCB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBpZiBwIHggdGhlbiBDb25zICh4LCB0YWtlX3doaWxlIHAgeHMpIGVsc2UgTmlsXG5cbmxldCByZWMgZHJvcF93aGlsZSBwIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgYXMgbm9kZSAtPlxuICAgICAgaWYgcCB4IHRoZW4gZHJvcF93aGlsZSBwIHhzICgpIGVsc2Ugbm9kZVxuXG5sZXQgcmVjIGdyb3VwIGVxIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIENvbnMgKGNvbnMgeCAodGFrZV93aGlsZSAoZXEgeCkgeHMpLCBncm91cCBlcSAoZHJvcF93aGlsZSAoZXEgeCkgeHMpKVxuXG5leGNlcHRpb24gRm9yY2VkX3R3aWNlXG5cbm1vZHVsZSBTdXNwZW5zaW9uID0gc3RydWN0XG5cbiAgdHlwZSAnYSBzdXNwZW5zaW9uID1cbiAgICB1bml0IC0+ICdhXG5cbiAgKCogQ29udmVyc2lvbnMuICopXG5cbiAgbGV0IHRvX2xhenkgOiAnYSBzdXNwZW5zaW9uIC0+ICdhIExhenkudCA9XG4gICAgTGF6eS5mcm9tX2Z1blxuICAgICgqIGZ1biBzIC0+IGxhenkgKHMoKSkgKilcblxuICBsZXQgZnJvbV9sYXp5IChzIDogJ2EgTGF6eS50KSA6ICdhIHN1c3BlbnNpb24gPVxuICAgIGZ1biAoKSAtPiBMYXp5LmZvcmNlIHNcblxuICAoKiBbbWVtb2l6ZV0gdHVybnMgYW4gYXJiaXRyYXJ5IHN1c3BlbnNpb24gaW50byBhIHBlcnNpc3RlbnQgc3VzcGVuc2lvbi4gKilcblxuICBsZXQgbWVtb2l6ZSAocyA6ICdhIHN1c3BlbnNpb24pIDogJ2Egc3VzcGVuc2lvbiA9XG4gICAgZnJvbV9sYXp5ICh0b19sYXp5IHMpXG5cbiAgKCogW2ZhaWx1cmVdIGlzIGEgc3VzcGVuc2lvbiB0aGF0IGZhaWxzIHdoZW4gZm9yY2VkLiAqKVxuXG4gIGxldCBmYWlsdXJlIDogXyBzdXNwZW5zaW9uID1cbiAgICBmdW4gKCkgLT5cbiAgICAgICgqIEEgc3VzcGVuc2lvbiBjcmVhdGVkIGJ5IFtvbmNlXSBoYXMgYmVlbiBmb3JjZWQgdHdpY2UuICopXG4gICAgICByYWlzZSBGb3JjZWRfdHdpY2VcblxuICAoKiBJZiBbZl0gaXMgYSBzdXNwZW5zaW9uLCB0aGVuIFtvbmNlIGZdIGlzIGEgc3VzcGVuc2lvbiB0aGF0IGNhbiBiZSBmb3JjZWRcbiAgICAgYXQgbW9zdCBvbmNlLiBJZiBpdCBpcyBmb3JjZWQgbW9yZSB0aGFuIG9uY2UsIHRoZW4gW0ZvcmNlZF90d2ljZV0gaXNcbiAgICAgcmFpc2VkLiAqKVxuXG4gIGxldCBvbmNlIChmIDogJ2Egc3VzcGVuc2lvbikgOiAnYSBzdXNwZW5zaW9uID1cbiAgICBsZXQgYWN0aW9uID0gQ2FtbGludGVybmFsQXRvbWljLm1ha2UgZiBpblxuICAgIGZ1biAoKSAtPlxuICAgICAgKCogR2V0IHRoZSBmdW5jdGlvbiBjdXJyZW50bHkgc3RvcmVkIGluIFthY3Rpb25dLCBhbmQgd3JpdGUgdGhlXG4gICAgICAgICBmdW5jdGlvbiBbZmFpbHVyZV0gaW4gaXRzIHBsYWNlLCBzbyB0aGUgbmV4dCBhY2Nlc3Mgd2lsbCByZXN1bHRcbiAgICAgICAgIGluIGEgY2FsbCB0byBbZmFpbHVyZSgpXS4gKilcbiAgICAgIGxldCBmID0gQ2FtbGludGVybmFsQXRvbWljLmV4Y2hhbmdlIGFjdGlvbiBmYWlsdXJlIGluXG4gICAgICBmKClcblxuZW5kICgqIFN1c3BlbnNpb24gKilcblxubGV0IHJlYyBtZW1vaXplIHhzID1cbiAgU3VzcGVuc2lvbi5tZW1vaXplIChmdW4gKCkgLT5cbiAgICBtYXRjaCB4cygpIHdpdGhcbiAgICB8IE5pbCAtPlxuICAgICAgICBOaWxcbiAgICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgICBDb25zICh4LCBtZW1vaXplIHhzKVxuICApXG5cbmxldCByZWMgb25jZSB4cyA9XG4gIFN1c3BlbnNpb24ub25jZSAoZnVuICgpIC0+XG4gICAgbWF0Y2ggeHMoKSB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgICAgTmlsXG4gICAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgICAgQ29ucyAoeCwgb25jZSB4cylcbiAgKVxuXG5cbmxldCByZWMgemlwIHhzIHlzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIHlzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICBOaWxcbiAgICAgIHwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICAgICAgQ29ucyAoKHgsIHkpLCB6aXAgeHMgeXMpXG5cbmxldCByZWMgbWFwMiBmIHhzIHlzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIHlzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICBOaWxcbiAgICAgIHwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICAgICAgQ29ucyAoZiB4IHksIG1hcDIgZiB4cyB5cylcblxubGV0IHJlYyBpbnRlcmxlYXZlIHhzIHlzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICB5cygpXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBDb25zICh4LCBpbnRlcmxlYXZlIHlzIHhzKVxuXG4oKiBbc29ydGVkX21lcmdlMWwgY21wIHggeHMgeXNdIGlzIGVxdWl2YWxlbnQgdG9cbiAgICAgW3NvcnRlZF9tZXJnZSBjbXAgKGNvbnMgeCB4cykgeXNdLlxuXG4gICBbc29ydGVkX21lcmdlMXIgY21wIHhzIHkgeXNdIGlzIGVxdWl2YWxlbnQgdG9cbiAgICAgW3NvcnRlZF9tZXJnZSBjbXAgeHMgKGNvbnMgeSB5cyldLlxuXG4gICBbc29ydGVkX21lcmdlMSBjbXAgeCB4cyB5IHlzXSBpcyBlcXVpdmFsZW50IHRvXG4gICAgIFtzb3J0ZWRfbWVyZ2UgY21wIChjb25zIHggeHMpIChjb25zIHkgeXMpXS5cblxuICAgVGhlc2UgdGhyZWUgZnVuY3Rpb25zIGFyZSB1c2VkIGFzIGJ1aWxkaW5nIGJsb2NrcyBpbiB0aGUgZGVmaW5pdGlvblxuICAgb2YgW3NvcnRlZF9tZXJnZV0uICopXG5cbmxldCByZWMgc29ydGVkX21lcmdlMWwgY21wIHggeHMgeXMgKCkgPVxuICBtYXRjaCB5cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIENvbnMgKHgsIHhzKVxuICB8IENvbnMgKHksIHlzKSAtPlxuICAgICAgc29ydGVkX21lcmdlMSBjbXAgeCB4cyB5IHlzXG5cbmFuZCBzb3J0ZWRfbWVyZ2UxciBjbXAgeHMgeSB5cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgQ29ucyAoeSwgeXMpXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBzb3J0ZWRfbWVyZ2UxIGNtcCB4IHhzIHkgeXNcblxuYW5kIHNvcnRlZF9tZXJnZTEgY21wIHggeHMgeSB5cyA9XG4gIGlmIGNtcCB4IHkgPD0gMCB0aGVuXG4gICAgQ29ucyAoeCwgc29ydGVkX21lcmdlMXIgY21wIHhzIHkgeXMpXG4gIGVsc2VcbiAgICBDb25zICh5LCBzb3J0ZWRfbWVyZ2UxbCBjbXAgeCB4cyB5cylcblxubGV0IHNvcnRlZF9tZXJnZSBjbXAgeHMgeXMgKCkgPVxuICBtYXRjaCB4cygpLCB5cygpIHdpdGhcbiAgICB8IE5pbCwgTmlsIC0+XG4gICAgICAgIE5pbFxuICAgIHwgTmlsLCBjXG4gICAgfCBjLCBOaWwgLT5cbiAgICAgICAgY1xuICAgIHwgQ29ucyAoeCwgeHMpLCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgc29ydGVkX21lcmdlMSBjbXAgeCB4cyB5IHlzXG5cblxubGV0IHJlYyBtYXBfZnN0IHh5cyAoKSA9XG4gIG1hdGNoIHh5cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKCh4LCBfKSwgeHlzKSAtPlxuICAgICAgQ29ucyAoeCwgbWFwX2ZzdCB4eXMpXG5cbmxldCByZWMgbWFwX3NuZCB4eXMgKCkgPVxuICBtYXRjaCB4eXMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICgoXywgeSksIHh5cykgLT5cbiAgICAgIENvbnMgKHksIG1hcF9zbmQgeHlzKVxuXG5sZXQgdW56aXAgeHlzID1cbiAgbWFwX2ZzdCB4eXMsIG1hcF9zbmQgeHlzXG5cbmxldCBzcGxpdCA9XG4gIHVuemlwXG5cbigqIFtmaWx0ZXJfbWFwX2ZpbmRfbGVmdF9tYXAgZiB4c10gaXMgZXF1aXZhbGVudCB0b1xuICAgW2ZpbHRlcl9tYXAgRWl0aGVyLmZpbmRfbGVmdCAobWFwIGYgeHMpXS4gKilcblxubGV0IHJlYyBmaWx0ZXJfbWFwX2ZpbmRfbGVmdF9tYXAgZiB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgfCBFaXRoZXIuTGVmdCB5IC0+XG4gICAgICAgICAgQ29ucyAoeSwgZmlsdGVyX21hcF9maW5kX2xlZnRfbWFwIGYgeHMpXG4gICAgICB8IEVpdGhlci5SaWdodCBfIC0+XG4gICAgICAgICAgZmlsdGVyX21hcF9maW5kX2xlZnRfbWFwIGYgeHMgKClcblxubGV0IHJlYyBmaWx0ZXJfbWFwX2ZpbmRfcmlnaHRfbWFwIGYgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgRWl0aGVyLkxlZnQgXyAtPlxuICAgICAgICAgIGZpbHRlcl9tYXBfZmluZF9yaWdodF9tYXAgZiB4cyAoKVxuICAgICAgfCBFaXRoZXIuUmlnaHQgeiAtPlxuICAgICAgICAgIENvbnMgKHosIGZpbHRlcl9tYXBfZmluZF9yaWdodF9tYXAgZiB4cylcblxubGV0IHBhcnRpdGlvbl9tYXAgZiB4cyA9XG4gIGZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCBmIHhzLFxuICBmaWx0ZXJfbWFwX2ZpbmRfcmlnaHRfbWFwIGYgeHNcblxubGV0IHBhcnRpdGlvbiBwIHhzID1cbiAgZmlsdGVyIHAgeHMsIGZpbHRlciAoZnVuIHggLT4gbm90IChwIHgpKSB4c1xuXG4oKiBJZiBbeHNzXSBpcyBhIG1hdHJpeCAoYSBzZXF1ZW5jZSBvZiByb3dzKSwgdGhlbiBbcGVlbCB4c3NdIGlzIGEgcGFpciBvZlxuICAgdGhlIGZpcnN0IGNvbHVtbiAoYSBzZXF1ZW5jZSBvZiBlbGVtZW50cykgYW5kIG9mIHRoZSByZW1haW5kZXIgb2YgdGhlXG4gICBtYXRyaXggKGEgc2VxdWVuY2Ugb2Ygc2hvcnRlciByb3dzKS4gVGhlc2UgdHdvIHNlcXVlbmNlcyBoYXZlIHRoZSBzYW1lXG4gICBsZW5ndGguIFRoZSByb3dzIG9mIHRoZSBtYXRyaXggW3hzc10gYXJlIG5vdCByZXF1aXJlZCB0byBoYXZlIHRoZSBzYW1lXG4gICBsZW5ndGguIEFuIGVtcHR5IHJvdyBpcyBpZ25vcmVkLiAqKVxuXG4oKiBCZWNhdXNlIFtwZWVsXSB1c2VzIFt1bnppcF0sIGl0cyBhcmd1bWVudCBtdXN0IGJlIHBlcnNpc3RlbnQuIFRoZSBzYW1lXG4gICByZW1hcmsgYXBwbGllcyB0byBbdHJhbnNwb3NlXSwgW2RpYWdvbmFsc10sIFtwcm9kdWN0XSwgZXRjLiAqKVxuXG5sZXQgcGVlbCB4c3MgPVxuICB1bnppcCAoZmlsdGVyX21hcCB1bmNvbnMgeHNzKVxuXG5sZXQgcmVjIHRyYW5zcG9zZSB4c3MgKCkgPVxuICBsZXQgaGVhZHMsIHRhaWxzID0gcGVlbCB4c3MgaW5cbiAgaWYgaXNfZW1wdHkgaGVhZHMgdGhlbiBiZWdpblxuICAgIGFzc2VydCAoaXNfZW1wdHkgdGFpbHMpO1xuICAgIE5pbFxuICBlbmRcbiAgZWxzZVxuICAgIENvbnMgKGhlYWRzLCB0cmFuc3Bvc2UgdGFpbHMpXG5cbigqIFRoZSBpbnRlcm5hbCBmdW5jdGlvbiBbZGlhZ29uYWxzXSB0YWtlcyBhbiBleHRyYSBhcmd1bWVudCwgW3JlbWFpbmRlcnNdLFxuICAgd2hpY2ggY29udGFpbnMgdGhlIHJlbWFpbmRlcnMgb2YgdGhlIHJvd3MgdGhhdCBoYXZlIGFscmVhZHkgYmVlblxuICAgZGlzY292ZXJlZC4gKilcblxubGV0IHJlYyBkaWFnb25hbHMgcmVtYWluZGVycyB4c3MgKCkgPVxuICBtYXRjaCB4c3MoKSB3aXRoXG4gIHwgQ29ucyAoeHMsIHhzcykgLT5cbiAgICAgIGJlZ2luIG1hdGNoIHhzKCkgd2l0aFxuICAgICAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgICAgICAoKiBXZSBkaXNjb3ZlciBhIG5ldyBub25lbXB0eSByb3cgW3ggOjogeHNdLiBUaHVzLCB0aGUgbmV4dCBkaWFnb25hbFxuICAgICAgICAgICAgIGlzIFt4IDo6IGhlYWRzXTogdGhpcyBkaWFnb25hbCBiZWdpbnMgd2l0aCBbeF0gYW5kIGNvbnRpbnVlcyB3aXRoXG4gICAgICAgICAgICAgdGhlIGZpcnN0IGVsZW1lbnQgb2YgZXZlcnkgcm93IGluIFtyZW1haW5kZXJzXS4gSW4gdGhlIHJlY3Vyc2l2ZVxuICAgICAgICAgICAgIGNhbGwsIHRoZSBhcmd1bWVudCBbcmVtYWluZGVyc10gaXMgaW5zdGFudGlhdGVkIHdpdGggW3hzIDo6XG4gICAgICAgICAgICAgdGFpbHNdLCB3aGljaCBtZWFucyB0aGF0IHdlIGhhdmUgb25lIG1vcmUgcmVtYWluaW5nIHJvdywgW3hzXSxcbiAgICAgICAgICAgICBhbmQgdGhhdCB3ZSBrZWVwIHRoZSB0YWlscyBvZiB0aGUgcHJlLWV4aXN0aW5nIHJlbWFpbmluZyByb3dzLiAqKVxuICAgICAgICAgIGxldCBoZWFkcywgdGFpbHMgPSBwZWVsIHJlbWFpbmRlcnMgaW5cbiAgICAgICAgICBDb25zIChjb25zIHggaGVhZHMsIGRpYWdvbmFscyAoY29ucyB4cyB0YWlscykgeHNzKVxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICAoKiBXZSBkaXNjb3ZlciBhIG5ldyBlbXB0eSByb3cuIEluIHRoaXMgY2FzZSwgdGhlIG5ldyBkaWFnb25hbCBpc1xuICAgICAgICAgICAgIGp1c3QgW2hlYWRzXSwgYW5kIFtyZW1haW5kZXJzXSBpcyBpbnN0YW50aWF0ZWQgd2l0aCBqdXN0IFt0YWlsc10sXG4gICAgICAgICAgICAgYXMgd2UgZG8gbm90IGhhdmUgb25lIG1vcmUgcmVtYWluaW5nIHJvdy4gKilcbiAgICAgICAgICBsZXQgaGVhZHMsIHRhaWxzID0gcGVlbCByZW1haW5kZXJzIGluXG4gICAgICAgICAgQ29ucyAoaGVhZHMsIGRpYWdvbmFscyB0YWlscyB4c3MpXG4gICAgICBlbmRcbiAgfCBOaWwgLT5cbiAgICAgICgqIFRoZXJlIGFyZSBubyBtb3JlIHJvd3MgdG8gYmUgZGlzY292ZXJlZC4gVGhlcmUgcmVtYWlucyB0byBleGhhdXN0XG4gICAgICAgICB0aGUgcmVtYWluaW5nIHJvd3MuICopXG4gICAgICB0cmFuc3Bvc2UgcmVtYWluZGVycyAoKVxuXG4oKiBJZiBbeHNzXSBpcyBhIG1hdHJpeCAoYSBzZXF1ZW5jZSBvZiByb3dzKSwgdGhlbiBbZGlhZ29uYWxzIHhzc10gaXNcbiAgIHRoZSBzZXF1ZW5jZSBvZiBpdHMgZGlhZ29uYWxzLlxuXG4gICBUaGUgZmlyc3QgZGlhZ29uYWwgY29udGFpbnMganVzdCB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGVcbiAgIGZpcnN0IHJvdy4gVGhlIHNlY29uZCBkaWFnb25hbCBjb250YWlucyB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGVcbiAgIHNlY29uZCByb3cgYW5kIHRoZSBzZWNvbmQgZWxlbWVudCBvZiB0aGUgZmlyc3Qgcm93OyBhbmQgc28gb24uXG4gICBUaGlzIGtpbmQgb2YgZGlhZ29uYWwgaXMgaW4gZmFjdCBzb21ldGltZXMga25vd24gYXMgYW4gYW50aWRpYWdvbmFsLlxuXG4gICAtIEV2ZXJ5IGRpYWdvbmFsIGlzIGEgZmluaXRlIHNlcXVlbmNlLlxuICAgLSBUaGUgcm93cyBvZiB0aGUgbWF0cml4IFt4c3NdIGFyZSBub3QgcmVxdWlyZWQgdG8gaGF2ZSB0aGUgc2FtZSBsZW5ndGguXG4gICAtIFRoZSBtYXRyaXggW3hzc10gaXMgbm90IHJlcXVpcmVkIHRvIGJlIGZpbml0ZSAoaW4gZWl0aGVyIGRpcmVjdGlvbikuXG4gICAtIFRoZSBtYXRyaXggW3hzc10gbXVzdCBiZSBwZXJzaXN0ZW50LiAqKVxuXG5sZXQgZGlhZ29uYWxzIHhzcyA9XG4gIGRpYWdvbmFscyBlbXB0eSB4c3NcblxubGV0IG1hcF9wcm9kdWN0IGYgeHMgeXMgPVxuICBjb25jYXQgKGRpYWdvbmFscyAoXG4gICAgbWFwIChmdW4geCAtPlxuICAgICAgbWFwIChmdW4geSAtPlxuICAgICAgICBmIHggeVxuICAgICAgKSB5c1xuICAgICkgeHNcbiAgKSlcblxubGV0IHByb2R1Y3QgeHMgeXMgPVxuICBtYXBfcHJvZHVjdCAoZnVuIHggeSAtPiAoeCwgeSkpIHhzIHlzXG5cbmxldCBvZl9kaXNwZW5zZXIgaXQgPVxuICBsZXQgcmVjIGMgKCkgPVxuICAgIG1hdGNoIGl0KCkgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgICBOaWxcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgICBDb25zICh4LCBjKVxuICBpblxuICBjXG5cbmxldCB0b19kaXNwZW5zZXIgeHMgPVxuICBsZXQgcyA9IHJlZiB4cyBpblxuICBmdW4gKCkgLT5cbiAgICBtYXRjaCAoIXMpKCkgd2l0aFxuICAgIHwgTmlsIC0+XG4gICAgICAgIE5vbmVcbiAgICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgICBzIDo9IHhzO1xuICAgICAgICBTb21lIHhcblxuXG5cbmxldCByZWMgaW50cyBpICgpID1cbiAgQ29ucyAoaSwgaW50cyAoaSArIDEpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICdhIHQgPSAnYSBvcHRpb24gPSBOb25lIHwgU29tZSBvZiAnYVxuXG5sZXQgbm9uZSA9IE5vbmVcbmxldCBzb21lIHYgPSBTb21lIHZcbmxldCB2YWx1ZSBvIH5kZWZhdWx0ID0gbWF0Y2ggbyB3aXRoIFNvbWUgdiAtPiB2IHwgTm9uZSAtPiBkZWZhdWx0XG5sZXQgZ2V0ID0gZnVuY3Rpb24gU29tZSB2IC0+IHYgfCBOb25lIC0+IGludmFsaWRfYXJnIFwib3B0aW9uIGlzIE5vbmVcIlxubGV0IGJpbmQgbyBmID0gbWF0Y2ggbyB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgdiAtPiBmIHZcbmxldCBqb2luID0gZnVuY3Rpb24gU29tZSBvIC0+IG8gfCBOb25lIC0+IE5vbmVcbmxldCBtYXAgZiBvID0gbWF0Y2ggbyB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgdiAtPiBTb21lIChmIHYpXG5sZXQgZm9sZCB+bm9uZSB+c29tZSA9IGZ1bmN0aW9uIFNvbWUgdiAtPiBzb21lIHYgfCBOb25lIC0+IG5vbmVcbmxldCBpdGVyIGYgPSBmdW5jdGlvbiBTb21lIHYgLT4gZiB2IHwgTm9uZSAtPiAoKVxubGV0IGlzX25vbmUgPSBmdW5jdGlvbiBOb25lIC0+IHRydWUgfCBTb21lIF8gLT4gZmFsc2VcbmxldCBpc19zb21lID0gZnVuY3Rpb24gTm9uZSAtPiBmYWxzZSB8IFNvbWUgXyAtPiB0cnVlXG5cbmxldCBlcXVhbCBlcSBvMCBvMSA9IG1hdGNoIG8wLCBvMSB3aXRoXG58IFNvbWUgdjAsIFNvbWUgdjEgLT4gZXEgdjAgdjFcbnwgTm9uZSwgTm9uZSAtPiB0cnVlXG58IF8gLT4gZmFsc2VcblxubGV0IGNvbXBhcmUgY21wIG8wIG8xID0gbWF0Y2ggbzAsIG8xIHdpdGhcbnwgU29tZSB2MCwgU29tZSB2MSAtPiBjbXAgdjAgdjFcbnwgTm9uZSwgTm9uZSAtPiAwXG58IE5vbmUsIFNvbWUgXyAtPiAtMVxufCBTb21lIF8sIE5vbmUgLT4gMVxuXG5sZXQgdG9fcmVzdWx0IH5ub25lID0gZnVuY3Rpb24gTm9uZSAtPiBFcnJvciBub25lIHwgU29tZSB2IC0+IE9rIHZcbmxldCB0b19saXN0ID0gZnVuY3Rpb24gTm9uZSAtPiBbXSB8IFNvbWUgdiAtPiBbdl1cbmxldCB0b19zZXEgPSBmdW5jdGlvbiBOb25lIC0+IFNlcS5lbXB0eSB8IFNvbWUgdiAtPiBTZXEucmV0dXJuIHZcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAoJ2EsICdlKSB0ID0gKCdhLCAnZSkgcmVzdWx0ID0gT2sgb2YgJ2EgfCBFcnJvciBvZiAnZVxuXG5sZXQgb2sgdiA9IE9rIHZcbmxldCBlcnJvciBlID0gRXJyb3IgZVxubGV0IHZhbHVlIHIgfmRlZmF1bHQgPSBtYXRjaCByIHdpdGggT2sgdiAtPiB2IHwgRXJyb3IgXyAtPiBkZWZhdWx0XG5sZXQgZ2V0X29rID0gZnVuY3Rpb24gT2sgdiAtPiB2IHwgRXJyb3IgXyAtPiBpbnZhbGlkX2FyZyBcInJlc3VsdCBpcyBFcnJvciBfXCJcbmxldCBnZXRfZXJyb3IgPSBmdW5jdGlvbiBFcnJvciBlIC0+IGUgfCBPayBfIC0+IGludmFsaWRfYXJnIFwicmVzdWx0IGlzIE9rIF9cIlxubGV0IGJpbmQgciBmID0gbWF0Y2ggciB3aXRoIE9rIHYgLT4gZiB2IHwgRXJyb3IgXyBhcyBlIC0+IGVcbmxldCBqb2luID0gZnVuY3Rpb24gT2sgciAtPiByIHwgRXJyb3IgXyBhcyBlIC0+IGVcbmxldCBtYXAgZiA9IGZ1bmN0aW9uIE9rIHYgLT4gT2sgKGYgdikgfCBFcnJvciBfIGFzIGUgLT4gZVxubGV0IG1hcF9lcnJvciBmID0gZnVuY3Rpb24gRXJyb3IgZSAtPiBFcnJvciAoZiBlKSB8IE9rIF8gYXMgdiAtPiB2XG5sZXQgZm9sZCB+b2sgfmVycm9yID0gZnVuY3Rpb24gT2sgdiAtPiBvayB2IHwgRXJyb3IgZSAtPiBlcnJvciBlXG5sZXQgaXRlciBmID0gZnVuY3Rpb24gT2sgdiAtPiBmIHYgfCBFcnJvciBfIC0+ICgpXG5sZXQgaXRlcl9lcnJvciBmID0gZnVuY3Rpb24gRXJyb3IgZSAtPiBmIGUgfCBPayBfIC0+ICgpXG5sZXQgaXNfb2sgPSBmdW5jdGlvbiBPayBfIC0+IHRydWUgfCBFcnJvciBfIC0+IGZhbHNlXG5sZXQgaXNfZXJyb3IgPSBmdW5jdGlvbiBFcnJvciBfIC0+IHRydWUgfCBPayBfIC0+IGZhbHNlXG5cbmxldCBlcXVhbCB+b2sgfmVycm9yIHIwIHIxID0gbWF0Y2ggcjAsIHIxIHdpdGhcbnwgT2sgdjAsIE9rIHYxIC0+IG9rIHYwIHYxXG58IEVycm9yIGUwLCBFcnJvciBlMSAtPiBlcnJvciBlMCBlMVxufCBfLCBfIC0+IGZhbHNlXG5cbmxldCBjb21wYXJlIH5vayB+ZXJyb3IgcjAgcjEgPSBtYXRjaCByMCwgcjEgd2l0aFxufCBPayB2MCwgT2sgdjEgLT4gb2sgdjAgdjFcbnwgRXJyb3IgZTAsIEVycm9yIGUxIC0+IGVycm9yIGUwIGUxXG58IE9rIF8sIEVycm9yIF8gLT4gLTFcbnwgRXJyb3IgXywgT2sgXyAtPiAxXG5cbmxldCB0b19vcHRpb24gPSBmdW5jdGlvbiBPayB2IC0+IFNvbWUgdiB8IEVycm9yIF8gLT4gTm9uZVxubGV0IHRvX2xpc3QgPSBmdW5jdGlvbiBPayB2IC0+IFt2XSB8IEVycm9yIF8gLT4gW11cbmxldCB0b19zZXEgPSBmdW5jdGlvbiBPayB2IC0+IFNlcS5yZXR1cm4gdiB8IEVycm9yIF8gLT4gU2VxLmVtcHR5XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IGJvb2wgPSBmYWxzZSB8IHRydWVcblxuZXh0ZXJuYWwgbm90IDogYm9vbCAtPiBib29sID0gXCIlYm9vbG5vdFwiXG5leHRlcm5hbCAoICYmICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuZXh0ZXJuYWwgKCB8fCApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1b3JcIlxubGV0IGVxdWFsIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSAoID0gKVxubGV0IGNvbXBhcmUgOiBib29sIC0+IGJvb2wgLT4gaW50ID0gU3RkbGliLmNvbXBhcmVcbmV4dGVybmFsIHRvX2ludCA6IGJvb2wgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxubGV0IHRvX2Zsb2F0ID0gZnVuY3Rpb24gZmFsc2UgLT4gMC4gfCB0cnVlIC0+IDEuXG5cbigqXG5sZXQgb2Zfc3RyaW5nID0gZnVuY3Rpb25cbnwgXCJmYWxzZVwiIC0+IFNvbWUgZmFsc2VcbnwgXCJ0cnVlXCIgLT4gU29tZSB0cnVlXG58IF8gLT4gTm9uZVxuKilcblxubGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uIGZhbHNlIC0+IFwiZmFsc2VcIiB8IHRydWUgLT4gXCJ0cnVlXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQ2hhcmFjdGVyIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgY29kZTogY2hhciAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCB1bnNhZmVfY2hyOiBpbnQgLT4gY2hhciA9IFwiJWlkZW50aXR5XCJcblxubGV0IGNociBuID1cbiAgaWYgbiA8IDAgfHwgbiA+IDI1NSB0aGVuIGludmFsaWRfYXJnIFwiQ2hhci5jaHJcIiBlbHNlIHVuc2FmZV9jaHIgblxuXG5leHRlcm5hbCBieXRlc19jcmVhdGU6IGludCAtPiBieXRlcyA9IFwiY2FtbF9jcmVhdGVfYnl0ZXNcIlxuZXh0ZXJuYWwgYnl0ZXNfdW5zYWZlX3NldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCIlYnl0ZXNfdW5zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfdG9fc3RyaW5nIDogYnl0ZXMgLT4gc3RyaW5nID0gXCIlYnl0ZXNfdG9fc3RyaW5nXCJcblxubGV0IGVzY2FwZWQgPSBmdW5jdGlvblxuICB8ICdcXCcnIC0+IFwiXFxcXCdcIlxuICB8ICdcXFxcJyAtPiBcIlxcXFxcXFxcXCJcbiAgfCAnXFxuJyAtPiBcIlxcXFxuXCJcbiAgfCAnXFx0JyAtPiBcIlxcXFx0XCJcbiAgfCAnXFxyJyAtPiBcIlxcXFxyXCJcbiAgfCAnXFxiJyAtPiBcIlxcXFxiXCJcbiAgfCAnICcgLi4gJ34nIGFzIGMgLT5cbiAgICAgIGxldCBzID0gYnl0ZXNfY3JlYXRlIDEgaW5cbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAwIGM7XG4gICAgICB1bnNhZmVfdG9fc3RyaW5nIHNcbiAgfCBjIC0+XG4gICAgICBsZXQgbiA9IGNvZGUgYyBpblxuICAgICAgbGV0IHMgPSBieXRlc19jcmVhdGUgNCBpblxuICAgICAgYnl0ZXNfdW5zYWZlX3NldCBzIDAgJ1xcXFwnO1xuICAgICAgYnl0ZXNfdW5zYWZlX3NldCBzIDEgKHVuc2FmZV9jaHIgKDQ4ICsgbiAvIDEwMCkpO1xuICAgICAgYnl0ZXNfdW5zYWZlX3NldCBzIDIgKHVuc2FmZV9jaHIgKDQ4ICsgKG4gLyAxMCkgbW9kIDEwKSk7XG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMyAodW5zYWZlX2NociAoNDggKyBuIG1vZCAxMCkpO1xuICAgICAgdW5zYWZlX3RvX3N0cmluZyBzXG5cbmxldCBsb3dlcmNhc2UgPSBmdW5jdGlvblxuICB8ICdBJyAuLiAnWidcbiAgfCAnXFwxOTInIC4uICdcXDIxNCdcbiAgfCAnXFwyMTYnIC4uICdcXDIyMicgYXMgYyAtPlxuICAgIHVuc2FmZV9jaHIoY29kZSBjICsgMzIpXG4gIHwgYyAtPiBjXG5cbmxldCB1cHBlcmNhc2UgPSBmdW5jdGlvblxuICB8ICdhJyAuLiAneidcbiAgfCAnXFwyMjQnIC4uICdcXDI0NidcbiAgfCAnXFwyNDgnIC4uICdcXDI1NCcgYXMgYyAtPlxuICAgIHVuc2FmZV9jaHIoY29kZSBjIC0gMzIpXG4gIHwgYyAtPiBjXG5cbmxldCBsb3dlcmNhc2VfYXNjaWkgPSBmdW5jdGlvblxuICB8ICdBJyAuLiAnWicgYXMgYyAtPiB1bnNhZmVfY2hyKGNvZGUgYyArIDMyKVxuICB8IGMgLT4gY1xuXG5sZXQgdXBwZXJjYXNlX2FzY2lpID0gZnVuY3Rpb25cbiAgfCAnYScgLi4gJ3onIGFzIGMgLT4gdW5zYWZlX2Nocihjb2RlIGMgLSAzMilcbiAgfCBjIC0+IGNcblxudHlwZSB0ID0gY2hhclxuXG5sZXQgY29tcGFyZSBjMSBjMiA9IGNvZGUgYzEgLSBjb2RlIGMyXG5sZXQgZXF1YWwgKGMxOiB0KSAoYzI6IHQpID0gY29tcGFyZSBjMSBjMiA9IDBcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQnl0ZSBzZXF1ZW5jZSBvcGVyYXRpb25zICopXG5cbigqIFdBUk5JTkc6IFNvbWUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZSBhcmUgZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgZm9yXG4gICBlZmZpY2llbmN5IHJlYXNvbnMuIFdoZW4geW91IG1vZGlmeSB0aGUgb25lIGluIHRoaXMgZmlsZSB5b3UgbmVlZCB0b1xuICAgbW9kaWZ5IGl0cyBkdXBsaWNhdGUgaW4gc3RyaW5nLm1sLlxuICAgVGhlc2UgZnVuY3Rpb25zIGhhdmUgYSBcImR1cGxpY2F0ZWRcIiBjb21tZW50IGFib3ZlIHRoZWlyIGRlZmluaXRpb24uXG4qKVxuXG5leHRlcm5hbCBsZW5ndGggOiBieXRlcyAtPiBpbnQgPSBcIiVieXRlc19sZW5ndGhcIlxuZXh0ZXJuYWwgc3RyaW5nX2xlbmd0aCA6IHN0cmluZyAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcbmV4dGVybmFsIGdldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyID0gXCIlYnl0ZXNfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWJ5dGVzX3NhZmVfc2V0XCJcbmV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiBieXRlcyA9IFwiY2FtbF9jcmVhdGVfYnl0ZXNcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyID0gXCIlYnl0ZXNfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2ZpbGwgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IGNoYXIgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfZmlsbF9ieXRlc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB1bnNhZmVfdG9fc3RyaW5nIDogYnl0ZXMgLT4gc3RyaW5nID0gXCIlYnl0ZXNfdG9fc3RyaW5nXCJcbmV4dGVybmFsIHVuc2FmZV9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gYnl0ZXMgPSBcIiVieXRlc19vZl9zdHJpbmdcIlxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdCA6IGJ5dGVzIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfYnl0ZXNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfc3RyaW5nIDogc3RyaW5nIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfc3RyaW5nXCIgW0BAbm9hbGxvY11cblxubGV0IG1ha2UgbiBjID1cbiAgbGV0IHMgPSBjcmVhdGUgbiBpblxuICB1bnNhZmVfZmlsbCBzIDAgbiBjO1xuICBzXG5cbmxldCBpbml0IG4gZiA9XG4gIGxldCBzID0gY3JlYXRlIG4gaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgdW5zYWZlX3NldCBzIGkgKGYgaSlcbiAgZG9uZTtcbiAgc1xuXG5sZXQgZW1wdHkgPSBjcmVhdGUgMFxuXG5sZXQgY29weSBzID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBzIGluXG4gIGxldCByID0gY3JlYXRlIGxlbiBpblxuICB1bnNhZmVfYmxpdCBzIDAgciAwIGxlbjtcbiAgclxuXG5sZXQgdG9fc3RyaW5nIGIgPSB1bnNhZmVfdG9fc3RyaW5nIChjb3B5IGIpXG5sZXQgb2Zfc3RyaW5nIHMgPSBjb3B5ICh1bnNhZmVfb2Zfc3RyaW5nIHMpXG5cbmxldCBzdWIgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuc3ViIC8gQnl0ZXMuc3ViXCJcbiAgZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGxlbiBpblxuICAgIHVuc2FmZV9ibGl0IHMgb2ZzIHIgMCBsZW47XG4gICAgclxuICBlbmRcblxubGV0IHN1Yl9zdHJpbmcgYiBvZnMgbGVuID0gdW5zYWZlX3RvX3N0cmluZyAoc3ViIGIgb2ZzIGxlbilcblxuKCogYWRkaXRpb24gd2l0aCBhbiBvdmVyZmxvdyBjaGVjayAqKVxubGV0ICgrKykgYSBiID1cbiAgbGV0IGMgPSBhICsgYiBpblxuICBtYXRjaCBhIDwgMCwgYiA8IDAsIGMgPCAwIHdpdGhcbiAgfCB0cnVlICwgdHJ1ZSAsIGZhbHNlXG4gIHwgZmFsc2UsIGZhbHNlLCB0cnVlICAtPiBpbnZhbGlkX2FyZyBcIkJ5dGVzLmV4dGVuZFwiICgqIG92ZXJmbG93ICopXG4gIHwgXyAtPiBjXG5cbmxldCBleHRlbmQgcyBsZWZ0IHJpZ2h0ID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBzICsrIGxlZnQgKysgcmlnaHQgaW5cbiAgbGV0IHIgPSBjcmVhdGUgbGVuIGluXG4gIGxldCAoc3Jjb2ZmLCBkc3RvZmYpID0gaWYgbGVmdCA8IDAgdGhlbiAtbGVmdCwgMCBlbHNlIDAsIGxlZnQgaW5cbiAgbGV0IGNweWxlbiA9IEludC5taW4gKGxlbmd0aCBzIC0gc3Jjb2ZmKSAobGVuIC0gZHN0b2ZmKSBpblxuICBpZiBjcHlsZW4gPiAwIHRoZW4gdW5zYWZlX2JsaXQgcyBzcmNvZmYgciBkc3RvZmYgY3B5bGVuO1xuICByXG5cbmxldCBmaWxsIHMgb2ZzIGxlbiBjID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuZmlsbCAvIEJ5dGVzLmZpbGxcIlxuICBlbHNlIHVuc2FmZV9maWxsIHMgb2ZzIGxlbiBjXG5cbmxldCBibGl0IHMxIG9mczEgczIgb2ZzMiBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IG9mczEgPCAwIHx8IG9mczEgPiBsZW5ndGggczEgLSBsZW5cbiAgICAgICAgICAgICB8fCBvZnMyIDwgMCB8fCBvZnMyID4gbGVuZ3RoIHMyIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCeXRlcy5ibGl0XCJcbiAgZWxzZSB1bnNhZmVfYmxpdCBzMSBvZnMxIHMyIG9mczIgbGVuXG5cbmxldCBibGl0X3N0cmluZyBzMSBvZnMxIHMyIG9mczIgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBvZnMxIDwgMCB8fCBvZnMxID4gc3RyaW5nX2xlbmd0aCBzMSAtIGxlblxuICAgICAgICAgICAgIHx8IG9mczIgPCAwIHx8IG9mczIgPiBsZW5ndGggczIgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5ibGl0IC8gQnl0ZXMuYmxpdF9zdHJpbmdcIlxuICBlbHNlIHVuc2FmZV9ibGl0X3N0cmluZyBzMSBvZnMxIHMyIG9mczIgbGVuXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaXRlciBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYodW5zYWZlX2dldCBhIGkpIGRvbmVcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpdGVyaSBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxubGV0IGVuc3VyZV9nZSAoeDppbnQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgaW52YWxpZF9hcmcgXCJCeXRlcy5jb25jYXRcIlxuXG5sZXQgcmVjIHN1bV9sZW5ndGhzIGFjYyBzZXBsZW4gPSBmdW5jdGlvblxuICB8IFtdIC0+IGFjY1xuICB8IGhkIDo6IFtdIC0+IGxlbmd0aCBoZCArIGFjY1xuICB8IGhkIDo6IHRsIC0+IHN1bV9sZW5ndGhzIChlbnN1cmVfZ2UgKGxlbmd0aCBoZCArIHNlcGxlbiArIGFjYykgYWNjKSBzZXBsZW4gdGxcblxubGV0IHJlYyB1bnNhZmVfYmxpdHMgZHN0IHBvcyBzZXAgc2VwbGVuID0gZnVuY3Rpb25cbiAgICBbXSAtPiBkc3RcbiAgfCBoZCA6OiBbXSAtPlxuICAgIHVuc2FmZV9ibGl0IGhkIDAgZHN0IHBvcyAobGVuZ3RoIGhkKTsgZHN0XG4gIHwgaGQgOjogdGwgLT5cbiAgICB1bnNhZmVfYmxpdCBoZCAwIGRzdCBwb3MgKGxlbmd0aCBoZCk7XG4gICAgdW5zYWZlX2JsaXQgc2VwIDAgZHN0IChwb3MgKyBsZW5ndGggaGQpIHNlcGxlbjtcbiAgICB1bnNhZmVfYmxpdHMgZHN0IChwb3MgKyBsZW5ndGggaGQgKyBzZXBsZW4pIHNlcCBzZXBsZW4gdGxcblxubGV0IGNvbmNhdCBzZXAgPSBmdW5jdGlvblxuICAgIFtdIC0+IGVtcHR5XG4gIHwgbCAtPiBsZXQgc2VwbGVuID0gbGVuZ3RoIHNlcCBpblxuICAgICAgICAgIHVuc2FmZV9ibGl0c1xuICAgICAgICAgICAgKGNyZWF0ZSAoc3VtX2xlbmd0aHMgMCBzZXBsZW4gbCkpXG4gICAgICAgICAgICAwIHNlcCBzZXBsZW4gbFxuXG5sZXQgY2F0IHMxIHMyID1cbiAgbGV0IGwxID0gbGVuZ3RoIHMxIGluXG4gIGxldCBsMiA9IGxlbmd0aCBzMiBpblxuICBsZXQgciA9IGNyZWF0ZSAobDEgKyBsMikgaW5cbiAgdW5zYWZlX2JsaXQgczEgMCByIDAgbDE7XG4gIHVuc2FmZV9ibGl0IHMyIDAgciBsMSBsMjtcbiAgclxuXG5cbmV4dGVybmFsIGNoYXJfY29kZTogY2hhciAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBjaGFyX2NocjogaW50IC0+IGNoYXIgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBpc19zcGFjZSA9IGZ1bmN0aW9uXG4gIHwgJyAnIHwgJ1xcMDEyJyB8ICdcXG4nIHwgJ1xccicgfCAnXFx0JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5sZXQgdHJpbSBzID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBzIGluXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBsZW4gJiYgaXNfc3BhY2UgKHVuc2FmZV9nZXQgcyAhaSkgZG9cbiAgICBpbmNyIGlcbiAgZG9uZTtcbiAgbGV0IGogPSByZWYgKGxlbiAtIDEpIGluXG4gIHdoaWxlICFqID49ICFpICYmIGlzX3NwYWNlICh1bnNhZmVfZ2V0IHMgIWopIGRvXG4gICAgZGVjciBqXG4gIGRvbmU7XG4gIGlmICFqID49ICFpIHRoZW5cbiAgICBzdWIgcyAhaSAoIWogLSAhaSArIDEpXG4gIGVsc2VcbiAgICBlbXB0eVxuXG5sZXQgZXNjYXBlZCBzID1cbiAgbGV0IG4gPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvXG4gICAgbiA6PSAhbiArXG4gICAgICAobWF0Y2ggdW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgIHwgJ1xcXCInIHwgJ1xcXFwnIHwgJ1xcbicgfCAnXFx0JyB8ICdcXHInIHwgJ1xcYicgLT4gMlxuICAgICAgIHwgJyAnIC4uICd+JyAtPiAxXG4gICAgICAgfCBfIC0+IDQpXG4gIGRvbmU7XG4gIGlmICFuID0gbGVuZ3RoIHMgdGhlbiBjb3B5IHMgZWxzZSBiZWdpblxuICAgIGxldCBzJyA9IGNyZWF0ZSAhbiBpblxuICAgIG4gOj0gMDtcbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvXG4gICAgICBiZWdpbiBtYXRjaCB1bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICB8ICgnXFxcIicgfCAnXFxcXCcpIGFzIGMgLT5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJzsgaW5jciBuOyB1bnNhZmVfc2V0IHMnICFuIGNcbiAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJzsgaW5jciBuOyB1bnNhZmVfc2V0IHMnICFuICduJ1xuICAgICAgfCAnXFx0JyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gJ3QnXG4gICAgICB8ICdcXHInIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiAncidcbiAgICAgIHwgJ1xcYicgLT5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJzsgaW5jciBuOyB1bnNhZmVfc2V0IHMnICFuICdiJ1xuICAgICAgfCAoJyAnIC4uICd+JykgYXMgYyAtPiB1bnNhZmVfc2V0IHMnICFuIGNcbiAgICAgIHwgYyAtPlxuICAgICAgICAgIGxldCBhID0gY2hhcl9jb2RlIGMgaW5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJztcbiAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAoY2hhcl9jaHIgKDQ4ICsgYSAvIDEwMCkpO1xuICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuIChjaGFyX2NociAoNDggKyAoYSAvIDEwKSBtb2QgMTApKTtcbiAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAoY2hhcl9jaHIgKDQ4ICsgYSBtb2QgMTApKTtcbiAgICAgIGVuZDtcbiAgICAgIGluY3IgblxuICAgIGRvbmU7XG4gICAgcydcbiAgZW5kXG5cbmxldCBtYXAgZiBzID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBsID0gMCB0aGVuIHMgZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG8gdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgcyBpKSkgZG9uZTtcbiAgICByXG4gIGVuZFxuXG5sZXQgbWFwaSBmIHMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGwgPSAwIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkbyB1bnNhZmVfc2V0IHIgaSAoZiBpICh1bnNhZmVfZ2V0IHMgaSkpIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IGZvbGRfbGVmdCBmIHggYSA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCBhIGkpXG4gIGRvbmU7XG4gICFyXG5cbmxldCBmb2xkX3JpZ2h0IGYgYSB4ID1cbiAgbGV0IHIgPSByZWYgeCBpblxuICBmb3IgaSA9IGxlbmd0aCBhIC0gMSBkb3dudG8gMCBkb1xuICAgIHIgOj0gZiAodW5zYWZlX2dldCBhIGkpICFyXG4gIGRvbmU7XG4gICFyXG5cbmxldCBleGlzdHMgcCBzID1cbiAgbGV0IG4gPSBsZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBzIGkpIHRoZW4gdHJ1ZVxuICAgIGVsc2UgbG9vcCAoc3VjYyBpKSBpblxuICBsb29wIDBcblxubGV0IGZvcl9hbGwgcCBzID1cbiAgbGV0IG4gPSBsZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiB0cnVlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IHMgaSkgdGhlbiBsb29wIChzdWNjIGkpXG4gICAgZWxzZSBmYWxzZSBpblxuICBsb29wIDBcblxubGV0IHVwcGVyY2FzZV9hc2NpaSBzID0gbWFwIENoYXIudXBwZXJjYXNlX2FzY2lpIHNcbmxldCBsb3dlcmNhc2VfYXNjaWkgcyA9IG1hcCBDaGFyLmxvd2VyY2FzZV9hc2NpaSBzXG5cbmxldCBhcHBseTEgZiBzID1cbiAgaWYgbGVuZ3RoIHMgPSAwIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjb3B5IHMgaW5cbiAgICB1bnNhZmVfc2V0IHIgMCAoZih1bnNhZmVfZ2V0IHMgMCkpO1xuICAgIHJcbiAgZW5kXG5cbmxldCBjYXBpdGFsaXplX2FzY2lpIHMgPSBhcHBseTEgQ2hhci51cHBlcmNhc2VfYXNjaWkgc1xubGV0IHVuY2FwaXRhbGl6ZV9hc2NpaSBzID0gYXBwbHkxIENoYXIubG93ZXJjYXNlX2FzY2lpIHNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBzdGFydHNfd2l0aCB+cHJlZml4IHMgPVxuICBsZXQgbGVuX3MgPSBsZW5ndGggc1xuICBhbmQgbGVuX3ByZSA9IGxlbmd0aCBwcmVmaXggaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IGxlbl9wcmUgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiB1bnNhZmVfZ2V0IHMgaSA8PiB1bnNhZmVfZ2V0IHByZWZpeCBpIHRoZW4gZmFsc2VcbiAgICBlbHNlIGF1eCAoaSArIDEpXG4gIGluIGxlbl9zID49IGxlbl9wcmUgJiYgYXV4IDBcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBlbmRzX3dpdGggfnN1ZmZpeCBzID1cbiAgbGV0IGxlbl9zID0gbGVuZ3RoIHNcbiAgYW5kIGxlbl9zdWYgPSBsZW5ndGggc3VmZml4IGluXG4gIGxldCBkaWZmID0gbGVuX3MgLSBsZW5fc3VmIGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBsZW5fc3VmIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgdW5zYWZlX2dldCBzIChkaWZmICsgaSkgPD4gdW5zYWZlX2dldCBzdWZmaXggaSB0aGVuIGZhbHNlXG4gICAgZWxzZSBhdXggKGkgKyAxKVxuICBpbiBkaWZmID49IDAgJiYgYXV4IDBcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByZWMgaW5kZXhfcmVjIHMgbGltIGkgYyA9XG4gIGlmIGkgPj0gbGltIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gaSBlbHNlIGluZGV4X3JlYyBzIGxpbSAoaSArIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpbmRleCBzIGMgPSBpbmRleF9yZWMgcyAobGVuZ3RoIHMpIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJlYyBpbmRleF9yZWNfb3B0IHMgbGltIGkgYyA9XG4gIGlmIGkgPj0gbGltIHRoZW4gTm9uZSBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIFNvbWUgaSBlbHNlIGluZGV4X3JlY19vcHQgcyBsaW0gKGkgKyAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaW5kZXhfb3B0IHMgYyA9IGluZGV4X3JlY19vcHQgcyAobGVuZ3RoIHMpIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGluZGV4X2Zyb20gcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbSAvIEJ5dGVzLmluZGV4X2Zyb21cIiBlbHNlXG4gIGluZGV4X3JlYyBzIGwgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaW5kZXhfZnJvbV9vcHQgcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5pbmRleF9mcm9tX29wdCAvIEJ5dGVzLmluZGV4X2Zyb21fb3B0XCJcbiAgZWxzZVxuICAgIGluZGV4X3JlY19vcHQgcyBsIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJlYyByaW5kZXhfcmVjIHMgaSBjID1cbiAgaWYgaSA8IDAgdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBpIGVsc2UgcmluZGV4X3JlYyBzIChpIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJpbmRleCBzIGMgPSByaW5kZXhfcmVjIHMgKGxlbmd0aCBzIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJpbmRleF9mcm9tIHMgaSBjID1cbiAgaWYgaSA8IC0xIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tIC8gQnl0ZXMucmluZGV4X2Zyb21cIlxuICBlbHNlXG4gICAgcmluZGV4X3JlYyBzIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJlYyByaW5kZXhfcmVjX29wdCBzIGkgYyA9XG4gIGlmIGkgPCAwIHRoZW4gTm9uZSBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIFNvbWUgaSBlbHNlIHJpbmRleF9yZWNfb3B0IHMgKGkgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmluZGV4X29wdCBzIGMgPSByaW5kZXhfcmVjX29wdCBzIChsZW5ndGggcyAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByaW5kZXhfZnJvbV9vcHQgcyBpIGMgPVxuICBpZiBpIDwgLTEgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmluZGV4X2Zyb21fb3B0IC8gQnl0ZXMucmluZGV4X2Zyb21fb3B0XCJcbiAgZWxzZVxuICAgIHJpbmRleF9yZWNfb3B0IHMgaSBjXG5cblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBjb250YWluc19mcm9tIHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcuY29udGFpbnNfZnJvbSAvIEJ5dGVzLmNvbnRhaW5zX2Zyb21cIlxuICBlbHNlXG4gICAgdHJ5IGlnbm9yZSAoaW5kZXhfcmVjIHMgbCBpIGMpOyB0cnVlIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG5cblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBjb250YWlucyBzIGMgPSBjb250YWluc19mcm9tIHMgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmNvbnRhaW5zX2Zyb20gcyBpIGMgPVxuICBpZiBpIDwgMCB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yY29udGFpbnNfZnJvbSAvIEJ5dGVzLnJjb250YWluc19mcm9tXCJcbiAgZWxzZVxuICAgIHRyeSBpZ25vcmUgKHJpbmRleF9yZWMgcyBpIGMpOyB0cnVlIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG5cblxudHlwZSB0ID0gYnl0ZXNcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxuZXh0ZXJuYWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbCA9IFwiY2FtbF9ieXRlc19lcXVhbFwiIFtAQG5vYWxsb2NdXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgc3BsaXRfb25fY2hhciBzZXAgcyA9XG4gIGxldCByID0gcmVmIFtdIGluXG4gIGxldCBqID0gcmVmIChsZW5ndGggcykgaW5cbiAgZm9yIGkgPSBsZW5ndGggcyAtIDEgZG93bnRvIDAgZG9cbiAgICBpZiB1bnNhZmVfZ2V0IHMgaSA9IHNlcCB0aGVuIGJlZ2luXG4gICAgICByIDo9IHN1YiBzIChpICsgMSkgKCFqIC0gaSAtIDEpIDo6ICFyO1xuICAgICAgaiA6PSBpXG4gICAgZW5kXG4gIGRvbmU7XG4gIHN1YiBzIDAgIWogOjogIXJcblxuKCogRGVwcmVjYXRlZCBmdW5jdGlvbnMgaW1wbGVtZW50ZWQgdmlhIG90aGVyIGRlcHJlY2F0ZWQgZnVuY3Rpb25zICopXG5bQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5sZXQgdXBwZXJjYXNlIHMgPSBtYXAgQ2hhci51cHBlcmNhc2Ugc1xubGV0IGxvd2VyY2FzZSBzID0gbWFwIENoYXIubG93ZXJjYXNlIHNcblxubGV0IGNhcGl0YWxpemUgcyA9IGFwcGx5MSBDaGFyLnVwcGVyY2FzZSBzXG5sZXQgdW5jYXBpdGFsaXplIHMgPSBhcHBseTEgQ2hhci5sb3dlcmNhc2Ugc1xuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHMgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICBpZiBpID0gbGVuZ3RoIHMgdGhlbiBTZXEuTmlsXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSBnZXQgcyBpIGluXG4gICAgICBTZXEuQ29ucyAoeCwgYXV4IChpKzEpKVxuICBpblxuICBhdXggMFxuXG5sZXQgdG9fc2VxaSBzID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgaWYgaSA9IGxlbmd0aCBzIHRoZW4gU2VxLk5pbFxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gZ2V0IHMgaSBpblxuICAgICAgU2VxLkNvbnMgKChpLHgpLCBhdXggKGkrMSkpXG4gIGluXG4gIGF1eCAwXG5cbmxldCBvZl9zZXEgaSA9XG4gIGxldCBuID0gcmVmIDAgaW5cbiAgbGV0IGJ1ZiA9IHJlZiAobWFrZSAyNTYgJ1xcMDAwJykgaW5cbiAgbGV0IHJlc2l6ZSAoKSA9XG4gICAgKCogcmVzaXplICopXG4gICAgbGV0IG5ld19sZW4gPSBJbnQubWluICgyICogbGVuZ3RoICFidWYpIFN5cy5tYXhfc3RyaW5nX2xlbmd0aCBpblxuICAgIGlmIGxlbmd0aCAhYnVmID0gbmV3X2xlbiB0aGVuIGZhaWx3aXRoIFwiQnl0ZXMub2Zfc2VxOiBjYW5ub3QgZ3JvdyBieXRlc1wiO1xuICAgIGxldCBuZXdfYnVmID0gbWFrZSBuZXdfbGVuICdcXDAwMCcgaW5cbiAgICBibGl0ICFidWYgMCBuZXdfYnVmIDAgIW47XG4gICAgYnVmIDo9IG5ld19idWZcbiAgaW5cbiAgU2VxLml0ZXJcbiAgICAoZnVuIGMgLT5cbiAgICAgICBpZiAhbiA9IGxlbmd0aCAhYnVmIHRoZW4gcmVzaXplKCk7XG4gICAgICAgc2V0ICFidWYgIW4gYztcbiAgICAgICBpbmNyIG4pXG4gICAgaTtcbiAgc3ViICFidWYgMCAhblxuXG4oKiogezYgQmluYXJ5IGVuY29kaW5nL2RlY29kaW5nIG9mIGludGVnZXJzfSAqKVxuXG4oKiBUaGUgZ2V0XyBmdW5jdGlvbnMgYXJlIGFsbCBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxuXG5leHRlcm5hbCB1bnNhZmVfZ2V0X3VpbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCA9IFwiJWJ5dGVzX3Vuc2FmZV9nZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldF91aW50MTZfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9ieXRlc19nZXQxNnVcIlxuZXh0ZXJuYWwgZ2V0X3VpbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCA9IFwiJWJ5dGVzX3NhZmVfZ2V0XCJcbmV4dGVybmFsIGdldF91aW50MTZfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9ieXRlc19nZXQxNlwiXG5leHRlcm5hbCBnZXRfaW50MzJfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgPSBcIiVjYW1sX2J5dGVzX2dldDMyXCJcbmV4dGVybmFsIGdldF9pbnQ2NF9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfYnl0ZXNfZ2V0NjRcIlxuXG5leHRlcm5hbCB1bnNhZmVfc2V0X3VpbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlYnl0ZXNfdW5zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfc2V0X3VpbnQxNl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcIiVjYW1sX2J5dGVzX3NldDE2dVwiXG5leHRlcm5hbCBzZXRfaW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWJ5dGVzX3NhZmVfc2V0XCJcbmV4dGVybmFsIHNldF9pbnQxNl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MTZcIlxuZXh0ZXJuYWwgc2V0X2ludDMyX25lIDogYnl0ZXMgLT4gaW50IC0+IGludDMyIC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDMyXCJcbmV4dGVybmFsIHNldF9pbnQ2NF9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQ2NCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQ2NFwiXG5leHRlcm5hbCBzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG5leHRlcm5hbCBzd2FwMzIgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWJzd2FwX2ludDMyXCJcbmV4dGVybmFsIHN3YXA2NCA6IGludDY0IC0+IGludDY0ID0gXCIlYnN3YXBfaW50NjRcIlxuXG5sZXQgdW5zYWZlX2dldF91aW50MTZfbGUgYiBpID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBzd2FwMTYgKHVuc2FmZV9nZXRfdWludDE2X25lIGIgaSlcbiAgZWxzZSB1bnNhZmVfZ2V0X3VpbnQxNl9uZSBiIGlcblxubGV0IHVuc2FmZV9nZXRfdWludDE2X2JlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gdW5zYWZlX2dldF91aW50MTZfbmUgYiBpXG4gIGVsc2Ugc3dhcDE2ICh1bnNhZmVfZ2V0X3VpbnQxNl9uZSBiIGkpXG5cbmxldCBnZXRfaW50OCBiIGkgPVxuICAoKGdldF91aW50OCBiIGkpIGxzbCAoU3lzLmludF9zaXplIC0gOCkpIGFzciAoU3lzLmludF9zaXplIC0gOClcblxubGV0IGdldF91aW50MTZfbGUgYiBpID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMTYgKGdldF91aW50MTZfbmUgYiBpKVxuICBlbHNlIGdldF91aW50MTZfbmUgYiBpXG5cbmxldCBnZXRfdWludDE2X2JlIGIgaSA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAxNiAoZ2V0X3VpbnQxNl9uZSBiIGkpXG4gIGVsc2UgZ2V0X3VpbnQxNl9uZSBiIGlcblxubGV0IGdldF9pbnQxNl9uZSBiIGkgPVxuICAoKGdldF91aW50MTZfbmUgYiBpKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDE2KSkgYXNyIChTeXMuaW50X3NpemUgLSAxNilcblxubGV0IGdldF9pbnQxNl9sZSBiIGkgPVxuICAoKGdldF91aW50MTZfbGUgYiBpKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDE2KSkgYXNyIChTeXMuaW50X3NpemUgLSAxNilcblxubGV0IGdldF9pbnQxNl9iZSBiIGkgPVxuICAoKGdldF91aW50MTZfYmUgYiBpKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDE2KSkgYXNyIChTeXMuaW50X3NpemUgLSAxNilcblxubGV0IGdldF9pbnQzMl9sZSBiIGkgPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAzMiAoZ2V0X2ludDMyX25lIGIgaSlcbiAgZWxzZSBnZXRfaW50MzJfbmUgYiBpXG5cbmxldCBnZXRfaW50MzJfYmUgYiBpID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDMyIChnZXRfaW50MzJfbmUgYiBpKVxuICBlbHNlIGdldF9pbnQzMl9uZSBiIGlcblxubGV0IGdldF9pbnQ2NF9sZSBiIGkgPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCAoZ2V0X2ludDY0X25lIGIgaSlcbiAgZWxzZSBnZXRfaW50NjRfbmUgYiBpXG5cbmxldCBnZXRfaW50NjRfYmUgYiBpID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDY0IChnZXRfaW50NjRfbmUgYiBpKVxuICBlbHNlIGdldF9pbnQ2NF9uZSBiIGlcblxubGV0IHVuc2FmZV9zZXRfdWludDE2X2xlIGIgaSB4ID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiB1bnNhZmVfc2V0X3VpbnQxNl9uZSBiIGkgKHN3YXAxNiB4KVxuICBlbHNlIHVuc2FmZV9zZXRfdWludDE2X25lIGIgaSB4XG5cbmxldCB1bnNhZmVfc2V0X3VpbnQxNl9iZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gdW5zYWZlX3NldF91aW50MTZfbmUgYiBpIHggZWxzZVxuICB1bnNhZmVfc2V0X3VpbnQxNl9uZSBiIGkgKHN3YXAxNiB4KVxuXG5sZXQgc2V0X2ludDE2X2xlIGIgaSB4ID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50MTZfbmUgYiBpIChzd2FwMTYgeClcbiAgZWxzZSBzZXRfaW50MTZfbmUgYiBpIHhcblxubGV0IHNldF9pbnQxNl9iZSBiIGkgeCA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQxNl9uZSBiIGkgKHN3YXAxNiB4KVxuICBlbHNlIHNldF9pbnQxNl9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDMyX2xlIGIgaSB4ID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50MzJfbmUgYiBpIChzd2FwMzIgeClcbiAgZWxzZSBzZXRfaW50MzJfbmUgYiBpIHhcblxubGV0IHNldF9pbnQzMl9iZSBiIGkgeCA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQzMl9uZSBiIGkgKHN3YXAzMiB4KVxuICBlbHNlIHNldF9pbnQzMl9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDY0X2xlIGIgaSB4ID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50NjRfbmUgYiBpIChzd2FwNjQgeClcbiAgZWxzZSBzZXRfaW50NjRfbmUgYiBpIHhcblxubGV0IHNldF9pbnQ2NF9iZSBiIGkgeCA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQ2NF9uZSBiIGkgKHN3YXA2NCB4KVxuICBlbHNlIHNldF9pbnQ2NF9uZSBiIGkgeFxuXG5sZXQgc2V0X3VpbnQ4ID0gc2V0X2ludDhcbmxldCBzZXRfdWludDE2X25lID0gc2V0X2ludDE2X25lXG5sZXQgc2V0X3VpbnQxNl9iZSA9IHNldF9pbnQxNl9iZVxubGV0IHNldF91aW50MTZfbGUgPSBzZXRfaW50MTZfbGVcblxuKCogVVRGIGNvZGVjcyBhbmQgdmFsaWRhdGlvbnMgKilcblxubGV0IGRlY19pbnZhbGlkID0gVWNoYXIudXRmX2RlY29kZV9pbnZhbGlkXG5sZXRbQGlubGluZV0gZGVjX3JldCBuIHUgPSBVY2hhci51dGZfZGVjb2RlIG4gKFVjaGFyLnVuc2FmZV9vZl9pbnQgdSlcblxuKCogSW4gY2FzZSBvZiBkZWNvZGluZyBlcnJvciwgaWYgd2UgZXJyb3Igb24gdGhlIGZpcnN0IGJ5dGUsIHdlXG4gICBjb25zdW1lIHRoZSBieXRlLCBvdGhlcndpc2Ugd2UgY29uc3VtZSB0aGUgW25dIGJ5dGVzIHByZWNlZWRpbmdcbiAgIHRoZSBlcnJvcmluZyBieXRlLlxuXG4gICBUaGlzIG1lYW5zIHRoYXQgaWYgYSBjbGllbnQgdXNlcyBkZWNvZGVzIHdpdGhvdXQgY2FyaW5nIGFib3V0XG4gICB2YWxpZGl0eSBpdCBuYXR1cmFsbHkgcmVwbGFjZSBib2d1cyBkYXRhIHdpdGggVWNoYXIucmVwIGFjY29yZGluZ1xuICAgdG8gdGhlIFdIQVRXRyBFbmNvZGluZyBzdGFuZGFyZC4gT3RoZXIgc2NoZW1lcyBhcmUgcG9zc2libGUgYnlcbiAgIGNvbnN1bHRpbmcgdGhlIG51bWJlciBvZiB1c2VkIGJ5dGVzIG9uIGludmFsaWQgZGVjb2Rlcy4gRm9yIG1vcmVcbiAgIGRldGFpbHMgc2VlIGh0dHBzOi8vaHNpdm9uZW4uZmkvYnJva2VuLXV0Zi04L1xuXG4gICBGb3IgdGhpcyByZWFzb24gaW4gW2dldF91dGZfOF91Y2hhcl0gd2UgZ3JhZHVhbGx5IGNoZWNrIHRoZSBuZXh0XG4gICBieXRlIGlzIGF2YWlsYWJsZSByYXRoZXIgdGhhbiBkb2luZyBpdCBpbW1lZGlhdGVseSBhZnRlciB0aGVcbiAgIGZpcnN0IGJ5dGUuIENvbnRyYXN0IHdpdGggW2lzX3ZhbGlkX3V0Zl84XS4gKilcblxuKCogVVRGLTggKilcblxubGV0W0BpbmxpbmVdIG5vdF9pbl94ODBfdG9feEJGIGIgPSBiIGxzciA2IDw+IDBiMTBcbmxldFtAaW5saW5lXSBub3RfaW5feEEwX3RvX3hCRiBiID0gYiBsc3IgNSA8PiAwYjEwMVxubGV0W0BpbmxpbmVdIG5vdF9pbl94ODBfdG9feDlGIGIgPSBiIGxzciA1IDw+IDBiMTAwXG5sZXRbQGlubGluZV0gbm90X2luX3g5MF90b194QkYgYiA9IGIgPCAweDkwIHx8IDB4QkYgPCBiXG5sZXRbQGlubGluZV0gbm90X2luX3g4MF90b194OEYgYiA9IGIgbHNyIDQgPD4gMHg4XG5cbmxldFtAaW5saW5lXSB1dGZfOF91Y2hhcl8yIGIwIGIxID1cbiAgKChiMCBsYW5kIDB4MUYpIGxzbCA2KSBsb3JcbiAgKChiMSBsYW5kIDB4M0YpKVxuXG5sZXRbQGlubGluZV0gdXRmXzhfdWNoYXJfMyBiMCBiMSBiMiA9XG4gICgoYjAgbGFuZCAweDBGKSBsc2wgMTIpIGxvclxuICAoKGIxIGxhbmQgMHgzRikgbHNsIDYpIGxvclxuICAoKGIyIGxhbmQgMHgzRikpXG5cbmxldFtAaW5saW5lXSB1dGZfOF91Y2hhcl80IGIwIGIxIGIyIGIzID1cbiAgKChiMCBsYW5kIDB4MDcpIGxzbCAxOCkgbG9yXG4gICgoYjEgbGFuZCAweDNGKSBsc2wgMTIpIGxvclxuICAoKGIyIGxhbmQgMHgzRikgbHNsIDYpIGxvclxuICAoKGIzIGxhbmQgMHgzRikpXG5cbmxldCBnZXRfdXRmXzhfdWNoYXIgYiBpID1cbiAgbGV0IGIwID0gZ2V0X3VpbnQ4IGIgaSBpbiAoKiByYWlzZXMgaWYgW2ldIGlzIG5vdCBhIHZhbGlkIGluZGV4LiAqKVxuICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50OCBpblxuICBsZXQgbWF4ID0gbGVuZ3RoIGIgLSAxIGluXG4gIG1hdGNoIENoYXIudW5zYWZlX2NociBiMCB3aXRoICgqIFNlZSBUaGUgVW5pY29kZSBTdGFuZGFyZCwgVGFibGUgMy43ICopXG4gIHwgJ1xceDAwJyAuLiAnXFx4N0YnIC0+IGRlY19yZXQgMSBiMFxuICB8ICdcXHhDMicgLi4gJ1xceERGJyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBkZWNfcmV0IDIgKHV0Zl84X3VjaGFyXzIgYjAgYjEpXG4gIHwgJ1xceEUwJyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94QTBfdG9feEJGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBiMiA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjIgdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGRlY19yZXQgMyAodXRmXzhfdWNoYXJfMyBiMCBiMSBiMilcbiAgfCAnXFx4RTEnIC4uICdcXHhFQycgfCAnXFx4RUUnIC4uICdcXHhFRicgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgYjIgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIyIHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBkZWNfcmV0IDMgKHV0Zl84X3VjaGFyXzMgYjAgYjEgYjIpXG4gIHwgJ1xceEVEJyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feDlGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBiMiA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjIgdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGRlY19yZXQgMyAodXRmXzhfdWNoYXJfMyBiMCBiMSBiMilcbiAgfCAnXFx4RjAnIC0+XG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBiMSA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g5MF90b194QkYgYjEgdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGIyID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMiB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMyBlbHNlXG4gICAgICBsZXQgYjMgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIzIHRoZW4gZGVjX2ludmFsaWQgMyBlbHNlXG4gICAgICBkZWNfcmV0IDQgKHV0Zl84X3VjaGFyXzQgYjAgYjEgYjIgYjMpXG4gIHwgJ1xceEYxJyAuLiAnXFx4RjMnIC0+XG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBiMSA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjEgdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGIyID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMiB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMyBlbHNlXG4gICAgICBsZXQgYjMgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIzIHRoZW4gZGVjX2ludmFsaWQgMyBlbHNlXG4gICAgICBkZWNfcmV0IDQgKHV0Zl84X3VjaGFyXzQgYjAgYjEgYjIgYjMpXG4gIHwgJ1xceEY0JyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feDhGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBiMiA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjIgdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgbGV0IGIzID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMyB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgZGVjX3JldCA0ICh1dGZfOF91Y2hhcl80IGIwIGIxIGIyIGIzKVxuICB8IF8gLT4gZGVjX2ludmFsaWQgMVxuXG5sZXQgc2V0X3V0Zl84X3VjaGFyIGIgaSB1ID1cbiAgbGV0IHNldCA9IHVuc2FmZV9zZXRfdWludDggaW5cbiAgbGV0IG1heCA9IGxlbmd0aCBiIC0gMSBpblxuICBtYXRjaCBVY2hhci50b19pbnQgdSB3aXRoXG4gIHwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxuICB8IHUgd2hlbiB1IDw9IDB4MDA3RiAtPlxuICAgICAgc2V0X3VpbnQ4IGIgaSB1O1xuICAgICAgMVxuICB8IHUgd2hlbiB1IDw9IDB4MDdGRiAtPlxuICAgICAgbGV0IGxhc3QgPSBpICsgMSBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIDAgZWxzZVxuICAgICAgKHNldF91aW50OCBiIGkgKDB4QzAgbG9yICh1IGxzciA2KSk7XG4gICAgICAgc2V0IGIgbGFzdCAoMHg4MCBsb3IgKHUgbGFuZCAweDNGKSk7XG4gICAgICAgMilcbiAgfCB1IHdoZW4gdSA8PSAweEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDIgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2VcbiAgICAgIChzZXRfdWludDggYiBpICgweEUwIGxvciAodSBsc3IgMTIpKTtcbiAgICAgICBzZXQgYiAoaSArIDEpICgweDgwIGxvciAoKHUgbHNyIDYpIGxhbmQgMHgzRikpO1xuICAgICAgIHNldCBiIGxhc3QgKDB4ODAgbG9yICh1IGxhbmQgMHgzRikpO1xuICAgICAgIDMpXG4gIHwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2VcbiAgICAgIChzZXRfdWludDggYiBpICgweEYwIGxvciAodSBsc3IgMTgpKTtcbiAgICAgICBzZXQgYiAoaSArIDEpICgweDgwIGxvciAoKHUgbHNyIDEyKSBsYW5kIDB4M0YpKTtcbiAgICAgICBzZXQgYiAoaSArIDIpICgweDgwIGxvciAoKHUgbHNyIDYpIGxhbmQgMHgzRikpO1xuICAgICAgIHNldCBiIGxhc3QgKDB4ODAgbG9yICh1IGxhbmQgMHgzRikpO1xuICAgICAgIDQpXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxubGV0IGlzX3ZhbGlkX3V0Zl84IGIgPVxuICBsZXQgcmVjIGxvb3AgbWF4IGIgaSA9XG4gICAgaWYgaSA+IG1heCB0aGVuIHRydWUgZWxzZVxuICAgIGxldCBnZXQgPSB1bnNhZmVfZ2V0X3VpbnQ4IGluXG4gICAgbWF0Y2ggQ2hhci51bnNhZmVfY2hyIChnZXQgYiBpKSB3aXRoXG4gICAgfCAnXFx4MDAnIC4uICdcXHg3RicgLT4gbG9vcCBtYXggYiAoaSArIDEpXG4gICAgfCAnXFx4QzInIC4uICdcXHhERicgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMSBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCAnXFx4RTAnIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDIgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heFxuICAgICAgICB8fCBub3RfaW5feEEwX3RvX3hCRiAoZ2V0IGIgKGkgKyAxKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8ICdcXHhFMScgLi4gJ1xceEVDJyB8ICdcXHhFRScgLi4gJ1xceEVGJyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAyIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIChpICsgMSkpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCAnXFx4RUQnIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDIgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heFxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3g5RiAoZ2V0IGIgKGkgKyAxKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8ICdcXHhGMCcgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94OTBfdG9feEJGIChnZXQgYiAoaSArIDEpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgKGkgKyAyKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8ICdcXHhGMScgLi4gJ1xceEYzJyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIChpICsgMSkpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiAoaSArIDIpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgbGFzdClcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGxvb3AgbWF4IGIgKGxhc3QgKyAxKVxuICAgIHwgJ1xceEY0JyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194OEYgKGdldCBiIChpICsgMSkpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiAoaSArIDIpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgbGFzdClcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGxvb3AgbWF4IGIgKGxhc3QgKyAxKVxuICAgIHwgXyAtPiBmYWxzZVxuICBpblxuICBsb29wIChsZW5ndGggYiAtIDEpIGIgMFxuXG4oKiBVVEYtMTZCRSAqKVxuXG5sZXQgZ2V0X3V0Zl8xNmJlX3VjaGFyIGIgaSA9XG4gIGxldCBnZXQgPSB1bnNhZmVfZ2V0X3VpbnQxNl9iZSBpblxuICBsZXQgbWF4ID0gbGVuZ3RoIGIgLSAxIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBtYXggdGhlbiBpbnZhbGlkX2FyZyBcImluZGV4IG91dCBvZiBib3VuZHNcIiBlbHNlXG4gIGlmIGkgPSBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gIHwgdSB3aGVuIHUgPCAweEQ4MDAgfHwgdSA+IDB4REZGRiAtPiBkZWNfcmV0IDIgdVxuICB8IHUgd2hlbiB1ID4gMHhEQkZGIC0+IGRlY19pbnZhbGlkIDJcbiAgfCBoaSAtPiAoKiBjb21iaW5lIFtoaV0gd2l0aCBhIGxvdyBzdXJyb2dhdGUgKilcbiAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAobWF4IC0gaSArIDEpIGVsc2VcbiAgICAgIG1hdGNoIGdldCBiIChpICsgMikgd2l0aFxuICAgICAgfCB1IHdoZW4gdSA8IDB4REMwMCB8fCB1ID4gMHhERkZGIC0+IGRlY19pbnZhbGlkIDIgKCogcmV0cnkgaGVyZSAqKVxuICAgICAgfCBsbyAtPlxuICAgICAgICAgIGxldCB1ID0gKCgoaGkgbGFuZCAweDNGRikgbHNsIDEwKSBsb3IgKGxvIGxhbmQgMHgzRkYpKSArIDB4MTAwMDAgaW5cbiAgICAgICAgICBkZWNfcmV0IDQgdVxuXG5sZXQgc2V0X3V0Zl8xNmJlX3VjaGFyIGIgaSB1ID1cbiAgbGV0IHNldCA9IHVuc2FmZV9zZXRfdWludDE2X2JlIGluXG4gIGxldCBtYXggPSBsZW5ndGggYiAtIDEgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IG1heCB0aGVuIGludmFsaWRfYXJnIFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiIGVsc2VcbiAgbWF0Y2ggVWNoYXIudG9faW50IHUgd2l0aFxuICB8IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbiAgfCB1IHdoZW4gdSA8PSAweEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDEgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2UgKHNldCBiIGkgdTsgMilcbiAgfCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPlxuICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIDAgZWxzZVxuICAgICAgbGV0IHUnID0gdSAtIDB4MTAwMDAgaW5cbiAgICAgIGxldCBoaSA9ICgweEQ4MDAgbG9yICh1JyBsc3IgMTApKSBpblxuICAgICAgbGV0IGxvID0gKDB4REMwMCBsb3IgKHUnIGxhbmQgMHgzRkYpKSBpblxuICAgICAgc2V0IGIgaSBoaTsgc2V0IGIgKGkgKyAyKSBsbzsgNFxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBpc192YWxpZF91dGZfMTZiZSBiID1cbiAgbGV0IHJlYyBsb29wIG1heCBiIGkgPVxuICAgIGxldCBnZXQgPSB1bnNhZmVfZ2V0X3VpbnQxNl9iZSBpblxuICAgIGlmIGkgPiBtYXggdGhlbiB0cnVlIGVsc2VcbiAgICBpZiBpID0gbWF4IHRoZW4gZmFsc2UgZWxzZVxuICAgIG1hdGNoIGdldCBiIGkgd2l0aFxuICAgIHwgdSB3aGVuIHUgPCAweEQ4MDAgfHwgdSA+IDB4REZGRiAtPiBsb29wIG1heCBiIChpICsgMilcbiAgICB8IHUgd2hlbiB1ID4gMHhEQkZGIC0+IGZhbHNlXG4gICAgfCBfaGkgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gZmFsc2UgZWxzZVxuICAgICAgICBtYXRjaCBnZXQgYiAoaSArIDIpIHdpdGhcbiAgICAgICAgfCB1IHdoZW4gdSA8IDB4REMwMCB8fCB1ID4gMHhERkZGIC0+IGZhbHNlXG4gICAgICAgIHwgX2xvIC0+IGxvb3AgbWF4IGIgKGkgKyA0KVxuICBpblxuICBsb29wIChsZW5ndGggYiAtIDEpIGIgMFxuXG4oKiBVVEYtMTZMRSAqKVxuXG5sZXQgZ2V0X3V0Zl8xNmxlX3VjaGFyIGIgaSA9XG4gIGxldCBnZXQgPSB1bnNhZmVfZ2V0X3VpbnQxNl9sZSBpblxuICBsZXQgbWF4ID0gbGVuZ3RoIGIgLSAxIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBtYXggdGhlbiBpbnZhbGlkX2FyZyBcImluZGV4IG91dCBvZiBib3VuZHNcIiBlbHNlXG4gIGlmIGkgPSBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gIHwgdSB3aGVuIHUgPCAweEQ4MDAgfHwgdSA+IDB4REZGRiAtPiBkZWNfcmV0IDIgdVxuICB8IHUgd2hlbiB1ID4gMHhEQkZGIC0+IGRlY19pbnZhbGlkIDJcbiAgfCBoaSAtPiAoKiBjb21iaW5lIFtoaV0gd2l0aCBhIGxvdyBzdXJyb2dhdGUgKilcbiAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAobWF4IC0gaSArIDEpIGVsc2VcbiAgICAgIG1hdGNoIGdldCBiIChpICsgMikgd2l0aFxuICAgICAgfCB1IHdoZW4gdSA8IDB4REMwMCB8fCB1ID4gMHhERkZGIC0+IGRlY19pbnZhbGlkIDIgKCogcmV0cnkgaGVyZSAqKVxuICAgICAgfCBsbyAtPlxuICAgICAgICAgIGxldCB1ID0gKCgoaGkgbGFuZCAweDNGRikgbHNsIDEwKSBsb3IgKGxvIGxhbmQgMHgzRkYpKSArIDB4MTAwMDAgaW5cbiAgICAgICAgICBkZWNfcmV0IDQgdVxuXG5sZXQgc2V0X3V0Zl8xNmxlX3VjaGFyIGIgaSB1ID1cbiAgbGV0IHNldCA9IHVuc2FmZV9zZXRfdWludDE2X2xlIGluXG4gIGxldCBtYXggPSBsZW5ndGggYiAtIDEgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IG1heCB0aGVuIGludmFsaWRfYXJnIFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiIGVsc2VcbiAgbWF0Y2ggVWNoYXIudG9faW50IHUgd2l0aFxuICB8IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbiAgfCB1IHdoZW4gdSA8PSAweEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDEgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2UgKHNldCBiIGkgdTsgMilcbiAgfCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPlxuICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIDAgZWxzZVxuICAgICAgbGV0IHUnID0gdSAtIDB4MTAwMDAgaW5cbiAgICAgIGxldCBoaSA9ICgweEQ4MDAgbG9yICh1JyBsc3IgMTApKSBpblxuICAgICAgbGV0IGxvID0gKDB4REMwMCBsb3IgKHUnIGxhbmQgMHgzRkYpKSBpblxuICAgICAgc2V0IGIgaSBoaTsgc2V0IGIgKGkgKyAyKSBsbzsgNFxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBpc192YWxpZF91dGZfMTZsZSBiID1cbiAgbGV0IHJlYyBsb29wIG1heCBiIGkgPVxuICAgIGxldCBnZXQgPSB1bnNhZmVfZ2V0X3VpbnQxNl9sZSBpblxuICAgIGlmIGkgPiBtYXggdGhlbiB0cnVlIGVsc2VcbiAgICBpZiBpID0gbWF4IHRoZW4gZmFsc2UgZWxzZVxuICAgIG1hdGNoIGdldCBiIGkgd2l0aFxuICAgIHwgdSB3aGVuIHUgPCAweEQ4MDAgfHwgdSA+IDB4REZGRiAtPiBsb29wIG1heCBiIChpICsgMilcbiAgICB8IHUgd2hlbiB1ID4gMHhEQkZGIC0+IGZhbHNlXG4gICAgfCBfaGkgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gZmFsc2UgZWxzZVxuICAgICAgICBtYXRjaCBnZXQgYiAoaSArIDIpIHdpdGhcbiAgICAgICAgfCB1IHdoZW4gdSA8IDB4REMwMCB8fCB1ID4gMHhERkZGIC0+IGZhbHNlXG4gICAgICAgIHwgX2xvIC0+IGxvb3AgbWF4IGIgKGkgKyA0KVxuICBpblxuICBsb29wIChsZW5ndGggYiAtIDEpIGIgMFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSBpbnRcblxubGV0IHplcm8gPSAwXG5sZXQgb25lID0gMVxubGV0IG1pbnVzX29uZSA9IC0xXG5leHRlcm5hbCBuZWcgOiBpbnQgLT4gaW50ID0gXCIlbmVnaW50XCJcbmV4dGVybmFsIGFkZCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYWRkaW50XCJcbmV4dGVybmFsIHN1YiA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlc3ViaW50XCJcbmV4dGVybmFsIG11bCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbXVsaW50XCJcbmV4dGVybmFsIGRpdiA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlZGl2aW50XCJcbmV4dGVybmFsIHJlbSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbW9kaW50XCJcbmV4dGVybmFsIHN1Y2MgOiBpbnQgLT4gaW50ID0gXCIlc3VjY2ludFwiXG5leHRlcm5hbCBwcmVkIDogaW50IC0+IGludCA9IFwiJXByZWRpbnRcIlxubGV0IGFicyB4ID0gaWYgeCA+PSAwIHRoZW4geCBlbHNlIC14XG5sZXQgbWF4X2ludCA9ICgtMSkgbHNyIDFcbmxldCBtaW5faW50ID0gbWF4X2ludCArIDFcbmV4dGVybmFsIGxvZ2FuZCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYW5kaW50XCJcbmV4dGVybmFsIGxvZ29yIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVvcmludFwiXG5leHRlcm5hbCBsb2d4b3IgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXhvcmludFwiXG5sZXQgbG9nbm90IHggPSBsb2d4b3IgeCAoLTEpXG5leHRlcm5hbCBzaGlmdF9sZWZ0IDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc2xpbnRcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFzcmludFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc3JpbnRcIlxubGV0IGVxdWFsIDogaW50IC0+IGludCAtPiBib29sID0gKCA9IClcbmxldCBjb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQgPSBTdGRsaWIuY29tcGFyZVxubGV0IG1pbiB4IHkgOiB0ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5IDogdCA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5leHRlcm5hbCB0b19mbG9hdCA6IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0b2ZpbnRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcblxuKCpcbmV4dGVybmFsIGludF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50ID0gXCJjYW1sX2ludF9vZl9zdHJpbmdcIlxubGV0IG9mX3N0cmluZyBzID0gdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgcykgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuKilcblxuZXh0ZXJuYWwgZm9ybWF0X2ludCA6IHN0cmluZyAtPiBpbnQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9pbnRcIlxubGV0IHRvX3N0cmluZyB4ID0gZm9ybWF0X2ludCBcIiVkXCIgeFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgR2FsbGl1bSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBTdHJpbmcgb3BlcmF0aW9ucywgYmFzZWQgb24gYnl0ZSBzZXF1ZW5jZSBvcGVyYXRpb25zICopXG5cbigqIFdBUk5JTkc6IFNvbWUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZSBhcmUgZHVwbGljYXRlZCBpbiBieXRlcy5tbCBmb3JcbiAgIGVmZmljaWVuY3kgcmVhc29ucy4gV2hlbiB5b3UgbW9kaWZ5IHRoZSBvbmUgaW4gdGhpcyBmaWxlIHlvdSBuZWVkIHRvXG4gICBtb2RpZnkgaXRzIGR1cGxpY2F0ZSBpbiBieXRlcy5tbC5cbiAgIFRoZXNlIGZ1bmN0aW9ucyBoYXZlIGEgXCJkdXBsaWNhdGVkXCIgY29tbWVudCBhYm92ZSB0aGVpciBkZWZpbml0aW9uLlxuKilcblxuZXh0ZXJuYWwgbGVuZ3RoIDogc3RyaW5nIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuZXh0ZXJuYWwgZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcbmV4dGVybmFsIHNldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVzdHJpbmdfc2FmZV9zZXRcIlxuZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IGJ5dGVzID0gXCJjYW1sX2NyZWF0ZV9zdHJpbmdcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ191bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9zZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlc3RyaW5nX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgOiBzdHJpbmcgLT4gaW50IC0+ICBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfc3RyaW5nXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHVuc2FmZV9maWxsIDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiBjaGFyIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2ZpbGxfc3RyaW5nXCIgW0BAbm9hbGxvY11cblxubW9kdWxlIEIgPSBCeXRlc1xuXG5sZXQgYnRzID0gQi51bnNhZmVfdG9fc3RyaW5nXG5sZXQgYm9zID0gQi51bnNhZmVfb2Zfc3RyaW5nXG5cbmxldCBtYWtlIG4gYyA9XG4gIEIubWFrZSBuIGMgfD4gYnRzXG5sZXQgaW5pdCBuIGYgPVxuICBCLmluaXQgbiBmIHw+IGJ0c1xubGV0IGVtcHR5ID0gXCJcIlxubGV0IGNvcHkgcyA9XG4gIEIuY29weSAoYm9zIHMpIHw+IGJ0c1xubGV0IG9mX2J5dGVzID0gQi50b19zdHJpbmdcbmxldCB0b19ieXRlcyA9IEIub2Zfc3RyaW5nXG5sZXQgc3ViIHMgb2ZzIGxlbiA9XG4gIEIuc3ViIChib3Mgcykgb2ZzIGxlbiB8PiBidHNcbmxldCBmaWxsID1cbiAgQi5maWxsXG5sZXQgYmxpdCA9XG4gIEIuYmxpdF9zdHJpbmdcblxubGV0IGVuc3VyZV9nZSAoeDppbnQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgaW52YWxpZF9hcmcgXCJTdHJpbmcuY29uY2F0XCJcblxubGV0IHJlYyBzdW1fbGVuZ3RocyBhY2Mgc2VwbGVuID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBhY2NcbiAgfCBoZCA6OiBbXSAtPiBsZW5ndGggaGQgKyBhY2NcbiAgfCBoZCA6OiB0bCAtPiBzdW1fbGVuZ3RocyAoZW5zdXJlX2dlIChsZW5ndGggaGQgKyBzZXBsZW4gKyBhY2MpIGFjYykgc2VwbGVuIHRsXG5cbmxldCByZWMgdW5zYWZlX2JsaXRzIGRzdCBwb3Mgc2VwIHNlcGxlbiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZHN0XG4gIHwgaGQgOjogW10gLT5cbiAgICB1bnNhZmVfYmxpdCBoZCAwIGRzdCBwb3MgKGxlbmd0aCBoZCk7IGRzdFxuICB8IGhkIDo6IHRsIC0+XG4gICAgdW5zYWZlX2JsaXQgaGQgMCBkc3QgcG9zIChsZW5ndGggaGQpO1xuICAgIHVuc2FmZV9ibGl0IHNlcCAwIGRzdCAocG9zICsgbGVuZ3RoIGhkKSBzZXBsZW47XG4gICAgdW5zYWZlX2JsaXRzIGRzdCAocG9zICsgbGVuZ3RoIGhkICsgc2VwbGVuKSBzZXAgc2VwbGVuIHRsXG5cbmxldCBjb25jYXQgc2VwID0gZnVuY3Rpb25cbiAgICBbXSAtPiBcIlwiXG4gIHwgbCAtPiBsZXQgc2VwbGVuID0gbGVuZ3RoIHNlcCBpbiBidHMgQEBcbiAgICAgICAgICB1bnNhZmVfYmxpdHNcbiAgICAgICAgICAgIChCLmNyZWF0ZSAoc3VtX2xlbmd0aHMgMCBzZXBsZW4gbCkpXG4gICAgICAgICAgICAwIHNlcCBzZXBsZW4gbFxuXG5sZXQgY2F0ID0gKCBeIClcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGl0ZXIgZiBzID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzIC0gMSBkbyBmICh1bnNhZmVfZ2V0IHMgaSkgZG9uZVxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaXRlcmkgZiBzID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzIC0gMSBkbyBmIGkgKHVuc2FmZV9nZXQgcyBpKSBkb25lXG5cbmxldCBtYXAgZiBzID1cbiAgQi5tYXAgZiAoYm9zIHMpIHw+IGJ0c1xubGV0IG1hcGkgZiBzID1cbiAgQi5tYXBpIGYgKGJvcyBzKSB8PiBidHNcbmxldCBmb2xkX3JpZ2h0IGYgeCBhID1cbiAgQi5mb2xkX3JpZ2h0IGYgKGJvcyB4KSBhXG5sZXQgZm9sZF9sZWZ0IGYgYSB4ID1cbiAgQi5mb2xkX2xlZnQgZiBhIChib3MgeClcbmxldCBleGlzdHMgZiBzID1cbiAgQi5leGlzdHMgZiAoYm9zIHMpXG5sZXQgZm9yX2FsbCBmIHMgPVxuICBCLmZvcl9hbGwgZiAoYm9zIHMpXG5cbigqIEJld2FyZTogd2UgY2Fubm90IHVzZSBCLnRyaW0gb3IgQi5lc2NhcGUgYmVjYXVzZSB0aGV5IGFsd2F5cyBtYWtlIGFcbiAgIGNvcHksIGJ1dCBTdHJpbmcubWxpIHNwZWxscyBvdXQgc29tZSBjYXNlcyB3aGVyZSB3ZSBhcmUgbm90IGFsbG93ZWRcbiAgIHRvIG1ha2UgYSBjb3B5LiAqKVxuXG5sZXQgaXNfc3BhY2UgPSBmdW5jdGlvblxuICB8ICcgJyB8ICdcXDAxMicgfCAnXFxuJyB8ICdcXHInIHwgJ1xcdCcgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxubGV0IHRyaW0gcyA9XG4gIGlmIHMgPSBcIlwiIHRoZW4gc1xuICBlbHNlIGlmIGlzX3NwYWNlICh1bnNhZmVfZ2V0IHMgMCkgfHwgaXNfc3BhY2UgKHVuc2FmZV9nZXQgcyAobGVuZ3RoIHMgLSAxKSlcbiAgICB0aGVuIGJ0cyAoQi50cmltIChib3MgcykpXG4gIGVsc2Ugc1xuXG5sZXQgZXNjYXBlZCBzID1cbiAgbGV0IHJlYyBlc2NhcGVfaWZfbmVlZGVkIHMgbiBpID1cbiAgICBpZiBpID49IG4gdGhlbiBzIGVsc2VcbiAgICAgIG1hdGNoIHVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgIHwgJ1xcXCInIHwgJ1xcXFwnIHwgJ1xcMDAwJy4uJ1xcMDMxJyB8ICdcXDEyNycuLiAnXFwyNTUnIC0+XG4gICAgICAgICAgYnRzIChCLmVzY2FwZWQgKGJvcyBzKSlcbiAgICAgIHwgXyAtPiBlc2NhcGVfaWZfbmVlZGVkIHMgbiAoaSsxKVxuICBpblxuICBlc2NhcGVfaWZfbmVlZGVkIHMgKGxlbmd0aCBzKSAwXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByZWMgaW5kZXhfcmVjIHMgbGltIGkgYyA9XG4gIGlmIGkgPj0gbGltIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gaSBlbHNlIGluZGV4X3JlYyBzIGxpbSAoaSArIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGluZGV4IHMgYyA9IGluZGV4X3JlYyBzIChsZW5ndGggcykgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByZWMgaW5kZXhfcmVjX29wdCBzIGxpbSBpIGMgPVxuICBpZiBpID49IGxpbSB0aGVuIE5vbmUgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBTb21lIGkgZWxzZSBpbmRleF9yZWNfb3B0IHMgbGltIChpICsgMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaW5kZXhfb3B0IHMgYyA9IGluZGV4X3JlY19vcHQgcyAobGVuZ3RoIHMpIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaW5kZXhfZnJvbSBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5pbmRleF9mcm9tIC8gQnl0ZXMuaW5kZXhfZnJvbVwiIGVsc2VcbiAgICBpbmRleF9yZWMgcyBsIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaW5kZXhfZnJvbV9vcHQgcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5pbmRleF9mcm9tX29wdCAvIEJ5dGVzLmluZGV4X2Zyb21fb3B0XCJcbiAgZWxzZVxuICAgIGluZGV4X3JlY19vcHQgcyBsIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmVjIHJpbmRleF9yZWMgcyBpIGMgPVxuICBpZiBpIDwgMCB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIGkgZWxzZSByaW5kZXhfcmVjIHMgKGkgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByaW5kZXggcyBjID0gcmluZGV4X3JlYyBzIChsZW5ndGggcyAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJpbmRleF9mcm9tIHMgaSBjID1cbiAgaWYgaSA8IC0xIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tIC8gQnl0ZXMucmluZGV4X2Zyb21cIlxuICBlbHNlXG4gICAgcmluZGV4X3JlYyBzIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmVjIHJpbmRleF9yZWNfb3B0IHMgaSBjID1cbiAgaWYgaSA8IDAgdGhlbiBOb25lIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gU29tZSBpIGVsc2UgcmluZGV4X3JlY19vcHQgcyAoaSAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJpbmRleF9vcHQgcyBjID0gcmluZGV4X3JlY19vcHQgcyAobGVuZ3RoIHMgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByaW5kZXhfZnJvbV9vcHQgcyBpIGMgPVxuICBpZiBpIDwgLTEgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmluZGV4X2Zyb21fb3B0IC8gQnl0ZXMucmluZGV4X2Zyb21fb3B0XCJcbiAgZWxzZVxuICAgIHJpbmRleF9yZWNfb3B0IHMgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBjb250YWluc19mcm9tIHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcuY29udGFpbnNfZnJvbSAvIEJ5dGVzLmNvbnRhaW5zX2Zyb21cIlxuICBlbHNlXG4gICAgdHJ5IGlnbm9yZSAoaW5kZXhfcmVjIHMgbCBpIGMpOyB0cnVlIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBjb250YWlucyBzIGMgPSBjb250YWluc19mcm9tIHMgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByY29udGFpbnNfZnJvbSBzIGkgYyA9XG4gIGlmIGkgPCAwIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJjb250YWluc19mcm9tIC8gQnl0ZXMucmNvbnRhaW5zX2Zyb21cIlxuICBlbHNlXG4gICAgdHJ5IGlnbm9yZSAocmluZGV4X3JlYyBzIGkgYyk7IHRydWUgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcblxubGV0IHVwcGVyY2FzZV9hc2NpaSBzID1cbiAgQi51cHBlcmNhc2VfYXNjaWkgKGJvcyBzKSB8PiBidHNcbmxldCBsb3dlcmNhc2VfYXNjaWkgcyA9XG4gIEIubG93ZXJjYXNlX2FzY2lpIChib3MgcykgfD4gYnRzXG5sZXQgY2FwaXRhbGl6ZV9hc2NpaSBzID1cbiAgQi5jYXBpdGFsaXplX2FzY2lpIChib3MgcykgfD4gYnRzXG5sZXQgdW5jYXBpdGFsaXplX2FzY2lpIHMgPVxuICBCLnVuY2FwaXRhbGl6ZV9hc2NpaSAoYm9zIHMpIHw+IGJ0c1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgc3RhcnRzX3dpdGggfnByZWZpeCBzID1cbiAgbGV0IGxlbl9zID0gbGVuZ3RoIHNcbiAgYW5kIGxlbl9wcmUgPSBsZW5ndGggcHJlZml4IGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBsZW5fcHJlIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgdW5zYWZlX2dldCBzIGkgPD4gdW5zYWZlX2dldCBwcmVmaXggaSB0aGVuIGZhbHNlXG4gICAgZWxzZSBhdXggKGkgKyAxKVxuICBpbiBsZW5fcyA+PSBsZW5fcHJlICYmIGF1eCAwXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBlbmRzX3dpdGggfnN1ZmZpeCBzID1cbiAgbGV0IGxlbl9zID0gbGVuZ3RoIHNcbiAgYW5kIGxlbl9zdWYgPSBsZW5ndGggc3VmZml4IGluXG4gIGxldCBkaWZmID0gbGVuX3MgLSBsZW5fc3VmIGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBsZW5fc3VmIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgdW5zYWZlX2dldCBzIChkaWZmICsgaSkgPD4gdW5zYWZlX2dldCBzdWZmaXggaSB0aGVuIGZhbHNlXG4gICAgZWxzZSBhdXggKGkgKyAxKVxuICBpbiBkaWZmID49IDAgJiYgYXV4IDBcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHNwbGl0X29uX2NoYXIgc2VwIHMgPVxuICBsZXQgciA9IHJlZiBbXSBpblxuICBsZXQgaiA9IHJlZiAobGVuZ3RoIHMpIGluXG4gIGZvciBpID0gbGVuZ3RoIHMgLSAxIGRvd250byAwIGRvXG4gICAgaWYgdW5zYWZlX2dldCBzIGkgPSBzZXAgdGhlbiBiZWdpblxuICAgICAgciA6PSBzdWIgcyAoaSArIDEpICghaiAtIGkgLSAxKSA6OiAhcjtcbiAgICAgIGogOj0gaVxuICAgIGVuZFxuICBkb25lO1xuICBzdWIgcyAwICFqIDo6ICFyXG5cbigqIERlcHJlY2F0ZWQgZnVuY3Rpb25zIGltcGxlbWVudGVkIHZpYSBvdGhlciBkZXByZWNhdGVkIGZ1bmN0aW9ucyAqKVxuW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxubGV0IHVwcGVyY2FzZSBzID1cbiAgQi51cHBlcmNhc2UgKGJvcyBzKSB8PiBidHNcbmxldCBsb3dlcmNhc2UgcyA9XG4gIEIubG93ZXJjYXNlIChib3MgcykgfD4gYnRzXG5sZXQgY2FwaXRhbGl6ZSBzID1cbiAgQi5jYXBpdGFsaXplIChib3MgcykgfD4gYnRzXG5sZXQgdW5jYXBpdGFsaXplIHMgPVxuICBCLnVuY2FwaXRhbGl6ZSAoYm9zIHMpIHw+IGJ0c1xuXG50eXBlIHQgPSBzdHJpbmdcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxuZXh0ZXJuYWwgZXF1YWwgOiBzdHJpbmcgLT4gc3RyaW5nIC0+IGJvb2wgPSBcImNhbWxfc3RyaW5nX2VxdWFsXCIgW0BAbm9hbGxvY11cblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBzID0gYm9zIHMgfD4gQi50b19zZXFcblxubGV0IHRvX3NlcWkgcyA9IGJvcyBzIHw+IEIudG9fc2VxaVxuXG5sZXQgb2Zfc2VxIGcgPSBCLm9mX3NlcSBnIHw+IGJ0c1xuXG4oKiBVVEYgZGVjb2RlcnMgYW5kIHZhbGlkYXRvcnMgKilcblxubGV0IGdldF91dGZfOF91Y2hhciBzIGkgPSBCLmdldF91dGZfOF91Y2hhciAoYm9zIHMpIGlcbmxldCBpc192YWxpZF91dGZfOCBzID0gQi5pc192YWxpZF91dGZfOCAoYm9zIHMpXG5cbmxldCBnZXRfdXRmXzE2YmVfdWNoYXIgcyBpID0gQi5nZXRfdXRmXzE2YmVfdWNoYXIgKGJvcyBzKSBpXG5sZXQgaXNfdmFsaWRfdXRmXzE2YmUgcyA9IEIuaXNfdmFsaWRfdXRmXzE2YmUgKGJvcyBzKVxuXG5sZXQgZ2V0X3V0Zl8xNmxlX3VjaGFyIHMgaSA9IEIuZ2V0X3V0Zl8xNmxlX3VjaGFyIChib3MgcykgaVxubGV0IGlzX3ZhbGlkX3V0Zl8xNmxlIHMgPSBCLmlzX3ZhbGlkX3V0Zl8xNmxlIChib3MgcylcblxuKCoqIHs2IEJpbmFyeSBlbmNvZGluZy9kZWNvZGluZyBvZiBpbnRlZ2Vyc30gKilcblxuZXh0ZXJuYWwgZ2V0X3VpbnQ4IDogc3RyaW5nIC0+IGludCAtPiBpbnQgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgZ2V0X3VpbnQxNl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9zdHJpbmdfZ2V0MTZcIlxuZXh0ZXJuYWwgZ2V0X2ludDMyX25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQzMiA9IFwiJWNhbWxfc3RyaW5nX2dldDMyXCJcbmV4dGVybmFsIGdldF9pbnQ2NF9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50NjQgPSBcIiVjYW1sX3N0cmluZ19nZXQ2NFwiXG5cbmxldCBnZXRfaW50OCBzIGkgPSBCLmdldF9pbnQ4IChib3MgcykgaVxubGV0IGdldF91aW50MTZfbGUgcyBpID0gQi5nZXRfdWludDE2X2xlIChib3MgcykgaVxubGV0IGdldF91aW50MTZfYmUgcyBpID0gQi5nZXRfdWludDE2X2JlIChib3MgcykgaVxubGV0IGdldF9pbnQxNl9uZSBzIGkgPSBCLmdldF9pbnQxNl9uZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MTZfbGUgcyBpID0gQi5nZXRfaW50MTZfbGUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDE2X2JlIHMgaSA9IEIuZ2V0X2ludDE2X2JlIChib3MgcykgaVxubGV0IGdldF9pbnQzMl9sZSBzIGkgPSBCLmdldF9pbnQzMl9sZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MzJfYmUgcyBpID0gQi5nZXRfaW50MzJfYmUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDY0X2xlIHMgaSA9IEIuZ2V0X2ludDY0X2xlIChib3MgcykgaVxubGV0IGdldF9pbnQ2NF9iZSBzIGkgPSBCLmdldF9pbnQ2NF9iZSAoYm9zIHMpIGlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gdW5pdCA9ICgpXG5cbmxldCBlcXVhbCAoKSAoKSA9IHRydWVcbmxldCBjb21wYXJlICgpICgpID0gMFxubGV0IHRvX3N0cmluZyAoKSA9IFwiKClcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGV4dGVybl9mbGFncyA9XG4gICAgTm9fc2hhcmluZ1xuICB8IENsb3N1cmVzXG4gIHwgQ29tcGF0XzMyXG4oKiBub3RlOiB0aGlzIHR5cGUgZGVmaW5pdGlvbiBpcyB1c2VkIGluICdydW50aW1lL2RlYnVnZ2VyLmMnICopXG5cbmV4dGVybmFsIHRvX2NoYW5uZWw6IG91dF9jaGFubmVsIC0+ICdhIC0+IGV4dGVybl9mbGFncyBsaXN0IC0+IHVuaXRcbiAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVcIlxuZXh0ZXJuYWwgdG9fYnl0ZXM6ICdhIC0+IGV4dGVybl9mbGFncyBsaXN0IC0+IGJ5dGVzXG4gICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J5dGVzXCJcbmV4dGVybmFsIHRvX3N0cmluZzogJ2EgLT4gZXh0ZXJuX2ZsYWdzIGxpc3QgLT4gc3RyaW5nXG4gICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZ1wiXG5leHRlcm5hbCB0b19idWZmZXJfdW5zYWZlOlxuICAgICAgYnl0ZXMgLT4gaW50IC0+IGludCAtPiAnYSAtPiBleHRlcm5fZmxhZ3MgbGlzdCAtPiBpbnRcbiAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnVmZmVyXCJcblxubGV0IHRvX2J1ZmZlciBidWZmIG9mcyBsZW4gdiBmbGFncyA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBCeXRlcy5sZW5ndGggYnVmZiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiTWFyc2hhbC50b19idWZmZXI6IHN1YnN0cmluZyBvdXQgb2YgYm91bmRzXCJcbiAgZWxzZSB0b19idWZmZXJfdW5zYWZlIGJ1ZmYgb2ZzIGxlbiB2IGZsYWdzXG5cbigqIFRoZSBmdW5jdGlvbnMgYmVsb3cgdXNlIGJ5dGUgc2VxdWVuY2VzIGFzIGlucHV0LCBuZXZlciB1c2luZyBhbnlcbiAgIG11dGF0aW9uLiBJdCBtYWtlcyBzZW5zZSB0byB1c2Ugbm9uLW11dGF0ZWQgW2J5dGVzXSByYXRoZXIgdGhhblxuICAgW3N0cmluZ10sIGJlY2F1c2Ugd2UgcmVhbGx5IHdvcmsgd2l0aCBzZXF1ZW5jZXMgb2YgYnl0ZXMsIG5vdFxuICAgYSB0ZXh0IHJlcHJlc2VudGF0aW9uLlxuKilcblxuZXh0ZXJuYWwgZnJvbV9jaGFubmVsOiBpbl9jaGFubmVsIC0+ICdhID0gXCJjYW1sX2lucHV0X3ZhbHVlXCJcbmV4dGVybmFsIGZyb21fYnl0ZXNfdW5zYWZlOiBieXRlcyAtPiBpbnQgLT4gJ2EgPSBcImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlc1wiXG5leHRlcm5hbCBkYXRhX3NpemVfdW5zYWZlOiBieXRlcyAtPiBpbnQgLT4gaW50ID0gXCJjYW1sX21hcnNoYWxfZGF0YV9zaXplXCJcblxubGV0IGhlYWRlcl9zaXplID0gMjBcbmxldCBkYXRhX3NpemUgYnVmZiBvZnMgPVxuICBpZiBvZnMgPCAwIHx8IG9mcyA+IEJ5dGVzLmxlbmd0aCBidWZmIC0gaGVhZGVyX3NpemVcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIk1hcnNoYWwuZGF0YV9zaXplXCJcbiAgZWxzZSBkYXRhX3NpemVfdW5zYWZlIGJ1ZmYgb2ZzXG5sZXQgdG90YWxfc2l6ZSBidWZmIG9mcyA9IGhlYWRlcl9zaXplICsgZGF0YV9zaXplIGJ1ZmYgb2ZzXG5cbmxldCBmcm9tX2J5dGVzIGJ1ZmYgb2ZzID1cbiAgaWYgb2ZzIDwgMCB8fCBvZnMgPiBCeXRlcy5sZW5ndGggYnVmZiAtIGhlYWRlcl9zaXplXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJNYXJzaGFsLmZyb21fYnl0ZXNcIlxuICBlbHNlIGJlZ2luXG4gICAgbGV0IGxlbiA9IGRhdGFfc2l6ZV91bnNhZmUgYnVmZiBvZnMgaW5cbiAgICBpZiBvZnMgPiBCeXRlcy5sZW5ndGggYnVmZiAtIChoZWFkZXJfc2l6ZSArIGxlbilcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiTWFyc2hhbC5mcm9tX2J5dGVzXCJcbiAgICBlbHNlIGZyb21fYnl0ZXNfdW5zYWZlIGJ1ZmYgb2ZzXG4gIGVuZFxuXG5sZXQgZnJvbV9zdHJpbmcgYnVmZiBvZnMgPVxuICAoKiBCeXRlcy51bnNhZmVfb2Zfc3RyaW5nIGlzIHNhZmUgaGVyZSwgYXMgdGhlIHByb2R1Y2VkIGJ5dGVcbiAgICAgc2VxdWVuY2UgaXMgbmV2ZXIgbXV0YXRlZCAqKVxuICBmcm9tX2J5dGVzIChCeXRlcy51bnNhZmVfb2Zfc3RyaW5nIGJ1ZmYpIG9mc1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBbiBhbGlhcyBmb3IgdGhlIHR5cGUgb2YgYXJyYXlzLiAqKVxudHlwZSAnYSB0ID0gJ2EgYXJyYXlcblxuKCogQXJyYXkgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBsZW5ndGggOiAnYSBhcnJheSAtPiBpbnQgPSBcIiVhcnJheV9sZW5ndGhcIlxuZXh0ZXJuYWwgZ2V0OiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgPSBcIiVhcnJheV9zYWZlX2dldFwiXG5leHRlcm5hbCBzZXQ6ICdhIGFycmF5IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlYXJyYXlfc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhID0gXCIlYXJyYXlfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfc2V0OiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWFycmF5X3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgbWFrZTogaW50IC0+ICdhIC0+ICdhIGFycmF5ID0gXCJjYW1sX21ha2VfdmVjdFwiXG5leHRlcm5hbCBjcmVhdGU6IGludCAtPiAnYSAtPiAnYSBhcnJheSA9IFwiY2FtbF9tYWtlX3ZlY3RcIlxuZXh0ZXJuYWwgdW5zYWZlX3N1YiA6ICdhIGFycmF5IC0+IGludCAtPiBpbnQgLT4gJ2EgYXJyYXkgPSBcImNhbWxfYXJyYXlfc3ViXCJcbmV4dGVybmFsIGFwcGVuZF9wcmltIDogJ2EgYXJyYXkgLT4gJ2EgYXJyYXkgLT4gJ2EgYXJyYXkgPSBcImNhbWxfYXJyYXlfYXBwZW5kXCJcbmV4dGVybmFsIGNvbmNhdCA6ICdhIGFycmF5IGxpc3QgLT4gJ2EgYXJyYXkgPSBcImNhbWxfYXJyYXlfY29uY2F0XCJcbmV4dGVybmFsIHVuc2FmZV9ibGl0IDpcbiAgJ2EgYXJyYXkgLT4gaW50IC0+ICdhIGFycmF5IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9hcnJheV9ibGl0XCJcbmV4dGVybmFsIHVuc2FmZV9maWxsIDpcbiAgJ2EgYXJyYXkgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2FycmF5X2ZpbGxcIlxuZXh0ZXJuYWwgY3JlYXRlX2Zsb2F0OiBpbnQgLT4gZmxvYXQgYXJyYXkgPSBcImNhbWxfbWFrZV9mbG9hdF92ZWN0XCJcbmxldCBtYWtlX2Zsb2F0ID0gY3JlYXRlX2Zsb2F0XG5cbm1vZHVsZSBGbG9hdGFycmF5ID0gc3RydWN0XG4gIGV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiBmbG9hdGFycmF5ID0gXCJjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlXCJcbiAgZXh0ZXJuYWwgbGVuZ3RoIDogZmxvYXRhcnJheSAtPiBpbnQgPSBcIiVmbG9hdGFycmF5X2xlbmd0aFwiXG4gIGV4dGVybmFsIGdldCA6IGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRhcnJheV9zYWZlX2dldFwiXG4gIGV4dGVybmFsIHNldCA6IGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXQgPSBcIiVmbG9hdGFycmF5X3NhZmVfc2V0XCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldCA6IGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRhcnJheV91bnNhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldCA6IGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXRcbiAgICAgID0gXCIlZmxvYXRhcnJheV91bnNhZmVfc2V0XCJcbmVuZFxuXG5sZXQgaW5pdCBsIGYgPVxuICBpZiBsID0gMCB0aGVuIFt8fF0gZWxzZVxuICBpZiBsIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuaW5pdFwiXG4gICgqIFNlZSAjNjU3NS4gV2UgY291bGQgYWxzbyBjaGVjayBmb3IgbWF4aW11bSBhcnJheSBzaXplLCBidXQgdGhpcyBkZXBlbmRzXG4gICAgIG9uIHdoZXRoZXIgd2UgY3JlYXRlIGEgZmxvYXQgYXJyYXkgb3IgYSByZWd1bGFyIG9uZS4uLiAqKVxuICBlbHNlXG4gICBsZXQgcmVzID0gY3JlYXRlIGwgKGYgMCkgaW5cbiAgIGZvciBpID0gMSB0byBwcmVkIGwgZG9cbiAgICAgdW5zYWZlX3NldCByZXMgaSAoZiBpKVxuICAgZG9uZTtcbiAgIHJlc1xuXG5sZXQgbWFrZV9tYXRyaXggc3ggc3kgaW5pdCA9XG4gIGxldCByZXMgPSBjcmVhdGUgc3ggW3x8XSBpblxuICBmb3IgeCA9IDAgdG8gcHJlZCBzeCBkb1xuICAgIHVuc2FmZV9zZXQgcmVzIHggKGNyZWF0ZSBzeSBpbml0KVxuICBkb25lO1xuICByZXNcblxubGV0IGNyZWF0ZV9tYXRyaXggPSBtYWtlX21hdHJpeFxuXG5sZXQgY29weSBhID1cbiAgbGV0IGwgPSBsZW5ndGggYSBpbiBpZiBsID0gMCB0aGVuIFt8fF0gZWxzZSB1bnNhZmVfc3ViIGEgMCBsXG5cbmxldCBhcHBlbmQgYTEgYTIgPVxuICBsZXQgbDEgPSBsZW5ndGggYTEgaW5cbiAgaWYgbDEgPSAwIHRoZW4gY29weSBhMlxuICBlbHNlIGlmIGxlbmd0aCBhMiA9IDAgdGhlbiB1bnNhZmVfc3ViIGExIDAgbDFcbiAgZWxzZSBhcHBlbmRfcHJpbSBhMSBhMlxuXG5sZXQgc3ViIGEgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggYSAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuc3ViXCJcbiAgZWxzZSB1bnNhZmVfc3ViIGEgb2ZzIGxlblxuXG5sZXQgZmlsbCBhIG9mcyBsZW4gdiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggYSAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuZmlsbFwiXG4gIGVsc2UgdW5zYWZlX2ZpbGwgYSBvZnMgbGVuIHZcblxubGV0IGJsaXQgYTEgb2ZzMSBhMiBvZnMyIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgb2ZzMSA8IDAgfHwgb2ZzMSA+IGxlbmd0aCBhMSAtIGxlblxuICAgICAgICAgICAgIHx8IG9mczIgPCAwIHx8IG9mczIgPiBsZW5ndGggYTIgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmJsaXRcIlxuICBlbHNlIHVuc2FmZV9ibGl0IGExIG9mczEgYTIgb2ZzMiBsZW5cblxubGV0IGl0ZXIgZiBhID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbmxldCBpdGVyMiBmIGEgYiA9XG4gIGlmIGxlbmd0aCBhIDw+IGxlbmd0aCBiIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIkFycmF5Lml0ZXIyOiBhcnJheXMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiXG4gIGVsc2VcbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgKHVuc2FmZV9nZXQgYSBpKSAodW5zYWZlX2dldCBiIGkpIGRvbmVcblxubGV0IG1hcCBmIGEgPVxuICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gIGlmIGwgPSAwIHRoZW4gW3x8XSBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjcmVhdGUgbCAoZih1bnNhZmVfZ2V0IGEgMCkpIGluXG4gICAgZm9yIGkgPSAxIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZih1bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZTtcbiAgICByXG4gIGVuZFxuXG5sZXQgbWFwMiBmIGEgYiA9XG4gIGxldCBsYSA9IGxlbmd0aCBhIGluXG4gIGxldCBsYiA9IGxlbmd0aCBiIGluXG4gIGlmIGxhIDw+IGxiIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIkFycmF5Lm1hcDI6IGFycmF5cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoXCJcbiAgZWxzZSBiZWdpblxuICAgIGlmIGxhID0gMCB0aGVuIFt8fF0gZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBjcmVhdGUgbGEgKGYgKHVuc2FmZV9nZXQgYSAwKSAodW5zYWZlX2dldCBiIDApKSBpblxuICAgICAgZm9yIGkgPSAxIHRvIGxhIC0gMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkpXG4gICAgICBkb25lO1xuICAgICAgclxuICAgIGVuZFxuICBlbmRcblxubGV0IGl0ZXJpIGYgYSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiBpICh1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG5sZXQgbWFwaSBmIGEgPVxuICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gIGlmIGwgPSAwIHRoZW4gW3x8XSBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjcmVhdGUgbCAoZiAwICh1bnNhZmVfZ2V0IGEgMCkpIGluXG4gICAgZm9yIGkgPSAxIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiBpICh1bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZTtcbiAgICByXG4gIGVuZFxuXG5sZXQgdG9fbGlzdCBhID1cbiAgbGV0IHJlYyB0b2xpc3QgaSByZXMgPVxuICAgIGlmIGkgPCAwIHRoZW4gcmVzIGVsc2UgdG9saXN0IChpIC0gMSkgKHVuc2FmZV9nZXQgYSBpIDo6IHJlcykgaW5cbiAgdG9saXN0IChsZW5ndGggYSAtIDEpIFtdXG5cbigqIENhbm5vdCB1c2UgTGlzdC5sZW5ndGggaGVyZSBiZWNhdXNlIHRoZSBMaXN0IG1vZHVsZSBkZXBlbmRzIG9uIEFycmF5LiAqKVxubGV0IHJlYyBsaXN0X2xlbmd0aCBhY2N1ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBhY2N1XG4gIHwgXzo6dCAtPiBsaXN0X2xlbmd0aCAoc3VjYyBhY2N1KSB0XG5cbmxldCBvZl9saXN0ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbfHxdXG4gIHwgaGQ6OnRsIGFzIGwgLT5cbiAgICAgIGxldCBhID0gY3JlYXRlIChsaXN0X2xlbmd0aCAwIGwpIGhkIGluXG4gICAgICBsZXQgcmVjIGZpbGwgaSA9IGZ1bmN0aW9uXG4gICAgICAgICAgW10gLT4gYVxuICAgICAgICB8IGhkOjp0bCAtPiB1bnNhZmVfc2V0IGEgaSBoZDsgZmlsbCAoaSsxKSB0bCBpblxuICAgICAgZmlsbCAxIHRsXG5cbmxldCBmb2xkX2xlZnQgZiB4IGEgPVxuICBsZXQgciA9IHJlZiB4IGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICByIDo9IGYgIXIgKHVuc2FmZV9nZXQgYSBpKVxuICBkb25lO1xuICAhclxuXG5sZXQgZm9sZF9sZWZ0X21hcCBmIGFjYyBpbnB1dF9hcnJheSA9XG4gIGxldCBsZW4gPSBsZW5ndGggaW5wdXRfYXJyYXkgaW5cbiAgaWYgbGVuID0gMCB0aGVuIChhY2MsIFt8fF0pIGVsc2UgYmVnaW5cbiAgICBsZXQgYWNjLCBlbHQgPSBmIGFjYyAodW5zYWZlX2dldCBpbnB1dF9hcnJheSAwKSBpblxuICAgIGxldCBvdXRwdXRfYXJyYXkgPSBjcmVhdGUgbGVuIGVsdCBpblxuICAgIGxldCBhY2MgPSByZWYgYWNjIGluXG4gICAgZm9yIGkgPSAxIHRvIGxlbiAtIDEgZG9cbiAgICAgIGxldCBhY2MnLCBlbHQgPSBmICFhY2MgKHVuc2FmZV9nZXQgaW5wdXRfYXJyYXkgaSkgaW5cbiAgICAgIGFjYyA6PSBhY2MnO1xuICAgICAgdW5zYWZlX3NldCBvdXRwdXRfYXJyYXkgaSBlbHQ7XG4gICAgZG9uZTtcbiAgICAhYWNjLCBvdXRwdXRfYXJyYXlcbiAgZW5kXG5cbmxldCBmb2xkX3JpZ2h0IGYgYSB4ID1cbiAgbGV0IHIgPSByZWYgeCBpblxuICBmb3IgaSA9IGxlbmd0aCBhIC0gMSBkb3dudG8gMCBkb1xuICAgIHIgOj0gZiAodW5zYWZlX2dldCBhIGkpICFyXG4gIGRvbmU7XG4gICFyXG5cbmxldCBleGlzdHMgcCBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gdHJ1ZVxuICAgIGVsc2UgbG9vcCAoc3VjYyBpKSBpblxuICBsb29wIDBcblxubGV0IGZvcl9hbGwgcCBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiB0cnVlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiBsb29wIChzdWNjIGkpXG4gICAgZWxzZSBmYWxzZSBpblxuICBsb29wIDBcblxubGV0IGZvcl9hbGwyIHAgbDEgbDIgPVxuICBsZXQgbjEgPSBsZW5ndGggbDFcbiAgYW5kIG4yID0gbGVuZ3RoIGwyIGluXG4gIGlmIG4xIDw+IG4yIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5mb3JfYWxsMlwiXG4gIGVsc2UgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuMSB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgbDEgaSkgKHVuc2FmZV9nZXQgbDIgaSkgdGhlbiBsb29wIChzdWNjIGkpXG4gICAgZWxzZSBmYWxzZSBpblxuICBsb29wIDBcblxubGV0IGV4aXN0czIgcCBsMSBsMiA9XG4gIGxldCBuMSA9IGxlbmd0aCBsMVxuICBhbmQgbjIgPSBsZW5ndGggbDIgaW5cbiAgaWYgbjEgPD4gbjIgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmV4aXN0czJcIlxuICBlbHNlIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbjEgdGhlbiBmYWxzZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBsMSBpKSAodW5zYWZlX2dldCBsMiBpKSB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBtZW0geCBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgIGVsc2UgaWYgY29tcGFyZSAodW5zYWZlX2dldCBhIGkpIHggPSAwIHRoZW4gdHJ1ZVxuICAgIGVsc2UgbG9vcCAoc3VjYyBpKSBpblxuICBsb29wIDBcblxubGV0IG1lbXEgeCBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgIGVsc2UgaWYgeCA9PSAodW5zYWZlX2dldCBhIGkpIHRoZW4gdHJ1ZVxuICAgIGVsc2UgbG9vcCAoc3VjYyBpKSBpblxuICBsb29wIDBcblxubGV0IGZpbmRfb3B0IHAgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gTm9uZVxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgIGlmIHAgeCB0aGVuIFNvbWUgeFxuICAgICAgZWxzZSBsb29wIChzdWNjIGkpXG4gIGluXG4gIGxvb3AgMFxuXG5sZXQgZmluZF9tYXAgZiBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggZiAodW5zYWZlX2dldCBhIGkpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBsb29wIChzdWNjIGkpXG4gICAgICB8IFNvbWUgXyBhcyByIC0+IHJcbiAgaW5cbiAgbG9vcCAwXG5cbmxldCBzcGxpdCB4ID1cbiAgaWYgeCA9IFt8fF0gdGhlbiBbfHxdLCBbfHxdXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgYTAsIGIwID0gdW5zYWZlX2dldCB4IDAgaW5cbiAgICBsZXQgbiA9IGxlbmd0aCB4IGluXG4gICAgbGV0IGEgPSBjcmVhdGUgbiBhMCBpblxuICAgIGxldCBiID0gY3JlYXRlIG4gYjAgaW5cbiAgICBmb3IgaSA9IDEgdG8gbiAtIDEgZG9cbiAgICAgIGxldCBhaSwgYmkgPSB1bnNhZmVfZ2V0IHggaSBpblxuICAgICAgdW5zYWZlX3NldCBhIGkgYWk7XG4gICAgICB1bnNhZmVfc2V0IGIgaSBiaVxuICAgIGRvbmU7XG4gICAgYSwgYlxuICBlbmRcblxubGV0IGNvbWJpbmUgYSBiID1cbiAgbGV0IG5hID0gbGVuZ3RoIGEgaW5cbiAgbGV0IG5iID0gbGVuZ3RoIGIgaW5cbiAgaWYgbmEgPD4gbmIgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmNvbWJpbmVcIjtcbiAgaWYgbmEgPSAwIHRoZW4gW3x8XVxuICBlbHNlIGJlZ2luXG4gICAgbGV0IHggPSBjcmVhdGUgbmEgKHVuc2FmZV9nZXQgYSAwLCB1bnNhZmVfZ2V0IGIgMCkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbmEgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHggaSAodW5zYWZlX2dldCBhIGksIHVuc2FmZV9nZXQgYiBpKVxuICAgIGRvbmU7XG4gICAgeFxuICBlbmRcblxuZXhjZXB0aW9uIEJvdHRvbSBvZiBpbnRcbmxldCBzb3J0IGNtcCBhID1cbiAgbGV0IG1heHNvbiBsIGkgPVxuICAgIGxldCBpMzEgPSBpK2kraSsxIGluXG4gICAgbGV0IHggPSByZWYgaTMxIGluXG4gICAgaWYgaTMxKzIgPCBsIHRoZW4gYmVnaW5cbiAgICAgIGlmIGNtcCAoZ2V0IGEgaTMxKSAoZ2V0IGEgKGkzMSsxKSkgPCAwIHRoZW4geCA6PSBpMzErMTtcbiAgICAgIGlmIGNtcCAoZ2V0IGEgIXgpIChnZXQgYSAoaTMxKzIpKSA8IDAgdGhlbiB4IDo9IGkzMSsyO1xuICAgICAgIXhcbiAgICBlbmQgZWxzZVxuICAgICAgaWYgaTMxKzEgPCBsICYmIGNtcCAoZ2V0IGEgaTMxKSAoZ2V0IGEgKGkzMSsxKSkgPCAwXG4gICAgICB0aGVuIGkzMSsxXG4gICAgICBlbHNlIGlmIGkzMSA8IGwgdGhlbiBpMzEgZWxzZSByYWlzZSAoQm90dG9tIGkpXG4gIGluXG4gIGxldCByZWMgdHJpY2tsZWRvd24gbCBpIGUgPVxuICAgIGxldCBqID0gbWF4c29uIGwgaSBpblxuICAgIGlmIGNtcCAoZ2V0IGEgaikgZSA+IDAgdGhlbiBiZWdpblxuICAgICAgc2V0IGEgaSAoZ2V0IGEgaik7XG4gICAgICB0cmlja2xlZG93biBsIGogZTtcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgc2V0IGEgaSBlO1xuICAgIGVuZDtcbiAgaW5cbiAgbGV0IHRyaWNrbGUgbCBpIGUgPSB0cnkgdHJpY2tsZWRvd24gbCBpIGUgd2l0aCBCb3R0b20gaSAtPiBzZXQgYSBpIGUgaW5cbiAgbGV0IHJlYyBidWJibGVkb3duIGwgaSA9XG4gICAgbGV0IGogPSBtYXhzb24gbCBpIGluXG4gICAgc2V0IGEgaSAoZ2V0IGEgaik7XG4gICAgYnViYmxlZG93biBsIGpcbiAgaW5cbiAgbGV0IGJ1YmJsZSBsIGkgPSB0cnkgYnViYmxlZG93biBsIGkgd2l0aCBCb3R0b20gaSAtPiBpIGluXG4gIGxldCByZWMgdHJpY2tsZXVwIGkgZSA9XG4gICAgbGV0IGZhdGhlciA9IChpIC0gMSkgLyAzIGluXG4gICAgYXNzZXJ0IChpIDw+IGZhdGhlcik7XG4gICAgaWYgY21wIChnZXQgYSBmYXRoZXIpIGUgPCAwIHRoZW4gYmVnaW5cbiAgICAgIHNldCBhIGkgKGdldCBhIGZhdGhlcik7XG4gICAgICBpZiBmYXRoZXIgPiAwIHRoZW4gdHJpY2tsZXVwIGZhdGhlciBlIGVsc2Ugc2V0IGEgMCBlO1xuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBzZXQgYSBpIGU7XG4gICAgZW5kO1xuICBpblxuICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gIGZvciBpID0gKGwgKyAxKSAvIDMgLSAxIGRvd250byAwIGRvIHRyaWNrbGUgbCBpIChnZXQgYSBpKTsgZG9uZTtcbiAgZm9yIGkgPSBsIC0gMSBkb3dudG8gMiBkb1xuICAgIGxldCBlID0gKGdldCBhIGkpIGluXG4gICAgc2V0IGEgaSAoZ2V0IGEgMCk7XG4gICAgdHJpY2tsZXVwIChidWJibGUgaSAwKSBlO1xuICBkb25lO1xuICBpZiBsID4gMSB0aGVuIChsZXQgZSA9IChnZXQgYSAxKSBpbiBzZXQgYSAxIChnZXQgYSAwKTsgc2V0IGEgMCBlKVxuXG5cbmxldCBjdXRvZmYgPSA1XG5sZXQgc3RhYmxlX3NvcnQgY21wIGEgPVxuICBsZXQgbWVyZ2Ugc3JjMW9mcyBzcmMxbGVuIHNyYzIgc3JjMm9mcyBzcmMybGVuIGRzdCBkc3RvZnMgPVxuICAgIGxldCBzcmMxciA9IHNyYzFvZnMgKyBzcmMxbGVuIGFuZCBzcmMyciA9IHNyYzJvZnMgKyBzcmMybGVuIGluXG4gICAgbGV0IHJlYyBsb29wIGkxIHMxIGkyIHMyIGQgPVxuICAgICAgaWYgY21wIHMxIHMyIDw9IDAgdGhlbiBiZWdpblxuICAgICAgICBzZXQgZHN0IGQgczE7XG4gICAgICAgIGxldCBpMSA9IGkxICsgMSBpblxuICAgICAgICBpZiBpMSA8IHNyYzFyIHRoZW5cbiAgICAgICAgICBsb29wIGkxIChnZXQgYSBpMSkgaTIgczIgKGQgKyAxKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgYmxpdCBzcmMyIGkyIGRzdCAoZCArIDEpIChzcmMyciAtIGkyKVxuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgc2V0IGRzdCBkIHMyO1xuICAgICAgICBsZXQgaTIgPSBpMiArIDEgaW5cbiAgICAgICAgaWYgaTIgPCBzcmMyciB0aGVuXG4gICAgICAgICAgbG9vcCBpMSBzMSBpMiAoZ2V0IHNyYzIgaTIpIChkICsgMSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGJsaXQgYSBpMSBkc3QgKGQgKyAxKSAoc3JjMXIgLSBpMSlcbiAgICAgIGVuZFxuICAgIGluIGxvb3Agc3JjMW9mcyAoZ2V0IGEgc3JjMW9mcykgc3JjMm9mcyAoZ2V0IHNyYzIgc3JjMm9mcykgZHN0b2ZzO1xuICBpblxuICBsZXQgaXNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gPVxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICBsZXQgZSA9IChnZXQgYSAoc3Jjb2ZzICsgaSkpIGluXG4gICAgICBsZXQgaiA9IHJlZiAoZHN0b2ZzICsgaSAtIDEpIGluXG4gICAgICB3aGlsZSAoIWogPj0gZHN0b2ZzICYmIGNtcCAoZ2V0IGRzdCAhaikgZSA+IDApIGRvXG4gICAgICAgIHNldCBkc3QgKCFqICsgMSkgKGdldCBkc3QgIWopO1xuICAgICAgICBkZWNyIGo7XG4gICAgICBkb25lO1xuICAgICAgc2V0IGRzdCAoIWogKyAxKSBlO1xuICAgIGRvbmU7XG4gIGluXG4gIGxldCByZWMgc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiA9XG4gICAgaWYgbGVuIDw9IGN1dG9mZiB0aGVuIGlzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuIGVsc2UgYmVnaW5cbiAgICAgIGxldCBsMSA9IGxlbiAvIDIgaW5cbiAgICAgIGxldCBsMiA9IGxlbiAtIGwxIGluXG4gICAgICBzb3J0dG8gKHNyY29mcyArIGwxKSBkc3QgKGRzdG9mcyArIGwxKSBsMjtcbiAgICAgIHNvcnR0byBzcmNvZnMgYSAoc3Jjb2ZzICsgbDIpIGwxO1xuICAgICAgbWVyZ2UgKHNyY29mcyArIGwyKSBsMSBkc3QgKGRzdG9mcyArIGwxKSBsMiBkc3QgZHN0b2ZzO1xuICAgIGVuZDtcbiAgaW5cbiAgbGV0IGwgPSBsZW5ndGggYSBpblxuICBpZiBsIDw9IGN1dG9mZiB0aGVuIGlzb3J0dG8gMCBhIDAgbCBlbHNlIGJlZ2luXG4gICAgbGV0IGwxID0gbCAvIDIgaW5cbiAgICBsZXQgbDIgPSBsIC0gbDEgaW5cbiAgICBsZXQgdCA9IG1ha2UgbDIgKGdldCBhIDApIGluXG4gICAgc29ydHRvIGwxIHQgMCBsMjtcbiAgICBzb3J0dG8gMCBhIGwyIGwxO1xuICAgIG1lcmdlIGwyIGwxIHQgMCBsMiBhIDA7XG4gIGVuZFxuXG5cbmxldCBmYXN0X3NvcnQgPSBzdGFibGVfc29ydFxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIGEgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICBpZiBpIDwgbGVuZ3RoIGFcbiAgICB0aGVuXG4gICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICBTZXEuQ29ucyAoeCwgYXV4IChpKzEpKVxuICAgIGVsc2UgU2VxLk5pbFxuICBpblxuICBhdXggMFxuXG5sZXQgdG9fc2VxaSBhID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgaWYgaSA8IGxlbmd0aCBhXG4gICAgdGhlblxuICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgU2VxLkNvbnMgKChpLHgpLCBhdXggKGkrMSkpXG4gICAgZWxzZSBTZXEuTmlsXG4gIGluXG4gIGF1eCAwXG5cbmxldCBvZl9yZXZfbGlzdCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW3x8XVxuICB8IGhkOjp0bCBhcyBsIC0+XG4gICAgICBsZXQgbGVuID0gbGlzdF9sZW5ndGggMCBsIGluXG4gICAgICBsZXQgYSA9IGNyZWF0ZSBsZW4gaGQgaW5cbiAgICAgIGxldCByZWMgZmlsbCBpID0gZnVuY3Rpb25cbiAgICAgICAgICBbXSAtPiBhXG4gICAgICAgIHwgaGQ6OnRsIC0+IHVuc2FmZV9zZXQgYSBpIGhkOyBmaWxsIChpLTEpIHRsXG4gICAgICBpblxuICAgICAgZmlsbCAobGVuLTIpIHRsXG5cbmxldCBvZl9zZXEgaSA9XG4gIGxldCBsID0gU2VxLmZvbGRfbGVmdCAoZnVuIGFjYyB4IC0+IHg6OmFjYykgW10gaSBpblxuICBvZl9yZXZfbGlzdCBsXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbSW50MzJdOiAzMi1iaXQgaW50ZWdlcnMgKilcblxuZXh0ZXJuYWwgbmVnIDogaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9uZWdcIlxuZXh0ZXJuYWwgYWRkIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9hZGRcIlxuZXh0ZXJuYWwgc3ViIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9zdWJcIlxuZXh0ZXJuYWwgbXVsIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9tdWxcIlxuZXh0ZXJuYWwgZGl2IDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9kaXZcIlxuZXh0ZXJuYWwgcmVtIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9tb2RcIlxuZXh0ZXJuYWwgbG9nYW5kIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9hbmRcIlxuZXh0ZXJuYWwgbG9nb3IgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX29yXCJcbmV4dGVybmFsIGxvZ3hvciA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfeG9yXCJcbmV4dGVybmFsIHNoaWZ0X2xlZnQgOiBpbnQzMiAtPiBpbnQgLT4gaW50MzIgPSBcIiVpbnQzMl9sc2xcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQgOiBpbnQzMiAtPiBpbnQgLT4gaW50MzIgPSBcIiVpbnQzMl9hc3JcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbCA6IGludDMyIC0+IGludCAtPiBpbnQzMiA9IFwiJWludDMyX2xzclwiXG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gaW50MzIgPSBcIiVpbnQzMl9vZl9pbnRcIlxuZXh0ZXJuYWwgdG9faW50IDogaW50MzIgLT4gaW50ID0gXCIlaW50MzJfdG9faW50XCJcbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gaW50MzJcbiAgPSBcImNhbWxfaW50MzJfb2ZfZmxvYXRcIiBcImNhbWxfaW50MzJfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0b19mbG9hdCA6IGludDMyIC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDMyX3RvX2Zsb2F0XCIgXCJjYW1sX2ludDMyX3RvX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYml0c19vZl9mbG9hdCA6IGZsb2F0IC0+IGludDMyXG4gID0gXCJjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXRcIiBcImNhbWxfaW50MzJfYml0c19vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQzMiAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbmxldCB6ZXJvID0gMGxcbmxldCBvbmUgPSAxbFxubGV0IG1pbnVzX29uZSA9IC0xbFxubGV0IHN1Y2MgbiA9IGFkZCBuIDFsXG5sZXQgcHJlZCBuID0gc3ViIG4gMWxcbmxldCBhYnMgbiA9IGlmIG4gPj0gMGwgdGhlbiBuIGVsc2UgbmVnIG5cbmxldCBtaW5faW50ID0gMHg4MDAwMDAwMGxcbmxldCBtYXhfaW50ID0gMHg3RkZGRkZGRmxcbmxldCBsb2dub3QgbiA9IGxvZ3hvciBuICgtMWwpXG5cbmxldCB1bnNpZ25lZF90b19pbnQgPVxuICBtYXRjaCBTeXMud29yZF9zaXplIHdpdGhcbiAgfCAzMiAtPlxuICAgICAgbGV0IG1heF9pbnQgPSBvZl9pbnQgU3RkbGliLm1heF9pbnQgaW5cbiAgICAgIGZ1biBuIC0+XG4gICAgICAgIGlmIGNvbXBhcmUgemVybyBuIDw9IDAgJiYgY29tcGFyZSBuIG1heF9pbnQgPD0gMCB0aGVuXG4gICAgICAgICAgU29tZSAodG9faW50IG4pXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBOb25lXG4gIHwgNjQgLT5cbiAgICAgICgqIFNvIHRoYXQgaXQgY29tcGlsZXMgaW4gMzItYml0ICopXG4gICAgICBsZXQgbWFzayA9IDB4RkZGRiBsc2wgMTYgbG9yIDB4RkZGRiBpblxuICAgICAgZnVuIG4gLT4gU29tZSAodG9faW50IG4gbGFuZCBtYXNrKVxuICB8IF8gLT5cbiAgICAgIGFzc2VydCBmYWxzZVxuXG5leHRlcm5hbCBmb3JtYXQgOiBzdHJpbmcgLT4gaW50MzIgLT4gc3RyaW5nID0gXCJjYW1sX2ludDMyX2Zvcm1hdFwiXG5sZXQgdG9fc3RyaW5nIG4gPSBmb3JtYXQgXCIlZFwiIG5cblxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDMyID0gXCJjYW1sX2ludDMyX29mX3N0cmluZ1wiXG5cbmxldCBvZl9zdHJpbmdfb3B0IHMgPVxuICAoKiBUT0RPOiBleHBvc2UgYSBub24tcmFpc2luZyBwcmltaXRpdmUgZGlyZWN0bHkuICopXG4gIHRyeSBTb21lIChvZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG50eXBlIHQgPSBpbnQzMlxuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5sZXQgZXF1YWwgKHg6IHQpICh5OiB0KSA9IGNvbXBhcmUgeCB5ID0gMFxuXG5sZXQgdW5zaWduZWRfY29tcGFyZSBuIG0gPVxuICBjb21wYXJlIChzdWIgbiBtaW5faW50KSAoc3ViIG0gbWluX2ludClcblxubGV0IG1pbiB4IHkgOiB0ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5IDogdCA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbigqIFVuc2lnbmVkIGRpdmlzaW9uIGZyb20gc2lnbmVkIGRpdmlzaW9uIG9mIHRoZSBzYW1lXG4gICBiaXRuZXNzLiBTZWUgV2FycmVuIEpyLiwgSGVucnkgUy4gKDIwMTMpLiBIYWNrZXIncyBEZWxpZ2h0ICgyIGVkLiksIFNlYyA5LTMuXG4qKVxubGV0IHVuc2lnbmVkX2RpdiBuIGQgPVxuICBpZiBkIDwgemVybyB0aGVuXG4gICAgaWYgdW5zaWduZWRfY29tcGFyZSBuIGQgPCAwIHRoZW4gemVybyBlbHNlIG9uZVxuICBlbHNlXG4gICAgbGV0IHEgPSBzaGlmdF9sZWZ0IChkaXYgKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgbiAxKSBkKSAxIGluXG4gICAgbGV0IHIgPSBzdWIgbiAobXVsIHEgZCkgaW5cbiAgICBpZiB1bnNpZ25lZF9jb21wYXJlIHIgZCA+PSAwIHRoZW4gc3VjYyBxIGVsc2UgcVxuXG5sZXQgdW5zaWduZWRfcmVtIG4gZCA9XG4gIHN1YiBuIChtdWwgKHVuc2lnbmVkX2RpdiBuIGQpIGQpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFRoZSBwYXJzaW5nIGVuZ2luZSAqKVxuXG5vcGVuIExleGluZ1xuXG4oKiBJbnRlcm5hbCBpbnRlcmZhY2UgdG8gdGhlIHBhcnNpbmcgZW5naW5lICopXG5cbnR5cGUgcGFyc2VyX2VudiA9XG4gIHsgbXV0YWJsZSBzX3N0YWNrIDogaW50IGFycmF5OyAgICAgICAgKCogU3RhdGVzICopXG4gICAgbXV0YWJsZSB2X3N0YWNrIDogT2JqLnQgYXJyYXk7ICAgICAgKCogU2VtYW50aWMgYXR0cmlidXRlcyAqKVxuICAgIG11dGFibGUgc3ltYl9zdGFydF9zdGFjayA6IHBvc2l0aW9uIGFycmF5OyAoKiBTdGFydCBwb3NpdGlvbnMgKilcbiAgICBtdXRhYmxlIHN5bWJfZW5kX3N0YWNrIDogcG9zaXRpb24gYXJyYXk7ICAgKCogRW5kIHBvc2l0aW9ucyAqKVxuICAgIG11dGFibGUgc3RhY2tzaXplIDogaW50OyAgICAgICAgICAgICgqIFNpemUgb2YgdGhlIHN0YWNrcyAqKVxuICAgIG11dGFibGUgc3RhY2tiYXNlIDogaW50OyAgICAgICAgICAgICgqIEJhc2Ugc3AgZm9yIGN1cnJlbnQgcGFyc2UgKilcbiAgICBtdXRhYmxlIGN1cnJfY2hhciA6IGludDsgICAgICAgICAgICAoKiBMYXN0IHRva2VuIHJlYWQgKilcbiAgICBtdXRhYmxlIGx2YWwgOiBPYmoudDsgICAgICAgICAgICAgICAoKiBJdHMgc2VtYW50aWMgYXR0cmlidXRlICopXG4gICAgbXV0YWJsZSBzeW1iX3N0YXJ0IDogcG9zaXRpb247ICAgICAgKCogU3RhcnQgcG9zLiBvZiB0aGUgY3VycmVudCBzeW1ib2wqKVxuICAgIG11dGFibGUgc3ltYl9lbmQgOiBwb3NpdGlvbjsgICAgICAgICgqIEVuZCBwb3MuIG9mIHRoZSBjdXJyZW50IHN5bWJvbCAqKVxuICAgIG11dGFibGUgYXNwIDogaW50OyAgICAgICAgICAgICAgICAgICgqIFRoZSBzdGFjayBwb2ludGVyIGZvciBhdHRyaWJ1dGVzICopXG4gICAgbXV0YWJsZSBydWxlX2xlbiA6IGludDsgICAgICAgICAgICAgKCogTnVtYmVyIG9mIHJocyBpdGVtcyBpbiB0aGUgcnVsZSAqKVxuICAgIG11dGFibGUgcnVsZV9udW1iZXIgOiBpbnQ7ICAgICAgICAgICgqIFJ1bGUgbnVtYmVyIHRvIHJlZHVjZSBieSAqKVxuICAgIG11dGFibGUgc3AgOiBpbnQ7ICAgICAgICAgICAgICAgICAgICgqIFNhdmVkIHNwIGZvciBwYXJzZV9lbmdpbmUgKilcbiAgICBtdXRhYmxlIHN0YXRlIDogaW50OyAgICAgICAgICAgICAgICAoKiBTYXZlZCBzdGF0ZSBmb3IgcGFyc2VfZW5naW5lICopXG4gICAgbXV0YWJsZSBlcnJmbGFnIDogaW50IH0gICAgICAgICAgICAgKCogU2F2ZWQgZXJyb3IgZmxhZyBmb3IgcGFyc2VfZW5naW5lICopXG5bQEB3YXJuaW5nIFwiLXVudXNlZC1maWVsZFwiXVxuXG50eXBlIHBhcnNlX3RhYmxlcyA9XG4gIHsgYWN0aW9ucyA6IChwYXJzZXJfZW52IC0+IE9iai50KSBhcnJheTtcbiAgICB0cmFuc2xfY29uc3QgOiBpbnQgYXJyYXk7XG4gICAgdHJhbnNsX2Jsb2NrIDogaW50IGFycmF5O1xuICAgIGxocyA6IHN0cmluZztcbiAgICBsZW4gOiBzdHJpbmc7XG4gICAgZGVmcmVkIDogc3RyaW5nO1xuICAgIGRnb3RvIDogc3RyaW5nO1xuICAgIHNpbmRleCA6IHN0cmluZztcbiAgICByaW5kZXggOiBzdHJpbmc7XG4gICAgZ2luZGV4IDogc3RyaW5nO1xuICAgIHRhYmxlc2l6ZSA6IGludDtcbiAgICB0YWJsZSA6IHN0cmluZztcbiAgICBjaGVjayA6IHN0cmluZztcbiAgICBlcnJvcl9mdW5jdGlvbiA6IHN0cmluZyAtPiB1bml0O1xuICAgIG5hbWVzX2NvbnN0IDogc3RyaW5nO1xuICAgIG5hbWVzX2Jsb2NrIDogc3RyaW5nIH1cblxuZXhjZXB0aW9uIFlZZXhpdCBvZiBPYmoudFxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yXG5cbnR5cGUgcGFyc2VyX2lucHV0ID1cbiAgICBTdGFydFxuICB8IFRva2VuX3JlYWRcbiAgfCBTdGFja3NfZ3Jvd25fMVxuICB8IFN0YWNrc19ncm93bl8yXG4gIHwgU2VtYW50aWNfYWN0aW9uX2NvbXB1dGVkXG4gIHwgRXJyb3JfZGV0ZWN0ZWRcblxudHlwZSBwYXJzZXJfb3V0cHV0ID1cbiAgICBSZWFkX3Rva2VuXG4gIHwgUmFpc2VfcGFyc2VfZXJyb3JcbiAgfCBHcm93X3N0YWNrc18xXG4gIHwgR3Jvd19zdGFja3NfMlxuICB8IENvbXB1dGVfc2VtYW50aWNfYWN0aW9uXG4gIHwgQ2FsbF9lcnJvcl9mdW5jdGlvblxuXG4oKiB0byBhdm9pZCB3YXJuaW5ncyAqKVxubGV0IF8gPSBbUmVhZF90b2tlbjsgUmFpc2VfcGFyc2VfZXJyb3I7IEdyb3dfc3RhY2tzXzE7IEdyb3dfc3RhY2tzXzI7XG4gICAgICAgICBDb21wdXRlX3NlbWFudGljX2FjdGlvbjsgQ2FsbF9lcnJvcl9mdW5jdGlvbl1cblxuZXh0ZXJuYWwgcGFyc2VfZW5naW5lIDpcbiAgICBwYXJzZV90YWJsZXMgLT4gcGFyc2VyX2VudiAtPiBwYXJzZXJfaW5wdXQgLT4gT2JqLnQgLT4gcGFyc2VyX291dHB1dFxuICAgID0gXCJjYW1sX3BhcnNlX2VuZ2luZVwiXG5cbmV4dGVybmFsIHNldF90cmFjZTogYm9vbCAtPiBib29sXG4gICAgPSBcImNhbWxfc2V0X3BhcnNlcl90cmFjZVwiXG5cbmxldCBlbnYgPVxuICB7IHNfc3RhY2sgPSBBcnJheS5tYWtlIDEwMCAwO1xuICAgIHZfc3RhY2sgPSBBcnJheS5tYWtlIDEwMCAoT2JqLnJlcHIgKCkpO1xuICAgIHN5bWJfc3RhcnRfc3RhY2sgPSBBcnJheS5tYWtlIDEwMCBkdW1teV9wb3M7XG4gICAgc3ltYl9lbmRfc3RhY2sgPSBBcnJheS5tYWtlIDEwMCBkdW1teV9wb3M7XG4gICAgc3RhY2tzaXplID0gMTAwO1xuICAgIHN0YWNrYmFzZSA9IDA7XG4gICAgY3Vycl9jaGFyID0gMDtcbiAgICBsdmFsID0gT2JqLnJlcHIgKCk7XG4gICAgc3ltYl9zdGFydCA9IGR1bW15X3BvcztcbiAgICBzeW1iX2VuZCA9IGR1bW15X3BvcztcbiAgICBhc3AgPSAwO1xuICAgIHJ1bGVfbGVuID0gMDtcbiAgICBydWxlX251bWJlciA9IDA7XG4gICAgc3AgPSAwO1xuICAgIHN0YXRlID0gMDtcbiAgICBlcnJmbGFnID0gMCB9XG5cbmxldCBncm93X3N0YWNrcygpID1cbiAgbGV0IG9sZHNpemUgPSBlbnYuc3RhY2tzaXplIGluXG4gIGxldCBuZXdzaXplID0gb2xkc2l6ZSAqIDIgaW5cbiAgbGV0IG5ld19zID0gQXJyYXkubWFrZSBuZXdzaXplIDBcbiAgYW5kIG5ld192ID0gQXJyYXkubWFrZSBuZXdzaXplIChPYmoucmVwciAoKSlcbiAgYW5kIG5ld19zdGFydCA9IEFycmF5Lm1ha2UgbmV3c2l6ZSBkdW1teV9wb3NcbiAgYW5kIG5ld19lbmQgPSBBcnJheS5tYWtlIG5ld3NpemUgZHVtbXlfcG9zIGluXG4gICAgQXJyYXkuYmxpdCBlbnYuc19zdGFjayAwIG5ld19zIDAgb2xkc2l6ZTtcbiAgICBlbnYuc19zdGFjayA8LSBuZXdfcztcbiAgICBBcnJheS5ibGl0IGVudi52X3N0YWNrIDAgbmV3X3YgMCBvbGRzaXplO1xuICAgIGVudi52X3N0YWNrIDwtIG5ld192O1xuICAgIEFycmF5LmJsaXQgZW52LnN5bWJfc3RhcnRfc3RhY2sgMCBuZXdfc3RhcnQgMCBvbGRzaXplO1xuICAgIGVudi5zeW1iX3N0YXJ0X3N0YWNrIDwtIG5ld19zdGFydDtcbiAgICBBcnJheS5ibGl0IGVudi5zeW1iX2VuZF9zdGFjayAwIG5ld19lbmQgMCBvbGRzaXplO1xuICAgIGVudi5zeW1iX2VuZF9zdGFjayA8LSBuZXdfZW5kO1xuICAgIGVudi5zdGFja3NpemUgPC0gbmV3c2l6ZVxuXG5sZXQgY2xlYXJfcGFyc2VyKCkgPVxuICBBcnJheS5maWxsIGVudi52X3N0YWNrIDAgZW52LnN0YWNrc2l6ZSAoT2JqLnJlcHIgKCkpO1xuICBlbnYubHZhbCA8LSBPYmoucmVwciAoKVxuXG5sZXQgY3VycmVudF9sb29rYWhlYWRfZnVuID0gcmVmIChmdW4gKF8gOiBPYmoudCkgLT4gZmFsc2UpXG5cbmxldCB5eXBhcnNlIHRhYmxlcyBzdGFydCBsZXhlciBsZXhidWYgPVxuICBsZXQgcmVjIGxvb3AgY21kIGFyZyA9XG4gICAgbWF0Y2ggcGFyc2VfZW5naW5lIHRhYmxlcyBlbnYgY21kIGFyZyB3aXRoXG4gICAgICBSZWFkX3Rva2VuIC0+XG4gICAgICAgIGxldCB0ID0gT2JqLnJlcHIobGV4ZXIgbGV4YnVmKSBpblxuICAgICAgICBlbnYuc3ltYl9zdGFydCA8LSBsZXhidWYubGV4X3N0YXJ0X3A7XG4gICAgICAgIGVudi5zeW1iX2VuZCA8LSBsZXhidWYubGV4X2N1cnJfcDtcbiAgICAgICAgbG9vcCBUb2tlbl9yZWFkIHRcbiAgICB8IFJhaXNlX3BhcnNlX2Vycm9yIC0+XG4gICAgICAgIHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgfCBDb21wdXRlX3NlbWFudGljX2FjdGlvbiAtPlxuICAgICAgICBsZXQgKGFjdGlvbiwgdmFsdWUpID1cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIChTZW1hbnRpY19hY3Rpb25fY29tcHV0ZWQsIHRhYmxlcy5hY3Rpb25zLihlbnYucnVsZV9udW1iZXIpIGVudilcbiAgICAgICAgICB3aXRoIFBhcnNlX2Vycm9yIC0+XG4gICAgICAgICAgICAoRXJyb3JfZGV0ZWN0ZWQsIE9iai5yZXByICgpKSBpblxuICAgICAgICBsb29wIGFjdGlvbiB2YWx1ZVxuICAgIHwgR3Jvd19zdGFja3NfMSAtPlxuICAgICAgICBncm93X3N0YWNrcygpOyBsb29wIFN0YWNrc19ncm93bl8xIChPYmoucmVwciAoKSlcbiAgICB8IEdyb3dfc3RhY2tzXzIgLT5cbiAgICAgICAgZ3Jvd19zdGFja3MoKTsgbG9vcCBTdGFja3NfZ3Jvd25fMiAoT2JqLnJlcHIgKCkpXG4gICAgfCBDYWxsX2Vycm9yX2Z1bmN0aW9uIC0+XG4gICAgICAgIHRhYmxlcy5lcnJvcl9mdW5jdGlvbiBcInN5bnRheCBlcnJvclwiO1xuICAgICAgICBsb29wIEVycm9yX2RldGVjdGVkIChPYmoucmVwciAoKSkgaW5cbiAgbGV0IGluaXRfYXNwID0gZW52LmFzcFxuICBhbmQgaW5pdF9zcCA9IGVudi5zcFxuICBhbmQgaW5pdF9zdGFja2Jhc2UgPSBlbnYuc3RhY2tiYXNlXG4gIGFuZCBpbml0X3N0YXRlID0gZW52LnN0YXRlXG4gIGFuZCBpbml0X2N1cnJfY2hhciA9IGVudi5jdXJyX2NoYXJcbiAgYW5kIGluaXRfbHZhbCA9IGVudi5sdmFsXG4gIGFuZCBpbml0X2VycmZsYWcgPSBlbnYuZXJyZmxhZyBpblxuICBlbnYuc3RhY2tiYXNlIDwtIGVudi5zcCArIDE7XG4gIGVudi5jdXJyX2NoYXIgPC0gc3RhcnQ7XG4gIGVudi5zeW1iX2VuZCA8LSBsZXhidWYubGV4X2N1cnJfcDtcbiAgdHJ5XG4gICAgbG9vcCBTdGFydCAoT2JqLnJlcHIgKCkpXG4gIHdpdGggZXhuIC0+XG4gICAgbGV0IGN1cnJfY2hhciA9IGVudi5jdXJyX2NoYXIgaW5cbiAgICBlbnYuYXNwIDwtIGluaXRfYXNwO1xuICAgIGVudi5zcCA8LSBpbml0X3NwO1xuICAgIGVudi5zdGFja2Jhc2UgPC0gaW5pdF9zdGFja2Jhc2U7XG4gICAgZW52LnN0YXRlIDwtIGluaXRfc3RhdGU7XG4gICAgZW52LmN1cnJfY2hhciA8LSBpbml0X2N1cnJfY2hhcjtcbiAgICBlbnYubHZhbCA8LSBpbml0X2x2YWw7XG4gICAgZW52LmVycmZsYWcgPC0gaW5pdF9lcnJmbGFnO1xuICAgIG1hdGNoIGV4biB3aXRoXG4gICAgICBZWWV4aXQgdiAtPlxuICAgICAgICBPYmoubWFnaWMgdlxuICAgIHwgXyAtPlxuICAgICAgICBjdXJyZW50X2xvb2thaGVhZF9mdW4gOj1cbiAgICAgICAgICAoZnVuIHRvayAtPlxuICAgICAgICAgICAgaWYgT2JqLmlzX2Jsb2NrIHRva1xuICAgICAgICAgICAgdGhlbiB0YWJsZXMudHJhbnNsX2Jsb2NrLihPYmoudGFnIHRvaykgPSBjdXJyX2NoYXJcbiAgICAgICAgICAgIGVsc2UgdGFibGVzLnRyYW5zbF9jb25zdC4oT2JqLm1hZ2ljIHRvaykgPSBjdXJyX2NoYXIpO1xuICAgICAgICByYWlzZSBleG5cblxubGV0IHBlZWtfdmFsIGVudiBuID1cbiAgT2JqLm1hZ2ljIGVudi52X3N0YWNrLihlbnYuYXNwIC0gbilcblxubGV0IHN5bWJvbF9zdGFydF9wb3MgKCkgPVxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA8PSAwIHRoZW4gZW52LnN5bWJfZW5kX3N0YWNrLihlbnYuYXNwKVxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCBzdCA9IGVudi5zeW1iX3N0YXJ0X3N0YWNrLihlbnYuYXNwIC0gaSArIDEpIGluXG4gICAgICBsZXQgZW4gPSBlbnYuc3ltYl9lbmRfc3RhY2suKGVudi5hc3AgLSBpICsgMSkgaW5cbiAgICAgIGlmIHN0IDw+IGVuIHRoZW4gc3QgZWxzZSBsb29wIChpIC0gMSlcbiAgICBlbmRcbiAgaW5cbiAgbG9vcCBlbnYucnVsZV9sZW5cblxubGV0IHN5bWJvbF9lbmRfcG9zICgpID0gZW52LnN5bWJfZW5kX3N0YWNrLihlbnYuYXNwKVxubGV0IHJoc19zdGFydF9wb3MgbiA9IGVudi5zeW1iX3N0YXJ0X3N0YWNrLihlbnYuYXNwIC0gKGVudi5ydWxlX2xlbiAtIG4pKVxubGV0IHJoc19lbmRfcG9zIG4gPSBlbnYuc3ltYl9lbmRfc3RhY2suKGVudi5hc3AgLSAoZW52LnJ1bGVfbGVuIC0gbikpXG5cbmxldCBzeW1ib2xfc3RhcnQgKCkgPSAoc3ltYm9sX3N0YXJ0X3BvcyAoKSkucG9zX2NudW1cbmxldCBzeW1ib2xfZW5kICgpID0gKHN5bWJvbF9lbmRfcG9zICgpKS5wb3NfY251bVxubGV0IHJoc19zdGFydCBuID0gKHJoc19zdGFydF9wb3MgbikucG9zX2NudW1cbmxldCByaHNfZW5kIG4gPSAocmhzX2VuZF9wb3MgbikucG9zX2NudW1cblxubGV0IGlzX2N1cnJlbnRfbG9va2FoZWFkIHRvayA9XG4gICghY3VycmVudF9sb29rYWhlYWRfZnVuKShPYmoucmVwciB0b2spXG5cbmxldCBwYXJzZV9lcnJvciAoXyA6IHN0cmluZykgPSAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBTZXRzIG92ZXIgb3JkZXJlZCB0eXBlcyAqKVxuXG5tb2R1bGUgdHlwZSBPcmRlcmVkVHlwZSA9XG4gIHNpZ1xuICAgIHR5cGUgdFxuICAgIHZhbCBjb21wYXJlOiB0IC0+IHQgLT4gaW50XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTID1cbiAgc2lnXG4gICAgdHlwZSBlbHRcbiAgICB0eXBlIHRcbiAgICB2YWwgZW1wdHk6IHRcbiAgICB2YWwgaXNfZW1wdHk6IHQgLT4gYm9vbFxuICAgIHZhbCBtZW06IGVsdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgYWRkOiBlbHQgLT4gdCAtPiB0XG4gICAgdmFsIHNpbmdsZXRvbjogZWx0IC0+IHRcbiAgICB2YWwgcmVtb3ZlOiBlbHQgLT4gdCAtPiB0XG4gICAgdmFsIHVuaW9uOiB0IC0+IHQgLT4gdFxuICAgIHZhbCBpbnRlcjogdCAtPiB0IC0+IHRcbiAgICB2YWwgZGlzam9pbnQ6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGRpZmY6IHQgLT4gdCAtPiB0XG4gICAgdmFsIGNvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbiAgICB2YWwgZXF1YWw6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIHN1YnNldDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgaXRlcjogKGVsdCAtPiB1bml0KSAtPiB0IC0+IHVuaXRcbiAgICB2YWwgbWFwOiAoZWx0IC0+IGVsdCkgLT4gdCAtPiB0XG4gICAgdmFsIGZvbGQ6IChlbHQgLT4gJ2EgLT4gJ2EpIC0+IHQgLT4gJ2EgLT4gJ2FcbiAgICB2YWwgZm9yX2FsbDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGJvb2xcbiAgICB2YWwgZXhpc3RzOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gYm9vbFxuICAgIHZhbCBmaWx0ZXI6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiB0XG4gICAgdmFsIGZpbHRlcl9tYXA6IChlbHQgLT4gZWx0IG9wdGlvbikgLT4gdCAtPiB0XG4gICAgdmFsIHBhcnRpdGlvbjogKGVsdCAtPiBib29sKSAtPiB0IC0+IHQgKiB0XG4gICAgdmFsIGNhcmRpbmFsOiB0IC0+IGludFxuICAgIHZhbCBlbGVtZW50czogdCAtPiBlbHQgbGlzdFxuICAgIHZhbCBtaW5fZWx0OiB0IC0+IGVsdFxuICAgIHZhbCBtaW5fZWx0X29wdDogdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIG1heF9lbHQ6IHQgLT4gZWx0XG4gICAgdmFsIG1heF9lbHRfb3B0OiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgY2hvb3NlOiB0IC0+IGVsdFxuICAgIHZhbCBjaG9vc2Vfb3B0OiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgc3BsaXQ6IGVsdCAtPiB0IC0+IHQgKiBib29sICogdFxuICAgIHZhbCBmaW5kOiBlbHQgLT4gdCAtPiBlbHRcbiAgICB2YWwgZmluZF9vcHQ6IGVsdCAtPiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgZmluZF9maXJzdDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGVsdFxuICAgIHZhbCBmaW5kX2ZpcnN0X29wdDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgZmluZF9sYXN0OiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gZWx0XG4gICAgdmFsIGZpbmRfbGFzdF9vcHQ6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIG9mX2xpc3Q6IGVsdCBsaXN0IC0+IHRcbiAgICB2YWwgdG9fc2VxX2Zyb20gOiBlbHQgLT4gdCAtPiBlbHQgU2VxLnRcbiAgICB2YWwgdG9fc2VxIDogdCAtPiBlbHQgU2VxLnRcbiAgICB2YWwgdG9fcmV2X3NlcSA6IHQgLT4gZWx0IFNlcS50XG4gICAgdmFsIGFkZF9zZXEgOiBlbHQgU2VxLnQgLT4gdCAtPiB0XG4gICAgdmFsIG9mX3NlcSA6IGVsdCBTZXEudCAtPiB0XG4gIGVuZFxuXG5tb2R1bGUgTWFrZShPcmQ6IE9yZGVyZWRUeXBlKSA9XG4gIHN0cnVjdFxuICAgIHR5cGUgZWx0ID0gT3JkLnRcbiAgICB0eXBlIHQgPSBFbXB0eSB8IE5vZGUgb2Yge2w6dDsgdjplbHQ7IHI6dDsgaDppbnR9XG5cbiAgICAoKiBTZXRzIGFyZSByZXByZXNlbnRlZCBieSBiYWxhbmNlZCBiaW5hcnkgdHJlZXMgKHRoZSBoZWlnaHRzIG9mIHRoZVxuICAgICAgIGNoaWxkcmVuIGRpZmZlciBieSBhdCBtb3N0IDIgKilcblxuICAgIGxldCBoZWlnaHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAwXG4gICAgICB8IE5vZGUge2h9IC0+IGhcblxuICAgICgqIENyZWF0ZXMgYSBuZXcgbm9kZSB3aXRoIGxlZnQgc29uIGwsIHZhbHVlIHYgYW5kIHJpZ2h0IHNvbiByLlxuICAgICAgIFdlIG11c3QgaGF2ZSBhbGwgZWxlbWVudHMgb2YgbCA8IHYgPCBhbGwgZWxlbWVudHMgb2Ygci5cbiAgICAgICBsIGFuZCByIG11c3QgYmUgYmFsYW5jZWQgYW5kIHwgaGVpZ2h0IGwgLSBoZWlnaHQgciB8IDw9IDIuXG4gICAgICAgSW5saW5lIGV4cGFuc2lvbiBvZiBoZWlnaHQgZm9yIGJldHRlciBzcGVlZC4gKilcblxuICAgIGxldCBjcmVhdGUgbCB2IHIgPVxuICAgICAgbGV0IGhsID0gbWF0Y2ggbCB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBsZXQgaHIgPSBtYXRjaCByIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIE5vZGV7bDsgdjsgcjsgaD0oaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpfVxuXG4gICAgKCogU2FtZSBhcyBjcmVhdGUsIGJ1dCBwZXJmb3JtcyBvbmUgc3RlcCBvZiByZWJhbGFuY2luZyBpZiBuZWNlc3NhcnkuXG4gICAgICAgQXNzdW1lcyBsIGFuZCByIGJhbGFuY2VkIGFuZCB8IGhlaWdodCBsIC0gaGVpZ2h0IHIgfCA8PSAzLlxuICAgICAgIElubGluZSBleHBhbnNpb24gb2YgY3JlYXRlIGZvciBiZXR0ZXIgc3BlZWQgaW4gdGhlIG1vc3QgZnJlcXVlbnQgY2FzZVxuICAgICAgIHdoZXJlIG5vIHJlYmFsYW5jaW5nIGlzIHJlcXVpcmVkLiAqKVxuXG4gICAgbGV0IGJhbCBsIHYgciA9XG4gICAgICBsZXQgaGwgPSBtYXRjaCBsIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGxldCBociA9IG1hdGNoIHIgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgaWYgaGwgPiBociArIDIgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5iYWxcIlxuICAgICAgICB8IE5vZGV7bD1sbDsgdj1sdjsgcj1scn0gLT5cbiAgICAgICAgICAgIGlmIGhlaWdodCBsbCA+PSBoZWlnaHQgbHIgdGhlblxuICAgICAgICAgICAgICBjcmVhdGUgbGwgbHYgKGNyZWF0ZSBsciB2IHIpXG4gICAgICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIG1hdGNoIGxyIHdpdGhcbiAgICAgICAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5iYWxcIlxuICAgICAgICAgICAgICB8IE5vZGV7bD1scmw7IHY9bHJ2OyByPWxycn0tPlxuICAgICAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbGwgbHYgbHJsKSBscnYgKGNyZWF0ZSBscnIgdiByKVxuICAgICAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZSBpZiBociA+IGhsICsgMiB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LmJhbFwiXG4gICAgICAgIHwgTm9kZXtsPXJsOyB2PXJ2OyByPXJyfSAtPlxuICAgICAgICAgICAgaWYgaGVpZ2h0IHJyID49IGhlaWdodCBybCB0aGVuXG4gICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgdiBybCkgcnYgcnJcbiAgICAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbWF0Y2ggcmwgd2l0aFxuICAgICAgICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LmJhbFwiXG4gICAgICAgICAgICAgIHwgTm9kZXtsPXJsbDsgdj1ybHY7IHI9cmxyfSAtPlxuICAgICAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB2IHJsbCkgcmx2IChjcmVhdGUgcmxyIHJ2IHJyKVxuICAgICAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBOb2Rle2w7IHY7IHI7IGg9KGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxKX1cblxuICAgICgqIEluc2VydGlvbiBvZiBvbmUgZWxlbWVudCAqKVxuXG4gICAgbGV0IHJlYyBhZGQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vZGV7bD1FbXB0eTsgdj14OyByPUVtcHR5OyBoPTF9XG4gICAgICB8IE5vZGV7bDsgdjsgcn0gYXMgdCAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiB0IGVsc2VcbiAgICAgICAgICBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgbGwgPSBhZGQgeCBsIGluXG4gICAgICAgICAgICBpZiBsID09IGxsIHRoZW4gdCBlbHNlIGJhbCBsbCB2IHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgcnIgPSBhZGQgeCByIGluXG4gICAgICAgICAgICBpZiByID09IHJyIHRoZW4gdCBlbHNlIGJhbCBsIHYgcnJcblxuICAgIGxldCBzaW5nbGV0b24geCA9IE5vZGV7bD1FbXB0eTsgdj14OyByPUVtcHR5OyBoPTF9XG5cbiAgICAoKiBCZXdhcmU6IHRob3NlIHR3byBmdW5jdGlvbnMgYXNzdW1lIHRoYXQgdGhlIGFkZGVkIHYgaXMgKnN0cmljdGx5KlxuICAgICAgIHNtYWxsZXIgKG9yIGJpZ2dlcikgdGhhbiBhbGwgdGhlIHByZXNlbnQgZWxlbWVudHMgaW4gdGhlIHRyZWU7IGl0XG4gICAgICAgZG9lcyBub3QgdGVzdCBmb3IgZXF1YWxpdHkgd2l0aCB0aGUgY3VycmVudCBtaW4gKG9yIG1heCkgZWxlbWVudC5cbiAgICAgICBJbmRlZWQsIHRoZXkgYXJlIG9ubHkgdXNlZCBkdXJpbmcgdGhlIFwiam9pblwiIG9wZXJhdGlvbiB3aGljaFxuICAgICAgIHJlc3BlY3RzIHRoaXMgcHJlY29uZGl0aW9uLlxuICAgICopXG5cbiAgICBsZXQgcmVjIGFkZF9taW5fZWxlbWVudCB4ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gc2luZ2xldG9uIHhcbiAgICAgIHwgTm9kZSB7bDsgdjsgcn0gLT5cbiAgICAgICAgYmFsIChhZGRfbWluX2VsZW1lbnQgeCBsKSB2IHJcblxuICAgIGxldCByZWMgYWRkX21heF9lbGVtZW50IHggPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBzaW5nbGV0b24geFxuICAgICAgfCBOb2RlIHtsOyB2OyByfSAtPlxuICAgICAgICBiYWwgbCB2IChhZGRfbWF4X2VsZW1lbnQgeCByKVxuXG4gICAgKCogU2FtZSBhcyBjcmVhdGUgYW5kIGJhbCwgYnV0IG5vIGFzc3VtcHRpb25zIGFyZSBtYWRlIG9uIHRoZVxuICAgICAgIHJlbGF0aXZlIGhlaWdodHMgb2YgbCBhbmQgci4gKilcblxuICAgIGxldCByZWMgam9pbiBsIHYgciA9XG4gICAgICBtYXRjaCAobCwgcikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIC0+IGFkZF9taW5fZWxlbWVudCB2IHJcbiAgICAgIHwgKF8sIEVtcHR5KSAtPiBhZGRfbWF4X2VsZW1lbnQgdiBsXG4gICAgICB8IChOb2Rle2w9bGw7IHY9bHY7IHI9bHI7IGg9bGh9LCBOb2Rle2w9cmw7IHY9cnY7IHI9cnI7IGg9cmh9KSAtPlxuICAgICAgICAgIGlmIGxoID4gcmggKyAyIHRoZW4gYmFsIGxsIGx2IChqb2luIGxyIHYgcikgZWxzZVxuICAgICAgICAgIGlmIHJoID4gbGggKyAyIHRoZW4gYmFsIChqb2luIGwgdiBybCkgcnYgcnIgZWxzZVxuICAgICAgICAgIGNyZWF0ZSBsIHYgclxuXG4gICAgKCogU21hbGxlc3QgYW5kIGdyZWF0ZXN0IGVsZW1lbnQgb2YgYSBzZXQgKilcblxuICAgIGxldCByZWMgbWluX2VsdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2Rle2w9RW1wdHk7IHZ9IC0+IHZcbiAgICAgIHwgTm9kZXtsfSAtPiBtaW5fZWx0IGxcblxuICAgIGxldCByZWMgbWluX2VsdF9vcHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGV7bD1FbXB0eTsgdn0gLT4gU29tZSB2XG4gICAgICB8IE5vZGV7bH0gLT4gbWluX2VsdF9vcHQgbFxuXG4gICAgbGV0IHJlYyBtYXhfZWx0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGV7djsgcj1FbXB0eX0gLT4gdlxuICAgICAgfCBOb2Rle3J9IC0+IG1heF9lbHQgclxuXG4gICAgbGV0IHJlYyBtYXhfZWx0X29wdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgTm9kZXt2OyByPUVtcHR5fSAtPiBTb21lIHZcbiAgICAgIHwgTm9kZXtyfSAtPiBtYXhfZWx0X29wdCByXG5cbiAgICAoKiBSZW1vdmUgdGhlIHNtYWxsZXN0IGVsZW1lbnQgb2YgdGhlIGdpdmVuIHNldCAqKVxuXG4gICAgbGV0IHJlYyByZW1vdmVfbWluX2VsdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LnJlbW92ZV9taW5fZWx0XCJcbiAgICAgIHwgTm9kZXtsPUVtcHR5OyByfSAtPiByXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gYmFsIChyZW1vdmVfbWluX2VsdCBsKSB2IHJcblxuICAgICgqIE1lcmdlIHR3byB0cmVlcyBsIGFuZCByIGludG8gb25lLlxuICAgICAgIEFsbCBlbGVtZW50cyBvZiBsIG11c3QgcHJlY2VkZSB0aGUgZWxlbWVudHMgb2Ygci5cbiAgICAgICBBc3N1bWUgfCBoZWlnaHQgbCAtIGhlaWdodCByIHwgPD0gMi4gKilcblxuICAgIGxldCBtZXJnZSB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+IGJhbCB0MSAobWluX2VsdCB0MikgKHJlbW92ZV9taW5fZWx0IHQyKVxuXG4gICAgKCogTWVyZ2UgdHdvIHRyZWVzIGwgYW5kIHIgaW50byBvbmUuXG4gICAgICAgQWxsIGVsZW1lbnRzIG9mIGwgbXVzdCBwcmVjZWRlIHRoZSBlbGVtZW50cyBvZiByLlxuICAgICAgIE5vIGFzc3VtcHRpb24gb24gdGhlIGhlaWdodHMgb2YgbCBhbmQgci4gKilcblxuICAgIGxldCBjb25jYXQgdDEgdDIgPVxuICAgICAgbWF0Y2ggKHQxLCB0Mikgd2l0aFxuICAgICAgICAoRW1wdHksIHQpIC0+IHRcbiAgICAgIHwgKHQsIEVtcHR5KSAtPiB0XG4gICAgICB8IChfLCBfKSAtPiBqb2luIHQxIChtaW5fZWx0IHQyKSAocmVtb3ZlX21pbl9lbHQgdDIpXG5cbiAgICAoKiBTcGxpdHRpbmcuICBzcGxpdCB4IHMgcmV0dXJucyBhIHRyaXBsZSAobCwgcHJlc2VudCwgcikgd2hlcmVcbiAgICAgICAgLSBsIGlzIHRoZSBzZXQgb2YgZWxlbWVudHMgb2YgcyB0aGF0IGFyZSA8IHhcbiAgICAgICAgLSByIGlzIHRoZSBzZXQgb2YgZWxlbWVudHMgb2YgcyB0aGF0IGFyZSA+IHhcbiAgICAgICAgLSBwcmVzZW50IGlzIGZhbHNlIGlmIHMgY29udGFpbnMgbm8gZWxlbWVudCBlcXVhbCB0byB4LFxuICAgICAgICAgIG9yIHRydWUgaWYgcyBjb250YWlucyBhbiBlbGVtZW50IGVxdWFsIHRvIHguICopXG5cbiAgICBsZXQgcmVjIHNwbGl0IHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIChFbXB0eSwgZmFsc2UsIEVtcHR5KVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIChsLCB0cnVlLCByKVxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IChsbCwgcHJlcywgcmwpID0gc3BsaXQgeCBsIGluIChsbCwgcHJlcywgam9pbiBybCB2IHIpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IChsciwgcHJlcywgcnIpID0gc3BsaXQgeCByIGluIChqb2luIGwgdiBsciwgcHJlcywgcnIpXG5cbiAgICAoKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgc2V0IG9wZXJhdGlvbnMgKilcblxuICAgIGxldCBlbXB0eSA9IEVtcHR5XG5cbiAgICBsZXQgaXNfZW1wdHkgPSBmdW5jdGlvbiBFbXB0eSAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuXG4gICAgbGV0IHJlYyBtZW0geCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGZhbHNlXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGMgPSAwIHx8IG1lbSB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyByZW1vdmUgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IChOb2Rle2w7IHY7IHJ9IGFzIHQpIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIG1lcmdlIGwgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgICAgbGV0IGxsID0gcmVtb3ZlIHggbCBpblxuICAgICAgICAgICAgICBpZiBsID09IGxsIHRoZW4gdFxuICAgICAgICAgICAgICBlbHNlIGJhbCBsbCB2IHJcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IHJyID0gcmVtb3ZlIHggciBpblxuICAgICAgICAgICAgICBpZiByID09IHJyIHRoZW4gdFxuICAgICAgICAgICAgICBlbHNlIGJhbCBsIHYgcnJcblxuICAgIGxldCByZWMgdW5pb24gczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICAoRW1wdHksIHQyKSAtPiB0MlxuICAgICAgfCAodDEsIEVtcHR5KSAtPiB0MVxuICAgICAgfCAoTm9kZXtsPWwxOyB2PXYxOyByPXIxOyBoPWgxfSwgTm9kZXtsPWwyOyB2PXYyOyByPXIyOyBoPWgyfSkgLT5cbiAgICAgICAgICBpZiBoMSA+PSBoMiB0aGVuXG4gICAgICAgICAgICBpZiBoMiA9IDEgdGhlbiBhZGQgdjIgczEgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBsZXQgKGwyLCBfLCByMikgPSBzcGxpdCB2MSBzMiBpblxuICAgICAgICAgICAgICBqb2luICh1bmlvbiBsMSBsMikgdjEgKHVuaW9uIHIxIHIyKVxuICAgICAgICAgICAgZW5kXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgaWYgaDEgPSAxIHRoZW4gYWRkIHYxIHMyIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbGV0IChsMSwgXywgcjEpID0gc3BsaXQgdjIgczEgaW5cbiAgICAgICAgICAgICAgam9pbiAodW5pb24gbDEgbDIpIHYyICh1bmlvbiByMSByMilcbiAgICAgICAgICAgIGVuZFxuXG4gICAgbGV0IHJlYyBpbnRlciBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgXykgLT4gRW1wdHlcbiAgICAgIHwgKF8sIEVtcHR5KSAtPiBFbXB0eVxuICAgICAgfCAoTm9kZXtsPWwxOyB2PXYxOyByPXIxfSwgdDIpIC0+XG4gICAgICAgICAgbWF0Y2ggc3BsaXQgdjEgdDIgd2l0aFxuICAgICAgICAgICAgKGwyLCBmYWxzZSwgcjIpIC0+XG4gICAgICAgICAgICAgIGNvbmNhdCAoaW50ZXIgbDEgbDIpIChpbnRlciByMSByMilcbiAgICAgICAgICB8IChsMiwgdHJ1ZSwgcjIpIC0+XG4gICAgICAgICAgICAgIGpvaW4gKGludGVyIGwxIGwyKSB2MSAoaW50ZXIgcjEgcjIpXG5cbiAgICAoKiBTYW1lIGFzIHNwbGl0LCBidXQgY29tcHV0ZSB0aGUgbGVmdCBhbmQgcmlnaHQgc3VidHJlZXNcbiAgICAgICBvbmx5IGlmIHRoZSBwaXZvdCBlbGVtZW50IGlzIG5vdCBpbiB0aGUgc2V0LiAgVGhlIHJpZ2h0IHN1YnRyZWVcbiAgICAgICBpcyBjb21wdXRlZCBvbiBkZW1hbmQuICopXG5cbiAgICB0eXBlIHNwbGl0X2JpcyA9XG4gICAgICB8IEZvdW5kXG4gICAgICB8IE5vdEZvdW5kIG9mIHQgKiAodW5pdCAtPiB0KVxuXG4gICAgbGV0IHJlYyBzcGxpdF9iaXMgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm90Rm91bmQgKEVtcHR5LCAoZnVuICgpIC0+IEVtcHR5KSlcbiAgICAgIHwgTm9kZXtsOyB2OyByOyBffSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBGb3VuZFxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbWF0Y2ggc3BsaXRfYmlzIHggbCB3aXRoXG4gICAgICAgICAgICB8IEZvdW5kIC0+IEZvdW5kXG4gICAgICAgICAgICB8IE5vdEZvdW5kIChsbCwgcmwpIC0+IE5vdEZvdW5kIChsbCwgKGZ1biAoKSAtPiBqb2luIChybCAoKSkgdiByKSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBtYXRjaCBzcGxpdF9iaXMgeCByIHdpdGhcbiAgICAgICAgICAgIHwgRm91bmQgLT4gRm91bmRcbiAgICAgICAgICAgIHwgTm90Rm91bmQgKGxyLCBycikgLT4gTm90Rm91bmQgKGpvaW4gbCB2IGxyLCBycilcblxuICAgIGxldCByZWMgZGlzam9pbnQgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIHwgKF8sIEVtcHR5KSAtPiB0cnVlXG4gICAgICB8IChOb2Rle2w9bDE7IHY9djE7IHI9cjF9LCB0MikgLT5cbiAgICAgICAgICBpZiBzMSA9PSBzMiB0aGVuIGZhbHNlXG4gICAgICAgICAgZWxzZSBtYXRjaCBzcGxpdF9iaXMgdjEgdDIgd2l0aFxuICAgICAgICAgICAgICBOb3RGb3VuZChsMiwgcjIpIC0+IGRpc2pvaW50IGwxIGwyICYmIGRpc2pvaW50IHIxIChyMiAoKSlcbiAgICAgICAgICAgIHwgRm91bmQgLT4gZmFsc2VcblxuICAgIGxldCByZWMgZGlmZiBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgXykgLT4gRW1wdHlcbiAgICAgIHwgKHQxLCBFbXB0eSkgLT4gdDFcbiAgICAgIHwgKE5vZGV7bD1sMTsgdj12MTsgcj1yMX0sIHQyKSAtPlxuICAgICAgICAgIG1hdGNoIHNwbGl0IHYxIHQyIHdpdGhcbiAgICAgICAgICAgIChsMiwgZmFsc2UsIHIyKSAtPlxuICAgICAgICAgICAgICBqb2luIChkaWZmIGwxIGwyKSB2MSAoZGlmZiByMSByMilcbiAgICAgICAgICB8IChsMiwgdHJ1ZSwgcjIpIC0+XG4gICAgICAgICAgICAgIGNvbmNhdCAoZGlmZiBsMSBsMikgKGRpZmYgcjEgcjIpXG5cbiAgICB0eXBlIGVudW1lcmF0aW9uID0gRW5kIHwgTW9yZSBvZiBlbHQgKiB0ICogZW51bWVyYXRpb25cblxuICAgIGxldCByZWMgY29uc19lbnVtIHMgZSA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IGNvbnNfZW51bSBsIChNb3JlKHYsIHIsIGUpKVxuXG4gICAgbGV0IHJlYyBjb21wYXJlX2F1eCBlMSBlMiA9XG4gICAgICAgIG1hdGNoIChlMSwgZTIpIHdpdGhcbiAgICAgICAgKEVuZCwgRW5kKSAtPiAwXG4gICAgICB8IChFbmQsIF8pICAtPiAtMVxuICAgICAgfCAoXywgRW5kKSAtPiAxXG4gICAgICB8IChNb3JlKHYxLCByMSwgZTEpLCBNb3JlKHYyLCByMiwgZTIpKSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgdjEgdjIgaW5cbiAgICAgICAgICBpZiBjIDw+IDBcbiAgICAgICAgICB0aGVuIGNcbiAgICAgICAgICBlbHNlIGNvbXBhcmVfYXV4IChjb25zX2VudW0gcjEgZTEpIChjb25zX2VudW0gcjIgZTIpXG5cbiAgICBsZXQgY29tcGFyZSBzMSBzMiA9XG4gICAgICBjb21wYXJlX2F1eCAoY29uc19lbnVtIHMxIEVuZCkgKGNvbnNfZW51bSBzMiBFbmQpXG5cbiAgICBsZXQgZXF1YWwgczEgczIgPVxuICAgICAgY29tcGFyZSBzMSBzMiA9IDBcblxuICAgIGxldCByZWMgc3Vic2V0IHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgRW1wdHksIF8gLT5cbiAgICAgICAgICB0cnVlXG4gICAgICB8IF8sIEVtcHR5IC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIHwgTm9kZSB7bD1sMTsgdj12MTsgcj1yMX0sIChOb2RlIHtsPWwyOyB2PXYyOyByPXIyfSBhcyB0MikgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHYxIHYyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgICAgc3Vic2V0IGwxIGwyICYmIHN1YnNldCByMSByMlxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgc3Vic2V0IChOb2RlIHtsPWwxOyB2PXYxOyByPUVtcHR5OyBoPTB9KSBsMiAmJiBzdWJzZXQgcjEgdDJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBzdWJzZXQgKE5vZGUge2w9RW1wdHk7IHY9djE7IHI9cjE7IGg9MH0pIHIyICYmIHN1YnNldCBsMSB0MlxuXG4gICAgbGV0IHJlYyBpdGVyIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAoKVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IGl0ZXIgZiBsOyBmIHY7IGl0ZXIgZiByXG5cbiAgICBsZXQgcmVjIGZvbGQgZiBzIGFjY3UgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBmb2xkIGYgciAoZiB2IChmb2xkIGYgbCBhY2N1KSlcblxuICAgIGxldCByZWMgZm9yX2FsbCBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gdHJ1ZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IHAgdiAmJiBmb3JfYWxsIHAgbCAmJiBmb3JfYWxsIHAgclxuXG4gICAgbGV0IHJlYyBleGlzdHMgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGZhbHNlXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gcCB2IHx8IGV4aXN0cyBwIGwgfHwgZXhpc3RzIHAgclxuXG4gICAgbGV0IHJlYyBmaWx0ZXIgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IChOb2Rle2w7IHY7IHJ9KSBhcyB0IC0+XG4gICAgICAgICAgKCogY2FsbCBbcF0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgbCcgPSBmaWx0ZXIgcCBsIGluXG4gICAgICAgICAgbGV0IHB2ID0gcCB2IGluXG4gICAgICAgICAgbGV0IHInID0gZmlsdGVyIHAgciBpblxuICAgICAgICAgIGlmIHB2IHRoZW5cbiAgICAgICAgICAgIGlmIGw9PWwnICYmIHI9PXInIHRoZW4gdCBlbHNlIGpvaW4gbCcgdiByJ1xuICAgICAgICAgIGVsc2UgY29uY2F0IGwnIHInXG5cbiAgICBsZXQgcmVjIHBhcnRpdGlvbiBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gKEVtcHR5LCBFbXB0eSlcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgICgqIGNhbGwgW3BdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IChsdCwgbGYpID0gcGFydGl0aW9uIHAgbCBpblxuICAgICAgICAgIGxldCBwdiA9IHAgdiBpblxuICAgICAgICAgIGxldCAocnQsIHJmKSA9IHBhcnRpdGlvbiBwIHIgaW5cbiAgICAgICAgICBpZiBwdlxuICAgICAgICAgIHRoZW4gKGpvaW4gbHQgdiBydCwgY29uY2F0IGxmIHJmKVxuICAgICAgICAgIGVsc2UgKGNvbmNhdCBsdCBydCwgam9pbiBsZiB2IHJmKVxuXG4gICAgbGV0IHJlYyBjYXJkaW5hbCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IDBcbiAgICAgIHwgTm9kZXtsOyByfSAtPiBjYXJkaW5hbCBsICsgMSArIGNhcmRpbmFsIHJcblxuICAgIGxldCByZWMgZWxlbWVudHNfYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBhY2N1XG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gZWxlbWVudHNfYXV4ICh2IDo6IGVsZW1lbnRzX2F1eCBhY2N1IHIpIGxcblxuICAgIGxldCBlbGVtZW50cyBzID1cbiAgICAgIGVsZW1lbnRzX2F1eCBbXSBzXG5cbiAgICBsZXQgY2hvb3NlID0gbWluX2VsdFxuXG4gICAgbGV0IGNob29zZV9vcHQgPSBtaW5fZWx0X29wdFxuXG4gICAgbGV0IHJlYyBmaW5kIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiB2XG4gICAgICAgICAgZWxzZSBmaW5kIHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3RfYXV4IHYwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHYwXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdiBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2MCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2IGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3QgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3Rfb3B0X2F1eCB2MCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBTb21lIHYwXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYwIGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X29wdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHQgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9hdXggdjAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgdjBcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2MCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdiBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3QgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9vcHRfYXV4IHYwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIFNvbWUgdjBcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2IGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYwIGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3Rfb3B0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2IGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHQgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfb3B0IHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gU29tZSB2XG4gICAgICAgICAgZWxzZSBmaW5kX29wdCB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHRyeV9qb2luIGwgdiByID1cbiAgICAgICgqIFtqb2luIGwgdiByXSBjYW4gb25seSBiZSBjYWxsZWQgd2hlbiAoZWxlbWVudHMgb2YgbCA8IHYgPFxuICAgICAgICAgZWxlbWVudHMgb2Ygcik7IHVzZSBbdHJ5X2pvaW4gbCB2IHJdIHdoZW4gdGhpcyBwcm9wZXJ0eSBtYXlcbiAgICAgICAgIG5vdCBob2xkLCBidXQgeW91IGhvcGUgaXQgZG9lcyBob2xkIGluIHRoZSBjb21tb24gY2FzZSAqKVxuICAgICAgaWYgKGwgPSBFbXB0eSB8fCBPcmQuY29tcGFyZSAobWF4X2VsdCBsKSB2IDwgMClcbiAgICAgICYmIChyID0gRW1wdHkgfHwgT3JkLmNvbXBhcmUgdiAobWluX2VsdCByKSA8IDApXG4gICAgICB0aGVuIGpvaW4gbCB2IHJcbiAgICAgIGVsc2UgdW5pb24gbCAoYWRkIHYgcilcblxuICAgIGxldCByZWMgbWFwIGYgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IGFzIHQgLT5cbiAgICAgICAgICgqIGVuZm9yY2UgbGVmdC10by1yaWdodCBldmFsdWF0aW9uIG9yZGVyICopXG4gICAgICAgICBsZXQgbCcgPSBtYXAgZiBsIGluXG4gICAgICAgICBsZXQgdicgPSBmIHYgaW5cbiAgICAgICAgIGxldCByJyA9IG1hcCBmIHIgaW5cbiAgICAgICAgIGlmIGwgPT0gbCcgJiYgdiA9PSB2JyAmJiByID09IHInIHRoZW4gdFxuICAgICAgICAgZWxzZSB0cnlfam9pbiBsJyB2JyByJ1xuXG4gICAgbGV0IHRyeV9jb25jYXQgdDEgdDIgPVxuICAgICAgbWF0Y2ggKHQxLCB0Mikgd2l0aFxuICAgICAgICAoRW1wdHksIHQpIC0+IHRcbiAgICAgIHwgKHQsIEVtcHR5KSAtPiB0XG4gICAgICB8IChfLCBfKSAtPiB0cnlfam9pbiB0MSAobWluX2VsdCB0MikgKHJlbW92ZV9taW5fZWx0IHQyKVxuXG4gICAgbGV0IHJlYyBmaWx0ZXJfbWFwIGYgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IGFzIHQgLT5cbiAgICAgICAgICgqIGVuZm9yY2UgbGVmdC10by1yaWdodCBldmFsdWF0aW9uIG9yZGVyICopXG4gICAgICAgICBsZXQgbCcgPSBmaWx0ZXJfbWFwIGYgbCBpblxuICAgICAgICAgbGV0IHYnID0gZiB2IGluXG4gICAgICAgICBsZXQgcicgPSBmaWx0ZXJfbWFwIGYgciBpblxuICAgICAgICAgYmVnaW4gbWF0Y2ggdicgd2l0aFxuICAgICAgICAgICB8IFNvbWUgdicgLT5cbiAgICAgICAgICAgICAgaWYgbCA9PSBsJyAmJiB2ID09IHYnICYmIHIgPT0gcicgdGhlbiB0XG4gICAgICAgICAgICAgIGVsc2UgdHJ5X2pvaW4gbCcgdicgcidcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIHRyeV9jb25jYXQgbCcgcidcbiAgICAgICAgIGVuZFxuXG4gICAgbGV0IG9mX3NvcnRlZF9saXN0IGwgPVxuICAgICAgbGV0IHJlYyBzdWIgbiBsID1cbiAgICAgICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgICAgIHwgMCwgbCAtPiBFbXB0eSwgbFxuICAgICAgICB8IDEsIHgwIDo6IGwgLT4gTm9kZSB7bD1FbXB0eTsgdj14MDsgcj1FbXB0eTsgaD0xfSwgbFxuICAgICAgICB8IDIsIHgwIDo6IHgxIDo6IGwgLT5cbiAgICAgICAgICAgIE5vZGV7bD1Ob2Rle2w9RW1wdHk7IHY9eDA7IHI9RW1wdHk7IGg9MX07IHY9eDE7IHI9RW1wdHk7IGg9Mn0sIGxcbiAgICAgICAgfCAzLCB4MCA6OiB4MSA6OiB4MiA6OiBsIC0+XG4gICAgICAgICAgICBOb2Rle2w9Tm9kZXtsPUVtcHR5OyB2PXgwOyByPUVtcHR5OyBoPTF9OyB2PXgxO1xuICAgICAgICAgICAgICAgICByPU5vZGV7bD1FbXB0eTsgdj14Mjsgcj1FbXB0eTsgaD0xfTsgaD0yfSwgbFxuICAgICAgICB8IG4sIGwgLT5cbiAgICAgICAgICBsZXQgbmwgPSBuIC8gMiBpblxuICAgICAgICAgIGxldCBsZWZ0LCBsID0gc3ViIG5sIGwgaW5cbiAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgbWlkIDo6IGwgLT5cbiAgICAgICAgICAgIGxldCByaWdodCwgbCA9IHN1YiAobiAtIG5sIC0gMSkgbCBpblxuICAgICAgICAgICAgY3JlYXRlIGxlZnQgbWlkIHJpZ2h0LCBsXG4gICAgICBpblxuICAgICAgZnN0IChzdWIgKExpc3QubGVuZ3RoIGwpIGwpXG5cbiAgICBsZXQgb2ZfbGlzdCBsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiBlbXB0eVxuICAgICAgfCBbeDBdIC0+IHNpbmdsZXRvbiB4MFxuICAgICAgfCBbeDA7IHgxXSAtPiBhZGQgeDEgKHNpbmdsZXRvbiB4MClcbiAgICAgIHwgW3gwOyB4MTsgeDJdIC0+IGFkZCB4MiAoYWRkIHgxIChzaW5nbGV0b24geDApKVxuICAgICAgfCBbeDA7IHgxOyB4MjsgeDNdIC0+IGFkZCB4MyAoYWRkIHgyIChhZGQgeDEgKHNpbmdsZXRvbiB4MCkpKVxuICAgICAgfCBbeDA7IHgxOyB4MjsgeDM7IHg0XSAtPiBhZGQgeDQgKGFkZCB4MyAoYWRkIHgyIChhZGQgeDEgKHNpbmdsZXRvbiB4MCkpKSlcbiAgICAgIHwgXyAtPiBvZl9zb3J0ZWRfbGlzdCAoTGlzdC5zb3J0X3VuaXEgT3JkLmNvbXBhcmUgbClcblxuICAgIGxldCBhZGRfc2VxIGkgbSA9XG4gICAgICBTZXEuZm9sZF9sZWZ0IChmdW4gcyB4IC0+IGFkZCB4IHMpIG0gaVxuXG4gICAgbGV0IG9mX3NlcSBpID0gYWRkX3NlcSBpIGVtcHR5XG5cbiAgICBsZXQgcmVjIHNlcV9vZl9lbnVtXyBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgICB8IEVuZCAtPiBTZXEuTmlsXG4gICAgICB8IE1vcmUgKHgsIHQsIHJlc3QpIC0+IFNlcS5Db25zICh4LCBzZXFfb2ZfZW51bV8gKGNvbnNfZW51bSB0IHJlc3QpKVxuXG4gICAgbGV0IHRvX3NlcSBjID0gc2VxX29mX2VudW1fIChjb25zX2VudW0gYyBFbmQpXG5cbiAgICBsZXQgcmVjIHNub2NfZW51bSBzIGUgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBzbm9jX2VudW0gciAoTW9yZSh2LCBsLCBlKSlcblxuICAgIGxldCByZWMgcmV2X3NlcV9vZl9lbnVtXyBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgICB8IEVuZCAtPiBTZXEuTmlsXG4gICAgICB8IE1vcmUgKHgsIHQsIHJlc3QpIC0+IFNlcS5Db25zICh4LCByZXZfc2VxX29mX2VudW1fIChzbm9jX2VudW0gdCByZXN0KSlcblxuICAgIGxldCB0b19yZXZfc2VxIGMgPSByZXZfc2VxX29mX2VudW1fIChzbm9jX2VudW0gYyBFbmQpXG5cbiAgICBsZXQgdG9fc2VxX2Zyb20gbG93IHMgPVxuICAgICAgbGV0IHJlYyBhdXggbG93IHMgYyA9IG1hdGNoIHMgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGNcbiAgICAgICAgfCBOb2RlIHtsOyByOyB2OyBffSAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggT3JkLmNvbXBhcmUgdiBsb3cgd2l0aFxuICAgICAgICAgICAgICB8IDAgLT4gTW9yZSAodiwgciwgYylcbiAgICAgICAgICAgICAgfCBuIHdoZW4gbjwwIC0+IGF1eCBsb3cgciBjXG4gICAgICAgICAgICAgIHwgXyAtPiBhdXggbG93IGwgKE1vcmUgKHYsIHIsIGMpKVxuICAgICAgICAgICAgZW5kXG4gICAgICBpblxuICAgICAgc2VxX29mX2VudW1fIChhdXggbG93IHMgRW5kKVxuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIHR5cGUgT3JkZXJlZFR5cGUgPVxuICBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgY29tcGFyZTogdCAtPiB0IC0+IGludFxuICBlbmRcblxubW9kdWxlIHR5cGUgUyA9XG4gIHNpZ1xuICAgIHR5cGUga2V5XG4gICAgdHlwZSAhKydhIHRcbiAgICB2YWwgZW1wdHk6ICdhIHRcbiAgICB2YWwgaXNfZW1wdHk6ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBtZW06ICBrZXkgLT4gJ2EgdCAtPiBib29sXG4gICAgdmFsIGFkZDoga2V5IC0+ICdhIC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCB1cGRhdGU6IGtleSAtPiAoJ2Egb3B0aW9uIC0+ICdhIG9wdGlvbikgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIHNpbmdsZXRvbjoga2V5IC0+ICdhIC0+ICdhIHRcbiAgICB2YWwgcmVtb3ZlOiBrZXkgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIG1lcmdlOlxuICAgICAgICAgIChrZXkgLT4gJ2Egb3B0aW9uIC0+ICdiIG9wdGlvbiAtPiAnYyBvcHRpb24pIC0+ICdhIHQgLT4gJ2IgdCAtPiAnYyB0XG4gICAgdmFsIHVuaW9uOiAoa2V5IC0+ICdhIC0+ICdhIC0+ICdhIG9wdGlvbikgLT4gJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgY29tcGFyZTogKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludFxuICAgIHZhbCBlcXVhbDogKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAtPiBib29sXG4gICAgdmFsIGl0ZXI6IChrZXkgLT4gJ2EgLT4gdW5pdCkgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZvbGQ6IChrZXkgLT4gJ2EgLT4gJ2IgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgLT4gJ2JcbiAgICB2YWwgZm9yX2FsbDogKGtleSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgZXhpc3RzOiAoa2V5IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBmaWx0ZXI6IChrZXkgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGZpbHRlcl9tYXA6IChrZXkgLT4gJ2EgLT4gJ2Igb3B0aW9uKSAtPiAnYSB0IC0+ICdiIHRcbiAgICB2YWwgcGFydGl0aW9uOiAoa2V5IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAqICdhIHRcbiAgICB2YWwgY2FyZGluYWw6ICdhIHQgLT4gaW50XG4gICAgdmFsIGJpbmRpbmdzOiAnYSB0IC0+IChrZXkgKiAnYSkgbGlzdFxuICAgIHZhbCBtaW5fYmluZGluZzogJ2EgdCAtPiAoa2V5ICogJ2EpXG4gICAgdmFsIG1pbl9iaW5kaW5nX29wdDogJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICAgIHZhbCBtYXhfYmluZGluZzogJ2EgdCAtPiAoa2V5ICogJ2EpXG4gICAgdmFsIG1heF9iaW5kaW5nX29wdDogJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICAgIHZhbCBjaG9vc2U6ICdhIHQgLT4gKGtleSAqICdhKVxuICAgIHZhbCBjaG9vc2Vfb3B0OiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIHNwbGl0OiBrZXkgLT4gJ2EgdCAtPiAnYSB0ICogJ2Egb3B0aW9uICogJ2EgdFxuICAgIHZhbCBmaW5kOiBrZXkgLT4gJ2EgdCAtPiAnYVxuICAgIHZhbCBmaW5kX29wdDoga2V5IC0+ICdhIHQgLT4gJ2Egb3B0aW9uXG4gICAgdmFsIGZpbmRfZmlyc3Q6IChrZXkgLT4gYm9vbCkgLT4gJ2EgdCAtPiBrZXkgKiAnYVxuICAgIHZhbCBmaW5kX2ZpcnN0X29wdDogKGtleSAtPiBib29sKSAtPiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIGZpbmRfbGFzdDogKGtleSAtPiBib29sKSAtPiAnYSB0IC0+IGtleSAqICdhXG4gICAgdmFsIGZpbmRfbGFzdF9vcHQ6IChrZXkgLT4gYm9vbCkgLT4gJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICAgIHZhbCBtYXA6ICgnYSAtPiAnYikgLT4gJ2EgdCAtPiAnYiB0XG4gICAgdmFsIG1hcGk6IChrZXkgLT4gJ2EgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgdFxuICAgIHZhbCB0b19zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgdG9fcmV2X3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCB0b19zZXFfZnJvbSA6IGtleSAtPiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgYWRkX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIG9mX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdFxuICBlbmRcblxubW9kdWxlIE1ha2UoT3JkOiBPcmRlcmVkVHlwZSkgPSBzdHJ1Y3RcblxuICAgIHR5cGUga2V5ID0gT3JkLnRcblxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgIEVtcHR5XG4gICAgICB8IE5vZGUgb2Yge2w6J2EgdDsgdjprZXk7IGQ6J2E7IHI6J2EgdDsgaDppbnR9XG5cbiAgICBsZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gMFxuICAgICAgfCBOb2RlIHtofSAtPiBoXG5cbiAgICBsZXQgY3JlYXRlIGwgeCBkIHIgPVxuICAgICAgbGV0IGhsID0gaGVpZ2h0IGwgYW5kIGhyID0gaGVpZ2h0IHIgaW5cbiAgICAgIE5vZGV7bDsgdj14OyBkOyByOyBoPShpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSl9XG5cbiAgICBsZXQgc2luZ2xldG9uIHggZCA9IE5vZGV7bD1FbXB0eTsgdj14OyBkOyByPUVtcHR5OyBoPTF9XG5cbiAgICBsZXQgYmFsIGwgeCBkIHIgPVxuICAgICAgbGV0IGhsID0gbWF0Y2ggbCB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBsZXQgaHIgPSBtYXRjaCByIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGlmIGhsID4gaHIgKyAyIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgfCBOb2Rle2w9bGw7IHY9bHY7IGQ9bGQ7IHI9bHJ9IC0+XG4gICAgICAgICAgICBpZiBoZWlnaHQgbGwgPj0gaGVpZ2h0IGxyIHRoZW5cbiAgICAgICAgICAgICAgY3JlYXRlIGxsIGx2IGxkIChjcmVhdGUgbHIgeCBkIHIpXG4gICAgICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIG1hdGNoIGxyIHdpdGhcbiAgICAgICAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICAgICAgICB8IE5vZGV7bD1scmw7IHY9bHJ2OyBkPWxyZDsgcj1scnJ9LT5cbiAgICAgICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGxsIGx2IGxkIGxybCkgbHJ2IGxyZCAoY3JlYXRlIGxyciB4IGQgcilcbiAgICAgICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2UgaWYgaHIgPiBobCArIDIgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCByIHdpdGhcbiAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICB8IE5vZGV7bD1ybDsgdj1ydjsgZD1yZDsgcj1ycn0gLT5cbiAgICAgICAgICAgIGlmIGhlaWdodCByciA+PSBoZWlnaHQgcmwgdGhlblxuICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHggZCBybCkgcnYgcmQgcnJcbiAgICAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbWF0Y2ggcmwgd2l0aFxuICAgICAgICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgICAgICAgIHwgTm9kZXtsPXJsbDsgdj1ybHY7IGQ9cmxkOyByPXJscn0gLT5cbiAgICAgICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgeCBkIHJsbCkgcmx2IHJsZCAoY3JlYXRlIHJsciBydiByZCBycilcbiAgICAgICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2VcbiAgICAgICAgTm9kZXtsOyB2PXg7IGQ7IHI7IGg9KGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxKX1cblxuICAgIGxldCBlbXB0eSA9IEVtcHR5XG5cbiAgICBsZXQgaXNfZW1wdHkgPSBmdW5jdGlvbiBFbXB0eSAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuXG4gICAgbGV0IHJlYyBhZGQgeCBkYXRhID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb2Rle2w9RW1wdHk7IHY9eDsgZD1kYXRhOyByPUVtcHR5OyBoPTF9XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IGh9IGFzIG0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICAgIGlmIGQgPT0gZGF0YSB0aGVuIG0gZWxzZSBOb2Rle2w7IHY9eDsgZD1kYXRhOyByOyBofVxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGxsID0gYWRkIHggZGF0YSBsIGluXG4gICAgICAgICAgICBpZiBsID09IGxsIHRoZW4gbSBlbHNlIGJhbCBsbCB2IGQgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCByciA9IGFkZCB4IGRhdGEgciBpblxuICAgICAgICAgICAgaWYgciA9PSByciB0aGVuIG0gZWxzZSBiYWwgbCB2IGQgcnJcblxuICAgIGxldCByZWMgZmluZCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gZFxuICAgICAgICAgIGVsc2UgZmluZCB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X2F1eCB2MCBkMCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICAodjAsIGQwKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2IGQgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdjAgZDAgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3QgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYgZCBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0IGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X29wdF9hdXggdjAgZDAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgU29tZSAodjAsIGQwKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdiBkIGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2MCBkMCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9vcHQgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdiBkIGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0IGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3RfYXV4IHYwIGQwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgICh2MCwgZDApXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdiBkIGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdjAgZDAgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2IGQgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0IGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3Rfb3B0X2F1eCB2MCBkMCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBTb21lICh2MCwgZDApXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYgZCBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2MCBkMCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0X29wdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYgZCBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0IGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX29wdCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIFNvbWUgZFxuICAgICAgICAgIGVsc2UgZmluZF9vcHQgeCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCByZWMgbWVtIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICB8IE5vZGUge2w7IHY7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBjID0gMCB8fCBtZW0geCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCByZWMgbWluX2JpbmRpbmcgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7bD1FbXB0eTsgdjsgZH0gLT4gKHYsIGQpXG4gICAgICB8IE5vZGUge2x9IC0+IG1pbl9iaW5kaW5nIGxcblxuICAgIGxldCByZWMgbWluX2JpbmRpbmdfb3B0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2RlIHtsPUVtcHR5OyB2OyBkfSAtPiBTb21lICh2LCBkKVxuICAgICAgfCBOb2RlIHtsfS0+IG1pbl9iaW5kaW5nX29wdCBsXG5cbiAgICBsZXQgcmVjIG1heF9iaW5kaW5nID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge3Y7IGQ7IHI9RW1wdHl9IC0+ICh2LCBkKVxuICAgICAgfCBOb2RlIHtyfSAtPiBtYXhfYmluZGluZyByXG5cbiAgICBsZXQgcmVjIG1heF9iaW5kaW5nX29wdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgTm9kZSB7djsgZDsgcj1FbXB0eX0gLT4gU29tZSAodiwgZClcbiAgICAgIHwgTm9kZSB7cn0gLT4gbWF4X2JpbmRpbmdfb3B0IHJcblxuICAgIGxldCByZWMgcmVtb3ZlX21pbl9iaW5kaW5nID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAucmVtb3ZlX21pbl9lbHRcIlxuICAgICAgfCBOb2RlIHtsPUVtcHR5OyByfSAtPiByXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IGJhbCAocmVtb3ZlX21pbl9iaW5kaW5nIGwpIHYgZCByXG5cbiAgICBsZXQgbWVyZ2UgdDEgdDIgPVxuICAgICAgbWF0Y2ggKHQxLCB0Mikgd2l0aFxuICAgICAgICAoRW1wdHksIHQpIC0+IHRcbiAgICAgIHwgKHQsIEVtcHR5KSAtPiB0XG4gICAgICB8IChfLCBfKSAtPlxuICAgICAgICAgIGxldCAoeCwgZCkgPSBtaW5fYmluZGluZyB0MiBpblxuICAgICAgICAgIGJhbCB0MSB4IGQgKHJlbW92ZV9taW5fYmluZGluZyB0MilcblxuICAgIGxldCByZWMgcmVtb3ZlIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIEVtcHR5XG4gICAgICB8IChOb2RlIHtsOyB2OyBkOyByfSBhcyBtKSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBtZXJnZSBsIHJcbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBsbCA9IHJlbW92ZSB4IGwgaW4gaWYgbCA9PSBsbCB0aGVuIG0gZWxzZSBiYWwgbGwgdiBkIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgcnIgPSByZW1vdmUgeCByIGluIGlmIHIgPT0gcnIgdGhlbiBtIGVsc2UgYmFsIGwgdiBkIHJyXG5cbiAgICBsZXQgcmVjIHVwZGF0ZSB4IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIGYgTm9uZSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEVtcHR5XG4gICAgICAgICAgfCBTb21lIGRhdGEgLT4gTm9kZXtsPUVtcHR5OyB2PXg7IGQ9ZGF0YTsgcj1FbXB0eTsgaD0xfVxuICAgICAgICAgIGVuZFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBofSBhcyBtIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIGJlZ2luXG4gICAgICAgICAgICBtYXRjaCBmIChTb21lIGQpIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBtZXJnZSBsIHJcbiAgICAgICAgICAgIHwgU29tZSBkYXRhIC0+XG4gICAgICAgICAgICAgICAgaWYgZCA9PSBkYXRhIHRoZW4gbSBlbHNlIE5vZGV7bDsgdj14OyBkPWRhdGE7IHI7IGh9XG4gICAgICAgICAgZW5kIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGxsID0gdXBkYXRlIHggZiBsIGluXG4gICAgICAgICAgICBpZiBsID09IGxsIHRoZW4gbSBlbHNlIGJhbCBsbCB2IGQgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCByciA9IHVwZGF0ZSB4IGYgciBpblxuICAgICAgICAgICAgaWYgciA9PSByciB0aGVuIG0gZWxzZSBiYWwgbCB2IGQgcnJcblxuICAgIGxldCByZWMgaXRlciBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gKClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpdGVyIGYgbDsgZiB2IGQ7IGl0ZXIgZiByXG5cbiAgICBsZXQgcmVjIG1hcCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBFbXB0eVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBofSAtPlxuICAgICAgICAgIGxldCBsJyA9IG1hcCBmIGwgaW5cbiAgICAgICAgICBsZXQgZCcgPSBmIGQgaW5cbiAgICAgICAgICBsZXQgcicgPSBtYXAgZiByIGluXG4gICAgICAgICAgTm9kZXtsPWwnOyB2OyBkPWQnOyByPXInOyBofVxuXG4gICAgbGV0IHJlYyBtYXBpIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIEVtcHR5XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IGh9IC0+XG4gICAgICAgICAgbGV0IGwnID0gbWFwaSBmIGwgaW5cbiAgICAgICAgICBsZXQgZCcgPSBmIHYgZCBpblxuICAgICAgICAgIGxldCByJyA9IG1hcGkgZiByIGluXG4gICAgICAgICAgTm9kZXtsPWwnOyB2OyBkPWQnOyByPXInOyBofVxuXG4gICAgbGV0IHJlYyBmb2xkIGYgbSBhY2N1ID1cbiAgICAgIG1hdGNoIG0gd2l0aFxuICAgICAgICBFbXB0eSAtPiBhY2N1XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgZm9sZCBmIHIgKGYgdiBkIChmb2xkIGYgbCBhY2N1KSlcblxuICAgIGxldCByZWMgZm9yX2FsbCBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gdHJ1ZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBwIHYgZCAmJiBmb3JfYWxsIHAgbCAmJiBmb3JfYWxsIHAgclxuXG4gICAgbGV0IHJlYyBleGlzdHMgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGZhbHNlXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IHAgdiBkIHx8IGV4aXN0cyBwIGwgfHwgZXhpc3RzIHAgclxuXG4gICAgKCogQmV3YXJlOiB0aG9zZSB0d28gZnVuY3Rpb25zIGFzc3VtZSB0aGF0IHRoZSBhZGRlZCBrIGlzICpzdHJpY3RseSpcbiAgICAgICBzbWFsbGVyIChvciBiaWdnZXIpIHRoYW4gYWxsIHRoZSBwcmVzZW50IGtleXMgaW4gdGhlIHRyZWU7IGl0XG4gICAgICAgZG9lcyBub3QgdGVzdCBmb3IgZXF1YWxpdHkgd2l0aCB0aGUgY3VycmVudCBtaW4gKG9yIG1heCkga2V5LlxuXG4gICAgICAgSW5kZWVkLCB0aGV5IGFyZSBvbmx5IHVzZWQgZHVyaW5nIHRoZSBcImpvaW5cIiBvcGVyYXRpb24gd2hpY2hcbiAgICAgICByZXNwZWN0cyB0aGlzIHByZWNvbmRpdGlvbi5cbiAgICAqKVxuXG4gICAgbGV0IHJlYyBhZGRfbWluX2JpbmRpbmcgayB4ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gc2luZ2xldG9uIGsgeFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICBiYWwgKGFkZF9taW5fYmluZGluZyBrIHggbCkgdiBkIHJcblxuICAgIGxldCByZWMgYWRkX21heF9iaW5kaW5nIGsgeCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IHNpbmdsZXRvbiBrIHhcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgYmFsIGwgdiBkIChhZGRfbWF4X2JpbmRpbmcgayB4IHIpXG5cbiAgICAoKiBTYW1lIGFzIGNyZWF0ZSBhbmQgYmFsLCBidXQgbm8gYXNzdW1wdGlvbnMgYXJlIG1hZGUgb24gdGhlXG4gICAgICAgcmVsYXRpdmUgaGVpZ2h0cyBvZiBsIGFuZCByLiAqKVxuXG4gICAgbGV0IHJlYyBqb2luIGwgdiBkIHIgPVxuICAgICAgbWF0Y2ggKGwsIHIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBfKSAtPiBhZGRfbWluX2JpbmRpbmcgdiBkIHJcbiAgICAgIHwgKF8sIEVtcHR5KSAtPiBhZGRfbWF4X2JpbmRpbmcgdiBkIGxcbiAgICAgIHwgKE5vZGV7bD1sbDsgdj1sdjsgZD1sZDsgcj1scjsgaD1saH0sXG4gICAgICAgICBOb2Rle2w9cmw7IHY9cnY7IGQ9cmQ7IHI9cnI7IGg9cmh9KSAtPlxuICAgICAgICAgIGlmIGxoID4gcmggKyAyIHRoZW4gYmFsIGxsIGx2IGxkIChqb2luIGxyIHYgZCByKSBlbHNlXG4gICAgICAgICAgaWYgcmggPiBsaCArIDIgdGhlbiBiYWwgKGpvaW4gbCB2IGQgcmwpIHJ2IHJkIHJyIGVsc2VcbiAgICAgICAgICBjcmVhdGUgbCB2IGQgclxuXG4gICAgKCogTWVyZ2UgdHdvIHRyZWVzIGwgYW5kIHIgaW50byBvbmUuXG4gICAgICAgQWxsIGVsZW1lbnRzIG9mIGwgbXVzdCBwcmVjZWRlIHRoZSBlbGVtZW50cyBvZiByLlxuICAgICAgIE5vIGFzc3VtcHRpb24gb24gdGhlIGhlaWdodHMgb2YgbCBhbmQgci4gKilcblxuICAgIGxldCBjb25jYXQgdDEgdDIgPVxuICAgICAgbWF0Y2ggKHQxLCB0Mikgd2l0aFxuICAgICAgICAoRW1wdHksIHQpIC0+IHRcbiAgICAgIHwgKHQsIEVtcHR5KSAtPiB0XG4gICAgICB8IChfLCBfKSAtPlxuICAgICAgICAgIGxldCAoeCwgZCkgPSBtaW5fYmluZGluZyB0MiBpblxuICAgICAgICAgIGpvaW4gdDEgeCBkIChyZW1vdmVfbWluX2JpbmRpbmcgdDIpXG5cbiAgICBsZXQgY29uY2F0X29yX2pvaW4gdDEgdiBkIHQyID1cbiAgICAgIG1hdGNoIGQgd2l0aFxuICAgICAgfCBTb21lIGQgLT4gam9pbiB0MSB2IGQgdDJcbiAgICAgIHwgTm9uZSAtPiBjb25jYXQgdDEgdDJcblxuICAgIGxldCByZWMgc3BsaXQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgKEVtcHR5LCBOb25lLCBFbXB0eSlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gKGwsIFNvbWUgZCwgcilcbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCAobGwsIHByZXMsIHJsKSA9IHNwbGl0IHggbCBpbiAobGwsIHByZXMsIGpvaW4gcmwgdiBkIHIpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IChsciwgcHJlcywgcnIpID0gc3BsaXQgeCByIGluIChqb2luIGwgdiBkIGxyLCBwcmVzLCBycilcblxuICAgIGxldCByZWMgbWVyZ2UgZiBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgRW1wdHkpIC0+IEVtcHR5XG4gICAgICB8IChOb2RlIHtsPWwxOyB2PXYxOyBkPWQxOyByPXIxOyBoPWgxfSwgXykgd2hlbiBoMSA+PSBoZWlnaHQgczIgLT5cbiAgICAgICAgICBsZXQgKGwyLCBkMiwgcjIpID0gc3BsaXQgdjEgczIgaW5cbiAgICAgICAgICBjb25jYXRfb3Jfam9pbiAobWVyZ2UgZiBsMSBsMikgdjEgKGYgdjEgKFNvbWUgZDEpIGQyKSAobWVyZ2UgZiByMSByMilcbiAgICAgIHwgKF8sIE5vZGUge2w9bDI7IHY9djI7IGQ9ZDI7IHI9cjJ9KSAtPlxuICAgICAgICAgIGxldCAobDEsIGQxLCByMSkgPSBzcGxpdCB2MiBzMSBpblxuICAgICAgICAgIGNvbmNhdF9vcl9qb2luIChtZXJnZSBmIGwxIGwyKSB2MiAoZiB2MiBkMSAoU29tZSBkMikpIChtZXJnZSBmIHIxIHIyKVxuICAgICAgfCBfIC0+XG4gICAgICAgICAgYXNzZXJ0IGZhbHNlXG5cbiAgICBsZXQgcmVjIHVuaW9uIGYgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgfCAoRW1wdHksIHMpIHwgKHMsIEVtcHR5KSAtPiBzXG4gICAgICB8IChOb2RlIHtsPWwxOyB2PXYxOyBkPWQxOyByPXIxOyBoPWgxfSxcbiAgICAgICAgIE5vZGUge2w9bDI7IHY9djI7IGQ9ZDI7IHI9cjI7IGg9aDJ9KSAtPlxuICAgICAgICAgIGlmIGgxID49IGgyIHRoZW5cbiAgICAgICAgICAgIGxldCAobDIsIGQyLCByMikgPSBzcGxpdCB2MSBzMiBpblxuICAgICAgICAgICAgbGV0IGwgPSB1bmlvbiBmIGwxIGwyIGFuZCByID0gdW5pb24gZiByMSByMiBpblxuICAgICAgICAgICAgbWF0Y2ggZDIgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGpvaW4gbCB2MSBkMSByXG4gICAgICAgICAgICB8IFNvbWUgZDIgLT4gY29uY2F0X29yX2pvaW4gbCB2MSAoZiB2MSBkMSBkMikgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCAobDEsIGQxLCByMSkgPSBzcGxpdCB2MiBzMSBpblxuICAgICAgICAgICAgbGV0IGwgPSB1bmlvbiBmIGwxIGwyIGFuZCByID0gdW5pb24gZiByMSByMiBpblxuICAgICAgICAgICAgbWF0Y2ggZDEgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGpvaW4gbCB2MiBkMiByXG4gICAgICAgICAgICB8IFNvbWUgZDEgLT4gY29uY2F0X29yX2pvaW4gbCB2MiAoZiB2MiBkMSBkMikgclxuXG4gICAgbGV0IHJlYyBmaWx0ZXIgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IGFzIG0gLT5cbiAgICAgICAgICAoKiBjYWxsIFtwXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCBsJyA9IGZpbHRlciBwIGwgaW5cbiAgICAgICAgICBsZXQgcHZkID0gcCB2IGQgaW5cbiAgICAgICAgICBsZXQgcicgPSBmaWx0ZXIgcCByIGluXG4gICAgICAgICAgaWYgcHZkIHRoZW4gaWYgbD09bCcgJiYgcj09cicgdGhlbiBtIGVsc2Ugam9pbiBsJyB2IGQgcidcbiAgICAgICAgICBlbHNlIGNvbmNhdCBsJyByJ1xuXG4gICAgbGV0IHJlYyBmaWx0ZXJfbWFwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgICgqIGNhbGwgW2ZdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IGwnID0gZmlsdGVyX21hcCBmIGwgaW5cbiAgICAgICAgICBsZXQgZnZkID0gZiB2IGQgaW5cbiAgICAgICAgICBsZXQgcicgPSBmaWx0ZXJfbWFwIGYgciBpblxuICAgICAgICAgIGJlZ2luIG1hdGNoIGZ2ZCB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgZCcgLT4gam9pbiBsJyB2IGQnIHInXG4gICAgICAgICAgICB8IE5vbmUgLT4gY29uY2F0IGwnIHInXG4gICAgICAgICAgZW5kXG5cbiAgICBsZXQgcmVjIHBhcnRpdGlvbiBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gKEVtcHR5LCBFbXB0eSlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICAoKiBjYWxsIFtwXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCAobHQsIGxmKSA9IHBhcnRpdGlvbiBwIGwgaW5cbiAgICAgICAgICBsZXQgcHZkID0gcCB2IGQgaW5cbiAgICAgICAgICBsZXQgKHJ0LCByZikgPSBwYXJ0aXRpb24gcCByIGluXG4gICAgICAgICAgaWYgcHZkXG4gICAgICAgICAgdGhlbiAoam9pbiBsdCB2IGQgcnQsIGNvbmNhdCBsZiByZilcbiAgICAgICAgICBlbHNlIChjb25jYXQgbHQgcnQsIGpvaW4gbGYgdiBkIHJmKVxuXG4gICAgdHlwZSAnYSBlbnVtZXJhdGlvbiA9IEVuZCB8IE1vcmUgb2Yga2V5ICogJ2EgKiAnYSB0ICogJ2EgZW51bWVyYXRpb25cblxuICAgIGxldCByZWMgY29uc19lbnVtIG0gZSA9XG4gICAgICBtYXRjaCBtIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBjb25zX2VudW0gbCAoTW9yZSh2LCBkLCByLCBlKSlcblxuICAgIGxldCBjb21wYXJlIGNtcCBtMSBtMiA9XG4gICAgICBsZXQgcmVjIGNvbXBhcmVfYXV4IGUxIGUyID1cbiAgICAgICAgICBtYXRjaCAoZTEsIGUyKSB3aXRoXG4gICAgICAgICAgKEVuZCwgRW5kKSAtPiAwXG4gICAgICAgIHwgKEVuZCwgXykgIC0+IC0xXG4gICAgICAgIHwgKF8sIEVuZCkgLT4gMVxuICAgICAgICB8IChNb3JlKHYxLCBkMSwgcjEsIGUxKSwgTW9yZSh2MiwgZDIsIHIyLCBlMikpIC0+XG4gICAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHYxIHYyIGluXG4gICAgICAgICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2VcbiAgICAgICAgICAgIGxldCBjID0gY21wIGQxIGQyIGluXG4gICAgICAgICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2VcbiAgICAgICAgICAgIGNvbXBhcmVfYXV4IChjb25zX2VudW0gcjEgZTEpIChjb25zX2VudW0gcjIgZTIpXG4gICAgICBpbiBjb21wYXJlX2F1eCAoY29uc19lbnVtIG0xIEVuZCkgKGNvbnNfZW51bSBtMiBFbmQpXG5cbiAgICBsZXQgZXF1YWwgY21wIG0xIG0yID1cbiAgICAgIGxldCByZWMgZXF1YWxfYXV4IGUxIGUyID1cbiAgICAgICAgICBtYXRjaCAoZTEsIGUyKSB3aXRoXG4gICAgICAgICAgKEVuZCwgRW5kKSAtPiB0cnVlXG4gICAgICAgIHwgKEVuZCwgXykgIC0+IGZhbHNlXG4gICAgICAgIHwgKF8sIEVuZCkgLT4gZmFsc2VcbiAgICAgICAgfCAoTW9yZSh2MSwgZDEsIHIxLCBlMSksIE1vcmUodjIsIGQyLCByMiwgZTIpKSAtPlxuICAgICAgICAgICAgT3JkLmNvbXBhcmUgdjEgdjIgPSAwICYmIGNtcCBkMSBkMiAmJlxuICAgICAgICAgICAgZXF1YWxfYXV4IChjb25zX2VudW0gcjEgZTEpIChjb25zX2VudW0gcjIgZTIpXG4gICAgICBpbiBlcXVhbF9hdXggKGNvbnNfZW51bSBtMSBFbmQpIChjb25zX2VudW0gbTIgRW5kKVxuXG4gICAgbGV0IHJlYyBjYXJkaW5hbCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IDBcbiAgICAgIHwgTm9kZSB7bDsgcn0gLT4gY2FyZGluYWwgbCArIDEgKyBjYXJkaW5hbCByXG5cbiAgICBsZXQgcmVjIGJpbmRpbmdzX2F1eCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBiaW5kaW5nc19hdXggKCh2LCBkKSA6OiBiaW5kaW5nc19hdXggYWNjdSByKSBsXG5cbiAgICBsZXQgYmluZGluZ3MgcyA9XG4gICAgICBiaW5kaW5nc19hdXggW10gc1xuXG4gICAgbGV0IGNob29zZSA9IG1pbl9iaW5kaW5nXG5cbiAgICBsZXQgY2hvb3NlX29wdCA9IG1pbl9iaW5kaW5nX29wdFxuXG4gICAgbGV0IGFkZF9zZXEgaSBtID1cbiAgICAgIFNlcS5mb2xkX2xlZnQgKGZ1biBtIChrLHYpIC0+IGFkZCBrIHYgbSkgbSBpXG5cbiAgICBsZXQgb2Zfc2VxIGkgPSBhZGRfc2VxIGkgZW1wdHlcblxuICAgIGxldCByZWMgc2VxX29mX2VudW1fIGMgKCkgPSBtYXRjaCBjIHdpdGhcbiAgICAgIHwgRW5kIC0+IFNlcS5OaWxcbiAgICAgIHwgTW9yZSAoayx2LHQscmVzdCkgLT4gU2VxLkNvbnMgKChrLHYpLCBzZXFfb2ZfZW51bV8gKGNvbnNfZW51bSB0IHJlc3QpKVxuXG4gICAgbGV0IHRvX3NlcSBtID1cbiAgICAgIHNlcV9vZl9lbnVtXyAoY29uc19lbnVtIG0gRW5kKVxuXG4gICAgbGV0IHJlYyBzbm9jX2VudW0gcyBlID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICBFbXB0eSAtPiBlXG4gICAgICB8IE5vZGV7bDsgdjsgZDsgcn0gLT4gc25vY19lbnVtIHIgKE1vcmUodiwgZCwgbCwgZSkpXG5cbiAgICBsZXQgcmVjIHJldl9zZXFfb2ZfZW51bV8gYyAoKSA9IG1hdGNoIGMgd2l0aFxuICAgICAgfCBFbmQgLT4gU2VxLk5pbFxuICAgICAgfCBNb3JlIChrLHYsdCxyZXN0KSAtPlxuICAgICAgICAgIFNlcS5Db25zICgoayx2KSwgcmV2X3NlcV9vZl9lbnVtXyAoc25vY19lbnVtIHQgcmVzdCkpXG5cbiAgICBsZXQgdG9fcmV2X3NlcSBjID1cbiAgICAgIHJldl9zZXFfb2ZfZW51bV8gKHNub2NfZW51bSBjIEVuZClcblxuICAgIGxldCB0b19zZXFfZnJvbSBsb3cgbSA9XG4gICAgICBsZXQgcmVjIGF1eCBsb3cgbSBjID0gbWF0Y2ggbSB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gY1xuICAgICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IF99IC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBPcmQuY29tcGFyZSB2IGxvdyB3aXRoXG4gICAgICAgICAgICAgIHwgMCAtPiBNb3JlICh2LCBkLCByLCBjKVxuICAgICAgICAgICAgICB8IG4gd2hlbiBuPDAgLT4gYXV4IGxvdyByIGNcbiAgICAgICAgICAgICAgfCBfIC0+IGF1eCBsb3cgbCAoTW9yZSAodiwgZCwgciwgYykpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGluXG4gICAgICBzZXFfb2ZfZW51bV8gKGF1eCBsb3cgbSBFbmQpXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAnYSB0ID0geyBtdXRhYmxlIGMgOiAnYSBsaXN0OyBtdXRhYmxlIGxlbiA6IGludDsgfVxuXG5leGNlcHRpb24gRW1wdHlcblxubGV0IGNyZWF0ZSAoKSA9IHsgYyA9IFtdOyBsZW4gPSAwOyB9XG5cbmxldCBjbGVhciBzID0gcy5jIDwtIFtdOyBzLmxlbiA8LSAwXG5cbmxldCBjb3B5IHMgPSB7IGMgPSBzLmM7IGxlbiA9IHMubGVuOyB9XG5cbmxldCBwdXNoIHggcyA9IHMuYyA8LSB4IDo6IHMuYzsgcy5sZW4gPC0gcy5sZW4gKyAxXG5cbmxldCBwb3AgcyA9XG4gIG1hdGNoIHMuYyB3aXRoXG4gIHwgaGQ6OnRsIC0+IHMuYyA8LSB0bDsgcy5sZW4gPC0gcy5sZW4gLSAxOyBoZFxuICB8IFtdICAgICAtPiByYWlzZSBFbXB0eVxuXG5sZXQgcG9wX29wdCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBoZDo6dGwgLT4gcy5jIDwtIHRsOyBzLmxlbiA8LSBzLmxlbiAtIDE7IFNvbWUgaGRcbiAgfCBbXSAgICAgLT4gTm9uZVxuXG5sZXQgdG9wIHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IGhkOjpfIC0+IGhkXG4gIHwgW10gICAgLT4gcmFpc2UgRW1wdHlcblxubGV0IHRvcF9vcHQgcyA9XG4gIG1hdGNoIHMuYyB3aXRoXG4gIHwgaGQ6Ol8gLT4gU29tZSBoZFxuICB8IFtdICAgIC0+IE5vbmVcblxubGV0IGlzX2VtcHR5IHMgPSAocy5jID0gW10pXG5cbmxldCBsZW5ndGggcyA9IHMubGVuXG5cbmxldCBpdGVyIGYgcyA9IExpc3QuaXRlciBmIHMuY1xuXG5sZXQgZm9sZCBmIGFjYyBzID0gTGlzdC5mb2xkX2xlZnQgZiBhY2Mgcy5jXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgcyA9IExpc3QudG9fc2VxIHMuY1xuXG5sZXQgYWRkX3NlcSBxIGkgPSBTZXEuaXRlciAoZnVuIHggLT4gcHVzaCB4IHEpIGlcblxubGV0IG9mX3NlcSBnID1cbiAgbGV0IHMgPSBjcmVhdGUoKSBpblxuICBhZGRfc2VxIHMgZztcbiAgc1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICBGcmFuY29pcyBQb3R0aWVyLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICBKZXJlbWllIERpbWlubywgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leGNlcHRpb24gRW1wdHlcblxudHlwZSAnYSBjZWxsID1cbiAgfCBOaWxcbiAgfCBDb25zIG9mIHsgY29udGVudDogJ2E7IG11dGFibGUgbmV4dDogJ2EgY2VsbCB9XG5cbnR5cGUgJ2EgdCA9IHtcbiAgbXV0YWJsZSBsZW5ndGg6IGludDtcbiAgbXV0YWJsZSBmaXJzdDogJ2EgY2VsbDtcbiAgbXV0YWJsZSBsYXN0OiAnYSBjZWxsXG59XG5cbmxldCBjcmVhdGUgKCkgPSB7XG4gIGxlbmd0aCA9IDA7XG4gIGZpcnN0ID0gTmlsO1xuICBsYXN0ID0gTmlsXG59XG5cbmxldCBjbGVhciBxID1cbiAgcS5sZW5ndGggPC0gMDtcbiAgcS5maXJzdCA8LSBOaWw7XG4gIHEubGFzdCA8LSBOaWxcblxubGV0IGFkZCB4IHEgPVxuICBsZXQgY2VsbCA9IENvbnMge1xuICAgIGNvbnRlbnQgPSB4O1xuICAgIG5leHQgPSBOaWxcbiAgfSBpblxuICBtYXRjaCBxLmxhc3Qgd2l0aFxuICB8IE5pbCAtPlxuICAgIHEubGVuZ3RoIDwtIDE7XG4gICAgcS5maXJzdCA8LSBjZWxsO1xuICAgIHEubGFzdCA8LSBjZWxsXG4gIHwgQ29ucyBsYXN0IC0+XG4gICAgcS5sZW5ndGggPC0gcS5sZW5ndGggKyAxO1xuICAgIGxhc3QubmV4dCA8LSBjZWxsO1xuICAgIHEubGFzdCA8LSBjZWxsXG5cbmxldCBwdXNoID1cbiAgYWRkXG5cbmxldCBwZWVrIHEgPVxuICBtYXRjaCBxLmZpcnN0IHdpdGhcbiAgfCBOaWwgLT4gcmFpc2UgRW1wdHlcbiAgfCBDb25zIHsgY29udGVudCB9IC0+IGNvbnRlbnRcblxubGV0IHBlZWtfb3B0IHEgPVxuICBtYXRjaCBxLmZpcnN0IHdpdGhcbiAgfCBOaWwgLT4gTm9uZVxuICB8IENvbnMgeyBjb250ZW50IH0gLT4gU29tZSBjb250ZW50XG5cbmxldCB0b3AgPVxuICBwZWVrXG5cbmxldCB0YWtlIHEgPVxuICBtYXRjaCBxLmZpcnN0IHdpdGhcbiAgfCBOaWwgLT4gcmFpc2UgRW1wdHlcbiAgfCBDb25zIHsgY29udGVudDsgbmV4dCA9IE5pbCB9IC0+XG4gICAgY2xlYXIgcTtcbiAgICBjb250ZW50XG4gIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgfSAtPlxuICAgIHEubGVuZ3RoIDwtIHEubGVuZ3RoIC0gMTtcbiAgICBxLmZpcnN0IDwtIG5leHQ7XG4gICAgY29udGVudFxuXG5sZXQgdGFrZV9vcHQgcSA9XG4gIG1hdGNoIHEuZmlyc3Qgd2l0aFxuICB8IE5pbCAtPiBOb25lXG4gIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgPSBOaWwgfSAtPlxuICAgIGNsZWFyIHE7XG4gICAgU29tZSBjb250ZW50XG4gIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgfSAtPlxuICAgIHEubGVuZ3RoIDwtIHEubGVuZ3RoIC0gMTtcbiAgICBxLmZpcnN0IDwtIG5leHQ7XG4gICAgU29tZSBjb250ZW50XG5cbmxldCBwb3AgPVxuICB0YWtlXG5cbmxldCBjb3B5ID1cbiAgbGV0IHJlYyBjb3B5IHFfcmVzIHByZXYgY2VsbCA9XG4gICAgbWF0Y2ggY2VsbCB3aXRoXG4gICAgfCBOaWwgLT4gcV9yZXMubGFzdCA8LSBwcmV2OyBxX3Jlc1xuICAgIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgfSAtPlxuICAgICAgbGV0IHJlcyA9IENvbnMgeyBjb250ZW50OyBuZXh0ID0gTmlsIH0gaW5cbiAgICAgIGJlZ2luIG1hdGNoIHByZXYgd2l0aFxuICAgICAgfCBOaWwgLT4gcV9yZXMuZmlyc3QgPC0gcmVzXG4gICAgICB8IENvbnMgcCAtPiBwLm5leHQgPC0gcmVzXG4gICAgICBlbmQ7XG4gICAgICBjb3B5IHFfcmVzIHJlcyBuZXh0XG4gIGluXG4gIGZ1biBxIC0+IGNvcHkgeyBsZW5ndGggPSBxLmxlbmd0aDsgZmlyc3QgPSBOaWw7IGxhc3QgPSBOaWwgfSBOaWwgcS5maXJzdFxuXG5sZXQgaXNfZW1wdHkgcSA9XG4gIHEubGVuZ3RoID0gMFxuXG5sZXQgbGVuZ3RoIHEgPVxuICBxLmxlbmd0aFxuXG5sZXQgaXRlciA9XG4gIGxldCByZWMgaXRlciBmIGNlbGwgPVxuICAgIG1hdGNoIGNlbGwgd2l0aFxuICAgIHwgTmlsIC0+ICgpXG4gICAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgICBmIGNvbnRlbnQ7XG4gICAgICBpdGVyIGYgbmV4dFxuICBpblxuICBmdW4gZiBxIC0+IGl0ZXIgZiBxLmZpcnN0XG5cbmxldCBmb2xkID1cbiAgbGV0IHJlYyBmb2xkIGYgYWNjdSBjZWxsID1cbiAgICBtYXRjaCBjZWxsIHdpdGhcbiAgICB8IE5pbCAtPiBhY2N1XG4gICAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgICBsZXQgYWNjdSA9IGYgYWNjdSBjb250ZW50IGluXG4gICAgICBmb2xkIGYgYWNjdSBuZXh0XG4gIGluXG4gIGZ1biBmIGFjY3UgcSAtPiBmb2xkIGYgYWNjdSBxLmZpcnN0XG5cbmxldCB0cmFuc2ZlciBxMSBxMiA9XG4gIGlmIHExLmxlbmd0aCA+IDAgdGhlblxuICAgIG1hdGNoIHEyLmxhc3Qgd2l0aFxuICAgIHwgTmlsIC0+XG4gICAgICBxMi5sZW5ndGggPC0gcTEubGVuZ3RoO1xuICAgICAgcTIuZmlyc3QgPC0gcTEuZmlyc3Q7XG4gICAgICBxMi5sYXN0IDwtIHExLmxhc3Q7XG4gICAgICBjbGVhciBxMVxuICAgIHwgQ29ucyBsYXN0IC0+XG4gICAgICBxMi5sZW5ndGggPC0gcTIubGVuZ3RoICsgcTEubGVuZ3RoO1xuICAgICAgbGFzdC5uZXh0IDwtIHExLmZpcnN0O1xuICAgICAgcTIubGFzdCA8LSBxMS5sYXN0O1xuICAgICAgY2xlYXIgcTFcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBxID1cbiAgbGV0IHJlYyBhdXggYyAoKSA9IG1hdGNoIGMgd2l0aFxuICAgIHwgTmlsIC0+IFNlcS5OaWxcbiAgICB8IENvbnMgeyBjb250ZW50PXg7IG5leHQ7IH0gLT4gU2VxLkNvbnMgKHgsIGF1eCBuZXh0KVxuICBpblxuICBhdXggcS5maXJzdFxuXG5sZXQgYWRkX3NlcSBxIGkgPSBTZXEuaXRlciAoZnVuIHggLT4gcHVzaCB4IHEpIGlcblxubGV0IG9mX3NlcSBnID1cbiAgbGV0IHEgPSBjcmVhdGUoKSBpblxuICBhZGRfc2VxIHEgZztcbiAgcVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICdhIHQgPSAnYSBjZWxsIG9wdGlvblxuYW5kICdhIGNlbGwgPSB7IG11dGFibGUgY291bnQgOiBpbnQ7IG11dGFibGUgZGF0YSA6ICdhIGRhdGEgfVxuYW5kICdhIGRhdGEgPVxuICAgIFNlbXB0eVxuICB8IFNjb25zIG9mICdhICogJ2EgZGF0YVxuICB8IFNhcHAgb2YgJ2EgZGF0YSAqICdhIGRhdGFcbiAgfCBTbGF6eSBvZiAnYSBkYXRhIExhenkudFxuICB8IFNnZW4gb2YgJ2EgZ2VuXG4gIHwgU2J1ZmZpbyA6IGJ1ZmZpbyAtPiBjaGFyIGRhdGFcbmFuZCAnYSBnZW4gPSB7IG11dGFibGUgY3VyciA6ICdhIG9wdGlvbiBvcHRpb247IGZ1bmMgOiBpbnQgLT4gJ2Egb3B0aW9uIH1cbmFuZCBidWZmaW8gPVxuICB7IGljIDogaW5fY2hhbm5lbDsgYnVmZiA6IGJ5dGVzOyBtdXRhYmxlIGxlbiA6IGludDsgbXV0YWJsZSBpbmQgOiBpbnQgfVxuXG5leGNlcHRpb24gRmFpbHVyZVxuZXhjZXB0aW9uIEVycm9yIG9mIHN0cmluZ1xuXG5sZXQgY291bnQgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gMFxuICB8IFNvbWUgeyBjb3VudCB9IC0+IGNvdW50XG5sZXQgZGF0YSA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBTZW1wdHlcbiAgfCBTb21lIHsgZGF0YSB9IC0+IGRhdGFcblxubGV0IGZpbGxfYnVmZiBiID1cbiAgYi5sZW4gPC0gaW5wdXQgYi5pYyBiLmJ1ZmYgMCAoQnl0ZXMubGVuZ3RoIGIuYnVmZik7IGIuaW5kIDwtIDBcblxuXG5sZXQgcmVjIGdldF9kYXRhIDogdHlwZSB2LiBpbnQgLT4gdiBkYXRhIC0+IHYgZGF0YSA9IGZ1biBjb3VudCBkIC0+IG1hdGNoIGQgd2l0aFxuICgqIFJldHVybnMgZWl0aGVyIFNlbXB0eSBvciBTY29ucyhhLCBfKSBldmVuIHdoZW4gZCBpcyBhIGdlbmVyYXRvclxuICAgIG9yIGEgYnVmZmVyLiBJbiB0aG9zZSBjYXNlcywgdGhlIGl0ZW0gYSBpcyBzZWVuIGFzIGV4dHJhY3RlZCBmcm9tXG4gdGhlIGdlbmVyYXRvci9idWZmZXIuXG4gVGhlIGNvdW50IHBhcmFtZXRlciBpcyB1c2VkIGZvciBjYWxsaW5nIGBTZ2VuLWZ1bmN0aW9ucycuICAqKVxuICAgU2VtcHR5IHwgU2NvbnMgKF8sIF8pIC0+IGRcbiB8IFNhcHAgKGQxLCBkMikgLT5cbiAgICAgYmVnaW4gbWF0Y2ggZ2V0X2RhdGEgY291bnQgZDEgd2l0aFxuICAgICAgIFNjb25zIChhLCBkMTEpIC0+IFNjb25zIChhLCBTYXBwIChkMTEsIGQyKSlcbiAgICAgfCBTZW1wdHkgLT4gZ2V0X2RhdGEgY291bnQgZDJcbiAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICBlbmRcbiB8IFNnZW4ge2N1cnIgPSBTb21lIE5vbmV9IC0+IFNlbXB0eVxuIHwgU2dlbiAoe2N1cnIgPSBTb21lKFNvbWUgYSl9IGFzIGcpIC0+XG4gICAgIGcuY3VyciA8LSBOb25lOyBTY29ucyhhLCBkKVxuIHwgU2dlbiBnIC0+XG4gICAgIGJlZ2luIG1hdGNoIGcuZnVuYyBjb3VudCB3aXRoXG4gICAgICAgTm9uZSAtPiBnLmN1cnIgPC0gU29tZShOb25lKTsgU2VtcHR5XG4gICAgIHwgU29tZSBhIC0+IFNjb25zKGEsIGQpXG4gICAgICAgICAoKiBXYXJuaW5nOiBhbnlvbmUgdXNpbmcgZyB0aGlua3MgdGhhdCBhbiBpdGVtIGhhcyBiZWVuIHJlYWQgKilcbiAgICAgZW5kXG4gfCBTYnVmZmlvIGIgLT5cbiAgICAgaWYgYi5pbmQgPj0gYi5sZW4gdGhlbiBmaWxsX2J1ZmYgYjtcbiAgICAgaWYgYi5sZW4gPT0gMCB0aGVuIFNlbXB0eSBlbHNlXG4gICAgICAgbGV0IHIgPSBCeXRlcy51bnNhZmVfZ2V0IGIuYnVmZiBiLmluZCBpblxuICAgICAgICgqIFdhcm5pbmc6IGFueW9uZSB1c2luZyBnIHRoaW5rcyB0aGF0IGFuIGl0ZW0gaGFzIGJlZW4gcmVhZCAqKVxuICAgICAgIGIuaW5kIDwtIHN1Y2MgYi5pbmQ7IFNjb25zKHIsIGQpXG4gfCBTbGF6eSBmIC0+IGdldF9kYXRhIGNvdW50IChMYXp5LmZvcmNlIGYpXG5cblxubGV0IHJlYyBwZWVrX2RhdGEgOiB0eXBlIHYuIHYgY2VsbCAtPiB2IG9wdGlvbiA9IGZ1biBzIC0+XG4gKCogY29uc3VsdCB0aGUgZmlyc3QgaXRlbSBvZiBzICopXG4gbWF0Y2ggcy5kYXRhIHdpdGhcbiAgIFNlbXB0eSAtPiBOb25lXG4gfCBTY29ucyAoYSwgXykgLT4gU29tZSBhXG4gfCBTYXBwIChfLCBfKSAtPlxuICAgICBiZWdpbiBtYXRjaCBnZXRfZGF0YSBzLmNvdW50IHMuZGF0YSB3aXRoXG4gICAgICAgU2NvbnMoYSwgXykgYXMgZCAtPiBzLmRhdGEgPC0gZDsgU29tZSBhXG4gICAgIHwgU2VtcHR5IC0+IE5vbmVcbiAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICBlbmRcbiB8IFNsYXp5IGYgLT4gcy5kYXRhIDwtIChMYXp5LmZvcmNlIGYpOyBwZWVrX2RhdGEgc1xuIHwgU2dlbiB7Y3VyciA9IFNvbWUgYX0gLT4gYVxuIHwgU2dlbiBnIC0+IGxldCB4ID0gZy5mdW5jIHMuY291bnQgaW4gZy5jdXJyIDwtIFNvbWUgeDsgeFxuIHwgU2J1ZmZpbyBiIC0+XG4gICAgIGlmIGIuaW5kID49IGIubGVuIHRoZW4gZmlsbF9idWZmIGI7XG4gICAgIGlmIGIubGVuID09IDAgdGhlbiBiZWdpbiBzLmRhdGEgPC0gU2VtcHR5OyBOb25lIGVuZFxuICAgICBlbHNlIFNvbWUgKEJ5dGVzLnVuc2FmZV9nZXQgYi5idWZmIGIuaW5kKVxuXG5cbmxldCBwZWVrID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHMgLT4gcGVla19kYXRhIHNcblxuXG5sZXQgcmVjIGp1bmtfZGF0YSA6IHR5cGUgdi4gdiBjZWxsIC0+IHVuaXQgPSBmdW4gcyAtPlxuICBtYXRjaCBzLmRhdGEgd2l0aFxuICAgIFNjb25zIChfLCBkKSAtPiBzLmNvdW50IDwtIChzdWNjIHMuY291bnQpOyBzLmRhdGEgPC0gZFxuICB8IFNnZW4gKHtjdXJyID0gU29tZSBffSBhcyBnKSAtPiBzLmNvdW50IDwtIChzdWNjIHMuY291bnQpOyBnLmN1cnIgPC0gTm9uZVxuICB8IFNidWZmaW8gYiAtPlxuICAgICAgaWYgYi5pbmQgPj0gYi5sZW4gdGhlbiBmaWxsX2J1ZmYgYjtcbiAgICAgIGlmIGIubGVuID09IDAgdGhlbiBzLmRhdGEgPC0gU2VtcHR5XG4gICAgICBlbHNlIChzLmNvdW50IDwtIChzdWNjIHMuY291bnQpOyBiLmluZCA8LSBzdWNjIGIuaW5kKVxuICB8IF8gLT5cbiAgICAgIG1hdGNoIHBlZWtfZGF0YSBzIHdpdGhcbiAgICAgICAgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIF8gLT4ganVua19kYXRhIHNcblxuXG5sZXQganVuayA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZGF0YSAtPiBqdW5rX2RhdGEgZGF0YVxuXG5sZXQgcmVjIG5nZXRfZGF0YSBuIHMgPVxuICBpZiBuIDw9IDAgdGhlbiBbXSwgcy5kYXRhLCAwXG4gIGVsc2VcbiAgICBtYXRjaCBwZWVrX2RhdGEgcyB3aXRoXG4gICAgICBTb21lIGEgLT5cbiAgICAgICAganVua19kYXRhIHM7XG4gICAgICAgIGxldCAoYWwsIGQsIGspID0gbmdldF9kYXRhIChwcmVkIG4pIHMgaW4gYSA6OiBhbCwgU2NvbnMgKGEsIGQpLCBzdWNjIGtcbiAgICB8IE5vbmUgLT4gW10sIHMuZGF0YSwgMFxuXG5cbmxldCBucGVla19kYXRhIG4gcyA9XG4gIGxldCAoYWwsIGQsIGxlbikgPSBuZ2V0X2RhdGEgbiBzIGluXG4gIHMuY291bnQgPC0gKHMuY291bnQgLSBsZW4pO1xuICBzLmRhdGEgPC0gZDtcbiAgYWxcblxuXG5sZXQgbnBlZWsgbiA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBbXVxuICB8IFNvbWUgZCAtPiBucGVla19kYXRhIG4gZFxuXG5sZXQgbmV4dCBzID1cbiAgbWF0Y2ggcGVlayBzIHdpdGhcbiAgICBTb21lIGEgLT4ganVuayBzOyBhXG4gIHwgTm9uZSAtPiByYWlzZSBGYWlsdXJlXG5cblxubGV0IGVtcHR5IHMgPVxuICBtYXRjaCBwZWVrIHMgd2l0aFxuICAgIFNvbWUgXyAtPiByYWlzZSBGYWlsdXJlXG4gIHwgTm9uZSAtPiAoKVxuXG5cbmxldCBpdGVyIGYgc3RybSA9XG4gIGxldCByZWMgZG9fcmVjICgpID1cbiAgICBtYXRjaCBwZWVrIHN0cm0gd2l0aFxuICAgICAgU29tZSBhIC0+IGp1bmsgc3RybTsgaWdub3JlKGYgYSk7IGRvX3JlYyAoKVxuICAgIHwgTm9uZSAtPiAoKVxuICBpblxuICBkb19yZWMgKClcblxuXG4oKiBTdHJlYW0gYnVpbGRpbmcgZnVuY3Rpb25zICopXG5cbmxldCBmcm9tIGYgPSBTb21lIHtjb3VudCA9IDA7IGRhdGEgPSBTZ2VuIHtjdXJyID0gTm9uZTsgZnVuYyA9IGZ9fVxuXG5sZXQgb2ZfbGlzdCBsID1cbiAgU29tZSB7Y291bnQgPSAwOyBkYXRhID0gTGlzdC5mb2xkX3JpZ2h0IChmdW4geCBsIC0+IFNjb25zICh4LCBsKSkgbCBTZW1wdHl9XG5cblxubGV0IG9mX3N0cmluZyBzID1cbiAgbGV0IGNvdW50ID0gcmVmIDAgaW5cbiAgZnJvbSAoZnVuIF8gLT5cbiAgICAoKiBXZSBjYW5ub3QgdXNlIHRoZSBpbmRleCBwYXNzZWQgYnkgdGhlIFtmcm9tXSBmdW5jdGlvbiBkaXJlY3RseVxuICAgICAgIGJlY2F1c2UgaXQgcmV0dXJucyB0aGUgY3VycmVudCBzdHJlYW0gY291bnQsIHdpdGggYWJzb2x1dGVseSBub1xuICAgICAgIGd1YXJhbnRlZSB0aGF0IGl0IHdpbGwgc3RhcnQgZnJvbSAwLiBGb3IgZXhhbXBsZSwgaW4gdGhlIGNhc2VcbiAgICAgICBvZiBbU3RyZWFtLmljb25zICdjJyAoU3RyZWFtLmZyb21fc3RyaW5nIFwiYWJcIildLCB0aGUgZmlyc3RcbiAgICAgICBhY2Nlc3MgdG8gdGhlIHN0cmluZyB3aWxsIGJlIG1hZGUgd2l0aCBjb3VudCBbMV0gYWxyZWFkeS5cbiAgICAqKVxuICAgIGxldCBjID0gIWNvdW50IGluXG4gICAgaWYgYyA8IFN0cmluZy5sZW5ndGggc1xuICAgIHRoZW4gKGluY3IgY291bnQ7IFNvbWUgcy5bY10pXG4gICAgZWxzZSBOb25lKVxuXG5cbmxldCBvZl9ieXRlcyBzID1cbiAgbGV0IGNvdW50ID0gcmVmIDAgaW5cbiAgZnJvbSAoZnVuIF8gLT5cbiAgICBsZXQgYyA9ICFjb3VudCBpblxuICAgIGlmIGMgPCBCeXRlcy5sZW5ndGggc1xuICAgIHRoZW4gKGluY3IgY291bnQ7IFNvbWUgKEJ5dGVzLmdldCBzIGMpKVxuICAgIGVsc2UgTm9uZSlcblxuXG5sZXQgb2ZfY2hhbm5lbCBpYyA9XG4gIFNvbWUge2NvdW50ID0gMDtcbiAgICAgICAgZGF0YSA9IFNidWZmaW8ge2ljID0gaWM7IGJ1ZmYgPSBCeXRlcy5jcmVhdGUgNDA5NjsgbGVuID0gMDsgaW5kID0gMH19XG5cblxuKCogU3RyZWFtIGV4cHJlc3Npb25zIGJ1aWxkZXJzICopXG5cbmxldCBpYXBwIGkgcyA9IFNvbWUge2NvdW50ID0gMDsgZGF0YSA9IFNhcHAgKGRhdGEgaSwgZGF0YSBzKX1cbmxldCBpY29ucyBpIHMgPSBTb21lIHtjb3VudCA9IDA7IGRhdGEgPSBTY29ucyAoaSwgZGF0YSBzKX1cbmxldCBpc2luZyBpID0gU29tZSB7Y291bnQgPSAwOyBkYXRhID0gU2NvbnMgKGksIFNlbXB0eSl9XG5cbmxldCBsYXBwIGYgcyA9XG4gIFNvbWUge2NvdW50ID0gMDsgZGF0YSA9IFNsYXp5IChsYXp5KFNhcHAgKGRhdGEgKGYgKCkpLCBkYXRhIHMpKSl9XG5cbmxldCBsY29ucyBmIHMgPSBTb21lIHtjb3VudCA9IDA7IGRhdGEgPSBTbGF6eSAobGF6eShTY29ucyAoZiAoKSwgZGF0YSBzKSkpfVxubGV0IGxzaW5nIGYgPSBTb21lIHtjb3VudCA9IDA7IGRhdGEgPSBTbGF6eSAobGF6eShTY29ucyAoZiAoKSwgU2VtcHR5KSkpfVxuXG5sZXQgc2VtcHR5ID0gTm9uZVxubGV0IHNsYXp5IGYgPSBTb21lIHtjb3VudCA9IDA7IGRhdGEgPSBTbGF6eSAobGF6eShkYXRhIChmICgpKSkpfVxuXG4oKiBGb3IgZGVidWdnaW5nIHVzZSAqKVxuXG5sZXQgcmVjIGR1bXAgOiB0eXBlIHYuICh2IC0+IHVuaXQpIC0+IHYgdCAtPiB1bml0ID0gZnVuIGYgcyAtPlxuICBwcmludF9zdHJpbmcgXCJ7Y291bnQgPSBcIjtcbiAgcHJpbnRfaW50IChjb3VudCBzKTtcbiAgcHJpbnRfc3RyaW5nIFwiOyBkYXRhID0gXCI7XG4gIGR1bXBfZGF0YSBmIChkYXRhIHMpO1xuICBwcmludF9zdHJpbmcgXCJ9XCI7XG4gIHByaW50X25ld2xpbmUgKClcbmFuZCBkdW1wX2RhdGEgOiB0eXBlIHYuICh2IC0+IHVuaXQpIC0+IHYgZGF0YSAtPiB1bml0ID0gZnVuIGYgLT5cbiAgZnVuY3Rpb25cbiAgICBTZW1wdHkgLT4gcHJpbnRfc3RyaW5nIFwiU2VtcHR5XCJcbiAgfCBTY29ucyAoYSwgZCkgLT5cbiAgICAgIHByaW50X3N0cmluZyBcIlNjb25zIChcIjtcbiAgICAgIGYgYTtcbiAgICAgIHByaW50X3N0cmluZyBcIiwgXCI7XG4gICAgICBkdW1wX2RhdGEgZiBkO1xuICAgICAgcHJpbnRfc3RyaW5nIFwiKVwiXG4gIHwgU2FwcCAoZDEsIGQyKSAtPlxuICAgICAgcHJpbnRfc3RyaW5nIFwiU2FwcCAoXCI7XG4gICAgICBkdW1wX2RhdGEgZiBkMTtcbiAgICAgIHByaW50X3N0cmluZyBcIiwgXCI7XG4gICAgICBkdW1wX2RhdGEgZiBkMjtcbiAgICAgIHByaW50X3N0cmluZyBcIilcIlxuICB8IFNsYXp5IF8gLT4gcHJpbnRfc3RyaW5nIFwiU2xhenlcIlxuICB8IFNnZW4gXyAtPiBwcmludF9zdHJpbmcgXCJTZ2VuXCJcbiAgfCBTYnVmZmlvIF8gLT4gcHJpbnRfc3RyaW5nIFwiU2J1ZmZpb1wiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICBQaWVycmUgV2VpcyBhbmQgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk5IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEV4dGVuc2libGUgYnVmZmVycyAqKVxuXG50eXBlIHQgPVxuIHttdXRhYmxlIGJ1ZmZlciA6IGJ5dGVzO1xuICBtdXRhYmxlIHBvc2l0aW9uIDogaW50O1xuICBtdXRhYmxlIGxlbmd0aCA6IGludDtcbiAgaW5pdGlhbF9idWZmZXIgOiBieXRlc31cbigqIEludmFyaWFudHM6IGFsbCBwYXJ0cyBvZiB0aGUgY29kZSBwcmVzZXJ2ZSB0aGUgaW52YXJpYW50cyB0aGF0OlxuICAgLSBbMCA8PSBiLnBvc2l0aW9uIDw9IGIubGVuZ3RoXVxuICAgLSBbYi5sZW5ndGggPSBCeXRlcy5sZW5ndGggYi5idWZmZXJdXG5cbiAgIE5vdGUgaW4gcGFydGljdWxhciB0aGF0IFtiLnBvc2l0aW9uID0gYi5sZW5ndGhdIGlzIGxlZ2FsLFxuICAgaXQgbWVhbnMgdGhhdCB0aGUgYnVmZmVyIGlzIGZ1bGwgYW5kIHdpbGwgaGF2ZSB0byBiZSBleHRlbmRlZFxuICAgYmVmb3JlIGFueSBmdXJ0aGVyIGFkZGl0aW9uLiAqKVxuXG5sZXQgY3JlYXRlIG4gPVxuIGxldCBuID0gaWYgbiA8IDEgdGhlbiAxIGVsc2UgbiBpblxuIGxldCBuID0gaWYgbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuIFN5cy5tYXhfc3RyaW5nX2xlbmd0aCBlbHNlIG4gaW5cbiBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSBuIGluXG4ge2J1ZmZlciA9IHM7IHBvc2l0aW9uID0gMDsgbGVuZ3RoID0gbjsgaW5pdGlhbF9idWZmZXIgPSBzfVxuXG5sZXQgY29udGVudHMgYiA9IEJ5dGVzLnN1Yl9zdHJpbmcgYi5idWZmZXIgMCBiLnBvc2l0aW9uXG5sZXQgdG9fYnl0ZXMgYiA9IEJ5dGVzLnN1YiBiLmJ1ZmZlciAwIGIucG9zaXRpb25cblxubGV0IHN1YiBiIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gYi5wb3NpdGlvbiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQnVmZmVyLnN1YlwiXG4gIGVsc2UgQnl0ZXMuc3ViX3N0cmluZyBiLmJ1ZmZlciBvZnMgbGVuXG5cblxubGV0IGJsaXQgc3JjIHNyY29mZiBkc3QgZHN0b2ZmIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgc3Jjb2ZmIDwgMCB8fCBzcmNvZmYgPiBzcmMucG9zaXRpb24gLSBsZW5cbiAgICAgICAgICAgICB8fCBkc3RvZmYgPCAwIHx8IGRzdG9mZiA+IChCeXRlcy5sZW5ndGggZHN0KSAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQnVmZmVyLmJsaXRcIlxuICBlbHNlXG4gICAgQnl0ZXMudW5zYWZlX2JsaXQgc3JjLmJ1ZmZlciBzcmNvZmYgZHN0IGRzdG9mZiBsZW5cblxuXG5sZXQgbnRoIGIgb2ZzID1cbiAgaWYgb2ZzIDwgMCB8fCBvZnMgPj0gYi5wb3NpdGlvbiB0aGVuXG4gICBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5udGhcIlxuICBlbHNlIEJ5dGVzLnVuc2FmZV9nZXQgYi5idWZmZXIgb2ZzXG5cblxubGV0IGxlbmd0aCBiID0gYi5wb3NpdGlvblxuXG5sZXQgY2xlYXIgYiA9IGIucG9zaXRpb24gPC0gMFxuXG5sZXQgcmVzZXQgYiA9XG4gIGIucG9zaXRpb24gPC0gMDtcbiAgYi5idWZmZXIgPC0gYi5pbml0aWFsX2J1ZmZlcjtcbiAgYi5sZW5ndGggPC0gQnl0ZXMubGVuZ3RoIGIuYnVmZmVyXG5cbigqIFtyZXNpemUgYiBtb3JlXSBlbnN1cmVzIHRoYXQgW2IucG9zaXRpb24gKyBtb3JlIDw9IGIubGVuZ3RoXSBob2xkc1xuICAgYnkgZHluYW1pY2FsbHkgZXh0ZW5kaW5nIFtiLmJ1ZmZlcl0gaWYgbmVjZXNzYXJ5IC0tIGFuZCB0aHVzXG4gICBpbmNyZWFzaW5nIFtiLmxlbmd0aF0uXG5cbiAgIEluIHBhcnRpY3VsYXIsIGFmdGVyIFtyZXNpemUgYiBtb3JlXSBpcyBjYWxsZWQsIGEgZGlyZWN0IGFjY2VzcyBvZlxuICAgc2l6ZSBbbW9yZV0gYXQgW2IucG9zaXRpb25dIHdpbGwgYWx3YXlzIGJlIGluLWJvdW5kcywgc28gdGhhdFxuICAgKHVuc2FmZV97Z2V0LHNldH0pIG1heSBiZSB1c2VkIGZvciBwZXJmb3JtYW5jZS5cbiopXG5sZXQgcmVzaXplIGIgbW9yZSA9XG4gIGxldCBvbGRfcG9zID0gYi5wb3NpdGlvbiBpblxuICBsZXQgb2xkX2xlbiA9IGIubGVuZ3RoIGluXG4gIGxldCBuZXdfbGVuID0gcmVmIG9sZF9sZW4gaW5cbiAgd2hpbGUgb2xkX3BvcyArIG1vcmUgPiAhbmV3X2xlbiBkbyBuZXdfbGVuIDo9IDIgKiAhbmV3X2xlbiBkb25lO1xuICBpZiAhbmV3X2xlbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuIGJlZ2luXG4gICAgaWYgb2xkX3BvcyArIG1vcmUgPD0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gICAgdGhlbiBuZXdfbGVuIDo9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgIGVsc2UgZmFpbHdpdGggXCJCdWZmZXIuYWRkOiBjYW5ub3QgZ3JvdyBidWZmZXJcIlxuICBlbmQ7XG4gIGxldCBuZXdfYnVmZmVyID0gQnl0ZXMuY3JlYXRlICFuZXdfbGVuIGluXG4gICgqIFBSIzYxNDg6IGxldCdzIGtlZXAgdXNpbmcgW2JsaXRdIHJhdGhlciB0aGFuIFt1bnNhZmVfYmxpdF0gaW5cbiAgICAgdGhpcyB0cmlja3kgZnVuY3Rpb24gdGhhdCBpcyBzbG93IGFueXdheS4gKilcbiAgQnl0ZXMuYmxpdCBiLmJ1ZmZlciAwIG5ld19idWZmZXIgMCBiLnBvc2l0aW9uO1xuICBiLmJ1ZmZlciA8LSBuZXdfYnVmZmVyO1xuICBiLmxlbmd0aCA8LSAhbmV3X2xlbjtcbiAgYXNzZXJ0IChiLnBvc2l0aW9uICsgbW9yZSA8PSBiLmxlbmd0aCk7XG4gIGFzc2VydCAob2xkX3BvcyArIG1vcmUgPD0gYi5sZW5ndGgpO1xuICAoKVxuICAoKiBOb3RlOiB0aGVyZSBhcmUgdmFyaW91cyBzaXR1YXRpb25zIChwcmVlbXB0aXZlIHRocmVhZHMsIHNpZ25hbHMgYW5kXG4gICAgIGdjIGZpbmFsaXplcnMpIHdoZXJlIE9DYW1sIGNvZGUgbWF5IGJlIHJ1biBhc3luY2hyb25vdXNseTsgaW5cbiAgICAgcGFydGljdWxhciwgdGhlcmUgbWF5IGJlIGEgcmFjZSB3aXRoIGFub3RoZXIgdXNlciBvZiBbYl0sIGNoYW5naW5nXG4gICAgIGl0cyBtdXRhYmxlIGZpZWxkcyBpbiB0aGUgbWlkZGxlIG9mIHRoZSBbcmVzaXplXSBjYWxsLiBUaGUgQnVmZmVyXG4gICAgIG1vZHVsZSBkb2VzIG5vdCBwcm92aWRlIGFueSBjb3JyZWN0bmVzcyBndWFyYW50ZWUgaWYgdGhhdCBoYXBwZW5zLFxuICAgICBidXQgd2UgbXVzdCBzdGlsbCBlbnN1cmUgdGhhdCB0aGUgZGF0YXN0cnVjdHVyZSBpbnZhcmlhbnRzIGhvbGQgZm9yXG4gICAgIG1lbW9yeS1zYWZldHkgLS0gYXMgd2UgcGxhbiB0byB1c2UgW3Vuc2FmZV97Z2V0LHNldH1dLlxuXG4gICAgIFRoZXJlIGFyZSB0d28gcG90ZW50aWFsIGFsbG9jYXRpb24gcG9pbnRzIGluIHRoaXMgZnVuY3Rpb24sXG4gICAgIFtyZWZdIGFuZCBbQnl0ZXMuY3JlYXRlXSwgYnV0IGFsbCByZWFkcyBhbmQgd3JpdGVzIHRvIHRoZSBmaWVsZHNcbiAgICAgb2YgW2JdIGhhcHBlbiBiZWZvcmUgYm90aCBvZiB0aGVtIG9yIGFmdGVyIGJvdGggb2YgdGhlbS5cblxuICAgICBXZSB0aGVyZWZvcmUgYXNzdW1lIHRoYXQgW2IucG9zaXRpb25dIG1heSBjaGFuZ2UgYXQgdGhlc2UgYWxsb2NhdGlvbnMsXG4gICAgIGFuZCBjaGVjayB0aGF0IHRoZSBbYi5wb3NpdGlvbiArIG1vcmUgPD0gYi5sZW5ndGhdIHBvc3Rjb25kaXRpb25cbiAgICAgaG9sZHMgZm9yIGJvdGggdmFsdWVzIG9mIFtiLnBvc2l0aW9uXSwgYmVmb3JlIG9yIGFmdGVyIHRoZSBmdW5jdGlvblxuICAgICBpcyBjYWxsZWQuIE1vcmUgcHJlY2lzZWx5LCB0aGUgZm9sbG93aW5nIGludmFyaWFudHMgbXVzdCBob2xkIGlmIHRoZVxuICAgICBmdW5jdGlvbiByZXR1cm5zIGNvcnJlY3RseSwgaW4gYWRkaXRpb24gdG8gdGhlIHVzdWFsIGJ1ZmZlciBpbnZhcmlhbnRzOlxuICAgICAtIFtvbGQoYi5wb3NpdGlvbikgKyBtb3JlIDw9IG5ldyhiLmxlbmd0aCldXG4gICAgIC0gW25ldyhiLnBvc2l0aW9uKSArIG1vcmUgPD0gbmV3KGIubGVuZ3RoKV1cbiAgICAgLSBbb2xkKGIubGVuZ3RoKSA8PSBuZXcoYi5sZW5ndGgpXVxuXG4gICAgIE5vdGU6IFtiLnBvc2l0aW9uICsgbW9yZSA8PSBvbGQoYi5sZW5ndGgpXSBkb2VzICpub3QqXG4gICAgIGhvbGQgaW4gZ2VuZXJhbCwgYXMgaXQgaXMgcHJlY2lzZWx5IHRoZSBjYXNlIHdoZXJlIHlvdSBuZWVkXG4gICAgIHRvIGNhbGwgW3Jlc2l6ZV0gdG8gaW5jcmVhc2UgW2IubGVuZ3RoXS5cblxuICAgICBOb3RlOiBbYXNzZXJ0XSBhYm92ZSBkb2VzIG5vdCBtZWFuIHRoYXQgd2Uga25vdyB0aGUgY29uZGl0aW9uc1xuICAgICBhbHdheXMgaG9sZCwgYnV0IHRoYXQgdGhlIGZ1bmN0aW9uIG1heSByZXR1cm4gY29ycmVjdGx5XG4gICAgIG9ubHkgaWYgdGhleSBob2xkLlxuXG4gICAgIE5vdGU6IHRoZSBvdGhlciBmdW5jdGlvbnMgaW4gdGhpcyBtb2R1bGUgZG9lcyBub3QgbmVlZFxuICAgICB0byBiZSBjaGVja2VkIHdpdGggdGhpcyBsZXZlbCBvZiBzY3J1dGlueSwgZ2l2ZW4gdGhhdCB0aGV5XG4gICAgIHJlYWQvd3JpdGUgdGhlIGJ1ZmZlciBpbW1lZGlhdGVseSBhZnRlciBjaGVja2luZyB0aGF0XG4gICAgIFtiLnBvc2l0aW9uICsgbW9yZSA8PSBiLmxlbmd0aF0gaG9sZCBvciBjYWxsaW5nIFtyZXNpemVdLlxuICAqKVxuXG5sZXQgYWRkX2NoYXIgYiBjID1cbiAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgaWYgcG9zID49IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgMTtcbiAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciBwb3MgYztcbiAgYi5wb3NpdGlvbiA8LSBwb3MgKyAxXG5cbmxldCB1Y2hhcl91dGZfOF9ieXRlX2xlbmd0aF9tYXggPSA0XG5sZXQgdWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heCA9IDRcblxubGV0IHJlYyBhZGRfdXRmXzhfdWNoYXIgYiB1ID1cbiAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgaWYgcG9zID49IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgdWNoYXJfdXRmXzhfYnl0ZV9sZW5ndGhfbWF4O1xuICBsZXQgbiA9IEJ5dGVzLnNldF91dGZfOF91Y2hhciBiLmJ1ZmZlciBwb3MgdSBpblxuICBpZiBuID0gMFxuICB0aGVuIChyZXNpemUgYiB1Y2hhcl91dGZfOF9ieXRlX2xlbmd0aF9tYXg7IGFkZF91dGZfOF91Y2hhciBiIHUpXG4gIGVsc2UgKGIucG9zaXRpb24gPC0gcG9zICsgbilcblxubGV0IHJlYyBhZGRfdXRmXzE2YmVfdWNoYXIgYiB1ID1cbiAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgaWYgcG9zID49IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgdWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heDtcbiAgbGV0IG4gPSBCeXRlcy5zZXRfdXRmXzE2YmVfdWNoYXIgYi5idWZmZXIgcG9zIHUgaW5cbiAgaWYgbiA9IDBcbiAgdGhlbiAocmVzaXplIGIgdWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heDsgYWRkX3V0Zl8xNmJlX3VjaGFyIGIgdSlcbiAgZWxzZSAoYi5wb3NpdGlvbiA8LSBwb3MgKyBuKVxuXG5sZXQgcmVjIGFkZF91dGZfMTZsZV91Y2hhciBiIHUgPVxuICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICBpZiBwb3MgPj0gYi5sZW5ndGggdGhlbiByZXNpemUgYiB1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4O1xuICBsZXQgbiA9IEJ5dGVzLnNldF91dGZfMTZsZV91Y2hhciBiLmJ1ZmZlciBwb3MgdSBpblxuICBpZiBuID0gMFxuICB0aGVuIChyZXNpemUgYiB1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4OyBhZGRfdXRmXzE2bGVfdWNoYXIgYiB1KVxuICBlbHNlIChiLnBvc2l0aW9uIDwtIHBvcyArIG4pXG5cbmxldCBhZGRfc3Vic3RyaW5nIGIgcyBvZmZzZXQgbGVuID1cbiAgaWYgb2Zmc2V0IDwgMCB8fCBsZW4gPCAwIHx8IG9mZnNldCA+IFN0cmluZy5sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQnVmZmVyLmFkZF9zdWJzdHJpbmcvYWRkX3N1YmJ5dGVzXCI7XG4gIGxldCBuZXdfcG9zaXRpb24gPSBiLnBvc2l0aW9uICsgbGVuIGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgbGVuO1xuICBCeXRlcy51bnNhZmVfYmxpdF9zdHJpbmcgcyBvZmZzZXQgYi5idWZmZXIgYi5wb3NpdGlvbiBsZW47XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfc3ViYnl0ZXMgYiBzIG9mZnNldCBsZW4gPVxuICBhZGRfc3Vic3RyaW5nIGIgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcykgb2Zmc2V0IGxlblxuXG5sZXQgYWRkX3N0cmluZyBiIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBuZXdfcG9zaXRpb24gPSBiLnBvc2l0aW9uICsgbGVuIGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgbGVuO1xuICBCeXRlcy51bnNhZmVfYmxpdF9zdHJpbmcgcyAwIGIuYnVmZmVyIGIucG9zaXRpb24gbGVuO1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2J5dGVzIGIgcyA9IGFkZF9zdHJpbmcgYiAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzKVxuXG5sZXQgYWRkX2J1ZmZlciBiIGJzID1cbiAgYWRkX3N1YmJ5dGVzIGIgYnMuYnVmZmVyIDAgYnMucG9zaXRpb25cblxuKCogdGhpcyAocHJpdmF0ZSkgZnVuY3Rpb24gY291bGQgbW92ZSBpbnRvIHRoZSBzdGFuZGFyZCBsaWJyYXJ5ICopXG5sZXQgcmVhbGx5X2lucHV0X3VwX3RvIGljIGJ1ZiBvZnMgbGVuID1cbiAgbGV0IHJlYyBsb29wIGljIGJ1ZiB+YWxyZWFkeV9yZWFkIH5vZnMgfnRvX3JlYWQgPVxuICAgIGlmIHRvX3JlYWQgPSAwIHRoZW4gYWxyZWFkeV9yZWFkXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBpbnB1dCBpYyBidWYgb2ZzIHRvX3JlYWQgaW5cbiAgICAgIGlmIHIgPSAwIHRoZW4gYWxyZWFkeV9yZWFkXG4gICAgICBlbHNlIGJlZ2luXG4gICAgICAgIGxldCBhbHJlYWR5X3JlYWQgPSBhbHJlYWR5X3JlYWQgKyByIGluXG4gICAgICAgIGxldCBvZnMgPSBvZnMgKyByIGluXG4gICAgICAgIGxldCB0b19yZWFkID0gdG9fcmVhZCAtIHIgaW5cbiAgICAgICAgbG9vcCBpYyBidWYgfmFscmVhZHlfcmVhZCB+b2ZzIH50b19yZWFkXG4gICAgICBlbmRcbiAgICBlbmRcbiAgaW4gbG9vcCBpYyBidWYgfmFscmVhZHlfcmVhZDowIH5vZnMgfnRvX3JlYWQ6bGVuXG5cblxubGV0IHVuc2FmZV9hZGRfY2hhbm5lbF91cF90byBiIGljIGxlbiA9XG4gIGlmIGIucG9zaXRpb24gKyBsZW4gPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIGxlbjtcbiAgbGV0IG4gPSByZWFsbHlfaW5wdXRfdXBfdG8gaWMgYi5idWZmZXIgYi5wb3NpdGlvbiBsZW4gaW5cbiAgKCogVGhlIGFzc2VydGlvbiBiZWxvdyBtYXkgZmFpbCBpbiB3ZWlyZCBzY2VuYXJpbyB3aGVyZVxuICAgICB0aHJlYWRlZC9maW5hbGl6ZXIgY29kZSwgcnVuIGFzeW5jaHJvbm91c2x5IGR1cmluZyB0aGVcbiAgICAgW3JlYWxseV9pbnB1dF91cF90b10gY2FsbCwgcmFjZXMgb24gdGhlIGJ1ZmZlcjsgd2UgZG9uJ3QgZW5zdXJlXG4gICAgIGNvcnJlY3RuZXNzIGluIHRoaXMgY2FzZSwgYnV0IG5lZWQgdG8gcHJlc2VydmUgdGhlIGludmFyaWFudHMgZm9yXG4gICAgIG1lbW9yeS1zYWZldHkgKHNlZSBkaXNjdXNzaW9uIG9mIFtyZXNpemVdKS4gKilcbiAgYXNzZXJ0IChiLnBvc2l0aW9uICsgbiA8PSBiLmxlbmd0aCk7XG4gIGIucG9zaXRpb24gPC0gYi5wb3NpdGlvbiArIG47XG4gIG5cblxubGV0IGFkZF9jaGFubmVsIGIgaWMgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBsZW4gPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlbiAgICgqIFBSIzUwMDQgKilcbiAgICBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5hZGRfY2hhbm5lbFwiO1xuICBsZXQgbiA9IHVuc2FmZV9hZGRfY2hhbm5lbF91cF90byBiIGljIGxlbiBpblxuICAoKiBJdCBpcyBpbnRlbnRpb25hbCB0aGF0IGEgY29uc3VtZXIgY2F0Y2hpbmcgRW5kX29mX2ZpbGVcbiAgICAgd2lsbCBzZWUgdGhlIGRhdGEgd3JpdHRlbiAoc2VlICM2NzE5LCAjNzEzNikuICopXG4gIGlmIG4gPCBsZW4gdGhlbiByYWlzZSBFbmRfb2ZfZmlsZTtcbiAgKClcblxubGV0IG91dHB1dF9idWZmZXIgb2MgYiA9XG4gIG91dHB1dCBvYyBiLmJ1ZmZlciAwIGIucG9zaXRpb25cblxubGV0IGNsb3NpbmcgPSBmdW5jdGlvblxuICB8ICcoJyAtPiAnKSdcbiAgfCAneycgLT4gJ30nXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuKCogb3BlbmluZyBhbmQgY2xvc2luZzogb3BlbiBhbmQgY2xvc2UgY2hhcmFjdGVycywgdHlwaWNhbGx5ICggYW5kIClcbiAgIGs6IGJhbGFuY2Ugb2Ygb3BlbmluZyBhbmQgY2xvc2luZyBjaGFyc1xuICAgczogdGhlIHN0cmluZyB3aGVyZSB3ZSBhcmUgc2VhcmNoaW5nXG4gICBzdGFydDogdGhlIGluZGV4IHdoZXJlIHdlIHN0YXJ0IHRoZSBzZWFyY2guICopXG5sZXQgYWR2YW5jZV90b19jbG9zaW5nIG9wZW5pbmcgY2xvc2luZyBrIHMgc3RhcnQgPVxuICBsZXQgcmVjIGFkdmFuY2UgayBpIGxpbSA9XG4gICAgaWYgaSA+PSBsaW0gdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICAgIGlmIHMuW2ldID0gb3BlbmluZyB0aGVuIGFkdmFuY2UgKGsgKyAxKSAoaSArIDEpIGxpbSBlbHNlXG4gICAgaWYgcy5baV0gPSBjbG9zaW5nIHRoZW5cbiAgICAgIGlmIGsgPSAwIHRoZW4gaSBlbHNlIGFkdmFuY2UgKGsgLSAxKSAoaSArIDEpIGxpbVxuICAgIGVsc2UgYWR2YW5jZSBrIChpICsgMSkgbGltIGluXG4gIGFkdmFuY2UgayBzdGFydCAoU3RyaW5nLmxlbmd0aCBzKVxuXG5sZXQgYWR2YW5jZV90b19ub25fYWxwaGEgcyBzdGFydCA9XG4gIGxldCByZWMgYWR2YW5jZSBpIGxpbSA9XG4gICAgaWYgaSA+PSBsaW0gdGhlbiBsaW0gZWxzZVxuICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICB8ICdhJyAuLiAneicgfCAnQScgLi4gJ1onIHwgJzAnIC4uICc5JyB8ICdfJyAtPiBhZHZhbmNlIChpICsgMSkgbGltXG4gICAgfCBfIC0+IGkgaW5cbiAgYWR2YW5jZSBzdGFydCAoU3RyaW5nLmxlbmd0aCBzKVxuXG4oKiBXZSBhcmUganVzdCBhdCB0aGUgYmVnaW5uaW5nIG9mIGFuIGlkZW50IGluIHMsIHN0YXJ0aW5nIGF0IHN0YXJ0LiAqKVxubGV0IGZpbmRfaWRlbnQgcyBzdGFydCBsaW0gPVxuICBpZiBzdGFydCA+PSBsaW0gdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBtYXRjaCBzLltzdGFydF0gd2l0aFxuICAoKiBQYXJlbnRoZXNpemVkIGlkZW50ID8gKilcbiAgfCAnKCcgfCAneycgYXMgYyAtPlxuICAgICBsZXQgbmV3X3N0YXJ0ID0gc3RhcnQgKyAxIGluXG4gICAgIGxldCBzdG9wID0gYWR2YW5jZV90b19jbG9zaW5nIGMgKGNsb3NpbmcgYykgMCBzIG5ld19zdGFydCBpblxuICAgICBTdHJpbmcuc3ViIHMgbmV3X3N0YXJ0IChzdG9wIC0gc3RhcnQgLSAxKSwgc3RvcCArIDFcbiAgKCogUmVndWxhciBpZGVudCAqKVxuICB8IF8gLT5cbiAgICAgbGV0IHN0b3AgPSBhZHZhbmNlX3RvX25vbl9hbHBoYSBzIChzdGFydCArIDEpIGluXG4gICAgIFN0cmluZy5zdWIgcyBzdGFydCAoc3RvcCAtIHN0YXJ0KSwgc3RvcFxuXG4oKiBTdWJzdGl0dXRlICRpZGVudCwgJChpZGVudCksIG9yICR7aWRlbnR9IGluIHMsXG4gICAgYWNjb3JkaW5nIHRvIHRoZSBmdW5jdGlvbiBtYXBwaW5nIGYuICopXG5sZXQgYWRkX3N1YnN0aXR1dGUgYiBmIHMgPVxuICBsZXQgbGltID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCByZWMgc3Vic3QgcHJldmlvdXMgaSA9XG4gICAgaWYgaSA8IGxpbSB0aGVuIGJlZ2luXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICckJyBhcyBjdXJyZW50IHdoZW4gcHJldmlvdXMgPSAnXFxcXCcgLT5cbiAgICAgICAgIGFkZF9jaGFyIGIgY3VycmVudDtcbiAgICAgICAgIHN1YnN0ICcgJyAoaSArIDEpXG4gICAgICB8ICckJyAtPlxuICAgICAgICAgbGV0IGogPSBpICsgMSBpblxuICAgICAgICAgbGV0IGlkZW50LCBuZXh0X2kgPSBmaW5kX2lkZW50IHMgaiBsaW0gaW5cbiAgICAgICAgIGFkZF9zdHJpbmcgYiAoZiBpZGVudCk7XG4gICAgICAgICBzdWJzdCAnICcgbmV4dF9pXG4gICAgICB8IGN1cnJlbnQgd2hlbiBwcmV2aW91cyA9PSAnXFxcXCcgLT5cbiAgICAgICAgIGFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICAgYWRkX2NoYXIgYiBjdXJyZW50O1xuICAgICAgICAgc3Vic3QgJyAnIChpICsgMSlcbiAgICAgIHwgJ1xcXFwnIGFzIGN1cnJlbnQgLT5cbiAgICAgICAgIHN1YnN0IGN1cnJlbnQgKGkgKyAxKVxuICAgICAgfCBjdXJyZW50IC0+XG4gICAgICAgICBhZGRfY2hhciBiIGN1cnJlbnQ7XG4gICAgICAgICBzdWJzdCBjdXJyZW50IChpICsgMSlcbiAgICBlbmQgZWxzZVxuICAgIGlmIHByZXZpb3VzID0gJ1xcXFwnIHRoZW4gYWRkX2NoYXIgYiBwcmV2aW91cyBpblxuICBzdWJzdCAnICcgMFxuXG5sZXQgdHJ1bmNhdGUgYiBsZW4gPVxuICAgIGlmIGxlbiA8IDAgfHwgbGVuID4gbGVuZ3RoIGIgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJCdWZmZXIudHJ1bmNhdGVcIlxuICAgIGVsc2VcbiAgICAgIGIucG9zaXRpb24gPC0gbGVuXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgYiA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgICgqIE5vdGUgdGhhdCBiLnBvc2l0aW9uIGlzIG5vdCBhIGNvbnN0YW50IGFuZCBjYW5ub3QgYmUgbGlmdGVkIG91dCBvZiBhdXggKilcbiAgICBpZiBpID49IGIucG9zaXRpb24gdGhlbiBTZXEuTmlsXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSBCeXRlcy51bnNhZmVfZ2V0IGIuYnVmZmVyIGkgaW5cbiAgICAgIFNlcS5Db25zICh4LCBhdXggKGkrMSkpXG4gIGluXG4gIGF1eCAwXG5cbmxldCB0b19zZXFpIGIgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICAoKiBOb3RlIHRoYXQgYi5wb3NpdGlvbiBpcyBub3QgYSBjb25zdGFudCBhbmQgY2Fubm90IGJlIGxpZnRlZCBvdXQgb2YgYXV4ICopXG4gICAgaWYgaSA+PSBiLnBvc2l0aW9uIHRoZW4gU2VxLk5pbFxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gQnl0ZXMudW5zYWZlX2dldCBiLmJ1ZmZlciBpIGluXG4gICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgaW5cbiAgYXV4IDBcblxubGV0IGFkZF9zZXEgYiBzZXEgPSBTZXEuaXRlciAoYWRkX2NoYXIgYikgc2VxXG5cbmxldCBvZl9zZXEgaSA9XG4gIGxldCBiID0gY3JlYXRlIDMyIGluXG4gIGFkZF9zZXEgYiBpO1xuICBiXG5cbigqKiB7NiBCaW5hcnkgZW5jb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbmV4dGVybmFsIHVuc2FmZV9zZXRfaW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQxNiA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MTZ1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfaW50MzIgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJ1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfaW50NjQgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0NjR1XCJcbmV4dGVybmFsIHN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbmV4dGVybmFsIHN3YXAzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuZXh0ZXJuYWwgc3dhcDY0IDogaW50NjQgLT4gaW50NjQgPSBcIiVic3dhcF9pbnQ2NFwiXG5cblxubGV0IGFkZF9pbnQ4IGIgeCA9XG4gIGxldCBuZXdfcG9zaXRpb24gPSBiLnBvc2l0aW9uICsgMSBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDE7XG4gIHVuc2FmZV9zZXRfaW50OCBiLmJ1ZmZlciBiLnBvc2l0aW9uIHg7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfaW50MTZfbmUgYiB4ID1cbiAgbGV0IG5ld19wb3NpdGlvbiA9IGIucG9zaXRpb24gKyAyIGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgMjtcbiAgdW5zYWZlX3NldF9pbnQxNiBiLmJ1ZmZlciBiLnBvc2l0aW9uIHg7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfaW50MzJfbmUgYiB4ID1cbiAgbGV0IG5ld19wb3NpdGlvbiA9IGIucG9zaXRpb24gKyA0IGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgNDtcbiAgdW5zYWZlX3NldF9pbnQzMiBiLmJ1ZmZlciBiLnBvc2l0aW9uIHg7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfaW50NjRfbmUgYiB4ID1cbiAgbGV0IG5ld19wb3NpdGlvbiA9IGIucG9zaXRpb24gKyA4IGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgODtcbiAgdW5zYWZlX3NldF9pbnQ2NCBiLmJ1ZmZlciBiLnBvc2l0aW9uIHg7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfaW50MTZfbGUgYiB4ID1cbiAgYWRkX2ludDE2X25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IHggZWxzZSB4KVxuXG5sZXQgYWRkX2ludDE2X2JlIGIgeCA9XG4gIGFkZF9pbnQxNl9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMTYgeClcblxubGV0IGFkZF9pbnQzMl9sZSBiIHggPVxuICBhZGRfaW50MzJfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgeCBlbHNlIHgpXG5cbmxldCBhZGRfaW50MzJfYmUgYiB4ID1cbiAgYWRkX2ludDMyX25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXAzMiB4KVxuXG5sZXQgYWRkX2ludDY0X2xlIGIgeCA9XG4gIGFkZF9pbnQ2NF9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCB4IGVsc2UgeClcblxubGV0IGFkZF9pbnQ2NF9iZSBiIHggPVxuICBhZGRfaW50NjRfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDY0IHgpXG5cbmxldCBhZGRfdWludDggPSBhZGRfaW50OFxubGV0IGFkZF91aW50MTZfbmUgPSBhZGRfaW50MTZfbmVcbmxldCBhZGRfdWludDE2X2xlID0gYWRkX2ludDE2X2xlXG5sZXQgYWRkX3VpbnQxNl9iZSA9IGFkZF9pbnQxNl9iZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBYYXZpZXIgTGVyb3kgYW5kIFBpZXJyZSBXZWlzLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljc1xub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRcblxubGV0IGtmcHJpbnRmIGsgbyAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmIChmdW4gYWNjIC0+IG91dHB1dF9hY2MgbyBhY2M7IGsgbykgRW5kX29mX2FjYyBmbXRcbmxldCBrYnByaW50ZiBrIGIgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZiAoZnVuIGFjYyAtPiBidWZwdXRfYWNjIGIgYWNjOyBrIGIpIEVuZF9vZl9hY2MgZm10XG5sZXQgaWtmcHJpbnRmIGsgb2MgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX2lwcmludGYgayBvYyBmbXRcbmxldCBpa2JwcmludGYgPSBpa2ZwcmludGZcblxubGV0IGZwcmludGYgb2MgZm10ID0ga2ZwcmludGYgaWdub3JlIG9jIGZtdFxubGV0IGJwcmludGYgYiBmbXQgPSBrYnByaW50ZiBpZ25vcmUgYiBmbXRcbmxldCBpZnByaW50ZiBvYyBmbXQgPSBpa2ZwcmludGYgaWdub3JlIG9jIGZtdFxubGV0IGlicHJpbnRmIGIgZm10ID0gaWticHJpbnRmIGlnbm9yZSBiIGZtdFxubGV0IHByaW50ZiBmbXQgPSBmcHJpbnRmIHN0ZG91dCBmbXRcbmxldCBlcHJpbnRmIGZtdCA9IGZwcmludGYgc3RkZXJyIGZtdFxuXG5sZXQga3NwcmludGYgayAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIGxldCBrJyBhY2MgPVxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gICAgc3RycHV0X2FjYyBidWYgYWNjO1xuICAgIGsgKEJ1ZmZlci5jb250ZW50cyBidWYpIGluXG4gIG1ha2VfcHJpbnRmIGsnIEVuZF9vZl9hY2MgZm10XG5cbmxldCBzcHJpbnRmIGZtdCA9IGtzcHJpbnRmIChmdW4gcyAtPiBzKSBmbXRcblxubGV0IGtwcmludGYgPSBrc3ByaW50ZlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGtleSA9IHN0cmluZ1xudHlwZSBkb2MgPSBzdHJpbmdcbnR5cGUgdXNhZ2VfbXNnID0gc3RyaW5nXG50eXBlIGFub25fZnVuID0gKHN0cmluZyAtPiB1bml0KVxuXG50eXBlIHNwZWMgPVxuICB8IFVuaXQgb2YgKHVuaXQgLT4gdW5pdCkgICAgICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggdW5pdCBhcmd1bWVudCAqKVxuICB8IEJvb2wgb2YgKGJvb2wgLT4gdW5pdCkgICAgICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggYSBib29sIGFyZ3VtZW50ICopXG4gIHwgU2V0IG9mIGJvb2wgcmVmICAgICAgICAgICAgKCogU2V0IHRoZSByZWZlcmVuY2UgdG8gdHJ1ZSAqKVxuICB8IENsZWFyIG9mIGJvb2wgcmVmICAgICAgICAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIGZhbHNlICopXG4gIHwgU3RyaW5nIG9mIChzdHJpbmcgLT4gdW5pdCkgKCogQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCBhIHN0cmluZyBhcmd1bWVudCAqKVxuICB8IFNldF9zdHJpbmcgb2Ygc3RyaW5nIHJlZiAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIHRoZSBzdHJpbmcgYXJndW1lbnQgKilcbiAgfCBJbnQgb2YgKGludCAtPiB1bml0KSAgICAgICAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIGFuIGludCBhcmd1bWVudCAqKVxuICB8IFNldF9pbnQgb2YgaW50IHJlZiAgICAgICAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIHRoZSBpbnQgYXJndW1lbnQgKilcbiAgfCBGbG9hdCBvZiAoZmxvYXQgLT4gdW5pdCkgICAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIGEgZmxvYXQgYXJndW1lbnQgKilcbiAgfCBTZXRfZmxvYXQgb2YgZmxvYXQgcmVmICAgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byB0aGUgZmxvYXQgYXJndW1lbnQgKilcbiAgfCBUdXBsZSBvZiBzcGVjIGxpc3QgICAgICAgICAoKiBUYWtlIHNldmVyYWwgYXJndW1lbnRzIGFjY29yZGluZyB0byB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjIGxpc3QgKilcbiAgfCBTeW1ib2wgb2Ygc3RyaW5nIGxpc3QgKiAoc3RyaW5nIC0+IHVuaXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogVGFrZSBvbmUgb2YgdGhlIHN5bWJvbHMgYXMgYXJndW1lbnQgYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbCB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgc3ltYm9sLiAqKVxuICB8IFJlc3Qgb2YgKHN0cmluZyAtPiB1bml0KSAgICgqIFN0b3AgaW50ZXJwcmV0aW5nIGtleXdvcmRzIGFuZCBjYWxsIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHdpdGggZWFjaCByZW1haW5pbmcgYXJndW1lbnQgKilcbiAgfCBSZXN0X2FsbCBvZiAoc3RyaW5nIGxpc3QgLT4gdW5pdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBTdG9wIGludGVycHJldGluZyBrZXl3b3JkcyBhbmQgY2FsbCB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB3aXRoIGFsbCByZW1haW5pbmcgYXJndW1lbnRzLiAqKVxuICB8IEV4cGFuZCBvZiAoc3RyaW5nIC0+IHN0cmluZyBhcnJheSkgKCogSWYgdGhlIHJlbWFpbmluZyBhcmd1bWVudHMgdG8gcHJvY2Vzc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIG9mIHRoZSBmb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbW1wiLWZvb1wiOyBcImFyZ1wiXSBAIHJlc3RdIHdoZXJlIFwiZm9vXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHJlZ2lzdGVyZWQgYXMgW0V4cGFuZCBmXSwgdGhlbiB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cyBbZiBcImFyZ1wiIEAgcmVzdF0gYXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWQuIE9ubHkgYWxsb3dlZCBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljXS4gKilcblxuZXhjZXB0aW9uIEJhZCBvZiBzdHJpbmdcbmV4Y2VwdGlvbiBIZWxwIG9mIHN0cmluZ1xuXG50eXBlIGVycm9yID1cbiAgfCBVbmtub3duIG9mIHN0cmluZ1xuICB8IFdyb25nIG9mIHN0cmluZyAqIHN0cmluZyAqIHN0cmluZyAgKCogb3B0aW9uLCBhY3R1YWwsIGV4cGVjdGVkICopXG4gIHwgTWlzc2luZyBvZiBzdHJpbmdcbiAgfCBNZXNzYWdlIG9mIHN0cmluZ1xuXG5leGNlcHRpb24gU3RvcCBvZiBlcnJvciAoKiB1c2VkIGludGVybmFsbHkgKilcblxub3BlbiBQcmludGZcblxubGV0IHJlYyBhc3NvYzMgeCBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgKHkxLCB5MiwgXykgOjogXyB3aGVuIHkxID0geCAtPiB5MlxuICB8IF8gOjogdCAtPiBhc3NvYzMgeCB0XG5cblxubGV0IHNwbGl0IHMgPVxuICBsZXQgaSA9IFN0cmluZy5pbmRleCBzICc9JyBpblxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIFN0cmluZy5zdWIgcyAwIGksIFN0cmluZy5zdWIgcyAoaSsxKSAobGVuLShpKzEpKVxuXG5cbmxldCBtYWtlX3N5bWxpc3QgcHJlZml4IHNlcCBzdWZmaXggbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFwiPG5vbmU+XCJcbiAgfCBoOjp0IC0+IChMaXN0LmZvbGRfbGVmdCAoZnVuIHggeSAtPiB4IF4gc2VwIF4geSkgKHByZWZpeCBeIGgpIHQpIF4gc3VmZml4XG5cblxubGV0IHByaW50X3NwZWMgYnVmIChrZXksIHNwZWMsIGRvYykgPVxuICBpZiBTdHJpbmcubGVuZ3RoIGRvYyA+IDAgdGhlblxuICAgIG1hdGNoIHNwZWMgd2l0aFxuICAgIHwgU3ltYm9sIChsLCBfKSAtPlxuICAgICAgICBicHJpbnRmIGJ1ZiBcIiAgJXMgJXMlc1xcblwiIGtleSAobWFrZV9zeW1saXN0IFwie1wiIFwifFwiIFwifVwiIGwpIGRvY1xuICAgIHwgXyAtPlxuICAgICAgICBicHJpbnRmIGJ1ZiBcIiAgJXMgJXNcXG5cIiBrZXkgZG9jXG5cblxubGV0IGhlbHBfYWN0aW9uICgpID0gcmFpc2UgKFN0b3AgKFVua25vd24gXCItaGVscFwiKSlcblxubGV0IGFkZF9oZWxwIHNwZWNsaXN0ID1cbiAgbGV0IGFkZDEgPVxuICAgIHRyeSBpZ25vcmUgKGFzc29jMyBcIi1oZWxwXCIgc3BlY2xpc3QpOyBbXVxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICBbXCItaGVscFwiLCBVbml0IGhlbHBfYWN0aW9uLCBcIiBEaXNwbGF5IHRoaXMgbGlzdCBvZiBvcHRpb25zXCJdXG4gIGFuZCBhZGQyID1cbiAgICB0cnkgaWdub3JlIChhc3NvYzMgXCItLWhlbHBcIiBzcGVjbGlzdCk7IFtdXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgIFtcIi0taGVscFwiLCBVbml0IGhlbHBfYWN0aW9uLCBcIiBEaXNwbGF5IHRoaXMgbGlzdCBvZiBvcHRpb25zXCJdXG4gIGluXG4gIHNwZWNsaXN0IEAgKGFkZDEgQCBhZGQyKVxuXG5cbmxldCB1c2FnZV9iIGJ1ZiBzcGVjbGlzdCBlcnJtc2cgPVxuICBicHJpbnRmIGJ1ZiBcIiVzXFxuXCIgZXJybXNnO1xuICBMaXN0Lml0ZXIgKHByaW50X3NwZWMgYnVmKSAoYWRkX2hlbHAgc3BlY2xpc3QpXG5cblxubGV0IHVzYWdlX3N0cmluZyBzcGVjbGlzdCBlcnJtc2cgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMjAwIGluXG4gIHVzYWdlX2IgYiBzcGVjbGlzdCBlcnJtc2c7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cblxubGV0IHVzYWdlIHNwZWNsaXN0IGVycm1zZyA9XG4gIGVwcmludGYgXCIlc1wiICh1c2FnZV9zdHJpbmcgc3BlY2xpc3QgZXJybXNnKVxuXG5cbmxldCBjdXJyZW50ID0gcmVmIDBcblxubGV0IGJvb2xfb2Zfc3RyaW5nX29wdCB4ID1cbiAgdHJ5IFNvbWUgKGJvb2xfb2Zfc3RyaW5nIHgpXG4gIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IE5vbmVcblxubGV0IGludF9vZl9zdHJpbmdfb3B0IHggPVxuICB0cnkgU29tZSAoaW50X29mX3N0cmluZyB4KVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmxldCBmbG9hdF9vZl9zdHJpbmdfb3B0IHggPVxuICB0cnkgU29tZSAoZmxvYXRfb2Zfc3RyaW5nIHgpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxubGV0IHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljX2F1eCBhbGxvd19leHBhbmQgY3VycmVudCBhcmd2IHNwZWNsaXN0IGFub25mdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJybXNnID1cbiAgbGV0IGluaXRwb3MgPSAhY3VycmVudCBpblxuICBsZXQgY29udmVydF9lcnJvciBlcnJvciA9XG4gICAgKCogY29udmVydCBhbiBpbnRlcm5hbCBlcnJvciB0byBhIEJhZC9IZWxwIGV4Y2VwdGlvblxuICAgICAgICpvciogYWRkIHRoZSBwcm9ncmFtIG5hbWUgYXMgYSBwcmVmaXggYW5kIHRoZSB1c2FnZSBtZXNzYWdlIGFzIGEgc3VmZml4XG4gICAgICAgdG8gYW4gdXNlci1yYWlzZWQgQmFkIGV4Y2VwdGlvbi5cbiAgICAqKVxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAyMDAgaW5cbiAgICBsZXQgcHJvZ25hbWUgPVxuICAgICAgaWYgaW5pdHBvcyA8IChBcnJheS5sZW5ndGggIWFyZ3YpIHRoZW4gIWFyZ3YuKGluaXRwb3MpIGVsc2UgXCIoPylcIiBpblxuICAgIGJlZ2luIG1hdGNoIGVycm9yIHdpdGhcbiAgICAgIHwgVW5rbm93biBcIi1oZWxwXCIgLT4gKClcbiAgICAgIHwgVW5rbm93biBcIi0taGVscFwiIC0+ICgpXG4gICAgICB8IFVua25vd24gcyAtPlxuICAgICAgICAgIGJwcmludGYgYiBcIiVzOiB1bmtub3duIG9wdGlvbiAnJXMnLlxcblwiIHByb2duYW1lIHNcbiAgICAgIHwgTWlzc2luZyBzIC0+XG4gICAgICAgICAgYnByaW50ZiBiIFwiJXM6IG9wdGlvbiAnJXMnIG5lZWRzIGFuIGFyZ3VtZW50LlxcblwiIHByb2duYW1lIHNcbiAgICAgIHwgV3JvbmcgKG9wdCwgYXJnLCBleHBlY3RlZCkgLT5cbiAgICAgICAgICBicHJpbnRmIGIgXCIlczogd3JvbmcgYXJndW1lbnQgJyVzJzsgb3B0aW9uICclcycgZXhwZWN0cyAlcy5cXG5cIlxuICAgICAgICAgICAgICAgICAgcHJvZ25hbWUgYXJnIG9wdCBleHBlY3RlZFxuICAgICAgfCBNZXNzYWdlIHMgLT4gKCogdXNlciBlcnJvciBtZXNzYWdlICopXG4gICAgICAgICAgYnByaW50ZiBiIFwiJXM6ICVzLlxcblwiIHByb2duYW1lIHNcbiAgICBlbmQ7XG4gICAgdXNhZ2VfYiBiICFzcGVjbGlzdCBlcnJtc2c7XG4gICAgaWYgZXJyb3IgPSBVbmtub3duIFwiLWhlbHBcIiB8fCBlcnJvciA9IFVua25vd24gXCItLWhlbHBcIlxuICAgIHRoZW4gSGVscCAoQnVmZmVyLmNvbnRlbnRzIGIpXG4gICAgZWxzZSBCYWQgKEJ1ZmZlci5jb250ZW50cyBiKVxuICBpblxuICBpbmNyIGN1cnJlbnQ7XG4gIHdoaWxlICFjdXJyZW50IDwgKEFycmF5Lmxlbmd0aCAhYXJndikgZG9cbiAgICBiZWdpbiB0cnlcbiAgICAgIGxldCBzID0gIWFyZ3YuKCFjdXJyZW50KSBpblxuICAgICAgaWYgU3RyaW5nLmxlbmd0aCBzID49IDEgJiYgcy5bMF0gPSAnLScgdGhlbiBiZWdpblxuICAgICAgICBsZXQgYWN0aW9uLCBmb2xsb3cgPVxuICAgICAgICAgIHRyeSBhc3NvYzMgcyAhc3BlY2xpc3QsIE5vbmVcbiAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IGtleXdvcmQsIGFyZyA9IHNwbGl0IHMgaW5cbiAgICAgICAgICAgIGFzc29jMyBrZXl3b3JkICFzcGVjbGlzdCwgU29tZSBhcmdcbiAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiByYWlzZSAoU3RvcCAoVW5rbm93biBzKSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5vX2FyZyAoKSA9XG4gICAgICAgICAgbWF0Y2ggZm9sbG93IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgYXJnIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcIm5vIGFyZ3VtZW50XCIpKSkgaW5cbiAgICAgICAgbGV0IGdldF9hcmcgKCkgPVxuICAgICAgICAgIG1hdGNoIGZvbGxvdyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGlmICFjdXJyZW50ICsgMSA8IChBcnJheS5sZW5ndGggIWFyZ3YpIHRoZW4gIWFyZ3YuKCFjdXJyZW50ICsgMSlcbiAgICAgICAgICAgICAgZWxzZSByYWlzZSAoU3RvcCAoTWlzc2luZyBzKSlcbiAgICAgICAgICB8IFNvbWUgYXJnIC0+IGFyZ1xuICAgICAgICBpblxuICAgICAgICBsZXQgY29uc3VtZV9hcmcgKCkgPVxuICAgICAgICAgIG1hdGNoIGZvbGxvdyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGluY3IgY3VycmVudFxuICAgICAgICAgIHwgU29tZSBfIC0+ICgpXG4gICAgICAgIGluXG4gICAgICAgIGxldCByZWMgdHJlYXRfYWN0aW9uID0gZnVuY3Rpb25cbiAgICAgICAgfCBVbml0IGYgLT4gbm9fYXJnICgpOyBmICgpO1xuICAgICAgICB8IEJvb2wgZiAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGJvb2xfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImEgYm9vbGVhblwiKSkpXG4gICAgICAgICAgICB8IFNvbWUgcyAtPiBmIHNcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFNldCByIC0+IG5vX2FyZyAoKTsgciA6PSB0cnVlO1xuICAgICAgICB8IENsZWFyIHIgLT4gbm9fYXJnICgpOyByIDo9IGZhbHNlO1xuICAgICAgICB8IFN0cmluZyBmIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgZiBhcmc7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBTeW1ib2wgKHN5bWIsIGYpIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgaWYgTGlzdC5tZW0gYXJnIHN5bWIgdGhlbiBiZWdpblxuICAgICAgICAgICAgICBmIGFyZztcbiAgICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgICAgICByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJvbmUgb2Y6IFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeIChtYWtlX3N5bWxpc3QgXCJcIiBcIiBcIiBcIlwiIHN5bWIpKSkpXG4gICAgICAgICAgICBlbmRcbiAgICAgICAgfCBTZXRfc3RyaW5nIHIgLT5cbiAgICAgICAgICAgIHIgOj0gZ2V0X2FyZyAoKTtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IEludCBmIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggaW50X29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhbiBpbnRlZ2VyXCIpKSlcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IGYgeFxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgU2V0X2ludCByIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggaW50X29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhbiBpbnRlZ2VyXCIpKSlcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IHIgOj0geFxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgRmxvYXQgZiAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGZsb2F0X29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhIGZsb2F0XCIpKSlcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IGYgeFxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgU2V0X2Zsb2F0IHIgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBmbG9hdF9vZl9zdHJpbmdfb3B0IGFyZyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwiYSBmbG9hdFwiKSkpXG4gICAgICAgICAgICB8IFNvbWUgeCAtPiByIDo9IHhcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFR1cGxlIHNwZWNzIC0+XG4gICAgICAgICAgICBub19hcmcgKCk7XG4gICAgICAgICAgICBMaXN0Lml0ZXIgdHJlYXRfYWN0aW9uIHNwZWNzO1xuICAgICAgICB8IFJlc3QgZiAtPlxuICAgICAgICAgICAgbm9fYXJnICgpO1xuICAgICAgICAgICAgd2hpbGUgIWN1cnJlbnQgPCAoQXJyYXkubGVuZ3RoICFhcmd2KSAtIDEgZG9cbiAgICAgICAgICAgICAgZiAhYXJndi4oIWN1cnJlbnQgKyAxKTtcbiAgICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgICAgICBkb25lO1xuICAgICAgICB8IFJlc3RfYWxsIGYgLT5cbiAgICAgICAgICAgIG5vX2FyZyAoKTtcbiAgICAgICAgICAgIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgIHdoaWxlICFjdXJyZW50IDwgQXJyYXkubGVuZ3RoICFhcmd2IC0gMSBkb1xuICAgICAgICAgICAgICBhY2MgOj0gIWFyZ3YuKCFjdXJyZW50ICsgMSkgOjogIWFjYztcbiAgICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgZiAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgfCBFeHBhbmQgZiAtPlxuICAgICAgICAgICAgaWYgbm90IGFsbG93X2V4cGFuZCB0aGVuXG4gICAgICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiQXJnLkV4cGFuZCBpcyBpcyBvbmx5IGFsbG93ZWQgd2l0aCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJnLnBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljXCIpO1xuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGxldCBuZXdhcmcgPSBmIGFyZyBpblxuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgICAgICBsZXQgYmVmb3JlID0gQXJyYXkuc3ViICFhcmd2IDAgKCFjdXJyZW50ICsgMSlcbiAgICAgICAgICAgIGFuZCBhZnRlciA9XG4gICAgICAgICAgICAgIEFycmF5LnN1YiAhYXJndiAoIWN1cnJlbnQgKyAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgKChBcnJheS5sZW5ndGggIWFyZ3YpIC0gIWN1cnJlbnQgLSAxKSBpblxuICAgICAgICAgICAgYXJndjo9IEFycmF5LmNvbmNhdCBbYmVmb3JlO25ld2FyZzthZnRlcl07XG4gICAgICAgIGluXG4gICAgICAgIHRyZWF0X2FjdGlvbiBhY3Rpb24gZW5kXG4gICAgICBlbHNlIGFub25mdW4gc1xuICAgIHdpdGggfCBCYWQgbSAtPiByYWlzZSAoY29udmVydF9lcnJvciAoTWVzc2FnZSBtKSk7XG4gICAgICAgICB8IFN0b3AgZSAtPiByYWlzZSAoY29udmVydF9lcnJvciBlKTtcbiAgICBlbmQ7XG4gICAgaW5jciBjdXJyZW50XG4gIGRvbmVcblxubGV0IHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljIGN1cnJlbnQgYXJndiBzcGVjbGlzdCBhbm9uZnVuIGVycm1zZyA9XG4gIHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljX2F1eCB0cnVlIGN1cnJlbnQgYXJndiBzcGVjbGlzdCBhbm9uZnVuIGVycm1zZ1xuXG5sZXQgcGFyc2VfYXJndl9keW5hbWljID8oY3VycmVudD1jdXJyZW50KSBhcmd2IHNwZWNsaXN0IGFub25mdW4gZXJybXNnID1cbiAgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfYXV4IGZhbHNlIGN1cnJlbnQgKHJlZiBhcmd2KSBzcGVjbGlzdCBhbm9uZnVuXG4gICAgZXJybXNnXG5cblxubGV0IHBhcnNlX2FyZ3YgPyhjdXJyZW50PWN1cnJlbnQpIGFyZ3Ygc3BlY2xpc3QgYW5vbmZ1biBlcnJtc2cgPVxuICBwYXJzZV9hcmd2X2R5bmFtaWMgfmN1cnJlbnQ6Y3VycmVudCBhcmd2IChyZWYgc3BlY2xpc3QpIGFub25mdW4gZXJybXNnXG5cblxubGV0IHBhcnNlIGwgZiBtc2cgPVxuICB0cnlcbiAgICBwYXJzZV9hcmd2IFN5cy5hcmd2IGwgZiBtc2dcbiAgd2l0aFxuICB8IEJhZCBtc2cgLT4gZXByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDJcbiAgfCBIZWxwIG1zZyAtPiBwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAwXG5cblxubGV0IHBhcnNlX2R5bmFtaWMgbCBmIG1zZyA9XG4gIHRyeVxuICAgIHBhcnNlX2FyZ3ZfZHluYW1pYyBTeXMuYXJndiBsIGYgbXNnXG4gIHdpdGhcbiAgfCBCYWQgbXNnIC0+IGVwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAyXG4gIHwgSGVscCBtc2cgLT4gcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMFxuXG5sZXQgcGFyc2VfZXhwYW5kIGwgZiBtc2cgPVxuICB0cnlcbiAgICBsZXQgYXJndiA9IHJlZiBTeXMuYXJndiBpblxuICAgIGxldCBzcGVjID0gcmVmIGwgaW5cbiAgICBsZXQgY3VycmVudCA9IHJlZiAoIWN1cnJlbnQpIGluXG4gICAgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWMgY3VycmVudCBhcmd2IHNwZWMgZiBtc2dcbiAgd2l0aFxuICB8IEJhZCBtc2cgLT4gZXByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDJcbiAgfCBIZWxwIG1zZyAtPiBwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAwXG5cblxubGV0IHNlY29uZF93b3JkIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBuID1cbiAgICBpZiBuID49IGxlbiB0aGVuIGxlblxuICAgIGVsc2UgaWYgcy5bbl0gPSAnICcgdGhlbiBsb29wIChuKzEpXG4gICAgZWxzZSBuXG4gIGluXG4gIG1hdGNoIFN0cmluZy5pbmRleCBzICdcXHQnIHdpdGhcbiAgfCBuIC0+IGxvb3AgKG4rMSlcbiAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+XG4gICAgICBiZWdpbiBtYXRjaCBTdHJpbmcuaW5kZXggcyAnICcgd2l0aFxuICAgICAgfCBuIC0+IGxvb3AgKG4rMSlcbiAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBsZW5cbiAgICAgIGVuZFxuXG5cbmxldCBtYXhfYXJnX2xlbiBjdXIgKGt3ZCwgc3BlYywgZG9jKSA9XG4gIG1hdGNoIHNwZWMgd2l0aFxuICB8IFN5bWJvbCBfIC0+IEludC5tYXggY3VyIChTdHJpbmcubGVuZ3RoIGt3ZClcbiAgfCBfIC0+IEludC5tYXggY3VyIChTdHJpbmcubGVuZ3RoIGt3ZCArIHNlY29uZF93b3JkIGRvYylcblxuXG5sZXQgcmVwbGFjZV9sZWFkaW5nX3RhYiBzID1cbiAgbGV0IHNlZW4gPSByZWYgZmFsc2UgaW5cbiAgU3RyaW5nLm1hcCAoZnVuY3Rpb24gJ1xcdCcgd2hlbiBub3QgIXNlZW4gLT4gc2VlbiA6PSB0cnVlOyAnICcgfCBjIC0+IGMpIHNcblxubGV0IGFkZF9wYWRkaW5nIGxlbiBrc2QgPVxuICBtYXRjaCBrc2Qgd2l0aFxuICB8IChfLCBfLCBcIlwiKSAtPlxuICAgICAgKCogRG8gbm90IHBhZCB1bmRvY3VtZW50ZWQgb3B0aW9ucywgc28gdGhhdCB0aGV5IHN0aWxsIGRvbid0IHNob3cgdXAgd2hlblxuICAgICAgICogcnVuIHRocm91Z2ggW3VzYWdlXSBvciBbcGFyc2VdLiAqKVxuICAgICAga3NkXG4gIHwgKGt3ZCwgKFN5bWJvbCBfIGFzIHNwZWMpLCBtc2cpIC0+XG4gICAgICBsZXQgY3V0Y29sID0gc2Vjb25kX3dvcmQgbXNnIGluXG4gICAgICBsZXQgc3BhY2VzID0gU3RyaW5nLm1ha2UgKChJbnQubWF4IDAgKGxlbiAtIGN1dGNvbCkpICsgMykgJyAnIGluXG4gICAgICAoa3dkLCBzcGVjLCBcIlxcblwiIF4gc3BhY2VzIF4gcmVwbGFjZV9sZWFkaW5nX3RhYiBtc2cpXG4gIHwgKGt3ZCwgc3BlYywgbXNnKSAtPlxuICAgICAgbGV0IGN1dGNvbCA9IHNlY29uZF93b3JkIG1zZyBpblxuICAgICAgbGV0IGt3ZF9sZW4gPSBTdHJpbmcubGVuZ3RoIGt3ZCBpblxuICAgICAgbGV0IGRpZmYgPSBsZW4gLSBrd2RfbGVuIC0gY3V0Y29sIGluXG4gICAgICBpZiBkaWZmIDw9IDAgdGhlblxuICAgICAgICAoa3dkLCBzcGVjLCByZXBsYWNlX2xlYWRpbmdfdGFiIG1zZylcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IHNwYWNlcyA9IFN0cmluZy5tYWtlIGRpZmYgJyAnIGluXG4gICAgICAgIGxldCBwcmVmaXggPSBTdHJpbmcuc3ViIChyZXBsYWNlX2xlYWRpbmdfdGFiIG1zZykgMCBjdXRjb2wgaW5cbiAgICAgICAgbGV0IHN1ZmZpeCA9IFN0cmluZy5zdWIgbXNnIGN1dGNvbCAoU3RyaW5nLmxlbmd0aCBtc2cgLSBjdXRjb2wpIGluXG4gICAgICAgIChrd2QsIHNwZWMsIHByZWZpeCBeIHNwYWNlcyBeIHN1ZmZpeClcblxuXG5sZXQgYWxpZ24gPyhsaW1pdD1tYXhfaW50KSBzcGVjbGlzdCA9XG4gIGxldCBjb21wbGV0ZWQgPSBhZGRfaGVscCBzcGVjbGlzdCBpblxuICBsZXQgbGVuID0gTGlzdC5mb2xkX2xlZnQgbWF4X2FyZ19sZW4gMCBjb21wbGV0ZWQgaW5cbiAgbGV0IGxlbiA9IEludC5taW4gbGVuIGxpbWl0IGluXG4gIExpc3QubWFwIChhZGRfcGFkZGluZyBsZW4pIGNvbXBsZXRlZFxuXG5sZXQgdHJpbV9jciBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBpZiBsZW4gPiAwICYmIFN0cmluZy5nZXQgcyAobGVuIC0gMSkgPSAnXFxyJyB0aGVuXG4gICAgU3RyaW5nLnN1YiBzIDAgKGxlbiAtIDEpXG4gIGVsc2VcbiAgICBzXG5cbmxldCByZWFkX2F1eCB0cmltIHNlcCBmaWxlID1cbiAgbGV0IGljID0gb3Blbl9pbl9iaW4gZmlsZSBpblxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAyMDAgaW5cbiAgbGV0IHdvcmRzID0gcmVmIFtdIGluXG4gIGxldCBzdGFzaCAoKSA9XG4gICAgbGV0IHdvcmQgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gICAgbGV0IHdvcmQgPSBpZiB0cmltIHRoZW4gdHJpbV9jciB3b3JkIGVsc2Ugd29yZCBpblxuICAgIHdvcmRzIDo9IHdvcmQgOjogIXdvcmRzO1xuICAgIEJ1ZmZlci5jbGVhciBidWZcbiAgaW5cbiAgYmVnaW5cbiAgICB0cnkgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICBsZXQgYyA9IGlucHV0X2NoYXIgaWMgaW5cbiAgICAgICAgaWYgYyA9IHNlcCB0aGVuIHN0YXNoICgpIGVsc2UgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjXG4gICAgICBkb25lXG4gICAgd2l0aCBFbmRfb2ZfZmlsZSAtPiAoKVxuICBlbmQ7XG4gIGlmIEJ1ZmZlci5sZW5ndGggYnVmID4gMCB0aGVuIHN0YXNoICgpO1xuICBjbG9zZV9pbiBpYztcbiAgQXJyYXkub2ZfbGlzdCAoTGlzdC5yZXYgIXdvcmRzKVxuXG5sZXQgcmVhZF9hcmcgPSByZWFkX2F1eCB0cnVlICdcXG4nXG5cbmxldCByZWFkX2FyZzAgPSByZWFkX2F1eCBmYWxzZSAnXFx4MDAnXG5cbmxldCB3cml0ZV9hdXggc2VwIGZpbGUgYXJncyA9XG4gIGxldCBvYyA9IG9wZW5fb3V0X2JpbiBmaWxlIGluXG4gIEFycmF5Lml0ZXIgKGZ1biBzIC0+IGZwcmludGYgb2MgXCIlcyVjXCIgcyBzZXApIGFyZ3M7XG4gIGNsb3NlX291dCBvY1xuXG5sZXQgd3JpdGVfYXJnID0gd3JpdGVfYXV4ICdcXG4nXG5cbmxldCB3cml0ZV9hcmcwID0gd3JpdGVfYXV4ICdcXHgwMCdcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXh0ZXJuYWwgaWQgOiAnYSAtPiAnYSA9IFwiJWlkZW50aXR5XCJcbmxldCBjb25zdCBjIF8gPSBjXG5sZXQgZmxpcCBmIHggeSA9IGYgeSB4XG5sZXQgbmVnYXRlIHAgdiA9IG5vdCAocCB2KVxuXG5leGNlcHRpb24gRmluYWxseV9yYWlzZWQgb2YgZXhuXG5cbmxldCAoKSA9IFByaW50ZXhjLnJlZ2lzdGVyX3ByaW50ZXIgQEAgZnVuY3Rpb25cbnwgRmluYWxseV9yYWlzZWQgZXhuIC0+IFNvbWUgKFwiRnVuLkZpbmFsbHlfcmFpc2VkOiBcIiBeIFByaW50ZXhjLnRvX3N0cmluZyBleG4pXG58IF8gLT4gTm9uZVxuXG5sZXQgcHJvdGVjdCB+KGZpbmFsbHkgOiB1bml0IC0+IHVuaXQpIHdvcmsgPVxuICBsZXQgZmluYWxseV9ub19leG4gKCkgPVxuICAgIHRyeSBmaW5hbGx5ICgpIHdpdGggZSAtPlxuICAgICAgbGV0IGJ0ID0gUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAgIFByaW50ZXhjLnJhaXNlX3dpdGhfYmFja3RyYWNlIChGaW5hbGx5X3JhaXNlZCBlKSBidFxuICBpblxuICBtYXRjaCB3b3JrICgpIHdpdGhcbiAgfCByZXN1bHQgLT4gZmluYWxseV9ub19leG4gKCkgOyByZXN1bHRcbiAgfCBleGNlcHRpb24gd29ya19leG4gLT5cbiAgICAgIGxldCB3b3JrX2J0ID0gUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAgIGZpbmFsbHlfbm9fZXhuICgpIDtcbiAgICAgIFByaW50ZXhjLnJhaXNlX3dpdGhfYmFja3RyYWNlIHdvcmtfZXhuIHdvcmtfYnRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSmFjcXVlcy1IZW5yaSBKb3VyZGFuLCBwcm9qZXQgR2FsbGl1bSwgSU5SSUEgUGFyaXMgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYtMjAxNiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlICAgKilcbigqICAgICBldCBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBzdGF0ID0ge1xuICBtaW5vcl93b3JkcyA6IGZsb2F0O1xuICBwcm9tb3RlZF93b3JkcyA6IGZsb2F0O1xuICBtYWpvcl93b3JkcyA6IGZsb2F0O1xuICBtaW5vcl9jb2xsZWN0aW9ucyA6IGludDtcbiAgbWFqb3JfY29sbGVjdGlvbnMgOiBpbnQ7XG4gIGhlYXBfd29yZHMgOiBpbnQ7XG4gIGhlYXBfY2h1bmtzIDogaW50O1xuICBsaXZlX3dvcmRzIDogaW50O1xuICBsaXZlX2Jsb2NrcyA6IGludDtcbiAgZnJlZV93b3JkcyA6IGludDtcbiAgZnJlZV9ibG9ja3MgOiBpbnQ7XG4gIGxhcmdlc3RfZnJlZSA6IGludDtcbiAgZnJhZ21lbnRzIDogaW50O1xuICBjb21wYWN0aW9ucyA6IGludDtcbiAgdG9wX2hlYXBfd29yZHMgOiBpbnQ7XG4gIHN0YWNrX3NpemUgOiBpbnQ7XG4gIGZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uczogaW50O1xufVxuXG50eXBlIGNvbnRyb2wgPSB7XG4gIG11dGFibGUgbWlub3JfaGVhcF9zaXplIDogaW50O1xuICBtdXRhYmxlIG1ham9yX2hlYXBfaW5jcmVtZW50IDogaW50O1xuICBtdXRhYmxlIHNwYWNlX292ZXJoZWFkIDogaW50O1xuICBtdXRhYmxlIHZlcmJvc2UgOiBpbnQ7XG4gIG11dGFibGUgbWF4X292ZXJoZWFkIDogaW50O1xuICBtdXRhYmxlIHN0YWNrX2xpbWl0IDogaW50O1xuICBtdXRhYmxlIGFsbG9jYXRpb25fcG9saWN5IDogaW50O1xuICB3aW5kb3dfc2l6ZSA6IGludDtcbiAgY3VzdG9tX21ham9yX3JhdGlvIDogaW50O1xuICBjdXN0b21fbWlub3JfcmF0aW8gOiBpbnQ7XG4gIGN1c3RvbV9taW5vcl9tYXhfc2l6ZSA6IGludDtcbn1cblxuZXh0ZXJuYWwgc3RhdCA6IHVuaXQgLT4gc3RhdCA9IFwiY2FtbF9nY19zdGF0XCJcbmV4dGVybmFsIHF1aWNrX3N0YXQgOiB1bml0IC0+IHN0YXQgPSBcImNhbWxfZ2NfcXVpY2tfc3RhdFwiXG5leHRlcm5hbCBjb3VudGVycyA6IHVuaXQgLT4gKGZsb2F0ICogZmxvYXQgKiBmbG9hdCkgPSBcImNhbWxfZ2NfY291bnRlcnNcIlxuZXh0ZXJuYWwgbWlub3Jfd29yZHMgOiB1bml0IC0+IChmbG9hdCBbQHVuYm94ZWRdKVxuICA9IFwiY2FtbF9nY19taW5vcl93b3Jkc1wiIFwiY2FtbF9nY19taW5vcl93b3Jkc191bmJveGVkXCJcbmV4dGVybmFsIGdldCA6IHVuaXQgLT4gY29udHJvbCA9IFwiY2FtbF9nY19nZXRcIlxuZXh0ZXJuYWwgc2V0IDogY29udHJvbCAtPiB1bml0ID0gXCJjYW1sX2djX3NldFwiXG5leHRlcm5hbCBtaW5vciA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9nY19taW5vclwiXG5leHRlcm5hbCBtYWpvcl9zbGljZSA6IGludCAtPiBpbnQgPSBcImNhbWxfZ2NfbWFqb3Jfc2xpY2VcIlxuZXh0ZXJuYWwgbWFqb3IgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZ2NfbWFqb3JcIlxuZXh0ZXJuYWwgZnVsbF9tYWpvciA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9nY19mdWxsX21ham9yXCJcbmV4dGVybmFsIGNvbXBhY3QgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZ2NfY29tcGFjdGlvblwiXG5leHRlcm5hbCBnZXRfbWlub3JfZnJlZSA6IHVuaXQgLT4gaW50ID0gXCJjYW1sX2dldF9taW5vcl9mcmVlXCJcbmV4dGVybmFsIGdldF9idWNrZXQgOiBpbnQgLT4gaW50ID0gXCJjYW1sX2dldF9tYWpvcl9idWNrZXRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZ2V0X2NyZWRpdCA6IHVuaXQgLT4gaW50ID0gXCJjYW1sX2dldF9tYWpvcl9jcmVkaXRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgaHVnZV9mYWxsYmFja19jb3VudCA6IHVuaXQgLT4gaW50ID0gXCJjYW1sX2djX2h1Z2VfZmFsbGJhY2tfY291bnRcIlxuZXh0ZXJuYWwgZXZlbnRsb2dfcGF1c2UgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZXZlbnRsb2dfcGF1c2VcIlxuZXh0ZXJuYWwgZXZlbnRsb2dfcmVzdW1lIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2V2ZW50bG9nX3Jlc3VtZVwiXG5cbm9wZW4gUHJpbnRmXG5cbmxldCBwcmludF9zdGF0IGMgPVxuICBsZXQgc3QgPSBzdGF0ICgpIGluXG4gIGZwcmludGYgYyBcIm1pbm9yX2NvbGxlY3Rpb25zOiAgICAgICVkXFxuXCIgc3QubWlub3JfY29sbGVjdGlvbnM7XG4gIGZwcmludGYgYyBcIm1ham9yX2NvbGxlY3Rpb25zOiAgICAgICVkXFxuXCIgc3QubWFqb3JfY29sbGVjdGlvbnM7XG4gIGZwcmludGYgYyBcImNvbXBhY3Rpb25zOiAgICAgICAgICAgICVkXFxuXCIgc3QuY29tcGFjdGlvbnM7XG4gIGZwcmludGYgYyBcImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uczogJWRcXG5cIiBzdC5mb3JjZWRfbWFqb3JfY29sbGVjdGlvbnM7XG4gIGZwcmludGYgYyBcIlxcblwiO1xuICBsZXQgbDEgPSBTdHJpbmcubGVuZ3RoIChzcHJpbnRmIFwiJS4wZlwiIHN0Lm1pbm9yX3dvcmRzKSBpblxuICBmcHJpbnRmIGMgXCJtaW5vcl93b3JkczogICAgJSouMGZcXG5cIiBsMSBzdC5taW5vcl93b3JkcztcbiAgZnByaW50ZiBjIFwicHJvbW90ZWRfd29yZHM6ICUqLjBmXFxuXCIgbDEgc3QucHJvbW90ZWRfd29yZHM7XG4gIGZwcmludGYgYyBcIm1ham9yX3dvcmRzOiAgICAlKi4wZlxcblwiIGwxIHN0Lm1ham9yX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJcXG5cIjtcbiAgbGV0IGwyID0gU3RyaW5nLmxlbmd0aCAoc3ByaW50ZiBcIiVkXCIgc3QudG9wX2hlYXBfd29yZHMpIGluXG4gIGZwcmludGYgYyBcInRvcF9oZWFwX3dvcmRzOiAlKmRcXG5cIiBsMiBzdC50b3BfaGVhcF93b3JkcztcbiAgZnByaW50ZiBjIFwiaGVhcF93b3JkczogICAgICUqZFxcblwiIGwyIHN0LmhlYXBfd29yZHM7XG4gIGZwcmludGYgYyBcImxpdmVfd29yZHM6ICAgICAlKmRcXG5cIiBsMiBzdC5saXZlX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJmcmVlX3dvcmRzOiAgICAgJSpkXFxuXCIgbDIgc3QuZnJlZV93b3JkcztcbiAgZnByaW50ZiBjIFwibGFyZ2VzdF9mcmVlOiAgICUqZFxcblwiIGwyIHN0Lmxhcmdlc3RfZnJlZTtcbiAgZnByaW50ZiBjIFwiZnJhZ21lbnRzOiAgICAgICUqZFxcblwiIGwyIHN0LmZyYWdtZW50cztcbiAgZnByaW50ZiBjIFwiXFxuXCI7XG4gIGZwcmludGYgYyBcImxpdmVfYmxvY2tzOiAlZFxcblwiIHN0LmxpdmVfYmxvY2tzO1xuICBmcHJpbnRmIGMgXCJmcmVlX2Jsb2NrczogJWRcXG5cIiBzdC5mcmVlX2Jsb2NrcztcbiAgZnByaW50ZiBjIFwiaGVhcF9jaHVua3M6ICVkXFxuXCIgc3QuaGVhcF9jaHVua3NcblxuXG5sZXQgYWxsb2NhdGVkX2J5dGVzICgpID1cbiAgbGV0IChtaSwgcHJvLCBtYSkgPSBjb3VudGVycyAoKSBpblxuICAobWkgKy4gbWEgLS4gcHJvKSAqLiBmbG9hdF9vZl9pbnQgKFN5cy53b3JkX3NpemUgLyA4KVxuXG5cbmV4dGVybmFsIGZpbmFsaXNlIDogKCdhIC0+IHVuaXQpIC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfZmluYWxfcmVnaXN0ZXJcIlxuZXh0ZXJuYWwgZmluYWxpc2VfbGFzdCA6ICh1bml0IC0+IHVuaXQpIC0+ICdhIC0+IHVuaXQgPVxuICBcImNhbWxfZmluYWxfcmVnaXN0ZXJfY2FsbGVkX3dpdGhvdXRfdmFsdWVcIlxuZXh0ZXJuYWwgZmluYWxpc2VfcmVsZWFzZSA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9maW5hbF9yZWxlYXNlXCJcblxuXG50eXBlIGFsYXJtID0gYm9vbCByZWZcbnR5cGUgYWxhcm1fcmVjID0ge2FjdGl2ZSA6IGFsYXJtOyBmIDogdW5pdCAtPiB1bml0fVxuXG5sZXQgcmVjIGNhbGxfYWxhcm0gYXJlYyA9XG4gIGlmICEoYXJlYy5hY3RpdmUpIHRoZW4gYmVnaW5cbiAgICBmaW5hbGlzZSBjYWxsX2FsYXJtIGFyZWM7XG4gICAgYXJlYy5mICgpO1xuICBlbmRcblxuXG5sZXQgY3JlYXRlX2FsYXJtIGYgPVxuICBsZXQgYXJlYyA9IHsgYWN0aXZlID0gcmVmIHRydWU7IGYgPSBmIH0gaW5cbiAgZmluYWxpc2UgY2FsbF9hbGFybSBhcmVjO1xuICBhcmVjLmFjdGl2ZVxuXG5cbmxldCBkZWxldGVfYWxhcm0gYSA9IGEgOj0gZmFsc2VcblxubW9kdWxlIE1lbXByb2YgPVxuICBzdHJ1Y3RcbiAgICB0eXBlIGFsbG9jYXRpb25fc291cmNlID0gTm9ybWFsIHwgTWFyc2hhbCB8IEN1c3RvbVxuICAgIHR5cGUgYWxsb2NhdGlvbiA9XG4gICAgICB7IG5fc2FtcGxlcyA6IGludDtcbiAgICAgICAgc2l6ZSA6IGludDtcbiAgICAgICAgc291cmNlIDogYWxsb2NhdGlvbl9zb3VyY2U7XG4gICAgICAgIGNhbGxzdGFjayA6IFByaW50ZXhjLnJhd19iYWNrdHJhY2UgfVxuXG4gICAgdHlwZSAoJ21pbm9yLCAnbWFqb3IpIHRyYWNrZXIgPSB7XG4gICAgICBhbGxvY19taW5vcjogYWxsb2NhdGlvbiAtPiAnbWlub3Igb3B0aW9uO1xuICAgICAgYWxsb2NfbWFqb3I6IGFsbG9jYXRpb24gLT4gJ21ham9yIG9wdGlvbjtcbiAgICAgIHByb21vdGU6ICdtaW5vciAtPiAnbWFqb3Igb3B0aW9uO1xuICAgICAgZGVhbGxvY19taW5vcjogJ21pbm9yIC0+IHVuaXQ7XG4gICAgICBkZWFsbG9jX21ham9yOiAnbWFqb3IgLT4gdW5pdDtcbiAgICB9XG5cbiAgICBsZXQgbnVsbF90cmFja2VyID0ge1xuICAgICAgYWxsb2NfbWlub3IgPSAoZnVuIF8gLT4gTm9uZSk7XG4gICAgICBhbGxvY19tYWpvciA9IChmdW4gXyAtPiBOb25lKTtcbiAgICAgIHByb21vdGUgPSAoZnVuIF8gLT4gTm9uZSk7XG4gICAgICBkZWFsbG9jX21pbm9yID0gKGZ1biBfIC0+ICgpKTtcbiAgICAgIGRlYWxsb2NfbWFqb3IgPSAoZnVuIF8gLT4gKCkpO1xuICAgIH1cblxuICAgIGV4dGVybmFsIGNfc3RhcnQgOlxuICAgICAgZmxvYXQgLT4gaW50IC0+ICgnbWlub3IsICdtYWpvcikgdHJhY2tlciAtPiB1bml0XG4gICAgICA9IFwiY2FtbF9tZW1wcm9mX3N0YXJ0XCJcblxuICAgIGxldCBzdGFydFxuICAgICAgfnNhbXBsaW5nX3JhdGVcbiAgICAgID8oY2FsbHN0YWNrX3NpemUgPSBtYXhfaW50KVxuICAgICAgdHJhY2tlciA9XG4gICAgICBjX3N0YXJ0IHNhbXBsaW5nX3JhdGUgY2FsbHN0YWNrX3NpemUgdHJhY2tlclxuXG4gICAgZXh0ZXJuYWwgc3RvcCA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9tZW1wcm9mX3N0b3BcIlxuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTWVzc2FnZSBkaWdlc3QgKE1ENSkgKilcblxudHlwZSB0ID0gc3RyaW5nXG5cbmxldCBjb21wYXJlID0gU3RyaW5nLmNvbXBhcmVcbmxldCBlcXVhbCA9IFN0cmluZy5lcXVhbFxuXG5leHRlcm5hbCB1bnNhZmVfc3RyaW5nOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB0ID0gXCJjYW1sX21kNV9zdHJpbmdcIlxuZXh0ZXJuYWwgY2hhbm5lbDogaW5fY2hhbm5lbCAtPiBpbnQgLT4gdCA9IFwiY2FtbF9tZDVfY2hhblwiXG5cbmxldCBzdHJpbmcgc3RyID1cbiAgdW5zYWZlX3N0cmluZyBzdHIgMCAoU3RyaW5nLmxlbmd0aCBzdHIpXG5cbmxldCBieXRlcyBiID0gc3RyaW5nIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGIpXG5cbmxldCBzdWJzdHJpbmcgc3RyIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gU3RyaW5nLmxlbmd0aCBzdHIgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC5zdWJzdHJpbmdcIlxuICBlbHNlIHVuc2FmZV9zdHJpbmcgc3RyIG9mcyBsZW5cblxubGV0IHN1YmJ5dGVzIGIgb2ZzIGxlbiA9IHN1YnN0cmluZyAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBiKSBvZnMgbGVuXG5cbmxldCBmaWxlIGZpbGVuYW1lID1cbiAgbGV0IGljID0gb3Blbl9pbl9iaW4gZmlsZW5hbWUgaW5cbiAgbWF0Y2ggY2hhbm5lbCBpYyAoLTEpIHdpdGhcbiAgICB8IGQgLT4gY2xvc2VfaW4gaWM7IGRcbiAgICB8IGV4Y2VwdGlvbiBlIC0+IGNsb3NlX2luIGljOyByYWlzZSBlXG5cbmxldCBvdXRwdXQgY2hhbiBkaWdlc3QgPVxuICBvdXRwdXRfc3RyaW5nIGNoYW4gZGlnZXN0XG5cbmxldCBpbnB1dCBjaGFuID0gcmVhbGx5X2lucHV0X3N0cmluZyBjaGFuIDE2XG5cbmxldCBjaGFyX2hleCBuID1cbiAgQ2hhci51bnNhZmVfY2hyIChuICsgaWYgbiA8IDEwIHRoZW4gQ2hhci5jb2RlICcwJyBlbHNlIChDaGFyLmNvZGUgJ2EnIC0gMTApKVxuXG5sZXQgdG9faGV4IGQgPVxuICBpZiBTdHJpbmcubGVuZ3RoIGQgPD4gMTYgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC50b19oZXhcIjtcbiAgbGV0IHJlc3VsdCA9IEJ5dGVzLmNyZWF0ZSAzMiBpblxuICBmb3IgaSA9IDAgdG8gMTUgZG9cbiAgICBsZXQgeCA9IENoYXIuY29kZSBkLltpXSBpblxuICAgIEJ5dGVzLnVuc2FmZV9zZXQgcmVzdWx0IChpKjIpIChjaGFyX2hleCAoeCBsc3IgNCkpO1xuICAgIEJ5dGVzLnVuc2FmZV9zZXQgcmVzdWx0IChpKjIrMSkgKGNoYXJfaGV4ICh4IGxhbmQgMHgwZikpO1xuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc3VsdFxuXG5sZXQgZnJvbV9oZXggcyA9XG4gIGlmIFN0cmluZy5sZW5ndGggcyA8PiAzMiB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LmZyb21faGV4XCI7XG4gIGxldCBkaWdpdCBjID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8ICcwJy4uJzknIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICcwJ1xuICAgIHwgJ0EnLi4nRicgLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJ0EnICsgMTBcbiAgICB8ICdhJy4uJ2YnIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICdhJyArIDEwXG4gICAgfCBfIC0+IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiRGlnZXN0LmZyb21faGV4XCIpXG4gIGluXG4gIGxldCBieXRlIGkgPSBkaWdpdCBzLltpXSBsc2wgNCArIGRpZ2l0IHMuW2krMV0gaW5cbiAgbGV0IHJlc3VsdCA9IEJ5dGVzLmNyZWF0ZSAxNiBpblxuICBmb3IgaSA9IDAgdG8gMTUgZG9cbiAgICBCeXRlcy5zZXQgcmVzdWx0IGkgKENoYXIuY2hyIChieXRlICgyICogaSkpKTtcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXN1bHRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogSGFzaCB0YWJsZXMgKilcblxuKCogV2UgZG8gZHluYW1pYyBoYXNoaW5nLCBhbmQgcmVzaXplIHRoZSB0YWJsZSBhbmQgcmVoYXNoIHRoZSBlbGVtZW50c1xuICAgd2hlbiBidWNrZXRzIGJlY29tZSB0b28gbG9uZy4gKilcblxudHlwZSAoJ2EsICdiKSB0ID1cbiAgeyBtdXRhYmxlIHNpemU6IGludDsgICAgICAgICAgICAgICAgICAgICAgICAoKiBudW1iZXIgb2YgZW50cmllcyAqKVxuICAgIG11dGFibGUgZGF0YTogKCdhLCAnYikgYnVja2V0bGlzdCBhcnJheTsgICgqIHRoZSBidWNrZXRzICopXG4gICAgc2VlZDogaW50OyAgICAgICAgICAgICAgICAgICAgICAgICgqIGZvciByYW5kb21pemF0aW9uICopXG4gICAgbXV0YWJsZSBpbml0aWFsX3NpemU6IGludDsgICAgICAgICAgICAgICAgKCogaW5pdGlhbCBhcnJheSBzaXplICopXG4gIH1cblxuYW5kICgnYSwgJ2IpIGJ1Y2tldGxpc3QgPVxuICAgIEVtcHR5XG4gIHwgQ29ucyBvZiB7IG11dGFibGUga2V5OiAnYTtcbiAgICAgICAgICAgICAgbXV0YWJsZSBkYXRhOiAnYjtcbiAgICAgICAgICAgICAgbXV0YWJsZSBuZXh0OiAoJ2EsICdiKSBidWNrZXRsaXN0IH1cblxuKCogVGhlIHNpZ24gb2YgaW5pdGlhbF9zaXplIGVuY29kZXMgdGhlIGZhY3QgdGhhdCBhIHRyYXZlcnNhbCBpc1xuICAgb25nb2luZyBvciBub3QuXG5cbiAgIFRoaXMgZGlzYWJsZXMgdGhlIGVmZmljaWVudCBpbiBwbGFjZSBpbXBsZW1lbnRhdGlvbiBvZiByZXNpemluZy5cbiopXG5cbmxldCBvbmdvaW5nX3RyYXZlcnNhbCBoID1cbiAgT2JqLnNpemUgKE9iai5yZXByIGgpIDwgNCAoKiBjb21wYXRpYmlsaXR5IHdpdGggb2xkIGhhc2ggdGFibGVzICopXG4gIHx8IGguaW5pdGlhbF9zaXplIDwgMFxuXG5sZXQgZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoID1cbiAgaC5pbml0aWFsX3NpemUgPC0gLSBoLmluaXRpYWxfc2l6ZVxuXG4oKiBUbyBwaWNrIHJhbmRvbSBzZWVkcyBpZiByZXF1ZXN0ZWQgKilcblxubGV0IHJhbmRvbWl6ZWRfZGVmYXVsdCA9XG4gIGxldCBwYXJhbXMgPVxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiT0NBTUxSVU5QQVJBTVwiIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgdHJ5IFN5cy5nZXRlbnYgXCJDQU1MUlVOUEFSQU1cIiB3aXRoIE5vdF9mb3VuZCAtPiBcIlwiIGluXG4gIFN0cmluZy5jb250YWlucyBwYXJhbXMgJ1InXG5cbmxldCByYW5kb21pemVkID0gcmVmIHJhbmRvbWl6ZWRfZGVmYXVsdFxuXG5sZXQgcmFuZG9taXplICgpID0gcmFuZG9taXplZCA6PSB0cnVlXG5sZXQgaXNfcmFuZG9taXplZCAoKSA9ICFyYW5kb21pemVkXG5cbmxldCBwcm5nID0gbGF6eSAoUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0KCkpXG5cbigqIEZ1bmN0aW9ucyB3aGljaCBhcHBlYXIgYmVmb3JlIHRoZSBmdW5jdG9yaWFsIGludGVyZmFjZSBtdXN0IGVpdGhlciBiZVxuICAgaW5kZXBlbmRlbnQgb2YgdGhlIGhhc2ggZnVuY3Rpb24gb3IgdGFrZSBpdCBhcyBhIHBhcmFtZXRlciAoc2VlICMyMjAyIGFuZFxuICAgY29kZSBiZWxvdyB0aGUgZnVuY3RvciBkZWZpbml0aW9ucy4gKilcblxuKCogQ3JlYXRpbmcgYSBmcmVzaCwgZW1wdHkgdGFibGUgKilcblxubGV0IHJlYyBwb3dlcl8yX2Fib3ZlIHggbiA9XG4gIGlmIHggPj0gbiB0aGVuIHhcbiAgZWxzZSBpZiB4ICogMiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW4geFxuICBlbHNlIHBvd2VyXzJfYWJvdmUgKHggKiAyKSBuXG5cbmxldCBjcmVhdGUgPyhyYW5kb20gPSAhcmFuZG9taXplZCkgaW5pdGlhbF9zaXplID1cbiAgbGV0IHMgPSBwb3dlcl8yX2Fib3ZlIDE2IGluaXRpYWxfc2l6ZSBpblxuICBsZXQgc2VlZCA9IGlmIHJhbmRvbSB0aGVuIFJhbmRvbS5TdGF0ZS5iaXRzIChMYXp5LmZvcmNlIHBybmcpIGVsc2UgMCBpblxuICB7IGluaXRpYWxfc2l6ZSA9IHM7IHNpemUgPSAwOyBzZWVkID0gc2VlZDsgZGF0YSA9IEFycmF5Lm1ha2UgcyBFbXB0eSB9XG5cbmxldCBjbGVhciBoID1cbiAgaWYgaC5zaXplID4gMCB0aGVuIGJlZ2luXG4gICAgaC5zaXplIDwtIDA7XG4gICAgQXJyYXkuZmlsbCBoLmRhdGEgMCAoQXJyYXkubGVuZ3RoIGguZGF0YSkgRW1wdHlcbiAgZW5kXG5cbmxldCByZXNldCBoID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBoLmRhdGEgaW5cbiAgaWYgT2JqLnNpemUgKE9iai5yZXByIGgpIDwgNCAoKiBjb21wYXRpYmlsaXR5IHdpdGggb2xkIGhhc2ggdGFibGVzICopXG4gICAgfHwgbGVuID0gYWJzIGguaW5pdGlhbF9zaXplIHRoZW5cbiAgICBjbGVhciBoXG4gIGVsc2UgYmVnaW5cbiAgICBoLnNpemUgPC0gMDtcbiAgICBoLmRhdGEgPC0gQXJyYXkubWFrZSAoYWJzIGguaW5pdGlhbF9zaXplKSBFbXB0eVxuICBlbmRcblxubGV0IGNvcHlfYnVja2V0bGlzdCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gRW1wdHlcbiAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgcHJlYyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT4gKClcbiAgICAgICAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgICAgICBsZXQgciA9IENvbnMge2tleTsgZGF0YTsgbmV4dH0gaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICAgICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgIHwgQ29ucyBwcmVjIC0+ICBwcmVjLm5leHQgPC0gclxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgbG9vcCByIG5leHRcbiAgICAgIGluXG4gICAgICBsZXQgciA9IENvbnMge2tleTsgZGF0YTsgbmV4dH0gaW5cbiAgICAgIGxvb3AgciBuZXh0O1xuICAgICAgclxuXG5sZXQgY29weSBoID0geyBoIHdpdGggZGF0YSA9IEFycmF5Lm1hcCBjb3B5X2J1Y2tldGxpc3QgaC5kYXRhIH1cblxubGV0IGxlbmd0aCBoID0gaC5zaXplXG5cbmxldCBpbnNlcnRfYWxsX2J1Y2tldHMgaW5kZXhmdW4gaW5wbGFjZSBvZGF0YSBuZGF0YSA9XG4gIGxldCBuc2l6ZSA9IEFycmF5Lmxlbmd0aCBuZGF0YSBpblxuICBsZXQgbmRhdGFfdGFpbCA9IEFycmF5Lm1ha2UgbnNpemUgRW1wdHkgaW5cbiAgbGV0IHJlYyBpbnNlcnRfYnVja2V0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+ICgpXG4gICAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IGFzIGNlbGwgLT5cbiAgICAgICAgbGV0IGNlbGwgPVxuICAgICAgICAgIGlmIGlucGxhY2UgdGhlbiBjZWxsXG4gICAgICAgICAgZWxzZSBDb25zIHtrZXk7IGRhdGE7IG5leHQgPSBFbXB0eX1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5pZHggPSBpbmRleGZ1biBrZXkgaW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggbmRhdGFfdGFpbC4obmlkeCkgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IG5kYXRhLihuaWR4KSA8LSBjZWxsO1xuICAgICAgICB8IENvbnMgdGFpbCAtPiB0YWlsLm5leHQgPC0gY2VsbDtcbiAgICAgICAgZW5kO1xuICAgICAgICBuZGF0YV90YWlsLihuaWR4KSA8LSBjZWxsO1xuICAgICAgICBpbnNlcnRfYnVja2V0IG5leHRcbiAgaW5cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBvZGF0YSAtIDEgZG9cbiAgICBpbnNlcnRfYnVja2V0IG9kYXRhLihpKVxuICBkb25lO1xuICBpZiBpbnBsYWNlIHRoZW5cbiAgICBmb3IgaSA9IDAgdG8gbnNpemUgLSAxIGRvXG4gICAgICBtYXRjaCBuZGF0YV90YWlsLihpKSB3aXRoXG4gICAgICB8IEVtcHR5IC0+ICgpXG4gICAgICB8IENvbnMgdGFpbCAtPiB0YWlsLm5leHQgPC0gRW1wdHlcbiAgICBkb25lXG5cbmxldCByZXNpemUgaW5kZXhmdW4gaCA9XG4gIGxldCBvZGF0YSA9IGguZGF0YSBpblxuICBsZXQgb3NpemUgPSBBcnJheS5sZW5ndGggb2RhdGEgaW5cbiAgbGV0IG5zaXplID0gb3NpemUgKiAyIGluXG4gIGlmIG5zaXplIDwgU3lzLm1heF9hcnJheV9sZW5ndGggdGhlbiBiZWdpblxuICAgIGxldCBuZGF0YSA9IEFycmF5Lm1ha2UgbnNpemUgRW1wdHkgaW5cbiAgICBsZXQgaW5wbGFjZSA9IG5vdCAob25nb2luZ190cmF2ZXJzYWwgaCkgaW5cbiAgICBoLmRhdGEgPC0gbmRhdGE7ICAgICAgICAgICgqIHNvIHRoYXQgaW5kZXhmdW4gc2VlcyB0aGUgbmV3IGJ1Y2tldCBjb3VudCAqKVxuICAgIGluc2VydF9hbGxfYnVja2V0cyAoaW5kZXhmdW4gaCkgaW5wbGFjZSBvZGF0YSBuZGF0YVxuICBlbmRcblxubGV0IGl0ZXIgZiBoID1cbiAgbGV0IHJlYyBkb19idWNrZXQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT5cbiAgICAgICAgKClcbiAgICB8IENvbnN7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICBmIGtleSBkYXRhOyBkb19idWNrZXQgbmV4dCBpblxuICBsZXQgb2xkX3RyYXYgPSBvbmdvaW5nX3RyYXZlcnNhbCBoIGluXG4gIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgdHJ5XG4gICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICBkb19idWNrZXQgZC4oaSlcbiAgICBkb25lO1xuICAgIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgd2l0aCBleG4gd2hlbiBub3Qgb2xkX3RyYXYgLT5cbiAgICBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gICAgcmFpc2UgZXhuXG5cbmxldCByZWMgZmlsdGVyX21hcF9pbnBsYWNlX2J1Y2tldCBmIGggaSBwcmVjID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggcHJlYyB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGguZGF0YS4oaSkgPC0gRW1wdHlcbiAgICAgIHwgQ29ucyBjIC0+IGMubmV4dCA8LSBFbXB0eVxuICAgICAgZW5kXG4gIHwgKENvbnMgKHtrZXk7IGRhdGE7IG5leHR9IGFzIGMpKSBhcyBzbG90IC0+XG4gICAgICBiZWdpbiBtYXRjaCBmIGtleSBkYXRhIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICAgIGZpbHRlcl9tYXBfaW5wbGFjZV9idWNrZXQgZiBoIGkgcHJlYyBuZXh0XG4gICAgICB8IFNvbWUgZGF0YSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gaC5kYXRhLihpKSA8LSBzbG90XG4gICAgICAgICAgfCBDb25zIGMgLT4gYy5uZXh0IDwtIHNsb3RcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICAgYy5kYXRhIDwtIGRhdGE7XG4gICAgICAgICAgZmlsdGVyX21hcF9pbnBsYWNlX2J1Y2tldCBmIGggaSBzbG90IG5leHRcbiAgICAgIGVuZFxuXG5sZXQgZmlsdGVyX21hcF9pbnBsYWNlIGYgaCA9XG4gIGxldCBkID0gaC5kYXRhIGluXG4gIGxldCBvbGRfdHJhdiA9IG9uZ29pbmdfdHJhdmVyc2FsIGggaW5cbiAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICB0cnlcbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICBmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IGYgaCBpIEVtcHR5IGguZGF0YS4oaSlcbiAgICBkb25lO1xuICAgIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaFxuICB3aXRoIGV4biB3aGVuIG5vdCBvbGRfdHJhdiAtPlxuICAgIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgICByYWlzZSBleG5cblxubGV0IGZvbGQgZiBoIGluaXQgPVxuICBsZXQgcmVjIGRvX2J1Y2tldCBiIGFjY3UgPVxuICAgIG1hdGNoIGIgd2l0aFxuICAgICAgRW1wdHkgLT5cbiAgICAgICAgYWNjdVxuICAgIHwgQ29uc3trZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgIGRvX2J1Y2tldCBuZXh0IChmIGtleSBkYXRhIGFjY3UpIGluXG4gIGxldCBvbGRfdHJhdiA9IG9uZ29pbmdfdHJhdmVyc2FsIGggaW5cbiAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICB0cnlcbiAgICBsZXQgZCA9IGguZGF0YSBpblxuICAgIGxldCBhY2N1ID0gcmVmIGluaXQgaW5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICBhY2N1IDo9IGRvX2J1Y2tldCBkLihpKSAhYWNjdVxuICAgIGRvbmU7XG4gICAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICAgICFhY2N1XG4gIHdpdGggZXhuIHdoZW4gbm90IG9sZF90cmF2IC0+XG4gICAgZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICAgIHJhaXNlIGV4blxuXG50eXBlIHN0YXRpc3RpY3MgPSB7XG4gIG51bV9iaW5kaW5nczogaW50O1xuICBudW1fYnVja2V0czogaW50O1xuICBtYXhfYnVja2V0X2xlbmd0aDogaW50O1xuICBidWNrZXRfaGlzdG9ncmFtOiBpbnQgYXJyYXlcbn1cblxubGV0IHJlYyBidWNrZXRfbGVuZ3RoIGFjY3UgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGFjY3VcbiAgfCBDb25ze25leHR9IC0+IGJ1Y2tldF9sZW5ndGggKGFjY3UgKyAxKSBuZXh0XG5cbmxldCBzdGF0cyBoID1cbiAgbGV0IG1ibCA9XG4gICAgQXJyYXkuZm9sZF9sZWZ0IChmdW4gbSBiIC0+IEludC5tYXggbSAoYnVja2V0X2xlbmd0aCAwIGIpKSAwIGguZGF0YSBpblxuICBsZXQgaGlzdG8gPSBBcnJheS5tYWtlIChtYmwgKyAxKSAwIGluXG4gIEFycmF5Lml0ZXJcbiAgICAoZnVuIGIgLT5cbiAgICAgIGxldCBsID0gYnVja2V0X2xlbmd0aCAwIGIgaW5cbiAgICAgIGhpc3RvLihsKSA8LSBoaXN0by4obCkgKyAxKVxuICAgIGguZGF0YTtcbiAgeyBudW1fYmluZGluZ3MgPSBoLnNpemU7XG4gICAgbnVtX2J1Y2tldHMgPSBBcnJheS5sZW5ndGggaC5kYXRhO1xuICAgIG1heF9idWNrZXRfbGVuZ3RoID0gbWJsO1xuICAgIGJ1Y2tldF9oaXN0b2dyYW0gPSBoaXN0byB9XG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgdGJsID1cbiAgKCogY2FwdHVyZSBjdXJyZW50IGFycmF5LCBzbyB0aGF0IGV2ZW4gaWYgdGhlIHRhYmxlIGlzIHJlc2l6ZWQgd2VcbiAgICAga2VlcCBpdGVyYXRpbmcgb24gdGhlIHNhbWUgYXJyYXkgKilcbiAgbGV0IHRibF9kYXRhID0gdGJsLmRhdGEgaW5cbiAgKCogc3RhdGU6IGluZGV4ICogbmV4dCBidWNrZXQgdG8gdHJhdmVyc2UgKilcbiAgbGV0IHJlYyBhdXggaSBidWNrICgpID0gbWF0Y2ggYnVjayB3aXRoXG4gICAgfCBFbXB0eSAtPlxuICAgICAgICBpZiBpID0gQXJyYXkubGVuZ3RoIHRibF9kYXRhXG4gICAgICAgIHRoZW4gU2VxLk5pbFxuICAgICAgICBlbHNlIGF1eChpKzEpIHRibF9kYXRhLihpKSAoKVxuICAgIHwgQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICBTZXEuQ29ucyAoKGtleSwgZGF0YSksIGF1eCBpIG5leHQpXG4gIGluXG4gIGF1eCAwIEVtcHR5XG5cbmxldCB0b19zZXFfa2V5cyBtID0gU2VxLm1hcCBmc3QgKHRvX3NlcSBtKVxuXG5sZXQgdG9fc2VxX3ZhbHVlcyBtID0gU2VxLm1hcCBzbmQgKHRvX3NlcSBtKVxuXG4oKiBGdW5jdG9yaWFsIGludGVyZmFjZSAqKVxuXG5tb2R1bGUgdHlwZSBIYXNoZWRUeXBlID1cbiAgc2lnXG4gICAgdHlwZSB0XG4gICAgdmFsIGVxdWFsOiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBoYXNoOiB0IC0+IGludFxuICBlbmRcblxubW9kdWxlIHR5cGUgU2VlZGVkSGFzaGVkVHlwZSA9XG4gIHNpZ1xuICAgIHR5cGUgdFxuICAgIHZhbCBlcXVhbDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgaGFzaDogaW50IC0+IHQgLT4gaW50XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTID1cbiAgc2lnXG4gICAgdHlwZSBrZXlcbiAgICB0eXBlICEnYSB0XG4gICAgdmFsIGNyZWF0ZTogaW50IC0+ICdhIHRcbiAgICB2YWwgY2xlYXIgOiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgcmVzZXQgOiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgY29weTogJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGFkZDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCByZW1vdmU6ICdhIHQgLT4ga2V5IC0+IHVuaXRcbiAgICB2YWwgZmluZDogJ2EgdCAtPiBrZXkgLT4gJ2FcbiAgICB2YWwgZmluZF9vcHQ6ICdhIHQgLT4ga2V5IC0+ICdhIG9wdGlvblxuICAgIHZhbCBmaW5kX2FsbDogJ2EgdCAtPiBrZXkgLT4gJ2EgbGlzdFxuICAgIHZhbCByZXBsYWNlIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCBtZW0gOiAnYSB0IC0+IGtleSAtPiBib29sXG4gICAgdmFsIGl0ZXI6IChrZXkgLT4gJ2EgLT4gdW5pdCkgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZpbHRlcl9tYXBfaW5wbGFjZTogKGtleSAtPiAnYSAtPiAnYSBvcHRpb24pIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmb2xkOiAoa2V5IC0+ICdhIC0+ICdiIC0+ICdiKSAtPiAnYSB0IC0+ICdiIC0+ICdiXG4gICAgdmFsIGxlbmd0aDogJ2EgdCAtPiBpbnRcbiAgICB2YWwgc3RhdHM6ICdhIHQgLT4gc3RhdGlzdGljc1xuICAgIHZhbCB0b19zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX2tleXMgOiBfIHQgLT4ga2V5IFNlcS50XG4gICAgdmFsIHRvX3NlcV92YWx1ZXMgOiAnYSB0IC0+ICdhIFNlcS50XG4gICAgdmFsIGFkZF9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICAgIHZhbCByZXBsYWNlX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gICAgdmFsIG9mX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdFxuICBlbmRcblxubW9kdWxlIHR5cGUgU2VlZGVkUyA9XG4gIHNpZ1xuICAgIHR5cGUga2V5XG4gICAgdHlwZSAhJ2EgdFxuICAgIHZhbCBjcmVhdGUgOiA/cmFuZG9tOmJvb2wgLT4gaW50IC0+ICdhIHRcbiAgICB2YWwgY2xlYXIgOiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgcmVzZXQgOiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgY29weSA6ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBhZGQgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gICAgdmFsIHJlbW92ZSA6ICdhIHQgLT4ga2V5IC0+IHVuaXRcbiAgICB2YWwgZmluZCA6ICdhIHQgLT4ga2V5IC0+ICdhXG4gICAgdmFsIGZpbmRfb3B0OiAnYSB0IC0+IGtleSAtPiAnYSBvcHRpb25cbiAgICB2YWwgZmluZF9hbGwgOiAnYSB0IC0+IGtleSAtPiAnYSBsaXN0XG4gICAgdmFsIHJlcGxhY2UgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gICAgdmFsIG1lbSA6ICdhIHQgLT4ga2V5IC0+IGJvb2xcbiAgICB2YWwgaXRlciA6IChrZXkgLT4gJ2EgLT4gdW5pdCkgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZpbHRlcl9tYXBfaW5wbGFjZTogKGtleSAtPiAnYSAtPiAnYSBvcHRpb24pIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmb2xkIDogKGtleSAtPiAnYSAtPiAnYiAtPiAnYikgLT4gJ2EgdCAtPiAnYiAtPiAnYlxuICAgIHZhbCBsZW5ndGggOiAnYSB0IC0+IGludFxuICAgIHZhbCBzdGF0czogJ2EgdCAtPiBzdGF0aXN0aWNzXG4gICAgdmFsIHRvX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCB0b19zZXFfa2V5cyA6IF8gdCAtPiBrZXkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX3ZhbHVlcyA6ICdhIHQgLT4gJ2EgU2VxLnRcbiAgICB2YWwgYWRkX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gICAgdmFsIHJlcGxhY2Vfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgICB2YWwgb2Zfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0XG4gIGVuZFxuXG5tb2R1bGUgTWFrZVNlZWRlZChIOiBTZWVkZWRIYXNoZWRUeXBlKTogKFNlZWRlZFMgd2l0aCB0eXBlIGtleSA9IEgudCkgPVxuICBzdHJ1Y3RcbiAgICB0eXBlIGtleSA9IEgudFxuICAgIHR5cGUgJ2EgaGFzaHRibCA9IChrZXksICdhKSB0XG4gICAgdHlwZSAnYSB0ID0gJ2EgaGFzaHRibFxuICAgIGxldCBjcmVhdGUgPSBjcmVhdGVcbiAgICBsZXQgY2xlYXIgPSBjbGVhclxuICAgIGxldCByZXNldCA9IHJlc2V0XG4gICAgbGV0IGNvcHkgPSBjb3B5XG5cbiAgICBsZXQga2V5X2luZGV4IGgga2V5ID1cbiAgICAgIChILmhhc2ggaC5zZWVkIGtleSkgbGFuZCAoQXJyYXkubGVuZ3RoIGguZGF0YSAtIDEpXG5cbiAgICBsZXQgYWRkIGgga2V5IGRhdGEgPVxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgICAgIGxldCBidWNrZXQgPSBDb25ze2tleTsgZGF0YTsgbmV4dD1oLmRhdGEuKGkpfSBpblxuICAgICAgaC5kYXRhLihpKSA8LSBidWNrZXQ7XG4gICAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUga2V5X2luZGV4IGhcblxuICAgIGxldCByZWMgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IHByZWMgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgICgpXG4gICAgICB8IChDb25zIHtrZXk9azsgbmV4dH0pIGFzIGMgLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGsga2V5XG4gICAgICAgICAgdGhlbiBiZWdpblxuICAgICAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgICAgICBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgICAgIHwgRW1wdHkgLT4gaC5kYXRhLihpKSA8LSBuZXh0XG4gICAgICAgICAgICB8IENvbnMgYyAtPiBjLm5leHQgPC0gbmV4dFxuICAgICAgICAgIGVuZFxuICAgICAgICAgIGVsc2UgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IGMgbmV4dFxuXG4gICAgbGV0IHJlbW92ZSBoIGtleSA9XG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICAgICAgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IEVtcHR5IGguZGF0YS4oaSlcblxuICAgIGxldCByZWMgZmluZF9yZWMga2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGtleSBrIHRoZW4gZGF0YSBlbHNlIGZpbmRfcmVjIGtleSBuZXh0XG5cbiAgICBsZXQgZmluZCBoIGtleSA9XG4gICAgICBtYXRjaCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSkgd2l0aFxuICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgQ29uc3trZXk9azE7IGRhdGE9ZDE7IG5leHQ9bmV4dDF9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazEgdGhlbiBkMSBlbHNlXG4gICAgICAgICAgbWF0Y2ggbmV4dDEgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgICAgfCBDb25ze2tleT1rMjsgZGF0YT1kMjsgbmV4dD1uZXh0Mn0gLT5cbiAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazIgdGhlbiBkMiBlbHNlXG4gICAgICAgICAgICAgIG1hdGNoIG5leHQyIHdpdGhcbiAgICAgICAgICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgICAgICAgfCBDb25ze2tleT1rMzsgZGF0YT1kMzsgbmV4dD1uZXh0M30gLT5cbiAgICAgICAgICAgICAgICAgIGlmIEguZXF1YWwga2V5IGszIHRoZW4gZDMgZWxzZSBmaW5kX3JlYyBrZXkgbmV4dDNcblxuICAgIGxldCByZWMgZmluZF9yZWNfb3B0IGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsgdGhlbiBTb21lIGRhdGEgZWxzZSBmaW5kX3JlY19vcHQga2V5IG5leHRcblxuICAgIGxldCBmaW5kX29wdCBoIGtleSA9XG4gICAgICBtYXRjaCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSkgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICB8IENvbnN7a2V5PWsxOyBkYXRhPWQxOyBuZXh0PW5leHQxfSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsxIHRoZW4gU29tZSBkMSBlbHNlXG4gICAgICAgICAgbWF0Y2ggbmV4dDEgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgICAgIHwgQ29uc3trZXk9azI7IGRhdGE9ZDI7IG5leHQ9bmV4dDJ9IC0+XG4gICAgICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsyIHRoZW4gU29tZSBkMiBlbHNlXG4gICAgICAgICAgICAgIG1hdGNoIG5leHQyIHdpdGhcbiAgICAgICAgICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICAgICAgICAgIHwgQ29uc3trZXk9azM7IGRhdGE9ZDM7IG5leHQ9bmV4dDN9IC0+XG4gICAgICAgICAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMyB0aGVuIFNvbWUgZDMgZWxzZSBmaW5kX3JlY19vcHQga2V5IG5leHQzXG5cbiAgICBsZXQgZmluZF9hbGwgaCBrZXkgPVxuICAgICAgbGV0IHJlYyBmaW5kX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgW11cbiAgICAgIHwgQ29uc3trZXk9azsgZGF0YT1kOyBuZXh0fSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwgayBrZXlcbiAgICAgICAgICB0aGVuIGQgOjogZmluZF9pbl9idWNrZXQgbmV4dFxuICAgICAgICAgIGVsc2UgZmluZF9pbl9idWNrZXQgbmV4dCBpblxuICAgICAgZmluZF9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpXG5cbiAgICBsZXQgcmVjIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICB0cnVlXG4gICAgICB8IENvbnMgKHtrZXk9azsgbmV4dH0gYXMgc2xvdCkgLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGsga2V5XG4gICAgICAgICAgdGhlbiAoc2xvdC5rZXkgPC0ga2V5OyBzbG90LmRhdGEgPC0gZGF0YTsgZmFsc2UpXG4gICAgICAgICAgZWxzZSByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSBuZXh0XG5cbiAgICBsZXQgcmVwbGFjZSBoIGtleSBkYXRhID1cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gICAgICBsZXQgbCA9IGguZGF0YS4oaSkgaW5cbiAgICAgIGlmIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhIGwgdGhlbiBiZWdpblxuICAgICAgICBoLmRhdGEuKGkpIDwtIENvbnN7a2V5OyBkYXRhOyBuZXh0PWx9O1xuICAgICAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICAgICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuICAgICAgZW5kXG5cbiAgICBsZXQgbWVtIGgga2V5ID1cbiAgICAgIGxldCByZWMgbWVtX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIHwgQ29uc3trZXk9azsgbmV4dH0gLT5cbiAgICAgICAgICBILmVxdWFsIGsga2V5IHx8IG1lbV9pbl9idWNrZXQgbmV4dCBpblxuICAgICAgbWVtX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSlcblxuICAgIGxldCBhZGRfc2VxIHRibCBpID1cbiAgICAgIFNlcS5pdGVyIChmdW4gKGssdikgLT4gYWRkIHRibCBrIHYpIGlcblxuICAgIGxldCByZXBsYWNlX3NlcSB0YmwgaSA9XG4gICAgICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IHJlcGxhY2UgdGJsIGsgdikgaVxuXG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG5cbiAgICBsZXQgaXRlciA9IGl0ZXJcbiAgICBsZXQgZmlsdGVyX21hcF9pbnBsYWNlID0gZmlsdGVyX21hcF9pbnBsYWNlXG4gICAgbGV0IGZvbGQgPSBmb2xkXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBzdGF0cyA9IHN0YXRzXG4gICAgbGV0IHRvX3NlcSA9IHRvX3NlcVxuICAgIGxldCB0b19zZXFfa2V5cyA9IHRvX3NlcV9rZXlzXG4gICAgbGV0IHRvX3NlcV92YWx1ZXMgPSB0b19zZXFfdmFsdWVzXG4gIGVuZFxuXG5tb2R1bGUgTWFrZShIOiBIYXNoZWRUeXBlKTogKFMgd2l0aCB0eXBlIGtleSA9IEgudCkgPVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VTZWVkZWQoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEgudFxuICAgICAgICBsZXQgZXF1YWwgPSBILmVxdWFsXG4gICAgICAgIGxldCBoYXNoIChfc2VlZDogaW50KSB4ID0gSC5oYXNoIHhcbiAgICAgIGVuZClcbiAgICBsZXQgY3JlYXRlIHN6ID0gY3JlYXRlIH5yYW5kb206ZmFsc2Ugc3pcbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcbiAgZW5kXG5cbigqIFBvbHltb3JwaGljIGhhc2ggZnVuY3Rpb24tYmFzZWQgdGFibGVzICopXG4oKiBDb2RlIGluY2x1ZGVkIGJlbG93IHRoZSBmdW5jdG9yaWFsIGludGVyZmFjZSB0byBndWFyZCBhZ2FpbnN0IGFjY2lkZW50YWxcbiAgIHVzZSAtIHNlZSAjMjIwMiAqKVxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6XG4gIGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGludCA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cblxubGV0IGhhc2ggeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCAwIHhcbmxldCBoYXNoX3BhcmFtIG4xIG4yIHggPSBzZWVkZWRfaGFzaF9wYXJhbSBuMSBuMiAwIHhcbmxldCBzZWVkZWRfaGFzaCBzZWVkIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgc2VlZCB4XG5cbmxldCBrZXlfaW5kZXggaCBrZXkgPVxuICBpZiBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPj0gNFxuICB0aGVuIChzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgaC5zZWVkIGtleSkgbGFuZCAoQXJyYXkubGVuZ3RoIGguZGF0YSAtIDEpXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJIYXNodGJsOiB1bnN1cHBvcnRlZCBoYXNoIHRhYmxlIGZvcm1hdFwiXG5cbmxldCBhZGQgaCBrZXkgZGF0YSA9XG4gIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gIGxldCBidWNrZXQgPSBDb25ze2tleTsgZGF0YTsgbmV4dD1oLmRhdGEuKGkpfSBpblxuICBoLmRhdGEuKGkpIDwtIGJ1Y2tldDtcbiAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUga2V5X2luZGV4IGhcblxubGV0IHJlYyByZW1vdmVfYnVja2V0IGggaSBrZXkgcHJlYyA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgICgpXG4gIHwgKENvbnMge2tleT1rOyBuZXh0fSkgYXMgYyAtPlxuICAgICAgaWYgY29tcGFyZSBrIGtleSA9IDBcbiAgICAgIHRoZW4gYmVnaW5cbiAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGguZGF0YS4oaSkgPC0gbmV4dFxuICAgICAgICB8IENvbnMgYyAtPiBjLm5leHQgPC0gbmV4dFxuICAgICAgZW5kXG4gICAgICBlbHNlIHJlbW92ZV9idWNrZXQgaCBpIGtleSBjIG5leHRcblxubGV0IHJlbW92ZSBoIGtleSA9XG4gIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gIHJlbW92ZV9idWNrZXQgaCBpIGtleSBFbXB0eSBoLmRhdGEuKGkpXG5cbmxldCByZWMgZmluZF9yZWMga2V5ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgIGlmIGNvbXBhcmUga2V5IGsgPSAwIHRoZW4gZGF0YSBlbHNlIGZpbmRfcmVjIGtleSBuZXh0XG5cbmxldCBmaW5kIGgga2V5ID1cbiAgbWF0Y2ggaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpIHdpdGhcbiAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCBDb25ze2tleT1rMTsgZGF0YT1kMTsgbmV4dD1uZXh0MX0gLT5cbiAgICAgIGlmIGNvbXBhcmUga2V5IGsxID0gMCB0aGVuIGQxIGVsc2VcbiAgICAgIG1hdGNoIG5leHQxIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IENvbnN7a2V5PWsyOyBkYXRhPWQyOyBuZXh0PW5leHQyfSAtPlxuICAgICAgICAgIGlmIGNvbXBhcmUga2V5IGsyID0gMCB0aGVuIGQyIGVsc2VcbiAgICAgICAgICBtYXRjaCBuZXh0MiB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgICB8IENvbnN7a2V5PWszOyBkYXRhPWQzOyBuZXh0PW5leHQzfSAtPlxuICAgICAgICAgICAgICBpZiBjb21wYXJlIGtleSBrMyA9IDAgdGhlbiBkMyBlbHNlIGZpbmRfcmVjIGtleSBuZXh0M1xuXG5sZXQgcmVjIGZpbmRfcmVjX29wdCBrZXkgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICBOb25lXG4gIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgIGlmIGNvbXBhcmUga2V5IGsgPSAwIHRoZW4gU29tZSBkYXRhIGVsc2UgZmluZF9yZWNfb3B0IGtleSBuZXh0XG5cbmxldCBmaW5kX29wdCBoIGtleSA9XG4gIG1hdGNoIGguZGF0YS4oa2V5X2luZGV4IGgga2V5KSB3aXRoXG4gIHwgRW1wdHkgLT4gTm9uZVxuICB8IENvbnN7a2V5PWsxOyBkYXRhPWQxOyBuZXh0PW5leHQxfSAtPlxuICAgICAgaWYgY29tcGFyZSBrZXkgazEgPSAwIHRoZW4gU29tZSBkMSBlbHNlXG4gICAgICBtYXRjaCBuZXh0MSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgQ29uc3trZXk9azI7IGRhdGE9ZDI7IG5leHQ9bmV4dDJ9IC0+XG4gICAgICAgICAgaWYgY29tcGFyZSBrZXkgazIgPSAwIHRoZW4gU29tZSBkMiBlbHNlXG4gICAgICAgICAgbWF0Y2ggbmV4dDIgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgICAgIHwgQ29uc3trZXk9azM7IGRhdGE9ZDM7IG5leHQ9bmV4dDN9IC0+XG4gICAgICAgICAgICAgIGlmIGNvbXBhcmUga2V5IGszID0gMCB0aGVuIFNvbWUgZDMgZWxzZSBmaW5kX3JlY19vcHQga2V5IG5leHQzXG5cbmxldCBmaW5kX2FsbCBoIGtleSA9XG4gIGxldCByZWMgZmluZF9pbl9idWNrZXQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICBbXVxuICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICBpZiBjb21wYXJlIGsga2V5ID0gMFxuICAgICAgdGhlbiBkYXRhIDo6IGZpbmRfaW5fYnVja2V0IG5leHRcbiAgICAgIGVsc2UgZmluZF9pbl9idWNrZXQgbmV4dCBpblxuICBmaW5kX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSlcblxubGV0IHJlYyByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIHRydWVcbiAgfCBDb25zICh7a2V5PWs7IG5leHR9IGFzIHNsb3QpIC0+XG4gICAgICBpZiBjb21wYXJlIGsga2V5ID0gMFxuICAgICAgdGhlbiAoc2xvdC5rZXkgPC0ga2V5OyBzbG90LmRhdGEgPC0gZGF0YTsgZmFsc2UpXG4gICAgICBlbHNlIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhIG5leHRcblxubGV0IHJlcGxhY2UgaCBrZXkgZGF0YSA9XG4gIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gIGxldCBsID0gaC5kYXRhLihpKSBpblxuICBpZiByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSBsIHRoZW4gYmVnaW5cbiAgICBoLmRhdGEuKGkpIDwtIENvbnN7a2V5OyBkYXRhOyBuZXh0PWx9O1xuICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUga2V5X2luZGV4IGhcbiAgZW5kXG5cbmxldCBtZW0gaCBrZXkgPVxuICBsZXQgcmVjIG1lbV9pbl9idWNrZXQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICBmYWxzZVxuICB8IENvbnN7a2V5PWs7IG5leHR9IC0+XG4gICAgICBjb21wYXJlIGsga2V5ID0gMCB8fCBtZW1faW5fYnVja2V0IG5leHQgaW5cbiAgbWVtX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSlcblxubGV0IGFkZF9zZXEgdGJsIGkgPVxuICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IGFkZCB0YmwgayB2KSBpXG5cbmxldCByZXBsYWNlX3NlcSB0YmwgaSA9XG4gIFNlcS5pdGVyIChmdW4gKGssdikgLT4gcmVwbGFjZSB0YmwgayB2KSBpXG5cbmxldCBvZl9zZXEgaSA9XG4gIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gIHRibFxuXG5sZXQgcmVidWlsZCA/KHJhbmRvbSA9ICFyYW5kb21pemVkKSBoID1cbiAgbGV0IHMgPSBwb3dlcl8yX2Fib3ZlIDE2IChBcnJheS5sZW5ndGggaC5kYXRhKSBpblxuICBsZXQgc2VlZCA9XG4gICAgaWYgcmFuZG9tIHRoZW4gUmFuZG9tLlN0YXRlLmJpdHMgKExhenkuZm9yY2UgcHJuZylcbiAgICBlbHNlIGlmIE9iai5zaXplIChPYmoucmVwciBoKSA+PSA0IHRoZW4gaC5zZWVkXG4gICAgZWxzZSAwIGluXG4gIGxldCBoJyA9IHtcbiAgICBzaXplID0gaC5zaXplO1xuICAgIGRhdGEgPSBBcnJheS5tYWtlIHMgRW1wdHk7XG4gICAgc2VlZCA9IHNlZWQ7XG4gICAgaW5pdGlhbF9zaXplID0gaWYgT2JqLnNpemUgKE9iai5yZXByIGgpID49IDQgdGhlbiBoLmluaXRpYWxfc2l6ZSBlbHNlIHNcbiAgfSBpblxuICBpbnNlcnRfYWxsX2J1Y2tldHMgKGtleV9pbmRleCBoJykgZmFsc2UgaC5kYXRhIGgnLmRhdGE7XG4gIGgnXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKiBXZWFrIGFycmF5IG9wZXJhdGlvbnMgKilcblxudHlwZSAhJ2EgdFxuXG5leHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gJ2EgdCA9IFwiY2FtbF93ZWFrX2NyZWF0ZVwiXG5cbmxldCBjcmVhdGUgbCA9XG4gIGlmIG5vdCAoMCA8PSBsICYmIGwgPD0gT2JqLkVwaGVtZXJvbi5tYXhfZXBoZV9sZW5ndGgpIHRoZW5cbiAgICBpbnZhbGlkX2FyZyhcIldlYWsuY3JlYXRlXCIpO1xuICBjcmVhdGUgbFxuXG4oKiogbnVtYmVyIG9mIGFkZGl0aW9uYWwgdmFsdWVzIGluIGEgd2VhayBwb2ludGVyICopXG5sZXQgYWRkaXRpb25hbF92YWx1ZXMgPSAyXG5cbmxldCBsZW5ndGggeCA9IE9iai5zaXplKE9iai5yZXByIHgpIC0gYWRkaXRpb25hbF92YWx1ZXNcblxubGV0IHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBtc2cgPVxuICBpZiBub3QgKDAgPD0gbyAmJiBvIDwgbGVuZ3RoIGUpIHRoZW5cbiAgICBpbnZhbGlkX2FyZyhtc2cpXG5cbmV4dGVybmFsIHNldCcgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2VwaGVfc2V0X2tleVwiXG5leHRlcm5hbCB1bnNldCA6ICdhIHQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfZXBoZV91bnNldF9rZXlcIlxubGV0IHNldCBlIG8geCA9XG4gIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIldlYWsuc2V0XCI7XG4gIG1hdGNoIHggd2l0aFxuICB8IE5vbmUgLT4gdW5zZXQgZSBvXG4gIHwgU29tZSB4IC0+IHNldCcgZSBvIHhcblxuZXh0ZXJuYWwgZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2Egb3B0aW9uID0gXCJjYW1sX3dlYWtfZ2V0XCJcbmxldCBnZXQgZSBvID1cbiAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiV2Vhay5nZXRcIjtcbiAgZ2V0IGUgb1xuXG5leHRlcm5hbCBnZXRfY29weSA6ICdhIHQgLT4gaW50IC0+ICdhIG9wdGlvbiA9IFwiY2FtbF93ZWFrX2dldF9jb3B5XCJcbmxldCBnZXRfY29weSBlIG8gPVxuICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJXZWFrLmdldF9jb3B5XCI7XG4gIGdldF9jb3B5IGUgb1xuXG5leHRlcm5hbCBjaGVjayA6ICdhIHQgLT4gaW50IC0+IGJvb2wgPSBcImNhbWxfd2Vha19jaGVja1wiXG5sZXQgY2hlY2sgZSBvID1cbiAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiV2Vhay5jaGVja1wiO1xuICBjaGVjayBlIG9cblxuZXh0ZXJuYWwgYmxpdCA6ICdhIHQgLT4gaW50IC0+ICdhIHQgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX3dlYWtfYmxpdFwiXG5cbigqIGJsaXQ6IHNyYyBzcmNvZmYgZHN0IGRzdG9mZiBsZW4gKilcbmxldCBibGl0IGUxIG8xIGUyIG8yIGwgPVxuICBpZiBsIDwgMCB8fCBvMSA8IDAgfHwgbzEgPiBsZW5ndGggZTEgLSBsXG4gICAgIHx8IG8yIDwgMCB8fCBvMiA+IGxlbmd0aCBlMiAtIGxcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIldlYWsuYmxpdFwiXG4gIGVsc2UgaWYgbCA8PiAwIHRoZW4gYmxpdCBlMSBvMSBlMiBvMiBsXG5cbmxldCBmaWxsIGFyIG9mcyBsZW4geCA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggYXIgLSBsZW5cbiAgdGhlbiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIldlYWsuZmlsbFwiKVxuICBlbHNlIGJlZ2luXG4gICAgZm9yIGkgPSBvZnMgdG8gKG9mcyArIGxlbiAtIDEpIGRvXG4gICAgICBzZXQgYXIgaSB4XG4gICAgZG9uZVxuICBlbmRcblxuXG4oKiogV2VhayBoYXNoIHRhYmxlcyAqKVxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgZGF0YVxuICB0eXBlIHRcbiAgdmFsIGNyZWF0ZSA6IGludCAtPiB0XG4gIHZhbCBjbGVhciA6IHQgLT4gdW5pdFxuICB2YWwgbWVyZ2UgOiB0IC0+IGRhdGEgLT4gZGF0YVxuICB2YWwgYWRkIDogdCAtPiBkYXRhIC0+IHVuaXRcbiAgdmFsIHJlbW92ZSA6IHQgLT4gZGF0YSAtPiB1bml0XG4gIHZhbCBmaW5kIDogdCAtPiBkYXRhIC0+IGRhdGFcbiAgdmFsIGZpbmRfb3B0IDogdCAtPiBkYXRhIC0+IGRhdGEgb3B0aW9uXG4gIHZhbCBmaW5kX2FsbCA6IHQgLT4gZGF0YSAtPiBkYXRhIGxpc3RcbiAgdmFsIG1lbSA6IHQgLT4gZGF0YSAtPiBib29sXG4gIHZhbCBpdGVyIDogKGRhdGEgLT4gdW5pdCkgLT4gdCAtPiB1bml0XG4gIHZhbCBmb2xkIDogKGRhdGEgLT4gJ2EgLT4gJ2EpIC0+IHQgLT4gJ2EgLT4gJ2FcbiAgdmFsIGNvdW50IDogdCAtPiBpbnRcbiAgdmFsIHN0YXRzIDogdCAtPiBpbnQgKiBpbnQgKiBpbnQgKiBpbnQgKiBpbnQgKiBpbnRcbmVuZFxuXG5tb2R1bGUgTWFrZSAoSCA6IEhhc2h0YmwuSGFzaGVkVHlwZSkgOiAoUyB3aXRoIHR5cGUgZGF0YSA9IEgudCkgPSBzdHJ1Y3RcblxuICB0eXBlICdhIHdlYWtfdCA9ICdhIHRcbiAgbGV0IHdlYWtfY3JlYXRlID0gY3JlYXRlXG4gIGxldCBlbXB0eWJ1Y2tldCA9IHdlYWtfY3JlYXRlIDBcblxuICB0eXBlIGRhdGEgPSBILnRcblxuICB0eXBlIHQgPSB7XG4gICAgbXV0YWJsZSB0YWJsZSA6IGRhdGEgd2Vha190IGFycmF5O1xuICAgIG11dGFibGUgaGFzaGVzIDogaW50IGFycmF5IGFycmF5O1xuICAgIG11dGFibGUgbGltaXQgOiBpbnQ7ICAgICAgICAgICAgICAgKCogYnVja2V0IHNpemUgbGltaXQgKilcbiAgICBtdXRhYmxlIG92ZXJzaXplIDogaW50OyAgICAgICAgICAgICgqIG51bWJlciBvZiBvdmVyc2l6ZSBidWNrZXRzICopXG4gICAgbXV0YWJsZSByb3ZlciA6IGludDsgICAgICAgICAgICAgICAoKiBmb3IgaW50ZXJuYWwgYm9va2tlZXBpbmcgKilcbiAgfVxuXG4gIGxldCBnZXRfaW5kZXggdCBoID0gKGggbGFuZCBtYXhfaW50KSBtb2QgKEFycmF5Lmxlbmd0aCB0LnRhYmxlKVxuXG4gIGxldCBsaW1pdCA9IDdcbiAgbGV0IG92ZXJfbGltaXQgPSAyXG5cbiAgbGV0IGNyZWF0ZSBzeiA9XG4gICAgbGV0IHN6ID0gaWYgc3ogPCA3IHRoZW4gNyBlbHNlIHN6IGluXG4gICAgbGV0IHN6ID0gaWYgc3ogPiBTeXMubWF4X2FycmF5X2xlbmd0aCB0aGVuIFN5cy5tYXhfYXJyYXlfbGVuZ3RoIGVsc2Ugc3ogaW5cbiAgICB7XG4gICAgICB0YWJsZSA9IEFycmF5Lm1ha2Ugc3ogZW1wdHlidWNrZXQ7XG4gICAgICBoYXNoZXMgPSBBcnJheS5tYWtlIHN6IFt8IHxdO1xuICAgICAgbGltaXQgPSBsaW1pdDtcbiAgICAgIG92ZXJzaXplID0gMDtcbiAgICAgIHJvdmVyID0gMDtcbiAgICB9XG5cbiAgbGV0IGNsZWFyIHQgPVxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggdC50YWJsZSAtIDEgZG9cbiAgICAgIHQudGFibGUuKGkpIDwtIGVtcHR5YnVja2V0O1xuICAgICAgdC5oYXNoZXMuKGkpIDwtIFt8IHxdO1xuICAgIGRvbmU7XG4gICAgdC5saW1pdCA8LSBsaW1pdDtcbiAgICB0Lm92ZXJzaXplIDwtIDBcblxuXG4gIGxldCBmb2xkIGYgdCBpbml0ID1cbiAgICBsZXQgcmVjIGZvbGRfYnVja2V0IGkgYiBhY2N1ID1cbiAgICAgIGlmIGkgPj0gbGVuZ3RoIGIgdGhlbiBhY2N1IGVsc2VcbiAgICAgIG1hdGNoIGdldCBiIGkgd2l0aFxuICAgICAgfCBTb21lIHYgLT4gZm9sZF9idWNrZXQgKGkrMSkgYiAoZiB2IGFjY3UpXG4gICAgICB8IE5vbmUgLT4gZm9sZF9idWNrZXQgKGkrMSkgYiBhY2N1XG4gICAgaW5cbiAgICBBcnJheS5mb2xkX3JpZ2h0IChmb2xkX2J1Y2tldCAwKSB0LnRhYmxlIGluaXRcblxuXG4gIGxldCBpdGVyIGYgdCA9XG4gICAgbGV0IHJlYyBpdGVyX2J1Y2tldCBpIGIgPVxuICAgICAgaWYgaSA+PSBsZW5ndGggYiB0aGVuICgpIGVsc2VcbiAgICAgIG1hdGNoIGdldCBiIGkgd2l0aFxuICAgICAgfCBTb21lIHYgLT4gZiB2OyBpdGVyX2J1Y2tldCAoaSsxKSBiXG4gICAgICB8IE5vbmUgLT4gaXRlcl9idWNrZXQgKGkrMSkgYlxuICAgIGluXG4gICAgQXJyYXkuaXRlciAoaXRlcl9idWNrZXQgMCkgdC50YWJsZVxuXG5cbiAgbGV0IGl0ZXJfd2VhayBmIHQgPVxuICAgIGxldCByZWMgaXRlcl9idWNrZXQgaSBqIGIgPVxuICAgICAgaWYgaSA+PSBsZW5ndGggYiB0aGVuICgpIGVsc2VcbiAgICAgIG1hdGNoIGNoZWNrIGIgaSB3aXRoXG4gICAgICB8IHRydWUgLT4gZiBiIHQuaGFzaGVzLihqKSBpOyBpdGVyX2J1Y2tldCAoaSsxKSBqIGJcbiAgICAgIHwgZmFsc2UgLT4gaXRlcl9idWNrZXQgKGkrMSkgaiBiXG4gICAgaW5cbiAgICBBcnJheS5pdGVyaSAoaXRlcl9idWNrZXQgMCkgdC50YWJsZVxuXG5cbiAgbGV0IHJlYyBjb3VudF9idWNrZXQgaSBiIGFjY3UgPVxuICAgIGlmIGkgPj0gbGVuZ3RoIGIgdGhlbiBhY2N1IGVsc2VcbiAgICBjb3VudF9idWNrZXQgKGkrMSkgYiAoYWNjdSArIChpZiBjaGVjayBiIGkgdGhlbiAxIGVsc2UgMCkpXG5cblxuICBsZXQgY291bnQgdCA9XG4gICAgQXJyYXkuZm9sZF9yaWdodCAoY291bnRfYnVja2V0IDApIHQudGFibGUgMFxuXG5cbiAgbGV0IG5leHRfc3ogbiA9IEludC5taW4gKDMgKiBuIC8gMiArIDMpIFN5cy5tYXhfYXJyYXlfbGVuZ3RoXG4gIGxldCBwcmV2X3N6IG4gPSAoKG4gLSAzKSAqIDIgKyAyKSAvIDNcblxuICBsZXQgdGVzdF9zaHJpbmtfYnVja2V0IHQgPVxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLih0LnJvdmVyKSBpblxuICAgIGxldCBoYnVja2V0ID0gdC5oYXNoZXMuKHQucm92ZXIpIGluXG4gICAgbGV0IGxlbiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcHJldl9sZW4gPSBwcmV2X3N6IGxlbiBpblxuICAgIGxldCBsaXZlID0gY291bnRfYnVja2V0IDAgYnVja2V0IDAgaW5cbiAgICBpZiBsaXZlIDw9IHByZXZfbGVuIHRoZW4gYmVnaW5cbiAgICAgIGxldCByZWMgbG9vcCBpIGogPVxuICAgICAgICBpZiBqID49IHByZXZfbGVuIHRoZW4gYmVnaW5cbiAgICAgICAgICBpZiBjaGVjayBidWNrZXQgaSB0aGVuIGxvb3AgKGkgKyAxKSBqXG4gICAgICAgICAgZWxzZSBpZiBjaGVjayBidWNrZXQgaiB0aGVuIGJlZ2luXG4gICAgICAgICAgICBibGl0IGJ1Y2tldCBqIGJ1Y2tldCBpIDE7XG4gICAgICAgICAgICBoYnVja2V0LihpKSA8LSBoYnVja2V0LihqKTtcbiAgICAgICAgICAgIGxvb3AgKGkgKyAxKSAoaiAtIDEpO1xuICAgICAgICAgIGVuZCBlbHNlIGxvb3AgaSAoaiAtIDEpO1xuICAgICAgICBlbmQ7XG4gICAgICBpblxuICAgICAgbG9vcCAwIChsZW5ndGggYnVja2V0IC0gMSk7XG4gICAgICBpZiBwcmV2X2xlbiA9IDAgdGhlbiBiZWdpblxuICAgICAgICB0LnRhYmxlLih0LnJvdmVyKSA8LSBlbXB0eWJ1Y2tldDtcbiAgICAgICAgdC5oYXNoZXMuKHQucm92ZXIpIDwtIFt8IHxdO1xuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IG5ld2J1Y2tldCA9IHdlYWtfY3JlYXRlIHByZXZfbGVuIGluXG4gICAgICAgIGJsaXQgYnVja2V0IDAgbmV3YnVja2V0IDAgcHJldl9sZW47XG4gICAgICAgIHQudGFibGUuKHQucm92ZXIpIDwtIG5ld2J1Y2tldDtcbiAgICAgICAgdC5oYXNoZXMuKHQucm92ZXIpIDwtIEFycmF5LnN1YiBoYnVja2V0IDAgcHJldl9sZW5cbiAgICAgIGVuZDtcbiAgICAgIGlmIGxlbiA+IHQubGltaXQgJiYgcHJldl9sZW4gPD0gdC5saW1pdCB0aGVuIHQub3ZlcnNpemUgPC0gdC5vdmVyc2l6ZSAtIDE7XG4gICAgZW5kO1xuICAgIHQucm92ZXIgPC0gKHQucm92ZXIgKyAxKSBtb2QgKEFycmF5Lmxlbmd0aCB0LnRhYmxlKVxuXG5cbiAgbGV0IHJlYyByZXNpemUgdCA9XG4gICAgbGV0IG9sZGxlbiA9IEFycmF5Lmxlbmd0aCB0LnRhYmxlIGluXG4gICAgbGV0IG5ld2xlbiA9IG5leHRfc3ogb2xkbGVuIGluXG4gICAgaWYgbmV3bGVuID4gb2xkbGVuIHRoZW4gYmVnaW5cbiAgICAgIGxldCBuZXd0ID0gY3JlYXRlIG5ld2xlbiBpblxuICAgICAgbGV0IGFkZF93ZWFrIG9iIG9oIG9pID1cbiAgICAgICAgbGV0IHNldHRlciBuYiBuaSBfID0gYmxpdCBvYiBvaSBuYiBuaSAxIGluXG4gICAgICAgIGxldCBoID0gb2guKG9pKSBpblxuICAgICAgICBhZGRfYXV4IG5ld3Qgc2V0dGVyIE5vbmUgaCAoZ2V0X2luZGV4IG5ld3QgaCk7XG4gICAgICBpblxuICAgICAgaXRlcl93ZWFrIGFkZF93ZWFrIHQ7XG4gICAgICB0LnRhYmxlIDwtIG5ld3QudGFibGU7XG4gICAgICB0Lmhhc2hlcyA8LSBuZXd0Lmhhc2hlcztcbiAgICAgIHQubGltaXQgPC0gbmV3dC5saW1pdDtcbiAgICAgIHQub3ZlcnNpemUgPC0gbmV3dC5vdmVyc2l6ZTtcbiAgICAgIHQucm92ZXIgPC0gdC5yb3ZlciBtb2QgQXJyYXkubGVuZ3RoIG5ld3QudGFibGU7XG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIHQubGltaXQgPC0gbWF4X2ludDsgICAgICAgICAgICAgKCogbWF4aW11bSBzaXplIGFscmVhZHkgcmVhY2hlZCAqKVxuICAgICAgdC5vdmVyc2l6ZSA8LSAwO1xuICAgIGVuZFxuXG4gIGFuZCBhZGRfYXV4IHQgc2V0dGVyIGQgaCBpbmRleCA9XG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKGluZGV4KSBpblxuICAgIGxldCBoYXNoZXMgPSB0Lmhhc2hlcy4oaW5kZXgpIGluXG4gICAgbGV0IHN6ID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPj0gc3ogdGhlbiBiZWdpblxuICAgICAgICBsZXQgbmV3c3ogPVxuICAgICAgICAgIEludC5taW4gKDMgKiBzeiAvIDIgKyAzKSAoU3lzLm1heF9hcnJheV9sZW5ndGggLSBhZGRpdGlvbmFsX3ZhbHVlcylcbiAgICAgICAgaW5cbiAgICAgICAgaWYgbmV3c3ogPD0gc3ogdGhlbiBmYWlsd2l0aCBcIldlYWsuTWFrZTogaGFzaCBidWNrZXQgY2Fubm90IGdyb3cgbW9yZVwiO1xuICAgICAgICBsZXQgbmV3YnVja2V0ID0gd2Vha19jcmVhdGUgbmV3c3ogaW5cbiAgICAgICAgbGV0IG5ld2hhc2hlcyA9IEFycmF5Lm1ha2UgbmV3c3ogMCBpblxuICAgICAgICBibGl0IGJ1Y2tldCAwIG5ld2J1Y2tldCAwIHN6O1xuICAgICAgICBBcnJheS5ibGl0IGhhc2hlcyAwIG5ld2hhc2hlcyAwIHN6O1xuICAgICAgICBzZXR0ZXIgbmV3YnVja2V0IHN6IGQ7XG4gICAgICAgIG5ld2hhc2hlcy4oc3opIDwtIGg7XG4gICAgICAgIHQudGFibGUuKGluZGV4KSA8LSBuZXdidWNrZXQ7XG4gICAgICAgIHQuaGFzaGVzLihpbmRleCkgPC0gbmV3aGFzaGVzO1xuICAgICAgICBpZiBzeiA8PSB0LmxpbWl0ICYmIG5ld3N6ID4gdC5saW1pdCB0aGVuIGJlZ2luXG4gICAgICAgICAgdC5vdmVyc2l6ZSA8LSB0Lm92ZXJzaXplICsgMTtcbiAgICAgICAgICBmb3IgX2kgPSAwIHRvIG92ZXJfbGltaXQgZG8gdGVzdF9zaHJpbmtfYnVja2V0IHQgZG9uZTtcbiAgICAgICAgZW5kO1xuICAgICAgICBpZiB0Lm92ZXJzaXplID4gQXJyYXkubGVuZ3RoIHQudGFibGUgLyBvdmVyX2xpbWl0IHRoZW4gcmVzaXplIHQ7XG4gICAgICBlbmQgZWxzZSBpZiBjaGVjayBidWNrZXQgaSB0aGVuIGJlZ2luXG4gICAgICAgIGxvb3AgKGkgKyAxKVxuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgc2V0dGVyIGJ1Y2tldCBpIGQ7XG4gICAgICAgIGhhc2hlcy4oaSkgPC0gaDtcbiAgICAgIGVuZDtcbiAgICBpblxuICAgIGxvb3AgMFxuXG5cbiAgbGV0IGFkZCB0IGQgPVxuICAgIGxldCBoID0gSC5oYXNoIGQgaW5cbiAgICBhZGRfYXV4IHQgc2V0IChTb21lIGQpIGggKGdldF9pbmRleCB0IGgpXG5cblxuICBsZXQgZmluZF9vciB0IGQgaWZub3Rmb3VuZCA9XG4gICAgbGV0IGggPSBILmhhc2ggZCBpblxuICAgIGxldCBpbmRleCA9IGdldF9pbmRleCB0IGggaW5cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4oaW5kZXgpIGluXG4gICAgbGV0IGhhc2hlcyA9IHQuaGFzaGVzLihpbmRleCkgaW5cbiAgICBsZXQgc3ogPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIGlmbm90Zm91bmQgaCBpbmRleFxuICAgICAgZWxzZSBpZiBoID0gaGFzaGVzLihpKSB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGdldF9jb3B5IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgfCBTb21lIHYgd2hlbiBILmVxdWFsIHYgZFxuICAgICAgICAgICAtPiBiZWdpbiBtYXRjaCBnZXQgYnVja2V0IGkgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgdiAtPiB2XG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSlcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgIHwgXyAtPiBsb29wIChpICsgMSlcbiAgICAgIGVuZCBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cblxuICBsZXQgbWVyZ2UgdCBkID1cbiAgICBmaW5kX29yIHQgZCAoZnVuIGggaW5kZXggLT4gYWRkX2F1eCB0IHNldCAoU29tZSBkKSBoIGluZGV4OyBkKVxuXG5cbiAgbGV0IGZpbmQgdCBkID0gZmluZF9vciB0IGQgKGZ1biBfaCBfaW5kZXggLT4gcmFpc2UgTm90X2ZvdW5kKVxuXG4gIGxldCBmaW5kX29wdCB0IGQgPVxuICAgIGxldCBoID0gSC5oYXNoIGQgaW5cbiAgICBsZXQgaW5kZXggPSBnZXRfaW5kZXggdCBoIGluXG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKGluZGV4KSBpblxuICAgIGxldCBoYXNoZXMgPSB0Lmhhc2hlcy4oaW5kZXgpIGluXG4gICAgbGV0IHN6ID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPj0gc3ogdGhlbiBOb25lXG4gICAgICBlbHNlIGlmIGggPSBoYXNoZXMuKGkpIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggZ2V0X2NvcHkgYnVja2V0IGkgd2l0aFxuICAgICAgICB8IFNvbWUgdiB3aGVuIEguZXF1YWwgdiBkXG4gICAgICAgICAgIC0+IGJlZ2luIG1hdGNoIGdldCBidWNrZXQgaSB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSBfIGFzIHYgLT4gdlxuICAgICAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoaSArIDEpXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICB8IF8gLT4gbG9vcCAoaSArIDEpXG4gICAgICBlbmQgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG5cbiAgbGV0IGZpbmRfc2hhZG93IHQgZCBpZmZvdW5kIGlmbm90Zm91bmQgPVxuICAgIGxldCBoID0gSC5oYXNoIGQgaW5cbiAgICBsZXQgaW5kZXggPSBnZXRfaW5kZXggdCBoIGluXG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKGluZGV4KSBpblxuICAgIGxldCBoYXNoZXMgPSB0Lmhhc2hlcy4oaW5kZXgpIGluXG4gICAgbGV0IHN6ID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPj0gc3ogdGhlbiBpZm5vdGZvdW5kXG4gICAgICBlbHNlIGlmIGggPSBoYXNoZXMuKGkpIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggZ2V0X2NvcHkgYnVja2V0IGkgd2l0aFxuICAgICAgICB8IFNvbWUgdiB3aGVuIEguZXF1YWwgdiBkIC0+IGlmZm91bmQgYnVja2V0IGlcbiAgICAgICAgfCBfIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgZW5kIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcblxuXG4gIGxldCByZW1vdmUgdCBkID0gZmluZF9zaGFkb3cgdCBkIChmdW4gdyBpIC0+IHNldCB3IGkgTm9uZSkgKClcblxuXG4gIGxldCBtZW0gdCBkID0gZmluZF9zaGFkb3cgdCBkIChmdW4gX3cgX2kgLT4gdHJ1ZSkgZmFsc2VcblxuXG4gIGxldCBmaW5kX2FsbCB0IGQgPVxuICAgIGxldCBoID0gSC5oYXNoIGQgaW5cbiAgICBsZXQgaW5kZXggPSBnZXRfaW5kZXggdCBoIGluXG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKGluZGV4KSBpblxuICAgIGxldCBoYXNoZXMgPSB0Lmhhc2hlcy4oaW5kZXgpIGluXG4gICAgbGV0IHN6ID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCByZWMgbG9vcCBpIGFjY3UgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIGFjY3VcbiAgICAgIGVsc2UgaWYgaCA9IGhhc2hlcy4oaSkgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBnZXRfY29weSBidWNrZXQgaSB3aXRoXG4gICAgICAgIHwgU29tZSB2IHdoZW4gSC5lcXVhbCB2IGRcbiAgICAgICAgICAgLT4gYmVnaW4gbWF0Y2ggZ2V0IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIHYgLT4gbG9vcCAoaSArIDEpICh2IDo6IGFjY3UpXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSkgYWNjdVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgfCBfIC0+IGxvb3AgKGkgKyAxKSBhY2N1XG4gICAgICBlbmQgZWxzZSBsb29wIChpICsgMSkgYWNjdVxuICAgIGluXG4gICAgbG9vcCAwIFtdXG5cblxuICBsZXQgc3RhdHMgdCA9XG4gICAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCB0LnRhYmxlIGluXG4gICAgbGV0IGxlbnMgPSBBcnJheS5tYXAgbGVuZ3RoIHQudGFibGUgaW5cbiAgICBBcnJheS5zb3J0IGNvbXBhcmUgbGVucztcbiAgICBsZXQgdG90bGVuID0gQXJyYXkuZm9sZF9sZWZ0ICggKyApIDAgbGVucyBpblxuICAgIChsZW4sIGNvdW50IHQsIHRvdGxlbiwgbGVucy4oMCksIGxlbnMuKGxlbi8yKSwgbGVucy4obGVuLTEpKVxuXG5cbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgUGllcnJlIFdlaXMsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBIHByZXR0eS1wcmludGluZyBmYWNpbGl0eSBhbmQgZGVmaW5pdGlvbiBvZiBmb3JtYXR0ZXJzIGZvciAncGFyYWxsZWwnXG4gICAoaS5lLiB1bnJlbGF0ZWQgb3IgaW5kZXBlbmRlbnQpIHByZXR0eS1wcmludGluZyBvbiBtdWx0aXBsZSBvdXQgY2hhbm5lbHMuICopXG5cbigqXG4gICBUaGUgcHJldHR5LXByaW50aW5nIGVuZ2luZSBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZXMuXG4qKVxuXG5sZXQgaWQgeCA9IHhcblxuKCogQSBkZXZvdGVkIHR5cGUgZm9yIHNpemVzIHRvIGF2b2lkIGNvbmZ1c2lvblxuICAgYmV0d2VlbiBzaXplcyBhbmQgbWVyZSBpbnRlZ2Vycy4gKilcbm1vZHVsZSBTaXplIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCB0b19pbnQgOiB0IC0+IGludFxuICB2YWwgb2ZfaW50IDogaW50IC0+IHRcbiAgdmFsIHplcm8gOiB0XG4gIHZhbCB1bmtub3duIDogdFxuICB2YWwgaXNfa25vd24gOiB0IC0+IGJvb2xcbmVuZCAgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50XG5cbiAgbGV0IHRvX2ludCA9IGlkXG4gIGxldCBvZl9pbnQgPSBpZFxuICBsZXQgemVybyA9IDBcbiAgbGV0IHVua25vd24gPSAtMVxuICBsZXQgaXNfa25vd24gbiA9IG4gPj0gMFxuZW5kXG5cblxuXG4oKiBUaGUgcHJldHR5LXByaW50aW5nIGJveGVzIGRlZmluaXRpb246XG4gICBhIHByZXR0eS1wcmludGluZyBib3ggaXMgZWl0aGVyXG4gICAtIGhib3g6IGhvcml6b250YWwgYm94IChubyBsaW5lIHNwbGl0dGluZylcbiAgIC0gdmJveDogdmVydGljYWwgYm94IChldmVyeSBicmVhayBoaW50IHNwbGl0cyB0aGUgbGluZSlcbiAgIC0gaHZib3g6IGhvcml6b250YWwvdmVydGljYWwgYm94XG4gICAgICh0aGUgYm94IGJlaGF2ZXMgYXMgYW4gaG9yaXpvbnRhbCBib3ggaWYgaXQgZml0cyBvblxuICAgICAgdGhlIGN1cnJlbnQgbGluZSwgb3RoZXJ3aXNlIHRoZSBib3ggYmVoYXZlcyBhcyBhIHZlcnRpY2FsIGJveClcbiAgIC0gaG92Ym94OiBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGNvbXBhY3RpbmcgYm94XG4gICAgICh0aGUgYm94IGlzIGNvbXBhY3RpbmcgbWF0ZXJpYWwsIHByaW50aW5nIGFzIG11Y2ggbWF0ZXJpYWwgYXMgcG9zc2libGVcbiAgICAgIG9uIGV2ZXJ5IGxpbmVzKVxuICAgLSBib3g6IGhvcml6b250YWwgb3IgdmVydGljYWwgY29tcGFjdGluZyBib3ggd2l0aCBlbmhhbmNlZCBib3ggc3RydWN0dXJlXG4gICAgICh0aGUgYm94IGJlaGF2ZXMgYXMgYW4gaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBib3ggYnV0IGJyZWFrIGhpbnRzIHNwbGl0XG4gICAgICB0aGUgbGluZSBpZiBzcGxpdHRpbmcgd291bGQgbW92ZSB0byB0aGUgbGVmdClcbiopXG50eXBlIGJveF90eXBlID0gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmJsb2NrX3R5cGUgPVxuICB8IFBwX2hib3ggfCBQcF92Ym94IHwgUHBfaHZib3ggfCBQcF9ob3Zib3ggfCBQcF9ib3ggfCBQcF9maXRzXG5cblxuKCogVGhlIHByZXR0eS1wcmludGluZyB0b2tlbnMgZGVmaW5pdGlvbjpcbiAgIGFyZSBlaXRoZXIgdGV4dCB0byBwcmludCBvciBwcmV0dHkgcHJpbnRpbmdcbiAgIGVsZW1lbnRzIHRoYXQgZHJpdmUgaW5kZW50YXRpb24gYW5kIGxpbmUgc3BsaXR0aW5nLiAqKVxudHlwZSBwcF90b2tlbiA9XG4gIHwgUHBfdGV4dCBvZiBzdHJpbmcgICAgICAgICAgKCogbm9ybWFsIHRleHQgKilcbiAgfCBQcF9icmVhayBvZiB7ICAgICAgICAgICAgICAoKiBjb21wbGV0ZSBicmVhayAqKVxuICAgICAgZml0czogc3RyaW5nICogaW50ICogc3RyaW5nOyAgICgqIGxpbmUgaXMgbm90IHNwbGl0ICopXG4gICAgICBicmVha3M6IHN0cmluZyAqIGludCAqIHN0cmluZzsgKCogbGluZSBpcyBzcGxpdCAqKVxuICAgIH1cbiAgfCBQcF90YnJlYWsgb2YgaW50ICogaW50ICAgICAoKiBnbyB0byBuZXh0IHRhYnVsYXRpb24gKilcbiAgfCBQcF9zdGFiICAgICAgICAgICAgICAgICAgICAoKiBzZXQgYSB0YWJ1bGF0aW9uICopXG4gIHwgUHBfYmVnaW4gb2YgaW50ICogYm94X3R5cGUgKCogYmVnaW5uaW5nIG9mIGEgYm94ICopXG4gIHwgUHBfZW5kICAgICAgICAgICAgICAgICAgICAgKCogZW5kIG9mIGEgYm94ICopXG4gIHwgUHBfdGJlZ2luIG9mIHRib3ggICAgICAgICAgKCogYmVnaW5uaW5nIG9mIGEgdGFidWxhdGlvbiBib3ggKilcbiAgfCBQcF90ZW5kICAgICAgICAgICAgICAgICAgICAoKiBlbmQgb2YgYSB0YWJ1bGF0aW9uIGJveCAqKVxuICB8IFBwX25ld2xpbmUgICAgICAgICAgICAgICAgICgqIHRvIGZvcmNlIGEgbmV3bGluZSBpbnNpZGUgYSBib3ggKilcbiAgfCBQcF9pZl9uZXdsaW5lICAgICAgICAgICAgICAoKiB0byBkbyBzb21ldGhpbmcgb25seSBpZiB0aGlzIHZlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lIGhhcyBiZWVuIGJyb2tlbiAqKVxuICB8IFBwX29wZW5fdGFnIG9mIHN0YWcgICAgICAgICAoKiBvcGVuaW5nIGEgdGFnIG5hbWUgKilcbiAgfCBQcF9jbG9zZV90YWcgICAgICAgICAgICAgICAoKiBjbG9zaW5nIHRoZSBtb3N0IHJlY2VudGx5IG9wZW4gdGFnICopXG5cbmFuZCBzdGFnID0gLi5cblxuYW5kIHRib3ggPSBQcF90Ym94IG9mIGludCBsaXN0IHJlZiAgKCogVGFidWxhdGlvbiBib3ggKilcblxudHlwZSB0YWcgPSBzdHJpbmdcbnR5cGUgc3RhZyArPSBTdHJpbmdfdGFnIG9mIHRhZ1xuXG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZTpcbiAgIHByZXR0eS1wcmludGluZyBtYXRlcmlhbCBpcyBub3Qgd3JpdHRlbiBpbiB0aGUgb3V0cHV0IGFzIHNvb24gYXMgZW1pdHRlZDtcbiAgIGluc3RlYWQsIHRoZSBtYXRlcmlhbCBpcyBzaW1wbHkgcmVjb3JkZWQgaW4gdGhlIHByZXR0eS1wcmludGVyIHF1ZXVlLFxuICAgdW50aWwgdGhlIGVuY2xvc2luZyBib3ggaGFzIGEga25vd24gY29tcHV0ZWQgc2l6ZSBhbmQgcHJvcGVyIHNwbGl0dGluZ1xuICAgZGVjaXNpb25zIGNhbiBiZSBtYWRlLlxuXG4gICBUaGUgcHJldHR5LXByaW50ZXIgcXVldWUgY29udGFpbnMgZm9ybWF0dGluZyBlbGVtZW50cyB0byBiZSBwcmludGVkLlxuICAgRWFjaCBmb3JtYXR0aW5nIGVsZW1lbnQgaXMgYSB0dXBsZSAoc2l6ZSwgdG9rZW4sIGxlbmd0aCksIHdoZXJlXG4gICAtIGxlbmd0aCBpcyB0aGUgZGVjbGFyZWQgbGVuZ3RoIG9mIHRoZSB0b2tlbixcbiAgIC0gc2l6ZSBpcyBlZmZlY3RpdmUgc2l6ZSBvZiB0aGUgdG9rZW4gd2hlbiBpdCBpcyBwcmludGVkXG4gICAgIChzaXplIGlzIHNldCB3aGVuIHRoZSBzaXplIG9mIHRoZSBib3ggaXMga25vd24sIHNvIHRoYXQgc2l6ZSBvZiBicmVha1xuICAgICAgaGludHMgYXJlIGRlZmluaXRpdmUpLiAqKVxudHlwZSBwcF9xdWV1ZV9lbGVtID0ge1xuICBtdXRhYmxlIHNpemUgOiBTaXplLnQ7XG4gIHRva2VuIDogcHBfdG9rZW47XG4gIGxlbmd0aCA6IGludDtcbn1cblxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgcXVldWUgZGVmaW5pdGlvbi4gKilcbnR5cGUgcHBfcXVldWUgPSBwcF9xdWV1ZV9lbGVtIFF1ZXVlLnRcblxuKCogVGhlIHByZXR0eS1wcmludGVyIHNjYW5uaW5nIHN0YWNrLiAqKVxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2s6IHNjYW5uaW5nIGVsZW1lbnQgZGVmaW5pdGlvbi4gKilcbnR5cGUgcHBfc2Nhbl9lbGVtID0ge1xuICBsZWZ0X3RvdGFsIDogaW50OyAoKiBWYWx1ZSBvZiBwcF9sZWZ0X3RvdGFsIHdoZW4gdGhlIGVsZW1lbnQgd2FzIGVucXVldWVkLiAqKVxuICBxdWV1ZV9lbGVtIDogcHBfcXVldWVfZWxlbVxufVxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjazpcbiAgIHRoZSBmb3JtYXR0aW5nIHN0YWNrIGNvbnRhaW5zIHRoZSBkZXNjcmlwdGlvbiBvZiBhbGwgdGhlIGN1cnJlbnRseSBhY3RpdmVcbiAgIGJveGVzOyB0aGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjayBpcyB1c2VkIHRvIHNwbGl0IHRoZSBsaW5lc1xuICAgd2hpbGUgcHJpbnRpbmcgdG9rZW5zLiAqKVxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjazogZm9ybWF0dGluZyBzdGFjayBlbGVtZW50IGRlZmluaXRpb24uXG4gICBFYWNoIHN0YWNrIGVsZW1lbnQgZGVzY3JpYmVzIGEgcHJldHR5LXByaW50aW5nIGJveC4gKilcbnR5cGUgcHBfZm9ybWF0X2VsZW0gPSB7IGJveF90eXBlIDogYm94X3R5cGU7IHdpZHRoIDogaW50IH1cblxuKCogVGhlIGZvcm1hdHRlciBkZWZpbml0aW9uLlxuICAgRWFjaCBmb3JtYXR0ZXIgdmFsdWUgaXMgYSBwcmV0dHktcHJpbnRlciBpbnN0YW5jZSB3aXRoIGFsbCBpdHNcbiAgIG1hY2hpbmVyeS4gKilcbnR5cGUgZm9ybWF0dGVyID0ge1xuICAoKiBUaGUgcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2suICopXG4gIHBwX3NjYW5fc3RhY2sgOiBwcF9zY2FuX2VsZW0gU3RhY2sudDtcbiAgKCogVGhlIHByZXR0eS1wcmludGVyIGZvcm1hdHRpbmcgc3RhY2suICopXG4gIHBwX2Zvcm1hdF9zdGFjayA6IHBwX2Zvcm1hdF9lbGVtIFN0YWNrLnQ7XG4gIHBwX3Rib3hfc3RhY2sgOiB0Ym94IFN0YWNrLnQ7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBzZW1hbnRpY3MgdGFnIHN0YWNrLiAqKVxuICBwcF90YWdfc3RhY2sgOiBzdGFnIFN0YWNrLnQ7XG4gIHBwX21hcmtfc3RhY2sgOiBzdGFnIFN0YWNrLnQ7XG4gICgqIFZhbHVlIG9mIHJpZ2h0IG1hcmdpbi4gKilcbiAgbXV0YWJsZSBwcF9tYXJnaW4gOiBpbnQ7XG4gICgqIE1pbmltYWwgc3BhY2UgbGVmdCBiZWZvcmUgbWFyZ2luLCB3aGVuIG9wZW5pbmcgYSBib3guICopXG4gIG11dGFibGUgcHBfbWluX3NwYWNlX2xlZnQgOiBpbnQ7XG4gICgqIE1heGltdW0gdmFsdWUgb2YgaW5kZW50YXRpb246XG4gICAgIG5vIGJveCBjYW4gYmUgb3BlbmVkIGZ1cnRoZXIuICopXG4gIG11dGFibGUgcHBfbWF4X2luZGVudCA6IGludDtcbiAgKCogU3BhY2UgcmVtYWluaW5nIG9uIHRoZSBjdXJyZW50IGxpbmUuICopXG4gIG11dGFibGUgcHBfc3BhY2VfbGVmdCA6IGludDtcbiAgKCogQ3VycmVudCB2YWx1ZSBvZiBpbmRlbnRhdGlvbi4gKilcbiAgbXV0YWJsZSBwcF9jdXJyZW50X2luZGVudCA6IGludDtcbiAgKCogVHJ1ZSB3aGVuIHRoZSBsaW5lIGhhcyBiZWVuIGJyb2tlbiBieSB0aGUgcHJldHR5LXByaW50ZXIuICopXG4gIG11dGFibGUgcHBfaXNfbmV3X2xpbmUgOiBib29sO1xuICAoKiBUb3RhbCB3aWR0aCBvZiB0b2tlbnMgYWxyZWFkeSBwcmludGVkLiAqKVxuICBtdXRhYmxlIHBwX2xlZnRfdG90YWwgOiBpbnQ7XG4gICgqIFRvdGFsIHdpZHRoIG9mIHRva2VucyBldmVyIHB1dCBpbiBxdWV1ZS4gKilcbiAgbXV0YWJsZSBwcF9yaWdodF90b3RhbCA6IGludDtcbiAgKCogQ3VycmVudCBudW1iZXIgb2Ygb3BlbiBib3hlcy4gKilcbiAgbXV0YWJsZSBwcF9jdXJyX2RlcHRoIDogaW50O1xuICAoKiBNYXhpbXVtIG51bWJlciBvZiBib3hlcyB3aGljaCBjYW4gYmUgc2ltdWx0YW5lb3VzbHkgb3Blbi4gKilcbiAgbXV0YWJsZSBwcF9tYXhfYm94ZXMgOiBpbnQ7XG4gICgqIEVsbGlwc2lzIHN0cmluZy4gKilcbiAgbXV0YWJsZSBwcF9lbGxpcHNpcyA6IHN0cmluZztcbiAgKCogT3V0cHV0IGZ1bmN0aW9uLiAqKVxuICBtdXRhYmxlIHBwX291dF9zdHJpbmcgOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB1bml0O1xuICAoKiBGbHVzaGluZyBmdW5jdGlvbi4gKilcbiAgbXV0YWJsZSBwcF9vdXRfZmx1c2ggOiB1bml0IC0+IHVuaXQ7XG4gICgqIE91dHB1dCBvZiBuZXcgbGluZXMuICopXG4gIG11dGFibGUgcHBfb3V0X25ld2xpbmUgOiB1bml0IC0+IHVuaXQ7XG4gICgqIE91dHB1dCBvZiBicmVhayBoaW50cyBzcGFjZXMuICopXG4gIG11dGFibGUgcHBfb3V0X3NwYWNlcyA6IGludCAtPiB1bml0O1xuICAoKiBPdXRwdXQgb2YgaW5kZW50YXRpb24gb2YgbmV3IGxpbmVzLiAqKVxuICBtdXRhYmxlIHBwX291dF9pbmRlbnQgOiBpbnQgLT4gdW5pdDtcbiAgKCogQXJlIHRhZ3MgcHJpbnRlZCA/ICopXG4gIG11dGFibGUgcHBfcHJpbnRfdGFncyA6IGJvb2w7XG4gICgqIEFyZSB0YWdzIG1hcmtlZCA/ICopXG4gIG11dGFibGUgcHBfbWFya190YWdzIDogYm9vbDtcbiAgKCogRmluZCBvcGVuaW5nIGFuZCBjbG9zaW5nIG1hcmtlcnMgb2YgdGFncy4gKilcbiAgbXV0YWJsZSBwcF9tYXJrX29wZW5fdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIG11dGFibGUgcHBfbWFya19jbG9zZV90YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgbXV0YWJsZSBwcF9wcmludF9vcGVuX3RhZyA6IHN0YWcgLT4gdW5pdDtcbiAgbXV0YWJsZSBwcF9wcmludF9jbG9zZV90YWcgOiBzdGFnIC0+IHVuaXQ7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZS4gKilcbiAgcHBfcXVldWUgOiBwcF9xdWV1ZTtcbn1cblxuXG4oKiBUaGUgZm9ybWF0dGVyIHNwZWNpZmljIHRhZyBoYW5kbGluZyBmdW5jdGlvbnMuICopXG50eXBlIGZvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyA9IHtcbiAgbWFya19vcGVuX3N0YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgbWFya19jbG9zZV9zdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIHByaW50X29wZW5fc3RhZyA6IHN0YWcgLT4gdW5pdDtcbiAgcHJpbnRfY2xvc2Vfc3RhZyA6IHN0YWcgLT4gdW5pdDtcbn1cblxuXG4oKiBUaGUgZm9ybWF0dGVyIGZ1bmN0aW9ucyB0byBvdXRwdXQgbWF0ZXJpYWwuICopXG50eXBlIGZvcm1hdHRlcl9vdXRfZnVuY3Rpb25zID0ge1xuICBvdXRfc3RyaW5nIDogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdW5pdDtcbiAgb3V0X2ZsdXNoIDogdW5pdCAtPiB1bml0O1xuICBvdXRfbmV3bGluZSA6IHVuaXQgLT4gdW5pdDtcbiAgb3V0X3NwYWNlcyA6IGludCAtPiB1bml0O1xuICBvdXRfaW5kZW50IDogaW50IC0+IHVuaXQ7XG59XG5cblxuKCpcblxuICBBdXhpbGlhcmllcyBhbmQgYmFzaWMgZnVuY3Rpb25zLlxuXG4qKVxuXG4oKiBFbnRlciBhIHRva2VuIGluIHRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZS4gKilcbmxldCBwcF9lbnF1ZXVlIHN0YXRlIHRva2VuID1cbiAgc3RhdGUucHBfcmlnaHRfdG90YWwgPC0gc3RhdGUucHBfcmlnaHRfdG90YWwgKyB0b2tlbi5sZW5ndGg7XG4gIFF1ZXVlLmFkZCB0b2tlbiBzdGF0ZS5wcF9xdWV1ZVxuXG5cbmxldCBwcF9jbGVhcl9xdWV1ZSBzdGF0ZSA9XG4gIHN0YXRlLnBwX2xlZnRfdG90YWwgPC0gMTsgc3RhdGUucHBfcmlnaHRfdG90YWwgPC0gMTtcbiAgUXVldWUuY2xlYXIgc3RhdGUucHBfcXVldWVcblxuXG4oKiBQcF9pbmZpbml0eTogbGFyZ2UgdmFsdWUgZm9yIGRlZmF1bHQgdG9rZW5zIHNpemUuXG5cbiAgIFBwX2luZmluaXR5IGlzIGRvY3VtZW50ZWQgYXMgYmVpbmcgZ3JlYXRlciB0aGFuIDFlMTA7IHRvIGF2b2lkXG4gICBjb25mdXNpb24gYWJvdXQgdGhlIHdvcmQgJ2dyZWF0ZXInLCB3ZSBjaG9vc2UgcHBfaW5maW5pdHkgZ3JlYXRlclxuICAgdGhhbiAxZTEwICsgMTsgZm9yIGNvcnJlY3QgaGFuZGxpbmcgb2YgdGVzdHMgaW4gdGhlIGFsZ29yaXRobSxcbiAgIHBwX2luZmluaXR5IG11c3QgYmUgZXZlbiBvbmUgbW9yZSB0aGFuIDFlMTAgKyAxOyBsZXQncyBzdGFuZCBvbiB0aGVcbiAgIHNhZmUgc2lkZSBieSBjaG9vc2luZyAxLmUxMCsxMC5cblxuICAgUHBfaW5maW5pdHkgY291bGQgcHJvYmFibHkgYmUgMTA3Mzc0MTgyMyB0aGF0IGlzIDJeMzAgLSAxLCB0aGF0IGlzXG4gICB0aGUgbWluaW1hbCB1cHBlciBib3VuZCBmb3IgaW50ZWdlcnM7IG5vdyB0aGF0IG1heF9pbnQgaXMgZGVmaW5lZCxcbiAgIHRoaXMgbGltaXQgY291bGQgYWxzbyBiZSBkZWZpbmVkIGFzIG1heF9pbnQgLSAxLlxuXG4gICBIb3dldmVyLCBiZWZvcmUgc2V0dGluZyBwcF9pbmZpbml0eSB0byBzb21ldGhpbmcgYXJvdW5kIG1heF9pbnQsIHdlXG4gICBtdXN0IGNhcmVmdWxseSBkb3VibGUtY2hlY2sgYWxsIHRoZSBpbnRlZ2VyIGFyaXRobWV0aWMgb3BlcmF0aW9uc1xuICAgdGhhdCBpbnZvbHZlIHBwX2luZmluaXR5LCBzaW5jZSBhbnkgb3ZlcmZsb3cgd291bGQgd3JlY2sgaGF2b2MgdGhlXG4gICBwcmV0dHktcHJpbnRpbmcgYWxnb3JpdGhtJ3MgaW52YXJpYW50cy4gR2l2ZW4gdGhhdCB0aGlzIGFyaXRobWV0aWNcbiAgIGNvcnJlY3RuZXNzIGNoZWNrIGlzIGRpZmZpY3VsdCBhbmQgZXJyb3IgcHJvbmUgYW5kIGdpdmVuIHRoYXQgMWUxMFxuICAgKyAxIGlzIGluIHByYWN0aWNlIGxhcmdlIGVub3VnaCwgdGhlcmUgaXMgbm8gbmVlZCB0byBhdHRlbXB0IHRvIHNldFxuICAgcHBfaW5maW5pdHkgdG8gdGhlIHRoZW9yZXRpY2FsbHkgbWF4aW11bSBsaW1pdC4gSXQgaXMgbm90IHdvcnRoIHRoZVxuICAgYnVyZGVuICEgKilcbmxldCBwcF9pbmZpbml0eSA9IDEwMDAwMDAwMTBcblxuKCogT3V0cHV0IGZ1bmN0aW9ucyBmb3IgdGhlIGZvcm1hdHRlci4gKilcbmxldCBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIHMgPSBzdGF0ZS5wcF9vdXRfc3RyaW5nIHMgMCAoU3RyaW5nLmxlbmd0aCBzKVxuYW5kIHBwX291dHB1dF9uZXdsaW5lIHN0YXRlID0gc3RhdGUucHBfb3V0X25ld2xpbmUgKClcbmFuZCBwcF9vdXRwdXRfc3BhY2VzIHN0YXRlIG4gPSBzdGF0ZS5wcF9vdXRfc3BhY2VzIG5cbmFuZCBwcF9vdXRwdXRfaW5kZW50IHN0YXRlIG4gPSBzdGF0ZS5wcF9vdXRfaW5kZW50IG5cblxuKCogRm9ybWF0IGEgdGV4dHVhbCB0b2tlbiAqKVxubGV0IGZvcm1hdF9wcF90ZXh0IHN0YXRlIHNpemUgdGV4dCA9XG4gIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfc3BhY2VfbGVmdCAtIHNpemU7XG4gIHBwX291dHB1dF9zdHJpbmcgc3RhdGUgdGV4dDtcbiAgc3RhdGUucHBfaXNfbmV3X2xpbmUgPC0gZmFsc2VcblxuKCogRm9ybWF0IGEgc3RyaW5nIGJ5IGl0cyBsZW5ndGgsIGlmIG5vdCBlbXB0eSAqKVxubGV0IGZvcm1hdF9zdHJpbmcgc3RhdGUgcyA9XG4gIGlmIHMgPD4gXCJcIiB0aGVuIGZvcm1hdF9wcF90ZXh0IHN0YXRlIChTdHJpbmcubGVuZ3RoIHMpIHNcblxuKCogVG8gZm9ybWF0IGEgYnJlYWssIGluZGVudGluZyBhIG5ldyBsaW5lLiAqKVxubGV0IGJyZWFrX25ld19saW5lIHN0YXRlIChiZWZvcmUsIG9mZnNldCwgYWZ0ZXIpIHdpZHRoID1cbiAgZm9ybWF0X3N0cmluZyBzdGF0ZSBiZWZvcmU7XG4gIHBwX291dHB1dF9uZXdsaW5lIHN0YXRlO1xuICBzdGF0ZS5wcF9pc19uZXdfbGluZSA8LSB0cnVlO1xuICBsZXQgaW5kZW50ID0gc3RhdGUucHBfbWFyZ2luIC0gd2lkdGggKyBvZmZzZXQgaW5cbiAgKCogRG9uJ3QgaW5kZW50IG1vcmUgdGhhbiBwcF9tYXhfaW5kZW50LiAqKVxuICBsZXQgcmVhbF9pbmRlbnQgPSBJbnQubWluIHN0YXRlLnBwX21heF9pbmRlbnQgaW5kZW50IGluXG4gIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50IDwtIHJlYWxfaW5kZW50O1xuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50O1xuICBwcF9vdXRwdXRfaW5kZW50IHN0YXRlIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50O1xuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGFmdGVyXG5cblxuKCogVG8gZm9yY2UgYSBsaW5lIGJyZWFrIGluc2lkZSBhIGJveDogbm8gb2Zmc2V0IGlzIGFkZGVkLiAqKVxubGV0IGJyZWFrX2xpbmUgc3RhdGUgd2lkdGggPSBicmVha19uZXdfbGluZSBzdGF0ZSAoXCJcIiwgMCwgXCJcIikgd2lkdGhcblxuKCogVG8gZm9ybWF0IGEgYnJlYWsgdGhhdCBmaXRzIG9uIHRoZSBjdXJyZW50IGxpbmUuICopXG5sZXQgYnJlYWtfc2FtZV9saW5lIHN0YXRlIChiZWZvcmUsIHdpZHRoLCBhZnRlcikgPVxuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGJlZm9yZTtcbiAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IC0gd2lkdGg7XG4gIHBwX291dHB1dF9zcGFjZXMgc3RhdGUgd2lkdGg7XG4gIGZvcm1hdF9zdHJpbmcgc3RhdGUgYWZ0ZXJcblxuXG4oKiBUbyBpbmRlbnQgbm8gbW9yZSB0aGFuIHBwX21heF9pbmRlbnQsIGlmIG9uZSB0cmllcyB0byBvcGVuIGEgYm94XG4gICBiZXlvbmQgcHBfbWF4X2luZGVudCwgdGhlbiB0aGUgYm94IGlzIHJlamVjdGVkIG9uIHRoZSBsZWZ0XG4gICBieSBzaW11bGF0aW5nIGEgYnJlYWsuICopXG5sZXQgcHBfZm9yY2VfYnJlYWtfbGluZSBzdGF0ZSA9XG4gIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfZm9ybWF0X3N0YWNrIHdpdGhcbiAgfCBOb25lIC0+IHBwX291dHB1dF9uZXdsaW5lIHN0YXRlXG4gIHwgU29tZSB7IGJveF90eXBlOyB3aWR0aCB9IC0+XG4gICAgaWYgd2lkdGggPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0IHRoZW5cbiAgICAgIG1hdGNoIGJveF90eXBlIHdpdGhcbiAgICAgIHwgUHBfZml0cyB8IFBwX2hib3ggLT4gKClcbiAgICAgIHwgUHBfdmJveCB8IFBwX2h2Ym94IHwgUHBfaG92Ym94IHwgUHBfYm94IC0+IGJyZWFrX2xpbmUgc3RhdGUgd2lkdGhcblxuXG4oKiBUbyBza2lwIGEgdG9rZW4sIGlmIHRoZSBwcmV2aW91cyBsaW5lIGhhcyBiZWVuIGJyb2tlbi4gKilcbmxldCBwcF9za2lwX3Rva2VuIHN0YXRlID1cbiAgbWF0Y2ggUXVldWUudGFrZV9vcHQgc3RhdGUucHBfcXVldWUgd2l0aFxuICB8IE5vbmUgLT4gKCkgKCogcHJpbnRfaWZfbmV3bGluZSBtdXN0IGhhdmUgYmVlbiB0aGUgbGFzdCBwcmludGluZyBjb21tYW5kICopXG4gIHwgU29tZSB7IHNpemU7IGxlbmd0aDsgXyB9IC0+XG4gICAgc3RhdGUucHBfbGVmdF90b3RhbCA8LSBzdGF0ZS5wcF9sZWZ0X3RvdGFsIC0gbGVuZ3RoO1xuICAgIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfc3BhY2VfbGVmdCArIFNpemUudG9faW50IHNpemVcblxuXG4oKlxuXG4gIFRoZSBtYWluIHByZXR0eSBwcmludGluZyBmdW5jdGlvbnMuXG5cbiopXG5cbigqIEZvcm1hdHRpbmcgYSB0b2tlbiB3aXRoIGEgZ2l2ZW4gc2l6ZS4gKilcbmxldCBmb3JtYXRfcHBfdG9rZW4gc3RhdGUgc2l6ZSA9IGZ1bmN0aW9uXG5cbiAgfCBQcF90ZXh0IHMgLT5cbiAgICBmb3JtYXRfcHBfdGV4dCBzdGF0ZSBzaXplIHNcblxuICB8IFBwX2JlZ2luIChvZmYsIHR5KSAtPlxuICAgIGxldCBpbnNlcnRpb25fcG9pbnQgPSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IGluXG4gICAgaWYgaW5zZXJ0aW9uX3BvaW50ID4gc3RhdGUucHBfbWF4X2luZGVudCB0aGVuXG4gICAgICAoKiBjYW4gbm90IG9wZW4gYSBib3ggcmlnaHQgdGhlcmUuICopXG4gICAgICBiZWdpbiBwcF9mb3JjZV9icmVha19saW5lIHN0YXRlIGVuZDtcbiAgICBsZXQgd2lkdGggPSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IC0gb2ZmIGluXG4gICAgbGV0IGJveF90eXBlID1cbiAgICAgIG1hdGNoIHR5IHdpdGhcbiAgICAgIHwgUHBfdmJveCAtPiBQcF92Ym94XG4gICAgICB8IFBwX2hib3ggfCBQcF9odmJveCB8IFBwX2hvdmJveCB8IFBwX2JveCB8IFBwX2ZpdHMgLT5cbiAgICAgICAgaWYgc2l6ZSA+IHN0YXRlLnBwX3NwYWNlX2xlZnQgdGhlbiB0eSBlbHNlIFBwX2ZpdHMgaW5cbiAgICBTdGFjay5wdXNoIHsgYm94X3R5cGU7IHdpZHRoIH0gc3RhdGUucHBfZm9ybWF0X3N0YWNrXG5cbiAgfCBQcF9lbmQgLT5cbiAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB8PiBpZ25vcmVcblxuICB8IFBwX3RiZWdpbiAoUHBfdGJveCBfIGFzIHRib3gpIC0+XG4gICAgU3RhY2sucHVzaCB0Ym94IHN0YXRlLnBwX3Rib3hfc3RhY2tcblxuICB8IFBwX3RlbmQgLT5cbiAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX3Rib3hfc3RhY2sgfD4gaWdub3JlXG5cbiAgfCBQcF9zdGFiIC0+XG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF90Ym94X3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gKCkgKCogTm8gb3BlbiB0YWJ1bGF0aW9uIGJveC4gKilcbiAgICB8IFNvbWUgKFBwX3Rib3ggdGFicykgLT5cbiAgICAgIGxldCByZWMgYWRkX3RhYiBuID0gZnVuY3Rpb25cbiAgICAgICAgfCBbXSAtPiBbbl1cbiAgICAgICAgfCB4IDo6IGwgYXMgbHMgLT4gaWYgbiA8IHggdGhlbiBuIDo6IGxzIGVsc2UgeCA6OiBhZGRfdGFiIG4gbCBpblxuICAgICAgdGFicyA6PSBhZGRfdGFiIChzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0KSAhdGFic1xuICAgIGVuZFxuXG4gIHwgUHBfdGJyZWFrIChuLCBvZmYpIC0+XG4gICAgbGV0IGluc2VydGlvbl9wb2ludCA9IHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnQgaW5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX3Rib3hfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKSAoKiBObyBvcGVuIHRhYnVsYXRpb24gYm94LiAqKVxuICAgIHwgU29tZSAoUHBfdGJveCB0YWJzKSAtPlxuICAgICAgbGV0IHRhYiA9XG4gICAgICAgIG1hdGNoICF0YWJzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBpbnNlcnRpb25fcG9pbnRcbiAgICAgICAgfCBmaXJzdCA6OiBfIC0+XG4gICAgICAgICAgbGV0IHJlYyBmaW5kID0gZnVuY3Rpb25cbiAgICAgICAgICAgIHwgaGVhZCA6OiB0YWlsIC0+XG4gICAgICAgICAgICAgIGlmIGhlYWQgPj0gaW5zZXJ0aW9uX3BvaW50IHRoZW4gaGVhZCBlbHNlIGZpbmQgdGFpbFxuICAgICAgICAgICAgfCBbXSAtPiBmaXJzdCBpblxuICAgICAgICAgIGZpbmQgIXRhYnMgaW5cbiAgICAgIGxldCBvZmZzZXQgPSB0YWIgLSBpbnNlcnRpb25fcG9pbnQgaW5cbiAgICAgIGlmIG9mZnNldCA+PSAwXG4gICAgICB0aGVuIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSAoXCJcIiwgb2Zmc2V0ICsgbiwgXCJcIilcbiAgICAgIGVsc2UgYnJlYWtfbmV3X2xpbmUgc3RhdGUgKFwiXCIsIHRhYiArIG9mZiwgXCJcIikgc3RhdGUucHBfbWFyZ2luXG4gICAgZW5kXG5cbiAgfCBQcF9uZXdsaW5lIC0+XG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF9mb3JtYXRfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZSAoKiBObyBvcGVuIGJveC4gKilcbiAgICB8IFNvbWUgeyB3aWR0aDsgX30gLT4gYnJlYWtfbGluZSBzdGF0ZSB3aWR0aFxuICAgIGVuZFxuXG4gIHwgUHBfaWZfbmV3bGluZSAtPlxuICAgIGlmIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50ICE9IHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnRcbiAgICB0aGVuIHBwX3NraXBfdG9rZW4gc3RhdGVcblxuICB8IFBwX2JyZWFrIHsgZml0czsgYnJlYWtzIH0gLT5cbiAgICBsZXQgYmVmb3JlLCBvZmYsIF8gPSBicmVha3MgaW5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+ICgpICgqIE5vIG9wZW4gYm94LiAqKVxuICAgIHwgU29tZSB7IGJveF90eXBlOyB3aWR0aCB9IC0+XG4gICAgICBiZWdpbiBtYXRjaCBib3hfdHlwZSB3aXRoXG4gICAgICB8IFBwX2hvdmJveCAtPlxuICAgICAgICBpZiBzaXplICsgU3RyaW5nLmxlbmd0aCBiZWZvcmUgPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0XG4gICAgICAgIHRoZW4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoXG4gICAgICAgIGVsc2UgYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHNcbiAgICAgIHwgUHBfYm94IC0+XG4gICAgICAgICgqIEhhdmUgdGhlIGxpbmUganVzdCBiZWVuIGJyb2tlbiBoZXJlID8gKilcbiAgICAgICAgaWYgc3RhdGUucHBfaXNfbmV3X2xpbmUgdGhlbiBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0cyBlbHNlXG4gICAgICAgIGlmIHNpemUgKyBTdHJpbmcubGVuZ3RoIGJlZm9yZSA+IHN0YXRlLnBwX3NwYWNlX2xlZnRcbiAgICAgICAgICB0aGVuIGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aCBlbHNlXG4gICAgICAgICgqIGJyZWFrIHRoZSBsaW5lIGhlcmUgbGVhZHMgdG8gbmV3IGluZGVudGF0aW9uID8gKilcbiAgICAgICAgaWYgc3RhdGUucHBfY3VycmVudF9pbmRlbnQgPiBzdGF0ZS5wcF9tYXJnaW4gLSB3aWR0aCArIG9mZlxuICAgICAgICB0aGVuIGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aFxuICAgICAgICBlbHNlIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzXG4gICAgICB8IFBwX2h2Ym94IC0+IGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aFxuICAgICAgfCBQcF9maXRzIC0+IGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzXG4gICAgICB8IFBwX3Zib3ggLT4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoXG4gICAgICB8IFBwX2hib3ggLT4gYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHNcbiAgICAgIGVuZFxuICAgIGVuZFxuXG4gICB8IFBwX29wZW5fdGFnIHRhZ19uYW1lIC0+XG4gICAgIGxldCBtYXJrZXIgPSBzdGF0ZS5wcF9tYXJrX29wZW5fdGFnIHRhZ19uYW1lIGluXG4gICAgIHBwX291dHB1dF9zdHJpbmcgc3RhdGUgbWFya2VyO1xuICAgICBTdGFjay5wdXNoIHRhZ19uYW1lIHN0YXRlLnBwX21hcmtfc3RhY2tcblxuICAgfCBQcF9jbG9zZV90YWcgLT5cbiAgICAgYmVnaW4gbWF0Y2ggU3RhY2sucG9wX29wdCBzdGF0ZS5wcF9tYXJrX3N0YWNrIHdpdGhcbiAgICAgfCBOb25lIC0+ICgpICgqIE5vIG1vcmUgdGFnIHRvIGNsb3NlLiAqKVxuICAgICB8IFNvbWUgdGFnX25hbWUgLT5cbiAgICAgICBsZXQgbWFya2VyID0gc3RhdGUucHBfbWFya19jbG9zZV90YWcgdGFnX25hbWUgaW5cbiAgICAgICBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIG1hcmtlclxuICAgICBlbmRcblxuXG4oKiBQcmludCBpZiB0b2tlbiBzaXplIGlzIGtub3duIGVsc2UgcHJpbnRpbmcgaXMgZGVsYXllZC5cbiAgIFByaW50aW5nIGlzIGRlbGF5ZWQgd2hlbiB0aGUgdGV4dCB3YWl0aW5nIGluIHRoZSBxdWV1ZSByZXF1aXJlc1xuICAgbW9yZSByb29tIHRvIGZvcm1hdCB0aGFuIGV4aXN0cyBvbiB0aGUgY3VycmVudCBsaW5lLiAqKVxubGV0IHJlYyBhZHZhbmNlX2xlZnQgc3RhdGUgPVxuICBtYXRjaCBRdWV1ZS5wZWVrX29wdCBzdGF0ZS5wcF9xdWV1ZSB3aXRoXG4gIHwgTm9uZSAtPiAoKSAoKiBObyB0b2tlbnMgdG8gcHJpbnQgKilcbiAgfCBTb21lIHsgc2l6ZTsgdG9rZW47IGxlbmd0aCB9IC0+XG4gICAgbGV0IHBlbmRpbmdfY291bnQgPSBzdGF0ZS5wcF9yaWdodF90b3RhbCAtIHN0YXRlLnBwX2xlZnRfdG90YWwgaW5cbiAgICBpZiBTaXplLmlzX2tub3duIHNpemUgfHwgcGVuZGluZ19jb3VudCA+PSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IHRoZW4gYmVnaW5cbiAgICAgIFF1ZXVlLnRha2Ugc3RhdGUucHBfcXVldWUgfD4gaWdub3JlOyAoKiBOb3QgZW1wdHk6IHdlIHBlZWsgaW50byBpdCAqKVxuICAgICAgbGV0IHNpemUgPSBpZiBTaXplLmlzX2tub3duIHNpemUgdGhlbiBTaXplLnRvX2ludCBzaXplIGVsc2UgcHBfaW5maW5pdHkgaW5cbiAgICAgIGZvcm1hdF9wcF90b2tlbiBzdGF0ZSBzaXplIHRva2VuO1xuICAgICAgc3RhdGUucHBfbGVmdF90b3RhbCA8LSBsZW5ndGggKyBzdGF0ZS5wcF9sZWZ0X3RvdGFsO1xuICAgICAgKGFkdmFuY2VfbGVmdCBbQHRhaWxjYWxsXSkgc3RhdGVcbiAgICBlbmRcblxuXG4oKiBUbyBlbnF1ZXVlIGEgdG9rZW4gOiB0cnkgdG8gYWR2YW5jZS4gKilcbmxldCBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgdG9rID0gcHBfZW5xdWV1ZSBzdGF0ZSB0b2s7IGFkdmFuY2VfbGVmdCBzdGF0ZVxuXG5cbigqIFRvIGVucXVldWUgc3RyaW5ncy4gKilcbmxldCBlbnF1ZXVlX3N0cmluZ19hcyBzdGF0ZSBzaXplIHMgPVxuICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgeyBzaXplOyB0b2tlbiA9IFBwX3RleHQgczsgbGVuZ3RoID0gU2l6ZS50b19pbnQgc2l6ZSB9XG5cblxubGV0IGVucXVldWVfc3RyaW5nIHN0YXRlIHMgPVxuICBlbnF1ZXVlX3N0cmluZ19hcyBzdGF0ZSAoU2l6ZS5vZl9pbnQgKFN0cmluZy5sZW5ndGggcykpIHNcblxuXG4oKiBSb3V0aW5lcyBmb3Igc2NhbiBzdGFja1xuICAgZGV0ZXJtaW5lIHNpemUgb2YgYm94ZXMuICopXG5cbigqIFRoZSBzY2FuX3N0YWNrIGlzIG5ldmVyIGVtcHR5LiAqKVxubGV0IGluaXRpYWxpemVfc2Nhbl9zdGFjayBzdGFjayA9XG4gIFN0YWNrLmNsZWFyIHN0YWNrO1xuICBsZXQgcXVldWVfZWxlbSA9IHsgc2l6ZSA9IFNpemUudW5rbm93bjsgdG9rZW4gPSBQcF90ZXh0IFwiXCI7IGxlbmd0aCA9IDAgfSBpblxuICBTdGFjay5wdXNoIHsgbGVmdF90b3RhbCA9IC0xOyBxdWV1ZV9lbGVtIH0gc3RhY2tcblxuKCogU2V0dGluZyB0aGUgc2l6ZSBvZiBib3hlcyBvbiBzY2FuIHN0YWNrOlxuICAgaWYgdHkgPSB0cnVlIHRoZW4gc2l6ZSBvZiBicmVhayBpcyBzZXQgZWxzZSBzaXplIG9mIGJveCBpcyBzZXQ7XG4gICBpbiBlYWNoIGNhc2UgcHBfc2Nhbl9zdGFjayBpcyBwb3BwZWQuXG5cbiAgIE5vdGU6XG4gICBQYXR0ZXJuIG1hdGNoaW5nIG9uIHNjYW4gc3RhY2sgaXMgZXhoYXVzdGl2ZSwgc2luY2Ugc2Nhbl9zdGFjayBpcyBuZXZlclxuICAgZW1wdHkuXG4gICBQYXR0ZXJuIG1hdGNoaW5nIG9uIHRva2VuIGluIHNjYW4gc3RhY2sgaXMgYWxzbyBleGhhdXN0aXZlLFxuICAgc2luY2Ugc2Nhbl9wdXNoIGlzIHVzZWQgb24gYnJlYWtzIGFuZCBvcGVuaW5nIG9mIGJveGVzLiAqKVxubGV0IHNldF9zaXplIHN0YXRlIHR5ID1cbiAgbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF9zY2FuX3N0YWNrIHdpdGhcbiAgfCBOb25lIC0+ICgpICgqIHNjYW5fc3RhY2sgaXMgbmV2ZXIgZW1wdHkuICopXG4gIHwgU29tZSB7IGxlZnRfdG90YWw7IHF1ZXVlX2VsZW0gfSAtPlxuICAgIGxldCBzaXplID0gU2l6ZS50b19pbnQgcXVldWVfZWxlbS5zaXplIGluXG4gICAgKCogdGVzdCBpZiBzY2FuIHN0YWNrIGNvbnRhaW5zIGFueSBkYXRhIHRoYXQgaXMgbm90IG9ic29sZXRlLiAqKVxuICAgIGlmIGxlZnRfdG90YWwgPCBzdGF0ZS5wcF9sZWZ0X3RvdGFsIHRoZW5cbiAgICAgIGluaXRpYWxpemVfc2Nhbl9zdGFjayBzdGF0ZS5wcF9zY2FuX3N0YWNrXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggcXVldWVfZWxlbS50b2tlbiB3aXRoXG4gICAgICB8IFBwX2JyZWFrIF8gfCBQcF90YnJlYWsgKF8sIF8pIC0+XG4gICAgICAgIGlmIHR5IHRoZW4gYmVnaW5cbiAgICAgICAgICBxdWV1ZV9lbGVtLnNpemUgPC0gU2l6ZS5vZl9pbnQgKHN0YXRlLnBwX3JpZ2h0X3RvdGFsICsgc2l6ZSk7XG4gICAgICAgICAgU3RhY2sucG9wX29wdCBzdGF0ZS5wcF9zY2FuX3N0YWNrIHw+IGlnbm9yZVxuICAgICAgICBlbmRcbiAgICAgIHwgUHBfYmVnaW4gKF8sIF8pIC0+XG4gICAgICAgIGlmIG5vdCB0eSB0aGVuIGJlZ2luXG4gICAgICAgICAgcXVldWVfZWxlbS5zaXplIDwtIFNpemUub2ZfaW50IChzdGF0ZS5wcF9yaWdodF90b3RhbCArIHNpemUpO1xuICAgICAgICAgIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfc2Nhbl9zdGFjayB8PiBpZ25vcmVcbiAgICAgICAgZW5kXG4gICAgICB8IFBwX3RleHQgXyB8IFBwX3N0YWIgfCBQcF90YmVnaW4gXyB8IFBwX3RlbmQgfCBQcF9lbmRcbiAgICAgIHwgUHBfbmV3bGluZSB8IFBwX2lmX25ld2xpbmUgfCBQcF9vcGVuX3RhZyBfIHwgUHBfY2xvc2VfdGFnIC0+XG4gICAgICAgICgpICgqIHNjYW5fcHVzaCBpcyBvbmx5IHVzZWQgZm9yIGJyZWFrcyBhbmQgYm94ZXMuICopXG5cblxuKCogUHVzaCBhIHRva2VuIG9uIHByZXR0eS1wcmludGVyIHNjYW5uaW5nIHN0YWNrLlxuICAgSWYgYiBpcyB0cnVlIHNldF9zaXplIGlzIGNhbGxlZC4gKilcbmxldCBzY2FuX3B1c2ggc3RhdGUgYiB0b2tlbiA9XG4gIHBwX2VucXVldWUgc3RhdGUgdG9rZW47XG4gIGlmIGIgdGhlbiBzZXRfc2l6ZSBzdGF0ZSB0cnVlO1xuICBsZXQgZWxlbSA9IHsgbGVmdF90b3RhbCA9IHN0YXRlLnBwX3JpZ2h0X3RvdGFsOyBxdWV1ZV9lbGVtID0gdG9rZW4gfSBpblxuICBTdGFjay5wdXNoIGVsZW0gc3RhdGUucHBfc2Nhbl9zdGFja1xuXG5cbigqIFRvIG9wZW4gYSBuZXcgYm94IDpcbiAgIHRoZSB1c2VyIG1heSBzZXQgdGhlIGRlcHRoIGJvdW5kIHBwX21heF9ib3hlc1xuICAgYW55IHRleHQgbmVzdGVkIGRlZXBlciBpcyBwcmludGVkIGFzIHRoZSBlbGxpcHNpcyBzdHJpbmcuICopXG5sZXQgcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBicl90eSA9XG4gIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gc3RhdGUucHBfY3Vycl9kZXB0aCArIDE7XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBzaXplID0gU2l6ZS5vZl9pbnQgKC0gc3RhdGUucHBfcmlnaHRfdG90YWwpIGluXG4gICAgbGV0IGVsZW0gPSB7IHNpemU7IHRva2VuID0gUHBfYmVnaW4gKGluZGVudCwgYnJfdHkpOyBsZW5ndGggPSAwIH0gaW5cbiAgICBzY2FuX3B1c2ggc3RhdGUgZmFsc2UgZWxlbSBlbHNlXG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPSBzdGF0ZS5wcF9tYXhfYm94ZXNcbiAgdGhlbiBlbnF1ZXVlX3N0cmluZyBzdGF0ZSBzdGF0ZS5wcF9lbGxpcHNpc1xuXG5cbigqIFRoZSBib3ggd2hpY2ggaXMgYWx3YXlzIG9wZW4uICopXG5sZXQgcHBfb3Blbl9zeXNfYm94IHN0YXRlID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIDAgUHBfaG92Ym94XG5cbigqIENsb3NlIGEgYm94LCBzZXR0aW5nIHNpemVzIG9mIGl0cyBzdWIgYm94ZXMuICopXG5sZXQgcHBfY2xvc2VfYm94IHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA+IDEgdGhlblxuICBiZWdpblxuICAgIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGJlZ2luXG4gICAgICBwcF9lbnF1ZXVlIHN0YXRlIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9lbmQ7IGxlbmd0aCA9IDAgfTtcbiAgICAgIHNldF9zaXplIHN0YXRlIHRydWU7IHNldF9zaXplIHN0YXRlIGZhbHNlXG4gICAgZW5kO1xuICAgIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gc3RhdGUucHBfY3Vycl9kZXB0aCAtIDE7XG4gIGVuZFxuXG5cbigqIE9wZW4gYSB0YWcsIHB1c2hpbmcgaXQgb24gdGhlIHRhZyBzdGFjay4gKilcbmxldCBwcF9vcGVuX3N0YWcgc3RhdGUgdGFnX25hbWUgPVxuICBpZiBzdGF0ZS5wcF9wcmludF90YWdzIHRoZW5cbiAgYmVnaW5cbiAgICBTdGFjay5wdXNoIHRhZ19uYW1lIHN0YXRlLnBwX3RhZ19zdGFjaztcbiAgICBzdGF0ZS5wcF9wcmludF9vcGVuX3RhZyB0YWdfbmFtZVxuICBlbmQ7XG4gIGlmIHN0YXRlLnBwX21hcmtfdGFncyB0aGVuXG4gICAgbGV0IHRva2VuID0gUHBfb3Blbl90YWcgdGFnX25hbWUgaW5cbiAgICBwcF9lbnF1ZXVlIHN0YXRlIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW47IGxlbmd0aCA9IDAgfVxuXG5cbigqIENsb3NlIGEgdGFnLCBwb3BwaW5nIGl0IGZyb20gdGhlIHRhZyBzdGFjay4gKilcbmxldCBwcF9jbG9zZV9zdGFnIHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfbWFya190YWdzIHRoZW5cbiAgICBwcF9lbnF1ZXVlIHN0YXRlIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9jbG9zZV90YWc7IGxlbmd0aCA9IDAgfTtcbiAgaWYgc3RhdGUucHBfcHJpbnRfdGFncyB0aGVuXG4gICAgbWF0Y2ggU3RhY2sucG9wX29wdCBzdGF0ZS5wcF90YWdfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKSAoKiBObyBtb3JlIHRhZyB0byBjbG9zZS4gKilcbiAgICB8IFNvbWUgdGFnX25hbWUgLT5cbiAgICAgIHN0YXRlLnBwX3ByaW50X2Nsb3NlX3RhZyB0YWdfbmFtZVxuXG5sZXQgcHBfb3Blbl90YWcgc3RhdGUgcyA9IHBwX29wZW5fc3RhZyBzdGF0ZSAoU3RyaW5nX3RhZyBzKVxubGV0IHBwX2Nsb3NlX3RhZyBzdGF0ZSAoKSA9IHBwX2Nsb3NlX3N0YWcgc3RhdGUgKClcblxubGV0IHBwX3NldF9wcmludF90YWdzIHN0YXRlIGIgPSBzdGF0ZS5wcF9wcmludF90YWdzIDwtIGJcbmxldCBwcF9zZXRfbWFya190YWdzIHN0YXRlIGIgPSBzdGF0ZS5wcF9tYXJrX3RhZ3MgPC0gYlxubGV0IHBwX2dldF9wcmludF90YWdzIHN0YXRlICgpID0gc3RhdGUucHBfcHJpbnRfdGFnc1xubGV0IHBwX2dldF9tYXJrX3RhZ3Mgc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXJrX3RhZ3NcbmxldCBwcF9zZXRfdGFncyBzdGF0ZSBiID1cbiAgcHBfc2V0X3ByaW50X3RhZ3Mgc3RhdGUgYjsgcHBfc2V0X21hcmtfdGFncyBzdGF0ZSBiXG5cblxuKCogSGFuZGxpbmcgdGFnIGhhbmRsaW5nIGZ1bmN0aW9uczogZ2V0L3NldCBmdW5jdGlvbnMuICopXG5sZXQgcHBfZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBzdGF0ZSAoKSA9IHtcbiAgbWFya19vcGVuX3N0YWcgPSBzdGF0ZS5wcF9tYXJrX29wZW5fdGFnO1xuICBtYXJrX2Nsb3NlX3N0YWcgPSBzdGF0ZS5wcF9tYXJrX2Nsb3NlX3RhZztcbiAgcHJpbnRfb3Blbl9zdGFnID0gc3RhdGUucHBfcHJpbnRfb3Blbl90YWc7XG4gIHByaW50X2Nsb3NlX3N0YWcgPSBzdGF0ZS5wcF9wcmludF9jbG9zZV90YWc7XG59XG5cblxubGV0IHBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgc3RhdGUge1xuICAgICBtYXJrX29wZW5fc3RhZyA9IG1vdDtcbiAgICAgbWFya19jbG9zZV9zdGFnID0gbWN0O1xuICAgICBwcmludF9vcGVuX3N0YWcgPSBwb3Q7XG4gICAgIHByaW50X2Nsb3NlX3N0YWcgPSBwY3Q7XG4gIH0gPVxuICBzdGF0ZS5wcF9tYXJrX29wZW5fdGFnIDwtIG1vdDtcbiAgc3RhdGUucHBfbWFya19jbG9zZV90YWcgPC0gbWN0O1xuICBzdGF0ZS5wcF9wcmludF9vcGVuX3RhZyA8LSBwb3Q7XG4gIHN0YXRlLnBwX3ByaW50X2Nsb3NlX3RhZyA8LSBwY3RcblxuXG4oKiBJbml0aWFsaXplIHByZXR0eS1wcmludGVyLiAqKVxubGV0IHBwX3Jpbml0IHN0YXRlID1cbiAgcHBfY2xlYXJfcXVldWUgc3RhdGU7XG4gIGluaXRpYWxpemVfc2Nhbl9zdGFjayBzdGF0ZS5wcF9zY2FuX3N0YWNrO1xuICBTdGFjay5jbGVhciBzdGF0ZS5wcF9mb3JtYXRfc3RhY2s7XG4gIFN0YWNrLmNsZWFyIHN0YXRlLnBwX3Rib3hfc3RhY2s7XG4gIFN0YWNrLmNsZWFyIHN0YXRlLnBwX3RhZ19zdGFjaztcbiAgU3RhY2suY2xlYXIgc3RhdGUucHBfbWFya19zdGFjaztcbiAgc3RhdGUucHBfY3VycmVudF9pbmRlbnQgPC0gMDtcbiAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSAwO1xuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX21hcmdpbjtcbiAgcHBfb3Blbl9zeXNfYm94IHN0YXRlXG5cbmxldCBjbGVhcl90YWdfc3RhY2sgc3RhdGUgPVxuICBTdGFjay5pdGVyIChmdW4gXyAtPiBwcF9jbG9zZV90YWcgc3RhdGUgKCkpIHN0YXRlLnBwX3RhZ19zdGFja1xuXG5cbigqIEZsdXNoaW5nIHByZXR0eS1wcmludGVyIHF1ZXVlLiAqKVxubGV0IHBwX2ZsdXNoX3F1ZXVlIHN0YXRlIGIgPVxuICBjbGVhcl90YWdfc3RhY2sgc3RhdGU7XG4gIHdoaWxlIHN0YXRlLnBwX2N1cnJfZGVwdGggPiAxIGRvXG4gICAgcHBfY2xvc2VfYm94IHN0YXRlICgpXG4gIGRvbmU7XG4gIHN0YXRlLnBwX3JpZ2h0X3RvdGFsIDwtIHBwX2luZmluaXR5O1xuICBhZHZhbmNlX2xlZnQgc3RhdGU7XG4gIGlmIGIgdGhlbiBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZTtcbiAgcHBfcmluaXQgc3RhdGVcblxuKCpcblxuICBQcm9jZWR1cmVzIHRvIGZvcm1hdCB2YWx1ZXMgYW5kIHVzZSBib3hlcy5cblxuKilcblxuKCogVG8gZm9ybWF0IGEgc3RyaW5nLiAqKVxubGV0IHBwX3ByaW50X2FzX3NpemUgc3RhdGUgc2l6ZSBzID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlc1xuICB0aGVuIGVucXVldWVfc3RyaW5nX2FzIHN0YXRlIHNpemUgc1xuXG5cbmxldCBwcF9wcmludF9hcyBzdGF0ZSBpc2l6ZSBzID1cbiAgcHBfcHJpbnRfYXNfc2l6ZSBzdGF0ZSAoU2l6ZS5vZl9pbnQgaXNpemUpIHNcblxuXG5sZXQgcHBfcHJpbnRfc3RyaW5nIHN0YXRlIHMgPVxuICBwcF9wcmludF9hcyBzdGF0ZSAoU3RyaW5nLmxlbmd0aCBzKSBzXG5cbmxldCBwcF9wcmludF9ieXRlcyBzdGF0ZSBzID1cbiAgcHBfcHJpbnRfYXMgc3RhdGUgKEJ5dGVzLmxlbmd0aCBzKSAoQnl0ZXMudG9fc3RyaW5nIHMpXG5cbigqIFRvIGZvcm1hdCBhbiBpbnRlZ2VyLiAqKVxubGV0IHBwX3ByaW50X2ludCBzdGF0ZSBpID0gcHBfcHJpbnRfc3RyaW5nIHN0YXRlIChJbnQudG9fc3RyaW5nIGkpXG5cbigqIFRvIGZvcm1hdCBhIGZsb2F0LiAqKVxubGV0IHBwX3ByaW50X2Zsb2F0IHN0YXRlIGYgPSBwcF9wcmludF9zdHJpbmcgc3RhdGUgKHN0cmluZ19vZl9mbG9hdCBmKVxuXG4oKiBUbyBmb3JtYXQgYSBib29sZWFuLiAqKVxubGV0IHBwX3ByaW50X2Jvb2wgc3RhdGUgYiA9IHBwX3ByaW50X3N0cmluZyBzdGF0ZSAoc3RyaW5nX29mX2Jvb2wgYilcblxuKCogVG8gZm9ybWF0IGEgY2hhci4gKilcbmxldCBwcF9wcmludF9jaGFyIHN0YXRlIGMgPVxuICBwcF9wcmludF9hcyBzdGF0ZSAxIChTdHJpbmcubWFrZSAxIGMpXG5cblxuKCogT3BlbmluZyBib3hlcy4gKilcbmxldCBwcF9vcGVuX2hib3ggc3RhdGUgKCkgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgMCBQcF9oYm94XG5hbmQgcHBfb3Blbl92Ym94IHN0YXRlIGluZGVudCA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgUHBfdmJveFxuXG5hbmQgcHBfb3Blbl9odmJveCBzdGF0ZSBpbmRlbnQgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IFBwX2h2Ym94XG5hbmQgcHBfb3Blbl9ob3Zib3ggc3RhdGUgaW5kZW50ID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBQcF9ob3Zib3hcbmFuZCBwcF9vcGVuX2JveCBzdGF0ZSBpbmRlbnQgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IFBwX2JveFxuXG5cbigqIFByaW50aW5nIHF1ZXVlZCB0ZXh0LlxuXG4gICBbcHBfcHJpbnRfZmx1c2hdIHByaW50cyBhbGwgcGVuZGluZyBpdGVtcyBpbiB0aGUgcHJldHR5LXByaW50ZXIgcXVldWUgYW5kXG4gICB0aGVuIGZsdXNoZXMgdGhlIGxvdyBsZXZlbCBvdXRwdXQgZGV2aWNlIG9mIHRoZSBmb3JtYXR0ZXIgdG8gYWN0dWFsbHlcbiAgIGRpc3BsYXkgcHJpbnRpbmcgbWF0ZXJpYWwuXG5cbiAgIFtwcF9wcmludF9uZXdsaW5lXSBiZWhhdmVzIGFzIFtwcF9wcmludF9mbHVzaF0gYWZ0ZXIgcHJpbnRpbmcgYW4gYWRkaXRpb25hbFxuICAgbmV3IGxpbmUuICopXG5sZXQgcHBfcHJpbnRfbmV3bGluZSBzdGF0ZSAoKSA9XG4gIHBwX2ZsdXNoX3F1ZXVlIHN0YXRlIHRydWU7IHN0YXRlLnBwX291dF9mbHVzaCAoKVxuYW5kIHBwX3ByaW50X2ZsdXNoIHN0YXRlICgpID1cbiAgcHBfZmx1c2hfcXVldWUgc3RhdGUgZmFsc2U7IHN0YXRlLnBwX291dF9mbHVzaCAoKVxuXG5cbigqIFRvIGdldCBhIG5ld2xpbmUgd2hlbiBvbmUgZG9lcyBub3Qgd2FudCB0byBjbG9zZSB0aGUgY3VycmVudCBib3guICopXG5sZXQgcHBfZm9yY2VfbmV3bGluZSBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfbmV3bGluZTsgbGVuZ3RoID0gMCB9XG5cblxuKCogVG8gZm9ybWF0IHNvbWV0aGluZywgb25seSBpbiBjYXNlIHRoZSBsaW5lIGhhcyBqdXN0IGJlZW4gYnJva2VuLiAqKVxubGV0IHBwX3ByaW50X2lmX25ld2xpbmUgc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGVcbiAgICAgIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9pZl9uZXdsaW5lOyBsZW5ndGggPSAwIH1cblxuXG4oKiBHZW5lcmFsaXplZCBicmVhayBoaW50IHRoYXQgYWxsb3dzIHByaW50aW5nIHN0cmluZ3MgYmVmb3JlL2FmdGVyXG4gICBzYW1lLWxpbmUgb2Zmc2V0ICh3aWR0aCkgb3IgbmV3LWxpbmUgb2Zmc2V0ICopXG5sZXQgcHBfcHJpbnRfY3VzdG9tX2JyZWFrIHN0YXRlIH5maXRzIH5icmVha3MgPVxuICBsZXQgYmVmb3JlLCB3aWR0aCwgYWZ0ZXIgPSBmaXRzIGluXG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBzaXplID0gU2l6ZS5vZl9pbnQgKC0gc3RhdGUucHBfcmlnaHRfdG90YWwpIGluXG4gICAgbGV0IHRva2VuID0gUHBfYnJlYWsgeyBmaXRzOyBicmVha3MgfSBpblxuICAgIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoIGJlZm9yZSArIHdpZHRoICsgU3RyaW5nLmxlbmd0aCBhZnRlciBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbjsgbGVuZ3RoIH0gaW5cbiAgICBzY2FuX3B1c2ggc3RhdGUgdHJ1ZSBlbGVtXG5cbigqIFByaW50aW5nIGJyZWFrIGhpbnRzOlxuICAgQSBicmVhayBoaW50IGluZGljYXRlcyB3aGVyZSBhIGJveCBtYXkgYmUgYnJva2VuLlxuICAgSWYgbGluZSBpcyBicm9rZW4gdGhlbiBvZmZzZXQgaXMgYWRkZWQgdG8gdGhlIGluZGVudGF0aW9uIG9mIHRoZSBjdXJyZW50XG4gICBib3ggZWxzZSAodGhlIHZhbHVlIG9mKSB3aWR0aCBibGFua3MgYXJlIHByaW50ZWQuICopXG5sZXQgcHBfcHJpbnRfYnJlYWsgc3RhdGUgd2lkdGggb2Zmc2V0ID1cbiAgcHBfcHJpbnRfY3VzdG9tX2JyZWFrIHN0YXRlXG4gICAgfmZpdHM6KFwiXCIsIHdpZHRoLCBcIlwiKSB+YnJlYWtzOihcIlwiLCBvZmZzZXQsIFwiXCIpXG5cblxuKCogUHJpbnQgYSBzcGFjZSA6XG4gICBhIHNwYWNlIGlzIGEgYnJlYWsgaGludCB0aGF0IHByaW50cyBhIHNpbmdsZSBzcGFjZSBpZiB0aGUgYnJlYWsgZG9lcyBub3RcbiAgIHNwbGl0IHRoZSBsaW5lO1xuICAgYSBjdXQgaXMgYSBicmVhayBoaW50IHRoYXQgcHJpbnRzIG5vdGhpbmcgaWYgdGhlIGJyZWFrIGRvZXMgbm90IHNwbGl0IHRoZVxuICAgbGluZS4gKilcbmxldCBwcF9wcmludF9zcGFjZSBzdGF0ZSAoKSA9IHBwX3ByaW50X2JyZWFrIHN0YXRlIDEgMFxuYW5kIHBwX3ByaW50X2N1dCBzdGF0ZSAoKSA9IHBwX3ByaW50X2JyZWFrIHN0YXRlIDAgMFxuXG5cbigqIFRhYnVsYXRpb24gYm94ZXMuICopXG5sZXQgcHBfb3Blbl90Ym94IHN0YXRlICgpID1cbiAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSBzdGF0ZS5wcF9jdXJyX2RlcHRoICsgMTtcbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IHNpemUgPSBTaXplLnplcm8gaW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZTsgdG9rZW4gPSBQcF90YmVnaW4gKFBwX3Rib3ggKHJlZiBbXSkpOyBsZW5ndGggPSAwIH0gaW5cbiAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgZWxlbVxuXG5cbigqIENsb3NlIGEgdGFidWxhdGlvbiBib3guICopXG5sZXQgcHBfY2xvc2VfdGJveCBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPiAxIHRoZW5cbiAgYmVnaW5cbiAgIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgICBsZXQgZWxlbSA9IHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF90ZW5kOyBsZW5ndGggPSAwIH0gaW5cbiAgICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIGVsZW07XG4gICAgIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gc3RhdGUucHBfY3Vycl9kZXB0aCAtIDFcbiAgZW5kXG5cblxuKCogUHJpbnQgYSB0YWJ1bGF0aW9uIGJyZWFrLiAqKVxubGV0IHBwX3ByaW50X3RicmVhayBzdGF0ZSB3aWR0aCBvZmZzZXQgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgc2l6ZSA9IFNpemUub2ZfaW50ICgtIHN0YXRlLnBwX3JpZ2h0X3RvdGFsKSBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbiA9IFBwX3RicmVhayAod2lkdGgsIG9mZnNldCk7IGxlbmd0aCA9IHdpZHRoIH0gaW5cbiAgICBzY2FuX3B1c2ggc3RhdGUgdHJ1ZSBlbGVtXG5cblxubGV0IHBwX3ByaW50X3RhYiBzdGF0ZSAoKSA9IHBwX3ByaW50X3RicmVhayBzdGF0ZSAwIDBcblxubGV0IHBwX3NldF90YWIgc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9zdGFiOyBsZW5ndGggPSAwIH0gaW5cbiAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgZWxlbVxuXG5cbigqXG5cbiAgUHJvY2VkdXJlcyB0byBjb250cm9sIHRoZSBwcmV0dHktcHJpbnRlcnNcblxuKilcblxuKCogU2V0X21heF9ib3hlcy4gKilcbmxldCBwcF9zZXRfbWF4X2JveGVzIHN0YXRlIG4gPSBpZiBuID4gMSB0aGVuIHN0YXRlLnBwX21heF9ib3hlcyA8LSBuXG5cbigqIFRvIGtub3cgdGhlIGN1cnJlbnQgbWF4aW11bSBudW1iZXIgb2YgYm94ZXMgYWxsb3dlZC4gKilcbmxldCBwcF9nZXRfbWF4X2JveGVzIHN0YXRlICgpID0gc3RhdGUucHBfbWF4X2JveGVzXG5cbmxldCBwcF9vdmVyX21heF9ib3hlcyBzdGF0ZSAoKSA9IHN0YXRlLnBwX2N1cnJfZGVwdGggPSBzdGF0ZS5wcF9tYXhfYm94ZXNcblxuKCogRWxsaXBzaXMuICopXG5sZXQgcHBfc2V0X2VsbGlwc2lzX3RleHQgc3RhdGUgcyA9IHN0YXRlLnBwX2VsbGlwc2lzIDwtIHNcbmFuZCBwcF9nZXRfZWxsaXBzaXNfdGV4dCBzdGF0ZSAoKSA9IHN0YXRlLnBwX2VsbGlwc2lzXG5cblxuKCogVG8gc2V0IHRoZSBtYXJnaW4gb2YgcHJldHR5LXByaW50ZXIuICopXG5sZXQgcHBfbGltaXQgbiA9XG4gIGlmIG4gPCBwcF9pbmZpbml0eSB0aGVuIG4gZWxzZSBwcmVkIHBwX2luZmluaXR5XG5cblxuKCogSW50ZXJuYWwgcHJldHR5LXByaW50ZXIgZnVuY3Rpb25zLiAqKVxubGV0IHBwX3NldF9taW5fc3BhY2VfbGVmdCBzdGF0ZSBuID1cbiAgaWYgbiA+PSAxIHRoZW5cbiAgICBsZXQgbiA9IHBwX2xpbWl0IG4gaW5cbiAgICBzdGF0ZS5wcF9taW5fc3BhY2VfbGVmdCA8LSBuO1xuICAgIHN0YXRlLnBwX21heF9pbmRlbnQgPC0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfbWluX3NwYWNlX2xlZnQ7XG4gICAgcHBfcmluaXQgc3RhdGVcblxuXG4oKiBJbml0aWFsbHksIHdlIGhhdmUgOlxuICAgcHBfbWF4X2luZGVudCA9IHBwX21hcmdpbiAtIHBwX21pbl9zcGFjZV9sZWZ0LCBhbmRcbiAgIHBwX3NwYWNlX2xlZnQgPSBwcF9tYXJnaW4uICopXG5sZXQgcHBfc2V0X21heF9pbmRlbnQgc3RhdGUgbiA9XG4gIGlmIG4gPiAxIHRoZW5cbiAgICBwcF9zZXRfbWluX3NwYWNlX2xlZnQgc3RhdGUgKHN0YXRlLnBwX21hcmdpbiAtIG4pXG5cblxubGV0IHBwX2dldF9tYXhfaW5kZW50IHN0YXRlICgpID0gc3RhdGUucHBfbWF4X2luZGVudFxuXG5sZXQgcHBfc2V0X21hcmdpbiBzdGF0ZSBuID1cbiAgaWYgbiA+PSAxIHRoZW5cbiAgICBsZXQgbiA9IHBwX2xpbWl0IG4gaW5cbiAgICBzdGF0ZS5wcF9tYXJnaW4gPC0gbjtcbiAgICBsZXQgbmV3X21heF9pbmRlbnQgPVxuICAgICAgKCogVHJ5IHRvIG1haW50YWluIG1heF9pbmRlbnQgdG8gaXRzIGFjdHVhbCB2YWx1ZS4gKilcbiAgICAgIGlmIHN0YXRlLnBwX21heF9pbmRlbnQgPD0gc3RhdGUucHBfbWFyZ2luXG4gICAgICB0aGVuIHN0YXRlLnBwX21heF9pbmRlbnQgZWxzZVxuICAgICAgKCogSWYgcG9zc2libGUgbWFpbnRhaW4gcHBfbWluX3NwYWNlX2xlZnQgdG8gaXRzIGFjdHVhbCB2YWx1ZSxcbiAgICAgICAgIGlmIHRoaXMgbGVhZHMgdG8gYSB0b28gc21hbGwgbWF4X2luZGVudCwgdGFrZSBoYWxmIG9mIHRoZVxuICAgICAgICAgbmV3IG1hcmdpbiwgaWYgaXQgaXMgZ3JlYXRlciB0aGFuIDEuICopXG4gICAgICAgSW50Lm1heCAoSW50Lm1heCAoc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfbWluX3NwYWNlX2xlZnQpXG4gICAgICAgICAgICAgICAgKHN0YXRlLnBwX21hcmdpbiAvIDIpKSAxIGluXG4gICAgKCogUmVidWlsZCBpbnZhcmlhbnRzLiAqKVxuICAgIHBwX3NldF9tYXhfaW5kZW50IHN0YXRlIG5ld19tYXhfaW5kZW50XG5cblxuKCoqIEdlb21ldHJ5IGZ1bmN0aW9ucyBhbmQgdHlwZXMgKilcbnR5cGUgZ2VvbWV0cnkgPSB7IG1heF9pbmRlbnQ6aW50OyBtYXJnaW46IGludH1cblxubGV0IHZhbGlkYXRlX2dlb21ldHJ5IHttYXJnaW47IG1heF9pbmRlbnR9ID1cbiAgaWYgbWF4X2luZGVudCA8IDIgdGhlblxuICAgIEVycm9yIFwibWF4X2luZGVudCA8IDJcIlxuICBlbHNlIGlmIG1hcmdpbiA8PSBtYXhfaW5kZW50IHRoZW5cbiAgICBFcnJvciBcIm1hcmdpbiA8PSBtYXhfaW5kZW50XCJcbiAgZWxzZSBPayAoKVxuXG5sZXQgY2hlY2tfZ2VvbWV0cnkgZ2VvbWV0cnkgPVxuICBtYXRjaCB2YWxpZGF0ZV9nZW9tZXRyeSBnZW9tZXRyeSB3aXRoXG4gIHwgT2sgKCkgLT4gdHJ1ZVxuICB8IEVycm9yIF8gLT4gZmFsc2VcblxubGV0IHBwX2dldF9tYXJnaW4gc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXJnaW5cblxubGV0IHBwX3NldF9mdWxsX2dlb21ldHJ5IHN0YXRlIHttYXJnaW47IG1heF9pbmRlbnR9ID1cbiAgcHBfc2V0X21hcmdpbiBzdGF0ZSBtYXJnaW47XG4gIHBwX3NldF9tYXhfaW5kZW50IHN0YXRlIG1heF9pbmRlbnQ7XG4gICgpXG5cbmxldCBwcF9zZXRfZ2VvbWV0cnkgc3RhdGUgfm1heF9pbmRlbnQgfm1hcmdpbiA9XG4gIGxldCBnZW9tZXRyeSA9IHsgbWF4X2luZGVudDsgbWFyZ2luIH0gaW5cbiAgbWF0Y2ggdmFsaWRhdGVfZ2VvbWV0cnkgZ2VvbWV0cnkgd2l0aFxuICB8IEVycm9yIG1zZyAtPlxuICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcIkZvcm1hdC5wcF9zZXRfZ2VvbWV0cnk6IFwiIF4gbXNnKSlcbiAgfCBPayAoKSAtPlxuICAgIHBwX3NldF9mdWxsX2dlb21ldHJ5IHN0YXRlIGdlb21ldHJ5XG5cbmxldCBwcF9zYWZlX3NldF9nZW9tZXRyeSBzdGF0ZSB+bWF4X2luZGVudCB+bWFyZ2luID1cbiAgbGV0IGdlb21ldHJ5ID0geyBtYXhfaW5kZW50OyBtYXJnaW4gfSBpblxuICBtYXRjaCB2YWxpZGF0ZV9nZW9tZXRyeSBnZW9tZXRyeSB3aXRoXG4gIHwgRXJyb3IgX21zZyAtPlxuICAgICAoKVxuICB8IE9rICgpIC0+XG4gICAgcHBfc2V0X2Z1bGxfZ2VvbWV0cnkgc3RhdGUgZ2VvbWV0cnlcblxubGV0IHBwX2dldF9nZW9tZXRyeSBzdGF0ZSAoKSA9XG4gIHsgbWFyZ2luID0gcHBfZ2V0X21hcmdpbiBzdGF0ZSAoKTsgbWF4X2luZGVudCA9IHBwX2dldF9tYXhfaW5kZW50IHN0YXRlICgpIH1cblxubGV0IHBwX3VwZGF0ZV9nZW9tZXRyeSBzdGF0ZSB1cGRhdGUgPVxuICBsZXQgZ2VvbWV0cnkgPSBwcF9nZXRfZ2VvbWV0cnkgc3RhdGUgKCkgaW5cbiAgcHBfc2V0X2Z1bGxfZ2VvbWV0cnkgc3RhdGUgKHVwZGF0ZSBnZW9tZXRyeSlcblxuKCogU2V0dGluZyBhIGZvcm1hdHRlciBiYXNpYyBvdXRwdXQgZnVuY3Rpb25zLiAqKVxubGV0IHBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGF0ZSB7XG4gICAgICBvdXRfc3RyaW5nID0gZjtcbiAgICAgIG91dF9mbHVzaCA9IGc7XG4gICAgICBvdXRfbmV3bGluZSA9IGg7XG4gICAgICBvdXRfc3BhY2VzID0gaTtcbiAgICAgIG91dF9pbmRlbnQgPSBqO1xuICAgIH0gPVxuICBzdGF0ZS5wcF9vdXRfc3RyaW5nIDwtIGY7XG4gIHN0YXRlLnBwX291dF9mbHVzaCA8LSBnO1xuICBzdGF0ZS5wcF9vdXRfbmV3bGluZSA8LSBoO1xuICBzdGF0ZS5wcF9vdXRfc3BhY2VzIDwtIGk7XG4gIHN0YXRlLnBwX291dF9pbmRlbnQgPC0galxuXG5sZXQgcHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHN0YXRlICgpID0ge1xuICBvdXRfc3RyaW5nID0gc3RhdGUucHBfb3V0X3N0cmluZztcbiAgb3V0X2ZsdXNoID0gc3RhdGUucHBfb3V0X2ZsdXNoO1xuICBvdXRfbmV3bGluZSA9IHN0YXRlLnBwX291dF9uZXdsaW5lO1xuICBvdXRfc3BhY2VzID0gc3RhdGUucHBfb3V0X3NwYWNlcztcbiAgb3V0X2luZGVudCA9IHN0YXRlLnBwX291dF9pbmRlbnQ7XG59XG5cblxuKCogU2V0dGluZyBhIGZvcm1hdHRlciBiYXNpYyBzdHJpbmcgb3V0cHV0IGFuZCBmbHVzaCBmdW5jdGlvbnMuICopXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0YXRlIGYgZyA9XG4gIHN0YXRlLnBwX291dF9zdHJpbmcgPC0gZjsgc3RhdGUucHBfb3V0X2ZsdXNoIDwtIGdcblxubGV0IHBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGF0ZSAoKSA9XG4gIChzdGF0ZS5wcF9vdXRfc3RyaW5nLCBzdGF0ZS5wcF9vdXRfZmx1c2gpXG5cblxuKCogVGhlIGRlZmF1bHQgZnVuY3Rpb24gdG8gb3V0cHV0IG5ldyBsaW5lcy4gKilcbmxldCBkaXNwbGF5X25ld2xpbmUgc3RhdGUgKCkgPSBzdGF0ZS5wcF9vdXRfc3RyaW5nIFwiXFxuXCIgMCAgMVxuXG4oKiBUaGUgZGVmYXVsdCBmdW5jdGlvbiB0byBvdXRwdXQgc3BhY2VzLiAqKVxubGV0IGJsYW5rX2xpbmUgPSBTdHJpbmcubWFrZSA4MCAnICdcbmxldCByZWMgZGlzcGxheV9ibGFua3Mgc3RhdGUgbiA9XG4gIGlmIG4gPiAwIHRoZW5cbiAgaWYgbiA8PSA4MCB0aGVuIHN0YXRlLnBwX291dF9zdHJpbmcgYmxhbmtfbGluZSAwIG4gZWxzZVxuICBiZWdpblxuICAgIHN0YXRlLnBwX291dF9zdHJpbmcgYmxhbmtfbGluZSAwIDgwO1xuICAgIGRpc3BsYXlfYmxhbmtzIHN0YXRlIChuIC0gODApXG4gIGVuZFxuXG5cbigqIFRoZSBkZWZhdWx0IGZ1bmN0aW9uIHRvIG91dHB1dCBpbmRlbnRhdGlvbiBvZiBuZXcgbGluZXMuICopXG5sZXQgZGlzcGxheV9pbmRlbnQgPSBkaXNwbGF5X2JsYW5rc1xuXG4oKiBTZXR0aW5nIGEgZm9ybWF0dGVyIGJhc2ljIG91dHB1dCBmdW5jdGlvbnMgYXMgcHJpbnRpbmcgdG8gYSBnaXZlblxuICAgW1BlcnZhc2l2ZS5vdXRfY2hhbm5lbF0gdmFsdWUuICopXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCBzdGF0ZSBvYyA9XG4gIHN0YXRlLnBwX291dF9zdHJpbmcgPC0gb3V0cHV0X3N1YnN0cmluZyBvYztcbiAgc3RhdGUucHBfb3V0X2ZsdXNoIDwtIChmdW4gKCkgLT4gZmx1c2ggb2MpO1xuICBzdGF0ZS5wcF9vdXRfbmV3bGluZSA8LSBkaXNwbGF5X25ld2xpbmUgc3RhdGU7XG4gIHN0YXRlLnBwX291dF9zcGFjZXMgPC0gZGlzcGxheV9ibGFua3Mgc3RhdGU7XG4gIHN0YXRlLnBwX291dF9pbmRlbnQgPC0gZGlzcGxheV9pbmRlbnQgc3RhdGVcblxuKCpcblxuICBEZWZpbmluZyBzcGVjaWZpYyBmb3JtYXR0ZXJzXG5cbiopXG5cbmxldCBkZWZhdWx0X3BwX21hcmtfb3Blbl90YWcgPSBmdW5jdGlvblxuICB8IFN0cmluZ190YWcgcyAtPiBcIjxcIiBeIHMgXiBcIj5cIlxuICB8IF8gLT4gXCJcIlxubGV0IGRlZmF1bHRfcHBfbWFya19jbG9zZV90YWcgPSBmdW5jdGlvblxuICB8IFN0cmluZ190YWcgcyAtPiBcIjwvXCIgXiBzIF4gXCI+XCJcbiAgfCBfIC0+IFwiXCJcblxubGV0IGRlZmF1bHRfcHBfcHJpbnRfb3Blbl90YWcgPSBpZ25vcmVcbmxldCBkZWZhdWx0X3BwX3ByaW50X2Nsb3NlX3RhZyA9IGlnbm9yZVxuXG4oKiBCdWlsZGluZyBhIGZvcm1hdHRlciBnaXZlbiBpdHMgYmFzaWMgb3V0cHV0IGZ1bmN0aW9ucy5cbiAgIE90aGVyIGZpZWxkcyBnZXQgcmVhc29uYWJsZSBkZWZhdWx0IHZhbHVlcy4gKilcbmxldCBwcF9tYWtlX2Zvcm1hdHRlciBmIGcgaCBpIGogPVxuICAoKiBUaGUgaW5pdGlhbCBzdGF0ZSBvZiB0aGUgZm9ybWF0dGVyIGNvbnRhaW5zIGEgZHVtbXkgYm94LiAqKVxuICBsZXQgcHBfcXVldWUgPSBRdWV1ZS5jcmVhdGUgKCkgaW5cbiAgbGV0IHN5c190b2sgPVxuICAgIHsgc2l6ZSA9IFNpemUudW5rbm93bjsgdG9rZW4gPSBQcF9iZWdpbiAoMCwgUHBfaG92Ym94KTsgbGVuZ3RoID0gMCB9IGluXG4gIFF1ZXVlLmFkZCBzeXNfdG9rIHBwX3F1ZXVlO1xuICBsZXQgc2Nhbl9zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKSBpblxuICBpbml0aWFsaXplX3NjYW5fc3RhY2sgc2Nhbl9zdGFjaztcbiAgU3RhY2sucHVzaCB7IGxlZnRfdG90YWwgPSAxOyBxdWV1ZV9lbGVtID0gc3lzX3RvayB9IHNjYW5fc3RhY2s7XG4gIGxldCBwcF9tYXJnaW4gPSA3OFxuICBhbmQgcHBfbWluX3NwYWNlX2xlZnQgPSAxMCBpblxuICB7XG4gICAgcHBfc2Nhbl9zdGFjayA9IHNjYW5fc3RhY2s7XG4gICAgcHBfZm9ybWF0X3N0YWNrID0gU3RhY2suY3JlYXRlICgpO1xuICAgIHBwX3Rib3hfc3RhY2sgPSBTdGFjay5jcmVhdGUgKCk7XG4gICAgcHBfdGFnX3N0YWNrID0gU3RhY2suY3JlYXRlICgpO1xuICAgIHBwX21hcmtfc3RhY2sgPSBTdGFjay5jcmVhdGUgKCk7XG4gICAgcHBfbWFyZ2luID0gcHBfbWFyZ2luO1xuICAgIHBwX21pbl9zcGFjZV9sZWZ0ID0gcHBfbWluX3NwYWNlX2xlZnQ7XG4gICAgcHBfbWF4X2luZGVudCA9IHBwX21hcmdpbiAtIHBwX21pbl9zcGFjZV9sZWZ0O1xuICAgIHBwX3NwYWNlX2xlZnQgPSBwcF9tYXJnaW47XG4gICAgcHBfY3VycmVudF9pbmRlbnQgPSAwO1xuICAgIHBwX2lzX25ld19saW5lID0gdHJ1ZTtcbiAgICBwcF9sZWZ0X3RvdGFsID0gMTtcbiAgICBwcF9yaWdodF90b3RhbCA9IDE7XG4gICAgcHBfY3Vycl9kZXB0aCA9IDE7XG4gICAgcHBfbWF4X2JveGVzID0gbWF4X2ludDtcbiAgICBwcF9lbGxpcHNpcyA9IFwiLlwiO1xuICAgIHBwX291dF9zdHJpbmcgPSBmO1xuICAgIHBwX291dF9mbHVzaCA9IGc7XG4gICAgcHBfb3V0X25ld2xpbmUgPSBoO1xuICAgIHBwX291dF9zcGFjZXMgPSBpO1xuICAgIHBwX291dF9pbmRlbnQgPSBqO1xuICAgIHBwX3ByaW50X3RhZ3MgPSBmYWxzZTtcbiAgICBwcF9tYXJrX3RhZ3MgPSBmYWxzZTtcbiAgICBwcF9tYXJrX29wZW5fdGFnID0gZGVmYXVsdF9wcF9tYXJrX29wZW5fdGFnO1xuICAgIHBwX21hcmtfY2xvc2VfdGFnID0gZGVmYXVsdF9wcF9tYXJrX2Nsb3NlX3RhZztcbiAgICBwcF9wcmludF9vcGVuX3RhZyA9IGRlZmF1bHRfcHBfcHJpbnRfb3Blbl90YWc7XG4gICAgcHBfcHJpbnRfY2xvc2VfdGFnID0gZGVmYXVsdF9wcF9wcmludF9jbG9zZV90YWc7XG4gICAgcHBfcXVldWUgPSBwcF9xdWV1ZTtcbiAgfVxuXG5cbigqIEJ1aWxkIGEgZm9ybWF0dGVyIG91dCBvZiBpdHMgb3V0IGZ1bmN0aW9ucy4gKilcbmxldCBmb3JtYXR0ZXJfb2Zfb3V0X2Z1bmN0aW9ucyBvdXRfZnVucyA9XG4gIHBwX21ha2VfZm9ybWF0dGVyXG4gICAgb3V0X2Z1bnMub3V0X3N0cmluZ1xuICAgIG91dF9mdW5zLm91dF9mbHVzaFxuICAgIG91dF9mdW5zLm91dF9uZXdsaW5lXG4gICAgb3V0X2Z1bnMub3V0X3NwYWNlc1xuICAgIG91dF9mdW5zLm91dF9pbmRlbnRcblxuXG4oKiBNYWtlIGEgZm9ybWF0dGVyIHdpdGggZGVmYXVsdCBmdW5jdGlvbnMgdG8gb3V0cHV0IHNwYWNlcyxcbiAgaW5kZW50YXRpb24sIGFuZCBuZXcgbGluZXMuICopXG5sZXQgbWFrZV9mb3JtYXR0ZXIgb3V0cHV0IGZsdXNoID1cbiAgbGV0IHBwZiA9IHBwX21ha2VfZm9ybWF0dGVyIG91dHB1dCBmbHVzaCBpZ25vcmUgaWdub3JlIGlnbm9yZSBpblxuICBwcGYucHBfb3V0X25ld2xpbmUgPC0gZGlzcGxheV9uZXdsaW5lIHBwZjtcbiAgcHBmLnBwX291dF9zcGFjZXMgPC0gZGlzcGxheV9ibGFua3MgcHBmO1xuICBwcGYucHBfb3V0X2luZGVudCA8LSBkaXNwbGF5X2luZGVudCBwcGY7XG4gIHBwZlxuXG5cbigqIE1ha2UgYSBmb3JtYXR0ZXIgd3JpdGluZyB0byBhIGdpdmVuIFtQZXJ2YXNpdmUub3V0X2NoYW5uZWxdIHZhbHVlLiAqKVxubGV0IGZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyA9XG4gIG1ha2VfZm9ybWF0dGVyIChvdXRwdXRfc3Vic3RyaW5nIG9jKSAoZnVuICgpIC0+IGZsdXNoIG9jKVxuXG5cbigqIE1ha2UgYSBmb3JtYXR0ZXIgd3JpdGluZyB0byBhIGdpdmVuIFtCdWZmZXIudF0gdmFsdWUuICopXG5sZXQgZm9ybWF0dGVyX29mX2J1ZmZlciBiID1cbiAgbWFrZV9mb3JtYXR0ZXIgKEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGIpIGlnbm9yZVxuXG5cbigqIEFsbG9jYXRpbmcgYnVmZmVyIGZvciBwcmV0dHktcHJpbnRpbmcgcHVycG9zZXMuXG4gICBEZWZhdWx0IGJ1ZmZlciBzaXplIGlzIHBwX2J1ZmZlcl9zaXplIG9yIDUxMi5cbiopXG5sZXQgcHBfYnVmZmVyX3NpemUgPSA1MTJcbmxldCBwcF9tYWtlX2J1ZmZlciAoKSA9IEJ1ZmZlci5jcmVhdGUgcHBfYnVmZmVyX3NpemVcblxuKCogVGhlIHN0YW5kYXJkIChzaGFyZWQpIGJ1ZmZlci4gKilcbmxldCBzdGRidWYgPSBwcF9tYWtlX2J1ZmZlciAoKVxuXG4oKiBQcmVkZWZpbmVkIGZvcm1hdHRlcnMgc3RhbmRhcmQgZm9ybWF0dGVyIHRvIHByaW50XG4gICB0byBbU3RkbGliLnN0ZG91dF0sIFtTdGRsaWIuc3RkZXJyXSwgYW5kIHshc3RkYnVmfS4gKilcbmxldCBzdGRfZm9ybWF0dGVyID0gZm9ybWF0dGVyX29mX291dF9jaGFubmVsIFN0ZGxpYi5zdGRvdXRcbmFuZCBlcnJfZm9ybWF0dGVyID0gZm9ybWF0dGVyX29mX291dF9jaGFubmVsIFN0ZGxpYi5zdGRlcnJcbmFuZCBzdHJfZm9ybWF0dGVyID0gZm9ybWF0dGVyX29mX2J1ZmZlciBzdGRidWZcblxuXG4oKiBbZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBidWYgcHBmXSBmbHVzaGVzIGZvcm1hdHRlciBbcHBmXSxcbiAgIHRoZW4gcmV0dXJucyB0aGUgY29udGVudHMgb2YgYnVmZmVyIFtidWZdIHRoYXQgaXMgcmVzZXQuXG4gICBGb3JtYXR0ZXIgW3BwZl0gaXMgc3VwcG9zZWQgdG8gcHJpbnQgdG8gYnVmZmVyIFtidWZdLCBvdGhlcndpc2UgdGhpc1xuICAgZnVuY3Rpb24gaXMgbm90IHJlYWxseSB1c2VmdWwuICopXG5sZXQgZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBidWYgcHBmID1cbiAgcHBfZmx1c2hfcXVldWUgcHBmIGZhbHNlO1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgQnVmZmVyLnJlc2V0IGJ1ZjtcbiAgc1xuXG5cbigqIEZsdXNoIFtzdHJfZm9ybWF0dGVyXSBhbmQgZ2V0IHRoZSBjb250ZW50cyBvZiBbc3RkYnVmXS4gKilcbmxldCBmbHVzaF9zdHJfZm9ybWF0dGVyICgpID0gZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBzdGRidWYgc3RyX2Zvcm1hdHRlclxuXG4oKlxuICBTeW1ib2xpYyBwcmV0dHktcHJpbnRpbmdcbiopXG5cbigqXG4gIFN5bWJvbGljIHByZXR0eS1wcmludGluZyBpcyBwcmV0dHktcHJpbnRpbmcgd2l0aCBubyBsb3cgbGV2ZWwgb3V0cHV0LlxuXG4gIFdoZW4gdXNpbmcgYSBzeW1ib2xpYyBmb3JtYXR0ZXIsIGFsbCByZWd1bGFyIHByZXR0eS1wcmludGluZyBhY3Rpdml0aWVzXG4gIG9jY3VyIGJ1dCBvdXRwdXQgbWF0ZXJpYWwgaXMgc3ltYm9saWMgYW5kIHN0b3JlZCBpbiBhIGJ1ZmZlciBvZiBvdXRwdXRcbiAgaXRlbXMuIEF0IHRoZSBlbmQgb2YgcHJldHR5LXByaW50aW5nLCBmbHVzaGluZyB0aGUgb3V0cHV0IGJ1ZmZlciBhbGxvd3NcbiAgcG9zdC1wcm9jZXNzaW5nIG9mIHN5bWJvbGljIG91dHB1dCBiZWZvcmUgbG93IGxldmVsIG91dHB1dCBvcGVyYXRpb25zLlxuKilcblxudHlwZSBzeW1ib2xpY19vdXRwdXRfaXRlbSA9XG4gIHwgT3V0cHV0X2ZsdXNoXG4gIHwgT3V0cHV0X25ld2xpbmVcbiAgfCBPdXRwdXRfc3RyaW5nIG9mIHN0cmluZ1xuICB8IE91dHB1dF9zcGFjZXMgb2YgaW50XG4gIHwgT3V0cHV0X2luZGVudCBvZiBpbnRcblxudHlwZSBzeW1ib2xpY19vdXRwdXRfYnVmZmVyID0ge1xuICBtdXRhYmxlIHN5bWJvbGljX291dHB1dF9jb250ZW50cyA6IHN5bWJvbGljX291dHB1dF9pdGVtIGxpc3Q7XG59XG5cbmxldCBtYWtlX3N5bWJvbGljX291dHB1dF9idWZmZXIgKCkgPVxuICB7IHN5bWJvbGljX291dHB1dF9jb250ZW50cyA9IFtdIH1cblxubGV0IGNsZWFyX3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iID1cbiAgc29iLnN5bWJvbGljX291dHB1dF9jb250ZW50cyA8LSBbXVxuXG5sZXQgZ2V0X3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iID1cbiAgTGlzdC5yZXYgc29iLnN5bWJvbGljX291dHB1dF9jb250ZW50c1xuXG5sZXQgZmx1c2hfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgPVxuICBsZXQgaXRlbXMgPSBnZXRfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgaW5cbiAgY2xlYXJfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2I7XG4gIGl0ZW1zXG5cbmxldCBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIGl0ZW0gPVxuICBzb2Iuc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzIDwtIGl0ZW0gOjogc29iLnN5bWJvbGljX291dHB1dF9jb250ZW50c1xuXG5sZXQgZm9ybWF0dGVyX29mX3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iID1cbiAgbGV0IHN5bWJvbGljX2ZsdXNoIHNvYiAoKSA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiBPdXRwdXRfZmx1c2hcbiAgYW5kIHN5bWJvbGljX25ld2xpbmUgc29iICgpID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIE91dHB1dF9uZXdsaW5lXG4gIGFuZCBzeW1ib2xpY19zdHJpbmcgc29iIHMgaSBuID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIChPdXRwdXRfc3RyaW5nIChTdHJpbmcuc3ViIHMgaSBuKSlcbiAgYW5kIHN5bWJvbGljX3NwYWNlcyBzb2IgbiA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiAoT3V0cHV0X3NwYWNlcyBuKVxuICBhbmQgc3ltYm9saWNfaW5kZW50IHNvYiBuID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIChPdXRwdXRfaW5kZW50IG4pIGluXG5cbiAgbGV0IGYgPSBzeW1ib2xpY19zdHJpbmcgc29iXG4gIGFuZCBnID0gc3ltYm9saWNfZmx1c2ggc29iXG4gIGFuZCBoID0gc3ltYm9saWNfbmV3bGluZSBzb2JcbiAgYW5kIGkgPSBzeW1ib2xpY19zcGFjZXMgc29iXG4gIGFuZCBqID0gc3ltYm9saWNfaW5kZW50IHNvYiBpblxuICBwcF9tYWtlX2Zvcm1hdHRlciBmIGcgaCBpIGpcblxuKCpcblxuICBCYXNpYyBmdW5jdGlvbnMgb24gdGhlICdzdGFuZGFyZCcgZm9ybWF0dGVyXG4gICh0aGUgZm9ybWF0dGVyIHRoYXQgcHJpbnRzIHRvIFtTdGRsaWIuc3Rkb3V0XSkuXG5cbiopXG5cbmxldCBvcGVuX2hib3ggPSBwcF9vcGVuX2hib3ggc3RkX2Zvcm1hdHRlclxuYW5kIG9wZW5fdmJveCA9IHBwX29wZW5fdmJveCBzdGRfZm9ybWF0dGVyXG5hbmQgb3Blbl9odmJveCA9IHBwX29wZW5faHZib3ggc3RkX2Zvcm1hdHRlclxuYW5kIG9wZW5faG92Ym94ID0gcHBfb3Blbl9ob3Zib3ggc3RkX2Zvcm1hdHRlclxuYW5kIG9wZW5fYm94ID0gcHBfb3Blbl9ib3ggc3RkX2Zvcm1hdHRlclxuYW5kIGNsb3NlX2JveCA9IHBwX2Nsb3NlX2JveCBzdGRfZm9ybWF0dGVyXG5hbmQgb3Blbl90YWcgPSBwcF9vcGVuX3RhZyBzdGRfZm9ybWF0dGVyXG5hbmQgY2xvc2VfdGFnID0gcHBfY2xvc2VfdGFnIHN0ZF9mb3JtYXR0ZXJcbmFuZCBvcGVuX3N0YWcgPSBwcF9vcGVuX3N0YWcgc3RkX2Zvcm1hdHRlclxuYW5kIGNsb3NlX3N0YWcgPSBwcF9jbG9zZV9zdGFnIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9hcyA9IHBwX3ByaW50X2FzIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9zdHJpbmcgPSBwcF9wcmludF9zdHJpbmcgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2J5dGVzID0gcHBfcHJpbnRfYnl0ZXMgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2ludCA9IHBwX3ByaW50X2ludCBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfZmxvYXQgPSBwcF9wcmludF9mbG9hdCBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfY2hhciA9IHBwX3ByaW50X2NoYXIgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2Jvb2wgPSBwcF9wcmludF9ib29sIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9icmVhayA9IHBwX3ByaW50X2JyZWFrIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9jdXQgPSBwcF9wcmludF9jdXQgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X3NwYWNlID0gcHBfcHJpbnRfc3BhY2Ugc3RkX2Zvcm1hdHRlclxuYW5kIGZvcmNlX25ld2xpbmUgPSBwcF9mb3JjZV9uZXdsaW5lIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9mbHVzaCA9IHBwX3ByaW50X2ZsdXNoIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9uZXdsaW5lID0gcHBfcHJpbnRfbmV3bGluZSBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfaWZfbmV3bGluZSA9IHBwX3ByaW50X2lmX25ld2xpbmUgc3RkX2Zvcm1hdHRlclxuXG5hbmQgb3Blbl90Ym94ID0gcHBfb3Blbl90Ym94IHN0ZF9mb3JtYXR0ZXJcbmFuZCBjbG9zZV90Ym94ID0gcHBfY2xvc2VfdGJveCBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfdGJyZWFrID0gcHBfcHJpbnRfdGJyZWFrIHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF90YWIgPSBwcF9zZXRfdGFiIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF90YWIgPSBwcF9wcmludF90YWIgc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X21hcmdpbiA9IHBwX3NldF9tYXJnaW4gc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9tYXJnaW4gPSBwcF9nZXRfbWFyZ2luIHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF9tYXhfaW5kZW50ID0gcHBfc2V0X21heF9pbmRlbnQgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9tYXhfaW5kZW50ID0gcHBfZ2V0X21heF9pbmRlbnQgc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X2dlb21ldHJ5ID0gcHBfc2V0X2dlb21ldHJ5IHN0ZF9mb3JtYXR0ZXJcbmFuZCBzYWZlX3NldF9nZW9tZXRyeSA9IHBwX3NhZmVfc2V0X2dlb21ldHJ5IHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfZ2VvbWV0cnkgPSBwcF9nZXRfZ2VvbWV0cnkgc3RkX2Zvcm1hdHRlclxuYW5kIHVwZGF0ZV9nZW9tZXRyeSA9IHBwX3VwZGF0ZV9nZW9tZXRyeSBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfbWF4X2JveGVzID0gcHBfc2V0X21heF9ib3hlcyBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X21heF9ib3hlcyA9IHBwX2dldF9tYXhfYm94ZXMgc3RkX2Zvcm1hdHRlclxuYW5kIG92ZXJfbWF4X2JveGVzID0gcHBfb3Zlcl9tYXhfYm94ZXMgc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X2VsbGlwc2lzX3RleHQgPSBwcF9zZXRfZWxsaXBzaXNfdGV4dCBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X2VsbGlwc2lzX3RleHQgPSBwcF9nZXRfZWxsaXBzaXNfdGV4dCBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfZm9ybWF0dGVyX291dF9jaGFubmVsID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgPVxuICBwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyA9XG4gIHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgPVxuICBwcF9zZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyA9XG4gIHBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyA9XG4gIHBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuYW5kIHNldF9wcmludF90YWdzID1cbiAgcHBfc2V0X3ByaW50X3RhZ3Mgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9wcmludF90YWdzID1cbiAgcHBfZ2V0X3ByaW50X3RhZ3Mgc3RkX2Zvcm1hdHRlclxuYW5kIHNldF9tYXJrX3RhZ3MgPVxuICBwcF9zZXRfbWFya190YWdzIHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfbWFya190YWdzID1cbiAgcHBfZ2V0X21hcmtfdGFncyBzdGRfZm9ybWF0dGVyXG5hbmQgc2V0X3RhZ3MgPVxuICBwcF9zZXRfdGFncyBzdGRfZm9ybWF0dGVyXG5cblxuKCogQ29udmVuaWVuY2UgZnVuY3Rpb25zICopXG5cbigqIFRvIGZvcm1hdCBhIGxpc3QgKilcbmxldCByZWMgcHBfcHJpbnRfbGlzdCA/KHBwX3NlcCA9IHBwX3ByaW50X2N1dCkgcHBfdiBwcGYgPSBmdW5jdGlvblxuICB8IFtdIC0+ICgpXG4gIHwgW3ZdIC0+IHBwX3YgcHBmIHZcbiAgfCB2IDo6IHZzIC0+XG4gICAgcHBfdiBwcGYgdjtcbiAgICBwcF9zZXAgcHBmICgpO1xuICAgIHBwX3ByaW50X2xpc3QgfnBwX3NlcCBwcF92IHBwZiB2c1xuXG4oKiBUbyBmb3JtYXQgYSBzZXF1ZW5jZSAqKVxubGV0IHJlYyBwcF9wcmludF9zZXFfaW4gfnBwX3NlcCBwcF92IHBwZiBzZXEgPVxuICBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IFNlcS5OaWwgLT4gKClcbiAgfCBTZXEuQ29ucyAodiwgc2VxKSAtPlxuICAgIHBwX3NlcCBwcGYgKCk7XG4gICAgcHBfdiBwcGYgdjtcbiAgICBwcF9wcmludF9zZXFfaW4gfnBwX3NlcCBwcF92IHBwZiBzZXFcblxubGV0IHBwX3ByaW50X3NlcSA/KHBwX3NlcCA9IHBwX3ByaW50X2N1dCkgcHBfdiBwcGYgc2VxID1cbiAgbWF0Y2ggc2VxICgpIHdpdGhcbiAgfCBTZXEuTmlsIC0+ICgpXG4gIHwgU2VxLkNvbnMgKHYsIHNlcSkgLT5cbiAgICBwcF92IHBwZiB2O1xuICAgIHBwX3ByaW50X3NlcV9pbiB+cHBfc2VwIHBwX3YgcHBmIHNlcVxuXG4oKiBUbyBmb3JtYXQgZnJlZS1mbG93aW5nIHRleHQgKilcbmxldCBwcF9wcmludF90ZXh0IHBwZiBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgbGVmdCA9IHJlZiAwIGluXG4gIGxldCByaWdodCA9IHJlZiAwIGluXG4gIGxldCBmbHVzaCAoKSA9XG4gICAgcHBfcHJpbnRfc3RyaW5nIHBwZiAoU3RyaW5nLnN1YiBzICFsZWZ0ICghcmlnaHQgLSAhbGVmdCkpO1xuICAgIGluY3IgcmlnaHQ7IGxlZnQgOj0gIXJpZ2h0O1xuICBpblxuICB3aGlsZSAoIXJpZ2h0IDw+IGxlbikgZG9cbiAgICBtYXRjaCBzLlshcmlnaHRdIHdpdGhcbiAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgZmx1c2ggKCk7XG4gICAgICAgIHBwX2ZvcmNlX25ld2xpbmUgcHBmICgpXG4gICAgICB8ICcgJyAtPlxuICAgICAgICBmbHVzaCAoKTsgcHBfcHJpbnRfc3BhY2UgcHBmICgpXG4gICAgICAoKiB0aGVyZSBpcyBubyBzcGVjaWZpYyBzdXBwb3J0IGZvciAnXFx0J1xuICAgICAgICAgYXMgaXQgaXMgdW5jbGVhciB3aGF0IGEgcmlnaHQgc2VtYW50aWNzIHdvdWxkIGJlICopXG4gICAgICB8IF8gLT4gaW5jciByaWdodFxuICBkb25lO1xuICBpZiAhbGVmdCA8PiBsZW4gdGhlbiBmbHVzaCAoKVxuXG5sZXQgcHBfcHJpbnRfb3B0aW9uID8obm9uZSA9IGZ1biBfICgpIC0+ICgpKSBwcF92IHBwZiA9IGZ1bmN0aW9uXG58IE5vbmUgLT4gbm9uZSBwcGYgKClcbnwgU29tZSB2IC0+IHBwX3YgcHBmIHZcblxubGV0IHBwX3ByaW50X3Jlc3VsdCB+b2sgfmVycm9yIHBwZiA9IGZ1bmN0aW9uXG58IE9rIHYgLT4gb2sgcHBmIHZcbnwgRXJyb3IgZSAtPiBlcnJvciBwcGYgZVxuXG5sZXQgcHBfcHJpbnRfZWl0aGVyIH5sZWZ0IH5yaWdodCBwcGYgPSBmdW5jdGlvblxufCBFaXRoZXIuTGVmdCBsIC0+IGxlZnQgcHBmIGxcbnwgRWl0aGVyLlJpZ2h0IHIgLT4gcmlnaHQgcHBmIHJcblxuICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGNvbXB1dGVfdGFnIG91dHB1dCB0YWdfYWNjID1cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMTYgaW5cbiAgbGV0IHBwZiA9IGZvcm1hdHRlcl9vZl9idWZmZXIgYnVmIGluXG4gIG91dHB1dCBwcGYgdGFnX2FjYztcbiAgcHBfcHJpbnRfZmx1c2ggcHBmICgpO1xuICBsZXQgbGVuID0gQnVmZmVyLmxlbmd0aCBidWYgaW5cbiAgaWYgbGVuIDwgMiB0aGVuIEJ1ZmZlci5jb250ZW50cyBidWZcbiAgZWxzZSBCdWZmZXIuc3ViIGJ1ZiAxIChsZW4gLSAyKVxuXG4gKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgRGVmaW5pbmcgY29udGludWF0aW9ucyB0byBiZSBwYXNzZWQgYXMgYXJndW1lbnRzIG9mXG4gIENhbWxpbnRlcm5hbEZvcm1hdC5tYWtlX3ByaW50Zi5cblxuICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3Ncbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0XG5cbigqIEludGVycHJldCBhIGZvcm1hdHRpbmcgZW50aXR5IG9uIGEgZm9ybWF0dGVyLiAqKVxubGV0IG91dHB1dF9mb3JtYXR0aW5nX2xpdCBwcGYgZm10aW5nX2xpdCA9IG1hdGNoIGZtdGluZ19saXQgd2l0aFxuICB8IENsb3NlX2JveCAgICAgICAgICAgICAgICAgLT4gcHBfY2xvc2VfYm94IHBwZiAoKVxuICB8IENsb3NlX3RhZyAgICAgICAgICAgICAgICAgLT4gcHBfY2xvc2VfdGFnIHBwZiAoKVxuICB8IEJyZWFrIChfLCB3aWR0aCwgb2Zmc2V0KSAgLT4gcHBfcHJpbnRfYnJlYWsgcHBmIHdpZHRoIG9mZnNldFxuICB8IEZGbHVzaCAgICAgICAgICAgICAgICAgICAgLT4gcHBfcHJpbnRfZmx1c2ggcHBmICgpXG4gIHwgRm9yY2VfbmV3bGluZSAgICAgICAgICAgICAtPiBwcF9mb3JjZV9uZXdsaW5lIHBwZiAoKVxuICB8IEZsdXNoX25ld2xpbmUgICAgICAgICAgICAgLT4gcHBfcHJpbnRfbmV3bGluZSBwcGYgKClcbiAgfCBNYWdpY19zaXplIChfLCBfKSAgICAgICAgIC0+ICgpXG4gIHwgRXNjYXBlZF9hdCAgICAgICAgICAgICAgICAtPiBwcF9wcmludF9jaGFyIHBwZiAnQCdcbiAgfCBFc2NhcGVkX3BlcmNlbnQgICAgICAgICAgIC0+IHBwX3ByaW50X2NoYXIgcHBmICclJ1xuICB8IFNjYW5faW5kaWMgYyAgICAgICAgICAgICAgLT4gcHBfcHJpbnRfY2hhciBwcGYgJ0AnOyBwcF9wcmludF9jaGFyIHBwZiBjXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYW4gb3V0cHV0X3N0cmVhbS4gKilcbigqIERpZmZlciBmcm9tIFByaW50Zi5vdXRwdXRfYWNjIGJ5IHRoZSBpbnRlcnByZXRhdGlvbiBvZiBmb3JtYXR0aW5nLiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBDYW1saW50ZXJuYWxGb3JtYXQubWFrZV9wcmludGYuICopXG5sZXQgcmVjIG91dHB1dF9hY2MgcHBmIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBzKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIHM7XG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgKFN0cmluZy5tYWtlIDEgYyk7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgb3V0cHV0X2Zvcm1hdHRpbmdfbGl0IHBwZiBmO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBwcF9vcGVuX3N0YWcgcHBmIChTdHJpbmdfdGFnIChjb21wdXRlX3RhZyBvdXRwdXRfYWNjIGFjYycpKVxuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBsZXQgKGluZGVudCwgYnR5KSA9IG9wZW5fYm94X29mX3N0cmluZyAoY29tcHV0ZV90YWcgb3V0cHV0X2FjYyBhY2MnKSBpblxuICAgIHBwX29wZW5fYm94X2dlbiBwcGYgaW5kZW50IGJ0eVxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gb3V0cHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfc3RyaW5nIHBwZiBzO1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IG91dHB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X2NoYXIgcHBmIGM7XG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IG91dHB1dF9hY2MgcHBmIHA7IGYgcHBmO1xuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBvdXRwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9mbHVzaCBwcGYgKCk7XG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IG91dHB1dF9hY2MgcHBmIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCogUmVjdXJzaXZlbHkgb3V0cHV0IGFuIFwiYWNjdW11bGF0b3JcIiBjb250YWluaW5nIGEgcmV2ZXJzZWQgbGlzdCBvZlxuICAgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1cywgLi4uKSBpbiBhIGJ1ZmZlci4gKilcbigqIERpZmZlciBmcm9tIFByaW50Zi5idWZwdXRfYWNjIGJ5IHRoZSBpbnRlcnByZXRhdGlvbiBvZiBmb3JtYXR0aW5nLiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBDYW1saW50ZXJuYWxGb3JtYXQubWFrZV9wcmludGYuICopXG5sZXQgcmVjIHN0cnB1dF9hY2MgcHBmIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBzKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIHM7XG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgKFN0cmluZy5tYWtlIDEgYyk7XG4gIHwgQWNjX2RlbGF5IChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgZikgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSAoZiAoKSk7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgb3V0cHV0X2Zvcm1hdHRpbmdfbGl0IHBwZiBmO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBwcF9vcGVuX3N0YWcgcHBmIChTdHJpbmdfdGFnIChjb21wdXRlX3RhZyBzdHJwdXRfYWNjIGFjYycpKVxuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBsZXQgKGluZGVudCwgYnR5KSA9IG9wZW5fYm94X29mX3N0cmluZyAoY29tcHV0ZV90YWcgc3RycHV0X2FjYyBhY2MnKSBpblxuICAgIHBwX29wZW5fYm94X2dlbiBwcGYgaW5kZW50IGJ0eVxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gc3RycHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfc3RyaW5nIHBwZiBzO1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IHN0cnB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X2NoYXIgcHBmIGM7XG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IHN0cnB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X3N0cmluZyBwcGYgKGYgKCkpO1xuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBzdHJwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9mbHVzaCBwcGYgKCk7XG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IHN0cnB1dF9hY2MgcHBmIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCpcblxuICBEZWZpbmluZyBbZnByaW50Zl0gYW5kIHZhcmlvdXMgZmxhdm9ycyBvZiBbZnByaW50Zl0uXG5cbiopXG5cbmxldCBrZnByaW50ZiBrIHBwZiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmXG4gICAgKGZ1biBhY2MgLT4gb3V0cHV0X2FjYyBwcGYgYWNjOyBrIHBwZilcbiAgICBFbmRfb2ZfYWNjIGZtdFxuXG5hbmQgaWtmcHJpbnRmIGsgcHBmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9pcHJpbnRmIGsgcHBmIGZtdFxuXG5sZXQgaWZwcmludGYgX3BwZiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfaXByaW50ZiBpZ25vcmUgKCkgZm10XG5cbmxldCBmcHJpbnRmIHBwZiA9IGtmcHJpbnRmIGlnbm9yZSBwcGZcbmxldCBwcmludGYgZm10ID0gZnByaW50ZiBzdGRfZm9ybWF0dGVyIGZtdFxubGV0IGVwcmludGYgZm10ID0gZnByaW50ZiBlcnJfZm9ybWF0dGVyIGZtdFxuXG5sZXQga2RwcmludGYgayAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmXG4gICAgKGZ1biBhY2MgLT4gayAoZnVuIHBwZiAtPiBvdXRwdXRfYWNjIHBwZiBhY2MpKVxuICAgIEVuZF9vZl9hY2MgZm10XG5cbmxldCBkcHJpbnRmIGZtdCA9IGtkcHJpbnRmIChmdW4gaSAtPiBpKSBmbXRcblxubGV0IGtzcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBsZXQgYiA9IHBwX21ha2VfYnVmZmVyICgpIGluXG4gIGxldCBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgaW5cbiAgbGV0IGsgYWNjID1cbiAgICBzdHJwdXRfYWNjIHBwZiBhY2M7XG4gICAgayAoZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBiIHBwZikgaW5cbiAgbWFrZV9wcmludGYgayBFbmRfb2ZfYWNjIGZtdFxuXG5cbmxldCBzcHJpbnRmIGZtdCA9IGtzcHJpbnRmIGlkIGZtdFxuXG5sZXQga2FzcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBsZXQgYiA9IHBwX21ha2VfYnVmZmVyICgpIGluXG4gIGxldCBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgaW5cbiAgbGV0IGsgYWNjID1cbiAgICBvdXRwdXRfYWNjIHBwZiBhY2M7XG4gICAgayAoZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBiIHBwZikgaW5cbiAgbWFrZV9wcmludGYgayBFbmRfb2ZfYWNjIGZtdFxuXG5cbmxldCBhc3ByaW50ZiBmbXQgPSBrYXNwcmludGYgaWQgZm10XG5cbigqIEZsdXNoaW5nIHN0YW5kYXJkIGZvcm1hdHRlcnMgYXQgZW5kIG9mIGV4ZWN1dGlvbi4gKilcblxubGV0IGZsdXNoX3N0YW5kYXJkX2Zvcm1hdHRlcnMgKCkgPVxuICBwcF9wcmludF9mbHVzaCBzdGRfZm9ybWF0dGVyICgpO1xuICBwcF9wcmludF9mbHVzaCBlcnJfZm9ybWF0dGVyICgpXG5cbmxldCAoKSA9IGF0X2V4aXQgZmx1c2hfc3RhbmRhcmRfZm9ybWF0dGVyc1xuXG4oKlxuXG4gIERlcHJlY2F0ZWQgc3R1ZmYuXG5cbiopXG5cbigqIERlcHJlY2F0ZWQgOiBzdWJzdW1lZCBieSBwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgKilcbmxldCBwcF9zZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0YXRlXG4gICAgfm91dDpmIH5mbHVzaDpnIH5uZXdsaW5lOmggfnNwYWNlczppID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0YXRlIGYgZztcbiAgc3RhdGUucHBfb3V0X25ld2xpbmUgPC0gaDtcbiAgc3RhdGUucHBfb3V0X3NwYWNlcyA8LSBpXG5cbigqIERlcHJlY2F0ZWQgOiBzdWJzdW1lZCBieSBwcF9nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgKilcbmxldCBwcF9nZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0YXRlICgpID1cbiAgKHN0YXRlLnBwX291dF9zdHJpbmcsIHN0YXRlLnBwX291dF9mbHVzaCxcbiAgIHN0YXRlLnBwX291dF9uZXdsaW5lLCBzdGF0ZS5wcF9vdXRfc3BhY2VzKVxuXG5cbigqIERlcHJlY2F0ZWQgOiBzdWJzdW1lZCBieSBzZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgKilcbmxldCBzZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zID1cbiAgcHBfc2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG5cblxuKCogRGVwcmVjYXRlZCA6IHN1YnN1bWVkIGJ5IGdldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyAqKVxubGV0IGdldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgPVxuICBwcF9nZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcblxuXG4oKiBEZXByZWNhdGVkIDogZXJyb3IgcHJvbmUgZnVuY3Rpb24sIGRvIG5vdCB1c2UgaXQuXG4gICBUaGlzIGZ1bmN0aW9uIGlzIG5laXRoZXIgY29tcG9zaXRpb25hbCBub3IgaW5jcmVtZW50YWwsIHNpbmNlIGl0IGZsdXNoZXNcbiAgIHRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZSBhdCBlYWNoIGNhbGwuXG4gICBUbyBnZXQgdGhlIHNhbWUgZnVuY3Rpb25hbGl0eSwgZGVmaW5lIGEgZm9ybWF0dGVyIG9mIHlvdXIgb3duIHdyaXRpbmcgdG9cbiAgIHRoZSBidWZmZXIgYXJndW1lbnQsIGFzIGluXG4gICBsZXQgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlciBiXG4gICB0aGVuIHVzZSB7IWZwcmludGYgcHBmfSBhcyB1c3VhbC4gKilcbmxldCBicHJpbnRmIGIgKEZvcm1hdCAoZm10LCBfKSA6ICgnYSwgZm9ybWF0dGVyLCB1bml0KSBmb3JtYXQpID1cbiAgbGV0IHBwZiA9IGZvcm1hdHRlcl9vZl9idWZmZXIgYiBpblxuICBsZXQgayBhY2MgPSBvdXRwdXRfYWNjIHBwZiBhY2M7IHBwX2ZsdXNoX3F1ZXVlIHBwZiBmYWxzZSBpblxuICBtYWtlX3ByaW50ZiBrIEVuZF9vZl9hY2MgZm10XG5cblxuKCogRGVwcmVjYXRlZCA6IGFsaWFzIGZvciBrc3ByaW50Zi4gKilcbmxldCBrcHJpbnRmID0ga3NwcmludGZcblxuXG5cbigqIERlcHJlY2F0ZWQgdGFnIGZ1bmN0aW9ucyAqKVxuXG50eXBlIGZvcm1hdHRlcl90YWdfZnVuY3Rpb25zID0ge1xuICBtYXJrX29wZW5fdGFnIDogdGFnIC0+IHN0cmluZztcbiAgbWFya19jbG9zZV90YWcgOiB0YWcgLT4gc3RyaW5nO1xuICBwcmludF9vcGVuX3RhZyA6IHRhZyAtPiB1bml0O1xuICBwcmludF9jbG9zZV90YWcgOiB0YWcgLT4gdW5pdDtcbn1cblxuXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zIHN0YXRlIHtcbiAgICAgbWFya19vcGVuX3RhZyA9IG1vdDtcbiAgICAgbWFya19jbG9zZV90YWcgPSBtY3Q7XG4gICAgIHByaW50X29wZW5fdGFnID0gcG90O1xuICAgICBwcmludF9jbG9zZV90YWcgPSBwY3Q7XG4gICB9ID1cbiAgbGV0IHN0cmluZ2lmeSBmIGUgPSBmdW5jdGlvbiBTdHJpbmdfdGFnIHMgLT4gZiBzIHwgXyAtPiBlIGluXG4gIHN0YXRlLnBwX21hcmtfb3Blbl90YWcgPC0gc3RyaW5naWZ5IG1vdCBcIlwiO1xuICBzdGF0ZS5wcF9tYXJrX2Nsb3NlX3RhZyA8LSBzdHJpbmdpZnkgbWN0IFwiXCI7XG4gIHN0YXRlLnBwX3ByaW50X29wZW5fdGFnIDwtIHN0cmluZ2lmeSBwb3QgKCk7XG4gIHN0YXRlLnBwX3ByaW50X2Nsb3NlX3RhZyA8LSBzdHJpbmdpZnkgcGN0ICgpXG5cbmxldCBwcF9nZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMgZm10ICgpID1cbiAgbGV0IGZ1bnMgPSBwcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIGZtdCAoKSBpblxuICBsZXQgbWFya19vcGVuX3RhZyBzID0gZnVucy5tYXJrX29wZW5fc3RhZyAoU3RyaW5nX3RhZyBzKSBpblxuICBsZXQgbWFya19jbG9zZV90YWcgcyA9IGZ1bnMubWFya19jbG9zZV9zdGFnIChTdHJpbmdfdGFnIHMpIGluXG4gIGxldCBwcmludF9vcGVuX3RhZyBzID0gZnVucy5wcmludF9vcGVuX3N0YWcgKFN0cmluZ190YWcgcykgaW5cbiAgbGV0IHByaW50X2Nsb3NlX3RhZyBzID0gZnVucy5wcmludF9jbG9zZV9zdGFnIChTdHJpbmdfdGFnIHMpIGluXG4gIHttYXJrX29wZW5fdGFnOyBtYXJrX2Nsb3NlX3RhZzsgcHJpbnRfb3Blbl90YWc7IHByaW50X2Nsb3NlX3RhZ31cblxubGV0IHNldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zID1cbiAgcHBfZ2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFBpZXJyZSBXZWlzLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3Ncbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0XG5cbigqIGFsaWFzIHRvIGF2b2lkIHdhcm5pbmcgZm9yIGFtYmlndWl0eSBiZXR3ZWVuXG4gICBTdGRsaWIuZm9ybWF0NlxuICAgYW5kIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2XG5cbiAgICh0aGUgZm9ybWVyIGlzIGluIGZhY3QgYW4gYWxpYXMgZm9yIHRoZSBsYXR0ZXIsXG4gICAgYnV0IHRoZSBhbWJpZ3VpdHkgd2FybmluZyBkb2Vzbid0IGNhcmUpXG4qKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA9XG4gICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBTdGRsaWIuZm9ybWF0NlxuXG5cbigqIFRoZSBydW4tdGltZSBsaWJyYXJ5IGZvciBzY2FubmVycy4gKilcblxuKCogU2Nhbm5pbmcgYnVmZmVycy4gKilcbm1vZHVsZSB0eXBlIFNDQU5OSU5HID0gc2lnXG5cbiAgdHlwZSBpbl9jaGFubmVsXG5cbiAgdHlwZSBzY2FuYnVmID0gaW5fY2hhbm5lbFxuXG4gIHR5cGUgZmlsZV9uYW1lID0gc3RyaW5nXG5cbiAgdmFsIHN0ZGluIDogaW5fY2hhbm5lbFxuICAoKiBUaGUgc2Nhbm5pbmcgYnVmZmVyIHJlYWRpbmcgZnJvbSBbU3RkbGliLnN0ZGluXS5cbiAgICAgW3N0ZGliXSBpcyBlcXVpdmFsZW50IHRvIFtTY2FubmluZy5mcm9tX2NoYW5uZWwgU3RkbGliLnN0ZGluXS4gKilcblxuICB2YWwgc3RkaWIgOiBpbl9jaGFubmVsXG4gICgqIEFuIGFsaWFzIGZvciBbU2NhbmYuc3RkaW5dLCB0aGUgc2Nhbm5pbmcgYnVmZmVyIHJlYWRpbmcgZnJvbVxuICAgICBbU3RkbGliLnN0ZGluXS4gKilcblxuICB2YWwgbmV4dF9jaGFyIDogc2NhbmJ1ZiAtPiBjaGFyXG4gICgqIFtTY2FubmluZy5uZXh0X2NoYXIgaWJdIGFkdmFuY2UgdGhlIHNjYW5uaW5nIGJ1ZmZlciBmb3JcbiAgICAgb25lIGNoYXJhY3Rlci5cbiAgICAgSWYgbm8gbW9yZSBjaGFyYWN0ZXIgY2FuIGJlIHJlYWQsIHNldHMgYSBlbmQgb2YgZmlsZSBjb25kaXRpb24gYW5kXG4gICAgIHJldHVybnMgJ1xcMDAwJy4gKilcblxuICB2YWwgaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgOiBzY2FuYnVmIC0+IHVuaXRcbiAgKCogW1NjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliXSBtYXJrIHRoZSBjdXJyZW50X2NoYXIgYXMgYWxyZWFkeVxuICAgICBzY2FubmVkLiAqKVxuXG4gIHZhbCBwZWVrX2NoYXIgOiBzY2FuYnVmIC0+IGNoYXJcbiAgKCogW1NjYW5uaW5nLnBlZWtfY2hhciBpYl0gcmV0dXJucyB0aGUgY3VycmVudCBjaGFyIGF2YWlsYWJsZSBpblxuICAgICB0aGUgYnVmZmVyIG9yIHJlYWRzIG9uZSBpZiBuZWNlc3NhcnkgKHdoZW4gdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGlzXG4gICAgIGFscmVhZHkgc2Nhbm5lZCkuXG4gICAgIElmIG5vIGNoYXJhY3RlciBjYW4gYmUgcmVhZCwgc2V0cyBhbiBlbmQgb2YgZmlsZSBjb25kaXRpb24gYW5kXG4gICAgIHJldHVybnMgJ1xcMDAwJy4gKilcblxuICB2YWwgY2hlY2tlZF9wZWVrX2NoYXIgOiBzY2FuYnVmIC0+IGNoYXJcbiAgKCogU2FtZSBhcyBbU2Nhbm5pbmcucGVla19jaGFyXSBhYm92ZSBidXQgYWx3YXlzIHJldHVybnMgYSB2YWxpZCBjaGFyIG9yXG4gICAgIGZhaWxzOiBpbnN0ZWFkIG9mIHJldHVybmluZyBhIG51bGwgY2hhciB3aGVuIHRoZSByZWFkaW5nIG1ldGhvZCBvZiB0aGVcbiAgICAgaW5wdXQgYnVmZmVyIGhhcyByZWFjaGVkIGFuIGVuZCBvZiBmaWxlLCB0aGUgZnVuY3Rpb24gcmFpc2VzIGV4Y2VwdGlvblxuICAgICBbRW5kX29mX2ZpbGVdLiAqKVxuXG4gIHZhbCBzdG9yZV9jaGFyIDogaW50IC0+IHNjYW5idWYgLT4gY2hhciAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLnN0b3JlX2NoYXIgbGltIGliIGNdIGFkZHMgW2NdIHRvIHRoZSB0b2tlbiBidWZmZXJcbiAgICAgb2YgdGhlIHNjYW5uaW5nIGJ1ZmZlciBbaWJdLiBJdCBhbHNvIGFkdmFuY2VzIHRoZSBzY2FubmluZyBidWZmZXIgZm9yXG4gICAgIG9uZSBjaGFyYWN0ZXIgYW5kIHJldHVybnMgW2xpbSAtIDFdLCBpbmRpY2F0aW5nIHRoZSBuZXcgbGltaXQgZm9yIHRoZVxuICAgICBsZW5ndGggb2YgdGhlIGN1cnJlbnQgdG9rZW4uICopXG5cbiAgdmFsIHNraXBfY2hhciA6IGludCAtPiBzY2FuYnVmIC0+IGludFxuICAoKiBbU2Nhbm5pbmcuc2tpcF9jaGFyIGxpbSBpYl0gaWdub3JlcyB0aGUgY3VycmVudCBjaGFyYWN0ZXIuICopXG5cbiAgdmFsIGlnbm9yZV9jaGFyIDogaW50IC0+IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy5pZ25vcmVfY2hhciBpYiBsaW1dIGlnbm9yZXMgdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGFuZFxuICAgICBkZWNyZW1lbnRzIHRoZSBsaW1pdC4gKilcblxuICB2YWwgdG9rZW4gOiBzY2FuYnVmIC0+IHN0cmluZ1xuICAoKiBbU2Nhbm5pbmcudG9rZW4gaWJdIHJldHVybnMgdGhlIHN0cmluZyBzdG9yZWQgaW50byB0aGUgdG9rZW5cbiAgICAgYnVmZmVyIG9mIHRoZSBzY2FubmluZyBidWZmZXI6IGl0IHJldHVybnMgdGhlIHRva2VuIG1hdGNoZWQgYnkgdGhlXG4gICAgIGZvcm1hdC4gKilcblxuICB2YWwgcmVzZXRfdG9rZW4gOiBzY2FuYnVmIC0+IHVuaXRcbiAgKCogW1NjYW5uaW5nLnJlc2V0X3Rva2VuIGliXSByZXNldHMgdGhlIHRva2VuIGJ1ZmZlciBvZlxuICAgICB0aGUgZ2l2ZW4gc2Nhbm5pbmcgYnVmZmVyLiAqKVxuXG4gIHZhbCBjaGFyX2NvdW50IDogc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLmNoYXJfY291bnQgaWJdIHJldHVybnMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzXG4gICAgIHJlYWQgc28gZmFyIGZyb20gdGhlIGdpdmVuIGJ1ZmZlci4gKilcblxuICB2YWwgbGluZV9jb3VudCA6IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy5saW5lX2NvdW50IGliXSByZXR1cm5zIHRoZSBudW1iZXIgb2YgbmV3IGxpbmVcbiAgICAgY2hhcmFjdGVycyByZWFkIHNvIGZhciBmcm9tIHRoZSBnaXZlbiBidWZmZXIuICopXG5cbiAgdmFsIHRva2VuX2NvdW50IDogc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLnRva2VuX2NvdW50IGliXSByZXR1cm5zIHRoZSBudW1iZXIgb2YgdG9rZW5zIHJlYWRcbiAgICAgc28gZmFyIGZyb20gW2liXS4gKilcblxuICB2YWwgZW9mIDogc2NhbmJ1ZiAtPiBib29sXG4gICgqIFtTY2FubmluZy5lb2YgaWJdIHJldHVybnMgdGhlIGVuZCBvZiBpbnB1dCBjb25kaXRpb25cbiAgICAgb2YgdGhlIGdpdmVuIGJ1ZmZlci4gKilcblxuICB2YWwgZW5kX29mX2lucHV0IDogc2NhbmJ1ZiAtPiBib29sXG4gICgqIFtTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWJdIHRlc3RzIHRoZSBlbmQgb2YgaW5wdXQgY29uZGl0aW9uXG4gICAgIG9mIHRoZSBnaXZlbiBidWZmZXIgKGlmIG5vIGNoYXIgaGFzIGV2ZXIgYmVlbiByZWFkLCBhbiBhdHRlbXB0IHRvXG4gICAgIHJlYWQgb25lIGlzIHBlcmZvcm1lZCkuICopXG5cbiAgdmFsIGJlZ2lubmluZ19vZl9pbnB1dCA6IHNjYW5idWYgLT4gYm9vbFxuICAoKiBbU2Nhbm5pbmcuYmVnaW5uaW5nX29mX2lucHV0IGliXSB0ZXN0cyB0aGUgYmVnaW5uaW5nIG9mIGlucHV0XG4gICAgIGNvbmRpdGlvbiBvZiB0aGUgZ2l2ZW4gYnVmZmVyLiAqKVxuXG4gIHZhbCBuYW1lX29mX2lucHV0IDogc2NhbmJ1ZiAtPiBzdHJpbmdcbiAgKCogW1NjYW5uaW5nLm5hbWVfb2ZfaW5wdXQgaWJdIHJldHVybnMgdGhlIG5hbWUgb2YgdGhlIGNoYXJhY3RlclxuICAgICBzb3VyY2UgZm9yIGlucHV0IGJ1ZmZlciBbaWJdLiAqKVxuXG4gIHZhbCBvcGVuX2luIDogZmlsZV9uYW1lIC0+IGluX2NoYW5uZWxcbiAgdmFsIG9wZW5faW5fYmluIDogZmlsZV9uYW1lIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fZmlsZSA6IGZpbGVfbmFtZSAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX2ZpbGVfYmluIDogZmlsZV9uYW1lIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fc3RyaW5nIDogc3RyaW5nIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fZnVuY3Rpb24gOiAodW5pdCAtPiBjaGFyKSAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX2NoYW5uZWwgOiBTdGRsaWIuaW5fY2hhbm5lbCAtPiBpbl9jaGFubmVsXG5cbiAgdmFsIGNsb3NlX2luIDogaW5fY2hhbm5lbCAtPiB1bml0XG5cbiAgdmFsIG1lbW9fZnJvbV9jaGFubmVsIDogU3RkbGliLmluX2NoYW5uZWwgLT4gaW5fY2hhbm5lbFxuICAoKiBPYnNvbGV0ZS4gKilcblxuZW5kXG5cblxubW9kdWxlIFNjYW5uaW5nIDogU0NBTk5JTkcgPSBzdHJ1Y3RcblxuICAoKiBUaGUgcnVuLXRpbWUgbGlicmFyeSBmb3Igc2NhbmYuICopXG5cbiAgdHlwZSBmaWxlX25hbWUgPSBzdHJpbmdcblxuICB0eXBlIGluX2NoYW5uZWxfbmFtZSA9XG4gICAgfCBGcm9tX2NoYW5uZWwgb2YgU3RkbGliLmluX2NoYW5uZWxcbiAgICB8IEZyb21fZmlsZSBvZiBmaWxlX25hbWUgKiBTdGRsaWIuaW5fY2hhbm5lbFxuICAgIHwgRnJvbV9mdW5jdGlvblxuICAgIHwgRnJvbV9zdHJpbmdcblxuXG4gIHR5cGUgaW5fY2hhbm5lbCA9IHtcbiAgICBtdXRhYmxlIGljX2VvZiA6IGJvb2w7XG4gICAgbXV0YWJsZSBpY19jdXJyZW50X2NoYXIgOiBjaGFyO1xuICAgIG11dGFibGUgaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkIDogYm9vbDtcbiAgICBtdXRhYmxlIGljX2NoYXJfY291bnQgOiBpbnQ7XG4gICAgbXV0YWJsZSBpY19saW5lX2NvdW50IDogaW50O1xuICAgIG11dGFibGUgaWNfdG9rZW5fY291bnQgOiBpbnQ7XG4gICAgaWNfZ2V0X25leHRfY2hhciA6IHVuaXQgLT4gY2hhcjtcbiAgICBpY190b2tlbl9idWZmZXIgOiBCdWZmZXIudDtcbiAgICBpY19pbnB1dF9uYW1lIDogaW5fY2hhbm5lbF9uYW1lO1xuICB9XG5cblxuICB0eXBlIHNjYW5idWYgPSBpbl9jaGFubmVsXG5cbiAgbGV0IG51bGxfY2hhciA9ICdcXDAwMCdcblxuICAoKiBSZWFkcyBhIG5ldyBjaGFyYWN0ZXIgZnJvbSBpbnB1dCBidWZmZXIuXG4gICAgIE5leHRfY2hhciBuZXZlciBmYWlscywgZXZlbiBpbiBjYXNlIG9mIGVuZCBvZiBpbnB1dDpcbiAgICAgaXQgdGhlbiBzaW1wbHkgc2V0cyB0aGUgZW5kIG9mIGZpbGUgY29uZGl0aW9uLiAqKVxuICBsZXQgbmV4dF9jaGFyIGliID1cbiAgICB0cnlcbiAgICAgIGxldCBjID0gaWIuaWNfZ2V0X25leHRfY2hhciAoKSBpblxuICAgICAgaWIuaWNfY3VycmVudF9jaGFyIDwtIGM7XG4gICAgICBpYi5pY19jdXJyZW50X2NoYXJfaXNfdmFsaWQgPC0gdHJ1ZTtcbiAgICAgIGliLmljX2NoYXJfY291bnQgPC0gc3VjYyBpYi5pY19jaGFyX2NvdW50O1xuICAgICAgaWYgYyA9ICdcXG4nIHRoZW4gaWIuaWNfbGluZV9jb3VudCA8LSBzdWNjIGliLmljX2xpbmVfY291bnQ7XG4gICAgICBjIHdpdGhcbiAgICB8IEVuZF9vZl9maWxlIC0+XG4gICAgICBsZXQgYyA9IG51bGxfY2hhciBpblxuICAgICAgaWIuaWNfY3VycmVudF9jaGFyIDwtIGM7XG4gICAgICBpYi5pY19jdXJyZW50X2NoYXJfaXNfdmFsaWQgPC0gZmFsc2U7XG4gICAgICBpYi5pY19lb2YgPC0gdHJ1ZTtcbiAgICAgIGNcblxuXG4gIGxldCBwZWVrX2NoYXIgaWIgPVxuICAgIGlmIGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZFxuICAgIHRoZW4gaWIuaWNfY3VycmVudF9jaGFyXG4gICAgZWxzZSBuZXh0X2NoYXIgaWJcblxuXG4gICgqIFJldHVybnMgYSB2YWxpZCBjdXJyZW50IGNoYXIgZm9yIHRoZSBpbnB1dCBidWZmZXIuIEluIHBhcnRpY3VsYXJcbiAgICAgbm8gaXJyZWxldmFudCBudWxsIGNoYXJhY3RlciAoYXMgc2V0IGJ5IFtuZXh0X2NoYXJdIGluIGNhc2Ugb2YgZW5kXG4gICAgIG9mIGlucHV0KSBpcyByZXR1cm5lZCwgc2luY2UgW0VuZF9vZl9maWxlXSBpcyByYWlzZWQgd2hlblxuICAgICBbbmV4dF9jaGFyXSBzZXRzIHRoZSBlbmQgb2YgZmlsZSBjb25kaXRpb24gd2hpbGUgdHJ5aW5nIHRvIHJlYWQgYVxuICAgICBuZXcgY2hhcmFjdGVyLiAqKVxuICBsZXQgY2hlY2tlZF9wZWVrX2NoYXIgaWIgPVxuICAgIGxldCBjID0gcGVla19jaGFyIGliIGluXG4gICAgaWYgaWIuaWNfZW9mIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGU7XG4gICAgY1xuXG5cbiAgbGV0IGVuZF9vZl9pbnB1dCBpYiA9XG4gICAgaWdub3JlIChwZWVrX2NoYXIgaWIpO1xuICAgIGliLmljX2VvZlxuXG5cbiAgbGV0IGVvZiBpYiA9IGliLmljX2VvZlxuXG4gIGxldCBiZWdpbm5pbmdfb2ZfaW5wdXQgaWIgPSBpYi5pY19jaGFyX2NvdW50ID0gMFxuXG4gIGxldCBuYW1lX29mX2lucHV0IGliID1cbiAgICBtYXRjaCBpYi5pY19pbnB1dF9uYW1lIHdpdGhcbiAgICB8IEZyb21fY2hhbm5lbCBfaWMgLT4gXCJ1bm5hbWVkIFN0ZGxpYiBpbnB1dCBjaGFubmVsXCJcbiAgICB8IEZyb21fZmlsZSAoZm5hbWUsIF9pYykgLT4gZm5hbWVcbiAgICB8IEZyb21fZnVuY3Rpb24gLT4gXCJ1bm5hbWVkIGZ1bmN0aW9uXCJcbiAgICB8IEZyb21fc3RyaW5nIC0+IFwidW5uYW1lZCBjaGFyYWN0ZXIgc3RyaW5nXCJcblxuXG4gIGxldCBjaGFyX2NvdW50IGliID1cbiAgICBpZiBpYi5pY19jdXJyZW50X2NoYXJfaXNfdmFsaWRcbiAgICB0aGVuIGliLmljX2NoYXJfY291bnQgLSAxXG4gICAgZWxzZSBpYi5pY19jaGFyX2NvdW50XG5cblxuICBsZXQgbGluZV9jb3VudCBpYiA9IGliLmljX2xpbmVfY291bnRcblxuICBsZXQgcmVzZXRfdG9rZW4gaWIgPSBCdWZmZXIucmVzZXQgaWIuaWNfdG9rZW5fYnVmZmVyXG5cbiAgbGV0IGludmFsaWRhdGVfY3VycmVudF9jaGFyIGliID0gaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkIDwtIGZhbHNlXG5cbiAgbGV0IHRva2VuIGliID1cbiAgICBsZXQgdG9rZW5fYnVmZmVyID0gaWIuaWNfdG9rZW5fYnVmZmVyIGluXG4gICAgbGV0IHRvayA9IEJ1ZmZlci5jb250ZW50cyB0b2tlbl9idWZmZXIgaW5cbiAgICBCdWZmZXIuY2xlYXIgdG9rZW5fYnVmZmVyO1xuICAgIGliLmljX3Rva2VuX2NvdW50IDwtIHN1Y2MgaWIuaWNfdG9rZW5fY291bnQ7XG4gICAgdG9rXG5cblxuICBsZXQgdG9rZW5fY291bnQgaWIgPSBpYi5pY190b2tlbl9jb3VudFxuXG4gIGxldCBza2lwX2NoYXIgd2lkdGggaWIgPVxuICAgIGludmFsaWRhdGVfY3VycmVudF9jaGFyIGliO1xuICAgIHdpZHRoXG5cblxuICBsZXQgaWdub3JlX2NoYXIgd2lkdGggaWIgPSBza2lwX2NoYXIgKHdpZHRoIC0gMSkgaWJcblxuICBsZXQgc3RvcmVfY2hhciB3aWR0aCBpYiBjID1cbiAgICBCdWZmZXIuYWRkX2NoYXIgaWIuaWNfdG9rZW5fYnVmZmVyIGM7XG4gICAgaWdub3JlX2NoYXIgd2lkdGggaWJcblxuXG4gIGxldCBkZWZhdWx0X3Rva2VuX2J1ZmZlcl9zaXplID0gMTAyNFxuXG4gIGxldCBjcmVhdGUgaW5hbWUgbmV4dCA9IHtcbiAgICBpY19lb2YgPSBmYWxzZTtcbiAgICBpY19jdXJyZW50X2NoYXIgPSBudWxsX2NoYXI7XG4gICAgaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkID0gZmFsc2U7XG4gICAgaWNfY2hhcl9jb3VudCA9IDA7XG4gICAgaWNfbGluZV9jb3VudCA9IDA7XG4gICAgaWNfdG9rZW5fY291bnQgPSAwO1xuICAgIGljX2dldF9uZXh0X2NoYXIgPSBuZXh0O1xuICAgIGljX3Rva2VuX2J1ZmZlciA9IEJ1ZmZlci5jcmVhdGUgZGVmYXVsdF90b2tlbl9idWZmZXJfc2l6ZTtcbiAgICBpY19pbnB1dF9uYW1lID0gaW5hbWU7XG4gIH1cblxuXG4gIGxldCBmcm9tX3N0cmluZyBzID1cbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgIGxldCBuZXh0ICgpID1cbiAgICAgIGlmICFpID49IGxlbiB0aGVuIHJhaXNlIEVuZF9vZl9maWxlIGVsc2VcbiAgICAgIGxldCBjID0gcy5bIWldIGluXG4gICAgICBpbmNyIGk7XG4gICAgICBjIGluXG4gICAgY3JlYXRlIEZyb21fc3RyaW5nIG5leHRcblxuXG4gIGxldCBmcm9tX2Z1bmN0aW9uID0gY3JlYXRlIEZyb21fZnVuY3Rpb25cblxuICAoKiBTY2FubmluZyBmcm9tIGFuIGlucHV0IGNoYW5uZWwuICopXG5cbiAgKCogUG9zaXRpb24gb2YgdGhlIHByb2JsZW06XG5cbiAgICAgV2UgY2Fubm90IHByZXZlbnQgdGhlIHNjYW5uaW5nIG1lY2hhbmlzbSB0byB1c2Ugb25lIGxvb2thaGVhZCBjaGFyYWN0ZXIsXG4gICAgIGlmIG5lZWRlZCBieSB0aGUgc2VtYW50aWNzIG9mIHRoZSBmb3JtYXQgc3RyaW5nIHNwZWNpZmljYXRpb25zIChlLmcuIGFcbiAgICAgdHJhaWxpbmcgJ3NraXAgc3BhY2UnIHNwZWNpZmljYXRpb24gaW4gdGhlIGZvcm1hdCBzdHJpbmcpOyBpbiB0aGlzIGNhc2UsXG4gICAgIHRoZSBtYW5kYXRvcnkgbG9va2FoZWFkIGNoYXJhY3RlciBpcyBpbmRlZWQgcmVhZCBmcm9tIHRoZSBpbnB1dCBhbmQgbm90XG4gICAgIHVzZWQgdG8gcmV0dXJuIHRoZSB0b2tlbiByZWFkLiBJdCBpcyB0aHVzIG1hbmRhdG9yeSB0byBiZSBhYmxlIHRvIHN0b3JlXG4gICAgIGFuIHVudXNlZCBsb29rYWhlYWQgY2hhcmFjdGVyIHNvbWV3aGVyZSB0byBnZXQgaXQgYXMgdGhlIGZpcnN0IGNoYXJhY3RlclxuICAgICBvZiB0aGUgbmV4dCBzY2FuLlxuXG4gICAgIFRvIGNpcmN1bXZlbnQgdGhpcyBwcm9ibGVtLCBhbGwgdGhlIHNjYW5uaW5nIGZ1bmN0aW9ucyBnZXQgYSBsb3cgbGV2ZWxcbiAgICAgaW5wdXQgYnVmZmVyIGFyZ3VtZW50IHdoZXJlIHRoZXkgc3RvcmUgdGhlIGxvb2thaGVhZCBjaGFyYWN0ZXIgd2hlblxuICAgICBuZWVkZWQ7IGFkZGl0aW9uYWxseSwgdGhlIGlucHV0IGJ1ZmZlciBpcyB0aGUgb25seSBzb3VyY2Ugb2YgY2hhcmFjdGVyIG9mXG4gICAgIGEgc2Nhbm5lci4gVGhlIFtzY2FuYnVmXSBpbnB1dCBidWZmZXJzIGFyZSBkZWZpbmVkIGluIG1vZHVsZSB7IVNjYW5uaW5nfS5cblxuICAgICBOb3cgd2UgdW5kZXJzdGFuZCB0aGF0IGl0IGlzIGV4dHJlbWVseSBpbXBvcnRhbnQgdGhhdCByZWxhdGVkIGFuZFxuICAgICBzdWNjZXNzaXZlIGNhbGxzIHRvIHNjYW5uZXJzIGluZGVlZCByZWFkIGZyb20gdGhlIHNhbWUgaW5wdXQgYnVmZmVyLlxuICAgICBJbiBlZmZlY3QsIGlmIGEgc2Nhbm5lciBbc2NhbjFdIGlzIHJlYWRpbmcgZnJvbSBbaWIxXSBhbmQgc3RvcmVzIGFuXG4gICAgIHVudXNlZCBsb29rYWhlYWQgY2hhcmFjdGVyIFtjMV0gaW50byBpdHMgaW5wdXQgYnVmZmVyIFtpYjFdLCB0aGVuXG4gICAgIGFub3RoZXIgc2Nhbm5lciBbc2NhbjJdIG5vdCByZWFkaW5nIGZyb20gdGhlIHNhbWUgYnVmZmVyIFtpYjFdIHdpbGwgbWlzc1xuICAgICB0aGUgY2hhcmFjdGVyIFtjMV0sIHNlZW1pbmdseSB2YW5pc2hlZCBpbiB0aGUgYWlyIGZyb20gdGhlIHBvaW50IG9mIHZpZXdcbiAgICAgb2YgW3NjYW4yXS5cblxuICAgICBUaGlzIG1lY2hhbmlzbSB3b3JrcyBwZXJmZWN0bHkgdG8gcmVhZCBmcm9tIHN0cmluZ3MsIGZyb20gZmlsZXMsIGFuZCBmcm9tXG4gICAgIGZ1bmN0aW9ucywgc2luY2UgaW4gdGhvc2UgY2FzZXMsIGFsbG9jYXRpbmcgdHdvIGJ1ZmZlcnMgcmVhZGluZyBmcm9tIHRoZVxuICAgICBzYW1lIHNvdXJjZSBpcyB1bm5hdHVyYWwuXG5cbiAgICAgU3RpbGwsIHRoZXJlIGlzIGEgZGlmZmljdWx0eSBpbiB0aGUgY2FzZSBvZiBzY2FubmluZyBmcm9tIGFuIGlucHV0XG4gICAgIGNoYW5uZWwuIEluIGVmZmVjdCwgd2hlbiBzY2FubmluZyBmcm9tIGFuIGlucHV0IGNoYW5uZWwgW2ljXSwgdGhpcyBjaGFubmVsXG4gICAgIG1heSBub3QgaGF2ZSBiZWVuIGFsbG9jYXRlZCBmcm9tIHdpdGhpbiB0aGlzIGxpYnJhcnkuIEhlbmNlLCBpdCBtYXkgYmVcbiAgICAgc2hhcmVkICh0d28gZnVuY3Rpb25zIG9mIHRoZSB1c2VyJ3MgcHJvZ3JhbSBtYXkgc3VjY2Vzc2l2ZWx5IHJlYWQgZnJvbVxuICAgICBbaWNdKS4gVGhpcyBpcyBoaWdobHkgZXJyb3IgcHJvbmUgc2luY2UsIG9uZSBvZiB0aGUgZnVuY3Rpb24gbWF5IHNlZWsgdGhlXG4gICAgIGlucHV0IGNoYW5uZWwsIHdoaWxlIHRoZSBvdGhlciBmdW5jdGlvbiBoYXMgc3RpbGwgYW4gdW51c2VkIGxvb2thaGVhZFxuICAgICBjaGFyYWN0ZXIgaW4gaXRzIGlucHV0IGJ1ZmZlci4gSW4gY29uY2x1c2lvbiwgeW91IHNob3VsZCBuZXZlciBtaXggZGlyZWN0XG4gICAgIGxvdyBsZXZlbCByZWFkaW5nIGFuZCBoaWdoIGxldmVsIHNjYW5uaW5nIGZyb20gdGhlIHNhbWUgaW5wdXQgY2hhbm5lbC5cblxuICAqKVxuXG4gICgqIFBlcmZvcm0gYnVmZmVyaXplZCBpbnB1dCB0byBpbXByb3ZlIGVmZmljaWVuY3kuICopXG4gIGxldCBmaWxlX2J1ZmZlcl9zaXplID0gcmVmIDEwMjRcblxuICAoKiBUaGUgc2Nhbm5lciBjbG9zZXMgdGhlIGlucHV0IGNoYW5uZWwgYXQgZW5kIG9mIGlucHV0LiAqKVxuICBsZXQgc2Nhbl9jbG9zZV9hdF9lbmQgaWMgPSBTdGRsaWIuY2xvc2VfaW4gaWM7IHJhaXNlIEVuZF9vZl9maWxlXG5cbiAgKCogVGhlIHNjYW5uZXIgZG9lcyBub3QgY2xvc2UgdGhlIGlucHV0IGNoYW5uZWwgYXQgZW5kIG9mIGlucHV0OlxuICAgICBpdCBqdXN0IHJhaXNlcyBbRW5kX29mX2ZpbGVdLiAqKVxuICBsZXQgc2Nhbl9yYWlzZV9hdF9lbmQgX2ljID0gcmFpc2UgRW5kX29mX2ZpbGVcblxuICBsZXQgZnJvbV9pYyBzY2FuX2Nsb3NlX2ljIGluYW1lIGljID1cbiAgICBsZXQgbGVuID0gIWZpbGVfYnVmZmVyX3NpemUgaW5cbiAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICBsZXQgbGltID0gcmVmIDAgaW5cbiAgICBsZXQgZW9mID0gcmVmIGZhbHNlIGluXG4gICAgbGV0IG5leHQgKCkgPVxuICAgICAgaWYgIWkgPCAhbGltIHRoZW4gYmVnaW4gbGV0IGMgPSBCeXRlcy5nZXQgYnVmICFpIGluIGluY3IgaTsgYyBlbmQgZWxzZVxuICAgICAgaWYgIWVvZiB0aGVuIHJhaXNlIEVuZF9vZl9maWxlIGVsc2UgYmVnaW5cbiAgICAgICAgbGltIDo9IGlucHV0IGljIGJ1ZiAwIGxlbjtcbiAgICAgICAgaWYgIWxpbSA9IDAgdGhlbiBiZWdpbiBlb2YgOj0gdHJ1ZTsgc2Nhbl9jbG9zZV9pYyBpYyBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgIGkgOj0gMTtcbiAgICAgICAgICBCeXRlcy5nZXQgYnVmIDBcbiAgICAgICAgZW5kXG4gICAgICBlbmQgaW5cbiAgICBjcmVhdGUgaW5hbWUgbmV4dFxuXG5cbiAgbGV0IGZyb21faWNfY2xvc2VfYXRfZW5kID0gZnJvbV9pYyBzY2FuX2Nsb3NlX2F0X2VuZFxuICBsZXQgZnJvbV9pY19yYWlzZV9hdF9lbmQgPSBmcm9tX2ljIHNjYW5fcmFpc2VfYXRfZW5kXG5cbiAgKCogVGhlIHNjYW5uaW5nIGJ1ZmZlciByZWFkaW5nIGZyb20gW1N0ZGxpYi5zdGRpbl0uXG4gICAgIE9uZSBjb3VsZCB0cnkgdG8gZGVmaW5lIFtzdGRpYl0gYXMgYSBzY2FubmluZyBidWZmZXIgcmVhZGluZyBhIGNoYXJhY3RlclxuICAgICBhdCBhIHRpbWUgKG5vIGJ1ZmZlcml6YXRpb24gYXQgYWxsKSwgYnV0IHVuZm9ydHVuYXRlbHkgdGhlIHRvcC1sZXZlbFxuICAgICBpbnRlcmFjdGlvbiB3b3VsZCBiZSB3cm9uZy4gVGhpcyBpcyBkdWUgdG8gc29tZSBraW5kIG9mXG4gICAgICdyYWNlIGNvbmRpdGlvbicgd2hlbiByZWFkaW5nIGZyb20gW1N0ZGxpYi5zdGRpbl0sXG4gICAgIHNpbmNlIHRoZSBpbnRlcmFjdGl2ZSBjb21waWxlciBhbmQgW1NjYW5mLnNjYW5mXSB3aWxsIHNpbXVsdGFuZW91c2x5XG4gICAgIHJlYWQgdGhlIG1hdGVyaWFsIHRoZXkgbmVlZCBmcm9tIFtTdGRsaWIuc3RkaW5dOyB0aGVuLCBjb25mdXNpb25cbiAgICAgd2lsbCByZXN1bHQgZnJvbSB3aGF0IHNob3VsZCBiZSByZWFkIGJ5IHRoZSB0b3AtbGV2ZWwgYW5kIHdoYXQgc2hvdWxkIGJlXG4gICAgIHJlYWQgYnkgW1NjYW5mLnNjYW5mXS5cbiAgICAgVGhpcyBpcyBldmVuIG1vcmUgY29tcGxpY2F0ZWQgYnkgdGhlIG9uZSBjaGFyYWN0ZXIgbG9va2FoZWFkIHRoYXRcbiAgICAgW1NjYW5mLnNjYW5mXSBpcyBzb21ldGltZXMgb2JsaWdlZCB0byBtYWludGFpbjogdGhlIGxvb2thaGVhZCBjaGFyYWN0ZXJcbiAgICAgd2lsbCBiZSBhdmFpbGFibGUgZm9yIHRoZSBuZXh0IFtTY2FuZi5zY2FuZl0gZW50cnksIHNlZW1pbmdseSBjb21pbmcgZnJvbVxuICAgICBub3doZXJlLlxuICAgICBBbHNvIG5vIFtFbmRfb2ZfZmlsZV0gaXMgcmFpc2VkIHdoZW4gcmVhZGluZyBmcm9tIHN0ZGluOiBpZiBub3QgZW5vdWdoXG4gICAgIGNoYXJhY3RlcnMgaGF2ZSBiZWVuIHJlYWQsIHdlIHNpbXBseSBhc2sgdG8gcmVhZCBtb3JlLiAqKVxuICBsZXQgc3RkaW4gPVxuICAgIGZyb21faWMgc2Nhbl9yYWlzZV9hdF9lbmRcbiAgICAgIChGcm9tX2ZpbGUgKFwiLVwiLCBTdGRsaWIuc3RkaW4pKSBTdGRsaWIuc3RkaW5cblxuXG4gIGxldCBzdGRpYiA9IHN0ZGluXG5cbiAgbGV0IG9wZW5faW5fZmlsZSBvcGVuX2luIGZuYW1lID1cbiAgICBtYXRjaCBmbmFtZSB3aXRoXG4gICAgfCBcIi1cIiAtPiBzdGRpblxuICAgIHwgZm5hbWUgLT5cbiAgICAgIGxldCBpYyA9IG9wZW5faW4gZm5hbWUgaW5cbiAgICAgIGZyb21faWNfY2xvc2VfYXRfZW5kIChGcm9tX2ZpbGUgKGZuYW1lLCBpYykpIGljXG5cblxuICBsZXQgb3Blbl9pbiA9IG9wZW5faW5fZmlsZSBTdGRsaWIub3Blbl9pblxuICBsZXQgb3Blbl9pbl9iaW4gPSBvcGVuX2luX2ZpbGUgU3RkbGliLm9wZW5faW5fYmluXG5cbiAgbGV0IGZyb21fZmlsZSA9IG9wZW5faW5cbiAgbGV0IGZyb21fZmlsZV9iaW4gPSBvcGVuX2luX2JpblxuXG4gIGxldCBmcm9tX2NoYW5uZWwgaWMgPVxuICAgIGZyb21faWNfcmFpc2VfYXRfZW5kIChGcm9tX2NoYW5uZWwgaWMpIGljXG5cblxuICBsZXQgY2xvc2VfaW4gaWIgPVxuICAgIG1hdGNoIGliLmljX2lucHV0X25hbWUgd2l0aFxuICAgIHwgRnJvbV9jaGFubmVsIGljIC0+XG4gICAgICBTdGRsaWIuY2xvc2VfaW4gaWNcbiAgICB8IEZyb21fZmlsZSAoX2ZuYW1lLCBpYykgLT4gU3RkbGliLmNsb3NlX2luIGljXG4gICAgfCBGcm9tX2Z1bmN0aW9uIHwgRnJvbV9zdHJpbmcgLT4gKClcblxuXG4gICgqXG4gICAgIE9ic29sZXRlOiBhIG1lbW8gW2Zyb21fY2hhbm5lbF0gdmVyc2lvbiB0byBidWlsZCBhIFtTY2FubmluZy5pbl9jaGFubmVsXVxuICAgICBzY2FubmluZyBidWZmZXIgb3V0IG9mIGEgW1N0ZGxpYi5pbl9jaGFubmVsXS5cbiAgICAgVGhpcyBmdW5jdGlvbiB3YXMgdXNlZCB0byB0cnkgdG8gcHJlc2VydmUgdGhlIHNjYW5uaW5nXG4gICAgIHNlbWFudGljcyBmb3IgdGhlIChub3cgb2Jzb2xldGUpIGZ1bmN0aW9uIFtmc2NhbmZdLlxuICAgICBHaXZlbiB0aGF0IGFsbCBzY2FubmVyIG11c3QgcmVhZCBmcm9tIGEgW1NjYW5uaW5nLmluX2NoYW5uZWxdIHNjYW5uaW5nXG4gICAgIGJ1ZmZlciwgW2ZzY2FuZl0gbXVzdCByZWFkIGZyb20gb25lIVxuICAgICBNb3JlIHByZWNpc2VseSwgZ2l2ZW4gW2ljXSwgYWxsIHN1Y2Nlc3NpdmUgY2FsbHMgW2ZzY2FuZiBpY10gbXVzdCByZWFkXG4gICAgIGZyb20gdGhlIHNhbWUgc2Nhbm5pbmcgYnVmZmVyLlxuICAgICBUaGlzIG9ibGlnZWQgdGhpcyBsaWJyYXJ5IHRvIGFsbG9jYXRlZCBzY2FubmluZyBidWZmZXJzIHRoYXQgd2VyZVxuICAgICBub3QgcHJvcGVybHkgZ2FyYmFnZSBjb2xsZWN0YWJsZSwgaGVuY2UgbGVhZGluZyB0byBtZW1vcnkgbGVha3MuXG4gICAgIElmIHlvdSBuZWVkIHRvIHJlYWQgZnJvbSBhIFtTdGRsaWIuaW5fY2hhbm5lbF0gaW5wdXQgY2hhbm5lbFxuICAgICBbaWNdLCBzaW1wbHkgZGVmaW5lIGEgW1NjYW5uaW5nLmluX2NoYW5uZWxdIGZvcm1hdHRlZCBpbnB1dCBjaGFubmVsIGFzIGluXG4gICAgIFtsZXQgaWIgPSBTY2FubmluZy5mcm9tX2NoYW5uZWwgaWNdLCB0aGVuIHVzZSBbU2NhbmYuYnNjYW5mIGliXSBhcyB1c3VhbC5cbiAgKilcbiAgbGV0IG1lbW9fZnJvbV9pYyA9XG4gICAgbGV0IG1lbW8gPSByZWYgW10gaW5cbiAgICAoZnVuIHNjYW5fY2xvc2VfaWMgaWMgLT5cbiAgICAgdHJ5IExpc3QuYXNzcSBpYyAhbWVtbyB3aXRoXG4gICAgIHwgTm90X2ZvdW5kIC0+XG4gICAgICAgbGV0IGliID1cbiAgICAgICAgIGZyb21faWMgc2Nhbl9jbG9zZV9pYyAoRnJvbV9jaGFubmVsIGljKSBpYyBpblxuICAgICAgIG1lbW8gOj0gKGljLCBpYikgOjogIW1lbW87XG4gICAgICAgaWIpXG5cblxuICAoKiBPYnNvbGV0ZTogc2VlIHshbWVtb19mcm9tX2ljfSBhYm92ZS4gKilcbiAgbGV0IG1lbW9fZnJvbV9jaGFubmVsID0gbWVtb19mcm9tX2ljIHNjYW5fcmFpc2VfYXRfZW5kXG5cbmVuZFxuXG5cbigqIEZvcm1hdHRlZCBpbnB1dCBmdW5jdGlvbnMuICopXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSBzY2FubmVyID1cbiAgICAgKCdhLCBTY2FubmluZy5pbl9jaGFubmVsLCAnYiwgJ2MsICdhIC0+ICdkLCAnZCkgZm9ybWF0NiAtPiAnY1xuXG5cbigqIFJlcG9ydGluZyBlcnJvcnMuICopXG5leGNlcHRpb24gU2Nhbl9mYWlsdXJlIG9mIHN0cmluZ1xuXG5sZXQgYmFkX2lucHV0IHMgPSByYWlzZSAoU2Nhbl9mYWlsdXJlIHMpXG5cbmxldCBiYWRfaW5wdXRfZXNjYXBlIGMgPVxuICBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwiaWxsZWdhbCBlc2NhcGUgY2hhcmFjdGVyICVDXCIgYylcblxuXG5sZXQgYmFkX3Rva2VuX2xlbmd0aCBtZXNzYWdlID1cbiAgYmFkX2lucHV0XG4gICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgXCJzY2FubmluZyBvZiAlcyBmYWlsZWQ6IFxcXG4gICAgICAgIHRoZSBzcGVjaWZpZWQgbGVuZ3RoIHdhcyB0b28gc2hvcnQgZm9yIHRva2VuXCJcbiAgICAgICBtZXNzYWdlKVxuXG5cbmxldCBiYWRfZW5kX29mX2lucHV0IG1lc3NhZ2UgPVxuICBiYWRfaW5wdXRcbiAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICBcInNjYW5uaW5nIG9mICVzIGZhaWxlZDogXFxcbiAgICAgICAgcHJlbWF0dXJlIGVuZCBvZiBmaWxlIG9jY3VycmVkIGJlZm9yZSBlbmQgb2YgdG9rZW5cIlxuICAgICAgIG1lc3NhZ2UpXG5cblxubGV0IGJhZF9mbG9hdCAoKSA9XG4gIGJhZF9pbnB1dCBcIm5vIGRvdCBvciBleHBvbmVudCBwYXJ0IGZvdW5kIGluIGZsb2F0IHRva2VuXCJcblxuXG5sZXQgYmFkX2hleF9mbG9hdCAoKSA9XG4gIGJhZF9pbnB1dCBcIm5vdCBhIHZhbGlkIGZsb2F0IGluIGhleGFkZWNpbWFsIG5vdGF0aW9uXCJcblxuXG5sZXQgY2hhcmFjdGVyX21pc21hdGNoX2VyciBjIGNpID1cbiAgUHJpbnRmLnNwcmludGYgXCJsb29raW5nIGZvciAlQywgZm91bmQgJUNcIiBjIGNpXG5cblxubGV0IGNoYXJhY3Rlcl9taXNtYXRjaCBjIGNpID1cbiAgYmFkX2lucHV0IChjaGFyYWN0ZXJfbWlzbWF0Y2hfZXJyIGMgY2kpXG5cblxubGV0IHJlYyBza2lwX3doaXRlcyBpYiA9XG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIG5vdCAoU2Nhbm5pbmcuZW9mIGliKSB0aGVuIGJlZ2luXG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCAnICcgfCAnXFx0JyB8ICdcXG4nIHwgJ1xccicgLT5cbiAgICAgIFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliOyBza2lwX3doaXRlcyBpYlxuICAgIHwgXyAtPiAoKVxuICBlbmRcblxuXG4oKiBDaGVja2luZyB0aGF0IFtjXSBpcyBpbmRlZWQgaW4gdGhlIGlucHV0LCB0aGVuIHNraXBzIGl0LlxuICAgSW4gdGhpcyBjYXNlLCB0aGUgY2hhcmFjdGVyIFtjXSBoYXMgYmVlbiBleHBsaWNpdGx5IHNwZWNpZmllZCBpbiB0aGVcbiAgIGZvcm1hdCBhcyBiZWluZyBtYW5kYXRvcnkgaW4gdGhlIGlucHV0OyBoZW5jZSB3ZSBzaG91bGQgZmFpbCB3aXRoXG4gICBbRW5kX29mX2ZpbGVdIGluIGNhc2Ugb2YgZW5kX29mX2lucHV0LlxuICAgKFJlbWVtYmVyIHRoYXQgW1NjYW5fZmFpbHVyZV0gaXMgcmFpc2VkIG9ubHkgd2hlbiAod2UgY2FuIHByb3ZlIGJ5XG4gICBldmlkZW5jZSkgdGhhdCB0aGUgaW5wdXQgZG9lcyBub3QgbWF0Y2ggdGhlIGZvcm1hdCBzdHJpbmcgZ2l2ZW4uIFdlIG11c3RcbiAgIHRodXMgZGlmZmVyZW50aWF0ZSBbRW5kX29mX2ZpbGVdIGFzIGFuIGVycm9yIGR1ZSB0byBsYWNrIG9mIGlucHV0LCBhbmRcbiAgIFtTY2FuX2ZhaWx1cmVdIHdoaWNoIGlzIGR1ZSB0byBwcm92YWJseSB3cm9uZyBpbnB1dC4gSSBhbSBub3Qgc3VyZSB0aGlzIGlzXG4gICB3b3J0aCB0aGUgYnVyZGVuOiBpdCBpcyBjb21wbGV4IGFuZCBzb21laG93IHN1YmxpbWluYWw7IHNob3VsZCBiZSBjbGVhcmVyXG4gICB0byBmYWlsIHdpdGggU2Nhbl9mYWlsdXJlIFwiTm90IGVub3VnaCBpbnB1dCB0byBjb21wbGV0ZSBzY2FubmluZ1wiISlcblxuICAgVGhhdCdzIHdoeSwgd2FpdGluZyBmb3IgYSBiZXR0ZXIgc29sdXRpb24sIHdlIHVzZSBjaGVja2VkX3BlZWtfY2hhciBoZXJlLlxuICAgV2UgYXJlIGFsc28gY2FyZWZ1bCB0byB0cmVhdCBcIlxcclxcblwiIGluIHRoZSBpbnB1dCBhcyBhbiBlbmQgb2YgbGluZSBtYXJrZXI6XG4gICBpdCBhbHdheXMgbWF0Y2hlcyBhICdcXG4nIHNwZWNpZmljYXRpb24gaW4gdGhlIGlucHV0IGZvcm1hdCBzdHJpbmcuICopXG5sZXQgcmVjIGNoZWNrX2NoYXIgaWIgYyA9XG4gIG1hdGNoIGMgd2l0aFxuICB8ICcgJyAtPiBza2lwX3doaXRlcyBpYlxuICB8ICdcXG4nIC0+IGNoZWNrX25ld2xpbmUgaWJcbiAgfCBjIC0+IGNoZWNrX3RoaXNfY2hhciBpYiBjXG5cbmFuZCBjaGVja190aGlzX2NoYXIgaWIgYyA9XG4gIGxldCBjaSA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIGlmIGNpID0gYyB0aGVuIFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliIGVsc2VcbiAgY2hhcmFjdGVyX21pc21hdGNoIGMgY2lcblxuYW5kIGNoZWNrX25ld2xpbmUgaWIgPVxuICBsZXQgY2kgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBtYXRjaCBjaSB3aXRoXG4gIHwgJ1xcbicgLT4gU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWJcbiAgfCAnXFxyJyAtPiBTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYjsgY2hlY2tfdGhpc19jaGFyIGliICdcXG4nXG4gIHwgXyAtPiBjaGFyYWN0ZXJfbWlzbWF0Y2ggJ1xcbicgY2lcblxuXG4oKiBFeHRyYWN0aW5nIHRva2VucyBmcm9tIHRoZSBvdXRwdXQgdG9rZW4gYnVmZmVyLiAqKVxuXG5sZXQgdG9rZW5fY2hhciBpYiA9IChTY2FubmluZy50b2tlbiBpYikuWzBdXG5cbmxldCB0b2tlbl9zdHJpbmcgPSBTY2FubmluZy50b2tlblxuXG5sZXQgdG9rZW5fYm9vbCBpYiA9XG4gIG1hdGNoIFNjYW5uaW5nLnRva2VuIGliIHdpdGhcbiAgfCBcInRydWVcIiAtPiB0cnVlXG4gIHwgXCJmYWxzZVwiIC0+IGZhbHNlXG4gIHwgcyAtPiBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwiaW52YWxpZCBib29sZWFuICclcydcIiBzKVxuXG5cbigqIFRoZSB0eXBlIG9mIGludGVnZXIgY29udmVyc2lvbnMuICopXG50eXBlIGludGVnZXJfY29udmVyc2lvbiA9XG4gIHwgQl9jb252ZXJzaW9uICgqIFVuc2lnbmVkIGJpbmFyeSBjb252ZXJzaW9uICopXG4gIHwgRF9jb252ZXJzaW9uICgqIFNpZ25lZCBkZWNpbWFsIGNvbnZlcnNpb24gKilcbiAgfCBJX2NvbnZlcnNpb24gKCogU2lnbmVkIGludGVnZXIgY29udmVyc2lvbiAqKVxuICB8IE9fY29udmVyc2lvbiAoKiBVbnNpZ25lZCBvY3RhbCBjb252ZXJzaW9uICopXG4gIHwgVV9jb252ZXJzaW9uICgqIFVuc2lnbmVkIGRlY2ltYWwgY29udmVyc2lvbiAqKVxuICB8IFhfY29udmVyc2lvbiAoKiBVbnNpZ25lZCBoZXhhZGVjaW1hbCBjb252ZXJzaW9uICopXG5cblxubGV0IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyID0gZnVuY3Rpb25cbiAgfCAnYicgLT4gQl9jb252ZXJzaW9uXG4gIHwgJ2QnIC0+IERfY29udmVyc2lvblxuICB8ICdpJyAtPiBJX2NvbnZlcnNpb25cbiAgfCAnbycgLT4gT19jb252ZXJzaW9uXG4gIHwgJ3UnIC0+IFVfY29udmVyc2lvblxuICB8ICd4JyB8ICdYJyAtPiBYX2NvbnZlcnNpb25cbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5cbigqIEV4dHJhY3QgYW4gaW50ZWdlciBsaXRlcmFsIHRva2VuLlxuICAgU2luY2UgdGhlIGZ1bmN0aW9ucyBTdGRsaWIuKmludCpfb2Zfc3RyaW5nIGRvIG5vdCBhY2NlcHQgYSBsZWFkaW5nICssXG4gICB3ZSBza2lwIGl0IGlmIG5lY2Vzc2FyeS4gKilcbmxldCB0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliID1cbiAgbGV0IHRvayA9XG4gICAgbWF0Y2ggY29udiB3aXRoXG4gICAgfCBEX2NvbnZlcnNpb24gfCBJX2NvbnZlcnNpb24gLT4gU2Nhbm5pbmcudG9rZW4gaWJcbiAgICB8IFVfY29udmVyc2lvbiAtPiBcIjB1XCIgXiBTY2FubmluZy50b2tlbiBpYlxuICAgIHwgT19jb252ZXJzaW9uIC0+IFwiMG9cIiBeIFNjYW5uaW5nLnRva2VuIGliXG4gICAgfCBYX2NvbnZlcnNpb24gLT4gXCIweFwiIF4gU2Nhbm5pbmcudG9rZW4gaWJcbiAgICB8IEJfY29udmVyc2lvbiAtPiBcIjBiXCIgXiBTY2FubmluZy50b2tlbiBpYiBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggdG9rIGluXG4gIGlmIGwgPSAwIHx8IHRvay5bMF0gPD4gJysnIHRoZW4gdG9rIGVsc2UgU3RyaW5nLnN1YiB0b2sgMSAobCAtIDEpXG5cblxuKCogQWxsIHRoZSBmdW5jdGlvbnMgdGhhdCBjb252ZXJ0IGEgc3RyaW5nIHRvIGEgbnVtYmVyIHJhaXNlIHRoZSBleGNlcHRpb25cbiAgIEZhaWx1cmUgd2hlbiB0aGUgY29udmVyc2lvbiBpcyBub3QgcG9zc2libGUuXG4gICBUaGlzIGV4Y2VwdGlvbiBpcyB0aGVuIHRyYXBwZWQgaW4gW2tzY2FuZl0uICopXG5sZXQgdG9rZW5faW50IGNvbnYgaWIgPSBpbnRfb2Zfc3RyaW5nICh0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliKVxuXG5sZXQgdG9rZW5fZmxvYXQgaWIgPSBmbG9hdF9vZl9zdHJpbmcgKFNjYW5uaW5nLnRva2VuIGliKVxuXG4oKiBUbyBzY2FuIG5hdGl2ZSBpbnRzLCBpbnQzMiBhbmQgaW50NjQgaW50ZWdlcnMuXG4gICBXZSBjYW5ub3QgYWNjZXNzIHRvIGNvbnZlcnNpb25zIHRvL2Zyb20gc3RyaW5ncyBmb3IgdGhvc2UgdHlwZXMsXG4gICBOYXRpdmVpbnQub2Zfc3RyaW5nLCBJbnQzMi5vZl9zdHJpbmcsIGFuZCBJbnQ2NC5vZl9zdHJpbmcsXG4gICBzaW5jZSB0aG9zZSBtb2R1bGVzIGFyZSBub3QgYXZhaWxhYmxlIHRvIFtTY2FuZl0uXG4gICBIb3dldmVyLCB3ZSBjYW4gYmluZCBhbmQgdXNlIHRoZSBjb3JyZXNwb25kaW5nIHByaW1pdGl2ZXMgdGhhdCBhcmVcbiAgIGF2YWlsYWJsZSBpbiB0aGUgcnVudGltZS4gKilcbmV4dGVybmFsIG5hdGl2ZWludF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gbmF0aXZlaW50XG4gID0gXCJjYW1sX25hdGl2ZWludF9vZl9zdHJpbmdcIlxuXG5leHRlcm5hbCBpbnQzMl9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50MzJcbiAgPSBcImNhbWxfaW50MzJfb2Zfc3RyaW5nXCJcblxuZXh0ZXJuYWwgaW50NjRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X29mX3N0cmluZ1wiXG5cblxubGV0IHRva2VuX25hdGl2ZWludCBjb252IGliID0gbmF0aXZlaW50X29mX3N0cmluZyAodG9rZW5faW50X2xpdGVyYWwgY29udiBpYilcbmxldCB0b2tlbl9pbnQzMiBjb252IGliID0gaW50MzJfb2Zfc3RyaW5nICh0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliKVxubGV0IHRva2VuX2ludDY0IGNvbnYgaWIgPSBpbnQ2NF9vZl9zdHJpbmcgKHRva2VuX2ludF9saXRlcmFsIGNvbnYgaWIpXG5cbigqIFNjYW5uaW5nIG51bWJlcnMuICopXG5cbigqIERpZ2l0cyBzY2FubmluZyBmdW5jdGlvbnMgc3VwcG9zZSB0aGF0IG9uZSBjaGFyYWN0ZXIgaGFzIGJlZW4gY2hlY2tlZCBhbmRcbiAgIGlzIGF2YWlsYWJsZSwgc2luY2UgdGhleSByZXR1cm4gYXQgZW5kIG9mIGZpbGUgd2l0aCB0aGUgY3VycmVudGx5IGZvdW5kXG4gICB0b2tlbiBzZWxlY3RlZC5cblxuICAgUHV0IGl0IGluIGFub3RoZXIgd2F5LCB0aGUgZGlnaXRzIHNjYW5uaW5nIGZ1bmN0aW9ucyBzY2FuIGZvciBhIHBvc3NpYmx5XG4gICBlbXB0eSBzZXF1ZW5jZSBvZiBkaWdpdHMsIChoZW5jZSwgYSBzdWNjZXNzZnVsIHNjYW5uaW5nIGZyb20gb25lIG9mIHRob3NlXG4gICBmdW5jdGlvbnMgZG9lcyBub3QgaW1wbHkgdGhhdCB0aGUgdG9rZW4gaXMgYSB3ZWxsLWZvcm1lZCBudW1iZXI6IHRvIGdldCBhXG4gICB0cnVlIG51bWJlciwgaXQgaXMgbWFuZGF0b3J5IHRvIGNoZWNrIHRoYXQgYXQgbGVhc3Qgb25lIHZhbGlkIGRpZ2l0IGlzXG4gICBhdmFpbGFibGUgYmVmb3JlIGNhbGxpbmcgb25lIG9mIHRoZSBkaWdpdCBzY2FubmluZyBmdW5jdGlvbnMpLiAqKVxuXG4oKiBUaGUgZGVjaW1hbCBjYXNlIGlzIHRyZWF0ZWQgZXNwZWNpYWxseSBmb3Igb3B0aW1pemF0aW9uIHB1cnBvc2VzLiAqKVxubGV0IHJlYyBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYlxuICB8ICdfJyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliIGluXG4gICAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWJcbiAgfCBfIC0+IHdpZHRoXG5cblxubGV0IHNjYW5fZGVjaW1hbF9kaWdpdF9wbHVzIHdpZHRoIGliID1cbiAgaWYgd2lkdGggPSAwIHRoZW4gYmFkX3Rva2VuX2xlbmd0aCBcImRlY2ltYWwgZGlnaXRzXCIgZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcwJyAuLiAnOScgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYlxuICB8IGMgLT5cbiAgICBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwiY2hhcmFjdGVyICVDIGlzIG5vdCBhIGRlY2ltYWwgZGlnaXRcIiBjKVxuXG5cbigqIFRvIHNjYW4gbnVtYmVycyBmcm9tIG90aGVyIGJhc2VzLCB3ZSB1c2UgYSBwcmVkaWNhdGUgYXJndW1lbnQgdG9cbiAgIHNjYW4gZGlnaXRzLiAqKVxubGV0IHNjYW5fZGlnaXRfc3RhciBkaWdpdHAgd2lkdGggaWIgPVxuICBsZXQgcmVjIHNjYW5fZGlnaXRzIHdpZHRoIGliID1cbiAgICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gICAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCBjIHdoZW4gZGlnaXRwIGMgLT5cbiAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgc2Nhbl9kaWdpdHMgd2lkdGggaWJcbiAgICB8ICdfJyAtPlxuICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIgaW5cbiAgICAgIHNjYW5fZGlnaXRzIHdpZHRoIGliXG4gICAgfCBfIC0+IHdpZHRoIGluXG4gIHNjYW5fZGlnaXRzIHdpZHRoIGliXG5cblxubGV0IHNjYW5fZGlnaXRfcGx1cyBiYXNpcyBkaWdpdHAgd2lkdGggaWIgPVxuICAoKiBFbnN1cmUgd2UgaGF2ZSBnb3QgZW5vdWdoIHdpZHRoIGxlZnQsXG4gICAgIGFuZCByZWFkIGF0IGxlYXN0IG9uZSBkaWdpdC4gKilcbiAgaWYgd2lkdGggPSAwIHRoZW4gYmFkX3Rva2VuX2xlbmd0aCBcImRpZ2l0c1wiIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBpZiBkaWdpdHAgYyB0aGVuXG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgc2Nhbl9kaWdpdF9zdGFyIGRpZ2l0cCB3aWR0aCBpYlxuICBlbHNlXG4gICAgYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcImNoYXJhY3RlciAlQyBpcyBub3QgYSB2YWxpZCAlcyBkaWdpdFwiIGMgYmFzaXMpXG5cblxubGV0IGlzX2JpbmFyeV9kaWdpdCA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICcxJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5cbmxldCBzY2FuX2JpbmFyeV9pbnQgPSBzY2FuX2RpZ2l0X3BsdXMgXCJiaW5hcnlcIiBpc19iaW5hcnlfZGlnaXRcblxubGV0IGlzX29jdGFsX2RpZ2l0ID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzcnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cblxubGV0IHNjYW5fb2N0YWxfaW50ID0gc2Nhbl9kaWdpdF9wbHVzIFwib2N0YWxcIiBpc19vY3RhbF9kaWdpdFxuXG5sZXQgaXNfaGV4YV9kaWdpdCA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICc5JyB8ICdhJyAuLiAnZicgfCAnQScgLi4gJ0YnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cblxubGV0IHNjYW5faGV4YWRlY2ltYWxfaW50ID0gc2Nhbl9kaWdpdF9wbHVzIFwiaGV4YWRlY2ltYWxcIiBpc19oZXhhX2RpZ2l0XG5cbigqIFNjYW4gYSBkZWNpbWFsIGludGVnZXIuICopXG5sZXQgc2Nhbl91bnNpZ25lZF9kZWNpbWFsX2ludCA9IHNjYW5fZGVjaW1hbF9kaWdpdF9wbHVzXG5cbmxldCBzY2FuX3NpZ24gd2lkdGggaWIgPVxuICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcrJyAtPiBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGNcbiAgfCAnLScgLT4gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjXG4gIHwgXyAtPiB3aWR0aFxuXG5cbmxldCBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliID1cbiAgbGV0IHdpZHRoID0gc2Nhbl9zaWduIHdpZHRoIGliIGluXG4gIHNjYW5fdW5zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcblxuXG4oKiBTY2FuIGFuIHVuc2lnbmVkIGludGVnZXIgdGhhdCBjb3VsZCBiZSBnaXZlbiBpbiBhbnkgKGNvbW1vbikgYmFzaXMuXG4gICBJZiBkaWdpdHMgYXJlIHByZWZpeGVkIGJ5IG9uZSBvZiAweCwgMFgsIDBvLCBvciAwYiwgdGhlIG51bWJlciBpc1xuICAgYXNzdW1lZCB0byBiZSB3cml0dGVuIHJlc3BlY3RpdmVseSBpbiBoZXhhZGVjaW1hbCwgaGV4YWRlY2ltYWwsXG4gICBvY3RhbCwgb3IgYmluYXJ5LiAqKVxubGV0IHNjYW5fdW5zaWduZWRfaW50IHdpZHRoIGliID1cbiAgbWF0Y2ggU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgd2l0aFxuICB8ICcwJyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICAgIGJlZ2luIG1hdGNoIGMgd2l0aFxuICAgIHwgJ3gnIHwgJ1gnIC0+IHNjYW5faGV4YWRlY2ltYWxfaW50IChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGliXG4gICAgfCAnbycgLT4gc2Nhbl9vY3RhbF9pbnQgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgICB8ICdiJyAtPiBzY2FuX2JpbmFyeV9pbnQgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgICB8IF8gLT4gc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWIgZW5kXG4gIHwgXyAtPiBzY2FuX3Vuc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG5cblxubGV0IHNjYW5fb3B0aW9uYWxseV9zaWduZWRfaW50IHdpZHRoIGliID1cbiAgbGV0IHdpZHRoID0gc2Nhbl9zaWduIHdpZHRoIGliIGluXG4gIHNjYW5fdW5zaWduZWRfaW50IHdpZHRoIGliXG5cblxubGV0IHNjYW5faW50X2NvbnZlcnNpb24gY29udiB3aWR0aCBpYiA9XG4gIG1hdGNoIGNvbnYgd2l0aFxuICB8IEJfY29udmVyc2lvbiAtPiBzY2FuX2JpbmFyeV9pbnQgd2lkdGggaWJcbiAgfCBEX2NvbnZlcnNpb24gLT4gc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuICB8IElfY29udmVyc2lvbiAtPiBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2ludCB3aWR0aCBpYlxuICB8IE9fY29udmVyc2lvbiAtPiBzY2FuX29jdGFsX2ludCB3aWR0aCBpYlxuICB8IFVfY29udmVyc2lvbiAtPiBzY2FuX3Vuc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG4gIHwgWF9jb252ZXJzaW9uIC0+IHNjYW5faGV4YWRlY2ltYWxfaW50IHdpZHRoIGliXG5cblxuKCogU2Nhbm5pbmcgZmxvYXRpbmcgcG9pbnQgbnVtYmVycy4gKilcblxuKCogRnJhY3Rpb25hbCBwYXJ0IGlzIG9wdGlvbmFsIGFuZCBjYW4gYmUgcmVkdWNlZCB0byAwIGRpZ2l0cy4gKilcbmxldCBzY2FuX2ZyYWN0aW9uYWxfcGFydCB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpYlxuICB8IF8gLT4gd2lkdGhcblxuXG4oKiBFeHAgcGFydCBpcyBvcHRpb25hbCBhbmQgY2FuIGJlIHJlZHVjZWQgdG8gMCBkaWdpdHMuICopXG5sZXQgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliID1cbiAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gIG1hdGNoIGMgd2l0aFxuICB8ICdlJyB8ICdFJyBhcyBjIC0+XG4gICAgc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpYlxuICB8IF8gLT4gd2lkdGhcblxuXG4oKiBTY2FuIHRoZSBpbnRlZ2VyIHBhcnQgb2YgYSBmbG9hdGluZyBwb2ludCBudW1iZXIsIChub3QgdXNpbmcgdGhlXG4gICBPQ2FtbCBsZXhpY2FsIGNvbnZlbnRpb24gc2luY2UgdGhlIGludGVnZXIgcGFydCBjYW4gYmUgZW1wdHkpOlxuICAgYW4gb3B0aW9uYWwgc2lnbiwgZm9sbG93ZWQgYnkgYSBwb3NzaWJseSBlbXB0eSBzZXF1ZW5jZSBvZiBkZWNpbWFsXG4gICBkaWdpdHMgKGUuZy4gLS4xKS4gKilcbmxldCBzY2FuX2ludGVnZXJfcGFydCB3aWR0aCBpYiA9XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYlxuXG5cbigqXG4gICBGb3IgdGhlIHRpbWUgYmVpbmcgd2UgaGF2ZSAoYXMgZm91bmQgaW4gc2NhbmYubWxpKTpcbiAgIHRoZSBmaWVsZCB3aWR0aCBpcyBjb21wb3NlZCBvZiBhbiBvcHRpb25hbCBpbnRlZ2VyIGxpdGVyYWxcbiAgIGluZGljYXRpbmcgdGhlIG1heGltYWwgd2lkdGggb2YgdGhlIHRva2VuIHRvIHJlYWQuXG4gICBVbmZvcnR1bmF0ZWx5LCB0aGUgdHlwZS1jaGVja2VyIGxldCB0aGUgdXNlciB3cml0ZSBhbiBvcHRpb25hbCBwcmVjaXNpb24sXG4gICBzaW5jZSB0aGlzIGlzIHZhbGlkIGZvciBwcmludGYgZm9ybWF0IHN0cmluZ3MuXG5cbiAgIFRodXMsIHRoZSBuZXh0IHN0ZXAgZm9yIFNjYW5mIGlzIHRvIHN1cHBvcnQgYSBmdWxsIHdpZHRoIGFuZCBwcmVjaXNpb25cbiAgIGluZGljYXRpb24sIG1vcmUgb3IgbGVzcyBzaW1pbGFyIHRvIHRoZSBvbmUgZm9yIHByaW50ZiwgcG9zc2libHkgZXh0ZW5kZWRcbiAgIHRvIHRoZSBzcGVjaWZpY2F0aW9uIG9mIGEgW21heCwgbWluXSByYW5nZSBmb3IgdGhlIHdpZHRoIG9mIHRoZSB0b2tlbiByZWFkXG4gICBmb3Igc3RyaW5ncy4gU29tZXRoaW5nIGxpa2UgdGhlIGZvbGxvd2luZyBzcGVjIGZvciBzY2FuZi5tbGk6XG5cbiAgIFRoZSBvcHRpb25hbCBbd2lkdGhdIGlzIGFuIGludGVnZXIgaW5kaWNhdGluZyB0aGUgbWF4aW1hbFxuICAgd2lkdGggb2YgdGhlIHRva2VuIHJlYWQuIEZvciBpbnN0YW5jZSwgWyU2ZF0gcmVhZHMgYW4gaW50ZWdlcixcbiAgIGhhdmluZyBhdCBtb3N0IDYgY2hhcmFjdGVycy5cblxuICAgVGhlIG9wdGlvbmFsIFtwcmVjaXNpb25dIGlzIGEgZG90IFsuXSBmb2xsb3dlZCBieSBhbiBpbnRlZ2VyOlxuXG4gICAtIGluIHRoZSBmbG9hdGluZyBwb2ludCBudW1iZXIgY29udmVyc2lvbnMgKFslZl0sIFslZV0sIFslZ10sIFslRl0sIFslRV0sXG4gICBhbmQgWyVGXSBjb252ZXJzaW9ucywgdGhlIFtwcmVjaXNpb25dIGluZGljYXRlcyB0aGUgbWF4aW11bSBudW1iZXIgb2ZcbiAgIGRpZ2l0cyB0aGF0IG1heSBmb2xsb3cgdGhlIGRlY2ltYWwgcG9pbnQuIEZvciBpbnN0YW5jZSwgWyUuNGZdIHJlYWRzIGFcbiAgIFtmbG9hdF0gd2l0aCBhdCBtb3N0IDQgZnJhY3Rpb25hbCBkaWdpdHMsXG5cbiAgIC0gaW4gdGhlIHN0cmluZyBjb252ZXJzaW9ucyAoWyVzXSwgWyVTXSwgWyVcXFsgcmFuZ2UgXFxdXSksIGFuZCBpbiB0aGVcbiAgIGludGVnZXIgbnVtYmVyIGNvbnZlcnNpb25zIChbJWldLCBbJWRdLCBbJXVdLCBbJXhdLCBbJW9dLCBhbmQgdGhlaXJcbiAgIFtpbnQzMl0sIFtpbnQ2NF0sIGFuZCBbbmF0aXZlX2ludF0gY29ycmVzcG9uZGVudCksIHRoZSBbcHJlY2lzaW9uXVxuICAgaW5kaWNhdGVzIHRoZSByZXF1aXJlZCBtaW5pbXVtIHdpZHRoIG9mIHRoZSB0b2tlbiByZWFkLFxuXG4gICAtIG9uIGFsbCBvdGhlciBjb252ZXJzaW9ucywgdGhlIHdpZHRoIGFuZCBwcmVjaXNpb24gc3BlY2lmeSB0aGUgW21heCwgbWluXVxuICAgcmFuZ2UgZm9yIHRoZSB3aWR0aCBvZiB0aGUgdG9rZW4gcmVhZC5cbiopXG5sZXQgc2Nhbl9mbG9hdCB3aWR0aCBwcmVjaXNpb24gaWIgPVxuICBsZXQgd2lkdGggPSBzY2FuX2ludGVnZXJfcGFydCB3aWR0aCBpYiBpblxuICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCwgcHJlY2lzaW9uIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGgsIHByZWNpc2lvbiBlbHNlXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcuJyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGxldCBwcmVjaXNpb24gPSBJbnQubWluIHdpZHRoIHByZWNpc2lvbiBpblxuICAgIGxldCB3aWR0aCA9IHdpZHRoIC0gKHByZWNpc2lvbiAtIHNjYW5fZnJhY3Rpb25hbF9wYXJ0IHByZWNpc2lvbiBpYikgaW5cbiAgICBzY2FuX2V4cG9uZW50X3BhcnQgd2lkdGggaWIsIHByZWNpc2lvblxuICB8IF8gLT5cbiAgICBzY2FuX2V4cG9uZW50X3BhcnQgd2lkdGggaWIsIHByZWNpc2lvblxuXG5cbmxldCBjaGVja19jYXNlX2luc2Vuc2l0aXZlX3N0cmluZyB3aWR0aCBpYiBlcnJvciBzdHIgPVxuICBsZXQgbG93ZXJjYXNlIGMgPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJ0EnIC4uICdaJyAtPlxuICAgICAgY2hhcl9vZl9pbnQgKGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnQScgKyBpbnRfb2ZfY2hhciAnYScpXG4gICAgfCBfIC0+IGMgaW5cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCB3aWR0aCA9IHJlZiB3aWR0aCBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgbG93ZXJjYXNlIGMgPD4gbG93ZXJjYXNlIHN0ci5baV0gdGhlbiBlcnJvciAoKTtcbiAgICBpZiAhd2lkdGggPSAwIHRoZW4gZXJyb3IgKCk7XG4gICAgd2lkdGggOj0gU2Nhbm5pbmcuc3RvcmVfY2hhciAhd2lkdGggaWIgYztcbiAgZG9uZTtcbiAgIXdpZHRoXG5cblxubGV0IHNjYW5faGV4X2Zsb2F0IHdpZHRoIHByZWNpc2lvbiBpYiA9XG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICBsZXQgd2lkdGggPSBzY2FuX3NpZ24gd2lkdGggaWIgaW5cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gIHwgJzAnIGFzIGMgLT4gKFxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICAgIGxldCB3aWR0aCA9IGNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIHdpZHRoIGliIGJhZF9oZXhfZmxvYXQgXCJ4XCIgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgbGV0IHdpZHRoID0gbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgfCAnLicgfCAncCcgfCAnUCcgLT4gd2lkdGhcbiAgICAgICAgfCBfIC0+IHNjYW5faGV4YWRlY2ltYWxfaW50IHdpZHRoIGliIGluXG4gICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICBsZXQgd2lkdGggPSBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICAgIHwgJy4nIGFzIGMgLT4gKFxuICAgICAgICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICAgICAgICB8ICdwJyB8ICdQJyAtPiB3aWR0aFxuICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICBsZXQgcHJlY2lzaW9uID0gSW50Lm1pbiB3aWR0aCBwcmVjaXNpb24gaW5cbiAgICAgICAgICAgICAgICB3aWR0aCAtIChwcmVjaXNpb24gLSBzY2FuX2hleGFkZWNpbWFsX2ludCBwcmVjaXNpb24gaWIpXG4gICAgICAgICAgKVxuICAgICAgICAgIHwgXyAtPiB3aWR0aCBpblxuICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgICAgfCAncCcgfCAnUCcgYXMgYyAtPlxuICAgICAgICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICAgICAgICAgIHNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcbiAgICAgICAgICB8IF8gLT4gd2lkdGhcbiAgKVxuICB8ICduJyB8ICdOJyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gICAgY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmcgd2lkdGggaWIgYmFkX2hleF9mbG9hdCBcImFuXCJcbiAgfCAnaScgfCAnSScgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICAgIGNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIHdpZHRoIGliIGJhZF9oZXhfZmxvYXQgXCJuZmluaXR5XCJcbiAgfCBfIC0+IGJhZF9oZXhfZmxvYXQgKClcblxuXG5sZXQgc2Nhbl9jYW1sX2Zsb2F0X3Jlc3Qgd2lkdGggcHJlY2lzaW9uIGliID1cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgbGV0IHdpZHRoID0gc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWIgaW5cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJy4nIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgKCogVGhlIGVmZmVjdGl2ZSB3aWR0aCBhdmFpbGFibGUgZm9yIHNjYW5uaW5nIHRoZSBmcmFjdGlvbmFsIHBhcnQgaXNcbiAgICAgICB0aGUgbWluaW11bSBvZiBkZWNsYXJlZCBwcmVjaXNpb24gYW5kIHdpZHRoIGxlZnQuICopXG4gICAgbGV0IHByZWNpc2lvbiA9IEludC5taW4gd2lkdGggcHJlY2lzaW9uIGluXG4gICAgKCogQWZ0ZXIgc2Nhbm5pbmcgdGhlIGZyYWN0aW9uYWwgcGFydCB3aXRoIFtwcmVjaXNpb25dIHByb3Zpc2lvbmFsIHdpZHRoLFxuICAgICAgIFt3aWR0aF9wcmVjaXNpb25dIGlzIGxlZnQuICopXG4gICAgbGV0IHdpZHRoX3ByZWNpc2lvbiA9IHNjYW5fZnJhY3Rpb25hbF9wYXJ0IHByZWNpc2lvbiBpYiBpblxuICAgICgqIEhlbmNlLCBzY2FubmluZyB0aGUgZnJhY3Rpb25hbCBwYXJ0IHRvb2sgZXhhY3RseVxuICAgICAgIFtwcmVjaXNpb24gLSB3aWR0aF9wcmVjaXNpb25dIGNoYXJzLiAqKVxuICAgIGxldCBmcmFjX3dpZHRoID0gcHJlY2lzaW9uIC0gd2lkdGhfcHJlY2lzaW9uIGluXG4gICAgKCogQW5kIG5ldyBwcm92aXNpb25hbCB3aWR0aCBpcyBbd2lkdGggLSB3aWR0aF9wcmVjaXNpb24uICopXG4gICAgbGV0IHdpZHRoID0gd2lkdGggLSBmcmFjX3dpZHRoIGluXG4gICAgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliXG4gIHwgJ2UnIHwgJ0UnIC0+XG4gICAgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliXG4gIHwgXyAtPiBiYWRfZmxvYXQgKClcblxuXG5sZXQgc2Nhbl9jYW1sX2Zsb2F0IHdpZHRoIHByZWNpc2lvbiBpYiA9XG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICB8ICcwJyBhcyBjIC0+IChcbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgfCAneCcgfCAnWCcgYXMgYyAtPiAoXG4gICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gICAgICBsZXQgd2lkdGggPSBzY2FuX2hleGFkZWNpbWFsX2ludCB3aWR0aCBpYiBpblxuICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgICAgIGxldCB3aWR0aCA9IG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgIHwgJy4nIGFzIGMgLT4gKFxuICAgICAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICAgICAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICAgICAgfCAncCcgfCAnUCcgLT4gd2lkdGhcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBsZXQgcHJlY2lzaW9uID0gSW50Lm1pbiB3aWR0aCBwcmVjaXNpb24gaW5cbiAgICAgICAgICAgICAgd2lkdGggLSAocHJlY2lzaW9uIC0gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgcHJlY2lzaW9uIGliKVxuICAgICAgICApXG4gICAgICAgIHwgJ3AnIHwgJ1AnIC0+IHdpZHRoXG4gICAgICAgIHwgXyAtPiBiYWRfZmxvYXQgKCkgaW5cbiAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgIHwgJ3AnIHwgJ1AnIGFzIGMgLT5cbiAgICAgICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICAgICAgICBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG4gICAgICAgIHwgXyAtPiB3aWR0aFxuICAgIClcbiAgICB8IF8gLT5cbiAgICAgIHNjYW5fY2FtbF9mbG9hdF9yZXN0IHdpZHRoIHByZWNpc2lvbiBpYlxuICApXG4gIHwgJzEnIC4uICc5JyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgICBzY2FuX2NhbWxfZmxvYXRfcmVzdCB3aWR0aCBwcmVjaXNpb24gaWJcbigqIFNwZWNpYWwgY2FzZSBvZiBuYW4gYW5kIGluZmluaXR5OlxuICB8ICdpJyAtPlxuICB8ICduJyAtPlxuKilcbiAgfCBfIC0+IGJhZF9mbG9hdCAoKVxuXG5cbigqIFNjYW4gYSByZWd1bGFyIHN0cmluZzpcbiAgIHN0b3BzIHdoZW4gZW5jb3VudGVyaW5nIGEgc3BhY2UsIGlmIG5vIHNjYW5uaW5nIGluZGljYXRpb24gaGFzIGJlZW4gZ2l2ZW47XG4gICBvdGhlcndpc2UsIHN0b3BzIHdoZW4gZW5jb3VudGVyaW5nIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBzY2FubmluZ1xuICAgaW5kaWNhdGlvbiBbc3RwXS5cbiAgIEl0IGFsc28gc3RvcHMgYXQgZW5kIG9mIGZpbGUgb3Igd2hlbiB0aGUgbWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyBoYXNcbiAgIGJlZW4gcmVhZC4gKilcbmxldCBzY2FuX3N0cmluZyBzdHAgd2lkdGggaWIgPVxuICBsZXQgcmVjIGxvb3Agd2lkdGggPVxuICAgIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgIG1hdGNoIHN0cCB3aXRoXG4gICAgICB8IFNvbWUgYycgd2hlbiBjID0gYycgLT4gU2Nhbm5pbmcuc2tpcF9jaGFyIHdpZHRoIGliXG4gICAgICB8IFNvbWUgXyAtPiBsb29wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgIHwgJyAnIHwgJ1xcdCcgfCAnXFxuJyB8ICdcXHInIC0+IHdpZHRoXG4gICAgICAgIHwgXyAtPiBsb29wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGluXG4gIGxvb3Agd2lkdGhcblxuXG4oKiBTY2FuIGEgY2hhcjogcGVlayBzdHJpY3RseSBvbmUgY2hhcmFjdGVyIGluIHRoZSBpbnB1dCwgd2hhdHNvZXZlci4gKilcbmxldCBzY2FuX2NoYXIgd2lkdGggaWIgPVxuICAoKiBUaGUgY2FzZSB3aWR0aCA9IDAgY291bGQgbm90IGhhcHBlbiBoZXJlLCBzaW5jZSBpdCBpcyB0ZXN0ZWQgYmVmb3JlXG4gICAgIGNhbGxpbmcgc2Nhbl9jaGFyLCBpbiB0aGUgbWFpbiBzY2FubmluZyBmdW5jdGlvbi5cbiAgICBpZiB3aWR0aCA9IDAgdGhlbiBiYWRfdG9rZW5fbGVuZ3RoIFwiYSBjaGFyYWN0ZXJcIiBlbHNlICopXG4gIFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgKFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliKVxuXG5cbmxldCBjaGFyX2Zvcl9iYWNrc2xhc2ggPSBmdW5jdGlvblxuICB8ICduJyAtPiAnXFwwMTAnXG4gIHwgJ3InIC0+ICdcXDAxMydcbiAgfCAnYicgLT4gJ1xcMDA4J1xuICB8ICd0JyAtPiAnXFwwMDknXG4gIHwgYyAtPiBjXG5cblxuKCogVGhlIGludGVnZXIgdmFsdWUgY29ycmVzcG9uZGluZyB0byB0aGUgZmFjaWFsIHZhbHVlIG9mIGEgdmFsaWRcbiAgIGRlY2ltYWwgZGlnaXQgY2hhcmFjdGVyLiAqKVxubGV0IGRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjID0gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICcwJ1xuXG5sZXQgY2hhcl9mb3JfZGVjaW1hbF9jb2RlIGMwIGMxIGMyID1cbiAgbGV0IGMgPVxuICAgIDEwMCAqIGRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMCArXG4gICAgIDEwICogZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMxICtcbiAgICAgICAgICBkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYzIgaW5cbiAgaWYgYyA8IDAgfHwgYyA+IDI1NSB0aGVuXG4gICAgYmFkX2lucHV0XG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgIFwiYmFkIGNoYXJhY3RlciBkZWNpbWFsIGVuY29kaW5nIFxcXFwlYyVjJWNcIiBjMCBjMSBjMikgZWxzZVxuICBjaGFyX29mX2ludCBjXG5cblxuKCogVGhlIGludGVnZXIgdmFsdWUgY29ycmVzcG9uZGluZyB0byB0aGUgZmFjaWFsIHZhbHVlIG9mIGEgdmFsaWRcbiAgIGhleGFkZWNpbWFsIGRpZ2l0IGNoYXJhY3Rlci4gKilcbmxldCBoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMgPVxuICBsZXQgZCA9IGludF9vZl9jaGFyIGMgaW5cbiAgKCogQ291bGQgYWxzbyBiZTpcbiAgICBpZiBkIDw9IGludF9vZl9jaGFyICc5JyB0aGVuIGQgLSBpbnRfb2ZfY2hhciAnMCcgZWxzZVxuICAgIGlmIGQgPD0gaW50X29mX2NoYXIgJ0YnIHRoZW4gMTAgKyBkIC0gaW50X29mX2NoYXIgJ0EnIGVsc2VcbiAgICBpZiBkIDw9IGludF9vZl9jaGFyICdmJyB0aGVuIDEwICsgZCAtIGludF9vZl9jaGFyICdhJyBlbHNlIGFzc2VydCBmYWxzZVxuICAqKVxuICBpZiBkID49IGludF9vZl9jaGFyICdhJyB0aGVuXG4gICAgZCAtIDg3ICgqIDEwICsgaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdhJyAqKSBlbHNlXG4gIGlmIGQgPj0gaW50X29mX2NoYXIgJ0EnIHRoZW5cbiAgICBkIC0gNTUgICgqIDEwICsgaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdBJyAqKSBlbHNlXG4gICAgZCAtIGludF9vZl9jaGFyICcwJ1xuXG5cbmxldCBjaGFyX2Zvcl9oZXhhZGVjaW1hbF9jb2RlIGMxIGMyID1cbiAgbGV0IGMgPVxuICAgIDE2ICogaGV4YWRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMSArXG4gICAgICAgICBoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMyIGluXG4gIGlmIGMgPCAwIHx8IGMgPiAyNTUgdGhlblxuICAgIGJhZF9pbnB1dFxuICAgICAgKFByaW50Zi5zcHJpbnRmIFwiYmFkIGNoYXJhY3RlciBoZXhhZGVjaW1hbCBlbmNvZGluZyBcXFxcJWMlY1wiIGMxIGMyKSBlbHNlXG4gIGNoYXJfb2ZfaW50IGNcblxuXG4oKiBDYWxsZWQgaW4gcGFydGljdWxhciB3aGVuIGVuY291bnRlcmluZyAnXFxcXCcgYXMgc3RhcnRlciBvZiBhIGNoYXIuXG4gICBTdG9wcyBiZWZvcmUgdGhlIGNvcnJlc3BvbmRpbmcgJ1xcJycuICopXG5sZXQgY2hlY2tfbmV4dF9jaGFyIG1lc3NhZ2Ugd2lkdGggaWIgPVxuICBpZiB3aWR0aCA9IDAgdGhlbiBiYWRfdG9rZW5fbGVuZ3RoIG1lc3NhZ2UgZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiBiYWRfZW5kX29mX2lucHV0IG1lc3NhZ2UgZWxzZVxuICBjXG5cblxubGV0IGNoZWNrX25leHRfY2hhcl9mb3JfY2hhciA9IGNoZWNrX25leHRfY2hhciBcImEgQ2hhclwiXG5sZXQgY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmcgPSBjaGVja19uZXh0X2NoYXIgXCJhIFN0cmluZ1wiXG5cbmxldCBzY2FuX2JhY2tzbGFzaF9jaGFyIHdpZHRoIGliID1cbiAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIHdpZHRoIGliIHdpdGhcbiAgfCAnXFxcXCcgfCAnXFwnJyB8ICdcXFwiJyB8ICduJyB8ICd0JyB8ICdiJyB8ICdyJyBhcyBjIC0+XG4gICAgU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiAoY2hhcl9mb3JfYmFja3NsYXNoIGMpXG4gIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgbGV0IGdldF9kaWdpdCAoKSA9XG4gICAgICBsZXQgYyA9IFNjYW5uaW5nLm5leHRfY2hhciBpYiBpblxuICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgYXMgYyAtPiBjXG4gICAgICB8IGMgLT4gYmFkX2lucHV0X2VzY2FwZSBjIGluXG4gICAgbGV0IGMwID0gYyBpblxuICAgIGxldCBjMSA9IGdldF9kaWdpdCAoKSBpblxuICAgIGxldCBjMiA9IGdldF9kaWdpdCAoKSBpblxuICAgIFNjYW5uaW5nLnN0b3JlX2NoYXIgKHdpZHRoIC0gMikgaWIgKGNoYXJfZm9yX2RlY2ltYWxfY29kZSBjMCBjMSBjMilcbiAgfCAneCcgLT5cbiAgICBsZXQgZ2V0X2RpZ2l0ICgpID1cbiAgICAgIGxldCBjID0gU2Nhbm5pbmcubmV4dF9jaGFyIGliIGluXG4gICAgICBtYXRjaCBjIHdpdGhcbiAgICAgIHwgJzAnIC4uICc5JyB8ICdBJyAuLiAnRicgfCAnYScgLi4gJ2YnIGFzIGMgLT4gY1xuICAgICAgfCBjIC0+IGJhZF9pbnB1dF9lc2NhcGUgYyBpblxuICAgIGxldCBjMSA9IGdldF9kaWdpdCAoKSBpblxuICAgIGxldCBjMiA9IGdldF9kaWdpdCAoKSBpblxuICAgIFNjYW5uaW5nLnN0b3JlX2NoYXIgKHdpZHRoIC0gMikgaWIgKGNoYXJfZm9yX2hleGFkZWNpbWFsX2NvZGUgYzEgYzIpXG4gIHwgYyAtPlxuICAgIGJhZF9pbnB1dF9lc2NhcGUgY1xuXG5cbigqIFNjYW4gYSBjaGFyYWN0ZXIgKGFuIE9DYW1sIHRva2VuKS4gKilcbmxldCBzY2FuX2NhbWxfY2hhciB3aWR0aCBpYiA9XG5cbiAgbGV0IHJlYyBmaW5kX3N0YXJ0IHdpZHRoID1cbiAgICBtYXRjaCBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiB3aXRoXG4gICAgfCAnXFwnJyAtPiBmaW5kX2NoYXIgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgYyAtPiBjaGFyYWN0ZXJfbWlzbWF0Y2ggJ1xcJycgY1xuXG4gIGFuZCBmaW5kX2NoYXIgd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3JfY2hhciB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFxcXCcgLT5cbiAgICAgIGZpbmRfc3RvcCAoc2Nhbl9iYWNrc2xhc2hfY2hhciAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpIGliKVxuICAgIHwgYyAtPlxuICAgICAgZmluZF9zdG9wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpXG5cbiAgYW5kIGZpbmRfc3RvcCB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIHdpZHRoIGliIHdpdGhcbiAgICB8ICdcXCcnIC0+IFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliXG4gICAgfCBjIC0+IGNoYXJhY3Rlcl9taXNtYXRjaCAnXFwnJyBjIGluXG5cbiAgZmluZF9zdGFydCB3aWR0aFxuXG5cbigqIFNjYW4gYSBkZWxpbWl0ZWQgc3RyaW5nIChhbiBPQ2FtbCB0b2tlbikuICopXG5sZXQgc2Nhbl9jYW1sX3N0cmluZyB3aWR0aCBpYiA9XG5cbiAgbGV0IHJlYyBmaW5kX3N0YXJ0IHdpZHRoID1cbiAgICBtYXRjaCBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiB3aXRoXG4gICAgfCAnXFxcIicgLT4gZmluZF9zdG9wIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IGMgLT4gY2hhcmFjdGVyX21pc21hdGNoICdcXFwiJyBjXG5cbiAgYW5kIGZpbmRfc3RvcCB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmcgd2lkdGggaWIgd2l0aFxuICAgIHwgJ1xcXCInIC0+IFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliXG4gICAgfCAnXFxcXCcgLT4gc2Nhbl9iYWNrc2xhc2ggKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgYyAtPiBmaW5kX3N0b3AgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYylcblxuICBhbmQgc2Nhbl9iYWNrc2xhc2ggd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nIHdpZHRoIGliIHdpdGhcbiAgICB8ICdcXHInIC0+IHNraXBfbmV3bGluZSAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCAnXFxuJyAtPiBza2lwX3NwYWNlcyAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBfIC0+IGZpbmRfc3RvcCAoc2Nhbl9iYWNrc2xhc2hfY2hhciB3aWR0aCBpYilcblxuICBhbmQgc2tpcF9uZXdsaW5lIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX3N0cmluZyB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFxuJyAtPiBza2lwX3NwYWNlcyAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBfIC0+IGZpbmRfc3RvcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiAnXFxyJylcblxuICBhbmQgc2tpcF9zcGFjZXMgd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nIHdpZHRoIGliIHdpdGhcbiAgICB8ICcgJyAtPiBza2lwX3NwYWNlcyAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBfIC0+IGZpbmRfc3RvcCB3aWR0aCBpblxuXG4gIGZpbmRfc3RhcnQgd2lkdGhcblxuXG4oKiBTY2FuIGEgYm9vbGVhbiAoYW4gT0NhbWwgdG9rZW4pLiAqKVxubGV0IHNjYW5fYm9vbCBpYiA9XG4gIGxldCBjID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgbGV0IG0gPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJ3QnIC0+IDRcbiAgICB8ICdmJyAtPiA1XG4gICAgfCBjIC0+XG4gICAgICBiYWRfaW5wdXRcbiAgICAgICAgKFByaW50Zi5zcHJpbnRmIFwidGhlIGNoYXJhY3RlciAlQyBjYW5ub3Qgc3RhcnQgYSBib29sZWFuXCIgYykgaW5cbiAgc2Nhbl9zdHJpbmcgTm9uZSBtIGliXG5cblxuKCogU2NhbiBhIHN0cmluZyBjb250YWluaW5nIGVsZW1lbnRzIGluIGNoYXJfc2V0IGFuZCB0ZXJtaW5hdGVkIGJ5IHNjYW5faW5kaWNcbiAgIGlmIHByb3ZpZGVkLiAqKVxubGV0IHNjYW5fY2hhcnNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgc2Nhbl9pbmRpYyB3aWR0aCBpYiA9XG4gIGxldCByZWMgc2Nhbl9jaGFycyBpIHN0cCA9XG4gICAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBpID4gMCAmJiBub3QgKFNjYW5uaW5nLmVvZiBpYikgJiZcbiAgICAgICBpc19pbl9jaGFyX3NldCBjaGFyX3NldCBjICYmXG4gICAgICAgaW50X29mX2NoYXIgYyA8PiBzdHAgdGhlblxuICAgICAgbGV0IF8gPSBTY2FubmluZy5zdG9yZV9jaGFyIG1heF9pbnQgaWIgYyBpblxuICAgICAgc2Nhbl9jaGFycyAoaSAtIDEpIHN0cCBpblxuICBtYXRjaCBzY2FuX2luZGljIHdpdGhcbiAgfCBOb25lIC0+IHNjYW5fY2hhcnMgd2lkdGggKC0xKTtcbiAgfCBTb21lIGMgLT5cbiAgICBzY2FuX2NoYXJzIHdpZHRoIChpbnRfb2ZfY2hhciBjKTtcbiAgICBpZiBub3QgKFNjYW5uaW5nLmVvZiBpYikgdGhlblxuICAgICAgbGV0IGNpID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgICBpZiBjID0gY2lcbiAgICAgIHRoZW4gU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWJcbiAgICAgIGVsc2UgY2hhcmFjdGVyX21pc21hdGNoIGMgY2lcblxuXG4oKiBUaGUgZ2xvYmFsIGVycm9yIHJlcG9ydCBmdW5jdGlvbiBmb3IgW1NjYW5mXS4gKilcbmxldCBzY2FuZl9iYWRfaW5wdXQgaWIgPSBmdW5jdGlvblxuICB8IFNjYW5fZmFpbHVyZSBzIHwgRmFpbHVyZSBzIC0+XG4gICAgbGV0IGkgPSBTY2FubmluZy5jaGFyX2NvdW50IGliIGluXG4gICAgYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcInNjYW5mOiBiYWQgaW5wdXQgYXQgY2hhciBudW1iZXIgJWk6ICVzXCIgaSBzKVxuICB8IHggLT4gcmFpc2UgeFxuXG5cbigqIEdldCB0aGUgY29udGVudCBvZiBhIGNvdW50ZXIgZnJvbSBhbiBpbnB1dCBidWZmZXIuICopXG5sZXQgZ2V0X2NvdW50ZXIgaWIgY291bnRlciA9XG4gIG1hdGNoIGNvdW50ZXIgd2l0aFxuICB8IExpbmVfY291bnRlciAtPiBTY2FubmluZy5saW5lX2NvdW50IGliXG4gIHwgQ2hhcl9jb3VudGVyIC0+IFNjYW5uaW5nLmNoYXJfY291bnQgaWJcbiAgfCBUb2tlbl9jb3VudGVyIC0+IFNjYW5uaW5nLnRva2VuX2NvdW50IGliXG5cblxuKCogQ29tcHV0ZSB0aGUgd2lkdGggb2YgYSBwYWRkaW5nIG9wdGlvbiAoc2VlIFwiJTQye1wiIGFuZCBcIiUxMjMoXCIpLiAqKVxubGV0IHdpZHRoX29mX3BhZF9vcHQgcGFkX29wdCA9IG1hdGNoIHBhZF9vcHQgd2l0aFxuICB8IE5vbmUgLT4gbWF4X2ludFxuICB8IFNvbWUgd2lkdGggLT4gd2lkdGhcblxuXG5sZXQgc3RvcHBlcl9vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmcgPVxuICBpZiBmbXRpbmcgPSBFc2NhcGVkX3BlcmNlbnQgdGhlbiAnJScsIFwiXCIgZWxzZVxuICAgIGxldCBzdHIgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nIGluXG4gICAgbGV0IHN0cCA9IHN0ci5bMV0gaW5cbiAgICBsZXQgc3ViX3N0ciA9IFN0cmluZy5zdWIgc3RyIDIgKFN0cmluZy5sZW5ndGggc3RyIC0gMikgaW5cbiAgICBzdHAsIHN1Yl9zdHJcblxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogUmVhZGVyIG1hbmFnZW1lbnQgKilcblxuKCogQSBjYWxsIHRvIHRha2VfZm9ybWF0X3JlYWRlcnMgb24gYSBmb3JtYXQgaXMgZXZhbHVhdGVkIGludG8gZnVuY3Rpb25zXG4gICB0YWtpbmcgcmVhZGVycyBhcyBhcmd1bWVudHMgYW5kIGFnZ3JlZ2F0ZSB0aGVtIGludG8gYW4gaGV0ZXJvZ2VuZW91cyBsaXN0ICopXG4oKiBXaGVuIGFsbCByZWFkZXJzIGFyZSB0YWtlbiwgZmluYWxseSBwYXNzIHRoZSBsaXN0IG9mIHRoZSByZWFkZXJzIHRvIHRoZVxuICAgY29udGludWF0aW9uIGsuICopXG5sZXQgcmVjIHRha2VfZm9ybWF0X3JlYWRlcnMgOiB0eXBlIGEgYyBkIGUgZiAuXG4gICAgKChkLCBlKSBoZXRlcl9saXN0IC0+IGUpIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICBkID1cbmZ1biBrIGZtdCAtPiBtYXRjaCBmbXQgd2l0aFxuICB8IFJlYWRlciBmbXRfcmVzdCAtPlxuICAgIGZ1biByZWFkZXIgLT5cbiAgICAgIGxldCBuZXdfayByZWFkZXJzX3Jlc3QgPSBrIChDb25zIChyZWFkZXIsIHJlYWRlcnNfcmVzdCkpIGluXG4gICAgICB0YWtlX2Zvcm1hdF9yZWFkZXJzIG5ld19rIGZtdF9yZXN0XG4gIHwgQ2hhciByZXN0ICAgICAgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBDYW1sX2NoYXIgcmVzdCAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IFN0cmluZyAoXywgcmVzdCkgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQ2FtbF9zdHJpbmcgKF8sIHJlc3QpICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBJbnQgKF8sIF8sIF8sIHJlc3QpICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEludDMyIChfLCBfLCBfLCByZXN0KSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgTmF0aXZlaW50IChfLCBfLCBfLCByZXN0KSAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBJbnQ2NCAoXywgXywgXywgcmVzdCkgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEZsb2F0IChfLCBfLCBfLCByZXN0KSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQm9vbCAoXywgcmVzdCkgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBBbHBoYSByZXN0ICAgICAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IFRoZXRhIHJlc3QgICAgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgRmx1c2ggcmVzdCAgICAgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBTdHJpbmdfbGl0ZXJhbCAoXywgcmVzdCkgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IENoYXJfbGl0ZXJhbCAoXywgcmVzdCkgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQ3VzdG9tIChfLCBfLCByZXN0KSAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcblxuICB8IFNjYW5fY2hhcl9zZXQgKF8sIF8sIHJlc3QpICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgU2Nhbl9nZXRfY291bnRlciAoXywgcmVzdCkgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBTY2FuX25leHRfY2hhciByZXN0ICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuXG4gIHwgRm9ybWF0dGluZ19saXQgKF8sIHJlc3QpICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10LCBfKSksIHJlc3QpIC0+XG4gICAgICB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgKGNvbmNhdF9mbXQgZm10IHJlc3QpXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCwgXykpLCByZXN0KSAtPlxuICAgICAgdGFrZV9mb3JtYXRfcmVhZGVycyBrIChjb25jYXRfZm10IGZtdCByZXN0KVxuXG4gIHwgRm9ybWF0X2FyZyAoXywgXywgcmVzdCkgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBGb3JtYXRfc3Vic3QgKF8sIGZtdHR5LCByZXN0KSAgICAtPlxuICAgICB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgKGVyYXNlX3JlbCAoc3ltbSBmbXR0eSkpIHJlc3RcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpICAgICAgICAtPiB0YWtlX2lnbm9yZWRfZm9ybWF0X3JlYWRlcnMgayBpZ24gcmVzdFxuXG4gIHwgRW5kX29mX2Zvcm1hdCAgICAgICAgICAgICAgICAgICAgLT4gayBOaWxcblxuKCogVGFrZSByZWFkZXJzIGFzc29jaWF0ZWQgdG8gYW4gZm10dHkgY29taW5nIGZyb20gYSBGb3JtYXRfc3Vic3QgXCIlKC4uLiUpXCIuICopXG5hbmQgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyA6IHR5cGUgeCB5IGEgYyBkIGUgZiAuXG4gICAgKChkLCBlKSBoZXRlcl9saXN0IC0+IGUpIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCB4LCB5KSBmbXR0eSAtPlxuICAgICAgKHksIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIHgsIGUsIGYpIGZtdCAtPiBkID1cbmZ1biBrIGZtdHR5IGZtdCAtPiBtYXRjaCBmbXR0eSB3aXRoXG4gIHwgUmVhZGVyX3R5IGZtdF9yZXN0IC0+XG4gICAgZnVuIHJlYWRlciAtPlxuICAgICAgbGV0IG5ld19rIHJlYWRlcnNfcmVzdCA9IGsgKENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSkgaW5cbiAgICAgIHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgbmV3X2sgZm10X3Jlc3QgZm10XG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgZm10X3Jlc3QgLT5cbiAgICBmdW4gcmVhZGVyIC0+XG4gICAgICBsZXQgbmV3X2sgcmVhZGVyc19yZXN0ID0gayAoQ29ucyAocmVhZGVyLCByZWFkZXJzX3Jlc3QpKSBpblxuICAgICAgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBuZXdfayBmbXRfcmVzdCBmbXRcbiAgfCBDaGFyX3R5IHJlc3QgICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgU3RyaW5nX3R5IHJlc3QgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEludF90eSByZXN0ICAgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBJbnQzMl90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEludDY0X3R5IHJlc3QgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBGbG9hdF90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgQm9vbF90eSByZXN0ICAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEFscGhhX3R5IHJlc3QgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBUaGV0YV90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgQW55X3R5IHJlc3QgICAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEZvcm1hdF9hcmdfdHkgKF8sIHJlc3QpICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBFbmRfb2ZfZm10dHkgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgbGV0IHR5ID0gdHJhbnMgKHN5bW0gdHkxKSB0eTIgaW5cbiAgICB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgKGNvbmNhdF9mbXR0eSB0eSByZXN0KSBmbXRcblxuKCogVGFrZSByZWFkZXJzIGFzc29jaWF0ZWQgdG8gYW4gaWdub3JlZCBwYXJhbWV0ZXIuICopXG5hbmQgdGFrZV9pZ25vcmVkX2Zvcm1hdF9yZWFkZXJzIDogdHlwZSB4IHkgYSBjIGQgZSBmIC5cbiAgICAoKGQsIGUpIGhldGVyX2xpc3QgLT4gZSkgLT4gKGEsIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIGQsIHgsIHkpIGlnbm9yZWQgLT5cbiAgICAgICh5LCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCB4LCBlLCBmKSBmbXQgLT4gZCA9XG5mdW4gayBpZ24gZm10IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9yZWFkZXIgLT5cbiAgICBmdW4gcmVhZGVyIC0+XG4gICAgICBsZXQgbmV3X2sgcmVhZGVyc19yZXN0ID0gayAoQ29ucyAocmVhZGVyLCByZWFkZXJzX3Jlc3QpKSBpblxuICAgICAgdGFrZV9mb3JtYXRfcmVhZGVycyBuZXdfayBmbXRcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2ludCAoXywgXykgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2ludDMyIChfLCBfKSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoXywgXykgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2ludDY0IChfLCBfKSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Zsb2F0IChfLCBfKSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgXyAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAoXywgZm10dHkpIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayBmbXR0eSBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgXyAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogR2VuZXJpYyBzY2FubmluZyAqKVxuXG4oKiBNYWtlIGEgZ2VuZXJpYyBzY2FubmluZyBmdW5jdGlvbi4gKilcbigqIFNjYW4gYSBzdHJlYW0gYWNjb3JkaW5nIHRvIGEgZm9ybWF0IGFuZCByZWFkZXJzIG9idGFpbmVkIGJ5XG4gICB0YWtlX2Zvcm1hdF9yZWFkZXJzLCBhbmQgYWdncmVnYXRlIHNjYW5uZWQgdmFsdWVzIGludG8gYW5cbiAgIGhldGVyb2dlbmVvdXMgbGlzdC4gKilcbigqIFJldHVybiB0aGUgaGV0ZXJvZ2VuZW91cyBsaXN0IG9mIHNjYW5uZWQgdmFsdWVzLiAqKVxubGV0IHJlYyBtYWtlX3NjYW5mIDogdHlwZSBhIGMgZCBlIGYuXG4gICAgU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgICAoZCwgZSkgaGV0ZXJfbGlzdCAtPiAoYSwgZikgaGV0ZXJfbGlzdCA9XG5mdW4gaWIgZm10IHJlYWRlcnMgLT4gbWF0Y2ggZm10IHdpdGhcbiAgfCBDaGFyIHJlc3QgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2hhciAwIGliIGluXG4gICAgbGV0IGMgPSB0b2tlbl9jaGFyIGliIGluXG4gICAgQ29ucyAoYywgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG4gIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2FtbF9jaGFyIDAgaWIgaW5cbiAgICBsZXQgYyA9IHRva2VuX2NoYXIgaWIgaW5cbiAgICBDb25zIChjLCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcblxuICB8IFN0cmluZyAocGFkLCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkpIC0+XG4gICAgbGV0IHN0cCwgc3RyID0gc3RvcHBlcl9vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fc3RyaW5nIChTb21lIHN0cCkgd2lkdGggaWIgaW5cbiAgICBsZXQgc3RyX3Jlc3QgPSBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHN0cl9yZXN0IHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuIHRva2VuX3N0cmluZ1xuICB8IFN0cmluZyAocGFkLCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSkgLT5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9zdHJpbmcgKFNvbWUgJ3snKSB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIChjb25jYXRfZm10IGZtdCcgcmVzdCkgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW5cbiAgICAgICAgICAgICAgICAgICB0b2tlbl9zdHJpbmdcbiAgfCBTdHJpbmcgKHBhZCwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkpIC0+XG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fc3RyaW5nIChTb21lICdbJykgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuXG4gICAgICAgICAgICAgICAgICAgdG9rZW5fc3RyaW5nXG4gIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fc3RyaW5nIE5vbmUgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuIHRva2VuX3N0cmluZ1xuXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9jYW1sX3N0cmluZyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW4gdG9rZW5fc3RyaW5nXG4gIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCBjID0gaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpIGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5faW50X2NvbnZlcnNpb24gYyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuICh0b2tlbl9pbnQgYylcbiAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgYyA9IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyIChjaGFyX29mX2ljb252IGljb252KSBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX2ludF9jb252ZXJzaW9uIGMgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2NhbiAodG9rZW5faW50MzIgYylcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IGMgPSBpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciAoY2hhcl9vZl9pY29udiBpY29udikgaW5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9pbnRfY29udmVyc2lvbiBjIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW4gKHRva2VuX25hdGl2ZWludCBjKVxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCBjID0gaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpIGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5faW50X2NvbnZlcnNpb24gYyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuICh0b2tlbl9pbnQ2NCBjKVxuICB8IEZsb2F0ICgoXywgKEZsb2F0X0YgfCBGbG9hdF9DRikpLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW5fY2FtbF9mbG9hdCB0b2tlbl9mbG9hdFxuICB8IEZsb2F0ICgoXywgKEZsb2F0X2YgfCBGbG9hdF9lIHwgRmxvYXRfRSB8IEZsb2F0X2cgfCBGbG9hdF9HKSksXG4gICAgICAgICAgIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2Nhbl9mbG9hdCB0b2tlbl9mbG9hdFxuICB8IEZsb2F0ICgoXywgKEZsb2F0X2ggfCBGbG9hdF9IKSksIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2Nhbl9oZXhfZmxvYXQgdG9rZW5fZmxvYXRcbiAgfCBCb29sIChwYWQsIHJlc3QpIC0+XG4gICAgbGV0IHNjYW4gXyBfIGliID0gc2Nhbl9ib29sIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhbiB0b2tlbl9ib29sXG4gIHwgQWxwaGEgXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlYVxcXCJcIlxuICB8IFRoZXRhIF8gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJXRcXFwiXCJcbiAgfCBDdXN0b20gXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlP1xcXCIgKGN1c3RvbSBjb252ZXJ0ZXIpXCJcbiAgfCBSZWFkZXIgZm10X3Jlc3QgLT5cbiAgICBiZWdpbiBtYXRjaCByZWFkZXJzIHdpdGhcbiAgICB8IENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSAtPlxuICAgICAgICBsZXQgeCA9IHJlYWRlciBpYiBpblxuICAgICAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdF9yZXN0IHJlYWRlcnNfcmVzdClcbiAgICB8IE5pbCAtPlxuICAgICAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBtaXNzaW5nIHJlYWRlclwiXG4gICAgZW5kXG4gIHwgRmx1c2ggcmVzdCAtPlxuICAgIGlmIFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzXG4gICAgZWxzZSBiYWRfaW5wdXQgXCJlbmQgb2YgaW5wdXQgbm90IGZvdW5kXCJcblxuICB8IFN0cmluZ19saXRlcmFsIChzdHIsIHJlc3QpIC0+XG4gICAgU3RyaW5nLml0ZXIgKGNoZWNrX2NoYXIgaWIpIHN0cjtcbiAgICBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVyc1xuICB8IENoYXJfbGl0ZXJhbCAoY2hyLCByZXN0KSAtPlxuICAgIGNoZWNrX2NoYXIgaWIgY2hyO1xuICAgIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzXG5cbiAgfCBGb3JtYXRfYXJnIChwYWRfb3B0LCBmbXR0eSwgcmVzdCkgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2FtbF9zdHJpbmcgKHdpZHRoX29mX3BhZF9vcHQgcGFkX29wdCkgaWIgaW5cbiAgICBsZXQgcyA9IHRva2VuX3N0cmluZyBpYiBpblxuICAgIGxldCBmbXQgPVxuICAgICAgdHJ5IGZvcm1hdF9vZl9zdHJpbmdfZm10dHkgcyBmbXR0eVxuICAgICAgd2l0aCBGYWlsdXJlIG1zZyAtPiBiYWRfaW5wdXQgbXNnXG4gICAgaW5cbiAgICBDb25zIChmbXQsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuICB8IEZvcm1hdF9zdWJzdCAocGFkX29wdCwgZm10dHksIHJlc3QpIC0+XG4gICAgbGV0IF8gPSBzY2FuX2NhbWxfc3RyaW5nICh3aWR0aF9vZl9wYWRfb3B0IHBhZF9vcHQpIGliIGluXG4gICAgbGV0IHMgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBsZXQgZm10LCBmbXQnID1cbiAgICAgIHRyeVxuICAgICAgICBsZXQgRm10X0VCQiBmbXQgPSBmbXRfZWJiX29mX3N0cmluZyBzIGluXG4gICAgICAgIGxldCBGbXRfRUJCIGZtdCcgPSBmbXRfZWJiX29mX3N0cmluZyBzIGluXG4gICAgICAgICgqIFRPRE86IGZpbmQgYSB3YXkgdG8gYXZvaWQgcmVwYXJzaW5nIHR3aWNlICopXG5cbiAgICAgICAgKCogVE9ETzogdGhlc2UgdHlwZS1jaGVja3MgYmVsb3cgKmNhbiogZmFpbCBiZWNhdXNlIG9mIHR5cGVcbiAgICAgICAgICAgYW1iaWd1aXR5IGluIHByZXNlbmNlIG9mIGlnbm9yZWQtcmVhZGVyczogXCIlX3IlZFwiIGFuZCBcIiVkJV9yXCJcbiAgICAgICAgICAgYXJlIHR5cGVkIGluIHRoZSBzYW1lIHdheS5cblxuICAgICAgICAgICAjIFNjYW5mLnNzY2FuZiBcIlxcXCIlX3IlZFxcXCIzXCIgXCIlKCVkJV9yJSlcIiBpZ25vcmVcbiAgICAgICAgICAgICAoZnVuIGZtdCBuIC0+IHN0cmluZ19vZl9mb3JtYXQgZm10LCBuKVxuICAgICAgICAgICBFeGNlcHRpb246IENhbWxpbnRlcm5hbEZvcm1hdC5UeXBlX21pc21hdGNoLlxuXG4gICAgICAgICAgIFdlIHNob3VsZCBwcm9wZXJseSBjYXRjaCB0aGlzIGV4Y2VwdGlvbi5cbiAgICAgICAgKilcbiAgICAgICAgdHlwZV9mb3JtYXQgZm10IChlcmFzZV9yZWwgZm10dHkpLFxuICAgICAgICB0eXBlX2Zvcm1hdCBmbXQnIChlcmFzZV9yZWwgKHN5bW0gZm10dHkpKVxuICAgICAgd2l0aCBGYWlsdXJlIG1zZyAtPiBiYWRfaW5wdXQgbXNnXG4gICAgaW5cbiAgICBDb25zIChGb3JtYXQgKGZtdCwgcyksXG4gICAgICAgICAgbWFrZV9zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnMpXG5cbiAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkpIC0+XG4gICAgbGV0IHN0cCwgc3RyID0gc3RvcHBlcl9vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgbGV0IHdpZHRoID0gd2lkdGhfb2ZfcGFkX29wdCB3aWR0aF9vcHQgaW5cbiAgICBzY2FuX2NoYXJzX2luX2NoYXJfc2V0IGNoYXJfc2V0IChTb21lIHN0cCkgd2lkdGggaWI7XG4gICAgbGV0IHMgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBsZXQgc3RyX3Jlc3QgPSBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSBpblxuICAgIENvbnMgKHMsIG1ha2Vfc2NhbmYgaWIgc3RyX3Jlc3QgcmVhZGVycylcbiAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCByZXN0KSAtPlxuICAgIGxldCB3aWR0aCA9IHdpZHRoX29mX3BhZF9vcHQgd2lkdGhfb3B0IGluXG4gICAgc2Nhbl9jaGFyc19pbl9jaGFyX3NldCBjaGFyX3NldCBOb25lIHdpZHRoIGliO1xuICAgIGxldCBzID0gdG9rZW5fc3RyaW5nIGliIGluXG4gICAgQ29ucyAocywgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG4gIHwgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgcmVzdCkgLT5cbiAgICBsZXQgY291bnQgPSBnZXRfY291bnRlciBpYiBjb3VudGVyIGluXG4gICAgQ29ucyAoY291bnQsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgLT5cbiAgICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gICAgQ29ucyAoYywgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG5cbiAgfCBGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIHJlc3QpIC0+XG4gICAgU3RyaW5nLml0ZXIgKGNoZWNrX2NoYXIgaWIpIChzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm9ybWF0dGluZ19saXQpO1xuICAgIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBjaGVja19jaGFyIGliICdAJzsgY2hlY2tfY2hhciBpYiAneyc7XG4gICAgbWFrZV9zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnNcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgIGNoZWNrX2NoYXIgaWIgJ0AnOyBjaGVja19jaGFyIGliICdbJztcbiAgICBtYWtlX3NjYW5mIGliIChjb25jYXRfZm10IGZtdCcgcmVzdCkgcmVhZGVyc1xuXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgIGxldCBQYXJhbV9mb3JtYXRfRUJCIGZtdCcgPSBwYXJhbV9mb3JtYXRfb2ZfaWdub3JlZF9mb3JtYXQgaWduIHJlc3QgaW5cbiAgICBiZWdpbiBtYXRjaCBtYWtlX3NjYW5mIGliIGZtdCcgcmVhZGVycyB3aXRoXG4gICAgfCBDb25zIChfLCBhcmdfcmVzdCkgLT4gYXJnX3Jlc3RcbiAgICB8IE5pbCAtPiBhc3NlcnQgZmFsc2VcbiAgICBlbmRcblxuICB8IEVuZF9vZl9mb3JtYXQgLT5cbiAgICBOaWxcblxuKCogQ2FzZSBhbmFseXNpcyBvbiBwYWRkaW5nIGFuZCBwcmVjaXNpb24uICopXG4oKiBSZWplY3QgZm9ybWF0cyBjb250YWluaW5nIFwiJSpcIiBvciBcIiUuKlwiLiAqKVxuKCogUGFzcyBwYWRkaW5nIGFuZCBwcmVjaXNpb24gdG8gdGhlIGdlbmVyaWMgc2Nhbm5lciBgc2NhbicuICopXG5hbmQgcGFkX3ByZWNfc2NhbmYgOiB0eXBlIGEgYyBkIGUgZiB4IHkgeiB0IC5cbiAgICBTY2FubmluZy5pbl9jaGFubmVsIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAgIChkLCBlKSBoZXRlcl9saXN0IC0+ICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6IC0+IGEpIHByZWNpc2lvbiAtPlxuICAgICAgKGludCAtPiBpbnQgLT4gU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiB0KSAtPlxuICAgICAgKFNjYW5uaW5nLmluX2NoYW5uZWwgLT4geikgLT5cbiAgICAgICh4LCBmKSBoZXRlcl9saXN0ID1cbmZ1biBpYiBmbXQgcmVhZGVycyBwYWQgcHJlYyBzY2FuIHRva2VuIC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gIHwgTm9fcGFkZGluZywgTm9fcHJlY2lzaW9uIC0+XG4gICAgbGV0IF8gPSBzY2FuIG1heF9pbnQgbWF4X2ludCBpYiBpblxuICAgIGxldCB4ID0gdG9rZW4gaWIgaW5cbiAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzKVxuICB8IE5vX3BhZGRpbmcsIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGxldCBfID0gc2NhbiBtYXhfaW50IHAgaWIgaW5cbiAgICBsZXQgeCA9IHRva2VuIGliIGluXG4gICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycylcbiAgfCBMaXRfcGFkZGluZyAoKFJpZ2h0IHwgWmVyb3MpLCB3KSwgTm9fcHJlY2lzaW9uIC0+XG4gICAgbGV0IF8gPSBzY2FuIHcgbWF4X2ludCBpYiBpblxuICAgIGxldCB4ID0gdG9rZW4gaWIgaW5cbiAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzKVxuICB8IExpdF9wYWRkaW5nICgoUmlnaHQgfCBaZXJvcyksIHcpLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBsZXQgXyA9IHNjYW4gdyBwIGliIGluXG4gICAgbGV0IHggPSB0b2tlbiBpYiBpblxuICAgIENvbnMgKHgsIG1ha2Vfc2NhbmYgaWIgZm10IHJlYWRlcnMpXG4gIHwgTGl0X3BhZGRpbmcgKExlZnQsIF8pLCBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiUtXFxcIlwiXG4gIHwgTGl0X3BhZGRpbmcgKChSaWdodCB8IFplcm9zKSwgXyksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJSpcXFwiXCJcbiAgfCBBcmdfcGFkZGluZyBfLCBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiUqXFxcIlwiXG4gIHwgTm9fcGFkZGluZywgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlKlxcXCJcIlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgKCogRGVmaW5pbmcgW3NjYW5mXSBhbmQgdmFyaW91cyBmbGF2b3JzIG9mIFtzY2FuZl0gKilcblxudHlwZSAnYSBrc2NhbmZfcmVzdWx0ID0gQXJncyBvZiAnYSB8IEV4YyBvZiBleG5cblxubGV0IGtzY2FuZiBpYiBlZiAoRm9ybWF0IChmbXQsIHN0cikpID1cbiAgbGV0IHJlYyBhcHBseSA6IHR5cGUgYSBiIC4gYSAtPiAoYSwgYikgaGV0ZXJfbGlzdCAtPiBiID1cbiAgICBmdW4gZiBhcmdzIC0+IG1hdGNoIGFyZ3Mgd2l0aFxuICAgIHwgQ29ucyAoeCwgcikgLT4gYXBwbHkgKGYgeCkgclxuICAgIHwgTmlsIC0+IGZcbiAgaW5cbiAgbGV0IGsgcmVhZGVycyBmID1cbiAgICBTY2FubmluZy5yZXNldF90b2tlbiBpYjtcbiAgICBtYXRjaCB0cnkgQXJncyAobWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycykgd2l0aFxuICAgICAgfCAoU2Nhbl9mYWlsdXJlIF8gfCBGYWlsdXJlIF8gfCBFbmRfb2ZfZmlsZSkgYXMgZXhjIC0+IEV4YyBleGNcbiAgICAgIHwgSW52YWxpZF9hcmd1bWVudCBtc2cgLT5cbiAgICAgICAgaW52YWxpZF9hcmcgKG1zZyBeIFwiIGluIGZvcm1hdCBcXFwiXCIgXiBTdHJpbmcuZXNjYXBlZCBzdHIgXiBcIlxcXCJcIilcbiAgICB3aXRoXG4gICAgICB8IEFyZ3MgYXJncyAtPiBhcHBseSBmIGFyZ3NcbiAgICAgIHwgRXhjIGV4YyAtPiBlZiBpYiBleGNcbiAgaW5cbiAgdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuXG4oKioqKVxuXG5sZXQga2JzY2FuZiA9IGtzY2FuZlxubGV0IGJzY2FuZiBpYiBmbXQgPSBrYnNjYW5mIGliIHNjYW5mX2JhZF9pbnB1dCBmbXRcblxubGV0IGtzc2NhbmYgcyBlZiBmbXQgPSBrYnNjYW5mIChTY2FubmluZy5mcm9tX3N0cmluZyBzKSBlZiBmbXRcbmxldCBzc2NhbmYgcyBmbXQgPSBrYnNjYW5mIChTY2FubmluZy5mcm9tX3N0cmluZyBzKSBzY2FuZl9iYWRfaW5wdXQgZm10XG5cbmxldCBzY2FuZiBmbXQgPSBrc2NhbmYgU2Nhbm5pbmcuc3RkaWIgc2NhbmZfYmFkX2lucHV0IGZtdFxuXG4oKioqKVxuXG4oKiBTY2FubmluZyBmb3JtYXQgc3RyaW5ncy4gKilcbmxldCBic2NhbmZfZm9ybWF0IDpcbiAgU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPlxuICAoKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT4gJ2cpIC0+ICdnID1cbiAgZnVuIGliIGZvcm1hdCBmIC0+XG4gICAgbGV0IF8gPSBzY2FuX2NhbWxfc3RyaW5nIG1heF9pbnQgaWIgaW5cbiAgICBsZXQgc3RyID0gdG9rZW5fc3RyaW5nIGliIGluXG4gICAgbGV0IGZtdCcgPVxuICAgICAgdHJ5IGZvcm1hdF9vZl9zdHJpbmdfZm9ybWF0IHN0ciBmb3JtYXRcbiAgICAgIHdpdGggRmFpbHVyZSBtc2cgLT4gYmFkX2lucHV0IG1zZyBpblxuICAgIGYgZm10J1xuXG5cbmxldCBzc2NhbmZfZm9ybWF0IDpcbiAgc3RyaW5nIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+XG4gICgoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPiAnZykgLT4gJ2cgPVxuICBmdW4gcyBmb3JtYXQgZiAtPiBic2NhbmZfZm9ybWF0IChTY2FubmluZy5mcm9tX3N0cmluZyBzKSBmb3JtYXQgZlxuXG5cbmxldCBmb3JtYXRfZnJvbV9zdHJpbmcgcyBmbXQgPVxuICBzc2NhbmZfZm9ybWF0IChcIlxcXCJcIiBeIFN0cmluZy5lc2NhcGVkIHMgXiBcIlxcXCJcIikgZm10IChmdW4geCAtPiB4KVxuXG5cbmxldCB1bmVzY2FwZWQgcyA9XG4gIHNzY2FuZiAoXCJcXFwiXCIgXiBzIF4gXCJcXFwiXCIpIFwiJVMlIVwiIChmdW4geCAtPiB4KVxuXG5cbigqIERlcHJlY2F0ZWQgKilcbmxldCBrZnNjYW5mIGljIGVmIGZtdCA9IGtic2NhbmYgKFNjYW5uaW5nLm1lbW9fZnJvbV9jaGFubmVsIGljKSBlZiBmbXRcbmxldCBmc2NhbmYgaWMgZm10ID0ga3NjYW5mIChTY2FubmluZy5tZW1vX2Zyb21fY2hhbm5lbCBpYykgc2NhbmZfYmFkX2lucHV0IGZtdFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBSZWdpc3RlcmluZyBPQ2FtbCB2YWx1ZXMgd2l0aCB0aGUgQyBydW50aW1lIGZvciBsYXRlciBjYWxsYmFja3MgKilcblxuZXh0ZXJuYWwgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgOiBzdHJpbmcgLT4gT2JqLnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWVcIlxuXG5sZXQgcmVnaXN0ZXIgbmFtZSB2ID1cbiAgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgbmFtZSAoT2JqLnJlcHIgdilcblxubGV0IHJlZ2lzdGVyX2V4Y2VwdGlvbiBuYW1lIChleG4gOiBleG4pID1cbiAgbGV0IGV4biA9IE9iai5yZXByIGV4biBpblxuICBsZXQgc2xvdCA9IGlmIE9iai50YWcgZXhuID0gT2JqLm9iamVjdF90YWcgdGhlbiBleG4gZWxzZSBPYmouZmllbGQgZXhuIDAgaW5cbiAgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgbmFtZSBzbG90XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICBKZXJvbWUgVm91aWxsb24sIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gT2JqXG5cbigqKioqIE9iamVjdCByZXByZXNlbnRhdGlvbiAqKioqKVxuXG5leHRlcm5hbCBzZXRfaWQ6ICdhIC0+ICdhID0gXCJjYW1sX3NldF9vb19pZFwiIFtAQG5vYWxsb2NdXG5cbigqKioqIE9iamVjdCBjb3B5ICoqKiopXG5cbmxldCBjb3B5IG8gPVxuICBsZXQgbyA9IChPYmoub2JqIChPYmouZHVwIChPYmoucmVwciBvKSkpIGluXG4gIHNldF9pZCBvXG5cbigqKioqIENvbXByZXNzaW9uIG9wdGlvbnMgKioqKilcbigqIFBhcmFtZXRlcnMgKilcbnR5cGUgcGFyYW1zID0ge1xuICAgIG11dGFibGUgY29tcGFjdF90YWJsZSA6IGJvb2w7XG4gICAgbXV0YWJsZSBjb3B5X3BhcmVudCA6IGJvb2w7XG4gICAgbXV0YWJsZSBjbGVhbl93aGVuX2NvcHlpbmcgOiBib29sO1xuICAgIG11dGFibGUgcmV0cnlfY291bnQgOiBpbnQ7XG4gICAgbXV0YWJsZSBidWNrZXRfc21hbGxfc2l6ZSA6IGludFxuICB9XG5cbmxldCBwYXJhbXMgPSB7XG4gIGNvbXBhY3RfdGFibGUgPSB0cnVlO1xuICBjb3B5X3BhcmVudCA9IHRydWU7XG4gIGNsZWFuX3doZW5fY29weWluZyA9IHRydWU7XG4gIHJldHJ5X2NvdW50ID0gMztcbiAgYnVja2V0X3NtYWxsX3NpemUgPSAxNlxufVxuXG4oKioqKiBQYXJhbWV0ZXJzICoqKiopXG5cbmxldCBpbml0aWFsX29iamVjdF9zaXplID0gMlxuXG4oKioqKiBJdGVtcyAqKioqKVxuXG50eXBlIGl0ZW0gPSBEdW1teUEgfCBEdW1teUIgfCBEdW1teUMgb2YgaW50XG5sZXQgXyA9IFtEdW1teUE7IER1bW15QjsgRHVtbXlDIDBdICgqIHRvIGF2b2lkIHdhcm5pbmdzICopXG5cbmxldCBkdW1teV9pdGVtID0gKG1hZ2ljICgpIDogaXRlbSlcblxuKCoqKiogVHlwZXMgKioqKilcblxudHlwZSB0YWdcbnR5cGUgbGFiZWwgPSBpbnRcbnR5cGUgY2xvc3VyZSA9IGl0ZW1cbnR5cGUgdCA9IER1bW15QSB8IER1bW15QiB8IER1bW15QyBvZiBpbnRcbmxldCBfID0gW0R1bW15QTsgRHVtbXlCOyBEdW1teUMgMF0gKCogdG8gYXZvaWQgd2FybmluZ3MgKilcblxudHlwZSBvYmogPSB0IGFycmF5XG5leHRlcm5hbCByZXQgOiAob2JqIC0+ICdhKSAtPiBjbG9zdXJlID0gXCIlaWRlbnRpdHlcIlxuXG4oKioqKiBMYWJlbHMgKioqKilcblxubGV0IHB1YmxpY19tZXRob2RfbGFiZWwgcyA6IHRhZyA9XG4gIGxldCBhY2N1ID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICBhY2N1IDo9IDIyMyAqICFhY2N1ICsgQ2hhci5jb2RlIHMuW2ldXG4gIGRvbmU7XG4gICgqIHJlZHVjZSB0byAzMSBiaXRzICopXG4gIGFjY3UgOj0gIWFjY3UgbGFuZCAoMSBsc2wgMzEgLSAxKTtcbiAgKCogbWFrZSBpdCBzaWduZWQgZm9yIDY0IGJpdHMgYXJjaGl0ZWN0dXJlcyAqKVxuICBsZXQgdGFnID0gaWYgIWFjY3UgPiAweDNGRkZGRkZGIHRoZW4gIWFjY3UgLSAoMSBsc2wgMzEpIGVsc2UgIWFjY3UgaW5cbiAgKCogUHJpbnRmLmVwcmludGYgXCIlcyA9ICVkXFxuXCIgcyB0YWc7IGZsdXNoIHN0ZGVycjsgKilcbiAgbWFnaWMgdGFnXG5cbigqKioqIFNwYXJzZSBhcnJheSAqKioqKVxuXG5tb2R1bGUgVmFycyA9XG4gIE1hcC5NYWtlKHN0cnVjdCB0eXBlIHQgPSBzdHJpbmcgbGV0IGNvbXBhcmUgKHg6dCkgeSA9IGNvbXBhcmUgeCB5IGVuZClcbnR5cGUgdmFycyA9IGludCBWYXJzLnRcblxubW9kdWxlIE1ldGhzID1cbiAgTWFwLk1ha2Uoc3RydWN0IHR5cGUgdCA9IHN0cmluZyBsZXQgY29tcGFyZSAoeDp0KSB5ID0gY29tcGFyZSB4IHkgZW5kKVxudHlwZSBtZXRocyA9IGxhYmVsIE1ldGhzLnRcbm1vZHVsZSBMYWJzID1cbiAgTWFwLk1ha2Uoc3RydWN0IHR5cGUgdCA9IGxhYmVsIGxldCBjb21wYXJlICh4OnQpIHkgPSBjb21wYXJlIHggeSBlbmQpXG50eXBlIGxhYnMgPSBib29sIExhYnMudFxuXG4oKiBUaGUgY29tcGlsZXIgYXNzdW1lcyB0aGF0IHRoZSBmaXJzdCBmaWVsZCBvZiB0aGlzIHN0cnVjdHVyZSBpcyBbc2l6ZV0uICopXG50eXBlIHRhYmxlID1cbiB7IG11dGFibGUgc2l6ZTogaW50O1xuICAgbXV0YWJsZSBtZXRob2RzOiBjbG9zdXJlIGFycmF5O1xuICAgbXV0YWJsZSBtZXRob2RzX2J5X25hbWU6IG1ldGhzO1xuICAgbXV0YWJsZSBtZXRob2RzX2J5X2xhYmVsOiBsYWJzO1xuICAgbXV0YWJsZSBwcmV2aW91c19zdGF0ZXM6XG4gICAgIChtZXRocyAqIGxhYnMgKiAobGFiZWwgKiBpdGVtKSBsaXN0ICogdmFycyAqXG4gICAgICBsYWJlbCBsaXN0ICogc3RyaW5nIGxpc3QpIGxpc3Q7XG4gICBtdXRhYmxlIGhpZGRlbl9tZXRoczogKGxhYmVsICogaXRlbSkgbGlzdDtcbiAgIG11dGFibGUgdmFyczogdmFycztcbiAgIG11dGFibGUgaW5pdGlhbGl6ZXJzOiAob2JqIC0+IHVuaXQpIGxpc3QgfVxuXG5sZXQgZHVtbXlfdGFibGUgPVxuICB7IG1ldGhvZHMgPSBbfCBkdW1teV9pdGVtIHxdO1xuICAgIG1ldGhvZHNfYnlfbmFtZSA9IE1ldGhzLmVtcHR5O1xuICAgIG1ldGhvZHNfYnlfbGFiZWwgPSBMYWJzLmVtcHR5O1xuICAgIHByZXZpb3VzX3N0YXRlcyA9IFtdO1xuICAgIGhpZGRlbl9tZXRocyA9IFtdO1xuICAgIHZhcnMgPSBWYXJzLmVtcHR5O1xuICAgIGluaXRpYWxpemVycyA9IFtdO1xuICAgIHNpemUgPSAwIH1cblxubGV0IHRhYmxlX2NvdW50ID0gcmVmIDBcblxuKCogZHVtbXlfbWV0IHNob3VsZCBiZSBhIHBvaW50ZXIsIHNvIHVzZSBhbiBhdG9tICopXG5sZXQgZHVtbXlfbWV0IDogaXRlbSA9IG9iaiAoT2JqLm5ld19ibG9jayAwIDApXG4oKiBpZiBkZWJ1Z2dpbmcgaXMgbmVlZGVkLCB0aGlzIGNvdWxkIGJlIGEgZ29vZCBpZGVhOiAqKVxuKCogbGV0IGR1bW15X21ldCAoKSA9IGZhaWx3aXRoIFwiVW5kZWZpbmVkIG1ldGhvZFwiICopXG5cbmxldCByZWMgZml0X3NpemUgbiA9XG4gIGlmIG4gPD0gMiB0aGVuIG4gZWxzZVxuICBmaXRfc2l6ZSAoKG4rMSkvMikgKiAyXG5cbmxldCBuZXdfdGFibGUgcHViX2xhYmVscyA9XG4gIGluY3IgdGFibGVfY291bnQ7XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggcHViX2xhYmVscyBpblxuICBsZXQgbWV0aG9kcyA9IEFycmF5Lm1ha2UgKGxlbioyKzIpIGR1bW15X21ldCBpblxuICBtZXRob2RzLigwKSA8LSBtYWdpYyBsZW47XG4gIG1ldGhvZHMuKDEpIDwtIG1hZ2ljIChmaXRfc2l6ZSBsZW4gKiBTeXMud29yZF9zaXplIC8gOCAtIDEpO1xuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkbyBtZXRob2RzLihpKjIrMykgPC0gbWFnaWMgcHViX2xhYmVscy4oaSkgZG9uZTtcbiAgeyBtZXRob2RzID0gbWV0aG9kcztcbiAgICBtZXRob2RzX2J5X25hbWUgPSBNZXRocy5lbXB0eTtcbiAgICBtZXRob2RzX2J5X2xhYmVsID0gTGFicy5lbXB0eTtcbiAgICBwcmV2aW91c19zdGF0ZXMgPSBbXTtcbiAgICBoaWRkZW5fbWV0aHMgPSBbXTtcbiAgICB2YXJzID0gVmFycy5lbXB0eTtcbiAgICBpbml0aWFsaXplcnMgPSBbXTtcbiAgICBzaXplID0gaW5pdGlhbF9vYmplY3Rfc2l6ZSB9XG5cbmxldCByZXNpemUgYXJyYXkgbmV3X3NpemUgPVxuICBsZXQgb2xkX3NpemUgPSBBcnJheS5sZW5ndGggYXJyYXkubWV0aG9kcyBpblxuICBpZiBuZXdfc2l6ZSA+IG9sZF9zaXplIHRoZW4gYmVnaW5cbiAgICBsZXQgbmV3X2J1Y2sgPSBBcnJheS5tYWtlIG5ld19zaXplIGR1bW15X21ldCBpblxuICAgIEFycmF5LmJsaXQgYXJyYXkubWV0aG9kcyAwIG5ld19idWNrIDAgb2xkX3NpemU7XG4gICAgYXJyYXkubWV0aG9kcyA8LSBuZXdfYnVja1xuIGVuZFxuXG5sZXQgcHV0IGFycmF5IGxhYmVsIGVsZW1lbnQgPVxuICByZXNpemUgYXJyYXkgKGxhYmVsICsgMSk7XG4gIGFycmF5Lm1ldGhvZHMuKGxhYmVsKSA8LSBlbGVtZW50XG5cbigqKioqIENsYXNzZXMgKioqKilcblxubGV0IG1ldGhvZF9jb3VudCA9IHJlZiAwXG5sZXQgaW5zdF92YXJfY291bnQgPSByZWYgMFxuXG4oKiB0eXBlIHQgKilcbnR5cGUgbWV0aCA9IGl0ZW1cblxubGV0IG5ld19tZXRob2QgdGFibGUgPVxuICBsZXQgaW5kZXggPSBBcnJheS5sZW5ndGggdGFibGUubWV0aG9kcyBpblxuICByZXNpemUgdGFibGUgKGluZGV4ICsgMSk7XG4gIGluZGV4XG5cbmxldCBnZXRfbWV0aG9kX2xhYmVsIHRhYmxlIG5hbWUgPVxuICB0cnlcbiAgICBNZXRocy5maW5kIG5hbWUgdGFibGUubWV0aG9kc19ieV9uYW1lXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgbGV0IGxhYmVsID0gbmV3X21ldGhvZCB0YWJsZSBpblxuICAgIHRhYmxlLm1ldGhvZHNfYnlfbmFtZSA8LSBNZXRocy5hZGQgbmFtZSBsYWJlbCB0YWJsZS5tZXRob2RzX2J5X25hbWU7XG4gICAgdGFibGUubWV0aG9kc19ieV9sYWJlbCA8LSBMYWJzLmFkZCBsYWJlbCB0cnVlIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWw7XG4gICAgbGFiZWxcblxubGV0IGdldF9tZXRob2RfbGFiZWxzIHRhYmxlIG5hbWVzID1cbiAgQXJyYXkubWFwIChnZXRfbWV0aG9kX2xhYmVsIHRhYmxlKSBuYW1lc1xuXG5sZXQgc2V0X21ldGhvZCB0YWJsZSBsYWJlbCBlbGVtZW50ID1cbiAgaW5jciBtZXRob2RfY291bnQ7XG4gIGlmIExhYnMuZmluZCBsYWJlbCB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIHRoZW5cbiAgICBwdXQgdGFibGUgbGFiZWwgZWxlbWVudFxuICBlbHNlXG4gICAgdGFibGUuaGlkZGVuX21ldGhzIDwtIChsYWJlbCwgZWxlbWVudCkgOjogdGFibGUuaGlkZGVuX21ldGhzXG5cbmxldCBnZXRfbWV0aG9kIHRhYmxlIGxhYmVsID1cbiAgdHJ5IExpc3QuYXNzb2MgbGFiZWwgdGFibGUuaGlkZGVuX21ldGhzXG4gIHdpdGggTm90X2ZvdW5kIC0+IHRhYmxlLm1ldGhvZHMuKGxhYmVsKVxuXG5sZXQgdG9fbGlzdCBhcnIgPVxuICBpZiBhcnIgPT0gbWFnaWMgMCB0aGVuIFtdIGVsc2UgQXJyYXkudG9fbGlzdCBhcnJcblxubGV0IG5hcnJvdyB0YWJsZSB2YXJzIHZpcnRfbWV0aHMgY29uY3JfbWV0aHMgPVxuICBsZXQgdmFycyA9IHRvX2xpc3QgdmFyc1xuICBhbmQgdmlydF9tZXRocyA9IHRvX2xpc3QgdmlydF9tZXRoc1xuICBhbmQgY29uY3JfbWV0aHMgPSB0b19saXN0IGNvbmNyX21ldGhzIGluXG4gIGxldCB2aXJ0X21ldGhfbGFicyA9IExpc3QubWFwIChnZXRfbWV0aG9kX2xhYmVsIHRhYmxlKSB2aXJ0X21ldGhzIGluXG4gIGxldCBjb25jcl9tZXRoX2xhYnMgPSBMaXN0Lm1hcCAoZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSkgY29uY3JfbWV0aHMgaW5cbiAgdGFibGUucHJldmlvdXNfc3RhdGVzIDwtXG4gICAgICh0YWJsZS5tZXRob2RzX2J5X25hbWUsIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwsIHRhYmxlLmhpZGRlbl9tZXRocyxcbiAgICAgIHRhYmxlLnZhcnMsIHZpcnRfbWV0aF9sYWJzLCB2YXJzKVxuICAgICA6OiB0YWJsZS5wcmV2aW91c19zdGF0ZXM7XG4gIHRhYmxlLnZhcnMgPC1cbiAgICBWYXJzLmZvbGRcbiAgICAgIChmdW4gbGFiIGluZm8gdHZhcnMgLT5cbiAgICAgICAgaWYgTGlzdC5tZW0gbGFiIHZhcnMgdGhlbiBWYXJzLmFkZCBsYWIgaW5mbyB0dmFycyBlbHNlIHR2YXJzKVxuICAgICAgdGFibGUudmFycyBWYXJzLmVtcHR5O1xuICBsZXQgYnlfbmFtZSA9IHJlZiBNZXRocy5lbXB0eSBpblxuICBsZXQgYnlfbGFiZWwgPSByZWYgTGFicy5lbXB0eSBpblxuICBMaXN0Lml0ZXIyXG4gICAgKGZ1biBtZXQgbGFiZWwgLT5cbiAgICAgICBieV9uYW1lIDo9IE1ldGhzLmFkZCBtZXQgbGFiZWwgIWJ5X25hbWU7XG4gICAgICAgYnlfbGFiZWwgOj1cbiAgICAgICAgICBMYWJzLmFkZCBsYWJlbFxuICAgICAgICAgICAgKHRyeSBMYWJzLmZpbmQgbGFiZWwgdGFibGUubWV0aG9kc19ieV9sYWJlbCB3aXRoIE5vdF9mb3VuZCAtPiB0cnVlKVxuICAgICAgICAgICAgIWJ5X2xhYmVsKVxuICAgIGNvbmNyX21ldGhzIGNvbmNyX21ldGhfbGFicztcbiAgTGlzdC5pdGVyMlxuICAgIChmdW4gbWV0IGxhYmVsIC0+XG4gICAgICAgYnlfbmFtZSA6PSBNZXRocy5hZGQgbWV0IGxhYmVsICFieV9uYW1lO1xuICAgICAgIGJ5X2xhYmVsIDo9IExhYnMuYWRkIGxhYmVsIGZhbHNlICFieV9sYWJlbClcbiAgICB2aXJ0X21ldGhzIHZpcnRfbWV0aF9sYWJzO1xuICB0YWJsZS5tZXRob2RzX2J5X25hbWUgPC0gIWJ5X25hbWU7XG4gIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgPC0gIWJ5X2xhYmVsO1xuICB0YWJsZS5oaWRkZW5fbWV0aHMgPC1cbiAgICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAgKGZ1biAoKGxhYiwgXykgYXMgbWV0KSBobSAtPlxuICAgICAgICAgIGlmIExpc3QubWVtIGxhYiB2aXJ0X21ldGhfbGFicyB0aGVuIGhtIGVsc2UgbWV0OjpobSlcbiAgICAgICB0YWJsZS5oaWRkZW5fbWV0aHNcbiAgICAgICBbXVxuXG5sZXQgd2lkZW4gdGFibGUgPVxuICBsZXQgKGJ5X25hbWUsIGJ5X2xhYmVsLCBzYXZlZF9oaWRkZW5fbWV0aHMsIHNhdmVkX3ZhcnMsIHZpcnRfbWV0aHMsIHZhcnMpID1cbiAgICBMaXN0LmhkIHRhYmxlLnByZXZpb3VzX3N0YXRlc1xuICBpblxuICB0YWJsZS5wcmV2aW91c19zdGF0ZXMgPC0gTGlzdC50bCB0YWJsZS5wcmV2aW91c19zdGF0ZXM7XG4gIHRhYmxlLnZhcnMgPC1cbiAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAoZnVuIHMgdiAtPiBWYXJzLmFkZCB2IChWYXJzLmZpbmQgdiB0YWJsZS52YXJzKSBzKVxuICAgICAgIHNhdmVkX3ZhcnMgdmFycztcbiAgdGFibGUubWV0aG9kc19ieV9uYW1lIDwtIGJ5X25hbWU7XG4gIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgPC0gYnlfbGFiZWw7XG4gIHRhYmxlLmhpZGRlbl9tZXRocyA8LVxuICAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgICAoZnVuICgobGFiLCBfKSBhcyBtZXQpIGhtIC0+XG4gICAgICAgICAgaWYgTGlzdC5tZW0gbGFiIHZpcnRfbWV0aHMgdGhlbiBobSBlbHNlIG1ldDo6aG0pXG4gICAgICAgdGFibGUuaGlkZGVuX21ldGhzXG4gICAgICAgc2F2ZWRfaGlkZGVuX21ldGhzXG5cbmxldCBuZXdfc2xvdCB0YWJsZSA9XG4gIGxldCBpbmRleCA9IHRhYmxlLnNpemUgaW5cbiAgdGFibGUuc2l6ZSA8LSBpbmRleCArIDE7XG4gIGluZGV4XG5cbmxldCBuZXdfdmFyaWFibGUgdGFibGUgbmFtZSA9XG4gIHRyeSBWYXJzLmZpbmQgbmFtZSB0YWJsZS52YXJzXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgbGV0IGluZGV4ID0gbmV3X3Nsb3QgdGFibGUgaW5cbiAgICBpZiBuYW1lIDw+IFwiXCIgdGhlbiB0YWJsZS52YXJzIDwtIFZhcnMuYWRkIG5hbWUgaW5kZXggdGFibGUudmFycztcbiAgICBpbmRleFxuXG5sZXQgdG9fYXJyYXkgYXJyID1cbiAgaWYgYXJyID0gT2JqLm1hZ2ljIDAgdGhlbiBbfHxdIGVsc2UgYXJyXG5cbmxldCBuZXdfbWV0aG9kc192YXJpYWJsZXMgdGFibGUgbWV0aHMgdmFscyA9XG4gIGxldCBtZXRocyA9IHRvX2FycmF5IG1ldGhzIGluXG4gIGxldCBubWV0aHMgPSBBcnJheS5sZW5ndGggbWV0aHMgYW5kIG52YWxzID0gQXJyYXkubGVuZ3RoIHZhbHMgaW5cbiAgbGV0IHJlcyA9IEFycmF5Lm1ha2UgKG5tZXRocyArIG52YWxzKSAwIGluXG4gIGZvciBpID0gMCB0byBubWV0aHMgLSAxIGRvXG4gICAgcmVzLihpKSA8LSBnZXRfbWV0aG9kX2xhYmVsIHRhYmxlIG1ldGhzLihpKVxuICBkb25lO1xuICBmb3IgaSA9IDAgdG8gbnZhbHMgLSAxIGRvXG4gICAgcmVzLihpK25tZXRocykgPC0gbmV3X3ZhcmlhYmxlIHRhYmxlIHZhbHMuKGkpXG4gIGRvbmU7XG4gIHJlc1xuXG5sZXQgZ2V0X3ZhcmlhYmxlIHRhYmxlIG5hbWUgPVxuICB0cnkgVmFycy5maW5kIG5hbWUgdGFibGUudmFycyB3aXRoIE5vdF9mb3VuZCAtPiBhc3NlcnQgZmFsc2VcblxubGV0IGdldF92YXJpYWJsZXMgdGFibGUgbmFtZXMgPVxuICBBcnJheS5tYXAgKGdldF92YXJpYWJsZSB0YWJsZSkgbmFtZXNcblxubGV0IGFkZF9pbml0aWFsaXplciB0YWJsZSBmID1cbiAgdGFibGUuaW5pdGlhbGl6ZXJzIDwtIGY6OnRhYmxlLmluaXRpYWxpemVyc1xuXG4oKlxubW9kdWxlIEtleXMgPVxuICBNYXAuTWFrZShzdHJ1Y3QgdHlwZSB0ID0gdGFnIGFycmF5IGxldCBjb21wYXJlICh4OnQpIHkgPSBjb21wYXJlIHggeSBlbmQpXG5sZXQga2V5X21hcCA9IHJlZiBLZXlzLmVtcHR5XG5sZXQgZ2V0X2tleSB0YWdzIDogaXRlbSA9XG4gIHRyeSBtYWdpYyAoS2V5cy5maW5kIHRhZ3MgIWtleV9tYXAgOiB0YWcgYXJyYXkpXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAga2V5X21hcCA6PSBLZXlzLmFkZCB0YWdzIHRhZ3MgIWtleV9tYXA7XG4gICAgbWFnaWMgdGFnc1xuKilcblxubGV0IGNyZWF0ZV90YWJsZSBwdWJsaWNfbWV0aG9kcyA9XG4gIGlmIHB1YmxpY19tZXRob2RzID09IG1hZ2ljIDAgdGhlbiBuZXdfdGFibGUgW3x8XSBlbHNlXG4gICgqIFtwdWJsaWNfbWV0aG9kc10gbXVzdCBiZSBpbiBhc2NlbmRpbmcgb3JkZXIgZm9yIGJ5dGVjb2RlICopXG4gIGxldCB0YWdzID0gQXJyYXkubWFwIHB1YmxpY19tZXRob2RfbGFiZWwgcHVibGljX21ldGhvZHMgaW5cbiAgbGV0IHRhYmxlID0gbmV3X3RhYmxlIHRhZ3MgaW5cbiAgQXJyYXkuaXRlcmlcbiAgICAoZnVuIGkgbWV0IC0+XG4gICAgICBsZXQgbGFiID0gaSoyKzIgaW5cbiAgICAgIHRhYmxlLm1ldGhvZHNfYnlfbmFtZSAgPC0gTWV0aHMuYWRkIG1ldCBsYWIgdGFibGUubWV0aG9kc19ieV9uYW1lO1xuICAgICAgdGFibGUubWV0aG9kc19ieV9sYWJlbCA8LSBMYWJzLmFkZCBsYWIgdHJ1ZSB0YWJsZS5tZXRob2RzX2J5X2xhYmVsKVxuICAgIHB1YmxpY19tZXRob2RzO1xuICB0YWJsZVxuXG5sZXQgaW5pdF9jbGFzcyB0YWJsZSA9XG4gIGluc3RfdmFyX2NvdW50IDo9ICFpbnN0X3Zhcl9jb3VudCArIHRhYmxlLnNpemUgLSAxO1xuICB0YWJsZS5pbml0aWFsaXplcnMgPC0gTGlzdC5yZXYgdGFibGUuaW5pdGlhbGl6ZXJzO1xuICByZXNpemUgdGFibGUgKDMgKyBtYWdpYyB0YWJsZS5tZXRob2RzLigxKSAqIDE2IC8gU3lzLndvcmRfc2l6ZSlcblxubGV0IGluaGVyaXRzIGNsYSB2YWxzIHZpcnRfbWV0aHMgY29uY3JfbWV0aHMgKF8sIHN1cGVyLCBfLCBlbnYpIHRvcCA9XG4gIG5hcnJvdyBjbGEgdmFscyB2aXJ0X21ldGhzIGNvbmNyX21ldGhzO1xuICBsZXQgaW5pdCA9XG4gICAgaWYgdG9wIHRoZW4gc3VwZXIgY2xhIGVudiBlbHNlIE9iai5yZXByIChzdXBlciBjbGEpIGluXG4gIHdpZGVuIGNsYTtcbiAgQXJyYXkuY29uY2F0XG4gICAgW1t8IHJlcHIgaW5pdCB8XTtcbiAgICAgbWFnaWMgKEFycmF5Lm1hcCAoZ2V0X3ZhcmlhYmxlIGNsYSkgKHRvX2FycmF5IHZhbHMpIDogaW50IGFycmF5KTtcbiAgICAgQXJyYXkubWFwXG4gICAgICAgKGZ1biBubSAtPiByZXByIChnZXRfbWV0aG9kIGNsYSAoZ2V0X21ldGhvZF9sYWJlbCBjbGEgbm0pIDogY2xvc3VyZSkpXG4gICAgICAgKHRvX2FycmF5IGNvbmNyX21ldGhzKSBdXG5cbmxldCBtYWtlX2NsYXNzIHB1Yl9tZXRocyBjbGFzc19pbml0ID1cbiAgbGV0IHRhYmxlID0gY3JlYXRlX3RhYmxlIHB1Yl9tZXRocyBpblxuICBsZXQgZW52X2luaXQgPSBjbGFzc19pbml0IHRhYmxlIGluXG4gIGluaXRfY2xhc3MgdGFibGU7XG4gIChlbnZfaW5pdCAoT2JqLnJlcHIgMCksIGNsYXNzX2luaXQsIGVudl9pbml0LCBPYmoucmVwciAwKVxuXG50eXBlIGluaXRfdGFibGUgPSB7IG11dGFibGUgZW52X2luaXQ6IHQ7IG11dGFibGUgY2xhc3NfaW5pdDogdGFibGUgLT4gdCB9XG5bQEB3YXJuaW5nIFwiLXVudXNlZC1maWVsZFwiXVxuXG5sZXQgbWFrZV9jbGFzc19zdG9yZSBwdWJfbWV0aHMgY2xhc3NfaW5pdCBpbml0X3RhYmxlID1cbiAgbGV0IHRhYmxlID0gY3JlYXRlX3RhYmxlIHB1Yl9tZXRocyBpblxuICBsZXQgZW52X2luaXQgPSBjbGFzc19pbml0IHRhYmxlIGluXG4gIGluaXRfY2xhc3MgdGFibGU7XG4gIGluaXRfdGFibGUuY2xhc3NfaW5pdCA8LSBjbGFzc19pbml0O1xuICBpbml0X3RhYmxlLmVudl9pbml0IDwtIGVudl9pbml0XG5cbmxldCBkdW1teV9jbGFzcyBsb2MgPVxuICBsZXQgdW5kZWYgPSBmdW4gXyAtPiByYWlzZSAoVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUgbG9jKSBpblxuICAoT2JqLm1hZ2ljIHVuZGVmLCB1bmRlZiwgdW5kZWYsIE9iai5yZXByIDApXG5cbigqKioqIE9iamVjdHMgKioqKilcblxubGV0IGNyZWF0ZV9vYmplY3QgdGFibGUgPVxuICAoKiBYWFggQXBwZWwgZGUgW29ial9ibG9ja10gfCBDYWxsIHRvIFtvYmpfYmxvY2tdICAqKVxuICBsZXQgb2JqID0gT2JqLm5ld19ibG9jayBPYmoub2JqZWN0X3RhZyB0YWJsZS5zaXplIGluXG4gICgqIFhYWCBBcHBlbCBkZSBbY2FtbF9tb2RpZnldIHwgQ2FsbCB0byBbY2FtbF9tb2RpZnldICopXG4gIE9iai5zZXRfZmllbGQgb2JqIDAgKE9iai5yZXByIHRhYmxlLm1ldGhvZHMpO1xuICBPYmoub2JqIChzZXRfaWQgb2JqKVxuXG5sZXQgY3JlYXRlX29iamVjdF9vcHQgb2JqXzAgdGFibGUgPVxuICBpZiAoT2JqLm1hZ2ljIG9ial8wIDogYm9vbCkgdGhlbiBvYmpfMCBlbHNlIGJlZ2luXG4gICAgKCogWFhYIEFwcGVsIGRlIFtvYmpfYmxvY2tdIHwgQ2FsbCB0byBbb2JqX2Jsb2NrXSAgKilcbiAgICBsZXQgb2JqID0gT2JqLm5ld19ibG9jayBPYmoub2JqZWN0X3RhZyB0YWJsZS5zaXplIGluXG4gICAgKCogWFhYIEFwcGVsIGRlIFtjYW1sX21vZGlmeV0gfCBDYWxsIHRvIFtjYW1sX21vZGlmeV0gKilcbiAgICBPYmouc2V0X2ZpZWxkIG9iaiAwIChPYmoucmVwciB0YWJsZS5tZXRob2RzKTtcbiAgICBPYmoub2JqIChzZXRfaWQgb2JqKVxuICBlbmRcblxubGV0IHJlYyBpdGVyX2Ygb2JqID1cbiAgZnVuY3Rpb25cbiAgICBbXSAgIC0+ICgpXG4gIHwgZjo6bCAtPiBmIG9iajsgaXRlcl9mIG9iaiBsXG5cbmxldCBydW5faW5pdGlhbGl6ZXJzIG9iaiB0YWJsZSA9XG4gIGxldCBpbml0cyA9IHRhYmxlLmluaXRpYWxpemVycyBpblxuICBpZiBpbml0cyA8PiBbXSB0aGVuXG4gICAgaXRlcl9mIG9iaiBpbml0c1xuXG5sZXQgcnVuX2luaXRpYWxpemVyc19vcHQgb2JqXzAgb2JqIHRhYmxlID1cbiAgaWYgKE9iai5tYWdpYyBvYmpfMCA6IGJvb2wpIHRoZW4gb2JqIGVsc2UgYmVnaW5cbiAgICBsZXQgaW5pdHMgPSB0YWJsZS5pbml0aWFsaXplcnMgaW5cbiAgICBpZiBpbml0cyA8PiBbXSB0aGVuIGl0ZXJfZiBvYmogaW5pdHM7XG4gICAgb2JqXG4gIGVuZFxuXG5sZXQgY3JlYXRlX29iamVjdF9hbmRfcnVuX2luaXRpYWxpemVycyBvYmpfMCB0YWJsZSA9XG4gIGlmIChPYmoubWFnaWMgb2JqXzAgOiBib29sKSB0aGVuIG9ial8wIGVsc2UgYmVnaW5cbiAgICBsZXQgb2JqID0gY3JlYXRlX29iamVjdCB0YWJsZSBpblxuICAgIHJ1bl9pbml0aWFsaXplcnMgb2JqIHRhYmxlO1xuICAgIG9ialxuICBlbmRcblxuKCogRXF1aXZhbGVudCBwcmltaXRpdmUgYmVsb3dcbmxldCBzZW5kc2VsZiBvYmogbGFiID1cbiAgKG1hZ2ljIG9iaiA6IChvYmogLT4gdCkgYXJyYXkgYXJyYXkpLigwKS4obGFiKSBvYmpcbiopXG5leHRlcm5hbCBzZW5kIDogb2JqIC0+IHRhZyAtPiAnYSA9IFwiJXNlbmRcIlxuZXh0ZXJuYWwgc2VuZGNhY2hlIDogb2JqIC0+IHRhZyAtPiB0IC0+IGludCAtPiAnYSA9IFwiJXNlbmRjYWNoZVwiXG5leHRlcm5hbCBzZW5kc2VsZiA6IG9iaiAtPiBsYWJlbCAtPiAnYSA9IFwiJXNlbmRzZWxmXCJcbmV4dGVybmFsIGdldF9wdWJsaWNfbWV0aG9kIDogb2JqIC0+IHRhZyAtPiBjbG9zdXJlXG4gICAgPSBcImNhbWxfZ2V0X3B1YmxpY19tZXRob2RcIiBbQEBub2FsbG9jXVxuXG4oKioqKiB0YWJsZSBjb2xsZWN0aW9uIGFjY2VzcyAqKioqKVxuXG50eXBlIHRhYmxlcyA9XG4gIHwgRW1wdHlcbiAgfCBDb25zIG9mIHtrZXkgOiBjbG9zdXJlOyBtdXRhYmxlIGRhdGE6IHRhYmxlczsgbXV0YWJsZSBuZXh0OiB0YWJsZXN9XG5cbmxldCBzZXRfZGF0YSB0YWJsZXMgdiA9IG1hdGNoIHRhYmxlcyB3aXRoXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLmRhdGEgPC0gdlxubGV0IHNldF9uZXh0IHRhYmxlcyB2ID0gbWF0Y2ggdGFibGVzIHdpdGhcbiAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBDb25zIHRhYmxlcyAtPiB0YWJsZXMubmV4dCA8LSB2XG5sZXQgZ2V0X2tleSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLmtleVxubGV0IGdldF9kYXRhID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBDb25zIHRhYmxlcyAtPiB0YWJsZXMuZGF0YVxubGV0IGdldF9uZXh0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBDb25zIHRhYmxlcyAtPiB0YWJsZXMubmV4dFxuXG5sZXQgYnVpbGRfcGF0aCBuIGtleXMgdGFibGVzID1cbiAgbGV0IHJlcyA9IENvbnMge2tleSA9IE9iai5tYWdpYyAwOyBkYXRhID0gRW1wdHk7IG5leHQgPSBFbXB0eX0gaW5cbiAgbGV0IHIgPSByZWYgcmVzIGluXG4gIGZvciBpID0gMCB0byBuIGRvXG4gICAgciA6PSBDb25zIHtrZXkgPSBrZXlzLihpKTsgZGF0YSA9ICFyOyBuZXh0ID0gRW1wdHl9XG4gIGRvbmU7XG4gIHNldF9kYXRhIHRhYmxlcyAhcjtcbiAgcmVzXG5cbmxldCByZWMgbG9va3VwX2tleXMgaSBrZXlzIHRhYmxlcyA9XG4gIGlmIGkgPCAwIHRoZW4gdGFibGVzIGVsc2VcbiAgbGV0IGtleSA9IGtleXMuKGkpIGluXG4gIGxldCByZWMgbG9va3VwX2tleSAodGFibGVzOnRhYmxlcykgPVxuICAgIGlmIGdldF9rZXkgdGFibGVzID09IGtleSB0aGVuXG4gICAgICBtYXRjaCBnZXRfZGF0YSB0YWJsZXMgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgQ29ucyBfIGFzIHRhYmxlc19kYXRhIC0+XG4gICAgICAgICAgbG9va3VwX2tleXMgKGktMSkga2V5cyB0YWJsZXNfZGF0YVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIGdldF9uZXh0IHRhYmxlcyB3aXRoXG4gICAgICB8IENvbnMgXyBhcyBuZXh0IC0+IGxvb2t1cF9rZXkgbmV4dFxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIGxldCBuZXh0IDogdGFibGVzID0gQ29ucyB7a2V5OyBkYXRhID0gRW1wdHk7IG5leHQgPSBFbXB0eX0gaW5cbiAgICAgICAgICBzZXRfbmV4dCB0YWJsZXMgbmV4dDtcbiAgICAgICAgICBidWlsZF9wYXRoIChpLTEpIGtleXMgbmV4dFxuICBpblxuICBsb29rdXBfa2V5IHRhYmxlc1xuXG5sZXQgbG9va3VwX3RhYmxlcyByb290IGtleXMgPVxuICBtYXRjaCBnZXRfZGF0YSByb290IHdpdGhcbiAgfCBDb25zIF8gYXMgcm9vdF9kYXRhIC0+XG4gICAgbG9va3VwX2tleXMgKEFycmF5Lmxlbmd0aCBrZXlzIC0gMSkga2V5cyByb290X2RhdGFcbiAgfCBFbXB0eSAtPlxuICAgIGJ1aWxkX3BhdGggKEFycmF5Lmxlbmd0aCBrZXlzIC0gMSkga2V5cyByb290XG5cbigqKioqIGJ1aWx0aW4gbWV0aG9kcyAqKioqKVxuXG5sZXQgZ2V0X2NvbnN0IHggPSByZXQgKGZ1biBfb2JqIC0+IHgpXG5sZXQgZ2V0X3ZhciBuICAgPSByZXQgKGZ1biBvYmogLT4gQXJyYXkudW5zYWZlX2dldCBvYmogbilcbmxldCBnZXRfZW52IGUgbiA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pXG5sZXQgZ2V0X21ldGggbiAgPSByZXQgKGZ1biBvYmogLT4gc2VuZHNlbGYgb2JqIG4pXG5sZXQgc2V0X3ZhciBuICAgPSByZXQgKGZ1biBvYmogeCAtPiBBcnJheS51bnNhZmVfc2V0IG9iaiBuIHgpXG5sZXQgYXBwX2NvbnN0IGYgeCA9IHJldCAoZnVuIF9vYmogLT4gZiB4KVxubGV0IGFwcF92YXIgZiBuICAgPSByZXQgKGZ1biBvYmogLT4gZiAoQXJyYXkudW5zYWZlX2dldCBvYmogbikpXG5sZXQgYXBwX2VudiBmIGUgbiA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIGYgKEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pKVxubGV0IGFwcF9tZXRoIGYgbiAgPSByZXQgKGZ1biBvYmogLT4gZiAoc2VuZHNlbGYgb2JqIG4pKVxubGV0IGFwcF9jb25zdF9jb25zdCBmIHggeSA9IHJldCAoZnVuIF9vYmogLT4gZiB4IHkpXG5sZXQgYXBwX2NvbnN0X3ZhciBmIHggbiAgID0gcmV0IChmdW4gb2JqIC0+IGYgeCAoQXJyYXkudW5zYWZlX2dldCBvYmogbikpXG5sZXQgYXBwX2NvbnN0X21ldGggZiB4IG4gPSByZXQgKGZ1biBvYmogLT4gZiB4IChzZW5kc2VsZiBvYmogbikpXG5sZXQgYXBwX3Zhcl9jb25zdCBmIG4geCA9IHJldCAoZnVuIG9iaiAtPiBmIChBcnJheS51bnNhZmVfZ2V0IG9iaiBuKSB4KVxubGV0IGFwcF9tZXRoX2NvbnN0IGYgbiB4ID0gcmV0IChmdW4gb2JqIC0+IGYgKHNlbmRzZWxmIG9iaiBuKSB4KVxubGV0IGFwcF9jb25zdF9lbnYgZiB4IGUgbiA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIGYgeCAoQXJyYXkudW5zYWZlX2dldCAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbikpXG5sZXQgYXBwX2Vudl9jb25zdCBmIGUgbiB4ID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgZiAoQXJyYXkudW5zYWZlX2dldCAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbikgeClcbmxldCBtZXRoX2FwcF9jb25zdCBuIHggPSByZXQgKGZ1biBvYmogLT4gKHNlbmRzZWxmIG9iaiBuIDogXyAtPiBfKSB4KVxubGV0IG1ldGhfYXBwX3ZhciBuIG0gPVxuICByZXQgKGZ1biBvYmogLT4gKHNlbmRzZWxmIG9iaiBuIDogXyAtPiBfKSAoQXJyYXkudW5zYWZlX2dldCBvYmogbSkpXG5sZXQgbWV0aF9hcHBfZW52IG4gZSBtID1cbiAgcmV0IChmdW4gb2JqIC0+IChzZW5kc2VsZiBvYmogbiA6IF8gLT4gXylcbiAgICAgIChBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBtKSlcbmxldCBtZXRoX2FwcF9tZXRoIG4gbSA9XG4gIHJldCAoZnVuIG9iaiAtPiAoc2VuZHNlbGYgb2JqIG4gOiBfIC0+IF8pIChzZW5kc2VsZiBvYmogbSkpXG5sZXQgc2VuZF9jb25zdCBtIHggYyA9XG4gIHJldCAoZnVuIG9iaiAtPiBzZW5kY2FjaGUgeCBtIChBcnJheS51bnNhZmVfZ2V0IG9iaiAwKSBjKVxubGV0IHNlbmRfdmFyIG0gbiBjID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgc2VuZGNhY2hlIChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pIDogb2JqKSBtXG4gICAgICAoQXJyYXkudW5zYWZlX2dldCBvYmogMCkgYylcbmxldCBzZW5kX2VudiBtIGUgbiBjID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgc2VuZGNhY2hlXG4gICAgICAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0XG4gICAgICAgICAgICAgICAgICAgIChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKSA6IG9iailcbiAgICAgIG0gKEFycmF5LnVuc2FmZV9nZXQgb2JqIDApIGMpXG5sZXQgc2VuZF9tZXRoIG0gbiBjID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgc2VuZGNhY2hlIChzZW5kc2VsZiBvYmogbikgbSAoQXJyYXkudW5zYWZlX2dldCBvYmogMCkgYylcbmxldCBuZXdfY2FjaGUgdGFibGUgPVxuICBsZXQgbiA9IG5ld19tZXRob2QgdGFibGUgaW5cbiAgbGV0IG4gPVxuICAgIGlmIG4gbW9kIDIgPSAwIHx8IG4gPiAyICsgbWFnaWMgdGFibGUubWV0aG9kcy4oMSkgKiAxNiAvIFN5cy53b3JkX3NpemVcbiAgICB0aGVuIG4gZWxzZSBuZXdfbWV0aG9kIHRhYmxlXG4gIGluXG4gIHRhYmxlLm1ldGhvZHMuKG4pIDwtIE9iai5tYWdpYyAwO1xuICBuXG5cbnR5cGUgaW1wbCA9XG4gICAgR2V0Q29uc3RcbiAgfCBHZXRWYXJcbiAgfCBHZXRFbnZcbiAgfCBHZXRNZXRoXG4gIHwgU2V0VmFyXG4gIHwgQXBwQ29uc3RcbiAgfCBBcHBWYXJcbiAgfCBBcHBFbnZcbiAgfCBBcHBNZXRoXG4gIHwgQXBwQ29uc3RDb25zdFxuICB8IEFwcENvbnN0VmFyXG4gIHwgQXBwQ29uc3RFbnZcbiAgfCBBcHBDb25zdE1ldGhcbiAgfCBBcHBWYXJDb25zdFxuICB8IEFwcEVudkNvbnN0XG4gIHwgQXBwTWV0aENvbnN0XG4gIHwgTWV0aEFwcENvbnN0XG4gIHwgTWV0aEFwcFZhclxuICB8IE1ldGhBcHBFbnZcbiAgfCBNZXRoQXBwTWV0aFxuICB8IFNlbmRDb25zdFxuICB8IFNlbmRWYXJcbiAgfCBTZW5kRW52XG4gIHwgU2VuZE1ldGhcbiAgfCBDbG9zdXJlIG9mIGNsb3N1cmVcblxubGV0IG1ldGhvZF9pbXBsIHRhYmxlIGkgYXJyID1cbiAgbGV0IG5leHQgKCkgPSBpbmNyIGk7IG1hZ2ljIGFyci4oIWkpIGluXG4gIG1hdGNoIG5leHQoKSB3aXRoXG4gICAgR2V0Q29uc3QgLT4gbGV0IHggOiB0ID0gbmV4dCgpIGluIGdldF9jb25zdCB4XG4gIHwgR2V0VmFyICAgLT4gbGV0IG4gPSBuZXh0KCkgaW4gZ2V0X3ZhciBuXG4gIHwgR2V0RW52ICAgLT4gbGV0IGUgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW4gZ2V0X2VudiBlIG5cbiAgfCBHZXRNZXRoICAtPiBsZXQgbiA9IG5leHQoKSBpbiBnZXRfbWV0aCBuXG4gIHwgU2V0VmFyICAgLT4gbGV0IG4gPSBuZXh0KCkgaW4gc2V0X3ZhciBuXG4gIHwgQXBwQ29uc3QgLT4gbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gYXBwX2NvbnN0IGYgeFxuICB8IEFwcFZhciAgIC0+IGxldCBmID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCAoKSBpbiBhcHBfdmFyIGYgblxuICB8IEFwcEVudiAgIC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiAgbGV0IGUgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9lbnYgZiBlIG5cbiAgfCBBcHBNZXRoICAtPiBsZXQgZiA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQgKCkgaW4gYXBwX21ldGggZiBuXG4gIHwgQXBwQ29uc3RDb25zdCAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbGV0IHkgPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9jb25zdF9jb25zdCBmIHggeVxuICB8IEFwcENvbnN0VmFyIC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpblxuICAgICAgYXBwX2NvbnN0X3ZhciBmIHggblxuICB8IEFwcENvbnN0RW52IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBsZXQgZSA9IG5leHQgKCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9jb25zdF9lbnYgZiB4IGUgblxuICB8IEFwcENvbnN0TWV0aCAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9jb25zdF9tZXRoIGYgeCBuXG4gIHwgQXBwVmFyQ29uc3QgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluXG4gICAgICBhcHBfdmFyX2NvbnN0IGYgbiB4XG4gIHwgQXBwRW52Q29uc3QgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCBlID0gbmV4dCAoKSBpbiBsZXQgbiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpblxuICAgICAgYXBwX2Vudl9jb25zdCBmIGUgbiB4XG4gIHwgQXBwTWV0aENvbnN0IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpblxuICAgICAgYXBwX21ldGhfY29uc3QgZiBuIHhcbiAgfCBNZXRoQXBwQ29uc3QgLT5cbiAgICAgIGxldCBuID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIG1ldGhfYXBwX2NvbnN0IG4geFxuICB8IE1ldGhBcHBWYXIgLT5cbiAgICAgIGxldCBuID0gbmV4dCgpIGluIGxldCBtID0gbmV4dCgpIGluIG1ldGhfYXBwX3ZhciBuIG1cbiAgfCBNZXRoQXBwRW52IC0+XG4gICAgICBsZXQgbiA9IG5leHQoKSBpbiBsZXQgZSA9IG5leHQoKSBpbiBsZXQgbSA9IG5leHQoKSBpblxuICAgICAgbWV0aF9hcHBfZW52IG4gZSBtXG4gIHwgTWV0aEFwcE1ldGggLT5cbiAgICAgIGxldCBuID0gbmV4dCgpIGluIGxldCBtID0gbmV4dCgpIGluIG1ldGhfYXBwX21ldGggbiBtXG4gIHwgU2VuZENvbnN0IC0+XG4gICAgICBsZXQgbSA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBzZW5kX2NvbnN0IG0geCAobmV3X2NhY2hlIHRhYmxlKVxuICB8IFNlbmRWYXIgLT5cbiAgICAgIGxldCBtID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCAoKSBpbiBzZW5kX3ZhciBtIG4gKG5ld19jYWNoZSB0YWJsZSlcbiAgfCBTZW5kRW52IC0+XG4gICAgICBsZXQgbSA9IG5leHQoKSBpbiBsZXQgZSA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpblxuICAgICAgc2VuZF9lbnYgbSBlIG4gKG5ld19jYWNoZSB0YWJsZSlcbiAgfCBTZW5kTWV0aCAtPlxuICAgICAgbGV0IG0gPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0ICgpIGluIHNlbmRfbWV0aCBtIG4gKG5ld19jYWNoZSB0YWJsZSlcbiAgfCBDbG9zdXJlIF8gYXMgY2xvIC0+IG1hZ2ljIGNsb1xuXG5sZXQgc2V0X21ldGhvZHMgdGFibGUgbWV0aG9kcyA9XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggbWV0aG9kcyBpbiBsZXQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICFpIDwgbGVuIGRvXG4gICAgbGV0IGxhYmVsID0gbWV0aG9kcy4oIWkpIGluIGxldCBjbG8gPSBtZXRob2RfaW1wbCB0YWJsZSBpIG1ldGhvZHMgaW5cbiAgICBzZXRfbWV0aG9kIHRhYmxlIGxhYmVsIGNsbztcbiAgICBpbmNyIGlcbiAgZG9uZVxuXG4oKioqKiBTdGF0aXN0aWNzICoqKiopXG5cbnR5cGUgc3RhdHMgPVxuICB7IGNsYXNzZXM6IGludDsgbWV0aG9kczogaW50OyBpbnN0X3ZhcnM6IGludDsgfVxuXG5sZXQgc3RhdHMgKCkgPVxuICB7IGNsYXNzZXMgPSAhdGFibGVfY291bnQ7XG4gICAgbWV0aG9kcyA9ICFtZXRob2RfY291bnQ7IGluc3RfdmFycyA9ICFpbnN0X3Zhcl9jb3VudDsgfVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHNoYXBlID1cbiAgfCBGdW5jdGlvblxuICB8IExhenlcbiAgfCBDbGFzc1xuICB8IE1vZHVsZSBvZiBzaGFwZSBhcnJheVxuICB8IFZhbHVlIG9mIE9iai50XG5cbmxldCByZWMgaW5pdF9tb2RfZmllbGQgbW9kdSBpIGxvYyBzaGFwZSA9XG4gIGxldCBpbml0ID1cbiAgICBtYXRjaCBzaGFwZSB3aXRoXG4gICAgfCBGdW5jdGlvbiAtPlxuICAgICAgIGxldCByZWMgZm4gKHggOiAnYSkgPVxuICAgICAgICAgbGV0IGZuJyA6ICdhIC0+ICdiID0gT2JqLm9iaiAoT2JqLmZpZWxkIG1vZHUgaSkgaW5cbiAgICAgICAgIGlmIGZuID09IGZuJyB0aGVuXG4gICAgICAgICAgIHJhaXNlIChVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZSBsb2MpXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIGZuJyB4IGluXG4gICAgICAgT2JqLnJlcHIgZm5cbiAgICB8IExhenkgLT5cbiAgICAgICBsZXQgcmVjIGwgPVxuICAgICAgICAgbGF6eSAoXG4gICAgICAgICAgIGxldCBsJyA9IE9iai5vYmogKE9iai5maWVsZCBtb2R1IGkpIGluXG4gICAgICAgICAgIGlmIGwgPT0gbCcgdGhlblxuICAgICAgICAgICAgIHJhaXNlIChVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZSBsb2MpXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBMYXp5LmZvcmNlIGwnKSBpblxuICAgICAgIE9iai5yZXByIGxcbiAgICB8IENsYXNzIC0+XG4gICAgICAgT2JqLnJlcHIgKENhbWxpbnRlcm5hbE9PLmR1bW15X2NsYXNzIGxvYylcbiAgICB8IE1vZHVsZSBjb21wcyAtPlxuICAgICAgIE9iai5yZXByIChpbml0X21vZF9ibG9jayBsb2MgY29tcHMpXG4gICAgfCBWYWx1ZSB2IC0+IHZcbiAgaW5cbiAgT2JqLnNldF9maWVsZCBtb2R1IGkgaW5pdFxuXG5hbmQgaW5pdF9tb2RfYmxvY2sgbG9jIGNvbXBzID1cbiAgbGV0IGxlbmd0aCA9IEFycmF5Lmxlbmd0aCBjb21wcyBpblxuICBsZXQgbW9kdSA9IE9iai5uZXdfYmxvY2sgMCBsZW5ndGggaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCAtIDEgZG9cbiAgICBpbml0X21vZF9maWVsZCBtb2R1IGkgbG9jIGNvbXBzLihpKVxuICBkb25lO1xuICBtb2R1XG5cbmxldCBpbml0X21vZCBsb2Mgc2hhcGUgPVxuICBtYXRjaCBzaGFwZSB3aXRoXG4gIHwgTW9kdWxlIGNvbXBzIC0+XG4gICAgIE9iai5yZXByIChpbml0X21vZF9ibG9jayBsb2MgY29tcHMpXG4gIHwgXyAtPiBmYWlsd2l0aCBcIkNhbWxpbnRlcm5hbE1vZC5pbml0X21vZDogbm90IGEgbW9kdWxlXCJcblxubGV0IHJlYyB1cGRhdGVfbW9kX2ZpZWxkIG1vZHUgaSBzaGFwZSBuID1cbiAgbWF0Y2ggc2hhcGUgd2l0aFxuICB8IEZ1bmN0aW9uIHwgTGF6eSAtPlxuICAgICBPYmouc2V0X2ZpZWxkIG1vZHUgaSBuXG4gIHwgVmFsdWUgXyAtPlxuICAgICAoKSAoKiB0aGUgdmFsdWUgaXMgYWxyZWFkeSB0aGVyZSAqKVxuICB8IENsYXNzIC0+XG4gICAgIGFzc2VydCAoT2JqLnRhZyBuID0gMCAmJiBPYmouc2l6ZSBuID0gNCk7XG4gICAgIGxldCBjbCA9IE9iai5maWVsZCBtb2R1IGkgaW5cbiAgICAgZm9yIGogPSAwIHRvIDMgZG9cbiAgICAgICBPYmouc2V0X2ZpZWxkIGNsIGogKE9iai5maWVsZCBuIGopXG4gICAgIGRvbmVcbiAgfCBNb2R1bGUgY29tcHMgLT5cbiAgICAgdXBkYXRlX21vZF9ibG9jayBjb21wcyAoT2JqLmZpZWxkIG1vZHUgaSkgblxuXG5hbmQgdXBkYXRlX21vZF9ibG9jayBjb21wcyBvIG4gPVxuICBhc3NlcnQgKE9iai50YWcgbiA9IDAgJiYgT2JqLnNpemUgbiA+PSBBcnJheS5sZW5ndGggY29tcHMpO1xuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGNvbXBzIC0gMSBkb1xuICAgIHVwZGF0ZV9tb2RfZmllbGQgbyBpIGNvbXBzLihpKSAoT2JqLmZpZWxkIG4gaSlcbiAgZG9uZVxuXG5sZXQgdXBkYXRlX21vZCBzaGFwZSBvIG4gPVxuICBtYXRjaCBzaGFwZSB3aXRoXG4gIHwgTW9kdWxlIGNvbXBzIC0+XG4gICAgIHVwZGF0ZV9tb2RfYmxvY2sgY29tcHMgbyBuXG4gIHwgXyAtPiBmYWlsd2l0aCBcIkNhbWxpbnRlcm5hbE1vZC51cGRhdGVfbW9kOiBub3QgYSBtb2R1bGVcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5bQEBAb2NhbWwud2FybmluZyBcIi0zXCJdICgqIGlnbm9yZSBkZXByZWNhdGlvbiB3YXJuaW5nIGFib3V0IG1vZHVsZSBTdHJlYW0gKilcblxudHlwZSB0b2tlbiA9XG4gICAgS3dkIG9mIHN0cmluZ1xuICB8IElkZW50IG9mIHN0cmluZ1xuICB8IEludCBvZiBpbnRcbiAgfCBGbG9hdCBvZiBmbG9hdFxuICB8IFN0cmluZyBvZiBzdHJpbmdcbiAgfCBDaGFyIG9mIGNoYXJcblxuKCogVGhlIHN0cmluZyBidWZmZXJpbmcgbWFjaGluZXJ5ICopXG5cbmxldCBpbml0aWFsX2J1ZmZlciA9IEJ5dGVzLmNyZWF0ZSAzMlxuXG5sZXQgYnVmZmVyID0gcmVmIGluaXRpYWxfYnVmZmVyXG5sZXQgYnVmcG9zID0gcmVmIDBcblxubGV0IHJlc2V0X2J1ZmZlciAoKSA9IGJ1ZmZlciA6PSBpbml0aWFsX2J1ZmZlcjsgYnVmcG9zIDo9IDBcblxubGV0IHN0b3JlIGMgPVxuICBpZiAhYnVmcG9zID49IEJ5dGVzLmxlbmd0aCAhYnVmZmVyIHRoZW4gYmVnaW5cbiAgICBsZXQgbmV3YnVmZmVyID0gQnl0ZXMuY3JlYXRlICgyICogIWJ1ZnBvcykgaW5cbiAgICBCeXRlcy5ibGl0ICFidWZmZXIgMCBuZXdidWZmZXIgMCAhYnVmcG9zO1xuICAgIGJ1ZmZlciA6PSBuZXdidWZmZXJcbiAgZW5kO1xuICBCeXRlcy5zZXQgIWJ1ZmZlciAhYnVmcG9zIGM7XG4gIGluY3IgYnVmcG9zXG5cbmxldCBnZXRfc3RyaW5nICgpID1cbiAgbGV0IHMgPSBCeXRlcy5zdWJfc3RyaW5nICFidWZmZXIgMCAhYnVmcG9zIGluIGJ1ZmZlciA6PSBpbml0aWFsX2J1ZmZlcjsgc1xuXG4oKiBUaGUgbGV4ZXIgKilcblxubGV0IG1ha2VfbGV4ZXIga2V5d29yZHMgPVxuICBsZXQga3dkX3RhYmxlID0gSGFzaHRibC5jcmVhdGUgMTcgaW5cbiAgTGlzdC5pdGVyIChmdW4gcyAtPiBIYXNodGJsLmFkZCBrd2RfdGFibGUgcyAoS3dkIHMpKSBrZXl3b3JkcztcbiAgbGV0IGlkZW50X29yX2tleXdvcmQgaWQgPVxuICAgIHRyeSBIYXNodGJsLmZpbmQga3dkX3RhYmxlIGlkIHdpdGhcbiAgICAgIE5vdF9mb3VuZCAtPiBJZGVudCBpZFxuICBhbmQga2V5d29yZF9vcl9lcnJvciBjID1cbiAgICBsZXQgcyA9IFN0cmluZy5tYWtlIDEgYyBpblxuICAgIHRyeSBIYXNodGJsLmZpbmQga3dkX3RhYmxlIHMgd2l0aFxuICAgICAgTm90X2ZvdW5kIC0+IHJhaXNlIChTdHJlYW0uRXJyb3IgKFwiSWxsZWdhbCBjaGFyYWN0ZXIgXCIgXiBzKSlcbiAgaW5cbiAgbGV0IHJlYyBuZXh0X3Rva2VuIChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgKCcgJyB8ICdcXDAxMCcgfCAnXFwwMTMnIHwgJ1xcMDA5JyB8ICdcXDAyNicgfCAnXFwwMTInKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IG5leHRfdG9rZW4gc3RybV9fXG4gICAgfCBTb21lICgnQScuLidaJyB8ICdhJy4uJ3onIHwgJ18nIHwgJ1xcMTkyJy4uJ1xcMjU1JyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgIGxldCBzID0gc3RybV9fIGluIHJlc2V0X2J1ZmZlciAoKTsgc3RvcmUgYzsgaWRlbnQgc1xuICAgIHwgU29tZVxuICAgICAgICAoJyEnIHwgJyUnIHwgJyYnIHwgJyQnIHwgJyMnIHwgJysnIHwgJy8nIHwgJzonIHwgJzwnIHwgJz0nIHwgJz4nIHxcbiAgICAgICAgICc/JyB8ICdAJyB8ICdcXFxcJyB8ICd+JyB8ICdeJyB8ICd8JyB8ICcqJyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgIGxldCBzID0gc3RybV9fIGluIHJlc2V0X2J1ZmZlciAoKTsgc3RvcmUgYzsgaWRlbnQyIHNcbiAgICB8IFNvbWUgKCcwJy4uJzknIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgbGV0IHMgPSBzdHJtX18gaW4gcmVzZXRfYnVmZmVyICgpOyBzdG9yZSBjOyBudW1iZXIgc1xuICAgIHwgU29tZSAnXFwnJyAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgIGxldCBjID1cbiAgICAgICAgICB0cnkgY2hhciBzdHJtX18gd2l0aFxuICAgICAgICAgICAgU3RyZWFtLkZhaWx1cmUgLT4gcmFpc2UgKFN0cmVhbS5FcnJvciBcIlwiKVxuICAgICAgICBpblxuICAgICAgICBiZWdpbiBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgICAgIFNvbWUgJ1xcJycgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBTb21lIChDaGFyIGMpXG4gICAgICAgIHwgXyAtPiByYWlzZSAoU3RyZWFtLkVycm9yIFwiXCIpXG4gICAgICAgIGVuZFxuICAgIHwgU29tZSAnXFxcIicgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICBsZXQgcyA9IHN0cm1fXyBpbiByZXNldF9idWZmZXIgKCk7IFNvbWUgKFN0cmluZyAoc3RyaW5nIHMpKVxuICAgIHwgU29tZSAnLScgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBuZWdfbnVtYmVyIHN0cm1fX1xuICAgIHwgU29tZSAnKCcgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBtYXliZV9jb21tZW50IHN0cm1fX1xuICAgIHwgU29tZSBjIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgU29tZSAoa2V5d29yZF9vcl9lcnJvciBjKVxuICAgIHwgXyAtPiBOb25lXG4gIGFuZCBpZGVudCAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lXG4gICAgICAgICgnQScuLidaJyB8ICdhJy4uJ3onIHwgJ1xcMTkyJy4uJ1xcMjU1JyB8ICcwJy4uJzknIHwgJ18nIHwgJ1xcJycgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSBjOyBpZGVudCBzXG4gICAgfCBfIC0+IFNvbWUgKGlkZW50X29yX2tleXdvcmQgKGdldF9zdHJpbmcgKCkpKVxuICBhbmQgaWRlbnQyIChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWVcbiAgICAgICAgKCchJyB8ICclJyB8ICcmJyB8ICckJyB8ICcjJyB8ICcrJyB8ICctJyB8ICcvJyB8ICc6JyB8ICc8JyB8ICc9JyB8XG4gICAgICAgICAnPicgfCAnPycgfCAnQCcgfCAnXFxcXCcgfCAnficgfCAnXicgfCAnfCcgfCAnKicgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSBjOyBpZGVudDIgc1xuICAgIHwgXyAtPiBTb21lIChpZGVudF9vcl9rZXl3b3JkIChnZXRfc3RyaW5nICgpKSlcbiAgYW5kIG5lZ19udW1iZXIgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAoJzAnLi4nOScgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICBsZXQgcyA9IHN0cm1fXyBpbiByZXNldF9idWZmZXIgKCk7IHN0b3JlICctJzsgc3RvcmUgYzsgbnVtYmVyIHNcbiAgICB8IF8gLT4gbGV0IHMgPSBzdHJtX18gaW4gcmVzZXRfYnVmZmVyICgpOyBzdG9yZSAnLSc7IGlkZW50MiBzXG4gIGFuZCBudW1iZXIgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAoJzAnLi4nOScgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSBjOyBudW1iZXIgc1xuICAgIHwgU29tZSAnLicgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSAnLic7IGRlY2ltYWxfcGFydCBzXG4gICAgfCBTb21lICgnZScgfCAnRScpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgJ0UnOyBleHBvbmVudF9wYXJ0IHNcbiAgICB8IF8gLT4gU29tZSAoSW50IChpbnRfb2Zfc3RyaW5nIChnZXRfc3RyaW5nICgpKSkpXG4gIGFuZCBkZWNpbWFsX3BhcnQgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAoJzAnLi4nOScgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSBjOyBkZWNpbWFsX3BhcnQgc1xuICAgIHwgU29tZSAoJ2UnIHwgJ0UnKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlICdFJzsgZXhwb25lbnRfcGFydCBzXG4gICAgfCBfIC0+IFNvbWUgKEZsb2F0IChmbG9hdF9vZl9zdHJpbmcgKGdldF9zdHJpbmcgKCkpKSlcbiAgYW5kIGV4cG9uZW50X3BhcnQgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAoJysnIHwgJy0nIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgYzsgZW5kX2V4cG9uZW50X3BhcnQgc1xuICAgIHwgXyAtPiBlbmRfZXhwb25lbnRfcGFydCBzdHJtX19cbiAgYW5kIGVuZF9leHBvbmVudF9wYXJ0IChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgKCcwJy4uJzknIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgYzsgZW5kX2V4cG9uZW50X3BhcnQgc1xuICAgIHwgXyAtPiBTb21lIChGbG9hdCAoZmxvYXRfb2Zfc3RyaW5nIChnZXRfc3RyaW5nICgpKSkpXG4gIGFuZCBzdHJpbmcgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAnXFxcIicgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBnZXRfc3RyaW5nICgpXG4gICAgfCBTb21lICdcXFxcJyAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgIGxldCBjID1cbiAgICAgICAgICB0cnkgZXNjYXBlIHN0cm1fXyB3aXRoXG4gICAgICAgICAgICBTdHJlYW0uRmFpbHVyZSAtPiByYWlzZSAoU3RyZWFtLkVycm9yIFwiXCIpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBzID0gc3RybV9fIGluIHN0b3JlIGM7IHN0cmluZyBzXG4gICAgfCBTb21lIGMgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSBjOyBzdHJpbmcgc1xuICAgIHwgXyAtPiByYWlzZSBTdHJlYW0uRmFpbHVyZVxuICBhbmQgY2hhciAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICdcXFxcJyAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgIGJlZ2luIHRyeSBlc2NhcGUgc3RybV9fIHdpdGhcbiAgICAgICAgICBTdHJlYW0uRmFpbHVyZSAtPiByYWlzZSAoU3RyZWFtLkVycm9yIFwiXCIpXG4gICAgICAgIGVuZFxuICAgIHwgU29tZSBjIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgY1xuICAgIHwgXyAtPiByYWlzZSBTdHJlYW0uRmFpbHVyZVxuICBhbmQgZXNjYXBlIChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgJ24nIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgJ1xcbidcbiAgICB8IFNvbWUgJ3InIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgJ1xccidcbiAgICB8IFNvbWUgJ3QnIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgJ1xcdCdcbiAgICB8IFNvbWUgKCcwJy4uJzknIGFzIGMxKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgIGJlZ2luIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICAgICAgU29tZSAoJzAnLi4nOScgYXMgYzIpIC0+XG4gICAgICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgICAgICAgICBTb21lICgnMCcuLic5JyBhcyBjMykgLT5cbiAgICAgICAgICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgICAgICAgICAgQ2hhci5jaHJcbiAgICAgICAgICAgICAgICAgICgoQ2hhci5jb2RlIGMxIC0gNDgpICogMTAwICsgKENoYXIuY29kZSBjMiAtIDQ4KSAqIDEwICtcbiAgICAgICAgICAgICAgICAgICAgIChDaGFyLmNvZGUgYzMgLSA0OCkpXG4gICAgICAgICAgICB8IF8gLT4gcmFpc2UgKFN0cmVhbS5FcnJvciBcIlwiKVxuICAgICAgICAgICAgZW5kXG4gICAgICAgIHwgXyAtPiByYWlzZSAoU3RyZWFtLkVycm9yIFwiXCIpXG4gICAgICAgIGVuZFxuICAgIHwgU29tZSBjIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgY1xuICAgIHwgXyAtPiByYWlzZSBTdHJlYW0uRmFpbHVyZVxuICBhbmQgbWF5YmVfY29tbWVudCAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICcqJyAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIGNvbW1lbnQgczsgbmV4dF90b2tlbiBzXG4gICAgfCBfIC0+IFNvbWUgKGtleXdvcmRfb3JfZXJyb3IgJygnKVxuICBhbmQgY29tbWVudCAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICcoJyAtPiBTdHJlYW0uanVuayBzdHJtX187IG1heWJlX25lc3RlZF9jb21tZW50IHN0cm1fX1xuICAgIHwgU29tZSAnKicgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBtYXliZV9lbmRfY29tbWVudCBzdHJtX19cbiAgICB8IFNvbWUgXyAtPiBTdHJlYW0uanVuayBzdHJtX187IGNvbW1lbnQgc3RybV9fXG4gICAgfCBfIC0+IHJhaXNlIFN0cmVhbS5GYWlsdXJlXG4gIGFuZCBtYXliZV9uZXN0ZWRfY29tbWVudCAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICcqJyAtPiBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIGNvbW1lbnQgczsgY29tbWVudCBzXG4gICAgfCBTb21lIF8gLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBjb21tZW50IHN0cm1fX1xuICAgIHwgXyAtPiByYWlzZSBTdHJlYW0uRmFpbHVyZVxuICBhbmQgbWF5YmVfZW5kX2NvbW1lbnQgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAnKScgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyAoKVxuICAgIHwgU29tZSAnKicgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBtYXliZV9lbmRfY29tbWVudCBzdHJtX19cbiAgICB8IFNvbWUgXyAtPiBTdHJlYW0uanVuayBzdHJtX187IGNvbW1lbnQgc3RybV9fXG4gICAgfCBfIC0+IHJhaXNlIFN0cmVhbS5GYWlsdXJlXG4gIGluXG4gIGZ1biBpbnB1dCAtPiBTdHJlYW0uZnJvbSAoZnVuIF9jb3VudCAtPiBuZXh0X3Rva2VuIGlucHV0KVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5bQEBAb2NhbWwud2FybmluZyBcIi0zMlwiXVxuXG5tb2R1bGUgdHlwZSBTZWVkZWRTID0gc2lnXG5cbiAgdHlwZSBrZXlcbiAgdHlwZSAhJ2EgdFxuICB2YWwgY3JlYXRlIDogP3JhbmRvbSAoKnRod2FydCB0b29scy9zeW5jX3N0ZGxpYl9kb2NzKikgOiBib29sIC0+IGludCAtPiAnYSB0XG4gIHZhbCBjbGVhciA6ICdhIHQgLT4gdW5pdFxuICB2YWwgcmVzZXQgOiAnYSB0IC0+IHVuaXRcbiAgdmFsIGNvcHkgOiAnYSB0IC0+ICdhIHRcbiAgdmFsIGFkZCA6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHJlbW92ZSA6ICdhIHQgLT4ga2V5IC0+IHVuaXRcbiAgdmFsIGZpbmQgOiAnYSB0IC0+IGtleSAtPiAnYVxuICB2YWwgZmluZF9vcHQgOiAnYSB0IC0+IGtleSAtPiAnYSBvcHRpb25cbiAgdmFsIGZpbmRfYWxsIDogJ2EgdCAtPiBrZXkgLT4gJ2EgbGlzdFxuICB2YWwgcmVwbGFjZSA6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgdmFsIG1lbSA6ICdhIHQgLT4ga2V5IC0+IGJvb2xcbiAgdmFsIGl0ZXIgOiAoa2V5IC0+ICdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuICAgIFtAQGFsZXJ0IG9sZF9lcGhlbWVyb25fYXBpIFwiVGhpcyBmdW5jdGlvbiB3b24ndCBiZSBhdmFpbGFibGUgaW4gNS4wXCJdXG4gIHZhbCBmaWx0ZXJfbWFwX2lucGxhY2UgOiAoa2V5IC0+ICdhIC0+ICdhIG9wdGlvbikgLT4gJ2EgdCAtPiB1bml0XG4gICAgW0BAYWxlcnQgb2xkX2VwaGVtZXJvbl9hcGkgXCJUaGlzIGZ1bmN0aW9uIHdvbid0IGJlIGF2YWlsYWJsZSBpbiA1LjBcIl1cbiAgdmFsIGZvbGQgOiAoa2V5IC0+ICdhIC0+ICdiIC0+ICdiKSAtPiAnYSB0IC0+ICdiIC0+ICdiXG4gICAgW0BAYWxlcnQgb2xkX2VwaGVtZXJvbl9hcGkgXCJUaGlzIGZ1bmN0aW9uIHdvbid0IGJlIGF2YWlsYWJsZSBpbiA1LjBcIl1cbiAgdmFsIGxlbmd0aCA6ICdhIHQgLT4gaW50XG4gIHZhbCBzdGF0cyA6ICdhIHQgLT4gSGFzaHRibC5zdGF0aXN0aWNzXG4gIHZhbCB0b19zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICBbQEBhbGVydCBvbGRfZXBoZW1lcm9uX2FwaSBcIlRoaXMgZnVuY3Rpb24gd29uJ3QgYmUgYXZhaWxhYmxlIGluIDUuMFwiXVxuICB2YWwgdG9fc2VxX2tleXMgOiBfIHQgLT4ga2V5IFNlcS50XG4gICAgW0BAYWxlcnQgb2xkX2VwaGVtZXJvbl9hcGkgXCJUaGlzIGZ1bmN0aW9uIHdvbid0IGJlIGF2YWlsYWJsZSBpbiA1LjBcIl1cbiAgdmFsIHRvX3NlcV92YWx1ZXMgOiAnYSB0IC0+ICdhIFNlcS50XG4gICAgW0BAYWxlcnQgb2xkX2VwaGVtZXJvbl9hcGkgXCJUaGlzIGZ1bmN0aW9uIHdvbid0IGJlIGF2YWlsYWJsZSBpbiA1LjBcIl1cbiAgdmFsIGFkZF9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICB2YWwgcmVwbGFjZV9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICB2YWwgb2Zfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0XG4gIHZhbCBjbGVhbjogJ2EgdCAtPiB1bml0XG4gIHZhbCBzdGF0c19hbGl2ZTogJ2EgdCAtPiBIYXNodGJsLnN0YXRpc3RpY3NcbiAgICAoKiogc2FtZSBhcyB7IXN0YXRzfSBidXQgb25seSBjb3VudCB0aGUgYWxpdmUgYmluZGluZ3MgKilcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG5cbiAgdHlwZSBrZXlcbiAgdHlwZSAhJ2EgdFxuICB2YWwgY3JlYXRlIDogaW50IC0+ICdhIHRcbiAgdmFsIGNsZWFyIDogJ2EgdCAtPiB1bml0XG4gIHZhbCByZXNldCA6ICdhIHQgLT4gdW5pdFxuICB2YWwgY29weSA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgYWRkIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICB2YWwgcmVtb3ZlIDogJ2EgdCAtPiBrZXkgLT4gdW5pdFxuICB2YWwgZmluZCA6ICdhIHQgLT4ga2V5IC0+ICdhXG4gIHZhbCBmaW5kX29wdCA6ICdhIHQgLT4ga2V5IC0+ICdhIG9wdGlvblxuICB2YWwgZmluZF9hbGwgOiAnYSB0IC0+IGtleSAtPiAnYSBsaXN0XG4gIHZhbCByZXBsYWNlIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICB2YWwgbWVtIDogJ2EgdCAtPiBrZXkgLT4gYm9vbFxuICB2YWwgaXRlciA6IChrZXkgLT4gJ2EgLT4gdW5pdCkgLT4gJ2EgdCAtPiB1bml0XG4gICAgW0BAYWxlcnQgb2xkX2VwaGVtZXJvbl9hcGkgXCJUaGlzIGZ1bmN0aW9uIHdvbid0IGJlIGF2YWlsYWJsZSBpbiA1LjBcIl1cbiAgdmFsIGZpbHRlcl9tYXBfaW5wbGFjZSA6IChrZXkgLT4gJ2EgLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+IHVuaXRcbiAgICBbQEBhbGVydCBvbGRfZXBoZW1lcm9uX2FwaSBcIlRoaXMgZnVuY3Rpb24gd29uJ3QgYmUgYXZhaWxhYmxlIGluIDUuMFwiXVxuICB2YWwgZm9sZCA6IChrZXkgLT4gJ2EgLT4gJ2IgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgLT4gJ2JcbiAgICBbQEBhbGVydCBvbGRfZXBoZW1lcm9uX2FwaSBcIlRoaXMgZnVuY3Rpb24gd29uJ3QgYmUgYXZhaWxhYmxlIGluIDUuMFwiXVxuICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcbiAgdmFsIHN0YXRzIDogJ2EgdCAtPiBIYXNodGJsLnN0YXRpc3RpY3NcbiAgdmFsIHRvX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIFtAQGFsZXJ0IG9sZF9lcGhlbWVyb25fYXBpIFwiVGhpcyBmdW5jdGlvbiB3b24ndCBiZSBhdmFpbGFibGUgaW4gNS4wXCJdXG4gIHZhbCB0b19zZXFfa2V5cyA6IF8gdCAtPiBrZXkgU2VxLnRcbiAgICBbQEBhbGVydCBvbGRfZXBoZW1lcm9uX2FwaSBcIlRoaXMgZnVuY3Rpb24gd29uJ3QgYmUgYXZhaWxhYmxlIGluIDUuMFwiXVxuICB2YWwgdG9fc2VxX3ZhbHVlcyA6ICdhIHQgLT4gJ2EgU2VxLnRcbiAgICBbQEBhbGVydCBvbGRfZXBoZW1lcm9uX2FwaSBcIlRoaXMgZnVuY3Rpb24gd29uJ3QgYmUgYXZhaWxhYmxlIGluIDUuMFwiXVxuICB2YWwgYWRkX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gIHZhbCByZXBsYWNlX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgdmFsIGNsZWFuOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHN0YXRzX2FsaXZlOiAnYSB0IC0+IEhhc2h0Ymwuc3RhdGlzdGljc1xuICAgICgqKiBzYW1lIGFzIHshc3RhdHN9IGJ1dCBvbmx5IGNvdW50IHRoZSBhbGl2ZSBiaW5kaW5ncyAqKVxuZW5kXG5cbm1vZHVsZSBHZW5IYXNoVGFibGUgPSBzdHJ1Y3RcblxuICB0eXBlIGVxdWFsID1cbiAgfCBFVHJ1ZSB8IEVGYWxzZVxuICB8IEVEZWFkICgqKiB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IgcmVjbGFpbWVkIHRoZSBkYXRhICopXG5cbiAgbW9kdWxlIE1ha2VTZWVkZWQoSDogc2lnXG4gICAgdHlwZSB0XG4gICAgdHlwZSAnYSBjb250YWluZXJcbiAgICB2YWwgY3JlYXRlOiB0IC0+ICdhIC0+ICdhIGNvbnRhaW5lclxuICAgIHZhbCBoYXNoOiBpbnQgLT4gdCAtPiBpbnRcbiAgICB2YWwgZXF1YWw6ICdhIGNvbnRhaW5lciAtPiB0IC0+IGVxdWFsXG4gICAgdmFsIGdldF9kYXRhOiAnYSBjb250YWluZXIgLT4gJ2Egb3B0aW9uXG4gICAgdmFsIGdldF9rZXk6ICdhIGNvbnRhaW5lciAtPiB0IG9wdGlvblxuICAgIHZhbCBzZXRfa2V5X2RhdGE6ICdhIGNvbnRhaW5lciAtPiB0IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgY2hlY2tfa2V5OiAnYSBjb250YWluZXIgLT4gYm9vbFxuICBlbmQpIDogU2VlZGVkUyB3aXRoIHR5cGUga2V5ID0gSC50XG4gID0gc3RydWN0XG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyBtdXRhYmxlIHNpemU6IGludDsgICAgICAgICAgICAgICAgICAoKiBudW1iZXIgb2YgZW50cmllcyAqKVxuICAgICAgICBtdXRhYmxlIGRhdGE6ICdhIGJ1Y2tldGxpc3QgYXJyYXk7ICAoKiB0aGUgYnVja2V0cyAqKVxuICAgICAgICBzZWVkOiBpbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBmb3IgcmFuZG9taXphdGlvbiAqKVxuICAgICAgICBpbml0aWFsX3NpemU6IGludDsgICAgICAgICAgICAgICAgICAoKiBpbml0aWFsIGFycmF5IHNpemUgKilcbiAgICAgIH1cblxuICAgIGFuZCAnYSBidWNrZXRsaXN0ID1cbiAgICB8IEVtcHR5XG4gICAgfCBDb25zIG9mIGludCAoKiBoYXNoIG9mIHRoZSBrZXkgKikgKiAnYSBILmNvbnRhaW5lciAqICdhIGJ1Y2tldGxpc3RcblxuICAgICgqKiB0aGUgaGFzaCBvZiB0aGUga2V5IGlzIGtlcHQgaW4gb3JkZXIgdG8gdGVzdCB0aGUgZXF1YWxpdHkgb2YgdGhlIGhhc2hcbiAgICAgIGJlZm9yZSB0aGUga2V5LiBTYW1lIHJlYXNvbiBhcyBmb3IgV2Vhay5NYWtlICopXG5cbiAgICB0eXBlIGtleSA9IEgudFxuXG4gICAgbGV0IHJlYyBwb3dlcl8yX2Fib3ZlIHggbiA9XG4gICAgICBpZiB4ID49IG4gdGhlbiB4XG4gICAgICBlbHNlIGlmIHggKiAyID4gU3lzLm1heF9hcnJheV9sZW5ndGggdGhlbiB4XG4gICAgICBlbHNlIHBvd2VyXzJfYWJvdmUgKHggKiAyKSBuXG5cbiAgICBsZXQgcHJuZyA9IGxhenkgKFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdCgpKVxuXG4gICAgbGV0IGNyZWF0ZSA/KHJhbmRvbSA9IChIYXNodGJsLmlzX3JhbmRvbWl6ZWQgKCkpKSBpbml0aWFsX3NpemUgPVxuICAgICAgbGV0IHMgPSBwb3dlcl8yX2Fib3ZlIDE2IGluaXRpYWxfc2l6ZSBpblxuICAgICAgbGV0IHNlZWQgPSBpZiByYW5kb20gdGhlbiBSYW5kb20uU3RhdGUuYml0cyAoTGF6eS5mb3JjZSBwcm5nKSBlbHNlIDAgaW5cbiAgICAgIHsgaW5pdGlhbF9zaXplID0gczsgc2l6ZSA9IDA7IHNlZWQgPSBzZWVkOyBkYXRhID0gQXJyYXkubWFrZSBzIEVtcHR5IH1cblxuICAgIGxldCBjbGVhciBoID1cbiAgICAgIGguc2l6ZSA8LSAwO1xuICAgICAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBoLmRhdGEgaW5cbiAgICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgIGguZGF0YS4oaSkgPC0gRW1wdHlcbiAgICAgIGRvbmVcblxuICAgIGxldCByZXNldCBoID1cbiAgICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggaC5kYXRhIGluXG4gICAgICBpZiBsZW4gPSBoLmluaXRpYWxfc2l6ZSB0aGVuXG4gICAgICAgIGNsZWFyIGhcbiAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgaC5zaXplIDwtIDA7XG4gICAgICAgIGguZGF0YSA8LSBBcnJheS5tYWtlIGguaW5pdGlhbF9zaXplIEVtcHR5XG4gICAgICBlbmRcblxuICAgIGxldCBjb3B5IGggPSB7IGggd2l0aCBkYXRhID0gQXJyYXkuY29weSBoLmRhdGEgfVxuXG4gICAgbGV0IGtleV9pbmRleCBoIGhrZXkgPVxuICAgICAgaGtleSBsYW5kIChBcnJheS5sZW5ndGggaC5kYXRhIC0gMSlcblxuICAgIGxldCBjbGVhbiBoID1cbiAgICAgIGxldCByZWMgZG9fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgICAgRW1wdHlcbiAgICAgICAgfCBDb25zKF8sIGMsIHJlc3QpIHdoZW4gbm90IChILmNoZWNrX2tleSBjKSAtPlxuICAgICAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgICAgICBkb19idWNrZXQgcmVzdFxuICAgICAgICB8IENvbnMoaGtleSwgYywgcmVzdCkgLT5cbiAgICAgICAgICAgIENvbnMoaGtleSwgYywgZG9fYnVja2V0IHJlc3QpXG4gICAgICBpblxuICAgICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgICAgZC4oaSkgPC0gZG9fYnVja2V0IGQuKGkpXG4gICAgICBkb25lXG5cbiAgICAoKiogcmVzaXplIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIHRvIGRvIHRoZSBhY3R1YWwgY2xlYW5pbmcgb2YgZGVhZCBrZXlzXG4gICAgICAgIChyZW1vdmUgZG9lcyBpdCBqdXN0IGJlY2F1c2UgaXQgY291bGQpLlxuXG4gICAgICAgIFRoZSBnb2FsIGlzIHRvOlxuXG4gICAgICAgIC0gbm90IHJlc2l6ZSBpbmZpbml0ZWx5IHdoZW4gdGhlIGFjdHVhbCBudW1iZXIgb2YgYWxpdmUga2V5cyBpc1xuICAgICAgICBib3VuZGVkIGJ1dCBrZXlzIGFyZSBjb250aW51b3VzbHkgYWRkZWQuIFRoYXQgd291bGQgaGFwcGVuIGlmXG4gICAgICAgIHRoaXMgZnVuY3Rpb24gYWx3YXlzIHJlc2l6ZS5cbiAgICAgICAgLSBub3QgY2FsbCB0aGlzIGZ1bmN0aW9uIGFmdGVyIGVhY2ggYWRkaXRpb24sIHRoYXQgd291bGQgaGFwcGVuIGlmIHRoaXNcbiAgICAgICAgZnVuY3Rpb24gZG9uJ3QgcmVzaXplIGV2ZW4gd2hlbiBvbmx5IG9uZSBrZXkgaXMgZGVhZC5cblxuICAgICAgICBTbyB0aGUgYWxnb3JpdGhtOlxuICAgICAgICAtIGNsZWFuIHRoZSBrZXlzIGJlZm9yZSByZXNpemluZ1xuICAgICAgICAtIGlmIHRoZSBudW1iZXIgb2YgcmVtYWluaW5nIGtleXMgaXMgbGVzcyB0aGFuIGhhbGYgdGhlIHNpemUgb2YgdGhlXG4gICAgICAgIGFycmF5LCBkb24ndCByZXNpemUuXG4gICAgICAgIC0gaWYgaXQgaXMgbW9yZSwgcmVzaXplLlxuXG4gICAgICAgIFRoZSBzZWNvbmQgcHJvYmxlbSByZW1haW5zIGlmIHRoZSB0YWJsZSByZWFjaGVzIHshU3lzLm1heF9hcnJheV9sZW5ndGh9LlxuXG4gICAgKilcbiAgICBsZXQgcmVzaXplIGggPVxuICAgICAgbGV0IG9kYXRhID0gaC5kYXRhIGluXG4gICAgICBsZXQgb3NpemUgPSBBcnJheS5sZW5ndGggb2RhdGEgaW5cbiAgICAgIGxldCBuc2l6ZSA9IG9zaXplICogMiBpblxuICAgICAgY2xlYW4gaDtcbiAgICAgIGlmIG5zaXplIDwgU3lzLm1heF9hcnJheV9sZW5ndGggJiYgaC5zaXplID49IG9zaXplIGxzciAxIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IG5kYXRhID0gQXJyYXkubWFrZSBuc2l6ZSBFbXB0eSBpblxuICAgICAgICBoLmRhdGEgPC0gbmRhdGE7ICAgICAgICgqIHNvIHRoYXQga2V5X2luZGV4IHNlZXMgdGhlIG5ldyBidWNrZXQgY291bnQgKilcbiAgICAgICAgbGV0IHJlYyBpbnNlcnRfYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgICAgIEVtcHR5IC0+ICgpXG4gICAgICAgICAgfCBDb25zKGhrZXksIGRhdGEsIHJlc3QpIC0+XG4gICAgICAgICAgICAgIGluc2VydF9idWNrZXQgcmVzdDsgKCogcHJlc2VydmUgb3JpZ2luYWwgb3JkZXIgb2YgZWxlbWVudHMgKilcbiAgICAgICAgICAgICAgbGV0IG5pZHggPSBrZXlfaW5kZXggaCBoa2V5IGluXG4gICAgICAgICAgICAgIG5kYXRhLihuaWR4KSA8LSBDb25zKGhrZXksIGRhdGEsIG5kYXRhLihuaWR4KSkgaW5cbiAgICAgICAgZm9yIGkgPSAwIHRvIG9zaXplIC0gMSBkb1xuICAgICAgICAgIGluc2VydF9idWNrZXQgb2RhdGEuKGkpXG4gICAgICAgIGRvbmVcbiAgICAgIGVuZFxuXG4gICAgbGV0IGFkZCBoIGtleSBpbmZvID1cbiAgICAgIGxldCBoa2V5ID0gSC5oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGggaGtleSBpblxuICAgICAgbGV0IGNvbnRhaW5lciA9IEguY3JlYXRlIGtleSBpbmZvIGluXG4gICAgICBsZXQgYnVja2V0ID0gQ29ucyhoa2V5LCBjb250YWluZXIsIGguZGF0YS4oaSkpIGluXG4gICAgICBoLmRhdGEuKGkpIDwtIGJ1Y2tldDtcbiAgICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBoXG5cbiAgICBsZXQgcmVtb3ZlIGgga2V5ID1cbiAgICAgIGxldCBoa2V5ID0gSC5oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCByZWMgcmVtb3ZlX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICAgICAgfCBDb25zKGhrLCBjLCBuZXh0KSB3aGVuIGhrZXkgPSBoayAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgICB8IEVUcnVlIC0+IGguc2l6ZSA8LSBoLnNpemUgLSAxOyBuZXh0XG4gICAgICAgICAgICB8IEVGYWxzZSAtPiBDb25zKGhrLCBjLCByZW1vdmVfYnVja2V0IG5leHQpXG4gICAgICAgICAgICB8IEVEZWFkIC0+XG4gICAgICAgICAgICAgICAgKCogVGhlIGRlYWQga2V5IGlzIGF1dG9tYXRpY2FsbHkgcmVtb3ZlZC4gSXQgaXMgYWNjZXB0YWJsZVxuICAgICAgICAgICAgICAgICAgICBmb3IgdGhpcyBmdW5jdGlvbiBzaW5jZSBpdCBhbHJlYWR5IHJlbW92ZXMgYSBiaW5kaW5nICopXG4gICAgICAgICAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgICAgICAgICAgcmVtb3ZlX2J1Y2tldCBuZXh0XG4gICAgICAgICAgICBlbmRcbiAgICAgICAgfCBDb25zKGhrLGMsbmV4dCkgLT4gQ29ucyhoaywgYywgcmVtb3ZlX2J1Y2tldCBuZXh0KSBpblxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBoa2V5IGluXG4gICAgICBoLmRhdGEuKGkpIDwtIHJlbW92ZV9idWNrZXQgaC5kYXRhLihpKVxuXG4gICAgKCoqIHshZmluZH0gZG9uJ3QgcmVtb3ZlIGRlYWQga2V5cyBiZWNhdXNlIGl0IHdvdWxkIGJlIHN1cnByaXNpbmcgZm9yXG4gICAgICAgIHRoZSB1c2VyIHRoYXQgYSByZWFkLW9ubHkgZnVuY3Rpb24gbXV0YXRlcyB0aGUgc3RhdGUgKGVnLiBjb25jdXJyZW50XG4gICAgICAgIGFjY2VzcykuIFNhbWUgZm9yIHshaXRlcn0sIHshZm9sZH0sIHshbWVtfS5cbiAgICAqKVxuICAgIGxldCByZWMgZmluZF9yZWMga2V5IGhrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBDb25zKGhrLCBjLCByZXN0KSB3aGVuIGhrZXkgPSBoayAgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICB8IEVUcnVlIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgKCogVGhpcyBjYXNlIGlzIG5vdCBpbXBvc3NpYmxlIGJlY2F1c2UgdGhlIGdjIGNhbiBydW4gYmV0d2VlblxuICAgICAgICAgICAgICAgICAgICAgIEguZXF1YWwgYW5kIEguZ2V0X2RhdGEgKilcbiAgICAgICAgICAgICAgICAgIGZpbmRfcmVjIGtleSBoa2V5IHJlc3RcbiAgICAgICAgICAgICAgfCBTb21lIGQgLT4gZFxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICB8IEVGYWxzZSAtPiBmaW5kX3JlYyBrZXkgaGtleSByZXN0XG4gICAgICAgICAgfCBFRGVhZCAtPlxuICAgICAgICAgICAgICBmaW5kX3JlYyBrZXkgaGtleSByZXN0XG4gICAgICAgICAgZW5kXG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT5cbiAgICAgICAgICBmaW5kX3JlYyBrZXkgaGtleSByZXN0XG5cbiAgICBsZXQgZmluZCBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICAoKiBUT0RPIGlubGluZSAzIGl0ZXJhdGlvbnMgKilcbiAgICAgIGZpbmRfcmVjIGtleSBoa2V5IChoLmRhdGEuKGtleV9pbmRleCBoIGhrZXkpKVxuXG4gICAgbGV0IHJlYyBmaW5kX3JlY19vcHQga2V5IGhrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgQ29ucyhoaywgYywgcmVzdCkgd2hlbiBoa2V5ID0gaGsgIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgfCBFVHJ1ZSAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBILmdldF9kYXRhIGMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICgqIFRoaXMgY2FzZSBpcyBub3QgaW1wb3NzaWJsZSBiZWNhdXNlIHRoZSBnYyBjYW4gcnVuIGJldHdlZW5cbiAgICAgICAgICAgICAgICAgICAgICBILmVxdWFsIGFuZCBILmdldF9kYXRhICopXG4gICAgICAgICAgICAgICAgICBmaW5kX3JlY19vcHQga2V5IGhrZXkgcmVzdFxuICAgICAgICAgICAgICB8IFNvbWUgXyBhcyBkIC0+IGRcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgfCBFRmFsc2UgLT4gZmluZF9yZWNfb3B0IGtleSBoa2V5IHJlc3RcbiAgICAgICAgICB8IEVEZWFkIC0+XG4gICAgICAgICAgICAgIGZpbmRfcmVjX29wdCBrZXkgaGtleSByZXN0XG4gICAgICAgICAgZW5kXG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT5cbiAgICAgICAgICBmaW5kX3JlY19vcHQga2V5IGhrZXkgcmVzdFxuXG4gICAgbGV0IGZpbmRfb3B0IGgga2V5ID1cbiAgICAgIGxldCBoa2V5ID0gSC5oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgICgqIFRPRE8gaW5saW5lIDMgaXRlcmF0aW9ucyAqKVxuICAgICAgZmluZF9yZWNfb3B0IGtleSBoa2V5IChoLmRhdGEuKGtleV9pbmRleCBoIGhrZXkpKVxuXG4gICAgbGV0IGZpbmRfYWxsIGgga2V5ID1cbiAgICAgIGxldCBoa2V5ID0gSC5oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCByZWMgZmluZF9pbl9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBbXVxuICAgICAgfCBDb25zKGhrLCBjLCByZXN0KSB3aGVuIGhrZXkgPSBoayAgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICB8IEVUcnVlIC0+IGJlZ2luIG1hdGNoIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgZmluZF9pbl9idWNrZXQgcmVzdFxuICAgICAgICAgICAgICB8IFNvbWUgZCAtPiBkOjpmaW5kX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgICBlbmRcbiAgICAgICAgICB8IEVGYWxzZSAtPiBmaW5kX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgfCBFRGVhZCAtPlxuICAgICAgICAgICAgICBmaW5kX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgZW5kXG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT5cbiAgICAgICAgICBmaW5kX2luX2J1Y2tldCByZXN0IGluXG4gICAgICBmaW5kX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGhrZXkpXG5cblxuICAgIGxldCByZXBsYWNlIGgga2V5IGluZm8gPVxuICAgICAgbGV0IGhrZXkgPSBILmhhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyByZXBsYWNlX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgIHwgQ29ucyhoaywgYywgbmV4dCkgd2hlbiBoa2V5ID0gaGsgLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgICAgfCBFVHJ1ZSAtPiBILnNldF9rZXlfZGF0YSBjIGtleSBpbmZvXG4gICAgICAgICAgICB8IEVGYWxzZSB8IEVEZWFkIC0+IHJlcGxhY2VfYnVja2V0IG5leHRcbiAgICAgICAgICAgIGVuZFxuICAgICAgICB8IENvbnMoXyxfLG5leHQpIC0+IHJlcGxhY2VfYnVja2V0IG5leHRcbiAgICAgIGluXG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGhrZXkgaW5cbiAgICAgIGxldCBsID0gaC5kYXRhLihpKSBpblxuICAgICAgdHJ5XG4gICAgICAgIHJlcGxhY2VfYnVja2V0IGxcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIGxldCBjb250YWluZXIgPSBILmNyZWF0ZSBrZXkgaW5mbyBpblxuICAgICAgICBoLmRhdGEuKGkpIDwtIENvbnMoaGtleSwgY29udGFpbmVyLCBsKTtcbiAgICAgICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUgaFxuXG4gICAgbGV0IG1lbSBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICBsZXQgcmVjIG1lbV9pbl9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICB8IENvbnMoaGssIGMsIHJlc3QpIHdoZW4gaGsgPSBoa2V5IC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgfCBFVHJ1ZSAtPiB0cnVlXG4gICAgICAgICAgfCBFRmFsc2UgfCBFRGVhZCAtPiBtZW1faW5fYnVja2V0IHJlc3RcbiAgICAgICAgICBlbmRcbiAgICAgIHwgQ29ucyhfaGssIF9jLCByZXN0KSAtPiBtZW1faW5fYnVja2V0IHJlc3QgaW5cbiAgICAgIG1lbV9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBoa2V5KVxuXG4gICAgbGV0IGl0ZXIgZiBoID1cbiAgICAgIGxldCByZWMgZG9fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgICAgKClcbiAgICAgICAgfCBDb25zKF8sIGMsIHJlc3QpIC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBILmdldF9rZXkgYywgSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT4gKClcbiAgICAgICAgICAgIHwgU29tZSBrLCBTb21lIGQgLT4gZiBrIGRcbiAgICAgICAgICAgIGVuZDsgZG9fYnVja2V0IHJlc3QgaW5cbiAgICAgIGxldCBkID0gaC5kYXRhIGluXG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICAgIGRvX2J1Y2tldCBkLihpKVxuICAgICAgZG9uZVxuXG4gICAgbGV0IGZvbGQgZiBoIGluaXQgPVxuICAgICAgbGV0IHJlYyBkb19idWNrZXQgYiBhY2N1ID1cbiAgICAgICAgbWF0Y2ggYiB3aXRoXG4gICAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICAgIGFjY3VcbiAgICAgICAgfCBDb25zKF8sIGMsIHJlc3QpIC0+XG4gICAgICAgICAgICBsZXQgYWNjdSA9IGJlZ2luIG1hdGNoIEguZ2V0X2tleSBjLCBILmdldF9kYXRhIGMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUsIF8gfCBfLCBOb25lIC0+IGFjY3VcbiAgICAgICAgICAgICAgfCBTb21lIGssIFNvbWUgZCAtPiBmIGsgZCBhY2N1XG4gICAgICAgICAgICBlbmQgaW5cbiAgICAgICAgICAgIGRvX2J1Y2tldCByZXN0IGFjY3UgIGluXG4gICAgICBsZXQgZCA9IGguZGF0YSBpblxuICAgICAgbGV0IGFjY3UgPSByZWYgaW5pdCBpblxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgICBhY2N1IDo9IGRvX2J1Y2tldCBkLihpKSAhYWNjdVxuICAgICAgZG9uZTtcbiAgICAgICFhY2N1XG5cbiAgICBsZXQgZmlsdGVyX21hcF9pbnBsYWNlIGYgaCA9XG4gICAgICBsZXQgcmVjIGRvX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICAgIEVtcHR5XG4gICAgICAgIHwgQ29ucyhoaywgYywgcmVzdCkgLT5cbiAgICAgICAgICAgIG1hdGNoIEguZ2V0X2tleSBjLCBILmdldF9kYXRhIGMgd2l0aFxuICAgICAgICAgICAgfCBOb25lLCBfIHwgXywgTm9uZSAtPlxuICAgICAgICAgICAgICAgIGRvX2J1Y2tldCByZXN0XG4gICAgICAgICAgICB8IFNvbWUgaywgU29tZSBkIC0+XG4gICAgICAgICAgICAgICAgbWF0Y2ggZiBrIGQgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICBkb19idWNrZXQgcmVzdFxuICAgICAgICAgICAgICAgIHwgU29tZSBuZXdfZCAtPlxuICAgICAgICAgICAgICAgICAgICBILnNldF9rZXlfZGF0YSBjIGsgbmV3X2Q7XG4gICAgICAgICAgICAgICAgICAgIENvbnMoaGssIGMsIGRvX2J1Y2tldCByZXN0KVxuICAgICAgaW5cbiAgICAgIGxldCBkID0gaC5kYXRhIGluXG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICAgIGQuKGkpIDwtIGRvX2J1Y2tldCBkLihpKVxuICAgICAgZG9uZVxuXG4gICAgbGV0IGxlbmd0aCBoID0gaC5zaXplXG5cbiAgICBsZXQgcmVjIGJ1Y2tldF9sZW5ndGggYWNjdSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPiBidWNrZXRfbGVuZ3RoIChhY2N1ICsgMSkgcmVzdFxuXG4gICAgbGV0IHN0YXRzIGggPVxuICAgICAgbGV0IG1ibCA9XG4gICAgICAgIEFycmF5LmZvbGRfbGVmdCAoZnVuIG0gYiAtPiBJbnQubWF4IG0gKGJ1Y2tldF9sZW5ndGggMCBiKSkgMCBoLmRhdGEgaW5cbiAgICAgIGxldCBoaXN0byA9IEFycmF5Lm1ha2UgKG1ibCArIDEpIDAgaW5cbiAgICAgIEFycmF5Lml0ZXJcbiAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgIGxldCBsID0gYnVja2V0X2xlbmd0aCAwIGIgaW5cbiAgICAgICAgICAgaGlzdG8uKGwpIDwtIGhpc3RvLihsKSArIDEpXG4gICAgICAgIGguZGF0YTtcbiAgICAgIHsgSGFzaHRibC5udW1fYmluZGluZ3MgPSBoLnNpemU7XG4gICAgICAgIG51bV9idWNrZXRzID0gQXJyYXkubGVuZ3RoIGguZGF0YTtcbiAgICAgICAgbWF4X2J1Y2tldF9sZW5ndGggPSBtYmw7XG4gICAgICAgIGJ1Y2tldF9oaXN0b2dyYW0gPSBoaXN0byB9XG5cbiAgICBsZXQgcmVjIGJ1Y2tldF9sZW5ndGhfYWxpdmUgYWNjdSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgQ29ucyhfLCBjLCByZXN0KSB3aGVuIEguY2hlY2tfa2V5IGMgLT5cbiAgICAgICAgICBidWNrZXRfbGVuZ3RoX2FsaXZlIChhY2N1ICsgMSkgcmVzdFxuICAgICAgfCBDb25zKF8sIF8sIHJlc3QpIC0+IGJ1Y2tldF9sZW5ndGhfYWxpdmUgYWNjdSByZXN0XG5cbiAgICBsZXQgc3RhdHNfYWxpdmUgaCA9XG4gICAgICBsZXQgc2l6ZSA9IHJlZiAwIGluXG4gICAgICBsZXQgbWJsID1cbiAgICAgICAgQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biBtIGIgLT4gSW50Lm1heCBtIChidWNrZXRfbGVuZ3RoX2FsaXZlIDAgYikpIDAgaC5kYXRhXG4gICAgICBpblxuICAgICAgbGV0IGhpc3RvID0gQXJyYXkubWFrZSAobWJsICsgMSkgMCBpblxuICAgICAgQXJyYXkuaXRlclxuICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgbGV0IGwgPSBidWNrZXRfbGVuZ3RoX2FsaXZlIDAgYiBpblxuICAgICAgICAgICBzaXplIDo9ICFzaXplICsgbDtcbiAgICAgICAgICAgaGlzdG8uKGwpIDwtIGhpc3RvLihsKSArIDEpXG4gICAgICAgIGguZGF0YTtcbiAgICAgIHsgSGFzaHRibC5udW1fYmluZGluZ3MgPSAhc2l6ZTtcbiAgICAgICAgbnVtX2J1Y2tldHMgPSBBcnJheS5sZW5ndGggaC5kYXRhO1xuICAgICAgICBtYXhfYnVja2V0X2xlbmd0aCA9IG1ibDtcbiAgICAgICAgYnVja2V0X2hpc3RvZ3JhbSA9IGhpc3RvIH1cblxuICAgIGxldCB0b19zZXEgdGJsID1cbiAgICAgICgqIGNhcHR1cmUgY3VycmVudCBhcnJheSwgc28gdGhhdCBldmVuIGlmIHRoZSB0YWJsZSBpcyByZXNpemVkIHdlXG4gICAgICAgICBrZWVwIGl0ZXJhdGluZyBvbiB0aGUgc2FtZSBhcnJheSAqKVxuICAgICAgbGV0IHRibF9kYXRhID0gdGJsLmRhdGEgaW5cbiAgICAgICgqIHN0YXRlOiBpbmRleCAqIG5leHQgYnVja2V0IHRvIHRyYXZlcnNlICopXG4gICAgICBsZXQgcmVjIGF1eCBpIGJ1Y2sgKCkgPSBtYXRjaCBidWNrIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgICAgaWYgaSA9IEFycmF5Lmxlbmd0aCB0YmxfZGF0YVxuICAgICAgICAgICAgdGhlbiBTZXEuTmlsXG4gICAgICAgICAgICBlbHNlIGF1eChpKzEpIHRibF9kYXRhLihpKSAoKVxuICAgICAgICB8IENvbnMgKF8sIGMsIG5leHQpIC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBILmdldF9rZXkgYywgSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiBhdXggaSBuZXh0ICgpXG4gICAgICAgICAgICAgIHwgU29tZSBrZXksIFNvbWUgZGF0YSAtPlxuICAgICAgICAgICAgICAgICAgU2VxLkNvbnMgKChrZXksIGRhdGEpLCBhdXggaSBuZXh0KVxuICAgICAgICAgICAgZW5kXG4gICAgICBpblxuICAgICAgYXV4IDAgRW1wdHlcblxuICAgIGxldCB0b19zZXFfa2V5cyBtID0gU2VxLm1hcCBmc3QgKHRvX3NlcSBtKVxuXG4gICAgbGV0IHRvX3NlcV92YWx1ZXMgbSA9IFNlcS5tYXAgc25kICh0b19zZXEgbSlcblxuICAgIGxldCBhZGRfc2VxIHRibCBpID1cbiAgICAgIFNlcS5pdGVyIChmdW4gKGssdikgLT4gYWRkIHRibCBrIHYpIGlcblxuICAgIGxldCByZXBsYWNlX3NlcSB0YmwgaSA9XG4gICAgICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IHJlcGxhY2UgdGJsIGsgdikgaVxuXG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG5cbiAgZW5kXG5lbmRcblxubW9kdWxlIE9iakVwaCA9IE9iai5FcGhlbWVyb25cblxubGV0IF9vYmpfb3B0IDogT2JqLnQgb3B0aW9uIC0+ICdhIG9wdGlvbiA9IGZ1biB4IC0+XG4gIG1hdGNoIHggd2l0aFxuICB8IE5vbmUgLT4geFxuICB8IFNvbWUgdiAtPiBTb21lIChPYmoub2JqIHYpXG5cbigqKiBUaGUgcHJldmlvdXMgZnVuY3Rpb24gaXMgdHlwZWQgc28gdGhpcyBvbmUgaXMgYWxzbyBjb3JyZWN0ICopXG5sZXQgb2JqX29wdCA6IE9iai50IG9wdGlvbiAtPiAnYSBvcHRpb24gPSBmdW4geCAtPiBPYmoubWFnaWMgeFxuXG5cbm1vZHVsZSBLMSA9IHN0cnVjdFxuICB0eXBlICgnaywnZCkgdCA9IE9iakVwaC50XG5cbiAgbGV0IGNyZWF0ZSAoKSA6ICgnaywnZCkgdCA9IE9iakVwaC5jcmVhdGUgMVxuXG4gIGxldCBnZXRfa2V5ICh0OignaywnZCkgdCkgOiAnayBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2tleSB0IDApXG4gIGxldCBnZXRfa2V5X2NvcHkgKHQ6KCdrLCdkKSB0KSA6ICdrIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfa2V5X2NvcHkgdCAwKVxuICBsZXQgc2V0X2tleSAodDooJ2ssJ2QpIHQpIChrOidrKSA6IHVuaXQgPSBPYmpFcGguc2V0X2tleSB0IDAgKE9iai5yZXByIGspXG4gIGxldCB1bnNldF9rZXkgKHQ6KCdrLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfa2V5IHQgMFxuICBsZXQgY2hlY2tfa2V5ICh0OignaywnZCkgdCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2tleSB0IDBcblxuICBsZXQgYmxpdF9rZXkgKHQxOignaywnZCkgdCkgKHQyOignaywnZCkgdCk6IHVuaXQgPVxuICAgIE9iakVwaC5ibGl0X2tleSB0MSAwIHQyIDAgMVxuXG4gIGxldCBnZXRfZGF0YSAodDooJ2ssJ2QpIHQpIDogJ2Qgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9kYXRhIHQpXG4gIGxldCBnZXRfZGF0YV9jb3B5ICh0OignaywnZCkgdCkgOiAnZCBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2RhdGFfY29weSB0KVxuICBsZXQgc2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSAoZDonZCkgOiB1bml0ID0gT2JqRXBoLnNldF9kYXRhIHQgKE9iai5yZXByIGQpXG4gIGxldCB1bnNldF9kYXRhICh0OignaywnZCkgdCkgOiB1bml0ID0gT2JqRXBoLnVuc2V0X2RhdGEgdFxuICBsZXQgY2hlY2tfZGF0YSAodDooJ2ssJ2QpIHQpIDogYm9vbCA9IE9iakVwaC5jaGVja19kYXRhIHRcbiAgbGV0IGJsaXRfZGF0YSAodDE6KF8sJ2QpIHQpICh0MjooXywnZCkgdCkgOiB1bml0ID0gT2JqRXBoLmJsaXRfZGF0YSB0MSB0MlxuXG4gIGxldCBtYWtlIGtleSBkYXRhID1cbiAgICBsZXQgZXBoID0gY3JlYXRlICgpIGluXG4gICAgc2V0X2RhdGEgZXBoIGRhdGE7XG4gICAgc2V0X2tleSBlcGgga2V5O1xuICAgIGVwaFxuXG4gIGxldCBxdWVyeSBlcGgga2V5ID1cbiAgICBtYXRjaCBnZXRfa2V5IGVwaCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgayB3aGVuIGsgPT0ga2V5IC0+IGdldF9kYXRhIGVwaFxuICAgIHwgU29tZSBfIC0+IE5vbmVcblxuICBtb2R1bGUgTWFrZVNlZWRlZCAoSDpIYXNodGJsLlNlZWRlZEhhc2hlZFR5cGUpID1cbiAgICBHZW5IYXNoVGFibGUuTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgY29udGFpbmVyID0gKEgudCwnYSkgdFxuICAgICAgdHlwZSB0ID0gSC50XG4gICAgICBsZXQgY3JlYXRlIGsgZCA9XG4gICAgICAgIGxldCBjID0gY3JlYXRlICgpIGluXG4gICAgICAgIHNldF9kYXRhIGMgZDtcbiAgICAgICAgc2V0X2tleSBjIGs7XG4gICAgICAgIGNcbiAgICAgIGxldCBoYXNoID0gSC5oYXNoXG4gICAgICBsZXQgZXF1YWwgYyBrID1cbiAgICAgICAgKCogeyFnZXRfa2V5X2NvcHl9IGlzIG5vdCB1c2VkIGJlY2F1c2UgdGhlIGVxdWFsaXR5IG9mIHRoZSB1c2VyIGNhbiBiZVxuICAgICAgICAgICAgdGhlIHBoeXNpY2FsIGVxdWFsaXR5ICopXG4gICAgICAgIG1hdGNoIGdldF9rZXkgYyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBHZW5IYXNoVGFibGUuRURlYWRcbiAgICAgICAgfCBTb21lIGsnIC0+XG4gICAgICAgICAgICBpZiBILmVxdWFsIGsgaycgdGhlbiBHZW5IYXNoVGFibGUuRVRydWUgZWxzZSBHZW5IYXNoVGFibGUuRUZhbHNlXG4gICAgICBsZXQgZ2V0X2RhdGEgPSBnZXRfZGF0YVxuICAgICAgbGV0IGdldF9rZXkgPSBnZXRfa2V5XG4gICAgICBsZXQgc2V0X2tleV9kYXRhIGMgayBkID1cbiAgICAgICAgdW5zZXRfZGF0YSBjO1xuICAgICAgICBzZXRfa2V5IGMgaztcbiAgICAgICAgc2V0X2RhdGEgYyBkXG4gICAgICBsZXQgY2hlY2tfa2V5ID0gY2hlY2tfa2V5XG4gICAgZW5kKVxuXG4gIG1vZHVsZSBNYWtlKEg6IEhhc2h0YmwuSGFzaGVkVHlwZSk6IChTIHdpdGggdHlwZSBrZXkgPSBILnQpID1cbiAgc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBILnRcbiAgICAgICAgbGV0IGVxdWFsID0gSC5lcXVhbFxuICAgICAgICBsZXQgaGFzaCAoX3NlZWQ6IGludCkgeCA9IEguaGFzaCB4XG4gICAgICBlbmQpXG4gICAgbGV0IGNyZWF0ZSBzeiA9IGNyZWF0ZSB+cmFuZG9tOmZhbHNlIHN6XG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG4gIGVuZFxuXG4gIG1vZHVsZSBCdWNrZXQgPSBzdHJ1Y3RcblxuICAgIHR5cGUgbm9ucmVjICgnaywgJ2QpIHQgPSAoJ2ssICdkKSB0IGxpc3QgcmVmXG4gICAgbGV0IGsxX21ha2UgPSBtYWtlXG4gICAgbGV0IG1ha2UgKCkgPSByZWYgW11cbiAgICBsZXQgYWRkIGIgayBkID0gYiA6PSBrMV9tYWtlIGsgZCA6OiAhYlxuXG4gICAgbGV0IHRlc3Rfa2V5IGsgZSA9XG4gICAgICBtYXRjaCBnZXRfa2V5IGUgd2l0aFxuICAgICAgfCBTb21lIHggd2hlbiB4ID09IGsgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG5cbiAgICBsZXQgcmVtb3ZlIGIgayA9XG4gICAgICBsZXQgcmVjIGxvb3AgbCBhY2MgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICB8IGggOjogdCB3aGVuIHRlc3Rfa2V5IGsgaCAtPiBiIDo9IExpc3QucmV2X2FwcGVuZCBhY2MgdFxuICAgICAgICB8IGggOjogdCAtPiBsb29wIHQgKGggOjogYWNjKVxuICAgICAgaW5cbiAgICAgIGxvb3AgIWIgW11cblxuICAgIGxldCBmaW5kIGIgayA9XG4gICAgICBtYXRjaCBMaXN0LmZpbmRfb3B0ICh0ZXN0X2tleSBrKSAhYiB3aXRoXG4gICAgICB8IFNvbWUgZSAtPiBnZXRfZGF0YSBlXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuXG4gICAgbGV0IGxlbmd0aCBiID0gTGlzdC5sZW5ndGggIWJcbiAgICBsZXQgY2xlYXIgYiA9IGIgOj0gW11cblxuICBlbmRcblxuZW5kXG5cbm1vZHVsZSBLMiA9IHN0cnVjdFxuICB0eXBlICgnazEsICdrMiwgJ2QpIHQgPSBPYmpFcGgudFxuXG4gIGxldCBjcmVhdGUgKCkgOiAoJ2sxLCdrMiwnZCkgdCA9IE9iakVwaC5jcmVhdGUgMlxuXG4gIGxldCBnZXRfa2V5MSAodDooJ2sxLCdrMiwnZCkgdCkgOiAnazEgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXkgdCAwKVxuICBsZXQgZ2V0X2tleTFfY29weSAodDooJ2sxLCdrMiwnZCkgdCkgOiAnazEgb3B0aW9uID1cbiAgICBvYmpfb3B0IChPYmpFcGguZ2V0X2tleV9jb3B5IHQgMClcbiAgbGV0IHNldF9rZXkxICh0OignazEsJ2syLCdkKSB0KSAoazonazEpIDogdW5pdCA9XG4gICAgT2JqRXBoLnNldF9rZXkgdCAwIChPYmoucmVwciBrKVxuICBsZXQgdW5zZXRfa2V5MSAodDooJ2sxLCdrMiwnZCkgdCkgOiB1bml0ID0gT2JqRXBoLnVuc2V0X2tleSB0IDBcbiAgbGV0IGNoZWNrX2tleTEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogYm9vbCA9IE9iakVwaC5jaGVja19rZXkgdCAwXG5cbiAgbGV0IGdldF9rZXkyICh0OignazEsJ2syLCdkKSB0KSA6ICdrMiBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2tleSB0IDEpXG4gIGxldCBnZXRfa2V5Ml9jb3B5ICh0OignazEsJ2syLCdkKSB0KSA6ICdrMiBvcHRpb24gPVxuICAgIG9ial9vcHQgKE9iakVwaC5nZXRfa2V5X2NvcHkgdCAxKVxuICBsZXQgc2V0X2tleTIgKHQ6KCdrMSwnazIsJ2QpIHQpIChrOidrMikgOiB1bml0ID1cbiAgICBPYmpFcGguc2V0X2tleSB0IDEgKE9iai5yZXByIGspXG4gIGxldCB1bnNldF9rZXkyICh0OignazEsJ2syLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfa2V5IHQgMVxuICBsZXQgY2hlY2tfa2V5MiAodDooJ2sxLCdrMiwnZCkgdCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2tleSB0IDFcblxuXG4gIGxldCBibGl0X2tleTEgKHQxOignazEsXyxfKSB0KSAodDI6KCdrMSxfLF8pIHQpIDogdW5pdCA9XG4gICAgT2JqRXBoLmJsaXRfa2V5IHQxIDAgdDIgMCAxXG4gIGxldCBibGl0X2tleTIgKHQxOihfLCdrMixfKSB0KSAodDI6KF8sJ2syLF8pIHQpIDogdW5pdCA9XG4gICAgT2JqRXBoLmJsaXRfa2V5IHQxIDEgdDIgMSAxXG4gIGxldCBibGl0X2tleTEyICh0MTooJ2sxLCdrMixfKSB0KSAodDI6KCdrMSwnazIsXykgdCkgOiB1bml0ID1cbiAgICBPYmpFcGguYmxpdF9rZXkgdDEgMCB0MiAwIDJcblxuICBsZXQgZ2V0X2RhdGEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogJ2Qgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9kYXRhIHQpXG4gIGxldCBnZXRfZGF0YV9jb3B5ICh0OignazEsJ2syLCdkKSB0KSA6ICdkIG9wdGlvbiA9XG4gICAgb2JqX29wdCAoT2JqRXBoLmdldF9kYXRhX2NvcHkgdClcbiAgbGV0IHNldF9kYXRhICh0OignazEsJ2syLCdkKSB0KSAoZDonZCkgOiB1bml0ID1cbiAgICBPYmpFcGguc2V0X2RhdGEgdCAoT2JqLnJlcHIgZClcbiAgbGV0IHVuc2V0X2RhdGEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9kYXRhIHRcbiAgbGV0IGNoZWNrX2RhdGEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogYm9vbCA9IE9iakVwaC5jaGVja19kYXRhIHRcbiAgbGV0IGJsaXRfZGF0YSAodDE6KF8sXywnZCkgdCkgKHQyOihfLF8sJ2QpIHQpIDogdW5pdCA9IE9iakVwaC5ibGl0X2RhdGEgdDEgdDJcblxuICBsZXQgbWFrZSBrZXkxIGtleTIgZGF0YSA9XG4gICAgbGV0IGVwaCA9IGNyZWF0ZSAoKSBpblxuICAgIHNldF9kYXRhIGVwaCBkYXRhO1xuICAgIHNldF9rZXkxIGVwaCBrZXkxO1xuICAgIHNldF9rZXkyIGVwaCBrZXkyO1xuICAgIGlnbm9yZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSBrZXkxKTtcbiAgICBlcGhcblxuICBsZXQgcXVlcnkgZXBoIGtleTEga2V5MiA9XG4gICAgbWF0Y2ggZ2V0X2tleTEgZXBoIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBrIHdoZW4gayA9PSBrZXkxIC0+XG4gICAgICAgIGJlZ2luIG1hdGNoIGdldF9rZXkyIGVwaCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSBrIHdoZW4gayA9PSBrZXkyIC0+IGdldF9kYXRhIGVwaFxuICAgICAgICB8IFNvbWUgXyAtPiBOb25lXG4gICAgICAgIGVuZFxuICAgIHwgU29tZSBfIC0+IE5vbmVcblxuICBtb2R1bGUgTWFrZVNlZWRlZFxuICAgICAgKEgxOkhhc2h0YmwuU2VlZGVkSGFzaGVkVHlwZSlcbiAgICAgIChIMjpIYXNodGJsLlNlZWRlZEhhc2hlZFR5cGUpID1cbiAgICBHZW5IYXNoVGFibGUuTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgY29udGFpbmVyID0gKEgxLnQsSDIudCwnYSkgdFxuICAgICAgdHlwZSB0ID0gSDEudCAqIEgyLnRcbiAgICAgIGxldCBjcmVhdGUgKGsxLGsyKSBkID1cbiAgICAgICAgbGV0IGMgPSBjcmVhdGUgKCkgaW5cbiAgICAgICAgc2V0X2RhdGEgYyBkO1xuICAgICAgICBzZXRfa2V5MSBjIGsxOyBzZXRfa2V5MiBjIGsyO1xuICAgICAgICBjXG4gICAgICBsZXQgaGFzaCBzZWVkIChrMSxrMikgPVxuICAgICAgICBIMS5oYXNoIHNlZWQgazEgKyBIMi5oYXNoIHNlZWQgazIgKiA2NTU5OVxuICAgICAgbGV0IGVxdWFsIGMgKGsxLGsyKSA9XG4gICAgICAgIG1hdGNoIGdldF9rZXkxIGMsIGdldF9rZXkyIGMgd2l0aFxuICAgICAgICB8IE5vbmUsIF8gfCBfICwgTm9uZSAtPiBHZW5IYXNoVGFibGUuRURlYWRcbiAgICAgICAgfCBTb21lIGsxJywgU29tZSBrMicgLT5cbiAgICAgICAgICAgIGlmIEgxLmVxdWFsIGsxIGsxJyAmJiBIMi5lcXVhbCBrMiBrMidcbiAgICAgICAgICAgIHRoZW4gR2VuSGFzaFRhYmxlLkVUcnVlIGVsc2UgR2VuSGFzaFRhYmxlLkVGYWxzZVxuICAgICAgbGV0IGdldF9kYXRhID0gZ2V0X2RhdGFcbiAgICAgIGxldCBnZXRfa2V5IGMgPVxuICAgICAgICBtYXRjaCBnZXRfa2V5MSBjLCBnZXRfa2V5MiBjIHdpdGhcbiAgICAgICAgfCBOb25lLCBfIHwgXyAsIE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgazEnLCBTb21lIGsyJyAtPiBTb21lIChrMScsIGsyJylcbiAgICAgIGxldCBzZXRfa2V5X2RhdGEgYyAoazEsazIpIGQgPVxuICAgICAgICB1bnNldF9kYXRhIGM7XG4gICAgICAgIHNldF9rZXkxIGMgazE7IHNldF9rZXkyIGMgazI7XG4gICAgICAgIHNldF9kYXRhIGMgZFxuICAgICAgbGV0IGNoZWNrX2tleSBjID0gY2hlY2tfa2V5MSBjICYmIGNoZWNrX2tleTIgY1xuICAgIGVuZClcblxuICBtb2R1bGUgTWFrZShIMTogSGFzaHRibC5IYXNoZWRUeXBlKShIMjogSGFzaHRibC5IYXNoZWRUeXBlKTpcbiAgICAoUyB3aXRoIHR5cGUga2V5ID0gSDEudCAqIEgyLnQpID1cbiAgc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlU2VlZGVkXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBIMS50XG4gICAgICAgICAgbGV0IGVxdWFsID0gSDEuZXF1YWxcbiAgICAgICAgICBsZXQgaGFzaCAoX3NlZWQ6IGludCkgeCA9IEgxLmhhc2ggeFxuICAgICAgICBlbmQpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBIMi50XG4gICAgICAgICAgbGV0IGVxdWFsID0gSDIuZXF1YWxcbiAgICAgICAgICBsZXQgaGFzaCAoX3NlZWQ6IGludCkgeCA9IEgyLmhhc2ggeFxuICAgICAgICBlbmQpXG4gICAgbGV0IGNyZWF0ZSBzeiA9IGNyZWF0ZSB+cmFuZG9tOmZhbHNlIHN6XG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG4gIGVuZFxuXG4gIG1vZHVsZSBCdWNrZXQgPSBzdHJ1Y3RcblxuICAgIHR5cGUgbm9ucmVjICgnazEsICdrMiwgJ2QpIHQgPSAoJ2sxLCAnazIsICdkKSB0IGxpc3QgcmVmXG4gICAgbGV0IGsyX21ha2UgPSBtYWtlXG4gICAgbGV0IG1ha2UgKCkgPSByZWYgW11cbiAgICBsZXQgYWRkIGIgazEgazIgZCA9IGIgOj0gazJfbWFrZSBrMSBrMiBkIDo6ICFiXG5cbiAgICBsZXQgdGVzdF9rZXlzIGsxIGsyIGUgPVxuICAgICAgbWF0Y2ggZ2V0X2tleTEgZSwgZ2V0X2tleTIgZSB3aXRoXG4gICAgICB8IFNvbWUgeDEsIFNvbWUgeDIgd2hlbiB4MSA9PSBrMSAmJiB4MiA9PSBrMiAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2VcblxuICAgIGxldCByZW1vdmUgYiBrMSBrMiA9XG4gICAgICBsZXQgcmVjIGxvb3AgbCBhY2MgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICB8IGggOjogdCB3aGVuIHRlc3Rfa2V5cyBrMSBrMiBoIC0+IGIgOj0gTGlzdC5yZXZfYXBwZW5kIGFjYyB0XG4gICAgICAgIHwgaCA6OiB0IC0+IGxvb3AgdCAoaCA6OiBhY2MpXG4gICAgICBpblxuICAgICAgbG9vcCAhYiBbXVxuXG4gICAgbGV0IGZpbmQgYiBrMSBrMiA9XG4gICAgICBtYXRjaCBMaXN0LmZpbmRfb3B0ICh0ZXN0X2tleXMgazEgazIpICFiIHdpdGhcbiAgICAgIHwgU29tZSBlIC0+IGdldF9kYXRhIGVcbiAgICAgIHwgTm9uZSAtPiBOb25lXG5cbiAgICBsZXQgbGVuZ3RoIGIgPSBMaXN0Lmxlbmd0aCAhYlxuICAgIGxldCBjbGVhciBiID0gYiA6PSBbXVxuXG4gIGVuZFxuXG5lbmRcblxubW9kdWxlIEtuID0gc3RydWN0XG4gIHR5cGUgKCdrLCdkKSB0ID0gT2JqRXBoLnRcblxuICBsZXQgY3JlYXRlIG4gOiAoJ2ssJ2QpIHQgPSBPYmpFcGguY3JlYXRlIG5cbiAgbGV0IGxlbmd0aCAoazooJ2ssJ2QpIHQpIDogaW50ID0gT2JqRXBoLmxlbmd0aCBrXG5cbiAgbGV0IGdldF9rZXkgKHQ6KCdrLCdkKSB0KSAobjppbnQpIDogJ2sgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXkgdCBuKVxuICBsZXQgZ2V0X2tleV9jb3B5ICh0OignaywnZCkgdCkgKG46aW50KSA6ICdrIG9wdGlvbiA9XG4gICAgb2JqX29wdCAoT2JqRXBoLmdldF9rZXlfY29weSB0IG4pXG4gIGxldCBzZXRfa2V5ICh0OignaywnZCkgdCkgKG46aW50KSAoazonaykgOiB1bml0ID1cbiAgICBPYmpFcGguc2V0X2tleSB0IG4gKE9iai5yZXByIGspXG4gIGxldCB1bnNldF9rZXkgKHQ6KCdrLCdkKSB0KSAobjppbnQpIDogdW5pdCA9IE9iakVwaC51bnNldF9rZXkgdCBuXG4gIGxldCBjaGVja19rZXkgKHQ6KCdrLCdkKSB0KSAobjppbnQpIDogYm9vbCA9IE9iakVwaC5jaGVja19rZXkgdCBuXG5cbiAgbGV0IGJsaXRfa2V5ICh0MTooJ2ssJ2QpIHQpIChvMTppbnQpICh0MjooJ2ssJ2QpIHQpIChvMjppbnQpIChsOmludCkgOiB1bml0ID1cbiAgICBPYmpFcGguYmxpdF9rZXkgdDEgbzEgdDIgbzIgbFxuXG4gIGxldCBnZXRfZGF0YSAodDooJ2ssJ2QpIHQpIDogJ2Qgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9kYXRhIHQpXG4gIGxldCBnZXRfZGF0YV9jb3B5ICh0OignaywnZCkgdCkgOiAnZCBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2RhdGFfY29weSB0KVxuICBsZXQgc2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSAoZDonZCkgOiB1bml0ID0gT2JqRXBoLnNldF9kYXRhIHQgKE9iai5yZXByIGQpXG4gIGxldCB1bnNldF9kYXRhICh0OignaywnZCkgdCkgOiB1bml0ID0gT2JqRXBoLnVuc2V0X2RhdGEgdFxuICBsZXQgY2hlY2tfZGF0YSAodDooJ2ssJ2QpIHQpIDogYm9vbCA9IE9iakVwaC5jaGVja19kYXRhIHRcbiAgbGV0IGJsaXRfZGF0YSAodDE6KF8sJ2QpIHQpICh0MjooXywnZCkgdCkgOiB1bml0ID0gT2JqRXBoLmJsaXRfZGF0YSB0MSB0MlxuXG4gIGxldCBtYWtlIGtleXMgZGF0YSA9XG4gICAgbGV0IGwgPSBBcnJheS5sZW5ndGgga2V5cyBpblxuICAgIGxldCBlcGggPSBjcmVhdGUgbCBpblxuICAgIHNldF9kYXRhIGVwaCBkYXRhO1xuICAgIGZvciBpID0gMCB0byBsIC0gMSBkbyBzZXRfa2V5IGVwaCBpIGtleXMuKGkpIGRvbmU7XG4gICAgZXBoXG5cbiAgbGV0IHF1ZXJ5IGVwaCBrZXlzID1cbiAgICBsZXQgbCA9IGxlbmd0aCBlcGggaW5cbiAgICB0cnlcbiAgICAgIGlmIGwgPD4gQXJyYXkubGVuZ3RoIGtleXMgdGhlbiByYWlzZSBFeGl0O1xuICAgICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICAgIG1hdGNoIGdldF9rZXkgZXBoIGkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gcmFpc2UgRXhpdFxuICAgICAgICB8IFNvbWUgayB3aGVuIGsgPT0ga2V5cy4oaSkgLT4gKClcbiAgICAgICAgfCBTb21lIF8gLT4gcmFpc2UgRXhpdFxuICAgICAgZG9uZTtcbiAgICAgIGdldF9kYXRhIGVwaFxuICAgIHdpdGggRXhpdCAtPiBOb25lXG5cbiAgbW9kdWxlIE1ha2VTZWVkZWQgKEg6SGFzaHRibC5TZWVkZWRIYXNoZWRUeXBlKSA9XG4gICAgR2VuSGFzaFRhYmxlLk1ha2VTZWVkZWQoc3RydWN0XG4gICAgICB0eXBlICdhIGNvbnRhaW5lciA9IChILnQsJ2EpIHRcbiAgICAgIHR5cGUgdCA9IEgudCBhcnJheVxuICAgICAgbGV0IGNyZWF0ZSBrIGQgPVxuICAgICAgICBsZXQgYyA9IGNyZWF0ZSAoQXJyYXkubGVuZ3RoIGspIGluXG4gICAgICAgIHNldF9kYXRhIGMgZDtcbiAgICAgICAgZm9yIGk9MCB0byBBcnJheS5sZW5ndGggayAtMSBkb1xuICAgICAgICAgIHNldF9rZXkgYyBpIGsuKGkpO1xuICAgICAgICBkb25lO1xuICAgICAgICBjXG4gICAgICBsZXQgaGFzaCBzZWVkIGsgPVxuICAgICAgICBsZXQgaCA9IHJlZiAwIGluXG4gICAgICAgIGZvciBpPTAgdG8gQXJyYXkubGVuZ3RoIGsgLTEgZG9cbiAgICAgICAgICBoIDo9IEguaGFzaCBzZWVkIGsuKGkpICogNjU1OTkgKyAhaDtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgIWhcbiAgICAgIGxldCBlcXVhbCBjIGsgPVxuICAgICAgICBsZXQgbGVuICA9IEFycmF5Lmxlbmd0aCBrIGluXG4gICAgICAgIGxldCBsZW4nID0gbGVuZ3RoIGMgaW5cbiAgICAgICAgaWYgbGVuICE9IGxlbicgdGhlbiBHZW5IYXNoVGFibGUuRUZhbHNlXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgcmVjIGVxdWFsX2FycmF5IGsgYyBpID1cbiAgICAgICAgICAgIGlmIGkgPCAwIHRoZW4gR2VuSGFzaFRhYmxlLkVUcnVlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIG1hdGNoIGdldF9rZXkgYyBpIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IEdlbkhhc2hUYWJsZS5FRGVhZFxuICAgICAgICAgICAgICB8IFNvbWUga2kgLT5cbiAgICAgICAgICAgICAgICAgIGlmIEguZXF1YWwgay4oaSkga2lcbiAgICAgICAgICAgICAgICAgIHRoZW4gZXF1YWxfYXJyYXkgayBjIChpLTEpXG4gICAgICAgICAgICAgICAgICBlbHNlIEdlbkhhc2hUYWJsZS5FRmFsc2VcbiAgICAgICAgICBpblxuICAgICAgICAgIGVxdWFsX2FycmF5IGsgYyAobGVuLTEpXG4gICAgICBsZXQgZ2V0X2RhdGEgPSBnZXRfZGF0YVxuICAgICAgbGV0IGdldF9rZXkgYyA9XG4gICAgICAgIGxldCBsZW4gPSBsZW5ndGggYyBpblxuICAgICAgICBpZiBsZW4gPSAwIHRoZW4gU29tZSBbfHxdXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBtYXRjaCBnZXRfa2V5IGMgMCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUgazAgLT5cbiAgICAgICAgICAgICAgbGV0IHJlYyBmaWxsIGEgaSA9XG4gICAgICAgICAgICAgICAgaWYgaSA8IDEgdGhlbiBTb21lIGFcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBtYXRjaCBnZXRfa2V5IGMgaSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgfCBTb21lIGtpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgYS4oaSkgPC0ga2k7XG4gICAgICAgICAgICAgICAgICAgICAgZmlsbCBhIChpLTEpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBhID0gQXJyYXkubWFrZSBsZW4gazAgaW5cbiAgICAgICAgICAgICAgZmlsbCBhIChsZW4tMSlcbiAgICAgIGxldCBzZXRfa2V5X2RhdGEgYyBrIGQgPVxuICAgICAgICB1bnNldF9kYXRhIGM7XG4gICAgICAgIGZvciBpPTAgdG8gQXJyYXkubGVuZ3RoIGsgLTEgZG9cbiAgICAgICAgICBzZXRfa2V5IGMgaSBrLihpKTtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgc2V0X2RhdGEgYyBkXG4gICAgICBsZXQgY2hlY2tfa2V5IGMgPVxuICAgICAgICBsZXQgcmVjIGNoZWNrIGMgaSA9XG4gICAgICAgICAgaSA8IDAgfHwgKGNoZWNrX2tleSBjIGkgJiYgY2hlY2sgYyAoaS0xKSkgaW5cbiAgICAgICAgY2hlY2sgYyAobGVuZ3RoIGMgLSAxKVxuICAgIGVuZClcblxuICBtb2R1bGUgTWFrZShIOiBIYXNodGJsLkhhc2hlZFR5cGUpOiAoUyB3aXRoIHR5cGUga2V5ID0gSC50IGFycmF5KSA9XG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gSC50XG4gICAgICAgIGxldCBlcXVhbCA9IEguZXF1YWxcbiAgICAgICAgbGV0IGhhc2ggKF9zZWVkOiBpbnQpIHggPSBILmhhc2ggeFxuICAgICAgZW5kKVxuICAgIGxldCBjcmVhdGUgc3ogPSBjcmVhdGUgfnJhbmRvbTpmYWxzZSBzelxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuICBlbmRcblxuICBtb2R1bGUgQnVja2V0ID0gc3RydWN0XG5cbiAgICB0eXBlIG5vbnJlYyAoJ2ssICdkKSB0ID0gKCdrLCAnZCkgdCBsaXN0IHJlZlxuICAgIGxldCBrbl9tYWtlID0gbWFrZVxuICAgIGxldCBtYWtlICgpID0gcmVmIFtdXG4gICAgbGV0IGFkZCBiIGsgZCA9IGIgOj0ga25fbWFrZSBrIGQgOjogIWJcblxuICAgIGxldCB0ZXN0X2tleXMgayBlID1cbiAgICAgIHRyeVxuICAgICAgICBpZiBsZW5ndGggZSA8PiBBcnJheS5sZW5ndGggayB0aGVuIHJhaXNlIEV4aXQ7XG4gICAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggayAtIDEgZG9cbiAgICAgICAgICBtYXRjaCBnZXRfa2V5IGUgaSB3aXRoXG4gICAgICAgICAgfCBTb21lIHggd2hlbiB4ID09IGsuKGkpIC0+ICgpXG4gICAgICAgICAgfCBfIC0+IHJhaXNlIEV4aXRcbiAgICAgICAgZG9uZTtcbiAgICAgICAgdHJ1ZVxuICAgICAgd2l0aCBFeGl0IC0+IGZhbHNlXG5cbiAgICBsZXQgcmVtb3ZlIGIgayA9XG4gICAgICBsZXQgcmVjIGxvb3AgbCBhY2MgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICB8IGggOjogdCB3aGVuIHRlc3Rfa2V5cyBrIGggLT4gYiA6PSBMaXN0LnJldl9hcHBlbmQgYWNjIHRcbiAgICAgICAgfCBoIDo6IHQgLT4gbG9vcCB0IChoIDo6IGFjYylcbiAgICAgIGluXG4gICAgICBsb29wICFiIFtdXG5cbiAgICBsZXQgZmluZCBiIGsgPVxuICAgICAgbWF0Y2ggTGlzdC5maW5kX29wdCAodGVzdF9rZXlzIGspICFiIHdpdGhcbiAgICAgIHwgU29tZSBlIC0+IGdldF9kYXRhIGVcbiAgICAgIHwgTm9uZSAtPiBOb25lXG5cbiAgICBsZXQgbGVuZ3RoIGIgPSBMaXN0Lmxlbmd0aCAhYlxuICAgIGxldCBjbGVhciBiID0gYiA6PSBbXVxuXG4gIGVuZFxuXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICBNYW51ZWwgU2VycmFubyBldCBYYXZpZXIgTGVyb3ksIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtCaWdhcnJheV06IGxhcmdlLCBtdWx0aS1kaW1lbnNpb25hbCwgbnVtZXJpY2FsIGFycmF5cyAqKVxuXG4oKiBUaGVzZSB0eXBlcyBpbiBtdXN0IGJlIGtlcHQgaW4gc3luYyB3aXRoIHRoZSB0YWJsZXMgaW5cbiAgIC4uL3R5cGluZy90eXBlb3B0Lm1sICopXG5cbnR5cGUgZmxvYXQzMl9lbHQgPSBGbG9hdDMyX2VsdFxudHlwZSBmbG9hdDY0X2VsdCA9IEZsb2F0NjRfZWx0XG50eXBlIGludDhfc2lnbmVkX2VsdCA9IEludDhfc2lnbmVkX2VsdFxudHlwZSBpbnQ4X3Vuc2lnbmVkX2VsdCA9IEludDhfdW5zaWduZWRfZWx0XG50eXBlIGludDE2X3NpZ25lZF9lbHQgPSBJbnQxNl9zaWduZWRfZWx0XG50eXBlIGludDE2X3Vuc2lnbmVkX2VsdCA9IEludDE2X3Vuc2lnbmVkX2VsdFxudHlwZSBpbnQzMl9lbHQgPSBJbnQzMl9lbHRcbnR5cGUgaW50NjRfZWx0ID0gSW50NjRfZWx0XG50eXBlIGludF9lbHQgPSBJbnRfZWx0XG50eXBlIG5hdGl2ZWludF9lbHQgPSBOYXRpdmVpbnRfZWx0XG50eXBlIGNvbXBsZXgzMl9lbHQgPSBDb21wbGV4MzJfZWx0XG50eXBlIGNvbXBsZXg2NF9lbHQgPSBDb21wbGV4NjRfZWx0XG5cbnR5cGUgKCdhLCAnYikga2luZCA9XG4gICAgRmxvYXQzMiA6IChmbG9hdCwgZmxvYXQzMl9lbHQpIGtpbmRcbiAgfCBGbG9hdDY0IDogKGZsb2F0LCBmbG9hdDY0X2VsdCkga2luZFxuICB8IEludDhfc2lnbmVkIDogKGludCwgaW50OF9zaWduZWRfZWx0KSBraW5kXG4gIHwgSW50OF91bnNpZ25lZCA6IChpbnQsIGludDhfdW5zaWduZWRfZWx0KSBraW5kXG4gIHwgSW50MTZfc2lnbmVkIDogKGludCwgaW50MTZfc2lnbmVkX2VsdCkga2luZFxuICB8IEludDE2X3Vuc2lnbmVkIDogKGludCwgaW50MTZfdW5zaWduZWRfZWx0KSBraW5kXG4gIHwgSW50MzIgOiAoaW50MzIsIGludDMyX2VsdCkga2luZFxuICB8IEludDY0IDogKGludDY0LCBpbnQ2NF9lbHQpIGtpbmRcbiAgfCBJbnQgOiAoaW50LCBpbnRfZWx0KSBraW5kXG4gIHwgTmF0aXZlaW50IDogKG5hdGl2ZWludCwgbmF0aXZlaW50X2VsdCkga2luZFxuICB8IENvbXBsZXgzMiA6IChDb21wbGV4LnQsIGNvbXBsZXgzMl9lbHQpIGtpbmRcbiAgfCBDb21wbGV4NjQgOiAoQ29tcGxleC50LCBjb21wbGV4NjRfZWx0KSBraW5kXG4gIHwgQ2hhciA6IChjaGFyLCBpbnQ4X3Vuc2lnbmVkX2VsdCkga2luZFxuXG50eXBlIGNfbGF5b3V0ID0gQ19sYXlvdXRfdHlwXG50eXBlIGZvcnRyYW5fbGF5b3V0ID0gRm9ydHJhbl9sYXlvdXRfdHlwICgqKilcblxudHlwZSAnYSBsYXlvdXQgPVxuICAgIENfbGF5b3V0OiBjX2xheW91dCBsYXlvdXRcbiAgfCBGb3J0cmFuX2xheW91dDogZm9ydHJhbl9sYXlvdXQgbGF5b3V0XG5cbigqIEtlZXAgdGhvc2UgY29uc3RhbnRzIGluIHN5bmMgd2l0aCB0aGUgY2FtbF9iYV9raW5kIGVudW1lcmF0aW9uXG4gICBpbiBiaWdhcnJheS5oICopXG5cbmxldCBmbG9hdDMyID0gRmxvYXQzMlxubGV0IGZsb2F0NjQgPSBGbG9hdDY0XG5sZXQgaW50OF9zaWduZWQgPSBJbnQ4X3NpZ25lZFxubGV0IGludDhfdW5zaWduZWQgPSBJbnQ4X3Vuc2lnbmVkXG5sZXQgaW50MTZfc2lnbmVkID0gSW50MTZfc2lnbmVkXG5sZXQgaW50MTZfdW5zaWduZWQgPSBJbnQxNl91bnNpZ25lZFxubGV0IGludDMyID0gSW50MzJcbmxldCBpbnQ2NCA9IEludDY0XG5sZXQgaW50ID0gSW50XG5sZXQgbmF0aXZlaW50ID0gTmF0aXZlaW50XG5sZXQgY29tcGxleDMyID0gQ29tcGxleDMyXG5sZXQgY29tcGxleDY0ID0gQ29tcGxleDY0XG5sZXQgY2hhciA9IENoYXJcblxubGV0IGtpbmRfc2l6ZV9pbl9ieXRlcyA6IHR5cGUgYSBiLiAoYSwgYikga2luZCAtPiBpbnQgPSBmdW5jdGlvblxuICB8IEZsb2F0MzIgLT4gNFxuICB8IEZsb2F0NjQgLT4gOFxuICB8IEludDhfc2lnbmVkIC0+IDFcbiAgfCBJbnQ4X3Vuc2lnbmVkIC0+IDFcbiAgfCBJbnQxNl9zaWduZWQgLT4gMlxuICB8IEludDE2X3Vuc2lnbmVkIC0+IDJcbiAgfCBJbnQzMiAtPiA0XG4gIHwgSW50NjQgLT4gOFxuICB8IEludCAtPiBTeXMud29yZF9zaXplIC8gOFxuICB8IE5hdGl2ZWludCAtPiBTeXMud29yZF9zaXplIC8gOFxuICB8IENvbXBsZXgzMiAtPiA4XG4gIHwgQ29tcGxleDY0IC0+IDE2XG4gIHwgQ2hhciAtPiAxXG5cbigqIEtlZXAgdGhvc2UgY29uc3RhbnRzIGluIHN5bmMgd2l0aCB0aGUgY2FtbF9iYV9sYXlvdXQgZW51bWVyYXRpb25cbiAgIGluIGJpZ2FycmF5LmggKilcblxubGV0IGNfbGF5b3V0ID0gQ19sYXlvdXRcbmxldCBmb3J0cmFuX2xheW91dCA9IEZvcnRyYW5fbGF5b3V0XG5cbm1vZHVsZSBHZW5hcnJheSA9IHN0cnVjdFxuICB0eXBlICghJ2EsICEnYiwgISdjKSB0XG4gIGV4dGVybmFsIGNyZWF0ZTogKCdhLCAnYikga2luZCAtPiAnYyBsYXlvdXQgLT4gaW50IGFycmF5IC0+ICgnYSwgJ2IsICdjKSB0XG4gICAgID0gXCJjYW1sX2JhX2NyZWF0ZVwiXG4gIGV4dGVybmFsIGdldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IGFycmF5IC0+ICdhXG4gICAgID0gXCJjYW1sX2JhX2dldF9nZW5lcmljXCJcbiAgZXh0ZXJuYWwgc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgYXJyYXkgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiY2FtbF9iYV9zZXRfZ2VuZXJpY1wiXG5cbiAgbGV0IHJlYyBjbG9vcCBhcnIgaWR4IGYgY29sIG1heCA9XG4gICAgaWYgY29sID0gQXJyYXkubGVuZ3RoIGlkeCB0aGVuIHNldCBhcnIgaWR4IChmIGlkeClcbiAgICBlbHNlIGZvciBqID0gMCB0byBwcmVkIG1heC4oY29sKSBkb1xuICAgICAgICAgICBpZHguKGNvbCkgPC0gajtcbiAgICAgICAgICAgY2xvb3AgYXJyIGlkeCBmIChzdWNjIGNvbCkgbWF4XG4gICAgICAgICBkb25lXG4gIGxldCByZWMgZmxvb3AgYXJyIGlkeCBmIGNvbCBtYXggPVxuICAgIGlmIGNvbCA8IDAgdGhlbiBzZXQgYXJyIGlkeCAoZiBpZHgpXG4gICAgZWxzZSBmb3IgaiA9IDEgdG8gbWF4Lihjb2wpIGRvXG4gICAgICAgICAgIGlkeC4oY29sKSA8LSBqO1xuICAgICAgICAgICBmbG9vcCBhcnIgaWR4IGYgKHByZWQgY29sKSBtYXhcbiAgICAgICAgIGRvbmVcbiAgbGV0IGluaXQgKHR5cGUgdCkga2luZCAobGF5b3V0IDogdCBsYXlvdXQpIGRpbXMgZiA9XG4gICAgbGV0IGFyciA9IGNyZWF0ZSBraW5kIGxheW91dCBkaW1zIGluXG4gICAgbWF0Y2ggQXJyYXkubGVuZ3RoIGRpbXMsIGxheW91dCB3aXRoXG4gICAgfCAwLCBfIC0+IGFyclxuICAgIHwgZGxlbiwgQ19sYXlvdXQgLT4gY2xvb3AgYXJyIChBcnJheS5tYWtlIGRsZW4gMCkgZiAwIGRpbXM7IGFyclxuICAgIHwgZGxlbiwgRm9ydHJhbl9sYXlvdXQgLT4gZmxvb3AgYXJyIChBcnJheS5tYWtlIGRsZW4gMSkgZiAocHJlZCBkbGVuKSBkaW1zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyXG5cbiAgZXh0ZXJuYWwgbnVtX2RpbXM6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiY2FtbF9iYV9udW1fZGltc1wiXG4gIGV4dGVybmFsIG50aF9kaW06ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgPSBcImNhbWxfYmFfZGltXCJcbiAgbGV0IGRpbXMgYSA9XG4gICAgbGV0IG4gPSBudW1fZGltcyBhIGluXG4gICAgbGV0IGQgPSBBcnJheS5tYWtlIG4gMCBpblxuICAgIGZvciBpID0gMCB0byBuLTEgZG8gZC4oaSkgPC0gbnRoX2RpbSBhIGkgZG9uZTtcbiAgICBkXG5cbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9XG4gICAgKGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpKSAqIChBcnJheS5mb2xkX2xlZnQgKCAqICkgMSAoZGltcyBhcnIpKVxuXG4gIGV4dGVybmFsIHN1Yl9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGNfbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHN1Yl9yaWdodDogKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBleHRlcm5hbCBzbGljZV9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhLCAnYiwgY19sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc2xpY2VcIlxuICBleHRlcm5hbCBzbGljZV9yaWdodDogKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHQgLT4gaW50IGFycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3NsaWNlXCJcbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdFxuICAgICA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcbmVuZFxuXG5tb2R1bGUgQXJyYXkwID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHQgPSAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICBsZXQgY3JlYXRlIGtpbmQgbGF5b3V0ID1cbiAgICBHZW5hcnJheS5jcmVhdGUga2luZCBsYXlvdXQgW3x8XVxuICBsZXQgZ2V0IGFyciA9IEdlbmFycmF5LmdldCBhcnIgW3x8XVxuICBsZXQgc2V0IGFyciA9IEdlbmFycmF5LnNldCBhcnIgW3x8XVxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9IGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpXG5cbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdCA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcblxuICBsZXQgb2ZfdmFsdWUga2luZCBsYXlvdXQgdiA9XG4gICAgbGV0IGEgPSBjcmVhdGUga2luZCBsYXlvdXQgaW5cbiAgICBzZXQgYSB2O1xuICAgIGFcbiAgbGV0IGluaXQgPSBvZl92YWx1ZVxuZW5kXG5cbm1vZHVsZSBBcnJheTEgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgZGltID1cbiAgICBHZW5hcnJheS5jcmVhdGUga2luZCBsYXlvdXQgW3xkaW18XVxuICBleHRlcm5hbCBnZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfcmVmXzFcIlxuICBleHRlcm5hbCBzZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlY2FtbF9iYV9zZXRfMVwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8xXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMVwiXG4gIGV4dGVybmFsIGRpbTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMVwiXG4gIGV4dGVybmFsIGtpbmQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IpIGtpbmQgPSBcImNhbWxfYmFfa2luZFwiXG4gIGV4dGVybmFsIGxheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2MgbGF5b3V0ID0gXCJjYW1sX2JhX2xheW91dFwiXG5cbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID1cbiAgICAoa2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycikpICogKGRpbSBhcnIpXG5cbiAgZXh0ZXJuYWwgc3ViOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsICdjKSB0ID0gXCJjYW1sX2JhX3N1YlwiXG4gIGxldCBzbGljZSAodHlwZSB0KSAoYSA6IChfLCBfLCB0KSBHZW5hcnJheS50KSBuID1cbiAgICBtYXRjaCBsYXlvdXQgYSB3aXRoXG4gICAgfCBDX2xheW91dCAtPiAoR2VuYXJyYXkuc2xpY2VfbGVmdCBhIFt8bnxdIDogKF8sIF8sIHQpIEdlbmFycmF5LnQpXG4gICAgfCBGb3J0cmFuX2xheW91dCAtPiAoR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG58XTogKF8sIF8sIHQpIEdlbmFycmF5LnQpXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXQgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG4gIGxldCBjX2luaXQgYXJyIGRpbSBmID1cbiAgICBmb3IgaSA9IDAgdG8gcHJlZCBkaW0gZG8gdW5zYWZlX3NldCBhcnIgaSAoZiBpKSBkb25lXG4gIGxldCBmb3J0cmFuX2luaXQgYXJyIGRpbSBmID1cbiAgICBmb3IgaSA9IDEgdG8gZGltIGRvIHVuc2FmZV9zZXQgYXJyIGkgKGYgaSkgZG9uZVxuICBsZXQgaW5pdCAodHlwZSB0KSBraW5kIChsYXlvdXQgOiB0IGxheW91dCkgZGltIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltIGluXG4gICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IGNfaW5pdCBhcnIgZGltIGY7IGFyclxuICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gZm9ydHJhbl9pbml0IGFyciBkaW0gZjsgYXJyXG4gIGxldCBvZl9hcnJheSAodHlwZSB0KSBraW5kIChsYXlvdXQ6IHQgbGF5b3V0KSBkYXRhID1cbiAgICBsZXQgYmEgPSBjcmVhdGUga2luZCBsYXlvdXQgKEFycmF5Lmxlbmd0aCBkYXRhKSBpblxuICAgIGxldCBvZnMgPVxuICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgQ19sYXlvdXQgLT4gMFxuICAgICAgfCBGb3J0cmFuX2xheW91dCAtPiAxXG4gICAgaW5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGRhdGEgLSAxIGRvIHVuc2FmZV9zZXQgYmEgKGkgKyBvZnMpIGRhdGEuKGkpIGRvbmU7XG4gICAgYmFcbmVuZFxuXG5tb2R1bGUgQXJyYXkyID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHQgPSAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICBsZXQgY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiA9XG4gICAgR2VuYXJyYXkuY3JlYXRlIGtpbmQgbGF5b3V0IFt8ZGltMTsgZGltMnxdXG4gIGV4dGVybmFsIGdldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfcmVmXzJcIlxuICBleHRlcm5hbCBzZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWNhbWxfYmFfc2V0XzJcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICdhXG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzJcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMlwiXG4gIGV4dGVybmFsIGRpbTE6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzFcIlxuICBleHRlcm5hbCBkaW0yOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8yXCJcbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcblxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPVxuICAgIChraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKSkgKiAoZGltMSBhcnIpICogKGRpbTIgYXJyKVxuXG4gIGV4dGVybmFsIHN1Yl9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGNfbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHN1Yl9yaWdodDpcbiAgICAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGxldCBzbGljZV9sZWZ0IGEgbiA9IEdlbmFycmF5LnNsaWNlX2xlZnQgYSBbfG58XVxuICBsZXQgc2xpY2VfcmlnaHQgYSBuID0gR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG58XVxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0ID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuICBsZXQgY19pbml0IGFyciBkaW0xIGRpbTIgZiA9XG4gICAgZm9yIGkgPSAwIHRvIHByZWQgZGltMSBkb1xuICAgICAgZm9yIGogPSAwIHRvIHByZWQgZGltMiBkb1xuICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogKGYgaSBqKVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGYgPVxuICAgIGZvciBqID0gMSB0byBkaW0yIGRvXG4gICAgICBmb3IgaSA9IDEgdG8gZGltMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogKGYgaSBqKVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGluaXQgKHR5cGUgdCkga2luZCAobGF5b3V0IDogdCBsYXlvdXQpIGRpbTEgZGltMiBmID1cbiAgICBsZXQgYXJyID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBpblxuICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgfCBDX2xheW91dCAtPiBjX2luaXQgYXJyIGRpbTEgZGltMiBmOyBhcnJcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGY7IGFyclxuICBsZXQgb2ZfYXJyYXkgKHR5cGUgdCkga2luZCAobGF5b3V0OiB0IGxheW91dCkgZGF0YSA9XG4gICAgbGV0IGRpbTEgPSBBcnJheS5sZW5ndGggZGF0YSBpblxuICAgIGxldCBkaW0yID0gaWYgZGltMSA9IDAgdGhlbiAwIGVsc2UgQXJyYXkubGVuZ3RoIGRhdGEuKDApIGluXG4gICAgbGV0IGJhID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBpblxuICAgIGxldCBvZnMgPVxuICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgQ19sYXlvdXQgLT4gMFxuICAgICAgfCBGb3J0cmFuX2xheW91dCAtPiAxXG4gICAgaW5cbiAgICBmb3IgaSA9IDAgdG8gZGltMSAtIDEgZG9cbiAgICAgIGxldCByb3cgPSBkYXRhLihpKSBpblxuICAgICAgaWYgQXJyYXkubGVuZ3RoIHJvdyA8PiBkaW0yIHRoZW5cbiAgICAgICAgaW52YWxpZF9hcmcoXCJCaWdhcnJheS5BcnJheTIub2ZfYXJyYXk6IG5vbi1yZWN0YW5ndWxhciBkYXRhXCIpO1xuICAgICAgZm9yIGogPSAwIHRvIGRpbTIgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgYmEgKGkgKyBvZnMpIChqICsgb2ZzKSByb3cuKGopXG4gICAgICBkb25lXG4gICAgZG9uZTtcbiAgICBiYVxuZW5kXG5cbm1vZHVsZSBBcnJheTMgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGRpbTMgPVxuICAgIEdlbmFycmF5LmNyZWF0ZSBraW5kIGxheW91dCBbfGRpbTE7IGRpbTI7IGRpbTN8XVxuICBleHRlcm5hbCBnZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV9yZWZfM1wiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfc2V0XzNcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiAnYVxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8zXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8zXCJcbiAgZXh0ZXJuYWwgZGltMTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMVwiXG4gIGV4dGVybmFsIGRpbTI6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzJcIlxuICBleHRlcm5hbCBkaW0zOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8zXCJcbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcblxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPVxuICAgIChraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKSkgKiAoZGltMSBhcnIpICogKGRpbTIgYXJyKSAqIChkaW0zIGFycilcblxuICBleHRlcm5hbCBzdWJfbGVmdDogKCdhLCAnYiwgY19sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCBjX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBleHRlcm5hbCBzdWJfcmlnaHQ6XG4gICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgbGV0IHNsaWNlX2xlZnRfMSBhIG4gbSA9IEdlbmFycmF5LnNsaWNlX2xlZnQgYSBbfG47IG18XVxuICBsZXQgc2xpY2VfcmlnaHRfMSBhIG4gbSA9IEdlbmFycmF5LnNsaWNlX3JpZ2h0IGEgW3xuOyBtfF1cbiAgbGV0IHNsaWNlX2xlZnRfMiBhIG4gPSBHZW5hcnJheS5zbGljZV9sZWZ0IGEgW3xufF1cbiAgbGV0IHNsaWNlX3JpZ2h0XzIgYSBuID0gR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG58XVxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0ID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuICBsZXQgY19pbml0IGFyciBkaW0xIGRpbTIgZGltMyBmID1cbiAgICBmb3IgaSA9IDAgdG8gcHJlZCBkaW0xIGRvXG4gICAgICBmb3IgaiA9IDAgdG8gcHJlZCBkaW0yIGRvXG4gICAgICAgIGZvciBrID0gMCB0byBwcmVkIGRpbTMgZG9cbiAgICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogayAoZiBpIGogaylcbiAgICAgICAgZG9uZVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGRpbTMgZiA9XG4gICAgZm9yIGsgPSAxIHRvIGRpbTMgZG9cbiAgICAgIGZvciBqID0gMSB0byBkaW0yIGRvXG4gICAgICAgIGZvciBpID0gMSB0byBkaW0xIGRvXG4gICAgICAgICAgdW5zYWZlX3NldCBhcnIgaSBqIGsgKGYgaSBqIGspXG4gICAgICAgIGRvbmVcbiAgICAgIGRvbmVcbiAgICBkb25lXG4gIGxldCBpbml0ICh0eXBlIHQpIGtpbmQgKGxheW91dCA6IHQgbGF5b3V0KSBkaW0xIGRpbTIgZGltMyBmID1cbiAgICBsZXQgYXJyID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBkaW0zIGluXG4gICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IGNfaW5pdCBhcnIgZGltMSBkaW0yIGRpbTMgZjsgYXJyXG4gICAgfCBGb3J0cmFuX2xheW91dCAtPiBmb3J0cmFuX2luaXQgYXJyIGRpbTEgZGltMiBkaW0zIGY7IGFyclxuICBsZXQgb2ZfYXJyYXkgKHR5cGUgdCkga2luZCAobGF5b3V0OiB0IGxheW91dCkgZGF0YSA9XG4gICAgbGV0IGRpbTEgPSBBcnJheS5sZW5ndGggZGF0YSBpblxuICAgIGxldCBkaW0yID0gaWYgZGltMSA9IDAgdGhlbiAwIGVsc2UgQXJyYXkubGVuZ3RoIGRhdGEuKDApIGluXG4gICAgbGV0IGRpbTMgPSBpZiBkaW0yID0gMCB0aGVuIDAgZWxzZSBBcnJheS5sZW5ndGggZGF0YS4oMCkuKDApIGluXG4gICAgbGV0IGJhID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBkaW0zIGluXG4gICAgbGV0IG9mcyA9XG4gICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICBDX2xheW91dCAtPiAwXG4gICAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IDFcbiAgICBpblxuICAgIGZvciBpID0gMCB0byBkaW0xIC0gMSBkb1xuICAgICAgbGV0IHJvdyA9IGRhdGEuKGkpIGluXG4gICAgICBpZiBBcnJheS5sZW5ndGggcm93IDw+IGRpbTIgdGhlblxuICAgICAgICBpbnZhbGlkX2FyZyhcIkJpZ2FycmF5LkFycmF5My5vZl9hcnJheTogbm9uLWN1YmljIGRhdGFcIik7XG4gICAgICBmb3IgaiA9IDAgdG8gZGltMiAtIDEgZG9cbiAgICAgICAgbGV0IGNvbCA9IHJvdy4oaikgaW5cbiAgICAgICAgaWYgQXJyYXkubGVuZ3RoIGNvbCA8PiBkaW0zIHRoZW5cbiAgICAgICAgICBpbnZhbGlkX2FyZyhcIkJpZ2FycmF5LkFycmF5My5vZl9hcnJheTogbm9uLWN1YmljIGRhdGFcIik7XG4gICAgICAgIGZvciBrID0gMCB0byBkaW0zIC0gMSBkb1xuICAgICAgICAgIHVuc2FmZV9zZXQgYmEgKGkgKyBvZnMpIChqICsgb2ZzKSAoayArIG9mcykgY29sLihrKVxuICAgICAgICBkb25lXG4gICAgICBkb25lXG4gICAgZG9uZTtcbiAgICBiYVxuZW5kXG5cbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MDogKCdhLCAnYiwgJ2MpIEFycmF5MC50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MTogKCdhLCAnYiwgJ2MpIEFycmF5MS50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MjogKCdhLCAnYiwgJ2MpIEFycmF5Mi50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MzogKCdhLCAnYiwgJ2MpIEFycmF5My50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmxldCBhcnJheTBfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAwIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkwX29mX2dlbmFycmF5XCJcbmxldCBhcnJheTFfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAxIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkxX29mX2dlbmFycmF5XCJcbmxldCBhcnJheTJfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAyIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkyX29mX2dlbmFycmF5XCJcbmxldCBhcnJheTNfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAzIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkzX29mX2dlbmFycmF5XCJcblxuZXh0ZXJuYWwgcmVzaGFwZTpcbiAgICgnYSwgJ2IsICdjKSBHZW5hcnJheS50IC0+IGludCBhcnJheSAtPiAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICAgPSBcImNhbWxfYmFfcmVzaGFwZVwiXG5sZXQgcmVzaGFwZV8wIGEgPSByZXNoYXBlIGEgW3x8XVxubGV0IHJlc2hhcGVfMSBhIGRpbTEgPSByZXNoYXBlIGEgW3xkaW0xfF1cbmxldCByZXNoYXBlXzIgYSBkaW0xIGRpbTIgPSByZXNoYXBlIGEgW3xkaW0xO2RpbTJ8XVxubGV0IHJlc2hhcGVfMyBhIGRpbTEgZGltMiBkaW0zID0gcmVzaGFwZSBhIFt8ZGltMTtkaW0yO2RpbTN8XVxuXG4oKiBGb3JjZSBjYW1sX2JhX2dldF97MSwyLDMsTn0gdG8gYmUgbGlua2VkIGluLCBzaW5jZSB3ZSBkb24ndCByZWZlclxuICAgdG8gdGhvc2UgcHJpbWl0aXZlcyBkaXJlY3RseSBpbiB0aGlzIGZpbGUgKilcblxubGV0IF8gPVxuICBsZXQgXyA9IEdlbmFycmF5LmdldCBpblxuICBsZXQgXyA9IEFycmF5MS5nZXQgaW5cbiAgbGV0IF8gPSBBcnJheTIuZ2V0IGluXG4gIGxldCBfID0gQXJyYXkzLmdldCBpblxuICAoKVxuXG5bQEBAb2NhbWwud2FybmluZyBcIi0zMlwiXVxuZXh0ZXJuYWwgZ2V0MTogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX2dldF8xXCJcbmV4dGVybmFsIGdldDI6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9nZXRfMlwiXG5leHRlcm5hbCBnZXQzOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfZ2V0XzNcIlxuZXh0ZXJuYWwgc2V0MTogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX3NldF8xXCJcbmV4dGVybmFsIHNldDI6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9zZXRfMlwiXG5leHRlcm5hbCBzZXQzOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfc2V0XzNcIlxuIiwiKCogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIENhdGFsYSBjb21waWxlciwgYSBzcGVjaWZpY2F0aW9uIGxhbmd1YWdlIGZvciB0YXhcbiAgIGFuZCBzb2NpYWwgYmVuZWZpdHMgY29tcHV0YXRpb24gcnVsZXMuIENvcHlyaWdodCAoQykgMjAyMCBJbnJpYSwgY29udHJpYnV0b3I6XG4gICBEZW5pcyBNZXJpZ291eCA8ZGVuaXMubWVyaWdvdXhAaW5yaWEuZnI+LCBFbWlsZSBSb2xsZXkgPGVtaWxlLnJvbGxleUB0dXRhLmlvPlxuXG4gICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdFxuICAgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2ZcbiAgIHRoZSBMaWNlbnNlIGF0XG5cbiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsIFdJVEhPVVRcbiAgIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZVxuICAgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXJcbiAgIHRoZSBMaWNlbnNlLiAqKVxuXG4oKiBBbiBpbnRlZ2VyIG51bWJlciBvZiBjZW50cyAqKVxudHlwZSBtb25leSA9IFoudFxudHlwZSBpbnRlZ2VyID0gWi50XG50eXBlIGRlY2ltYWwgPSBRLnRcbnR5cGUgZGF0ZSA9IERhdGVzX2NhbGMuRGF0ZXMuZGF0ZVxudHlwZSBkYXRlX3JvdW5kaW5nID0gRGF0ZXNfY2FsYy5EYXRlcy5kYXRlX3JvdW5kaW5nXG50eXBlIGR1cmF0aW9uID0gRGF0ZXNfY2FsYy5EYXRlcy5wZXJpb2RcbnR5cGUgJ2EgZW9wdGlvbiA9IEVOb25lIG9mIHVuaXQgfCBFU29tZSBvZiAnYVxudHlwZSBpb19pbnB1dCA9IE5vSW5wdXQgfCBPbmx5SW5wdXQgfCBSZWVudHJhbnQgW0BAZGVyaXZpbmcgeW9qc29uX29mXVxudHlwZSBpb19sb2cgPSB7IGlvX2lucHV0IDogaW9faW5wdXQ7IGlvX291dHB1dCA6IGJvb2wgfSBbQEBkZXJpdmluZyB5b2pzb25fb2ZdXG5cbnR5cGUgc291cmNlX3Bvc2l0aW9uID0ge1xuICBmaWxlbmFtZSA6IHN0cmluZztcbiAgc3RhcnRfbGluZSA6IGludDtcbiAgc3RhcnRfY29sdW1uIDogaW50O1xuICBlbmRfbGluZSA6IGludDtcbiAgZW5kX2NvbHVtbiA6IGludDtcbiAgbGF3X2hlYWRpbmdzIDogc3RyaW5nIGxpc3Q7XG59XG5bQEBkZXJpdmluZyB5b2pzb25fb2ZdXG5cbmV4Y2VwdGlvbiBFbXB0eUVycm9yXG5leGNlcHRpb24gQXNzZXJ0aW9uRmFpbGVkIG9mIHNvdXJjZV9wb3NpdGlvblxuZXhjZXB0aW9uIENvbmZsaWN0RXJyb3Igb2Ygc291cmNlX3Bvc2l0aW9uXG5leGNlcHRpb24gVW5jb21wYXJhYmxlRHVyYXRpb25zXG5leGNlcHRpb24gSW5kaXZpc2libGVEdXJhdGlvbnNcbmV4Y2VwdGlvbiBJbXBvc3NpYmxlRGF0ZVxuZXhjZXB0aW9uIE5vVmFsdWVQcm92aWRlZCBvZiBzb3VyY2VfcG9zaXRpb25cblxubGV0IG1vbmV5X29mX2NlbnRzX3N0cmluZyAoY2VudHMgOiBzdHJpbmcpIDogbW9uZXkgPSBaLm9mX3N0cmluZyBjZW50c1xubGV0IG1vbmV5X29mX3VuaXRzX2ludCAodW5pdHMgOiBpbnQpIDogbW9uZXkgPSBaLihvZl9pbnQgdW5pdHMgKiBvZl9pbnQgMTAwKVxubGV0IG1vbmV5X29mX2NlbnRzX2ludGVnZXIgKGNlbnRzIDogaW50ZWdlcikgOiBtb25leSA9IGNlbnRzXG5sZXQgbW9uZXlfdG9fZmxvYXQgKG0gOiBtb25leSkgOiBmbG9hdCA9IFoudG9fZmxvYXQgbSAvLiAxMDAuXG5cbmxldCBtb25leV9vZl9kZWNpbWFsIChkIDogZGVjaW1hbCkgOiBtb25leSA9XG4gIFEudG9fYmlnaW50IChRLm11bCBkIChRLm9mX2ludCAxMDApKVxuXG5sZXQgbW9uZXlfdG9fc3RyaW5nIChtIDogbW9uZXkpIDogc3RyaW5nID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJS4yZlwiIFEuKHRvX2Zsb2F0IChvZl9iaWdpbnQgbSAvIG9mX2ludCAxMDApKVxuXG5sZXQgbW9uZXlfdG9fY2VudHMgbSA9IG1cblxubGV0IG1vbmV5X3JvdW5kIChtIDogbW9uZXkpIDogbW9uZXkgPVxuICBsZXQgdW5pdHMsIGNlbnRzID0gWi5kaXZfcmVtIG0gKFoub2ZfaW50IDEwMCkgaW5cbiAgKCogSWYgW21dIGlzIG5lZ2F0aXZlLCBbY2VudHNdIHdpbGwgYWxzbyBiZSBuZWdhdGl2ZS4gKilcbiAgaWYgWi4oYWJzIGNlbnRzIDwgb2ZfaW50IDUwKSB0aGVuIFouKHVuaXRzICogb2ZfaW50IDEwMClcbiAgZWxzZSBaLigodW5pdHMgKyBvZl9pbnQgKHNpZ24gdW5pdHMpKSAqIG9mX2ludCAxMDApXG5cbmxldCBkZWNpbWFsX29mX3N0cmluZyAoZCA6IHN0cmluZykgOiBkZWNpbWFsID0gUS5vZl9zdHJpbmcgZFxubGV0IGRlY2ltYWxfdG9fZmxvYXQgKGQgOiBkZWNpbWFsKSA6IGZsb2F0ID0gUS50b19mbG9hdCBkXG5sZXQgZGVjaW1hbF9vZl9mbG9hdCAoZCA6IGZsb2F0KSA6IGRlY2ltYWwgPSBRLm9mX2Zsb2F0IGRcbmxldCBkZWNpbWFsX29mX2ludGVnZXIgKGQgOiBpbnRlZ2VyKSA6IGRlY2ltYWwgPSBRLm9mX2JpZ2ludCBkXG5cbmxldCBkZWNpbWFsX3RvX3N0cmluZyB+KG1heF9wcmVjX2RpZ2l0cyA6IGludCkgKGkgOiBkZWNpbWFsKSA6IHN0cmluZyA9XG4gIGxldCBzaWduID0gUS5zaWduIGkgaW5cbiAgbGV0IG4gPSBaLmFicyAoUS5udW0gaSkgaW5cbiAgbGV0IGQgPSBaLmFicyAoUS5kZW4gaSkgaW5cbiAgbGV0IGludF9wYXJ0ID0gWi5lZGl2IG4gZCBpblxuICBsZXQgbiA9IHJlZiAoWi5lcmVtIG4gZCkgaW5cbiAgbGV0IGRpZ2l0cyA9IHJlZiBbXSBpblxuICBsZXQgbGVhZGluZ196ZXJvZXMgKGRpZ2l0cyA6IFoudCBsaXN0KSA6IGludCA9XG4gICAgbWF0Y2hcbiAgICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgICAoZnVuIGRpZ2l0IG51bV9sZWFkaW5nX3plcm9lcyAtPlxuICAgICAgICAgIG1hdGNoIG51bV9sZWFkaW5nX3plcm9lcyB3aXRoXG4gICAgICAgICAgfCBgRW5kIF8gLT4gbnVtX2xlYWRpbmdfemVyb2VzXG4gICAgICAgICAgfCBgQmVnaW4gaSAtPiBpZiBaLihkaWdpdCA9IHplcm8pIHRoZW4gYEJlZ2luIChpICsgMSkgZWxzZSBgRW5kIGkpXG4gICAgICAgIGRpZ2l0cyAoYEJlZ2luIDApXG4gICAgd2l0aFxuICAgIHwgYEVuZCBpIC0+IGlcbiAgICB8IGBCZWdpbiBpIC0+IGlcbiAgaW5cbiAgd2hpbGVcbiAgICAhbiA8PiBaLnplcm9cbiAgICAmJiBMaXN0Lmxlbmd0aCAhZGlnaXRzIC0gbGVhZGluZ196ZXJvZXMgIWRpZ2l0cyA8IG1heF9wcmVjX2RpZ2l0c1xuICBkb1xuICAgIG4gOj0gWi5tdWwgIW4gKFoub2ZfaW50IDEwKTtcbiAgICBkaWdpdHMgOj0gWi5lZGl2ICFuIGQgOjogIWRpZ2l0cztcbiAgICBuIDo9IFouZXJlbSAhbiBkXG4gIGRvbmU7XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVzJWEuJWElc1wiXG4gICAgKGlmIHNpZ24gPCAwIHRoZW4gXCItXCIgZWxzZSBcIlwiKVxuICAgIFoucHBfcHJpbnQgaW50X3BhcnRcbiAgICAoRm9ybWF0LnBwX3ByaW50X2xpc3RcbiAgICAgICB+cHBfc2VwOihmdW4gX2ZtdCAoKSAtPiAoKSlcbiAgICAgICAoZnVuIGZtdCBkaWdpdCAtPiBGb3JtYXQuZnByaW50ZiBmbXQgXCIlYVwiIFoucHBfcHJpbnQgZGlnaXQpKVxuICAgIChMaXN0LnJldiAhZGlnaXRzKVxuICAgIChpZiBMaXN0Lmxlbmd0aCAhZGlnaXRzIC0gbGVhZGluZ196ZXJvZXMgIWRpZ2l0cyA9IG1heF9wcmVjX2RpZ2l0cyB0aGVuIFwi4oCmXCJcbiAgICBlbHNlIFwiXCIpXG5cbmxldCBkZWNpbWFsX3JvdW5kIChxIDogZGVjaW1hbCkgOiBkZWNpbWFsID1cbiAgKCogSW1wbGVtZW50cyB0aGUgd29ya2Fyb3VuZCBieVxuICAgICBodHRwczovL2dtcGxpYi5vcmcvbGlzdC1hcmNoaXZlcy9nbXAtZGlzY3Vzcy8yMDA5LU1heS8wMDM3NjcuaHRtbCAqKVxuICBsZXQgbiA9IFEubnVtIHEgaW5cbiAgbGV0IGQgPSBRLmRlbiBxIGluXG4gIFEub2ZfYmlnaW50IFouKGZkaXYgKChvZl9pbnQgMiAqIG4pICsgZCkgKG9mX2ludCAyICogZCkpXG5cbmxldCBkZWNpbWFsX29mX21vbmV5IChtIDogbW9uZXkpIDogZGVjaW1hbCA9XG4gIFEuZGl2IChRLm9mX2JpZ2ludCBtKSAoUS5vZl9pbnQgMTAwKVxuXG5sZXQgaW50ZWdlcl9vZl9zdHJpbmcgKHMgOiBzdHJpbmcpIDogaW50ZWdlciA9IFoub2Zfc3RyaW5nIHNcbmxldCBpbnRlZ2VyX3RvX3N0cmluZyAoaSA6IGludGVnZXIpIDogc3RyaW5nID0gWi50b19zdHJpbmcgaVxubGV0IGludGVnZXJfdG9faW50IChpIDogaW50ZWdlcikgOiBpbnQgPSBaLnRvX2ludCBpXG5sZXQgaW50ZWdlcl9vZl9pbnQgKGkgOiBpbnQpIDogaW50ZWdlciA9IFoub2ZfaW50IGlcbmxldCBpbnRlZ2VyX2V4cG9uZW50aWF0aW9uIChpIDogaW50ZWdlcikgKGUgOiBpbnQpIDogaW50ZWdlciA9IFoucG93IGkgZVxubGV0IGludGVnZXJfbG9nMiA9IFoubG9nMlxuXG5sZXQgeWVhcl9vZl9kYXRlIChkIDogZGF0ZSkgOiBpbnRlZ2VyID1cbiAgbGV0IHksIF8sIF8gPSBEYXRlc19jYWxjLkRhdGVzLmRhdGVfdG9feW1kIGQgaW5cbiAgWi5vZl9pbnQgeVxuXG5sZXQgbW9udGhfbnVtYmVyX29mX2RhdGUgKGQgOiBkYXRlKSA6IGludGVnZXIgPVxuICBsZXQgXywgbSwgXyA9IERhdGVzX2NhbGMuRGF0ZXMuZGF0ZV90b195bWQgZCBpblxuICBaLm9mX2ludCBtXG5cbmxldCBpc19sZWFwX3llYXIgKHkgOiBpbnRlZ2VyKSA9XG4gIGxldCB5ID0gWi50b19pbnQgeSBpblxuICBEYXRlc19jYWxjLkRhdGVzLmlzX2xlYXBfeWVhciB5XG5cbmxldCBkYXlfb2ZfbW9udGhfb2ZfZGF0ZSAoZCA6IGRhdGUpIDogaW50ZWdlciA9XG4gIGxldCBfLCBfLCBkID0gRGF0ZXNfY2FsYy5EYXRlcy5kYXRlX3RvX3ltZCBkIGluXG4gIFoub2ZfaW50IGRcblxubGV0IGRhdGVfb2ZfbnVtYmVycyAoeWVhciA6IGludCkgKG1vbnRoIDogaW50KSAoZGF5IDogaW50KSA6IGRhdGUgPVxuICB0cnkgRGF0ZXNfY2FsYy5EYXRlcy5tYWtlX2RhdGUgfnllYXIgfm1vbnRoIH5kYXlcbiAgd2l0aCBfIC0+IHJhaXNlIEltcG9zc2libGVEYXRlXG5cbmxldCBkYXRlX3RvX3N0cmluZyAoZCA6IGRhdGUpIDogc3RyaW5nID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiBEYXRlc19jYWxjLkRhdGVzLmZvcm1hdF9kYXRlIGRcblxubGV0IGZpcnN0X2RheV9vZl9tb250aCA9IERhdGVzX2NhbGMuRGF0ZXMuZmlyc3RfZGF5X29mX21vbnRoXG5sZXQgbGFzdF9kYXlfb2ZfbW9udGggPSBEYXRlc19jYWxjLkRhdGVzLmxhc3RfZGF5X29mX21vbnRoXG5cbmxldCBkdXJhdGlvbl9vZl9udW1iZXJzICh5ZWFyIDogaW50KSAobW9udGggOiBpbnQpIChkYXkgOiBpbnQpIDogZHVyYXRpb24gPVxuICBEYXRlc19jYWxjLkRhdGVzLm1ha2VfcGVyaW9kIH55ZWFyczp5ZWFyIH5tb250aHM6bW9udGggfmRheXM6ZGF5XG5cbmxldCBkdXJhdGlvbl90b19zdHJpbmcgKGQgOiBkdXJhdGlvbikgOiBzdHJpbmcgPVxuICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIERhdGVzX2NhbGMuRGF0ZXMuZm9ybWF0X3BlcmlvZCBkXG4oKiBicmVha3MgcHJldmlvdXMgZm9ybWF0ICopXG4oKiBsZXQgeCwgeSwgeiA9IENhbGVuZGFyTGliLkRhdGUuUGVyaW9kLnltZCBkIGluXG4gKiBsZXQgdG9fcHJpbnQgPVxuICogICBMaXN0LmZpbHRlciAoZnVuIChhLCBfKSAtPiBhIDw+IDApIFt4LCBcInllYXJzXCI7IHksIFwibW9udGhzXCI7IHosIFwiZGF5c1wiXVxuICogaW5cbiAqIG1hdGNoIHRvX3ByaW50IHdpdGhcbiAqIHwgW10gLT4gXCJlbXB0eSBkdXJhdGlvblwiXG4gKiB8IF8gLT5cbiAqICAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIlxuICogICAgIChGb3JtYXQucHBfcHJpbnRfbGlzdFxuICogICAgICAgIH5wcF9zZXA6KGZ1biBmbXQgKCkgLT4gRm9ybWF0LmZwcmludGYgZm10IFwiLEAgXCIpXG4gKiAgICAgICAgKGZ1biBmbXQgKGQsIGwpIC0+IEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVkICVzXCIgZCBsKSlcbiAqICAgICB0b19wcmludCAqKVxuXG5sZXQgZHVyYXRpb25fdG9feWVhcnNfbW9udGhzX2RheXMgKGQgOiBkdXJhdGlvbikgOiBpbnQgKiBpbnQgKiBpbnQgPVxuICBEYXRlc19jYWxjLkRhdGVzLnBlcmlvZF90b195bWRzIGRcblxubGV0IHlvanNvbl9vZl9tb25leSAobSA6IG1vbmV5KSA9IGBGbG9hdCAobW9uZXlfdG9fZmxvYXQgbSlcbmxldCB5b2pzb25fb2ZfaW50ZWdlciAoaSA6IGludGVnZXIpID0gYEludCAoaW50ZWdlcl90b19pbnQgaSlcbmxldCB5b2pzb25fb2ZfZGVjaW1hbCAoZCA6IGRlY2ltYWwpID0gYEZsb2F0IChkZWNpbWFsX3RvX2Zsb2F0IGQpXG5sZXQgeW9qc29uX29mX2RhdGUgKGQgOiBkYXRlKSA9IGBTdHJpbmcgKGRhdGVfdG9fc3RyaW5nIGQpXG5sZXQgeW9qc29uX29mX2R1cmF0aW9uIChkIDogZHVyYXRpb24pID0gYFN0cmluZyAoZHVyYXRpb25fdG9fc3RyaW5nIGQpXG5cbnR5cGUgcnVudGltZV92YWx1ZSA9XG4gIHwgVW5pdFxuICB8IEJvb2wgb2YgYm9vbFxuICB8IE1vbmV5IG9mIG1vbmV5XG4gIHwgSW50ZWdlciBvZiBpbnRlZ2VyXG4gIHwgRGVjaW1hbCBvZiBkZWNpbWFsXG4gIHwgRGF0ZSBvZiBkYXRlXG4gIHwgRHVyYXRpb24gb2YgZHVyYXRpb25cbiAgfCBFbnVtIG9mIHN0cmluZyBsaXN0ICogKHN0cmluZyAqIHJ1bnRpbWVfdmFsdWUpXG4gIHwgU3RydWN0IG9mIHN0cmluZyBsaXN0ICogKHN0cmluZyAqIHJ1bnRpbWVfdmFsdWUpIGxpc3RcbiAgfCBBcnJheSBvZiBydW50aW1lX3ZhbHVlIGFycmF5XG4gIHwgVW5lbWJlZGRhYmxlXG5bQEBkZXJpdmluZyB5b2pzb25fb2ZdXG5cbmxldCB1bmVtYmVkZGFibGUgXyA9IFVuZW1iZWRkYWJsZVxubGV0IGVtYmVkX3VuaXQgKCkgPSBVbml0XG5sZXQgZW1iZWRfYm9vbCB4ID0gQm9vbCB4XG5sZXQgZW1iZWRfbW9uZXkgeCA9IE1vbmV5IHhcbmxldCBlbWJlZF9pbnRlZ2VyIHggPSBJbnRlZ2VyIHhcbmxldCBlbWJlZF9kZWNpbWFsIHggPSBEZWNpbWFsIHhcbmxldCBlbWJlZF9kYXRlIHggPSBEYXRlIHhcbmxldCBlbWJlZF9kdXJhdGlvbiB4ID0gRHVyYXRpb24geFxubGV0IGVtYmVkX2FycmF5IGYgeCA9IEFycmF5IChBcnJheS5tYXAgZiB4KVxuXG50eXBlIGluZm9ybWF0aW9uID0gc3RyaW5nIGxpc3QgW0BAZGVyaXZpbmcgeW9qc29uX29mXVxuXG50eXBlIHJhd19ldmVudCA9XG4gIHwgQmVnaW5DYWxsIG9mIGluZm9ybWF0aW9uXG4gIHwgRW5kQ2FsbCBvZiBpbmZvcm1hdGlvblxuICB8IFZhcmlhYmxlRGVmaW5pdGlvbiBvZiBpbmZvcm1hdGlvbiAqIGlvX2xvZyAqIHJ1bnRpbWVfdmFsdWVcbiAgfCBEZWNpc2lvblRha2VuIG9mIHNvdXJjZV9wb3NpdGlvblxuXG50eXBlIGV2ZW50ID1cbiAgfCBWYXJDb21wdXRhdGlvbiBvZiB2YXJfZGVmXG4gIHwgRnVuQ2FsbCBvZiBmdW5fY2FsbFxuICB8IFN1YlNjb3BlQ2FsbCBvZiB7XG4gICAgICBuYW1lIDogaW5mb3JtYXRpb247XG4gICAgICBpbnB1dHMgOiB2YXJfZGVmIGxpc3Q7XG4gICAgICBib2R5IDogZXZlbnQgbGlzdDtcbiAgICB9XG5bQEBkZXJpdmluZyB5b2pzb25fb2ZdXG5cbmFuZCB2YXJfZGVmID0ge1xuICBwb3MgOiBzb3VyY2VfcG9zaXRpb24gb3B0aW9uO1xuICBuYW1lIDogaW5mb3JtYXRpb247XG4gIGlvIDogaW9fbG9nO1xuICB2YWx1ZSA6IHJ1bnRpbWVfdmFsdWU7XG4gIGZ1bl9jYWxscyA6IGZ1bl9jYWxsIGxpc3Qgb3B0aW9uO1xufVxuXG5hbmQgZnVuX2NhbGwgPSB7XG4gIGZ1bl9uYW1lIDogaW5mb3JtYXRpb247XG4gIGZ1bl9pbnB1dHMgOiB2YXJfZGVmIGxpc3Q7XG4gIGJvZHkgOiBldmVudCBsaXN0O1xuICBvdXRwdXQgOiB2YXJfZGVmO1xufVxuXG5sZXQgbG9nX3JlZiA6IHJhd19ldmVudCBsaXN0IHJlZiA9IHJlZiBbXVxubGV0IHJlc2V0X2xvZyAoKSA9IGxvZ19yZWYgOj0gW11cbmxldCByZXRyaWV2ZV9sb2cgKCkgPSBMaXN0LnJldiAhbG9nX3JlZlxuXG5sZXQgbG9nX2JlZ2luX2NhbGwgaW5mbyBmID1cbiAgbG9nX3JlZiA6PSBCZWdpbkNhbGwgaW5mbyA6OiAhbG9nX3JlZjtcbiAgZlxuXG5sZXQgbG9nX2VuZF9jYWxsIGluZm8geCA9XG4gIGxvZ19yZWYgOj0gRW5kQ2FsbCBpbmZvIDo6ICFsb2dfcmVmO1xuICB4XG5cbmxldCBsb2dfdmFyaWFibGVfZGVmaW5pdGlvbiAoaW5mbyA6IHN0cmluZyBsaXN0KSAoaW8gOiBpb19sb2cpIGVtYmVkICh4IDogJ2EpID1cbiAgbG9nX3JlZiA6PSBWYXJpYWJsZURlZmluaXRpb24gKGluZm8sIGlvLCBlbWJlZCB4KSA6OiAhbG9nX3JlZjtcbiAgeFxuXG5sZXQgbG9nX2RlY2lzaW9uX3Rha2VuIHBvcyB4ID1cbiAgaWYgeCB0aGVuIGxvZ19yZWYgOj0gRGVjaXNpb25UYWtlbiBwb3MgOjogIWxvZ19yZWY7XG4gIHhcblxubGV0IHJlYyBwcF9ldmVudHMgPyhpc19maXJzdF9jYWxsID0gdHJ1ZSkgcHBmIGV2ZW50cyA9XG4gIGxldCByZWMgZm9ybWF0X3Zhcl9kZWYgcHBmIHZhciA9XG4gICAgRm9ybWF0LmZwcmludGYgcHBmIFwiQFs8aG92IDI+PHZhcl9kZWYgYXQgJWE+QCAlczpAICVhQF1cIiBmb3JtYXRfcG9zX29wdFxuICAgICAgdmFyLnBvc1xuICAgICAgKFN0cmluZy5jb25jYXQgXCIuXCIgdmFyLm5hbWUpXG4gICAgICBmb3JtYXRfdmFsdWUgdmFyLnZhbHVlXG4gIGFuZCBmb3JtYXRfcG9zX29wdCBwcGYgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBwcGYgXCJub19wb3NcIlxuICAgIHwgU29tZSBwb3MgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIHBwZiBcIiVzIGxpbmUgJWQgdG8gJWRcIiBwb3MuZmlsZW5hbWUgcG9zLnN0YXJ0X2xpbmVcbiAgICAgICAgcG9zLmVuZF9saW5lXG4gIGFuZCBmb3JtYXRfdmFyX2RlZnMgcHBmID1cbiAgICBGb3JtYXQucHBfcHJpbnRfbGlzdFxuICAgICAgfnBwX3NlcDooZnVuIHBwZiAoKSAtPiBGb3JtYXQuZnByaW50ZiBwcGYgXCJAIFwiKVxuICAgICAgZm9ybWF0X3Zhcl9kZWYgcHBmXG4gIGFuZCBmb3JtYXRfdmFyX2RlZl93aXRoX2Z1bl9jYWxscyBwcGYgdmFyX3dpdGhfZnVuID1cbiAgICBtYXRjaCB2YXJfd2l0aF9mdW4uZnVuX2NhbGxzIHdpdGhcbiAgICB8IE5vbmUgfCBTb21lIFtdIC0+IGZvcm1hdF92YXJfZGVmIHBwZiB2YXJfd2l0aF9mdW5cbiAgICB8IFNvbWUgZnVuX2NhbGxzIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBwcGZcbiAgICAgICAgXCJAWzxob3YgMj48dmFyX2RlZl93aXRoX2Z1bj5AICVzOiAlYUAgY29tcHV0ZWQgZnJvbUAgOkAgQFs8aHYgMj5bQCAlYUA7XFxcbiAgICAgICAgIDwxIC0yPl1AXSBAXVwiXG4gICAgICAgIChTdHJpbmcuY29uY2F0IFwiLlwiIHZhcl93aXRoX2Z1bi5uYW1lKVxuICAgICAgICBmb3JtYXRfdmFsdWUgdmFyX3dpdGhfZnVuLnZhbHVlXG4gICAgICAgIChGb3JtYXQucHBfcHJpbnRfbGlzdFxuICAgICAgICAgICB+cHBfc2VwOihmdW4gcHBmICgpIC0+IEZvcm1hdC5mcHJpbnRmIHBwZiBcIixAIFwiKVxuICAgICAgICAgICAoZnVuIHBwZiBmdW5fY2FsbCAtPiBmb3JtYXRfZXZlbnQgcHBmIChGdW5DYWxsIGZ1bl9jYWxsKSkpXG4gICAgICAgIGZ1bl9jYWxsc1xuICBhbmQgZm9ybWF0X3ZhbHVlIHBwZiA9IGZ1bmN0aW9uXG4gICAgfCBVbmVtYmVkZGFibGUgLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiZnVuXCJcbiAgICB8IFVuaXQgLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiKClcIlxuICAgIHwgQm9vbCB4IC0+IEZvcm1hdC5mcHJpbnRmIHBwZiBcIiViXCIgeFxuICAgIHwgTW9uZXkgeCAtPiBGb3JtYXQuZnByaW50ZiBwcGYgXCIlc+KCrFwiIChtb25leV90b19zdHJpbmcgeClcbiAgICB8IEludGVnZXIgeCAtPiBGb3JtYXQuZnByaW50ZiBwcGYgXCIlZFwiIChpbnRlZ2VyX3RvX2ludCB4KVxuICAgIHwgRGVjaW1hbCB4IC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBwcGYgXCIlc1wiIChkZWNpbWFsX3RvX3N0cmluZyB+bWF4X3ByZWNfZGlnaXRzOjEwIHgpXG4gICAgfCBEYXRlIHggLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiJXNcIiAoZGF0ZV90b19zdHJpbmcgeClcbiAgICB8IER1cmF0aW9uIHggLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiJXNcIiAoZHVyYXRpb25fdG9fc3RyaW5nIHgpXG4gICAgfCBFbnVtIChfLCAobmFtZSwgXykpIC0+IEZvcm1hdC5mcHJpbnRmIHBwZiBcIiVzXCIgbmFtZVxuICAgIHwgU3RydWN0IChuYW1lLCBhdHRycykgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIHBwZiBcIkBbPGh2IDI+JXMgPSB7QCAlYUA7PDEgLTI+fUBdXCJcbiAgICAgICAgKFN0cmluZy5jb25jYXQgXCIuXCIgbmFtZSlcbiAgICAgICAgKEZvcm1hdC5wcF9wcmludF9saXN0XG4gICAgICAgICAgIH5wcF9zZXA6KGZ1biBwcGYgKCkgLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiLEAsXCIpXG4gICAgICAgICAgIChmdW4gZm10IChuYW1lLCB2YWx1ZSkgLT5cbiAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlczogJWFcIiBuYW1lIGZvcm1hdF92YWx1ZSB2YWx1ZSkpXG4gICAgICAgIGF0dHJzXG4gICAgfCBBcnJheSBlbHRzIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBwcGYgXCJAWzxodiAyPltAICVhQDs8MSAtMj5dQF1cIlxuICAgICAgICAoRm9ybWF0LnBwX3ByaW50X2xpc3RcbiAgICAgICAgICAgfnBwX3NlcDooZnVuIHBwZiAoKSAtPiBGb3JtYXQuZnByaW50ZiBwcGYgXCI7QCBcIilcbiAgICAgICAgICAgZm9ybWF0X3ZhbHVlKVxuICAgICAgICAoZWx0cyB8PiBBcnJheS50b19saXN0KVxuICBhbmQgZm9ybWF0X2V2ZW50IHBwZiA9IGZ1bmN0aW9uXG4gICAgfCBWYXJDb21wdXRhdGlvbiB2YXJfZGVmX3dpdGhfZnVuXG4gICAgICB3aGVuIE9wdGlvbi5pc19zb21lIHZhcl9kZWZfd2l0aF9mdW4uZnVuX2NhbGxzIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBwcGYgXCIlYVwiIGZvcm1hdF92YXJfZGVmX3dpdGhfZnVuX2NhbGxzIHZhcl9kZWZfd2l0aF9mdW5cbiAgICB8IFZhckNvbXB1dGF0aW9uIHZhcl9kZWYgLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiJWFcIiBmb3JtYXRfdmFyX2RlZiB2YXJfZGVmXG4gICAgfCBGdW5DYWxsIHsgZnVuX25hbWU7IGZ1bl9pbnB1dHM7IGJvZHk7IG91dHB1dCB9IC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBwcGZcbiAgICAgICAgXCJAWzxob3YgMT48ZnVuY3Rpb25fY2FsbD5AICVzIDo9QCB7QFs8aHYgMT5AIGlucHV0OkAgJWEsQCBvdXRwdXQ6QCBcXFxuICAgICAgICAgJWEsQCBib2R5OkAgW0AsXFxcbiAgICAgICAgICVhXUBdQCxcXFxuICAgICAgICAgQF1ALFxcXG4gICAgICAgICB9XCJcbiAgICAgICAgKFN0cmluZy5jb25jYXQgXCIuXCIgZnVuX25hbWUpXG4gICAgICAgIChGb3JtYXQucHBfcHJpbnRfbGlzdFxuICAgICAgICAgICB+cHBfc2VwOihmdW4gZm10ICgpIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiOyBcIilcbiAgICAgICAgICAgZm9ybWF0X3Zhcl9kZWYpXG4gICAgICAgIGZ1bl9pbnB1dHMgZm9ybWF0X3Zhcl9kZWZfd2l0aF9mdW5fY2FsbHMgb3V0cHV0XG4gICAgICAgIChwcF9ldmVudHMgfmlzX2ZpcnN0X2NhbGw6ZmFsc2UpXG4gICAgICAgIGJvZHlcbiAgICB8IFN1YlNjb3BlQ2FsbCB7IG5hbWU7IGlucHV0czsgYm9keSB9IC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBwcGZcbiAgICAgICAgXCJAWzxodiAyPjxzdWJzY29wZV9jYWxsPkAgJXMgOj1AIHtAWzxodiAxPkAsXFxcbiAgICAgICAgIGlucHV0czpAIEBbPGh2IDI+W0AsXFxcbiAgICAgICAgICVhQF1dLEAsXFxcbiAgICAgICAgIGJvZHk6QCBAWzxodiAyPltAICVhQCBdQF1AXUBdQCxcXFxuICAgICAgICAgfVwiXG4gICAgICAgIChTdHJpbmcuY29uY2F0IFwiLlwiIG5hbWUpIGZvcm1hdF92YXJfZGVmcyBpbnB1dHNcbiAgICAgICAgKHBwX2V2ZW50cyB+aXNfZmlyc3RfY2FsbDpmYWxzZSlcbiAgICAgICAgYm9keVxuICBpblxuICBGb3JtYXQuZnByaW50ZiBwcGZcbiAgICAoXCJAWzxodiAxPiVhQF1cIiBeXiBpZiBpc19maXJzdF9jYWxsIHRoZW4gXCJALlwiIGVsc2UgXCJcIilcbiAgICAoRm9ybWF0LnBwX3ByaW50X2xpc3RcbiAgICAgICB+cHBfc2VwOihmdW4gcHBmICgpIC0+IEZvcm1hdC5mcHJpbnRmIHBwZiBcIkAgXCIpXG4gICAgICAgZm9ybWF0X2V2ZW50KVxuICAgIGV2ZW50c1xuXG5tb2R1bGUgRXZlbnRQYXJzZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIFZhckRlZk1hcCA9IHN0cnVjdFxuICAgIG1vZHVsZSBTdHJpbmdNYXAgPSBNYXAuTWFrZSAoU3RyaW5nKVxuXG4gICAgdHlwZSB0ID0gdmFyX2RlZiBsaXN0IFN0cmluZ01hcC50XG5cbiAgICBsZXQgYWRkIChuYW1lIDogc3RyaW5nKSAodiA6IHZhcl9kZWYpIChtYXAgOiB0KSA6IHQgPVxuICAgICAgbWF0Y2ggU3RyaW5nTWFwLmZpbmRfb3B0IG5hbWUgbWFwIHdpdGhcbiAgICAgIHwgU29tZSBscyAtPiBTdHJpbmdNYXAuYWRkIG5hbWUgKHYgOjogbHMpIG1hcFxuICAgICAgfCBOb25lIC0+IFN0cmluZ01hcC5hZGQgbmFtZSBbdl0gbWFwXG5cbiAgICAoKiogW2dldCBuYW1lIG1hcF0gcmV0dXJucyB0aGUgbGlzdCBvZiBkZWZpbml0aW9ucyBpZiB0aGVyZSBpcyBhXG4gICAgICAgIGNvcnJlc3BvbmRpbmcgZW50cnksIG90aGVyd2lzZSwgcmV0dXJucyBhbiBlbXB0eSBhcnJheS4gKilcbiAgICBsZXQgZ2V0IChuYW1lIDogc3RyaW5nKSAobWFwIDogdCkgOiB2YXJfZGVmIGxpc3QgPVxuICAgICAgbWF0Y2ggU3RyaW5nTWFwLmZpbmRfb3B0IG5hbWUgbWFwIHdpdGggU29tZSBscyAtPiBscyB8IE5vbmUgLT4gW11cblxuICAgIGxldCBlbXB0eSA6IHQgPSBTdHJpbmdNYXAuZW1wdHlcbiAgZW5kXG5cbiAgdHlwZSBjb250ZXh0ID0ge1xuICAgICgqIEtlZXBzIHRyYWNrcyBvZiB0aGUgc3Vic2NvcGUgaW5wdXQgdmFyaWFibGUgZGVmaW5pdGlvbnMuICopXG4gICAgdmFycyA6IFZhckRlZk1hcC50O1xuICAgICgqIEN1cnJlbnQgcGFyc2VkIGV2ZW50cy4gKilcbiAgICBldmVudHMgOiBldmVudCBsaXN0O1xuICAgIHJlc3QgOiByYXdfZXZlbnQgbGlzdDtcbiAgfVxuXG4gIGxldCBlbXB0eV9jdHggPSB7IHZhcnMgPSBWYXJEZWZNYXAuZW1wdHk7IGV2ZW50cyA9IFtdOyByZXN0ID0gW10gfVxuXG4gIGxldCBpb19sb2dfdG9fc3RyaW5nIChpbyA6IGlvX2xvZykgOiBzdHJpbmcgPVxuICAgIG1hdGNoIGlvLmlvX2lucHV0LCBpby5pb19vdXRwdXQgd2l0aFxuICAgIHwgTm9JbnB1dCwgZmFsc2UgLT4gXCJpbnRlcm5hbFwiXG4gICAgfCBfIC0+XG4gICAgICBQcmludGYuc3ByaW50ZiBcIiVzJXMlc1wiXG4gICAgICAgIChtYXRjaCBpby5pb19pbnB1dCB3aXRoXG4gICAgICAgIHwgTm9JbnB1dCAtPiBcIlwiXG4gICAgICAgIHwgT25seUlucHV0IC0+IFwiaW5wdXRcIlxuICAgICAgICB8IFJlZW50cmFudCAtPiBcInJlZW50cmFudFwiKVxuICAgICAgICAobWF0Y2ggaW8uaW9faW5wdXQsIGlvLmlvX291dHB1dCB3aXRoXG4gICAgICAgIHwgKE9ubHlJbnB1dCB8IFJlZW50cmFudCksIHRydWUgLT4gXCIvXCJcbiAgICAgICAgfCBfIC0+IFwiXCIpXG4gICAgICAgIChpZiBpby5pb19vdXRwdXQgdGhlbiBcIm91dHB1dFwiIGVsc2UgXCJcIilcblxuICBsZXQgcmF3X2V2ZW50X3RvX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBCZWdpbkNhbGwgbmFtZSAtPlxuICAgICAgUHJpbnRmLnNwcmludGYgXCJCZWdpbkNhbGwoWyBcIiBeIFN0cmluZy5jb25jYXQgXCIsIFwiIG5hbWUgXiBcIiBdKVwiXG4gICAgfCBFbmRDYWxsIG5hbWUgLT5cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwiRW5kQ2FsbChbIFwiIF4gU3RyaW5nLmNvbmNhdCBcIiwgXCIgbmFtZSBeIFwiIF0pXCJcbiAgICB8IFZhcmlhYmxlRGVmaW5pdGlvbiAobmFtZSwgaW8sIHZhbHVlKSAtPlxuICAgICAgUHJpbnRmLnNwcmludGYgXCJWYXJpYWJsZURlZmluaXRpb24oWyAlcyBdLCAlcywgJXMpXCJcbiAgICAgICAgKFN0cmluZy5jb25jYXQgXCIsIFwiIG5hbWUpIChpb19sb2dfdG9fc3RyaW5nIGlvKVxuICAgICAgICAoeW9qc29uX29mX3J1bnRpbWVfdmFsdWUgdmFsdWUgfD4gWW9qc29uLlNhZmUudG9fc3RyaW5nKVxuICAgIHwgRGVjaXNpb25UYWtlbiBwb3MgLT5cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwiRGVjaXNpb25UYWtlbiglczolZC4lZC0lZC4lZClcIiBwb3MuZmlsZW5hbWUgcG9zLnN0YXJ0X2xpbmVcbiAgICAgICAgcG9zLnN0YXJ0X2NvbHVtbiBwb3MuZW5kX2xpbmUgcG9zLmVuZF9jb2x1bW5cblxuICAoKiogW3Rha2V3aGlsZSBwIHhzXSBzcGxpdCB0aGUgbGlzdCBbeHNdIGFzIHRoZSBsb25nZXN0IHByZWZpeCBvZiB0aGUgbGlzdFxuICAgICAgW3hzXSB3aGVyZSBldmVyeSBlbGVtZW50IFt4XSBzYXRpc2ZpZXMgW3AgeF0gYW5kIHRoZSByZXN0LiAqKVxuICBsZXQgcmVjIHRha2Vfd2hpbGUgKHAgOiAnYSAtPiBib29sKSAobCA6ICdhIGxpc3QpIDogJ2EgbGlzdCAqICdhIGxpc3QgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gW10sIFtdXG4gICAgfCBoIDo6IHQgd2hlbiBwIGggLT5cbiAgICAgIGxldCB0LCByZXN0ID0gdGFrZV93aGlsZSBwIHQgaW5cbiAgICAgIGggOjogdCwgcmVzdFxuICAgIHwgXyAtPiBbXSwgbFxuXG4gIGxldCBwYXJzZV9yYXdfZXZlbnRzIHJhd19ldmVudHMgPVxuICAgIGxldCBuYl9yYXdfZXZlbnRzID0gTGlzdC5sZW5ndGggcmF3X2V2ZW50c1xuICAgIGFuZCBpc19mdW5jdGlvbl9jYWxsIGluZm9zID0gMiA9IExpc3QubGVuZ3RoIGluZm9zXG4gICAgYW5kIGlzX3N1YnNjb3BlX2NhbGwgaW5mb3MgPSAzID0gTGlzdC5sZW5ndGggaW5mb3NcbiAgICBhbmQgaXNfdmFyX2RlZiBuYW1lID0gMiA9IExpc3QubGVuZ3RoIG5hbWVcbiAgICBhbmQgaXNfb3V0cHV0X3Zhcl9kZWYgbmFtZSA9XG4gICAgICAzID0gTGlzdC5sZW5ndGggbmFtZSAmJiBcIm91dHB1dFwiID0gTGlzdC5udGggbmFtZSAyXG4gICAgYW5kIGlzX2lucHV0X3Zhcl9kZWYgbmFtZSA9XG4gICAgICAzID0gTGlzdC5sZW5ndGggbmFtZVxuICAgICAgJiYgU3RyaW5nLnN0YXJ0c193aXRoIH5wcmVmaXg6XCJpbnB1dFwiIChMaXN0Lm50aCBuYW1lIDIpXG4gICAgYW5kIGlzX3N1YnNjb3BlX2lucHV0X3Zhcl9kZWYgbmFtZSA9XG4gICAgICAyID0gTGlzdC5sZW5ndGggbmFtZSAmJiBTdHJpbmcuY29udGFpbnMgKExpc3QubnRoIG5hbWUgMSkgJy4nXG4gICAgaW5cbiAgICBsZXQgcmVjIHBhcnNlX2V2ZW50cyAoY3R4IDogY29udGV4dCkgOiBjb250ZXh0ID1cbiAgICAgIG1hdGNoIGN0eC5yZXN0IHdpdGhcbiAgICAgIHwgW10gLT4geyBjdHggd2l0aCBldmVudHMgPSBjdHguZXZlbnRzIHw+IExpc3QucmV2IH1cbiAgICAgIHwgVmFyaWFibGVEZWZpbml0aW9uIChuYW1lLCBfLCBfKSA6OiByZXN0IHdoZW4gaXNfdmFyX2RlZiBuYW1lIC0+XG4gICAgICAgICgqIFZhcmlhYmxlRGVmaW5pdGlvbiB3aXRob3V0IHBvc2l0aW9uIGNvcnJlc3BvbmRzIHRvIGEgZnVuY3Rpb25cbiAgICAgICAgICAgZGVmaW5pdGlvbiB3aGljaCBhcmUgaWdub3JlZCBmb3Igbm93IGluIHN0cnVjdHVyZWQgZXZlbnRzLiAqKVxuICAgICAgICBwYXJzZV9ldmVudHMgeyBjdHggd2l0aCByZXN0IH1cbiAgICAgIHwgRGVjaXNpb25UYWtlbiBwb3MgOjogVmFyaWFibGVEZWZpbml0aW9uIChuYW1lLCBpbywgdmFsdWUpIDo6IHJlc3RcbiAgICAgICAgd2hlbiBpc19zdWJzY29wZV9pbnB1dF92YXJfZGVmIG5hbWUgLT4gKFxuICAgICAgICBtYXRjaCBuYW1lIHdpdGhcbiAgICAgICAgfCBbXzsgdmFyX2RvdF9zdWJzY29wZV92YXJfbmFtZV0gLT5cbiAgICAgICAgICBsZXQgdmFyX25hbWUgPVxuICAgICAgICAgICAgTGlzdC5udGggKFN0cmluZy5zcGxpdF9vbl9jaGFyICcuJyB2YXJfZG90X3N1YnNjb3BlX3Zhcl9uYW1lKSAwXG4gICAgICAgICAgaW5cbiAgICAgICAgICBwYXJzZV9ldmVudHNcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY3R4IHdpdGhcbiAgICAgICAgICAgICAgdmFycyA9XG4gICAgICAgICAgICAgICAgY3R4LnZhcnNcbiAgICAgICAgICAgICAgICB8PiBWYXJEZWZNYXAuYWRkIHZhcl9uYW1lXG4gICAgICAgICAgICAgICAgICAgICB7IHBvcyA9IFNvbWUgcG9zOyBuYW1lOyB2YWx1ZTsgZnVuX2NhbGxzID0gTm9uZTsgaW8gfTtcbiAgICAgICAgICAgICAgcmVzdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgZmFpbHdpdGggXCJ1bnJlYWNoYWJsZSBkdWUgdG8gdGhlIFtpc19zdWJzY29wZV9pbnB1dF92YXJfZGVmXSB0ZXN0XCIpXG4gICAgICB8IERlY2lzaW9uVGFrZW4gcG9zIDo6IFZhcmlhYmxlRGVmaW5pdGlvbiAobmFtZSwgaW8sIHZhbHVlKSA6OiByZXN0XG4gICAgICAgIHdoZW4gaXNfdmFyX2RlZiBuYW1lIHx8IGlzX291dHB1dF92YXJfZGVmIG5hbWUgLT5cbiAgICAgICAgcGFyc2VfZXZlbnRzXG4gICAgICAgICAge1xuICAgICAgICAgICAgY3R4IHdpdGhcbiAgICAgICAgICAgIGV2ZW50cyA9XG4gICAgICAgICAgICAgIFZhckNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgICAgeyBwb3MgPSBTb21lIHBvczsgbmFtZTsgdmFsdWU7IGZ1bl9jYWxscyA9IE5vbmU7IGlvIH1cbiAgICAgICAgICAgICAgOjogY3R4LmV2ZW50cztcbiAgICAgICAgICAgIHJlc3Q7XG4gICAgICAgICAgfVxuICAgICAgfCBEZWNpc2lvblRha2VuIHBvcyA6OiBWYXJpYWJsZURlZmluaXRpb24gXyA6OiBCZWdpbkNhbGwgaW5mb3MgOjogX1xuICAgICAgICB3aGVuIGlzX2Z1bmN0aW9uX2NhbGwgaW5mb3MgLT5cbiAgICAgICAgKCogVmFyaWFibGUgZGVmaW5pdGlvbiB3aXRoIGZ1bmN0aW9uIGNhbGxzLiAqKVxuICAgICAgICBsZXQgcmVjIHBhcnNlX2Z1bl9jYWxscyBmdW5fY2FsbHMgcmF3X2V2ZW50cyA9XG4gICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgIHRha2Vfd2hpbGVcbiAgICAgICAgICAgICAgKGZ1bmN0aW9uIFZhcmlhYmxlRGVmaW5pdGlvbiBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICByYXdfZXZlbnRzXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgXywgQmVnaW5DYWxsIGluZm9zIDo6IF8gd2hlbiBpc19mdW5jdGlvbl9jYWxsIGluZm9zIC0+XG4gICAgICAgICAgICBsZXQgcmVzdCwgZnVuX2NhbGwgPSBwYXJzZV9mdW5fY2FsbCByYXdfZXZlbnRzIGluXG4gICAgICAgICAgICBwYXJzZV9mdW5fY2FsbHMgKGZ1bl9jYWxsIDo6IGZ1bl9jYWxscykgcmVzdFxuICAgICAgICAgIHwgXyAtPiByYXdfZXZlbnRzLCBmdW5fY2FsbHMgfD4gTGlzdC5yZXZcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJlc3QsIHZhcl9jb21wID1cbiAgICAgICAgICBsZXQgcmVzdCwgZnVuX2NhbGxzID0gcGFyc2VfZnVuX2NhbGxzIFtdIChMaXN0LnRsIGN0eC5yZXN0KSBpblxuICAgICAgICAgIG1hdGNoIHJlc3Qgd2l0aFxuICAgICAgICAgIHwgVmFyaWFibGVEZWZpbml0aW9uIChuYW1lLCBpbywgdmFsdWUpIDo6IHJlc3QgLT5cbiAgICAgICAgICAgICggcmVzdCxcbiAgICAgICAgICAgICAgVmFyQ29tcHV0YXRpb25cbiAgICAgICAgICAgICAgICB7IHBvcyA9IFNvbWUgcG9zOyBuYW1lOyB2YWx1ZTsgZnVuX2NhbGxzID0gU29tZSBmdW5fY2FsbHM7IGlvIH1cbiAgICAgICAgICAgIClcbiAgICAgICAgICB8IGV2ZW50IDo6IF8gLT5cbiAgICAgICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgICAgIChcIkludmFsaWQgZnVuY3Rpb24gY2FsbCAoWyBcIlxuICAgICAgICAgICAgICBeIFN0cmluZy5jb25jYXQgXCIsIFwiIGluZm9zXG4gICAgICAgICAgICAgIF4gXCIgXSk6IGV4cGVjdGVkIHZhcmlhYmxlIGRlZmluaXRpb24gKGZ1bmN0aW9uIG91dHB1dCksIGZvdW5kOiBcIlxuICAgICAgICAgICAgICBeIHJhd19ldmVudF90b19zdHJpbmcgZXZlbnRcbiAgICAgICAgICAgICAgXiBcIltcIlxuICAgICAgICAgICAgICBeIChuYl9yYXdfZXZlbnRzIC0gTGlzdC5sZW5ndGggcmVzdCArIDEgfD4gc3RyaW5nX29mX2ludClcbiAgICAgICAgICAgICAgXiBcIl1cIilcbiAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICBmYWlsd2l0aFxuICAgICAgICAgICAgICAoXCJJbnZhbGlkIGZ1bmN0aW9uIGNhbGwgKFsgXCJcbiAgICAgICAgICAgICAgXiBTdHJpbmcuY29uY2F0IFwiLCBcIiBpbmZvc1xuICAgICAgICAgICAgICBeIFwiIF0pOiBleHBlY3RlZCB2YXJpYWJsZSBkZWZpbml0aW9uIChmdW5jdGlvbiBvdXRwdXQpLCBmb3VuZDogXFxcbiAgICAgICAgICAgICAgICAgZW5kIG9mIHRva2Vuc1wiKVxuICAgICAgICBpblxuXG4gICAgICAgIHBhcnNlX2V2ZW50cyB7IGN0eCB3aXRoIGV2ZW50cyA9IHZhcl9jb21wIDo6IGN0eC5ldmVudHM7IHJlc3QgfVxuICAgICAgfCBWYXJpYWJsZURlZmluaXRpb24gXyA6OiBCZWdpbkNhbGwgaW5mb3MgOjogXyB3aGVuIGlzX2Z1bmN0aW9uX2NhbGwgaW5mb3NcbiAgICAgICAgLT5cbiAgICAgICAgbGV0IHJlc3QsIGZ1bl9jYWxsID0gcGFyc2VfZnVuX2NhbGwgY3R4LnJlc3QgaW5cblxuICAgICAgICBwYXJzZV9ldmVudHMgeyBjdHggd2l0aCBldmVudHMgPSBGdW5DYWxsIGZ1bl9jYWxsIDo6IGN0eC5ldmVudHM7IHJlc3QgfVxuICAgICAgfCBCZWdpbkNhbGwgaW5mb3MgOjogcmVzdCB3aGVuIGlzX3N1YnNjb3BlX2NhbGwgaW5mb3MgLT4gKFxuICAgICAgICBtYXRjaCBpbmZvcyB3aXRoXG4gICAgICAgIHwgW187IHZhcl9uYW1lOyBfXSAtPlxuICAgICAgICAgIGxldCBib2R5X2N0eCA9IHBhcnNlX2V2ZW50cyB7IGVtcHR5X2N0eCB3aXRoIHJlc3QgfSBpblxuICAgICAgICAgIGxldCBpbnB1dHMgPSBWYXJEZWZNYXAuZ2V0IHZhcl9uYW1lIGN0eC52YXJzIGluXG4gICAgICAgICAgcGFyc2VfZXZlbnRzXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGN0eCB3aXRoXG4gICAgICAgICAgICAgIGV2ZW50cyA9XG4gICAgICAgICAgICAgICAgU3ViU2NvcGVDYWxsIHsgbmFtZSA9IGluZm9zOyBpbnB1dHM7IGJvZHkgPSBib2R5X2N0eC5ldmVudHMgfVxuICAgICAgICAgICAgICAgIDo6IGN0eC5ldmVudHM7XG4gICAgICAgICAgICAgIHJlc3QgPSBib2R5X2N0eC5yZXN0O1xuICAgICAgICAgICAgfVxuICAgICAgICB8IF8gLT4gZmFpbHdpdGggXCJ1bnJlYWNoYWJsZSBkdWUgdG8gdGhlIFtpc19zdWJzY29wZV9jYWxsXSB0ZXN0XCIpXG4gICAgICB8IEVuZENhbGwgXyA6OiByZXN0IC0+IHsgY3R4IHdpdGggZXZlbnRzID0gY3R4LmV2ZW50cyB8PiBMaXN0LnJldjsgcmVzdCB9XG4gICAgICB8IGV2ZW50IDo6IF8gLT4gZmFpbHdpdGggKFwiVW5leHBlY3RlZCBldmVudDogXCIgXiByYXdfZXZlbnRfdG9fc3RyaW5nIGV2ZW50KVxuICAgIGFuZCBwYXJzZV9mdW5fY2FsbCBldmVudHMgPVxuICAgICAgbWF0Y2hcbiAgICAgICAgdGFrZV93aGlsZVxuICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgfCBWYXJpYWJsZURlZmluaXRpb24gKG5hbWUsIF8sIF8pIC0+IGlzX2lucHV0X3Zhcl9kZWYgbmFtZVxuICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgIGV2ZW50c1xuICAgICAgd2l0aFxuICAgICAgfCBpbnB1dHMsIEJlZ2luQ2FsbCBpbmZvcyA6OiByZXN0IHdoZW4gaXNfZnVuY3Rpb25fY2FsbCBpbmZvcyAtPlxuICAgICAgICBsZXQgZnVuX2lucHV0cyA9XG4gICAgICAgICAgTGlzdExhYmVscy5tYXAgaW5wdXRzIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgfCBWYXJpYWJsZURlZmluaXRpb24gKG5hbWUsIGlvLCB2YWx1ZSkgLT5cbiAgICAgICAgICAgICAgeyBwb3MgPSBOb25lOyBuYW1lOyB2YWx1ZTsgZnVuX2NhbGxzID0gTm9uZTsgaW8gfVxuICAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJlc3QsIGJvZHksIG91dHB1dCA9XG4gICAgICAgICAgbGV0IGJvZHlfY3R4ID1cbiAgICAgICAgICAgIHBhcnNlX2V2ZW50cyB7IHZhcnMgPSBWYXJEZWZNYXAuZW1wdHk7IGV2ZW50cyA9IFtdOyByZXN0IH1cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBib2R5X3JldiA9IExpc3QucmV2IGJvZHlfY3R4LmV2ZW50cyBpblxuICAgICAgICAgIGJvZHlfY3R4LnJlc3QsIGJvZHlfcmV2IHw+IExpc3QudGwgfD4gTGlzdC5yZXYsIGJvZHlfcmV2IHw+IExpc3QuaGRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG91dHB1dCA9XG4gICAgICAgICAgbWF0Y2ggb3V0cHV0IHdpdGhcbiAgICAgICAgICB8IFZhckNvbXB1dGF0aW9uIHZhcl9kZWYgLT4gdmFyX2RlZlxuICAgICAgICAgIHwgXyAtPiBmYWlsd2l0aCBcIk1pc3NpbmcgZnVuY3Rpb24gb3V0cHV0IHZhcmlhYmxlIGRlZmluaXRpb24uXCJcbiAgICAgICAgaW5cblxuICAgICAgICByZXN0LCB7IGZ1bl9uYW1lID0gaW5mb3M7IGZ1bl9pbnB1dHM7IGJvZHk7IG91dHB1dCB9XG4gICAgICB8IF8gLT4gZmFpbHdpdGggXCJJbnZhbGlkIHN0YXJ0IG9mIGZ1bmN0aW9uIGNhbGwuXCJcbiAgICBpblxuXG4gICAgbGV0IGN0eCA9XG4gICAgICB0cnkgcGFyc2VfZXZlbnRzIHsgZW1wdHlfY3R4IHdpdGggcmVzdCA9IHJhd19ldmVudHMgfVxuICAgICAgd2l0aCBGYWlsdXJlIG1zZyAtPlxuICAgICAgICAoKiBUT0RPOiBkaXNjdXNzIHdoYXQgc2hvdWxkIGJlIGRvbmUuICopXG4gICAgICAgIFByaW50Zi5lcHJpbnRmIFwiQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgcGFyc2luZyByYXcgZXZlbnRzOiAlc1xcblwiIG1zZztcbiAgICAgICAgZW1wdHlfY3R4XG4gICAgaW5cbiAgICBjdHguZXZlbnRzXG5lbmRcblxubGV0IGhhbmRsZV9kZWZhdWx0IDpcbiAgICAgICdhLlxuICAgICAgc291cmNlX3Bvc2l0aW9uIC0+XG4gICAgICAodW5pdCAtPiAnYSkgYXJyYXkgLT5cbiAgICAgICh1bml0IC0+IGJvb2wpIC0+XG4gICAgICAodW5pdCAtPiAnYSkgLT5cbiAgICAgICdhID1cbiBmdW4gcG9zIGV4Y2VwdGlvbnMganVzdCBjb25zIC0+XG4gIGxldCBleGNlcHQgPVxuICAgIEFycmF5LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MgZXhjZXB0IC0+XG4gICAgICAgIGxldCBuZXdfdmFsID0gdHJ5IFNvbWUgKGV4Y2VwdCAoKSkgd2l0aCBFbXB0eUVycm9yIC0+IE5vbmUgaW5cbiAgICAgICAgbWF0Y2ggYWNjLCBuZXdfdmFsIHdpdGhcbiAgICAgICAgfCBOb25lLCBfIC0+IG5ld192YWxcbiAgICAgICAgfCBTb21lIF8sIE5vbmUgLT4gYWNjXG4gICAgICAgIHwgU29tZSBfLCBTb21lIF8gLT4gcmFpc2UgKENvbmZsaWN0RXJyb3IgcG9zKSlcbiAgICAgIE5vbmUgZXhjZXB0aW9uc1xuICBpblxuICBtYXRjaCBleGNlcHQgd2l0aFxuICB8IFNvbWUgeCAtPiB4XG4gIHwgTm9uZSAtPiBpZiBqdXN0ICgpIHRoZW4gY29ucyAoKSBlbHNlIHJhaXNlIEVtcHR5RXJyb3JcblxubGV0IGhhbmRsZV9kZWZhdWx0X29wdFxuICAgIChwb3MgOiBzb3VyY2VfcG9zaXRpb24pXG4gICAgKGV4Y2VwdGlvbnMgOiAnYSBlb3B0aW9uIGFycmF5KVxuICAgIChqdXN0IDogdW5pdCAtPiBib29sIGVvcHRpb24pXG4gICAgKGNvbnMgOiB1bml0IC0+ICdhIGVvcHRpb24pIDogJ2EgZW9wdGlvbiA9XG4gIGxldCBleGNlcHQgPVxuICAgIEFycmF5LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MgZXhjZXB0IC0+XG4gICAgICAgIG1hdGNoIGFjYywgZXhjZXB0IHdpdGhcbiAgICAgICAgfCBFTm9uZSBfLCBfIC0+IGV4Y2VwdFxuICAgICAgICB8IEVTb21lIF8sIEVOb25lIF8gLT4gYWNjXG4gICAgICAgIHwgRVNvbWUgXywgRVNvbWUgXyAtPiByYWlzZSAoQ29uZmxpY3RFcnJvciBwb3MpKVxuICAgICAgKEVOb25lICgpKSBleGNlcHRpb25zXG4gIGluXG4gIG1hdGNoIGV4Y2VwdCB3aXRoXG4gIHwgRVNvbWUgXyAtPiBleGNlcHRcbiAgfCBFTm9uZSBfIC0+IChcbiAgICBtYXRjaCBqdXN0ICgpIHdpdGhcbiAgICB8IEVTb21lIGIgLT4gaWYgYiB0aGVuIGNvbnMgKCkgZWxzZSBFTm9uZSAoKVxuICAgIHwgRU5vbmUgXyAtPiBFTm9uZSAoKSlcblxubGV0IG5vX2lucHV0IDogdW5pdCAtPiAnYSA9IGZ1biBfIC0+IHJhaXNlIEVtcHR5RXJyb3JcblxuKCogVE9ETzogYWRkIGEgY29tcGFyZSBidWlsdC1pbiB0byBkYXRlc19jYWxjLiBBdCB0aGUgbW9tZW50IHRoaXMgZmFpbHMgb24gZS5nLlxuICAgWzMgbW9udGhzLCA0IG1vbnRoc10gKilcbmxldCBjb21wYXJlX3BlcmlvZHMgKHAxIDogZHVyYXRpb24pIChwMiA6IGR1cmF0aW9uKSA6IGludCA9XG4gIHRyeVxuICAgIGxldCBwMV9kYXlzID0gRGF0ZXNfY2FsYy5EYXRlcy5wZXJpb2RfdG9fZGF5cyBwMSBpblxuICAgIGxldCBwMl9kYXlzID0gRGF0ZXNfY2FsYy5EYXRlcy5wZXJpb2RfdG9fZGF5cyBwMiBpblxuICAgIGNvbXBhcmUgcDFfZGF5cyBwMl9kYXlzXG4gIHdpdGggRGF0ZXNfY2FsYy5EYXRlcy5BbWJpZ3VvdXNDb21wdXRhdGlvbiAtPiByYWlzZSBVbmNvbXBhcmFibGVEdXJhdGlvbnNcblxuKCogVE9ETzogc2FtZSBoZXJlLCBhbHRob3VnaCBpdCB3YXMgdHdlYWtlZCB0byBuZXZlciBmYWlsIG9uIGVxdWFsIGRhdGVzLlxuICAgQ29tcGFyaW5nIHRoZSBkaWZmZXJlbmNlIHRvIGR1cmF0aW9uXzAgaXMgbm90IGEgZ29vZCBpZGVhIGJlY2F1c2Ugd2Ugc3RpbGxcbiAgIHdhbnQgdG8gZmFpbCBvbiBbMSBtb250aCwgMzAgZGF5c10gcmF0aGVyIHRoYW4gcmV0dXJuIFtmYWxzZV0gKilcbmxldCBlcXVhbF9wZXJpb2RzIChwMSA6IGR1cmF0aW9uKSAocDIgOiBkdXJhdGlvbikgOiBib29sID1cbiAgdHJ5IERhdGVzX2NhbGMuRGF0ZXMucGVyaW9kX3RvX2RheXMgKERhdGVzX2NhbGMuRGF0ZXMuc3ViX3BlcmlvZHMgcDEgcDIpID0gMFxuICB3aXRoIERhdGVzX2NhbGMuRGF0ZXMuQW1iaWd1b3VzQ29tcHV0YXRpb24gLT4gcmFpc2UgVW5jb21wYXJhYmxlRHVyYXRpb25zXG5cbm1vZHVsZSBPcGVyID0gc3RydWN0XG4gIGxldCBvX25vdCA9IFN0ZGxpYi5ub3RcbiAgbGV0IG9fbGVuZ3RoIGEgPSBaLm9mX2ludCAoQXJyYXkubGVuZ3RoIGEpXG4gIGxldCBvX3RvcmF0X2ludCA9IGRlY2ltYWxfb2ZfaW50ZWdlclxuICBsZXQgb190b3JhdF9tb24gPSBkZWNpbWFsX29mX21vbmV5XG4gIGxldCBvX3RvbW9uZXlfcmF0ID0gbW9uZXlfb2ZfZGVjaW1hbFxuICBsZXQgb19nZXREYXkgPSBkYXlfb2ZfbW9udGhfb2ZfZGF0ZVxuICBsZXQgb19nZXRNb250aCA9IG1vbnRoX251bWJlcl9vZl9kYXRlXG4gIGxldCBvX2dldFllYXIgPSB5ZWFyX29mX2RhdGVcbiAgbGV0IG9fZmlyc3REYXlPZk1vbnRoID0gZmlyc3RfZGF5X29mX21vbnRoXG4gIGxldCBvX2xhc3REYXlPZk1vbnRoID0gbGFzdF9kYXlfb2ZfbW9udGhcbiAgbGV0IG9fcm91bmRfbW9uID0gbW9uZXlfcm91bmRcbiAgbGV0IG9fcm91bmRfcmF0ID0gZGVjaW1hbF9yb3VuZFxuICBsZXQgb19taW51c19pbnQgaTEgPSBaLnN1YiBaLnplcm8gaTFcbiAgbGV0IG9fbWludXNfcmF0IGkxID0gUS5zdWIgUS56ZXJvIGkxXG4gIGxldCBvX21pbnVzX21vbiBtMSA9IFouc3ViIFouemVybyBtMVxuICBsZXQgb19taW51c19kdXIgPSBEYXRlc19jYWxjLkRhdGVzLm5lZ19wZXJpb2RcbiAgbGV0IG9fYW5kID0gKCAmJiApXG4gIGxldCBvX29yID0gKCB8fCApXG4gIGxldCBvX3hvciA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gKCA8PiApXG4gIGxldCBvX2VxID0gKCA9IClcbiAgbGV0IG9fbWFwID0gQXJyYXkubWFwXG5cbiAgbGV0IG9fcmVkdWNlIGYgZGZ0IGEgPVxuICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggYSBpblxuICAgIGlmIGxlbiA9IDAgdGhlbiBkZnRcbiAgICBlbHNlXG4gICAgICBsZXQgciA9IHJlZiBhLigwKSBpblxuICAgICAgZm9yIGkgPSAxIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgciA6PSBmICFyIGEuKGkpXG4gICAgICBkb25lO1xuICAgICAgIXJcblxuICBsZXQgb19jb25jYXQgPSBBcnJheS5hcHBlbmRcbiAgbGV0IG9fZmlsdGVyIGYgYSA9IEFycmF5Lm9mX2xpc3QgKExpc3QuZmlsdGVyIGYgKEFycmF5LnRvX2xpc3QgYSkpXG4gIGxldCBvX2FkZF9pbnRfaW50IGkxIGkyID0gWi5hZGQgaTEgaTJcbiAgbGV0IG9fYWRkX3JhdF9yYXQgaTEgaTIgPSBRLmFkZCBpMSBpMlxuICBsZXQgb19hZGRfbW9uX21vbiBtMSBtMiA9IFouYWRkIG0xIG0yXG4gIGxldCBvX2FkZF9kYXRfZHVyIHIgZGEgZHUgPSBEYXRlc19jYWxjLkRhdGVzLmFkZF9kYXRlcyB+cm91bmQ6ciBkYSBkdVxuICBsZXQgb19hZGRfZHVyX2R1ciA9IERhdGVzX2NhbGMuRGF0ZXMuYWRkX3BlcmlvZHNcbiAgbGV0IG9fc3ViX2ludF9pbnQgaTEgaTIgPSBaLnN1YiBpMSBpMlxuICBsZXQgb19zdWJfcmF0X3JhdCBpMSBpMiA9IFEuc3ViIGkxIGkyXG4gIGxldCBvX3N1Yl9tb25fbW9uIG0xIG0yID0gWi5zdWIgbTEgbTJcbiAgbGV0IG9fc3ViX2RhdF9kYXQgPSBEYXRlc19jYWxjLkRhdGVzLnN1Yl9kYXRlc1xuICBsZXQgb19zdWJfZGF0X2R1ciBkYXQgZHVyID0gRGF0ZXNfY2FsYy5EYXRlcy4oYWRkX2RhdGVzIGRhdCAobmVnX3BlcmlvZCBkdXIpKVxuICBsZXQgb19zdWJfZHVyX2R1ciA9IERhdGVzX2NhbGMuRGF0ZXMuc3ViX3BlcmlvZHNcbiAgbGV0IG9fbXVsdF9pbnRfaW50IGkxIGkyID0gWi5tdWwgaTEgaTJcbiAgbGV0IG9fbXVsdF9yYXRfcmF0IGkxIGkyID0gUS5tdWwgaTEgaTJcblxuICBsZXQgb19tdWx0X21vbl9yYXQgaTEgaTIgPVxuICAgIGxldCBpMV9hYnMgPSBaLmFicyBpMSBpblxuICAgIGxldCBpMl9hYnMgPSBRLmFicyBpMiBpblxuICAgIGxldCBzaWduX2ludCA9IFouc2lnbiBpMSAqIFEuc2lnbiBpMiBpblxuICAgIGxldCByYXRfcmVzdWx0ID0gUS5tdWwgKFEub2ZfYmlnaW50IGkxX2FicykgaTJfYWJzIGluXG4gICAgbGV0IHJlcywgcmVtYWluZGVyID0gWi5kaXZfcmVtIChRLm51bSByYXRfcmVzdWx0KSAoUS5kZW4gcmF0X3Jlc3VsdCkgaW5cbiAgICAoKiB3ZSBwZXJmb3JtIG5lYXJlc3Qgcm91bmRpbmcgd2hlbiBtdWx0aXBseWluZyBhbiBhbW91bnQgb2YgbW9uZXkgYnkgYVxuICAgICAgIGRlY2ltYWwgISopXG4gICAgaWYgWi4ob2ZfaW50IDIgKiByZW1haW5kZXIgPj0gUS5kZW4gcmF0X3Jlc3VsdCkgdGhlblxuICAgICAgWi4oYWRkIHJlcyAob2ZfaW50IDEpICogb2ZfaW50IHNpZ25faW50KVxuICAgIGVsc2UgWi4ocmVzICogb2ZfaW50IHNpZ25faW50KVxuXG4gIGxldCBvX211bHRfZHVyX2ludCBkIG0gPSBEYXRlc19jYWxjLkRhdGVzLm11bF9wZXJpb2QgZCAoWi50b19pbnQgbSlcblxuICBsZXQgb19kaXZfaW50X2ludCBpMSBpMiA9XG4gICAgKCogSXQncyBub3Qgb24gdGhlIG9jYW1sZG9jLCBidXQgUS5kaXYgbGlrZWx5IGFscmVhZHkgcmFpc2VzIHRoaXMgPyAqKVxuICAgIGlmIFouemVybyA9IGkyIHRoZW4gcmFpc2UgRGl2aXNpb25fYnlfemVyb1xuICAgIGVsc2UgUS5kaXYgKFEub2ZfYmlnaW50IGkxKSAoUS5vZl9iaWdpbnQgaTIpXG5cbiAgbGV0IG9fZGl2X3JhdF9yYXQgaTEgaTIgPVxuICAgIGlmIFEuemVybyA9IGkyIHRoZW4gcmFpc2UgRGl2aXNpb25fYnlfemVybyBlbHNlIFEuZGl2IGkxIGkyXG5cbiAgbGV0IG9fZGl2X21vbl9tb24gbTEgbTIgPVxuICAgIGlmIFouemVybyA9IG0yIHRoZW4gcmFpc2UgRGl2aXNpb25fYnlfemVyb1xuICAgIGVsc2UgUS5kaXYgKFEub2ZfYmlnaW50IG0xKSAoUS5vZl9iaWdpbnQgbTIpXG5cbiAgbGV0IG9fZGl2X21vbl9yYXQgbTEgcjEgPVxuICAgIGlmIFEuemVybyA9IHIxIHRoZW4gcmFpc2UgRGl2aXNpb25fYnlfemVybyBlbHNlIG9fbXVsdF9tb25fcmF0IG0xIChRLmludiByMSlcblxuICBsZXQgb19kaXZfZHVyX2R1ciBkMSBkMiA9XG4gICAgbGV0IGkxLCBpMiA9XG4gICAgICB0cnlcbiAgICAgICAgKCBpbnRlZ2VyX29mX2ludCAoRGF0ZXNfY2FsYy5EYXRlcy5wZXJpb2RfdG9fZGF5cyBkMSksXG4gICAgICAgICAgaW50ZWdlcl9vZl9pbnQgKERhdGVzX2NhbGMuRGF0ZXMucGVyaW9kX3RvX2RheXMgZDIpIClcbiAgICAgIHdpdGggRGF0ZXNfY2FsYy5EYXRlcy5BbWJpZ3VvdXNDb21wdXRhdGlvbiAtPiByYWlzZSBJbmRpdmlzaWJsZUR1cmF0aW9uc1xuICAgIGluXG4gICAgb19kaXZfaW50X2ludCBpMSBpMlxuXG4gIGxldCBvX2x0X2ludF9pbnQgaTEgaTIgPSBaLmNvbXBhcmUgaTEgaTIgPCAwXG4gIGxldCBvX2x0X3JhdF9yYXQgaTEgaTIgPSBRLmNvbXBhcmUgaTEgaTIgPCAwXG4gIGxldCBvX2x0X21vbl9tb24gbTEgbTIgPSBaLmNvbXBhcmUgbTEgbTIgPCAwXG4gIGxldCBvX2x0X2R1cl9kdXIgZDEgZDIgPSBjb21wYXJlX3BlcmlvZHMgZDEgZDIgPCAwXG4gIGxldCBvX2x0X2RhdF9kYXQgZDEgZDIgPSBEYXRlc19jYWxjLkRhdGVzLmNvbXBhcmVfZGF0ZXMgZDEgZDIgPCAwXG4gIGxldCBvX2x0ZV9pbnRfaW50IGkxIGkyID0gWi5jb21wYXJlIGkxIGkyIDw9IDBcbiAgbGV0IG9fbHRlX3JhdF9yYXQgaTEgaTIgPSBRLmNvbXBhcmUgaTEgaTIgPD0gMFxuICBsZXQgb19sdGVfbW9uX21vbiBtMSBtMiA9IFouY29tcGFyZSBtMSBtMiA8PSAwXG4gIGxldCBvX2x0ZV9kdXJfZHVyIGQxIGQyID0gY29tcGFyZV9wZXJpb2RzIGQxIGQyIDw9IDBcbiAgbGV0IG9fbHRlX2RhdF9kYXQgZDEgZDIgPSBEYXRlc19jYWxjLkRhdGVzLmNvbXBhcmVfZGF0ZXMgZDEgZDIgPD0gMFxuICBsZXQgb19ndF9pbnRfaW50IGkxIGkyID0gWi5jb21wYXJlIGkxIGkyID4gMFxuICBsZXQgb19ndF9yYXRfcmF0IGkxIGkyID0gUS5jb21wYXJlIGkxIGkyID4gMFxuICBsZXQgb19ndF9tb25fbW9uIG0xIG0yID0gWi5jb21wYXJlIG0xIG0yID4gMFxuICBsZXQgb19ndF9kdXJfZHVyIGQxIGQyID0gY29tcGFyZV9wZXJpb2RzIGQxIGQyID4gMFxuICBsZXQgb19ndF9kYXRfZGF0IGQxIGQyID0gRGF0ZXNfY2FsYy5EYXRlcy5jb21wYXJlX2RhdGVzIGQxIGQyID4gMFxuICBsZXQgb19ndGVfaW50X2ludCBpMSBpMiA9IFouY29tcGFyZSBpMSBpMiA+PSAwXG4gIGxldCBvX2d0ZV9yYXRfcmF0IGkxIGkyID0gUS5jb21wYXJlIGkxIGkyID49IDBcbiAgbGV0IG9fZ3RlX21vbl9tb24gbTEgbTIgPSBaLmNvbXBhcmUgbTEgbTIgPj0gMFxuICBsZXQgb19ndGVfZHVyX2R1ciBkMSBkMiA9IGNvbXBhcmVfcGVyaW9kcyBkMSBkMiA+PSAwXG4gIGxldCBvX2d0ZV9kYXRfZGF0IGQxIGQyID0gRGF0ZXNfY2FsYy5EYXRlcy5jb21wYXJlX2RhdGVzIGQxIGQyID49IDBcbiAgbGV0IG9fZXFfaW50X2ludCBpMSBpMiA9IFouZXF1YWwgaTEgaTJcbiAgbGV0IG9fZXFfcmF0X3JhdCBpMSBpMiA9IFEuZXF1YWwgaTEgaTJcbiAgbGV0IG9fZXFfbW9uX21vbiBtMSBtMiA9IFouZXF1YWwgbTEgbTJcbiAgbGV0IG9fZXFfZHVyX2R1ciBkMSBkMiA9IGVxdWFsX3BlcmlvZHMgZDEgZDJcbiAgbGV0IG9fZXFfZGF0X2RhdCBkMSBkMiA9IERhdGVzX2NhbGMuRGF0ZXMuY29tcGFyZV9kYXRlcyBkMSBkMiA9IDBcbiAgbGV0IG9fZm9sZCA9IEFycmF5LmZvbGRfbGVmdFxuZW5kXG5cbmluY2x1ZGUgT3BlclxuIixudWxsLG51bGwsIigqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDYXRhbGEgY29tcGlsZXIsIGEgc3BlY2lmaWNhdGlvbiBsYW5ndWFnZSBmb3IgdGF4XG4gICBhbmQgc29jaWFsIGJlbmVmaXRzIGNvbXB1dGF0aW9uIHJ1bGVzLiBDb3B5cmlnaHQgKEMpIDIwMjAgSW5yaWEsIGNvbnRyaWJ1dG9yOlxuICAgRW1pbGUgUm9sbGV5IDxlbWlsZS5yb2xsZXlAdHV0YS5pbz4uXG5cbiAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90XG4gICB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZlxuICAgdGhlIExpY2Vuc2UgYXRcblxuICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVFxuICAgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlXG4gICBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlclxuICAgdGhlIExpY2Vuc2UuICopXG5cbm9wZW4gSnNfb2Zfb2NhbWxcbm1vZHVsZSBSX29jYW1sID0gUnVudGltZV9vY2FtbC5SdW50aW1lXG5cbmNsYXNzIHR5cGUgc291cmNlX3Bvc2l0aW9uID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGZpbGVOYW1lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICAgIG1ldGhvZCBzdGFydExpbmUgOiBpbnQgSnMucHJvcFxuICAgIG1ldGhvZCBlbmRMaW5lIDogaW50IEpzLnByb3BcbiAgICBtZXRob2Qgc3RhcnRDb2x1bW4gOiBpbnQgSnMucHJvcFxuICAgIG1ldGhvZCBlbmRDb2x1bW4gOiBpbnQgSnMucHJvcFxuICAgIG1ldGhvZCBsYXdIZWFkaW5ncyA6IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucHJvcFxuICBlbmRcblxuY2xhc3MgdHlwZSByYXdfZXZlbnQgPVxuICBvYmplY3RcbiAgICBtZXRob2QgZXZlbnRUeXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICAgIG1ldGhvZCBpbmZvcm1hdGlvbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucHJvcFxuICAgIG1ldGhvZCBzb3VyY2VQb3NpdGlvbiA6IHNvdXJjZV9wb3NpdGlvbiBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG4gICAgbWV0aG9kIGxvZ2dlZElPSnNvbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgICBtZXRob2QgbG9nZ2VkVmFsdWVKc29uIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICBlbmRcblxuY2xhc3MgdHlwZSBldmVudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBkYXRhIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICBlbmRcblxuY2xhc3MgdHlwZSBkdXJhdGlvbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCB5ZWFycyA6IGludCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG1vbnRocyA6IGludCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRheXMgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IGR1cmF0aW9uX29mX2pzb28gZCA9XG4gIFJfb2NhbWwuZHVyYXRpb25fb2ZfbnVtYmVycyBkIyMueWVhcnMgZCMjLm1vbnRocyBkIyMuZGF5c1xuXG5sZXQgZHVyYXRpb25fdG9fanNvbyBkID1cbiAgbGV0IHllYXJzLCBtb250aHMsIGRheXMgPSBSX29jYW1sLmR1cmF0aW9uX3RvX3llYXJzX21vbnRoc19kYXlzIGQgaW5cbiAgb2JqZWN0JWpzXG4gICAgdmFsIHllYXJzID0geWVhcnNcbiAgICB2YWwgbW9udGhzID0gbW9udGhzXG4gICAgdmFsIGRheXMgPSBkYXlzXG4gIGVuZFxuXG5sZXQgZGF0ZV9vZl9qc29vIGQgPVxuICBsZXQgZCA9IEpzLnRvX3N0cmluZyBkIGluXG4gIGxldCBkID1cbiAgICBpZiBTdHJpbmcuY29udGFpbnMgZCAnVCcgdGhlbiBkIHw+IFN0cmluZy5zcGxpdF9vbl9jaGFyICdUJyB8PiBMaXN0LmhkXG4gICAgZWxzZSBkXG4gIGluXG4gIG1hdGNoIFN0cmluZy5zcGxpdF9vbl9jaGFyICctJyBkIHdpdGhcbiAgfCBbeWVhcjsgbW9udGg7IGRheV0gLT5cbiAgICBSX29jYW1sLmRhdGVfb2ZfbnVtYmVycyAoaW50X29mX3N0cmluZyB5ZWFyKSAoaW50X29mX3N0cmluZyBtb250aClcbiAgICAgIChpbnRfb2Zfc3RyaW5nIGRheSlcbiAgfCBfIC0+IGZhaWx3aXRoIFwiZGF0ZV9vZl9qc29vOiBpbnZhbGlkIGRhdGVcIlxuXG5sZXQgZGF0ZV90b19qc29vIGQgPSBKcy5zdHJpbmcgQEAgUl9vY2FtbC5kYXRlX3RvX3N0cmluZyBkXG5cbmNsYXNzIHR5cGUgZXZlbnRfbWFuYWdlciA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCByZXNldExvZyA6ICh1bml0LCB1bml0KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcblxuICAgIG1ldGhvZCByZXRyaWV2ZUV2ZW50cyA6XG4gICAgICAodW5pdCwgZXZlbnQgSnMudCBKcy5qc19hcnJheSBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcblxuICAgIG1ldGhvZCByZXRyaWV2ZVJhd0V2ZW50cyA6XG4gICAgICAodW5pdCwgcmF3X2V2ZW50IEpzLnQgSnMuanNfYXJyYXkgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gIGVuZFxuXG5sZXQgZXZlbnRfbWFuYWdlciA6IGV2ZW50X21hbmFnZXIgSnMudCA9XG4gIG9iamVjdCVqc1xuICAgIG1ldGhvZCByZXNldExvZyA9IEpzLndyYXBfbWV0aF9jYWxsYmFjayBSX29jYW1sLnJlc2V0X2xvZ1xuXG4gICAgbWV0aG9kIHJldHJpZXZlRXZlbnRzID1cbiAgICAgIEpzLndyYXBfbWV0aF9jYWxsYmFjayAoZnVuICgpIC0+XG4gICAgICAgICAgSnMuYXJyYXlcbiAgICAgICAgICAgIChBcnJheS5vZl9saXN0XG4gICAgICAgICAgICAgICAoUl9vY2FtbC5yZXRyaWV2ZV9sb2cgKClcbiAgICAgICAgICAgICAgIHw+IFJfb2NhbWwuRXZlbnRQYXJzZXIucGFyc2VfcmF3X2V2ZW50c1xuICAgICAgICAgICAgICAgfD4gTGlzdC5tYXAgKGZ1biBldmVudCAtPlxuICAgICAgICAgICAgICAgICAgICAgIG9iamVjdCVqc1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG11dGFibGUgZGF0YSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHw+IFJfb2NhbWwueW9qc29uX29mX2V2ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHw+IFlvanNvbi5TYWZlLnRvX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICB8PiBKcy5zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICBlbmQpKSkpXG5cbiAgICBtZXRob2QgcmV0cmlldmVSYXdFdmVudHMgPVxuICAgICAgSnMud3JhcF9tZXRoX2NhbGxiYWNrIChmdW4gKCkgLT5cbiAgICAgICAgICBKcy5hcnJheVxuICAgICAgICAgICAgKEFycmF5Lm9mX2xpc3RcbiAgICAgICAgICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAgKGZ1biBldnQgLT5cbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0JWpzXG4gICAgICAgICAgICAgICAgICAgICAgdmFsIG11dGFibGUgZXZlbnRUeXBlID1cbiAgICAgICAgICAgICAgICAgICAgICAgIEpzLnN0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggZXZ0IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBSX29jYW1sLkJlZ2luQ2FsbCBfIC0+IFwiQmVnaW4gY2FsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgRW5kQ2FsbCBfIC0+IFwiRW5kIGNhbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFZhcmlhYmxlRGVmaW5pdGlvbiBfIC0+IFwiVmFyaWFibGUgZGVmaW5pdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVjaXNpb25UYWtlbiBfIC0+IFwiRGVjaXNpb24gdGFrZW5cIilcblxuICAgICAgICAgICAgICAgICAgICAgIHZhbCBtdXRhYmxlIGluZm9ybWF0aW9uID1cbiAgICAgICAgICAgICAgICAgICAgICAgIEpzLmFycmF5XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChBcnJheS5vZl9saXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBldnQgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJlZ2luQ2FsbCBpbmZvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRW5kQ2FsbCBpbmZvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVmFyaWFibGVEZWZpbml0aW9uIChpbmZvLCBfLCBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QubWFwIEpzLnN0cmluZyBpbmZvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVjaXNpb25UYWtlbiBfIC0+IFtdKSlcblxuICAgICAgICAgICAgICAgICAgICAgIHZhbCBtdXRhYmxlIGxvZ2dlZElPSnNvbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBldnQgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBWYXJpYWJsZURlZmluaXRpb24gKF8sIGlvLCBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpb1xuICAgICAgICAgICAgICAgICAgICAgICAgICB8PiBSX29jYW1sLnlvanNvbl9vZl9pb19sb2dcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfD4gWW9qc29uLlNhZmUudG9fc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHw+IEpzLnN0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgfCBFbmRDYWxsIF8gfCBCZWdpbkNhbGwgXyB8IERlY2lzaW9uVGFrZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBcInVuYXZhaWxhYmxlXCIgfD4gSnMuc3RyaW5nXG5cbiAgICAgICAgICAgICAgICAgICAgICB2YWwgbXV0YWJsZSBsb2dnZWRWYWx1ZUpzb24gPVxuICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGV2dCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFZhcmlhYmxlRGVmaW5pdGlvbiAoXywgXywgdikgLT4gdlxuICAgICAgICAgICAgICAgICAgICAgICAgfCBFbmRDYWxsIF8gfCBCZWdpbkNhbGwgXyB8IERlY2lzaW9uVGFrZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBSX29jYW1sLnVuZW1iZWRkYWJsZSAoKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHw+IFJfb2NhbWwueW9qc29uX29mX3J1bnRpbWVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIHw+IFlvanNvbi5TYWZlLnRvX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgfD4gSnMuc3RyaW5nXG5cbiAgICAgICAgICAgICAgICAgICAgICB2YWwgbXV0YWJsZSBzb3VyY2VQb3NpdGlvbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBldnQgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBEZWNpc2lvblRha2VuIHBvcyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBKcy5kZWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2JqZWN0JWpzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG11dGFibGUgZmlsZU5hbWUgPSBKcy5zdHJpbmcgcG9zLmZpbGVuYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG11dGFibGUgc3RhcnRMaW5lID0gcG9zLnN0YXJ0X2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgbXV0YWJsZSBlbmRMaW5lID0gcG9zLmVuZF9saW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG11dGFibGUgc3RhcnRDb2x1bW4gPSBwb3Muc3RhcnRfY29sdW1uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG11dGFibGUgZW5kQ29sdW1uID0gcG9zLmVuZF9jb2x1bW5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBtdXRhYmxlIGxhd0hlYWRpbmdzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpzLmFycmF5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBcnJheS5vZl9saXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMaXN0Lm1hcCBKcy5zdHJpbmcgcG9zLmxhd19oZWFkaW5ncykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IEpzLnVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICBlbmQpXG4gICAgICAgICAgICAgICAgICAoUl9vY2FtbC5yZXRyaWV2ZV9sb2cgKCkpKSkpXG4gIGVuZFxuXG5sZXQgZXhlY3V0ZV9vcl90aHJvd19lcnJvciBmID1cbiAgbGV0IHRocm93X2Vycm9yIChkZXNjciA6IHN0cmluZykgKHBvcyA6IFJfb2NhbWwuc291cmNlX3Bvc2l0aW9uKSA9XG4gICAgbGV0IG1zZyA9XG4gICAgICBKcy5zdHJpbmdcbiAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIiVzIGluIGZpbGUgJXMsIHBvc2l0aW9uICVkOiVkLS0lZDolZC5cIiBkZXNjclxuICAgICAgICAgICBwb3MuZmlsZW5hbWUgcG9zLnN0YXJ0X2xpbmUgcG9zLnN0YXJ0X2NvbHVtbiBwb3MuZW5kX2xpbmVcbiAgICAgICAgICAgcG9zLmVuZF9jb2x1bW4pXG4gICAgaW5cbiAgICBKcy5Kc19lcnJvci5yYWlzZV9cbiAgICAgIChKcy5Kc19lcnJvci5vZl9lcnJvclxuICAgICAgICAgKG9iamVjdCVqc1xuICAgICAgICAgICAgdmFsIG11dGFibGUgbmFtZSA9IEpzLnN0cmluZyBcIkNhdGFsYUVycm9yXCJcbiAgICAgICAgICAgIHZhbCBtdXRhYmxlIG1lc3NhZ2UgPSBtc2dcbiAgICAgICAgICAgIHZhbCBtdXRhYmxlIHN0YWNrID0gSnMuT3B0ZGVmLmVtcHR5XG4gICAgICAgICAgICBtZXRob2QgdG9TdHJpbmcgPSBtc2dcbiAgICAgICAgIGVuZCkpXG4gIGluXG4gIHRyeSBmICgpIHdpdGhcbiAgfCBSX29jYW1sLk5vVmFsdWVQcm92aWRlZCBwb3MgLT5cbiAgICB0aHJvd19lcnJvclxuICAgICAgXCJObyBydWxlIGFwcGxpZXMgaW4gdGhlIGdpdmVuIGNvbnRleHQgdG8gZ2l2ZSBhIHZhbHVlIHRvIHRoZSB2YXJpYWJsZVwiIHBvc1xuICB8IFJfb2NhbWwuQ29uZmxpY3RFcnJvciBwb3MgLT5cbiAgICB0aHJvd19lcnJvclxuICAgICAgXCJBIGNvbmZsaWN0IGhhcHBlbmVkIGJldHdlZW4gdHdvIHJ1bGVzIGdpdmluZyBhIHZhbHVlIHRvIHRoZSB2YXJpYWJsZVwiIHBvc1xuICB8IFJfb2NhbWwuQXNzZXJ0aW9uRmFpbGVkIHBvcyAtPlxuICAgIHRocm93X2Vycm9yIFwiQSBmYWlsdXJlIGhhcHBlbmVkIGluIHRoZSBhc3NlcnRpb25cIiBwb3NcbiIsIigqKiBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IHRoZSBDYXRhbGEgY29tcGlsZXIsIGRvIG5vdCBlZGl0ISAqKVxuXG5vcGVuIFJ1bnRpbWVfb2NhbWwuUnVudGltZVxuXG5bQEBAb2NhbWwud2FybmluZyBcIi00LTI2LTI3LTMyLTQxLTQyXCJdXG5cbm1vZHVsZSBQcmlzZUVuQ2hhcmdlID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IEdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgb2YgdW5pdFxuICAgIHwgR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIG9mIHVuaXRcbiAgICB8IEVmZmVjdGl2ZUV0UGVybWFuZW50ZSBvZiB1bml0XG4gICAgfCBTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSBvZiB1bml0XG4gICAgfCBTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfcHJpc2VfZW5fY2hhcmdlICh4OiBQcmlzZUVuQ2hhcmdlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiUHJpc2VFbkNoYXJnZVwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBHYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zIHggLT5cbiAgICAgIChcIkdhcmRlQWx0ZXJuw6llUGFydGFnZUFsbG9jYXRpb25zXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEdhcmRlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZSB4IC0+XG4gICAgICAoXCJHYXJkZUFsdGVybsOpZUFsbG9jYXRhaXJlVW5pcXVlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEVmZmVjdGl2ZUV0UGVybWFuZW50ZSB4IC0+IChcIkVmZmVjdGl2ZUV0UGVybWFuZW50ZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSB4IC0+XG4gICAgICAoXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc8OpZcOATGFGYW1pbGxlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggeCAtPlxuICAgICAgKFwiU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnPDqWVBdXhTZXJ2aWNlc1NvY2lhdXhcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlID0gc3RydWN0XG4gdHlwZSB0ID1cbiAgICB8IEF2YW50IG9mIHVuaXRcbiAgICB8IFBlbmRhbnQgb2YgdW5pdFxuICAgIHwgQXByZXMgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9zaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZSAoeDogU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLnQpXG4gIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IEF2YW50IHggLT4gKFwiQXZhbnRcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgUGVuZGFudCB4IC0+IChcIlBlbmRhbnRcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQXByZXMgeCAtPiAoXCJBcHLDqHNcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgUHJpc2VFbkNvbXB0ZSA9IHN0cnVjdFxuIHR5cGUgdCA9XG4gICAgfCBDb21wbGV0ZSBvZiB1bml0XG4gICAgfCBQYXJ0YWdlZSBvZiB1bml0XG4gICAgfCBaZXJvIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfcHJpc2VfZW5fY29tcHRlICh4OiBQcmlzZUVuQ29tcHRlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiUHJpc2VFbkNvbXB0ZVwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBDb21wbGV0ZSB4IC0+IChcIkNvbXBsw6h0ZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBQYXJ0YWdlZSB4IC0+IChcIlBhcnRhZ8OpZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBaZXJvIHggLT4gKFwiWsOpcm9cIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgVmVyc2VtZW50QWxsb2NhdGlvbnMgPSBzdHJ1Y3RcbiB0eXBlIHQgPVxuICAgIHwgTm9ybWFsIG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF92ZXJzZW1lbnRfYWxsb2NhdGlvbnMgKHg6IFZlcnNlbWVudEFsbG9jYXRpb25zLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiVmVyc2VtZW50QWxsb2NhdGlvbnNcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgTm9ybWFsIHggLT4gKFwiTm9ybWFsXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggeCAtPlxuICAgICAgKFwiQWxsb2NhdGlvblZlcnPDqWVBdXhTZXJ2aWNlc1NvY2lhdXhcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgQ29sbGVjdGl2aXRlID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IEd1YWRlbG91cGUgb2YgdW5pdFxuICAgIHwgR3V5YW5lIG9mIHVuaXRcbiAgICB8IE1hcnRpbmlxdWUgb2YgdW5pdFxuICAgIHwgTGFSZXVuaW9uIG9mIHVuaXRcbiAgICB8IFNhaW50QmFydGhlbGVteSBvZiB1bml0XG4gICAgfCBTYWludE1hcnRpbiBvZiB1bml0XG4gICAgfCBNZXRyb3BvbGUgb2YgdW5pdFxuICAgIHwgU2FpbnRQaWVycmVFdE1pcXVlbG9uIG9mIHVuaXRcbiAgICB8IE1heW90dGUgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9jb2xsZWN0aXZpdGUgKHg6IENvbGxlY3Rpdml0ZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIkNvbGxlY3Rpdml0w6lcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgR3VhZGVsb3VwZSB4IC0+IChcIkd1YWRlbG91cGVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgR3V5YW5lIHggLT4gKFwiR3V5YW5lXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IE1hcnRpbmlxdWUgeCAtPiAoXCJNYXJ0aW5pcXVlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IExhUmV1bmlvbiB4IC0+IChcIkxhUsOpdW5pb25cIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgU2FpbnRCYXJ0aGVsZW15IHggLT4gKFwiU2FpbnRCYXJ0aMOpbGVteVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBTYWludE1hcnRpbiB4IC0+IChcIlNhaW50TWFydGluXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IE1ldHJvcG9sZSB4IC0+IChcIk3DqXRyb3BvbGVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgU2FpbnRQaWVycmVFdE1pcXVlbG9uIHggLT4gKFwiU2FpbnRQaWVycmVFdE1pcXVlbG9uXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IE1heW90dGUgeCAtPiAoXCJNYXlvdHRlXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIEFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4ID0gc3RydWN0XG4gIHR5cGUgdCA9IHthZ2VfbWluaW11bV9hbGluZWFfMV9sNTIxXzM6IGR1cmF0aW9ufVxuZW5kXG5sZXQgZW1iZWRfYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOCAoeDogQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDgudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4XCJdLFxuICBbKFwiw6JnZV9taW5pbXVtX2FsaW7DqWFfMV9sNTIxXzNcIiwgZW1iZWRfZHVyYXRpb25cbiAgICB4LkFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4LmFnZV9taW5pbXVtX2FsaW5lYV8xX2w1MjFfMyldKVxuXG5cbm1vZHVsZSBWZXJpZmljYXRpb25BZ2VJbmZlcmlldXJPdUVnYWxBID0gc3RydWN0XG4gIHR5cGUgdCA9IHtlc3RfaW5mZXJpZXVyX291X2VnYWw6IGJvb2x9XG5lbmRcbmxldCBlbWJlZF92ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2EgKHg6IFZlcmlmaWNhdGlvbkFnZUluZmVyaWV1ck91RWdhbEEudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIlbDqXJpZmljYXRpb27DgmdlSW5mw6lyaWV1ck91w4lnYWzDgFwiXSxcbiAgWyhcImVzdF9pbmbDqXJpZXVyX291X8OpZ2FsXCIsIGVtYmVkX2Jvb2xcbiAgICB4LlZlcmlmaWNhdGlvbkFnZUluZmVyaWV1ck91RWdhbEEuZXN0X2luZmVyaWV1cl9vdV9lZ2FsKV0pXG5cblxubW9kdWxlIFZlcmlmaWNhdGlvbkFnZVN1cGVyaWV1ckEgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge2VzdF9zdXBlcmlldXI6IGJvb2x9XG5lbmRcbmxldCBlbWJlZF92ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hICh4OiBWZXJpZmljYXRpb25BZ2VTdXBlcmlldXJBLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJWw6lyaWZpY2F0aW9uw4JnZVN1cMOpcmlldXLDgFwiXSxcbiAgWyhcImVzdF9zdXDDqXJpZXVyXCIsIGVtYmVkX2Jvb2wgeC5WZXJpZmljYXRpb25BZ2VTdXBlcmlldXJBLmVzdF9zdXBlcmlldXIpXSlcblxuXG5tb2R1bGUgU21pYyA9IHN0cnVjdFxuICB0eXBlIHQgPSB7YnJ1dF9ob3JhaXJlOiBtb25leX1cbmVuZFxubGV0IGVtYmVkX3NtaWMgKHg6IFNtaWMudCkgOiBydW50aW1lX3ZhbHVlID0gU3RydWN0KFtcIlNtaWNcIl0sXG4gIFsoXCJicnV0X2hvcmFpcmVcIiwgZW1iZWRfbW9uZXkgeC5TbWljLmJydXRfaG9yYWlyZSldKVxuXG5cbm1vZHVsZSBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzID0gc3RydWN0XG4gIHR5cGUgdCA9IHttb250YW50OiBtb25leX1cbmVuZFxubGV0IGVtYmVkX2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgKHg6IEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIl0sXG4gIFsoXCJtb250YW50XCIsIGVtYmVkX21vbmV5IHguQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlcy5tb250YW50KV0pXG5cblxubW9kdWxlIEludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlcyA9IHN0cnVjdFxuICB0eXBlIHQgPSB7aV9tb250YW50X3ZlcnNlOiBtb25leX1cbmVuZFxubGV0IGVtYmVkX2ludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzICh4OiBJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXMudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiXSxcbiAgWyhcImlfbW9udGFudF92ZXJzw6lcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlcy5pX21vbnRhbnRfdmVyc2UpXSlcblxuXG5tb2R1bGUgRW5mYW50RW50cmVlID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBkX2lkZW50aWZpYW50OiBpbnRlZ2VyO1xuICAgIGRfcmVtdW5lcmF0aW9uX21lbnN1ZWxsZTogbW9uZXk7XG4gICAgZF9kYXRlX2RlX25haXNzYW5jZTogZGF0ZTtcbiAgICBkX3ByaXNlX2VuX2NoYXJnZTogUHJpc2VFbkNoYXJnZS50O1xuICAgIGRfYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlczogYm9vbDtcbiAgICBkX2JlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudDogYm9vbFxuICB9XG5lbmRcbmxldCBlbWJlZF9lbmZhbnRfZW50cmVlICh4OiBFbmZhbnRFbnRyZWUudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkVuZmFudEVudHLDqWVcIl0sXG4gIFsoXCJkX2lkZW50aWZpYW50XCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkVuZmFudEVudHJlZS5kX2lkZW50aWZpYW50KTtcbiAgICAoXCJkX3LDqW11bmVyYXRpb25fbWVuc3VlbGxlXCIsIGVtYmVkX21vbmV5XG4gICAgeC5FbmZhbnRFbnRyZWUuZF9yZW11bmVyYXRpb25fbWVuc3VlbGxlKTtcbiAgICAoXCJkX2RhdGVfZGVfbmFpc3NhbmNlXCIsIGVtYmVkX2RhdGVcbiAgICB4LkVuZmFudEVudHJlZS5kX2RhdGVfZGVfbmFpc3NhbmNlKTtcbiAgICAoXCJkX3ByaXNlX2VuX2NoYXJnZVwiLCBlbWJlZF9wcmlzZV9lbl9jaGFyZ2VcbiAgICB4LkVuZmFudEVudHJlZS5kX3ByaXNlX2VuX2NoYXJnZSk7XG4gICAgKFwiZF9hX2TDqWrDoF9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcIiwgZW1iZWRfYm9vbFxuICAgIHguRW5mYW50RW50cmVlLmRfYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyk7XG4gICAgKFwiZF9iw6luw6lmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudFwiLCBlbWJlZF9ib29sXG4gICAgeC5FbmZhbnRFbnRyZWUuZF9iZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnQpXSlcblxuXG5tb2R1bGUgRW5mYW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBpZGVudGlmaWFudDogaW50ZWdlcjtcbiAgICBvYmxpZ2F0aW9uX3Njb2xhaXJlOiBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUudDtcbiAgICByZW11bmVyYXRpb25fbWVuc3VlbGxlOiBtb25leTtcbiAgICBkYXRlX2RlX25haXNzYW5jZTogZGF0ZTtcbiAgICBwcmlzZV9lbl9jaGFyZ2U6IFByaXNlRW5DaGFyZ2UudDtcbiAgICBhX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzOiBib29sO1xuICAgIGJlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudDogYm9vbFxuICB9XG5lbmRcbmxldCBlbWJlZF9lbmZhbnQgKHg6IEVuZmFudC50KSA6IHJ1bnRpbWVfdmFsdWUgPSBTdHJ1Y3QoW1wiRW5mYW50XCJdLFxuICBbKFwiaWRlbnRpZmlhbnRcIiwgZW1iZWRfaW50ZWdlclxuICAgIHguRW5mYW50LmlkZW50aWZpYW50KTtcbiAgICAoXCJvYmxpZ2F0aW9uX3Njb2xhaXJlXCIsIGVtYmVkX3NpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlXG4gICAgeC5FbmZhbnQub2JsaWdhdGlvbl9zY29sYWlyZSk7XG4gICAgKFwicsOpbXVuZXJhdGlvbl9tZW5zdWVsbGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkVuZmFudC5yZW11bmVyYXRpb25fbWVuc3VlbGxlKTtcbiAgICAoXCJkYXRlX2RlX25haXNzYW5jZVwiLCBlbWJlZF9kYXRlXG4gICAgeC5FbmZhbnQuZGF0ZV9kZV9uYWlzc2FuY2UpO1xuICAgIChcInByaXNlX2VuX2NoYXJnZVwiLCBlbWJlZF9wcmlzZV9lbl9jaGFyZ2VcbiAgICB4LkVuZmFudC5wcmlzZV9lbl9jaGFyZ2UpO1xuICAgIChcImFfZMOpasOgX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1wiLCBlbWJlZF9ib29sXG4gICAgeC5FbmZhbnQuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyk7XG4gICAgKFwiYsOpbsOpZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnRcIiwgZW1iZWRfYm9vbFxuICAgIHguRW5mYW50LmJlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudCldKVxuXG5cbm1vZHVsZSBBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIHZlcnNlbWVudDogRW5mYW50LnQgLT4gVmVyc2VtZW50QWxsb2NhdGlvbnMudDtcbiAgICBtb250YW50X3ZlcnNlOiBtb25leVxuICB9XG5lbmRcbmxldCBlbWJlZF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzICh4OiBBbGxvY2F0aW9uc0ZhbWlsaWFsZXMudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiXSxcbiAgWyhcInZlcnNlbWVudFwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkFsbG9jYXRpb25zRmFtaWxpYWxlcy52ZXJzZW1lbnQpO1xuICAgIChcIm1vbnRhbnRfdmVyc8OpXCIsIGVtYmVkX21vbmV5IHguQWxsb2NhdGlvbnNGYW1pbGlhbGVzLm1vbnRhbnRfdmVyc2UpXSlcblxuXG5tb2R1bGUgRW5mYW50TGVQbHVzQWdlID0gc3RydWN0XG4gIHR5cGUgdCA9IHtsZV9wbHVzX2FnZTogRW5mYW50LnR9XG5lbmRcbmxldCBlbWJlZF9lbmZhbnRfbGVfcGx1c19hZ2UgKHg6IEVuZmFudExlUGx1c0FnZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiRW5mYW50TGVQbHVzw4Jnw6lcIl0sXG4gIFsoXCJsZV9wbHVzX8OiZ8OpXCIsIGVtYmVkX2VuZmFudCB4LkVuZmFudExlUGx1c0FnZS5sZV9wbHVzX2FnZSldKVxuXG5cbm1vZHVsZSBQcmVzdGF0aW9uc0ZhbWlsaWFsZXMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGRyb2l0X291dmVydDogRW5mYW50LnQgLT4gYm9vbDtcbiAgICBjb25kaXRpb25zX2hvcnNfYWdlOiBFbmZhbnQudCAtPiBib29sO1xuICAgIGFnZV9sNTEyXzNfMjogZHVyYXRpb247XG4gICAgcmVnaW1lX291dHJlX21lcl9sNzUxXzE6IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyAoeDogUHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIl0sXG4gIFsoXCJkcm9pdF9vdXZlcnRcIiwgdW5lbWJlZGRhYmxlXG4gICAgeC5QcmVzdGF0aW9uc0ZhbWlsaWFsZXMuZHJvaXRfb3V2ZXJ0KTtcbiAgICAoXCJjb25kaXRpb25zX2hvcnNfw6JnZVwiLCB1bmVtYmVkZGFibGVcbiAgICB4LlByZXN0YXRpb25zRmFtaWxpYWxlcy5jb25kaXRpb25zX2hvcnNfYWdlKTtcbiAgICAoXCLDomdlX2w1MTJfM18yXCIsIGVtYmVkX2R1cmF0aW9uXG4gICAgeC5QcmVzdGF0aW9uc0ZhbWlsaWFsZXMuYWdlX2w1MTJfM18yKTtcbiAgICAoXCJyw6lnaW1lX291dHJlX21lcl9sNzUxXzFcIiwgZW1iZWRfYm9vbFxuICAgIHguUHJlc3RhdGlvbnNGYW1pbGlhbGVzLnJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xKV0pXG5cblxubW9kdWxlIFByZXN0YXRpb25zRmFtaWxpYWxlc0luID0gc3RydWN0XG4gIHR5cGUgdCA9IHtkYXRlX2NvdXJhbnRlX2luOiBkYXRlOyByZXNpZGVuY2VfaW46IENvbGxlY3Rpdml0ZS50fVxuZW5kXG5sZXQgZW1iZWRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiAoeDogUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc19pblwiXSxcbiAgWyhcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwicsOpc2lkZW5jZV9pblwiLCBlbWJlZF9jb2xsZWN0aXZpdGVcbiAgICB4LlByZXN0YXRpb25zRmFtaWxpYWxlc0luLnJlc2lkZW5jZV9pbildKVxuXG5cbm1vZHVsZSBBbGxvY2F0aW9uRmFtaWxpYWxlc0F2cmlsMjAwOEluID0gc3RydWN0XG4gIHR5cGUgdCA9IHVuaXRcbmVuZFxubGV0IGVtYmVkX2FsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfaW4gKF86IEFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4SW4udCkgOiBydW50aW1lX3ZhbHVlID0gVW5pdFxuXG5cbm1vZHVsZSBFbmZhbnRMZVBsdXNBZ2VJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7ZW5mYW50c19pbjogRW5mYW50LnQgYXJyYXl9XG5lbmRcbmxldCBlbWJlZF9lbmZhbnRfbGVfcGx1c19hZ2VfaW4gKHg6IEVuZmFudExlUGx1c0FnZUluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJFbmZhbnRMZVBsdXPDgmfDqV9pblwiXSxcbiAgWyhcImVuZmFudHNfaW5cIiwgZW1iZWRfYXJyYXkgKGVtYmVkX2VuZmFudCkgeC5FbmZhbnRMZVBsdXNBZ2VJbi5lbmZhbnRzX2luKV0pXG5cblxubW9kdWxlIEFsbG9jYXRpb25zRmFtaWxpYWxlc0luID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBwZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF9pbjogYm9vbDtcbiAgICBwZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfcmVtcGxpdF90aXRyZV9JX2luOiBib29sO1xuICAgIHJlc3NvdXJjZXNfbWVuYWdlX2luOiBtb25leTtcbiAgICByZXNpZGVuY2VfaW46IENvbGxlY3Rpdml0ZS50O1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGU7XG4gICAgZW5mYW50c19hX2NoYXJnZV9pbjogRW5mYW50LnQgYXJyYXk7XG4gICAgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfaW46IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiAoeDogQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc19pblwiXSxcbiAgWyhcInBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50X2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50X2luKTtcbiAgICAoXCJwZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfcmVtcGxpdF90aXRyZV9JX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX0lfaW4pO1xuICAgIChcInJlc3NvdXJjZXNfbcOpbmFnZV9pblwiLCBlbWJlZF9tb25leVxuICAgIHguQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4ucmVzc291cmNlc19tZW5hZ2VfaW4pO1xuICAgIChcInLDqXNpZGVuY2VfaW5cIiwgZW1iZWRfY29sbGVjdGl2aXRlXG4gICAgeC5BbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5yZXNpZGVuY2VfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwiZW5mYW50c1/DoF9jaGFyZ2VfaW5cIiwgZW1iZWRfYXJyYXkgKGVtYmVkX2VuZmFudClcbiAgICB4LkFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmVuZmFudHNfYV9jaGFyZ2VfaW4pO1xuICAgIChcImF2YWl0X2VuZmFudF/DoF9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5BbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5hdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl9pbildKVxuXG5cbm1vZHVsZSBWZXJpZmljYXRpb25BZ2VJbmZlcmlldXJPdUVnYWxBSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGRhdGVfbmFpc3NhbmNlX2luOiBkYXRlO1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGU7XG4gICAgYW5uZWVzX2luOiBkdXJhdGlvblxuICB9XG5lbmRcbmxldCBlbWJlZF92ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2FfaW4gKHg6IFZlcmlmaWNhdGlvbkFnZUluZmVyaWV1ck91RWdhbEFJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiVsOpcmlmaWNhdGlvbsOCZ2VJbmbDqXJpZXVyT3XDiWdhbMOAX2luXCJdLFxuICBbKFwiZGF0ZV9uYWlzc2FuY2VfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguVmVyaWZpY2F0aW9uQWdlSW5mZXJpZXVyT3VFZ2FsQUluLmRhdGVfbmFpc3NhbmNlX2luKTtcbiAgICAoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LlZlcmlmaWNhdGlvbkFnZUluZmVyaWV1ck91RWdhbEFJbi5kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJhbm7DqWVzX2luXCIsIGVtYmVkX2R1cmF0aW9uXG4gICAgeC5WZXJpZmljYXRpb25BZ2VJbmZlcmlldXJPdUVnYWxBSW4uYW5uZWVzX2luKV0pXG5cblxubW9kdWxlIFZlcmlmaWNhdGlvbkFnZVN1cGVyaWV1ckFJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgZGF0ZV9uYWlzc2FuY2VfaW46IGRhdGU7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTtcbiAgICBhbm5lZXNfaW46IGR1cmF0aW9uXG4gIH1cbmVuZFxubGV0IGVtYmVkX3ZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfaW4gKHg6IFZlcmlmaWNhdGlvbkFnZVN1cGVyaWV1ckFJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiVsOpcmlmaWNhdGlvbsOCZ2VTdXDDqXJpZXVyw4BfaW5cIl0sXG4gIFsoXCJkYXRlX25haXNzYW5jZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5WZXJpZmljYXRpb25BZ2VTdXBlcmlldXJBSW4uZGF0ZV9uYWlzc2FuY2VfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguVmVyaWZpY2F0aW9uQWdlU3VwZXJpZXVyQUluLmRhdGVfY291cmFudGVfaW4pO1xuICAgIChcImFubsOpZXNfaW5cIiwgZW1iZWRfZHVyYXRpb24geC5WZXJpZmljYXRpb25BZ2VTdXBlcmlldXJBSW4uYW5uZWVzX2luKV0pXG5cblxubW9kdWxlIFNtaWNJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7ZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTsgcmVzaWRlbmNlX2luOiBDb2xsZWN0aXZpdGUudH1cbmVuZFxubGV0IGVtYmVkX3NtaWNfaW4gKHg6IFNtaWNJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPSBTdHJ1Y3QoW1wiU21pY19pblwiXSxcbiAgWyhcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguU21pY0luLmRhdGVfY291cmFudGVfaW4pO1xuICAgIChcInLDqXNpZGVuY2VfaW5cIiwgZW1iZWRfY29sbGVjdGl2aXRlIHguU21pY0luLnJlc2lkZW5jZV9pbildKVxuXG5cbm1vZHVsZSBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge2RhdGVfY291cmFudGVfaW46IGRhdGV9XG5lbmRcbmxldCBlbWJlZF9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luICh4OiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNfaW5cIl0sXG4gIFsoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luKV0pXG5cblxubW9kdWxlIEludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBpX2RhdGVfY291cmFudGVfaW46IGRhdGU7XG4gICAgaV9lbmZhbnRzX2luOiBFbmZhbnRFbnRyZWUudCBhcnJheTtcbiAgICBpX3Jlc3NvdXJjZXNfbWVuYWdlX2luOiBtb25leTtcbiAgICBpX3Jlc2lkZW5jZV9pbjogQ29sbGVjdGl2aXRlLnQ7XG4gICAgaV9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF9pbjogYm9vbDtcbiAgICBpX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX0lfaW46IGJvb2w7XG4gICAgaV9hdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl9pbjogYm9vbFxuICB9XG5lbmRcbmxldCBlbWJlZF9pbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiAoeDogSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc19pblwiXSxcbiAgWyhcImlfZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5JbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5pX2RhdGVfY291cmFudGVfaW4pO1xuICAgIChcImlfZW5mYW50c19pblwiLCBlbWJlZF9hcnJheSAoZW1iZWRfZW5mYW50X2VudHJlZSlcbiAgICB4LkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmlfZW5mYW50c19pbik7XG4gICAgKFwiaV9yZXNzb3VyY2VzX23DqW5hZ2VfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmlfcmVzc291cmNlc19tZW5hZ2VfaW4pO1xuICAgIChcImlfcsOpc2lkZW5jZV9pblwiLCBlbWJlZF9jb2xsZWN0aXZpdGVcbiAgICB4LkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmlfcmVzaWRlbmNlX2luKTtcbiAgICAoXCJpX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50X2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX2VzdF9wYXJlbnRfaW4pO1xuICAgIChcImlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfSV9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5JbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5pX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX0lfaW4pO1xuICAgIChcImlfYXZhaXRfZW5mYW50X8OgX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmlfYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfaW4pXSlcblxuXG5cblxubGV0IGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDggKGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfaW46IEFsbG9jYXRpb25GYW1pbGlhbGVzQXZyaWwyMDA4SW4udCkgOiBBbGxvY2F0aW9uRmFtaWxpYWxlc0F2cmlsMjAwOC50ID1cbiAgbGV0IGFnZV9taW5pbXVtX2FsaW5lYV8xX2w1MjFfM186IGR1cmF0aW9uID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDhcIjsgXCLDomdlX21pbmltdW1fYWxpbsOpYV8xX2w1MjFfM1wiXVxuICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9dHJ1ZX0gKGVtYmVkX2R1cmF0aW9uKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX1IuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Nzg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Nzg7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIGVuIENvbnNlaWwgZCdFdGF0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZHVyYXRpb25fb2ZfbnVtYmVycyAoMTYpICgwKSAoMCkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjY7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICB7QWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDguYWdlX21pbmltdW1fYWxpbmVhXzFfbDUyMV8zID1cbiAgICAgYWdlX21pbmltdW1fYWxpbmVhXzFfbDUyMV8zX31cblxubGV0IGVuZmFudF9sZV9wbHVzX2FnZSAoZW5mYW50X2xlX3BsdXNfYWdlX2luOiBFbmZhbnRMZVBsdXNBZ2VJbi50KSA6IEVuZmFudExlUGx1c0FnZS50ID1cbiAgbGV0IGVuZmFudHNfOiBFbmZhbnQudCBhcnJheSA9IGVuZmFudF9sZV9wbHVzX2FnZV9pbi5FbmZhbnRMZVBsdXNBZ2VJbi5lbmZhbnRzX2luIGluXG4gIGxldCBsZV9wbHVzX2FnZV86IEVuZmFudC50ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiRW5mYW50TGVQbHVzw4Jnw6lcIjsgXCJsZV9wbHVzX8OiZ8OpXCJdIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9dHJ1ZX1cbiAgICAoZW1iZWRfZW5mYW50KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMjsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlLDqGdsZXMgZGl2ZXJzZXNcIjsgXCLDiXBpbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fcmVkdWNlXG4gICAgICAgICAgICAgIChmdW4gKHBvdGVudGllbF9wbHVzX2FnZV8xXzogRW5mYW50LnQpXG4gICAgICAgICAgICAgICAgIChwb3RlbnRpZWxfcGx1c19hZ2VfMl86IEVuZmFudC50KSAtPlxuICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgKGxldCBwb3RlbnRpZWxfcGx1c19hZ2VfIDogRW5mYW50LnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIHBvdGVudGllbF9wbHVzX2FnZV8xX1xuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgKHBvdGVudGllbF9wbHVzX2FnZV8uRW5mYW50LmRhdGVfZGVfbmFpc3NhbmNlKSlcbiAgICAgICAgICAgICAgICAgICAgICAobGV0IHBvdGVudGllbF9wbHVzX2FnZV8gOiBFbmZhbnQudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgcG90ZW50aWVsX3BsdXNfYWdlXzJfXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAocG90ZW50aWVsX3BsdXNfYWdlXy5FbmZhbnQuZGF0ZV9kZV9uYWlzc2FuY2UpKSkgdGhlblxuICAgICAgICAgICAgICAgICAgIHBvdGVudGllbF9wbHVzX2FnZV8xXyBlbHNlIHBvdGVudGllbF9wbHVzX2FnZV8yXylcbiAgICAgICAgICAgICAgKHtFbmZhbnQuaWRlbnRpZmlhbnQgPSAoaW50ZWdlcl9vZl9zdHJpbmcgXCItMVwiKTtcbiAgICAgICAgICAgICAgICAgIEVuZmFudC5vYmxpZ2F0aW9uX3Njb2xhaXJlID1cbiAgICAgICAgICAgICAgICAgICAgKFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50ICgpKTtcbiAgICAgICAgICAgICAgICAgIEVuZmFudC5yZW11bmVyYXRpb25fbWVuc3VlbGxlID0gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIik7XG4gICAgICAgICAgICAgICAgICBFbmZhbnQuZGF0ZV9kZV9uYWlzc2FuY2UgPVxuICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyOTk5KSAoMTIpICgzMSkpO1xuICAgICAgICAgICAgICAgICAgRW5mYW50LnByaXNlX2VuX2NoYXJnZSA9XG4gICAgICAgICAgICAgICAgICAgIChQcmlzZUVuQ2hhcmdlLkVmZmVjdGl2ZUV0UGVybWFuZW50ZSAoKSk7XG4gICAgICAgICAgICAgICAgICBFbmZhbnQuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyA9XG4gICAgICAgICAgICAgICAgICAgIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgRW5mYW50LmJlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudCA9XG4gICAgICAgICAgICAgICAgICAgIGZhbHNlfSkgZW5mYW50c18pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzA7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NzA7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICB7RW5mYW50TGVQbHVzQWdlLmxlX3BsdXNfYWdlID0gbGVfcGx1c19hZ2VffVxuXG5sZXQgdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hICh2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2FfaW46IFZlcmlmaWNhdGlvbkFnZUluZmVyaWV1ck91RWdhbEFJbi50KSA6IFZlcmlmaWNhdGlvbkFnZUluZmVyaWV1ck91RWdhbEEudCA9XG4gIGxldCBkYXRlX25haXNzYW5jZV86IGRhdGUgPSB2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2FfaW4uVmVyaWZpY2F0aW9uQWdlSW5mZXJpZXVyT3VFZ2FsQUluLmRhdGVfbmFpc3NhbmNlX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYV9pbi5WZXJpZmljYXRpb25BZ2VJbmZlcmlldXJPdUVnYWxBSW4uZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgYW5uZWVzXzogZHVyYXRpb24gPSB2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2FfaW4uVmVyaWZpY2F0aW9uQWdlSW5mZXJpZXVyT3VFZ2FsQUluLmFubmVlc19pbiBpblxuICBsZXQgZXN0X2luZmVyaWV1cl9vdV9lZ2FsXzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIlbDqXJpZmljYXRpb27DgmdlSW5mw6lyaWV1ck91w4lnYWzDgFwiOyBcImVzdF9pbmbDqXJpZXVyX291X8OpZ2FsXCJdXG4gICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy8uLi9wcm9sb2d1ZV9mcmFuY2UvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjU7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX2x0ZV9kYXRfZGF0IChvX2FkZF9kYXRfZHVyIFJvdW5kVXAgZGF0ZV9uYWlzc2FuY2VfIGFubmVlc18pXG4gICAgICAgICAgICAgIGRhdGVfY291cmFudGVfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvLi4vcHJvbG9ndWVfZnJhbmNlL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTIyOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTIyOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjsgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfSkpKSkgaW5cbiAge1ZlcmlmaWNhdGlvbkFnZUluZmVyaWV1ck91RWdhbEEuZXN0X2luZmVyaWV1cl9vdV9lZ2FsID1cbiAgICAgZXN0X2luZmVyaWV1cl9vdV9lZ2FsX31cblxubGV0IHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2EgKHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfaW46IFZlcmlmaWNhdGlvbkFnZVN1cGVyaWV1ckFJbi50KSA6IFZlcmlmaWNhdGlvbkFnZVN1cGVyaWV1ckEudCA9XG4gIGxldCBkYXRlX25haXNzYW5jZV86IGRhdGUgPSB2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX2luLlZlcmlmaWNhdGlvbkFnZVN1cGVyaWV1ckFJbi5kYXRlX25haXNzYW5jZV9pbiBpblxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSB2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX2luLlZlcmlmaWNhdGlvbkFnZVN1cGVyaWV1ckFJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBhbm5lZXNfOiBkdXJhdGlvbiA9IHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfaW4uVmVyaWZpY2F0aW9uQWdlU3VwZXJpZXVyQUluLmFubmVlc19pbiBpblxuICBsZXQgZXN0X3N1cGVyaWV1cl86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJWw6lyaWZpY2F0aW9uw4JnZVN1cMOpcmlldXLDgFwiOyBcImVzdF9zdXDDqXJpZXVyXCJdIHtpb19pbnB1dD1Ob0lucHV0O1xuICAgIGlvX291dHB1dD10cnVlfSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy8uLi9wcm9sb2d1ZV9mcmFuY2UvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzY7IGVuZF9jb2x1bW49Mjc7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX2d0X2RhdF9kYXQgKG9fYWRkX2RhdF9kdXIgUm91bmRVcCBkYXRlX25haXNzYW5jZV8gYW5uZWVzXylcbiAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy8uLi9wcm9sb2d1ZV9mcmFuY2UvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzM7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MzM7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiOyBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19KSkpKSBpblxuICB7VmVyaWZpY2F0aW9uQWdlU3VwZXJpZXVyQS5lc3Rfc3VwZXJpZXVyID0gZXN0X3N1cGVyaWV1cl99XG5cbmxldCBzbWljIChzbWljX2luOiBTbWljSW4udCkgOiBTbWljLnQgPVxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBzbWljX2luLlNtaWNJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCByZXNpZGVuY2VfOiBDb2xsZWN0aXZpdGUudCA9IHNtaWNfaW4uU21pY0luLnJlc2lkZW5jZV9pbiBpblxuICBsZXQgXzogdW5pdCA9IGlmIChcbiAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2OyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTY7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfSkpKVxuICAgICAgICAgICAgICAgICAgdGhlbiAoKSBlbHNlXG4gICAgICAgICAgICAgICAgICByYWlzZSAoQXNzZXJ0aW9uRmFpbGVkIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjsgc3RhcnRfY29sdW1uPTEzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX0pIGluXG4gIGxldCBicnV0X2hvcmFpcmVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIlNtaWNcIjsgXCJicnV0X2hvcmFpcmVcIl0ge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfSAoZW1iZWRfbW9uZXkpXG4gICAgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDM7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAgMjAxOC0xMTczIGR1IDE5IGTDqWNlbWJyZSAyMDE4IHBvcnRhbnQgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLkd1eWFuZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludE1hcnRpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDAzXCIpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01Mjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NDsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDE4LTExNzMgZHUgMTkgZMOpY2VtYnJlIDIwMTggcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzU3XCIpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04MjsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDE5LTEzODcgZHUgMTggZMOpY2VtYnJlIDIwMTkgcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWV0cm9wb2xlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuR3V5YW5lICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTGFSZXVuaW9uICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50TWFydGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSkpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwMTVcIikpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTkxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTkzOyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwIDIwMTktMTM4NyBkdSAxOCBkw6ljZW1icmUgMjAxOSBwb3J0YW50IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI3NjZcIikpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExMjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjE7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAgMjAyMC0xNTk4IGR1IDE2IGTDqWNlbWJyZSAyMDIwIHBvcnRhbnQgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLkd1eWFuZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludE1hcnRpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDI1XCIpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTMyOyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwIDIwMjAtMTU5OCBkdSAxNiBkw6ljZW1icmUgMjAyMCBwb3J0YW50IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI3NzRcIikpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjA7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAgMjAyMS0xNzQxIGR1IDIyIGTDqWNlbWJyZSAyMDIxIHBvcnRhbnQgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDQpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWV0cm9wb2xlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuR3V5YW5lICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTGFSZXVuaW9uICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50TWFydGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSkpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwNTdcIikpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE3MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNzI7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAgMjAyMS0xNzQxIGR1IDIyIGTDqWNlbWJyZSAyMDIxIHBvcnRhbnQgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDQpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzk4XCIpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xOTE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjAwOyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDE5IGF2cmlsIDIwMjIgcmVsYXRpZiBhdSByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDUpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5HdXlhbmUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5MYVJldW5pb24gKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTA4NVwiKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjA5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIxMTsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAxOSBhdnJpbCAyMDIyIHJlbGF0aWYgYXUgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg1KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODE5XCIpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMzA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjM5OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI5IGp1aWxsZXQgMjAyMiByZWxhdGlmIGF1IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoOCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5HdXlhbmUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5MYVJldW5pb24gKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTEwN1wiKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjQ4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI1MDsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyOSBqdWlsbGV0IDIwMjIgcmVsYXRpZiBhdSByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDgpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODM1XCIpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNzA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjc5OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwIDIwMjItMTYwOCBkdSAyMiBkw6ljZW1icmUgMjAyMiBwb3J0YW50IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIzKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMykgKDUpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5HdXlhbmUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5MYVJldW5pb24gKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTEyN1wiKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjg4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI5MDsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDIyLTE2MDggZHUgMjIgZMOpY2VtYnJlIDIwMjIgcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMykgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjMpICg1KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODUxXCIpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzE4OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI2IGF2cmlsIDIwMjMgcmVsYXRpZiBhdSByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMykgKDUpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWV0cm9wb2xlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuR3V5YW5lICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTGFSZXVuaW9uICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50TWFydGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTE1MlwiKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzI3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMyOTsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNiBhdnJpbCAyMDIzIHJlbGF0aWYgYXUgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjMpICg1KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI4NzBcIikpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiOyBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19KSkpKSBpblxuICB7U21pYy5icnV0X2hvcmFpcmUgPSBicnV0X2hvcmFpcmVffVxuXG5sZXQgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyAoYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbjogQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnQpIDogQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlcy50ID1cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5CYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgXzogdW5pdCA9IGlmIChcbiAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoNCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwOyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19KSkpXG4gICAgICAgICAgICAgICAgICB0aGVuICgpIGVsc2VcbiAgICAgICAgICAgICAgICAgIHJhaXNlIChBc3NlcnRpb25GYWlsZWQge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwOyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19KSBpblxuICBsZXQgbW9udGFudF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcIm1vbnRhbnRcIl0ge2lvX2lucHV0PU5vSW5wdXQ7XG4gICAgaW9fb3V0cHV0PXRydWV9IChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLy4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzM7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW5zdHJ1Y3Rpb24gbWluaXN0w6lyaWVsbGUgTsKwRFNTL1NEMkIvMjAxOS82NSBkdSAyNSBtYXJzIDIwMTkgcmVsYXRpdmUgw6AgbGEgcmV2YWxvcmlzYXRpb24gYXUgMWVyIGF2cmlsIDIwMTkgZGVzIHByZXN0YXRpb25zIGZhbWlsaWFsZXMgc2VydmllcyBlbiBtw6l0cm9wb2xlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoNCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDQpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDEzMTZcIikpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTUyOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTUzOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkluc3RydWN0aW9uIGludGVybWluaXN0w6lyaWVsbGUgbm8gRFNTL1NEMkIvMjAyMC8zMyBkdSAxOCBmw6l2cmllciAyMDIwIHJlbGF0aXZlIMOgIGxhIHJldmFsb3Jpc2F0aW9uIGF1IDFlciBhdnJpbCAyMDIwIGRlcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIHNlcnZpZXMgZW4gbcOpdHJvcG9sZSwgZW4gR3VhZGVsb3VwZSwgZW4gR3V5YW5lLCBlbiBNYXJ0aW5pcXVlLCDDoCBMYSBSw6l1bmlvbiwgw6AgU2FpbnQtQmFydGjDqWxlbXksIMOgIFNhaW50LU1hcnRpbiBldCBkYW5zIGxlIGTDqXBhcnRlbWVudCBkZSBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoNCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDQpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDE0NDBcIikpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY5OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkluc3RydWN0aW9uIGludGVybWluaXN0w6lyaWVsbGUgbsKwRFNTLzJCLzIwMjEvNjUgZHUgMTkgbWFycyAyMDIxIHJlbGF0aXZlIMOgIGxhIHJldmFsb3Jpc2F0aW9uIGF1IDFlciBhdnJpbCAyMDIxIGRlcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIHNlcnZpZXMgZW4gbcOpdHJvcG9sZSwgZW4gR3VhZGVsb3VwZSwgZW4gR3V5YW5lLCBlbiBNYXJ0aW5pcXVlLCDDoCBsYSBSw6l1bmlvbiwgw6AgU2FpbnQtQmFydGjDqWxlbXksIMOgIFNhaW50LU1hcnRpbiBldCBkYW5zIGxlIGTDqXBhcnRlbWVudCBkZSBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoNCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDQpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDE0ODFcIikpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg3OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkluc3RydWN0aW9uIGludGVybWluaXN0w6lyaWVsbGUgbsKwRFNTLzJCLzIwMjIvODIgZHUgMjggbWFycyAyMDIyIHJlbGF0aXZlIMOgIGxhIHJldmFsb3Jpc2F0aW9uIGF1IDFlciBhdnJpbCAyMDIyIGRlcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIHNlcnZpZXMgZW4gbcOpdHJvcG9sZSwgZW4gR3VhZGVsb3VwZSwgZW4gR3V5YW5lLCBlbiBNYXJ0aW5pcXVlLCDDoCBsYSBSw6l1bmlvbiwgw6AgU2FpbnQtQmFydGjDqWxlbXksIMOgIFNhaW50LU1hcnRpbiBldCBkYW5zIGxlIGTDqXBhcnRlbWVudCBkZSBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMykgKDQpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDIyMjhcIikpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDY7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW5zdHJ1Y3Rpb24gaW50ZXJtaW5pc3TDqXJpZWxsZSBOwrAgRFNTLzJCLzIwMjMvNDEgZHUgMjQgbWFycyAyMDIzIHJlbGF0aXZlIMOgIGxhIHJldmFsb3Jpc2F0aW9uIGF1IDFlciBhdnJpbCAyMDIzIGRlcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIHNlcnZpZXMgZW4gbcOpdHJvcG9sZSwgZW4gR3VhZGVsb3VwZSwgZW4gR3V5YW5lLCBlbiBNYXJ0aW5pcXVlLCDDoCBsYSBSw6l1bmlvbiwgw6AgU2FpbnQtQmFydGjDqWxlbXksIMOgIFNhaW50LU1hcnRpbiBldCBkYW5zIGxlIGTDqXBhcnRlbWVudCBkZSBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIzKSAoNCkgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ0NTkzXCIpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvLi4vYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9ibWFmLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjsgZW5kX2NvbHVtbj0xOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19KSkpKSBpblxuICB7QmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlcy5tb250YW50ID0gbW9udGFudF99XG5cbmxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzIChwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luOiBQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi50KSA6IFByZXN0YXRpb25zRmFtaWxpYWxlcy50ID1cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbi5QcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCByZXNpZGVuY2VfOiBDb2xsZWN0aXZpdGUudCA9IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4uUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4ucmVzaWRlbmNlX2luIGluXG4gIGxldCBhZ2VfbDUxMl8zXzJfOiBkdXJhdGlvbiA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcIsOiZ2VfbDUxMl8zXzJcIl0ge2lvX2lucHV0PU5vSW5wdXQ7XG4gICAgaW9fb3V0cHV0PXRydWV9IChlbWJlZF9kdXJhdGlvbikgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9SLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTIxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTIxOyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSNTEyLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogQ2hhbXAgZCdhcHBsaWNhdGlvbi5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAxIDogQ2hhbXAgZCdhcHBsaWNhdGlvbiAtIEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBlbiBDb25zZWlsIGQnRXRhdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGR1cmF0aW9uX29mX251bWJlcnMgKDIwKSAoMCkgKDApKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTUxOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTUxOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IHNtaWNfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcInNtaWMuZGF0ZV9jb3VyYW50ZVwiXSB7aW9faW5wdXQ9T25seUlucHV0O1xuICAgICAgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTU5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTU5OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NTk7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkgaW5cbiAgbGV0IHNtaWNfZG90X3Jlc2lkZW5jZV86IENvbGxlY3Rpdml0ZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcInNtaWMucsOpc2lkZW5jZVwiXSB7aW9faW5wdXQ9T25seUlucHV0O1xuICAgICAgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfY29sbGVjdGl2aXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NTg7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmVzaWRlbmNlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTU4OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBTbWljLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwic21pY1wiOyBcIlNtaWNcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcInNtaWNcIjsgXCJTbWljXCJdIHNtaWMpXG4gICAgKHtTbWljSW4uZGF0ZV9jb3VyYW50ZV9pbiA9IHNtaWNfZG90X2RhdGVfY291cmFudGVfO1xuICAgICAgICBTbWljSW4ucmVzaWRlbmNlX2luID0gc21pY19kb3RfcmVzaWRlbmNlX30pKSkgaW5cbiAgbGV0IHNtaWNfZG90X2JydXRfaG9yYWlyZV86IG1vbmV5ID0gcmVzdWx0Xy5TbWljLmJydXRfaG9yYWlyZSBpblxuICBsZXQgcmVnaW1lX291dHJlX21lcl9sNzUxXzFfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwicsOpZ2ltZV9vdXRyZV9tZXJfbDc1MV8xXCJdIHtpb19pbnB1dD1Ob0lucHV0O1xuICAgIGlvX291dHB1dD10cnVlfSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzgyOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zODc7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDc1MS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBHw6luw6lyYWxpdMOpc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgNSA6IERpc3Bvc2l0aW9ucyBwYXJ0aWN1bGnDqHJlcyDDoCBsYSBHdWFkZWxvdXBlLCDDoCBsYSBHdXlhbmUsIMOgIGxhIE1hcnRpbmlxdWUsIMOgIExhIFLDqXVuaW9uLCDDoCBTYWludC1CYXJ0aMOpbGVteSBldCDDoCBTYWludC1NYXJ0aW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDcgOiBSw6lnaW1lcyBkaXZlcnMgLSBEaXNwb3NpdGlvbnMgZGl2ZXJzZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19vciAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX29yIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5HdXlhbmUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5MYVJldW5pb24gKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15ICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50TWFydGluICgpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTUyOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTUyOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTUyOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTUyOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IHBsYWZvbmRfbDUxMl8zXzJfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcInBsYWZvbmRfbDUxMl8zXzJcIl0ge2lvX2lucHV0PU5vSW5wdXQ7XG4gICAgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfUi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIxNTsgc3RhcnRfY29sdW1uPTE4O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIxNTsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSNzU1LTAtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDUgOiBEw6lwYXJ0ZW1lbnRzIGQnb3V0cmUtbWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA3IDogUsOpZ2ltZXMgZGl2ZXJzIC0gRGlzcG9zaXRpb25zIGRpdmVyc2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBlbiBDb25zZWlsIGQnRXRhdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgIHJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xXykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IHNtaWNfZG90X2JydXRfaG9yYWlyZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjU1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjE2OS5cIikpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfUi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMTsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjUxMi0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IENoYW1wIGQnYXBwbGljYXRpb24uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMSA6IENoYW1wIGQnYXBwbGljYXRpb24gLSBHw6luw6lyYWxpdMOpc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgZW4gQ29uc2VpbCBkJ0V0YXRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IHNtaWNfZG90X2JydXRfaG9yYWlyZV9cbiAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC41NVwiKSkgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTY5LlwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01MDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01MDsgZW5kX2NvbHVtbj0yNztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBjb25kaXRpb25zX2hvcnNfYWdlXzogRW5mYW50LnQgLT4gYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcImNvbmRpdGlvbnNfaG9yc1/DomdlXCJdIHtpb19pbnB1dD1Ob0lucHV0O1xuICAgIGlvX291dHB1dD10cnVlfSAodW5lbWJlZGRhYmxlKVxuICAgIChmdW4gKGVuZmFudF86IEVuZmFudC50KSAtPiBcbiAgICAgICB0cnlcbiAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTczOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03NjsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTEyLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAxIDogQ2hhbXAgZCdhcHBsaWNhdGlvbiAtIEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKGVuZmFudF8uRW5mYW50Lm9ibGlnYXRpb25fc2NvbGFpcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLlBlbmRhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKGVuZmFudF8uRW5mYW50Lm9ibGlnYXRpb25fc2NvbGFpcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLlBlbmRhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkFwcmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChlbmZhbnRfLkVuZmFudC5vYmxpZ2F0aW9uX3Njb2xhaXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXZhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXByZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50LnJlbXVuZXJhdGlvbl9tZW5zdWVsbGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfbDUxMl8zXzJfKSkpKSAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00OTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT00OTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgICAgd2l0aFxuICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT00OTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT00OTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByZXN0YXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBkcm9pdF9vdXZlcnRfOiBFbmZhbnQudCAtPiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwiZHJvaXRfb3V2ZXJ0XCJdIHtpb19pbnB1dD1Ob0lucHV0O1xuICAgIGlvX291dHB1dD10cnVlfSAodW5lbWJlZGRhYmxlKVxuICAgIChmdW4gKGVuZmFudF86IEVuZmFudC50KSAtPiBcbiAgICAgICB0cnlcbiAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9hdXRyZXNfY29kZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI0OyBlbmRfY29sdW1uPTYzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMS0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAxIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IFLDqGdsZXMgZGUgbm9uLWN1bXVsXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IFByaW5jaXBlcyBnw6luw6lyYXV4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnQuYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50KSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKXxdKVxuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xOyBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02NzsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTEyLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAxIDogQ2hhbXAgZCdhcHBsaWNhdGlvbiAtIEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50Lm9ibGlnYXRpb25fc2NvbGFpcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLlBlbmRhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudC5yZW11bmVyYXRpb25fbWVuc3VlbGxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX2w1MTJfM18yXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfZGF0X2R1ciBBYm9ydE9uUm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50LmRhdGVfZGVfbmFpc3NhbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2VfbDUxMl8zXzJfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlXykpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU1OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTEyLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDEgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uIC0gR8OpbsOpcmFsaXTDqXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudC5vYmxpZ2F0aW9uX3Njb2xhaXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnQub2JsaWdhdGlvbl9zY29sYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXZhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLlBlbmRhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXByZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpKXxdKVxuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTQ4OyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICAgICB3aXRoXG4gICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTQ4OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTQ4OyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAge1ByZXN0YXRpb25zRmFtaWxpYWxlcy5kcm9pdF9vdXZlcnQgPSBkcm9pdF9vdXZlcnRfO1xuICAgICBQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuY29uZGl0aW9uc19ob3JzX2FnZSA9IGNvbmRpdGlvbnNfaG9yc19hZ2VfO1xuICAgICBQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuYWdlX2w1MTJfM18yID0gYWdlX2w1MTJfM18yXztcbiAgICAgUHJlc3RhdGlvbnNGYW1pbGlhbGVzLnJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xID0gcmVnaW1lX291dHJlX21lcl9sNzUxXzFffVxuXG5sZXQgYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyAoYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbjogQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udCkgOiBBbGxvY2F0aW9uc0ZhbWlsaWFsZXMudCA9XG4gIGxldCBwZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF86IGJvb2wgPSBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50X2luIGluXG4gIGxldCBwZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfcmVtcGxpdF90aXRyZV9faV86IGJvb2wgPSBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX0lfaW4gaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlXzogbW9uZXkgPSBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnJlc3NvdXJjZXNfbWVuYWdlX2luIGluXG4gIGxldCByZXNpZGVuY2VfOiBDb2xsZWN0aXZpdGUudCA9IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4ucmVzaWRlbmNlX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgZW5mYW50c19hX2NoYXJnZV86IEVuZmFudC50IGFycmF5ID0gYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5BbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5lbmZhbnRzX2FfY2hhcmdlX2luIGluXG4gIGxldCBhdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl86IGJvb2wgPSBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyX2luIGluXG4gIGxldCBwcmlzZV9lbl9jb21wdGVfOiBFbmZhbnQudCAtPiBQcmlzZUVuQ29tcHRlLnQgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJwcmlzZV9lbl9jb21wdGVcIl0ge2lvX2lucHV0PU5vSW5wdXQ7XG4gICAgaW9fb3V0cHV0PWZhbHNlfSAodW5lbWJlZGRhYmxlKVxuICAgIChmdW4gKGVuZmFudF86IEVuZmFudC50KSAtPiBcbiAgICAgICB0cnlcbiAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSlcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFxuICAgICAgICAgICAgICAgICAgICAgICAgIFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIzMzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMzM7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKGVuZmFudF8uRW5mYW50LnByaXNlX2VuX2NoYXJnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9ucyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkVmZmVjdGl2ZUV0UGVybWFuZW50ZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IFByaXNlRW5Db21wdGUuUGFydGFnZWUgKCkpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChcbiAgICAgICAgICAgICAgICAgICAgICAgICBbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNzE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjcyOyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChlbmZhbnRfLkVuZmFudC5wcmlzZV9lbl9jaGFyZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuRWZmZWN0aXZlRXRQZXJtYW5lbnRlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBQcmlzZUVuQ29tcHRlLlplcm8gKCkpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTsgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yODE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI4MjsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50LnByaXNlX2VuX2NoYXJnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVBbGxvY2F0YWlyZVVuaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5FZmZlY3RpdmVFdFBlcm1hbmVudGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlzZUVuQ29tcHRlLkNvbXBsZXRlICgpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjIzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjIzOyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKGVuZmFudF8uRW5mYW50LnByaXNlX2VuX2NoYXJnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkVmZmVjdGl2ZUV0UGVybWFuZW50ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBQcmlzZUVuQ29tcHRlLkNvbXBsZXRlICgpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjAzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIwMzsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAoZW5mYW50Xy5FbmZhbnQucHJpc2VfZW5fY2hhcmdlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkVmZmVjdGl2ZUV0UGVybWFuZW50ZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gUHJpc2VFbkNvbXB0ZS5Db21wbGV0ZSAoKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSkpXG4gICAgICAgd2l0aFxuICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04NzsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCB2ZXJzZW1lbnRfOiBFbmZhbnQudCAtPiBWZXJzZW1lbnRBbGxvY2F0aW9ucy50ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwidmVyc2VtZW50XCJdIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9dHJ1ZX1cbiAgICAodW5lbWJlZGRhYmxlKVxuICAgIChmdW4gKGVuZmFudF86IEVuZmFudC50KSAtPiBcbiAgICAgICB0cnlcbiAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSlcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFxuICAgICAgICAgICAgICAgICAgICAgICAgIFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI3Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNzc7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKGVuZmFudF8uRW5mYW50LnByaXNlX2VuX2NoYXJnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9ucyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5FZmZlY3RpdmVFdFBlcm1hbmVudGUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2VtZW50QWxsb2NhdGlvbnMuQWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTsgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yODc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI4ODsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnQucHJpc2VfZW5fY2hhcmdlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkVmZmVjdGl2ZUV0UGVybWFuZW50ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2VtZW50QWxsb2NhdGlvbnMuTm9ybWFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIzNzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjM3OyBlbmRfY29sdW1uPTcwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnQucHJpc2VfZW5fY2hhcmdlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuRWZmZWN0aXZlRXRQZXJtYW5lbnRlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBTGFGYW1pbGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNlbWVudEFsbG9jYXRpb25zLk5vcm1hbCAoKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIyNzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIyNzsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChlbmZhbnRfLkVuZmFudC5wcmlzZV9lbl9jaGFyZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5FZmZlY3RpdmVFdFBlcm1hbmVudGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ2hhcmdlLlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNlbWVudEFsbG9jYXRpb25zLk5vcm1hbCAoKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIwNzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMDc7IGVuZF9jb2x1bW49NjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKGVuZmFudF8uRW5mYW50LnByaXNlX2VuX2NoYXJnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9ucyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5FZmZlY3RpdmVFdFBlcm1hbmVudGUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNoYXJnZS5TZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IFZlcnNlbWVudEFsbG9jYXRpb25zLk5vcm1hbCAoKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSkpXG4gICAgICAgd2l0aFxuICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT04ODsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT04ODsgZW5kX2NvbHVtbj0yMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBub21icmVfZW5mYW50c19hbGluZWFfMl9sNTIxXzNfOiBpbnRlZ2VyID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibm9tYnJlX2VuZmFudHNfYWxpbsOpYV8yX2w1MjFfM1wiXVxuICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9pbnRlZ2VyKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX1IuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NjQ7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIGVuIENvbnNlaWwgZCdFdGF0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTQ0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTE0NDsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBub21icmVfZW5mYW50c19hbGluZWFfMl9sNTIxXzFfOiBpbnRlZ2VyID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibm9tYnJlX2VuZmFudHNfYWxpbsOpYV8yX2w1MjFfMVwiXVxuICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9pbnRlZ2VyKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI5NDsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTE0NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xNDU7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgcmVzdWx0XzogQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDgudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJ2ZXJzaW9uX2F2cmlsXzIwMDhcIjtcbiAgICAgIFwiQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDhcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInZlcnNpb25fYXZyaWxfMjAwOFwiO1xuICAgICAgXCJBbGxvY2F0aW9uRmFtaWxpYWxlc0F2cmlsMjAwOFwiXSBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4KVxuICAgICgoKSkpKSBpblxuICBsZXQgdmVyc2lvbl9hdnJpbF8yMDA4X2RvdF9hZ2VfbWluaW11bV9hbGluZWFfMV9sNTIxXzNfOiBkdXJhdGlvbiA9IHJlc3VsdF8uQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDguYWdlX21pbmltdW1fYWxpbmVhXzFfbDUyMV8zIGluXG4gIGxldCBfOiB1bml0ID0gaWYgKFxuICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgIChvX29yIHBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfX2lfKSlcbiAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI0OTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjUzOyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUyMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0pKSlcbiAgICAgICAgICAgICAgICAgIHRoZW4gKCkgZWxzZVxuICAgICAgICAgICAgICAgICAgcmFpc2UgKEFzc2VydGlvbkZhaWxlZCB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjQ5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNTM7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSkgaW5cbiAgbGV0IGJtYWZfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImJtYWYuZGF0ZV9jb3VyYW50ZVwiXSB7aW9faW5wdXQ9T25seUlucHV0O1xuICAgICAgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE1Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNTY7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xNTY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTU2OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiYm1hZlwiOyBcIkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIl1cbiAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiYm1hZlwiOyBcIkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIl1cbiAgICBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzKVxuICAgICh7QmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBibWFmX2RvdF9kYXRlX2NvdXJhbnRlX30pKSkgaW5cbiAgbGV0IGJtYWZfZG90X21vbnRhbnRfOiBtb25leSA9IHJlc3VsdF8uQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlcy5tb250YW50IGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzLmRhdGVfY291cmFudGVcIl1cbiAgICAgIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTUyOyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTUyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE1MjsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSBpblxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVzaWRlbmNlXzogQ29sbGVjdGl2aXRlLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicHJlc3RhdGlvbnNfZmFtaWxpYWxlcy5yw6lzaWRlbmNlXCJdXG4gICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9jb2xsZWN0aXZpdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTU0OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJlc2lkZW5jZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xNTQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTU0OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzXCI7XG4gICAgICBcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc1wiO1xuICAgICAgXCJQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIl0gcHJlc3RhdGlvbnNfZmFtaWxpYWxlcylcbiAgICAoe1ByZXN0YXRpb25zRmFtaWxpYWxlc0luLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICAgUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4ucmVzaWRlbmNlX2luID1cbiAgICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9yZXNpZGVuY2VffSkpKSBpblxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfZHJvaXRfb3V2ZXJ0XzogRW5mYW50LnQgLT4gYm9vbCA9IHJlc3VsdF8uUHJlc3RhdGlvbnNGYW1pbGlhbGVzLmRyb2l0X291dmVydCBpblxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfY29uZGl0aW9uc19ob3JzX2FnZV86IEVuZmFudC50IC0+IGJvb2wgPSByZXN1bHRfLlByZXN0YXRpb25zRmFtaWxpYWxlcy5jb25kaXRpb25zX2hvcnNfYWdlIGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9hZ2VfbDUxMl8zXzJfOiBkdXJhdGlvbiA9IHJlc3VsdF8uUHJlc3RhdGlvbnNGYW1pbGlhbGVzLmFnZV9sNTEyXzNfMiBpblxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVnaW1lX291dHJlX21lcl9sNzUxXzFfOiBib29sID0gcmVzdWx0Xy5QcmVzdGF0aW9uc0ZhbWlsaWFsZXMucmVnaW1lX291dHJlX21lcl9sNzUxXzEgaW5cbiAgbGV0IGVuZmFudF9sZV9wbHVzX2FnZV9kb3RfZW5mYW50c186IEVuZmFudC50IGFycmF5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImVuZmFudF9sZV9wbHVzX8OiZ8OpLmVuZmFudHNcIl1cbiAgICAgIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2FycmF5IChlbWJlZF9lbmZhbnQpKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzM7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJSw6hnbGVzIGRpdmVyc2VzXCI7IFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGVuZmFudHNfYV9jaGFyZ2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzM7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJSw6hnbGVzIGRpdmVyc2VzXCI7IFwiw4lwaWxvZ3VlXCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBFbmZhbnRMZVBsdXNBZ2UudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJlbmZhbnRfbGVfcGx1c1/DomfDqVwiOyBcIkVuZmFudExlUGx1c8OCZ8OpXCJdXG4gICAgKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImVuZmFudF9sZV9wbHVzX8OiZ8OpXCI7IFwiRW5mYW50TGVQbHVzw4Jnw6lcIl1cbiAgICBlbmZhbnRfbGVfcGx1c19hZ2UpXG4gICAgKHtFbmZhbnRMZVBsdXNBZ2VJbi5lbmZhbnRzX2luID0gZW5mYW50X2xlX3BsdXNfYWdlX2RvdF9lbmZhbnRzX30pKSkgaW5cbiAgbGV0IGVuZmFudF9sZV9wbHVzX2FnZV9kb3RfbGVfcGx1c19hZ2VfOiBFbmZhbnQudCA9IHJlc3VsdF8uRW5mYW50TGVQbHVzQWdlLmxlX3BsdXNfYWdlIGluXG4gIGxldCBhZ2VfbWluaW11bV9hbGluZWFfMV9sNTIxXzNfOiBFbmZhbnQudCAtPiBkdXJhdGlvbiA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcIsOiZ2VfbWluaW11bV9hbGluw6lhXzFfbDUyMV8zXCJdXG4gICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKHVuZW1iZWRkYWJsZSlcbiAgICAoZnVuIChlbmZhbnRfOiBFbmZhbnQudCkgLT4gXG4gICAgICAgdHJ5XG4gICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX1IuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04Mzsgc3RhcnRfY29sdW1uPTE5O1xuICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTgzOyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgZW4gQ29uc2VpbCBkJ0V0YXRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfZGF0X2R1ciBBYm9ydE9uUm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50LmRhdGVfZGVfbmFpc3NhbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHVyYXRpb25fb2ZfbnVtYmVycyAoMTEpICgwKSAoMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA4KSAoNCkgKDMwKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbl9hdnJpbF8yMDA4X2RvdF9hZ2VfbWluaW11bV9hbGluZWFfMV9sNTIxXzNfKSl8XSlcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX1IuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NTY7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIGVuIENvbnNlaWwgZCdFdGF0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZHVyYXRpb25fb2ZfbnVtYmVycyAoMTQpICgwKSAoMCkpKVxuICAgICAgIHdpdGhcbiAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTQyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTE0MjsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV86IEVuZmFudC50IGFycmF5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICBcImVuZmFudHNfw6BfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZVwiXVxuICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9hcnJheSAoZW1iZWRfZW5mYW50KSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTgwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgwOyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTEyLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDEgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uIC0gR8OpbsOpcmFsaXTDqXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19maWx0ZXJcbiAgICAgICAgICAgICAgKGZ1biAoZW5mYW50XzogRW5mYW50LnQpIC0+IChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwiZHJvaXRfb3V2ZXJ0XCJdXG4gICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwiZHJvaXRfb3V2ZXJ0XCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9dHJ1ZX0gKGVtYmVkX2Jvb2wpXG4gICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGwgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwiZHJvaXRfb3V2ZXJ0XCJdXG4gICAgICAgICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2Ryb2l0X291dmVydF8pXG4gICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwiZHJvaXRfb3V2ZXJ0XCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2VuZmFudClcbiAgICAgICAgICAgICAgICAgZW5mYW50XykpKSkpKSkgZW5mYW50c19hX2NoYXJnZV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODU7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgZXN0X2VuZmFudF9sZV9wbHVzX2FnZV86IEVuZmFudC50IC0+IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJlc3RfZW5mYW50X2xlX3BsdXNfw6Jnw6lcIl0ge2lvX2lucHV0PU5vSW5wdXQ7XG4gICAgaW9fb3V0cHV0PWZhbHNlfSAodW5lbWJlZGRhYmxlKVxuICAgIChmdW4gKGVuZmFudF86IEVuZmFudC50KSAtPiBcbiAgICAgICB0cnlcbiAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM0OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUsOoZ2xlcyBkaXZlcnNlc1wiOyBcIsOJcGlsb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgb19lcSBlbmZhbnRfbGVfcGx1c19hZ2VfZG90X2xlX3BsdXNfYWdlXyBlbmZhbnRfKSlcbiAgICAgICB3aXRoXG4gICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTE0Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xNDY7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgcGxhZm9uZF9faV9pX2Q1MjFfM186IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicGxhZm9uZF9JSV9kNTIxXzNcIl0ge2lvX2lucHV0PU5vSW5wdXQ7XG4gICAgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMDsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNpcmN1bGFpcmUgaW50ZXJtaW5pc3TDqXJpZWxsZSBOwrAgRFNTL1NEMkIvMjAxNy8zNTIgZHUgMjIgZMOpY2VtYnJlIDIwMTcgcmVsYXRpdmUgw6AgbGEgcmV2YWxvcmlzYXRpb24gYXUgMWVyIGphbnZpZXIgMjAxOCBkZXMgcGxhZm9uZHMgZGUgcmVzc291cmNlcyBk4oCZYXR0cmlidXRpb24gZGUgY2VydGFpbmVzIHByZXN0YXRpb25zIGZhbWlsaWFsZXMgc2VydmllcyBlbiBtw6l0cm9wb2xlLCBlbiBHdWFkZWxvdXBlLCBlbiBHdXlhbmUsIGVuIE1hcnRpbmlxdWUsIMOgIGxhIFLDqXVuaW9uLCDDoCBTYWludC1CYXJ0aMOpbGVteSwgw6AgU2FpbnQtTWFydGluIGV0IMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOCkgKDEyKSAoMzEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI3ODc3MDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTYyODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTYzOyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW5zdHJ1Y3Rpb24gaW50ZXJtaW5pc3TDqXJpZWxsZSBuwrAgRFNTL1NEMkIvMjAxOC8yNzkgZHUgMTcgZMOpY2VtYnJlIDIwMTggcmVsYXRpdmUgw6AgbGEgcmV2YWxvcmlzYXRpb24gYXUgMWVyIGphbnZpZXIgMjAxOSBkZXMgcGxhZm9uZHMgZGUgcmVzc291cmNlcyBk4oCZYXR0cmlidXRpb24gZGUgY2VydGFpbmVzIHByZXN0YXRpb25zIGZhbWlsaWFsZXMgc2VydmllcyBlbiBtw6l0cm9wb2xlLCBlbiBHdWFkZWxvdXBlLCBlbiBHdXlhbmUsIGVuIE1hcnRpbmlxdWUsIMOgIGxhIFLDqXVuaW9uLCDDoCBTYWludC1CYXJ0aMOpbGVteSwgw6AgU2FpbnQtTWFydGluIGV0IMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEyKSAoMzEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI3OTU1ODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTY4NDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTk2OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW5zdHJ1Y3Rpb24gaW50ZXJtaW5pc3RlcmllbGxlIG5vIERTUy9TRDJCLzIwMTkvMjYxIGR1IDE4IGTDqWNlbWJyZSAyMDE5IHJlbGF0aXZlIMOgIGxhIHJldmFsb3Jpc2F0aW9uIGF1IDFlciBqYW52aWVyIDIwMjAgZGVzIHBsYWZvbmRzIGRlIHJlc3NvdXJjZXMgZOKAmWF0dHJpYnV0aW9uIGRlIGNlcnRhaW5lcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIHNlcnZpZXMgZW4gbcOpdHJvcG9sZSwgZW4gR3VhZGVsb3VwZSwgZW4gR3V5YW5lLCBlbiBNYXJ0aW5pcXVlLCDDoCBMYSBSw6l1bmlvbiwgw6AgU2FpbnQtQmFydGjDqWxlbXksIMOgIFNhaW50LU1hcnRpbiBldCDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkZXMgcGxhZm9uZHMgZGUgcmVzc291cmNlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMikgKDMxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiODA4MzEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU3NzUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXykpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTMyOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTMyOyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMTQgZMOpY2VtYnJlIDIwMjAgcmVsYXRpZiBhdSBtb250YW50IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzIGRlIGNlcnRhaW5lcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IGF1eCB0cmFuY2hlcyBkdSBiYXLDqG1lIGFwcGxpY2FibGUgYXUgcmVjb3V2cmVtZW50IGRlcyBpbmR1cyBldCDDoCBsYSBzYWlzaWUgZGVzIHByZXN0YXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkZXMgcGxhZm9uZHMgZGUgcmVzc291cmNlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMikgKDMxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiODE1NTgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU4MjcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXykpKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzE0OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjc4MzAwMDBcIilcbiAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NTk1MDBcIilcbiAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTQ5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTE0OTsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBwbGFmb25kX19pX2Q1MjFfM186IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicGxhZm9uZF9JX2Q1MjFfM1wiXSB7aW9faW5wdXQ9Tm9JbnB1dDtcbiAgICBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIzOyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2lyY3VsYWlyZSBpbnRlcm1pbmlzdMOpcmllbGxlIE7CsCBEU1MvU0QyQi8yMDE3LzM1MiBkdSAyMiBkw6ljZW1icmUgMjAxNyByZWxhdGl2ZSDDoCBsYSByZXZhbG9yaXNhdGlvbiBhdSAxZXIgamFudmllciAyMDE4IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzIGTigJlhdHRyaWJ1dGlvbiBkZSBjZXJ0YWluZXMgcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBzZXJ2aWVzIGVuIG3DqXRyb3BvbGUsIGVuIEd1YWRlbG91cGUsIGVuIEd1eWFuZSwgZW4gTWFydGluaXF1ZSwgw6AgbGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15LCDDoCBTYWludC1NYXJ0aW4gZXQgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZGVzIHBsYWZvbmRzIGRlIHJlc3NvdXJjZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE4KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE4KSAoMTIpICgzMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU2Mjg2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1NjI4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTY7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnN0cnVjdGlvbiBpbnRlcm1pbmlzdMOpcmllbGxlIG7CsCBEU1MvU0QyQi8yMDE4LzI3OSBkdSAxNyBkw6ljZW1icmUgMjAxOCByZWxhdGl2ZSDDoCBsYSByZXZhbG9yaXNhdGlvbiBhdSAxZXIgamFudmllciAyMDE5IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzIGTigJlhdHRyaWJ1dGlvbiBkZSBjZXJ0YWluZXMgcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBzZXJ2aWVzIGVuIG3DqXRyb3BvbGUsIGVuIEd1YWRlbG91cGUsIGVuIEd1eWFuZSwgZW4gTWFydGluaXF1ZSwgw6AgbGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15LCDDoCBTYWludC1NYXJ0aW4gZXQgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZGVzIHBsYWZvbmRzIGRlIHJlc3NvdXJjZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTIpICgzMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU2ODQ5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1Njg0MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODk7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnN0cnVjdGlvbiBpbnRlcm1pbmlzdGVyaWVsbGUgbm8gRFNTL1NEMkIvMjAxOS8yNjEgZHUgMTggZMOpY2VtYnJlIDIwMTkgcmVsYXRpdmUgw6AgbGEgcmV2YWxvcmlzYXRpb24gYXUgMWVyIGphbnZpZXIgMjAyMCBkZXMgcGxhZm9uZHMgZGUgcmVzc291cmNlcyBk4oCZYXR0cmlidXRpb24gZGUgY2VydGFpbmVzIHByZXN0YXRpb25zIGZhbWlsaWFsZXMgc2VydmllcyBlbiBtw6l0cm9wb2xlLCBlbiBHdWFkZWxvdXBlLCBlbiBHdXlhbmUsIGVuIE1hcnRpbmlxdWUsIMOgIExhIFLDqXVuaW9uLCDDoCBTYWludC1CYXJ0aMOpbGVteSwgw6AgU2FpbnQtTWFydGluIGV0IMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEyKSAoMzEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1Nzc1OTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTc3NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTY7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAxNCBkw6ljZW1icmUgMjAyMCByZWxhdGlmIGF1IG1vbnRhbnQgZGVzIHBsYWZvbmRzIGRlIHJlc3NvdXJjZXMgZGUgY2VydGFpbmVzIHByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgYXV4IHRyYW5jaGVzIGR1IGJhcsOobWUgYXBwbGljYWJsZSBhdSByZWNvdXZyZW1lbnQgZGVzIGluZHVzIGV0IMOgIGxhIHNhaXNpZSBkZXMgcHJlc3RhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGRlcyBwbGFmb25kcyBkZSByZXNzb3VyY2VzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEyKSAoMzEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1ODI3OTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTgyNzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKSkpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMwNDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMDQ7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTU5NTAwMFwiKVxuICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU1OTUwMFwiKVxuICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXykpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xNDg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTQ4OyBlbmRfY29sdW1uPTI3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IGRyb2l0X291dmVydF9jb21wbGVtZW50XzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImRyb2l0X291dmVydF9jb21wbMOpbWVudFwiXSB7aW9faW5wdXQ9Tm9JbnB1dDtcbiAgICBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDYyOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ2MzsgZW5kX2NvbHVtbj03MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw3NTUtMTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgNSA6IERpc3Bvc2l0aW9ucyBwYXJ0aWN1bGnDqHJlcyDDoCBsYSBHdWFkZWxvdXBlLCDDoCBsYSBHdXlhbmUsIMOgIGxhIE1hcnRpbmlxdWUsIMOgIExhIFLDqXVuaW9uLCDDoCBTYWludC1CYXJ0aMOpbGVteSBldCDDoCBTYWludC1NYXJ0aW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNyA6IFLDqWdpbWVzIGRpdmVycyAtIERpc3Bvc2l0aW9ucyBkaXZlcnNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3JlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMxOyBzdGFydF9jb2x1bW49OTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUsOoZ2xlcyBkaXZlcnNlc1wiOyBcIsOJcGlsb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEyODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjg7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7IFwiUHJvbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTI4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEyODsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBkcm9pdF9vdXZlcnRfZm9yZmFpdGFpcmVfOiBFbmZhbnQudCAtPiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiZHJvaXRfb3V2ZXJ0X2ZvcmZhaXRhaXJlXCJdIHtpb19pbnB1dD1Ob0lucHV0O1xuICAgIGlvX291dHB1dD1mYWxzZX0gKHVuZW1iZWRkYWJsZSlcbiAgICAoZnVuIChlbmZhbnRfOiBFbmZhbnQudCkgLT4gXG4gICAgICAgdHJ5XG4gICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NTY7IHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDU3OyBlbmRfY29sdW1uPTcyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDc1NS0xMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSA1IDogRGlzcG9zaXRpb25zIHBhcnRpY3VsacOocmVzIMOgIGxhIEd1YWRlbG91cGUsIMOgIGxhIEd1eWFuZSwgw6AgbGEgTWFydGluaXF1ZSwgw6AgTGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15IGV0IMOgIFNhaW50LU1hcnRpblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA3IDogUsOpZ2ltZXMgZGl2ZXJzIC0gRGlzcG9zaXRpb25zIGRpdmVyc2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVnaW1lX291dHJlX21lcl9sNzUxXzFfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEzNzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ0OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludCAob19sZW5ndGggZW5mYW50c19hX2NoYXJnZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9lbmZhbnRzX2FsaW5lYV8yX2w1MjFfMV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kdXJfZHVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9kYXRfZHVyIEFib3J0T25Sb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnQuZGF0ZV9kZV9uYWlzc2FuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2FnZV9sNTEyXzNfMl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHVyYXRpb25fb2ZfbnVtYmVycyAoMCkgKDApICgzNjUpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudC5hX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNvbmRpdGlvbnNfaG9yc1/DomdlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjb25kaXRpb25zX2hvcnNfw6JnZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PXRydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9ib29sKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIlByZXN0YXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uc19ob3JzX8OiZ2VcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfY29uZGl0aW9uc19ob3JzX2FnZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjb25kaXRpb25zX2hvcnNfw6JnZVwiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnQpIGVuZmFudF8pKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTExOyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgIGVuZF9saW5lPTExMTsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgICAgd2l0aFxuICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTExOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfaW5pdGlhbF9iYXNlX3F1YXRyaWVtZV9lbmZhbnRfZXRfcGx1c19tYXlvdHRlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgIFwibW9udGFudF9pbml0aWFsX2Jhc2VfcXVhdHJpw6htZV9lbmZhbnRfZXRfcGx1c19tYXlvdHRlXCJdXG4gICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xOTU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTk1OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wNDYzXCIpKVxuICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkpKSBlbHNlXG4gICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDg7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9pbml0aWFsX2Jhc2VfdHJvaXNpZW1lX2VuZmFudF9tYXlvdHRlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgIFwibW9udGFudF9pbml0aWFsX2Jhc2VfdHJvaXNpw6htZV9lbmZhbnRfbWF5b3R0ZVwiXSB7aW9faW5wdXQ9Tm9JbnB1dDtcbiAgICBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MzM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MzM7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTEpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTEpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDQ2M1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDQxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDQxOyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEyKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEyKSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA1MzlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0OTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ0OTsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMykgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMykgKDEyKSAoMzEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wNjE1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NTc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NTc7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTQpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTQpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDY5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NjU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NjU7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTUpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTUpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDc2NlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDczOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDczOyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE2KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE2KSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA4NDJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4MTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ4MTsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNykgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNykgKDEyKSAoMzEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wOTE4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00ODk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00ODk7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTgpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTgpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMTA4OVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDk3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDk3OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjEyNTlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTUwNTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTUwNTsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEyKSAoMzEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4xNDNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTg2OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50XyAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjE2XCIpKVxuICAgICAgICAgICAgICBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDc7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbm9tYnJlX3RvdGFsX2VuZmFudHNfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibm9tYnJlX3RvdGFsX2VuZmFudHNcIl0ge2lvX2lucHV0PU5vSW5wdXQ7XG4gICAgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9SLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE2MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNjA7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI1MjEtM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIGVuIENvbnNlaWwgZCdFdGF0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgIChvX2xlbmd0aCBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwMTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDE7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbm9tYnJlX21veWVuX2VuZmFudHNfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibm9tYnJlX21veWVuX2VuZmFudHNcIl0ge2lvX2lucHV0PU5vSW5wdXQ7XG4gICAgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9SLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE0Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNDI7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI1MjEtM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIGVuIENvbnNlaWwgZCdFdGF0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fcmVkdWNlXG4gICAgICAgICAgICAgIChmdW4gKHN1bTFfOiBkZWNpbWFsKSAoc3VtMl86IGRlY2ltYWwpIC0+XG4gICAgICAgICAgICAgICAgIG9fYWRkX3JhdF9yYXQgc3VtMV8gc3VtMl8pIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpXG4gICAgICAgICAgICAgIChvX21hcFxuICAgICAgICAgICAgICAgICAoZnVuIChlbmZhbnRfOiBFbmZhbnQudCkgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJwcmlzZV9lbl9jb21wdGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicHJpc2VfZW5fY29tcHRlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfVxuICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9wcmlzZV9lbl9jb21wdGUpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJwcmlzZV9lbl9jb21wdGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICBwcmlzZV9lbl9jb21wdGVfKSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicHJpc2VfZW5fY29tcHRlXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfZW5mYW50KVxuICAgICAgICAgICAgICAgICAgICAgIGVuZmFudF8pKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ29tcHRlLkNvbXBsZXRlIF8gLT4gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMS5cIilcbiAgICAgICAgICAgICAgICAgICAgfCBQcmlzZUVuQ29tcHRlLlBhcnRhZ2VlIF8gLT4gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC41XCIpXG4gICAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNvbXB0ZS5aZXJvIF8gLT4gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIikpXG4gICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXykpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwMDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X2luaXRpYWxfYmFzZV9wcmVtaWVyX2VuZmFudF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF9pbml0aWFsX2Jhc2VfcHJlbWllcl9lbmZhbnRcIl1cbiAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChcbiAgICAgICAgICAgICAgICAgICAgICAgICBbfHxdKSAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjUzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNTQ7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTEpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyXykpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjE0NVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI2Mjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjYzOyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEyKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTIpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX25vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl8pKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4xMzkzXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjcxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNzI7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTMpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMykgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyXykpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjEzMzVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yODA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI4MTsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE0KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMTI3OFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI4OTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjkwOyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE1KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTUpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX25vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl8pKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4xMjJcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI5OTsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNikgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE2KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMTE2M1wiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMwNzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzA4OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE3KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTcpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX25vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl8pKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4xMTA1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTc7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTgpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOCkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyXykpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA5NzZcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMyNjsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDg0N1wiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMzNDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzM1OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbm5leGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX25vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl8pKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wNzE3XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNDM7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NzI4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjc7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDU4OFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2NDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzY1OyBlbmRfY29sdW1uPTcxO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ3NTUtNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDUgOiBEw6lwYXJ0ZW1lbnRzIGQnb3V0cmUtbWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA3IDogUsOpZ2ltZXMgZGl2ZXJzIC0gRGlzcG9zaXRpb25zIGRpdmVyc2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3JlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xX1xuICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDU4OFwiKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM2MTsgc3RhcnRfY29sdW1uPTI5OyBlbmRfbGluZT0zNjE7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ3NTUtNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgNSA6IETDqXBhcnRlbWVudHMgZCdvdXRyZS1tZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA3IDogUsOpZ2ltZXMgZGl2ZXJzIC0gRGlzcG9zaXRpb25zIGRpdmVyc2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBkcm9pdF9vdXZlcnRfYmFzZV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJkcm9pdF9vdXZlcnRfYmFzZVwiXSB7aW9faW5wdXQ9Tm9JbnB1dDtcbiAgICBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3x8XSkgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTk7IGVuZF9jb2x1bW49NzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwMjAwMi00MjMgZHUgMjkgbWFycyAyMDAyIHJlbGF0aWYgYXV4IHByZXN0YXRpb25zIGZhbWlsaWFsZXMgw6AgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDQyOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NDM7IGVuZF9jb2x1bW49NzI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDc1NS0xMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDUgOiBEaXNwb3NpdGlvbnMgcGFydGljdWxpw6hyZXMgw6AgbGEgR3VhZGVsb3VwZSwgw6AgbGEgR3V5YW5lLCDDoCBsYSBNYXJ0aW5pcXVlLCDDoCBMYSBSw6l1bmlvbiwgw6AgU2FpbnQtQmFydGjDqWxlbXkgZXQgw6AgU2FpbnQtTWFydGluXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA3IDogUsOpZ2ltZXMgZGl2ZXJzIC0gRGlzcG9zaXRpb25zIGRpdmVyc2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3JlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOTsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSkpIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTk0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTk0OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiOyBcIlByb2xvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTk0OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IGRyb2l0X291dmVydF9tYWpvcmF0aW9uXzogRW5mYW50LnQgLT4gYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCJdIHtpb19pbnB1dD1Ob0lucHV0O1xuICAgIGlvX291dHB1dD1mYWxzZX0gKHVuZW1iZWRkYWJsZSlcbiAgICAoZnVuIChlbmZhbnRfOiBFbmZhbnQudCkgLT4gXG4gICAgICAgdHJ5XG4gICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNDA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzQzOyBlbmRfY29sdW1uPTIxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUyMS0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX2VuZmFudHNfYWxpbmVhXzJfbDUyMV8zXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9kYXRfZHVyIEFib3J0T25Sb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudC5kYXRlX2RlX25haXNzYW5jZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCLDomdlX21pbmltdW1fYWxpbsOpYV8xX2w1MjFfM1wiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiw6JnZV9taW5pbXVtX2FsaW7DqWFfMV9sNTIxXzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIHtpb19pbnB1dD1Ob0lucHV0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvX291dHB1dD10cnVlfSAoZW1iZWRfZHVyYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCLDomdlX21pbmltdW1fYWxpbsOpYV8xX2w1MjFfM1wiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZV9taW5pbXVtX2FsaW5lYV8xX2w1MjFfM18pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCLDomdlX21pbmltdW1fYWxpbsOpYV8xX2w1MjFfM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl0ge2lvX2lucHV0PU9ubHlJbnB1dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9lbmZhbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50XykpKSkpKSkpIGRhdGVfY291cmFudGVfKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMyNzsgZW5kX2NvbHVtbj0yMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTIxLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbm90ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZXN0X2VuZmFudF9sZV9wbHVzX8OiZ8OpXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJlc3RfZW5mYW50X2xlX3BsdXNfw6Jnw6lcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfSAoZW1iZWRfYm9vbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImVzdF9lbmZhbnRfbGVfcGx1c1/DomfDqVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlc3RfZW5mYW50X2xlX3BsdXNfYWdlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImVzdF9lbmZhbnRfbGVfcGx1c1/DomfDqVwiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnQpIGVuZmFudF8pKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfZGF0X2R1ciBBYm9ydE9uUm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50LmRhdGVfZGVfbmFpc3NhbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIsOiZ2VfbWluaW11bV9hbGluw6lhXzFfbDUyMV8zXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCLDomdlX21pbmltdW1fYWxpbsOpYV8xX2w1MjFfM1wiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PXRydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9kdXJhdGlvbikgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIsOiZ2VfbWluaW11bV9hbGluw6lhXzFfbDUyMV8zXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZV9taW5pbXVtX2FsaW5lYV8xX2w1MjFfM18pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCLDomdlX21pbmltdW1fYWxpbsOpYV8xX2w1MjFfM1wiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnQpIGVuZmFudF8pKSkpKSkpKSBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE3OyBzdGFydF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNzsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjsgXCJQcm9sb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgICAgd2l0aFxuICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMTc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTE3OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IGNvbXBsZW1lbnRfZGVncmVzc2lmXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJjb21wbMOpbWVudF9kw6lncmVzc2lmXCJdIHtpb19pbnB1dD1Ob0lucHV0O1xuICAgIGlvX291dHB1dD1mYWxzZX0gKHVuZW1iZWRkYWJsZSlcbiAgICAoZnVuIChhbGxvY2F0aW9uXzogbW9uZXkpIC0+IFxuICAgICAgIHRyeVxuICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTsgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjY7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfX2lfZDUyMV8zXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gcGxhZm9uZF9faV9kNTIxXzNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYWxsb2NhdGlvbl9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEyLlwiKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIHBsYWZvbmRfX2lfZDUyMV8zX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYWxsb2NhdGlvbl9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTIuXCIpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzc291cmNlc19tZW5hZ2VfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19kaXZfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMi5cIikpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTsgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNzQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNzU7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfX2lfaV9kNTIxXzNfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBwbGFmb25kX19pX2lfZDUyMV8zX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGFsbG9jYXRpb25fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMi5cIikpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBwbGFmb25kX19pX2lfZDUyMV8zX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYWxsb2NhdGlvbl9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTIuXCIpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzc291cmNlc19tZW5hZ2VfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19kaXZfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMi5cIikpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSkpfF0pXG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4MTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICBlbmRfbGluZT0xODE7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKVxuICAgICAgIHdpdGhcbiAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTMwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEzMDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X3ZlcnNlX2ZvcmZhaXRhaXJlX3Bhcl9lbmZhbnRfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcIm1vbnRhbnRfdmVyc8OpX2ZvcmZhaXRhaXJlX3Bhcl9lbmZhbnRcIl1cbiAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIyMTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMjE7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV8gcGxhZm9uZF9faV9kNTIxXzNfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4yMDIzNFwiKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIzNTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMzY7IGVuZF9jb2x1bW49NDU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfX2lfZDUyMV8zXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX19pX2lfZDUyMV8zXykpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjEwMTE3XCIpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjQ5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI0OTsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9faV9pX2Q1MjFfM18pKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA1MDU5XCIpKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMTM7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9pbml0aWFsX2Jhc2VfdHJvaXNpZW1lX2VuZmFudF9ldF9wbHVzXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgIFwibW9udGFudF9pbml0aWFsX2Jhc2VfdHJvaXNpw6htZV9lbmZhbnRfZXRfcGx1c1wiXSB7aW9faW5wdXQ9Tm9JbnB1dDtcbiAgICBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDM7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQzOyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfIHBsYWZvbmRfX2lfZDUyMV8zXykpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjQxXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSkpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODQ7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg0OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX19pX2Q1MjFfM18pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9faV9pX2Q1MjFfM18pKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMjA1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSkpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTIyOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjI7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfX2lfaV9kNTIxXzNfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMTAyNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05ODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05ODsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X2luaXRpYWxfYmFzZV9kZXV4aWVtZV9lbmZhbnRfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcIm1vbnRhbnRfaW5pdGlhbF9iYXNlX2RldXhpw6htZV9lbmZhbnRcIl1cbiAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChcbiAgICAgICAgICAgICAgICAgICAgICAgICBbfHxdKSAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2RlY3JldHNfZGl2ZXJzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzUyOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNTI7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFubmV4ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTEpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDExKSAoMTIpICgzMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4yMzJcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM2MDsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMikgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTIpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjIzNzlcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM2ODsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMykgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTMpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjI0MzdcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNzY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM3NjsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTQpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjI0OTZcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zODQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM4NDsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNSkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTUpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjI1NTVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM5MjsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNikgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTYpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjI2MTNcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQwMDsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNykgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTcpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjI2NzJcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQwODsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTgpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjI4MDRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQxNjsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjI5MzZcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MjQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQyNDsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQW5uZXhlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsDIwMDItNDIzIGR1IDI5IG1hcnMgMjAwMiByZWxhdGlmIGF1eCBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIMOgIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRpc3Bvc2l0aW9ucyBzcMOpY2lhbGVzIHJlbGF0aXZlcyDDoCBNYXlvdHRlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMikgKDMxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjMwNjhcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZGVjcmV0c19kaXZlcnMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNzc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNzc7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNwb3NpdGlvbnMgc3DDqWNpYWxlcyByZWxhdGl2ZXMgw6AgTWF5b3R0ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMzJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzg7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM4OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfIHBsYWZvbmRfX2lfZDUyMV8zXykpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4zMlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03OTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Nzk7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfX2lfZDUyMV8zXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX19pX2lfZDUyMV8zXykpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZhbnRzX2FfY2hhcmdlX2Ryb2l0X291dmVydF9wcmVzdGF0aW9uX2ZhbWlsaWFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgYm1hZl9kb3RfbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMTZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE3OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTc7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfX2lfaV9kNTIxXzNfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05NzsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCByYXBwb3J0X2VuZmFudHNfdG90YWxfbW95ZW5fOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicmFwcG9ydF9lbmZhbnRzX3RvdGFsX21veWVuXCJdXG4gICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfUi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTI4OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSNTIxLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBlbiBDb25zZWlsIGQnRXRhdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWYgKG9fZXEgbm9tYnJlX3RvdGFsX2VuZmFudHNfIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpKSB0aGVuXG4gICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpIGVsc2VcbiAgICAgICAgICAgICAgKG9fZGl2X3JhdF9yYXQgbm9tYnJlX21veWVuX2VuZmFudHNfIG5vbWJyZV90b3RhbF9lbmZhbnRzXykpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTk7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9pbml0aWFsX21ldHJvcG9sZV9tYWpvcmF0aW9uXzogRW5mYW50LnQgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X2luaXRpYWxfbcOpdHJvcG9sZV9tYWpvcmF0aW9uXCJdXG4gICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKHVuZW1iZWRkYWJsZSlcbiAgICAoZnVuIChlbmZhbnRfOiBFbmZhbnQudCkgLT4gXG4gICAgICAgdHJ5XG4gICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChcbiAgICAgICAgICAgICAgICAgICAgICAgICBbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02MDsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfX2lfZDUyMV8zXykgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9ib29sKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25fKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudCkgZW5mYW50XykpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjE2XCIpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwMTsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9faV9kNTIxXzNfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfX2lfaV9kNTIxXzNfKSkgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9ib29sKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25fKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudCkgZW5mYW50XykpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA4XCIpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTM4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEzODsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9faV9pX2Q1MjFfM18pICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbCkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyb2l0X291dmVydF9tYWpvcmF0aW9uXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnQpIGVuZmFudF8pKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdCBibWFmX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wNFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFxuICAgICAgICAgICAgICAgICAgICAgICAgIFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjg7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUsOoZ2xlcyBkaXZlcnNlc1wiOyBcIsOJcGlsb2d1ZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ub3QgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9ib29sKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25fKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudCkgZW5mYW50XykpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpKVxuICAgICAgIHdpdGhcbiAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTE5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTExOTsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X3ZlcnNlX2ZvcmZhaXRhaXJlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X3ZlcnPDqV9mb3JmYWl0YWlyZVwiXVxuICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE5OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xOTk7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19tdWx0X21vbl9yYXQgbW9udGFudF92ZXJzZV9mb3JmYWl0YWlyZV9wYXJfZW5mYW50X1xuICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgIChvX2ZpbHRlclxuICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChlbmZhbnRfOiBFbmZhbnQudCkgLT4gKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X2ZvcmZhaXRhaXJlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9dHJ1ZX0gKGVtYmVkX2Jvb2wpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZHJvaXRfb3V2ZXJ0X2ZvcmZhaXRhaXJlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9mb3JmYWl0YWlyZVwiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnQpIGVuZmFudF8pKSkpKSkpIGVuZmFudHNfYV9jaGFyZ2VfKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExNDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMTQ7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9pbml0aWFsX2Jhc2VfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcIm1vbnRhbnRfaW5pdGlhbF9iYXNlXCJdIHtpb19pbnB1dD1Ob0lucHV0O1xuICAgIGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNTU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNTY7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ3NTUtNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgNSA6IETDqXBhcnRlbWVudHMgZCdvdXRyZS1tZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA3IDogUsOpZ2ltZXMgZGl2ZXJzIC0gRGlzcG9zaXRpb25zIGRpdmVyc2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9yZWdpbWVfb3V0cmVfbWVyX2w3NTFfMV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9pbml0aWFsX2Jhc2VfcHJlbWllcl9lbmZhbnRfKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9kZWNyZXRzX2RpdmVycy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTE7IHN0YXJ0X2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUxOyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAyMDAyLTQyMyBkdSAyOSBtYXJzIDIwMDIgcmVsYXRpZiBhdXggcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyDDoCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzcG9zaXRpb25zIHNww6ljaWFsZXMgcmVsYXRpdmVzIMOgIE1heW90dGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfaW5pdGlhbF9iYXNlX3ByZW1pZXJfZW5mYW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2luaXRpYWxfYmFzZV9kZXV4aWVtZV9lbmZhbnRfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2luaXRpYWxfYmFzZV90cm9pc2llbWVfZW5mYW50X21heW90dGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2luaXRpYWxfYmFzZV9xdWF0cmllbWVfZW5mYW50X2V0X3BsdXNfbWF5b3R0ZV8pKXxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTg7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19hZGRfbW9uX21vbiBtb250YW50X2luaXRpYWxfYmFzZV9kZXV4aWVtZV9lbmZhbnRfXG4gICAgICAgICAgICAgIG1vbnRhbnRfaW5pdGlhbF9iYXNlX3Ryb2lzaWVtZV9lbmZhbnRfZXRfcGx1c18pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTU7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9pbml0aWFsX21ham9yYXRpb25fOiBFbmZhbnQudCAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcIm1vbnRhbnRfaW5pdGlhbF9tYWpvcmF0aW9uXCJdXG4gICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKHVuZW1iZWRkYWJsZSlcbiAgICAoZnVuIChlbmZhbnRfOiBFbmZhbnQudCkgLT4gXG4gICAgICAgdHJ5XG4gICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xOyBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9ELmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM3ODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM4MjsgZW5kX2NvbHVtbj01NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDc1NS01XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSA1IDogRMOpcGFydGVtZW50cyBkJ291dHJlLW1lclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDcgOiBSw6lnaW1lcyBkaXZlcnMgLSBEaXNwb3NpdGlvbnMgZGl2ZXJzZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmQgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2Jvb2wpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcm9pdF9vdXZlcnRfbWFqb3JhdGlvbl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRfbWFqb3JhdGlvblwiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudCkgZW5mYW50XykpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVnaW1lX291dHJlX21lcl9sNzUxXzFfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZmFudHNfYV9jaGFyZ2VfZHJvaXRfb3V2ZXJ0X3ByZXN0YXRpb25fZmFtaWxpYWxlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfZGF0X2R1ciBBYm9ydE9uUm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudC5kYXRlX2RlX25haXNzYW5jZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICgxMSkgKDApICgwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9kYXRfZHVyIEFib3J0T25Sb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50LmRhdGVfZGVfbmFpc3NhbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGR1cmF0aW9uX29mX251bWJlcnMgKDE2KSAoMCkgKDApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDM2OVwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7IGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzg4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzkxOyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENzU1LTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDUgOiBEw6lwYXJ0ZW1lbnRzIGQnb3V0cmUtbWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNyA6IFLDqWdpbWVzIGRpdmVycyAtIERpc3Bvc2l0aW9ucyBkaXZlcnNlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZCAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PXRydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbCkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb25cIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyb2l0X291dmVydF9tYWpvcmF0aW9uXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydF9tYWpvcmF0aW9uXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfZW5mYW50KSBlbmZhbnRfKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9yZWdpbWVfb3V0cmVfbWVyX2w3NTFfMV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfcHJlc3RhdGlvbl9mYW1pbGlhbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfZGF0X2R1ciBBYm9ydE9uUm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudC5kYXRlX2RlX25haXNzYW5jZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICgxNikgKDApICgwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlXykpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0IGJtYWZfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDU2N1wiKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpKXxdKVxuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yMjsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDUyMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICBcIm1vbnRhbnRfaW5pdGlhbF9tw6l0cm9wb2xlX21ham9yYXRpb25cIl1cbiAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICBcIm1vbnRhbnRfaW5pdGlhbF9tw6l0cm9wb2xlX21ham9yYXRpb25cIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9dHJ1ZX0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgIFwibW9udGFudF9pbml0aWFsX23DqXRyb3BvbGVfbWFqb3JhdGlvblwiXVxuICAgICAgICAgICAgICAgbW9udGFudF9pbml0aWFsX21ldHJvcG9sZV9tYWpvcmF0aW9uXylcbiAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICBcIm1vbnRhbnRfaW5pdGlhbF9tw6l0cm9wb2xlX21ham9yYXRpb25cIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2VuZmFudClcbiAgICAgICAgICAgICAgIGVuZmFudF8pKSkpKSkpKVxuICAgICAgIHdpdGhcbiAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTIxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEyMTsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X3ZlcnNlX2NvbXBsZW1lbnRfcG91cl9mb3JmYWl0YWlyZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF92ZXJzw6lfY29tcGzDqW1lbnRfcG91cl9mb3JmYWl0YWlyZVwiXVxuICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9zZWN1cml0ZV9zb2NpYWxlX0QuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjY4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjcwOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX19pX2Q1MjFfM18pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIHBsYWZvbmRfX2lfZDUyMV8zX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X3ZlcnNlX2ZvcmZhaXRhaXJlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTIuXCIpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gcGxhZm9uZF9faV9kNTIxXzNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X3ZlcnNlX2ZvcmZhaXRhaXJlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMi5cIikpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNzb3VyY2VzX21lbmFnZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2Rpdl9yYXRfcmF0IChkZWNpbWFsX29mX3N0cmluZyBcIjEuXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEyLlwiKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNzg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yODA7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ1MjEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfX2lfaV9kNTIxXzNfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBwbGFmb25kX19pX2lfZDUyMV8zX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X3ZlcnNlX2ZvcmZhaXRhaXJlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTIuXCIpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gcGxhZm9uZF9faV9pX2Q1MjFfM19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfdmVyc2VfZm9yZmFpdGFpcmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEyLlwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3NvdXJjZXNfbWVuYWdlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZGl2X3JhdF9yYXQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMS5cIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTIuXCIpKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yODY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mjg2OyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEzMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMzM7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9hdmVjX2dhcmRlX2FsdGVybmVlX2Jhc2VfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcIm1vbnRhbnRfYXZlY19nYXJkZV9hbHRlcm7DqWVfYmFzZVwiXVxuICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9SLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEyNTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMjU7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI1MjEtM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IEFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAyIDogUHJlc3RhdGlvbnMgZ8OpbsOpcmFsZXMgZCdlbnRyZXRpZW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIGVuIENvbnNlaWwgZCdFdGF0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0IG1vbnRhbnRfaW5pdGlhbF9iYXNlXyByYXBwb3J0X2VuZmFudHNfdG90YWxfbW95ZW5fKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwMjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDI7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9hdmVjX2dhcmRlX2FsdGVybmVlX21ham9yYXRpb25fOiBFbmZhbnQudCAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcIm1vbnRhbnRfYXZlY19nYXJkZV9hbHRlcm7DqWVfbWFqb3JhdGlvblwiXVxuICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9ZmFsc2V9ICh1bmVtYmVkZGFibGUpXG4gICAgKGZ1biAoZW5mYW50XzogRW5mYW50LnQpIC0+IFxuICAgICAgIHRyeVxuICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvc2VjdXJpdGVfc29jaWFsZV9SLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4Njsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTE4NjsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjUyMS00XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDIgOiBQcmVzdGF0aW9ucyBnw6luw6lyYWxlcyBkJ2VudHJldGllblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgZW4gQ29uc2VpbCBkJ0V0YXRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXQgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF9pbml0aWFsX21ham9yYXRpb25cIl1cbiAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X2luaXRpYWxfbWFqb3JhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9dHJ1ZX0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcIm1vbnRhbnRfaW5pdGlhbF9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgIG1vbnRhbnRfaW5pdGlhbF9tYWpvcmF0aW9uXykgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X2luaXRpYWxfbWFqb3JhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgIFwiaW5wdXQwXCJdIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX1cbiAgICAgICAgICAgICAgICAgKGVtYmVkX2VuZmFudCkgZW5mYW50XykpKSkpKSlcbiAgICAgICAgICAgICAgICAgKG1hdGNoICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInByaXNlX2VuX2NvbXB0ZVwiXVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcInByaXNlX2VuX2NvbXB0ZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PXRydWV9XG4gICAgICAgICAgICAgICAgICAgIChlbWJlZF9wcmlzZV9lbl9jb21wdGUpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicHJpc2VfZW5fY29tcHRlXCJdXG4gICAgICAgICAgICAgICAgICAgIHByaXNlX2VuX2NvbXB0ZV8pICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwicHJpc2VfZW5fY29tcHRlXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgICAgIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2VuZmFudClcbiAgICAgICAgICAgICAgICAgICAgZW5mYW50XykpKSkpKSlcbiAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNvbXB0ZS5Db21wbGV0ZSBfIC0+IChkZWNpbWFsX29mX3N0cmluZyBcIjEuXCIpXG4gICAgICAgICAgICAgICAgICB8IFByaXNlRW5Db21wdGUuUGFydGFnZWUgXyAtPiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjVcIilcbiAgICAgICAgICAgICAgICAgIHwgUHJpc2VFbkNvbXB0ZS5aZXJvIF8gLT4gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIikpKSlcbiAgICAgICB3aXRoXG4gICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEyMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjM7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF92ZXJzZV9iYXNlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50X3ZlcnPDqV9iYXNlXCJdIHtpb19pbnB1dD1Ob0lucHV0O1xuICAgIGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNzsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlLDqGdsZXMgZGl2ZXJzZXNcIjsgXCLDiXBpbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZiBkcm9pdF9vdXZlcnRfYmFzZV8gdGhlbiBtb250YW50X2F2ZWNfZ2FyZGVfYWx0ZXJuZWVfYmFzZV9cbiAgICAgICAgICAgICAgZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTAzOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfdmVyc2VfbWFqb3JhdGlvbl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwibW9udGFudF92ZXJzw6lfbWFqb3JhdGlvblwiXSB7aW9faW5wdXQ9Tm9JbnB1dDtcbiAgICBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzk7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJSw6hnbGVzIGRpdmVyc2VzXCI7IFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWYgZHJvaXRfb3V2ZXJ0X2Jhc2VfIHRoZW5cbiAgICAgICAgICAgICAgKG9fcmVkdWNlXG4gICAgICAgICAgICAgICAgIChmdW4gKHN1bTFfOiBtb25leSkgKHN1bTJfOiBtb25leSkgLT5cbiAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vbiBzdW0xXyBzdW0yXykgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIilcbiAgICAgICAgICAgICAgICAgKG9fbWFwXG4gICAgICAgICAgICAgICAgICAgIChmdW4gKGVuZmFudF86IEVuZmFudC50KSAtPiAobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudF9hdmVjX2dhcmRlX2FsdGVybsOpZV9tYWpvcmF0aW9uXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50X2F2ZWNfZ2FyZGVfYWx0ZXJuw6llX21ham9yYXRpb25cIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJtb250YW50X2F2ZWNfZ2FyZGVfYWx0ZXJuw6llX21ham9yYXRpb25cIl1cbiAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9hdmVjX2dhcmRlX2FsdGVybmVlX21ham9yYXRpb25fKVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9udGFudF9hdmVjX2dhcmRlX2FsdGVybsOpZV9tYWpvcmF0aW9uXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgICAgICAgIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2VuZmFudClcbiAgICAgICAgICAgICAgICAgICAgICAgZW5mYW50XykpKSkpKSkgZW5mYW50c19hX2NoYXJnZV8pKSBlbHNlXG4gICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEyNTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjU7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9iYXNlX2NvbXBsZW1lbnRfcG91cl9iYXNlX2V0X21ham9yYXRpb25fOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgXCJtb250YW50X2Jhc2VfY29tcGzDqW1lbnRfcG91cl9iYXNlX2V0X21ham9yYXRpb25cIl0ge2lvX2lucHV0PU5vSW5wdXQ7XG4gICAgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTg5OyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fYWRkX21vbl9tb24gbW9udGFudF92ZXJzZV9iYXNlXyBtb250YW50X3ZlcnNlX21ham9yYXRpb25fKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEyOTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjk7IGVuZF9jb2x1bW49NTg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7IFwiQ2hhbXBzIGQnYXBwbGljYXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWVcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF92ZXJzZV9jb21wbGVtZW50X3BvdXJfYmFzZV9ldF9tYWpvcmF0aW9uXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgIFwibW9udGFudF92ZXJzw6lfY29tcGzDqW1lbnRfcG91cl9iYXNlX2V0X21ham9yYXRpb25cIl1cbiAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL3NlY3VyaXRlX3NvY2lhbGVfRC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTgzOyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBENTIxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBBbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMiA6IFByZXN0YXRpb25zIGfDqW7DqXJhbGVzIGQnZW50cmV0aWVuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZiBkcm9pdF9vdXZlcnRfY29tcGxlbWVudF8gdGhlblxuICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImNvbXBsw6ltZW50X2TDqWdyZXNzaWZcIl1cbiAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiY29tcGzDqW1lbnRfZMOpZ3Jlc3NpZlwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9dHJ1ZX0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICBbXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJjb21wbMOpbWVudF9kw6lncmVzc2lmXCJdXG4gICAgICAgICAgICAgICAgY29tcGxlbWVudF9kZWdyZXNzaWZfKSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgW1wiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7IFwiY29tcGzDqW1lbnRfZMOpZ3Jlc3NpZlwiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgIG1vbnRhbnRfYmFzZV9jb21wbGVtZW50X3BvdXJfYmFzZV9ldF9tYWpvcmF0aW9uXykpKSkpKSkgZWxzZVxuICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMzI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTMyOyBlbmRfY29sdW1uPTU5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiOyBcIkNoYW1wcyBkJ2FwcGxpY2F0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfdmVyc2VfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcIm1vbnRhbnRfdmVyc8OpXCJdIHtpb19pbnB1dD1Ob0lucHV0O1xuICAgIGlvX291dHB1dD10cnVlfSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ1OyBlbmRfY29sdW1uPTI3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUsOoZ2xlcyBkaXZlcnNlc1wiOyBcIsOJcGlsb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmIGRyb2l0X291dmVydF9iYXNlXyB0aGVuXG4gICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIG1vbnRhbnRfdmVyc2VfYmFzZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF92ZXJzZV9tYWpvcmF0aW9uXylcbiAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF92ZXJzZV9mb3JmYWl0YWlyZV8pXG4gICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfdmVyc2VfY29tcGxlbWVudF9wb3VyX2Jhc2VfZXRfbWFqb3JhdGlvbl8pXG4gICAgICAgICAgICAgICAgIG1vbnRhbnRfdmVyc2VfY29tcGxlbWVudF9wb3VyX2ZvcmZhaXRhaXJlXykgZWxzZVxuICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05MTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT05MTsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIjsgXCJDaGFtcHMgZCdhcHBsaWNhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZVwiXX0pKSkpIGluXG4gIHtBbGxvY2F0aW9uc0ZhbWlsaWFsZXMudmVyc2VtZW50ID0gdmVyc2VtZW50XztcbiAgICAgQWxsb2NhdGlvbnNGYW1pbGlhbGVzLm1vbnRhbnRfdmVyc2UgPSBtb250YW50X3ZlcnNlX31cblxubGV0IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIChpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbjogSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udCkgOiBJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXMudCA9XG4gIGxldCBpX2RhdGVfY291cmFudGVfOiBkYXRlID0gaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uaV9kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBpX2VuZmFudHNfOiBFbmZhbnRFbnRyZWUudCBhcnJheSA9IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmlfZW5mYW50c19pbiBpblxuICBsZXQgaV9yZXNzb3VyY2VzX21lbmFnZV86IG1vbmV5ID0gaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uaV9yZXNzb3VyY2VzX21lbmFnZV9pbiBpblxuICBsZXQgaV9yZXNpZGVuY2VfOiBDb2xsZWN0aXZpdGUudCA9IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmlfcmVzaWRlbmNlX2luIGluXG4gIGxldCBpX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50XzogYm9vbCA9IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX2VzdF9wYXJlbnRfaW4gaW5cbiAgbGV0IGlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfX2lfOiBib29sID0gaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uaV9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfcmVtcGxpdF90aXRyZV9JX2luIGluXG4gIGxldCBpX2F2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyXzogYm9vbCA9IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmlfYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfaW4gaW5cbiAgbGV0IGVuZmFudHNfYV9jaGFyZ2VfOiBFbmZhbnQudCBhcnJheSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImVuZmFudHNfw6BfY2hhcmdlXCJdXG4gICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2FycmF5IChlbWJlZF9lbmZhbnQpKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE3OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMMTMxLTFcIjsgXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX21hcFxuICAgICAgICAgICAgICAoZnVuIChlbmZhbnRfOiBFbmZhbnRFbnRyZWUudCkgLT5cbiAgICAgICAgICAgICAgICAge0VuZmFudC5pZGVudGlmaWFudCA9IChlbmZhbnRfLkVuZmFudEVudHJlZS5kX2lkZW50aWZpYW50KTtcbiAgICAgICAgICAgICAgICAgICAgRW5mYW50Lm9ibGlnYXRpb25fc2NvbGFpcmUgPVxuICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9kYXRfZHVyIEFib3J0T25Sb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEVudHJlZS5kX2RhdGVfZGVfbmFpc3NhbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICgzKSAoMCkgKDApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpX2RhdGVfY291cmFudGVfKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgKFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCAoKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9kYXRfZHVyIEFib3J0T25Sb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEVudHJlZS5kX2RhdGVfZGVfbmFpc3NhbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICgxNikgKDApICgwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaV9kYXRlX2NvdXJhbnRlXykgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuUGVuZGFudCAoKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXByZXMgKCkpKSk7XG4gICAgICAgICAgICAgICAgICAgIEVuZmFudC5yZW11bmVyYXRpb25fbWVuc3VlbGxlID1cbiAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRFbnRyZWUuZF9yZW11bmVyYXRpb25fbWVuc3VlbGxlKTtcbiAgICAgICAgICAgICAgICAgICAgRW5mYW50LmRhdGVfZGVfbmFpc3NhbmNlID1cbiAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRFbnRyZWUuZF9kYXRlX2RlX25haXNzYW5jZSk7XG4gICAgICAgICAgICAgICAgICAgIEVuZmFudC5wcmlzZV9lbl9jaGFyZ2UgPVxuICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEVudHJlZS5kX3ByaXNlX2VuX2NoYXJnZSk7XG4gICAgICAgICAgICAgICAgICAgIEVuZmFudC5hX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzID1cbiAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRFbnRyZWUuZF9hX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzKTtcbiAgICAgICAgICAgICAgICAgICAgRW5mYW50LmJlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50RW50cmVlLmRfYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50KX0pXG4gICAgICAgICAgICAgIGlfZW5mYW50c18pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzY7IGVuZF9jb2x1bW49Mjc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfSkpKSkgaW5cbiAgbGV0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50XzogYm9vbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgXCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzLnBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50XCJdXG4gICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05Mzsgc3RhcnRfY29sdW1uPTE4O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTkzOyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfVxuICAgICAgICAgICAgICAgICAgICBpX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50XykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTkyOyBzdGFydF9jb2x1bW49NTsgZW5kX2xpbmU9OTI7IGVuZF9jb2x1bW49NzU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTI7IHN0YXJ0X2NvbHVtbj01OyBlbmRfbGluZT05MjsgZW5kX2NvbHVtbj03NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkludGVyZmFjZSBkdSBwcm9ncmFtbWVcIjsgXCLDiXBpbG9ndWVcIl19KSkgaW5cbiAgbGV0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX19pXzogYm9vbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgXCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzLnBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX0lcIl1cbiAgICAgIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk3OyBzdGFydF9jb2x1bW49MTg7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTc7IGVuZF9jb2x1bW49NzI7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkludGVyZmFjZSBkdSBwcm9ncmFtbWVcIjsgXCLDiXBpbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgIGlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX3JlbXBsaXRfdGl0cmVfX2lfKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTY7IHN0YXJ0X2NvbHVtbj01OyBlbmRfbGluZT05NjsgZW5kX2NvbHVtbj04MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkludGVyZmFjZSBkdSBwcm9ncmFtbWVcIjsgXCLDiXBpbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05Njsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTk2OyBlbmRfY29sdW1uPTgwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX0pKSBpblxuICBsZXQgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVzc291cmNlc19tZW5hZ2VfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgXCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzLnJlc3NvdXJjZXNfbcOpbmFnZVwiXSB7aW9faW5wdXQ9T25seUlucHV0O1xuICAgICAgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04ODsgZW5kX2NvbHVtbj01NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkludGVyZmFjZSBkdSBwcm9ncmFtbWVcIjsgXCLDiXBpbG9ndWVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gaV9yZXNzb3VyY2VzX21lbmFnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04ODsgZW5kX2NvbHVtbj01NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkludGVyZmFjZSBkdSBwcm9ncmFtbWVcIjsgXCLDiXBpbG9ndWVcIl19KSkgaW5cbiAgbGV0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X3Jlc2lkZW5jZV86IENvbGxlY3Rpdml0ZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImFsbG9jYXRpb25zX2ZhbWlsaWFsZXMucsOpc2lkZW5jZVwiXVxuICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfY29sbGVjdGl2aXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODk7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGlfcmVzaWRlbmNlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTg5OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX0pKSBpblxuICBsZXQgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgIFwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy5kYXRlX2NvdXJhbnRlXCJdIHtpb19pbnB1dD1Pbmx5SW5wdXQ7XG4gICAgICBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODY7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGlfZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9lcGlsb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04NjsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkludGVyZmFjZSBkdSBwcm9ncmFtbWVcIjsgXCLDiXBpbG9ndWVcIl19KSkgaW5cbiAgbGV0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X2VuZmFudHNfYV9jaGFyZ2VfOiBFbmZhbnQudCBhcnJheSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgXCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzLmVuZmFudHNfw6BfY2hhcmdlXCJdIHtpb19pbnB1dD1Pbmx5SW5wdXQ7XG4gICAgICBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9hcnJheSAoZW1iZWRfZW5mYW50KSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTg3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTg3OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBlbmZhbnRzX2FfY2hhcmdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTg3OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX0pKSBpblxuICBsZXQgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICBcImFsbG9jYXRpb25zX2ZhbWlsaWFsZXMuYXZhaXRfZW5mYW50X8OgX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyXCJdXG4gICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDE7IHN0YXJ0X2NvbHVtbj0xODtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDE7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkludGVyZmFjZSBkdSBwcm9ncmFtbWVcIjsgXCLDiXBpbG9ndWVcIl19XG4gICAgICAgICAgICAgICAgICAgIGlfYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAwOyBzdGFydF9jb2x1bW49NTsgZW5kX2xpbmU9MTAwOyBlbmRfY29sdW1uPTcyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwMDsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTEwMDsgZW5kX2NvbHVtbj03MjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkludGVyZmFjZSBkdSBwcm9ncmFtbWVcIjsgXCLDiXBpbG9ndWVcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IEFsbG9jYXRpb25zRmFtaWxpYWxlcy50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNcIjtcbiAgICAgIFwiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzXCI7XG4gICAgICBcIkFsbG9jYXRpb25zRmFtaWxpYWxlc1wiXSBhbGxvY2F0aW9uc19mYW1pbGlhbGVzKVxuICAgICh7QWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4ucGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX2VzdF9wYXJlbnRfaW4gPVxuICAgICAgICBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF87XG4gICAgICAgIEFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX0lfaW4gPVxuICAgICAgICAgIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX19pXztcbiAgICAgICAgQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4ucmVzc291cmNlc19tZW5hZ2VfaW4gPVxuICAgICAgICAgIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X3Jlc3NvdXJjZXNfbWVuYWdlXztcbiAgICAgICAgQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4ucmVzaWRlbmNlX2luID1cbiAgICAgICAgICBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9yZXNpZGVuY2VfO1xuICAgICAgICBBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICAgQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uZW5mYW50c19hX2NoYXJnZV9pbiA9XG4gICAgICAgICAgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfZW5mYW50c19hX2NoYXJnZV87XG4gICAgICAgIEFsbG9jYXRpb25zRmFtaWxpYWxlc0luLmF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyX2luID1cbiAgICAgICAgICBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9hdmFpdF9lbmZhbnRfYV9jaGFyZ2VfYXZhbnRfMWVyX2phbnZpZXJfMjAxMl99KSkpIGluXG4gIGxldCBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF92ZXJzZW1lbnRfOiBFbmZhbnQudCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzZW1lbnRBbGxvY2F0aW9ucy50ID0gcmVzdWx0Xy5BbGxvY2F0aW9uc0ZhbWlsaWFsZXMudmVyc2VtZW50IGluXG4gIGxldCBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9tb250YW50X3ZlcnNlXzogbW9uZXkgPSByZXN1bHRfLkFsbG9jYXRpb25zRmFtaWxpYWxlcy5tb250YW50X3ZlcnNlIGluXG4gIGxldCBpX21vbnRhbnRfdmVyc2VfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiOyBcImlfbW9udGFudF92ZXJzw6lcIl0ge2lvX2lucHV0PU5vSW5wdXQ7XG4gICAgaW9fb3V0cHV0PXRydWV9IChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvZXBpbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTA7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnRlcmZhY2UgZHUgcHJvZ3JhbW1lXCI7IFwiw4lwaWxvZ3VlXCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X21vbnRhbnRfdmVyc2VfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2VwaWxvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTgwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTgwOyBlbmRfY29sdW1uPTI3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW50ZXJmYWNlIGR1IHByb2dyYW1tZVwiOyBcIsOJcGlsb2d1ZVwiXX0pKSkpIGluXG4gIHtJbnRlcmZhY2VBbGxvY2F0aW9uc0ZhbWlsaWFsZXMuaV9tb250YW50X3ZlcnNlID0gaV9tb250YW50X3ZlcnNlX31cbiIsIigqKiBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IHRoZSBDYXRhbGEgY29tcGlsZXIsIGRvIG5vdCBlZGl0ISAqKVxuXG5vcGVuIFJ1bnRpbWVfb2NhbWwuUnVudGltZVxub3BlbiBSdW50aW1lX2pzb28uUnVudGltZVxub3BlbiBKc19vZl9vY2FtbFxub3BlbiBBbGxvY2F0aW9uc19mYW1pbGlhbGVzXG5cbltAQEBvY2FtbC53YXJuaW5nIFwiLTQtMjYtMjctMzItNDEtNDJcIl1cblxuKCogR2VuZXJhdGVkIEFQSSAqKVxuXG5jbGFzcyB0eXBlIHByaXNlX2VuX2NoYXJnZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnNcIlxuICAgICAgICAtIFwiR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlXCJcbiAgICAgICAgLSBcIkVmZmVjdGl2ZUV0UGVybWFuZW50ZVwiXG4gICAgICAgIC0gXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZVwiXG4gICAgICAgIC0gXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4XCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgcHJpc2VfZW5fY2hhcmdlX3RvX2pzb28gOiBQcmlzZUVuQ2hhcmdlLnQgLT4gcHJpc2VfZW5fY2hhcmdlIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IEdhcmRlQWx0ZXJuZWVQYXJ0YWdlQWxsb2NhdGlvbnMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJHYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgRWZmZWN0aXZlRXRQZXJtYW5lbnRlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRWZmZWN0aXZlRXRQZXJtYW5lbnRlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQUxhRmFtaWxsZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJTZXJ2aWNlc1NvY2lhdXhBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBwcmlzZV9lbl9jaGFyZ2Vfb2ZfanNvbyAocHJpc2VfZW5fY2hhcmdlIDogcHJpc2VfZW5fY2hhcmdlIEpzLnQpXG4gIDogUHJpc2VFbkNoYXJnZS50ID1cbiAgbWF0Y2ggcHJpc2VfZW5fY2hhcmdlIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiR2FyZGVBbHRlcm5lZVBhcnRhZ2VBbGxvY2F0aW9uc1wiIC0+XG4gICAgUHJpc2VFbkNoYXJnZS5HYXJkZUFsdGVybmVlUGFydGFnZUFsbG9jYXRpb25zICgpXG4gIHwgXCJHYXJkZUFsdGVybmVlQWxsb2NhdGFpcmVVbmlxdWVcIiAtPlxuICAgIFByaXNlRW5DaGFyZ2UuR2FyZGVBbHRlcm5lZUFsbG9jYXRhaXJlVW5pcXVlICgpXG4gIHwgXCJFZmZlY3RpdmVFdFBlcm1hbmVudGVcIiAtPiBQcmlzZUVuQ2hhcmdlLkVmZmVjdGl2ZUV0UGVybWFuZW50ZSAoKVxuICB8IFwiU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGVcIiAtPlxuICAgIFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUFMYUZhbWlsbGUgKClcbiAgfCBcIlNlcnZpY2VzU29jaWF1eEFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXhcIiAtPlxuICAgIFByaXNlRW5DaGFyZ2UuU2VydmljZXNTb2NpYXV4QWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eCAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnUHJpc2VFbkNoYXJnZS50J1wiIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkF2YW50XCJcbiAgICAgICAgLSBcIlBlbmRhbnRcIlxuICAgICAgICAtIFwiQXByZXNcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZV90b19qc29vXG4gIDogU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLnQgLT4gc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgQXZhbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBdmFudFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFBlbmRhbnQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJQZW5kYW50XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQXByZXMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBcHJlc1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmVfb2ZfanNvb1xuICAoc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUgOiBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZSBKcy50KVxuICA6IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS50ID1cbiAgbWF0Y2ggc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJBdmFudFwiIC0+IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCAoKVxuICB8IFwiUGVuZGFudFwiIC0+IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50ICgpXG4gIHwgXCJBcHJlc1wiIC0+IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIHByaXNlX2VuX2NvbXB0ZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkNvbXBsZXRlXCJcbiAgICAgICAgLSBcIlBhcnRhZ2VlXCJcbiAgICAgICAgLSBcIlplcm9cIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBwcmlzZV9lbl9jb21wdGVfdG9fanNvbyA6IFByaXNlRW5Db21wdGUudCAtPiBwcmlzZV9lbl9jb21wdGUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgQ29tcGxldGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJDb21wbGV0ZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFBhcnRhZ2VlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUGFydGFnZWVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBaZXJvIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiWmVyb1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgcHJpc2VfZW5fY29tcHRlX29mX2pzb28gKHByaXNlX2VuX2NvbXB0ZSA6IHByaXNlX2VuX2NvbXB0ZSBKcy50KVxuICA6IFByaXNlRW5Db21wdGUudCA9XG4gIG1hdGNoIHByaXNlX2VuX2NvbXB0ZSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkNvbXBsZXRlXCIgLT4gUHJpc2VFbkNvbXB0ZS5Db21wbGV0ZSAoKVxuICB8IFwiUGFydGFnZWVcIiAtPiBQcmlzZUVuQ29tcHRlLlBhcnRhZ2VlICgpXG4gIHwgXCJaZXJvXCIgLT4gUHJpc2VFbkNvbXB0ZS5aZXJvICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdQcmlzZUVuQ29tcHRlLnQnXCIgY29ucylcblxuXG5jbGFzcyB0eXBlIHZlcnNlbWVudF9hbGxvY2F0aW9ucyA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIk5vcm1hbFwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4XCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgdmVyc2VtZW50X2FsbG9jYXRpb25zX3RvX2pzb29cbiAgOiBWZXJzZW1lbnRBbGxvY2F0aW9ucy50IC0+IHZlcnNlbWVudF9hbGxvY2F0aW9ucyBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBOb3JtYWwgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJOb3JtYWxcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uVmVyc2VlQXV4U2VydmljZXNTb2NpYXV4IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvblZlcnNlZUF1eFNlcnZpY2VzU29jaWF1eFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgdmVyc2VtZW50X2FsbG9jYXRpb25zX29mX2pzb29cbiAgKHZlcnNlbWVudF9hbGxvY2F0aW9ucyA6IHZlcnNlbWVudF9hbGxvY2F0aW9ucyBKcy50KVxuICA6IFZlcnNlbWVudEFsbG9jYXRpb25zLnQgPVxuICBtYXRjaCB2ZXJzZW1lbnRfYWxsb2NhdGlvbnMjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJOb3JtYWxcIiAtPiBWZXJzZW1lbnRBbGxvY2F0aW9ucy5Ob3JtYWwgKClcbiAgfCBcIkFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXhcIiAtPlxuICAgIFZlcnNlbWVudEFsbG9jYXRpb25zLkFsbG9jYXRpb25WZXJzZWVBdXhTZXJ2aWNlc1NvY2lhdXggKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1ZlcnNlbWVudEFsbG9jYXRpb25zLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIGNvbGxlY3Rpdml0ZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkd1YWRlbG91cGVcIlxuICAgICAgICAtIFwiR3V5YW5lXCJcbiAgICAgICAgLSBcIk1hcnRpbmlxdWVcIlxuICAgICAgICAtIFwiTGFSZXVuaW9uXCJcbiAgICAgICAgLSBcIlNhaW50QmFydGhlbGVteVwiXG4gICAgICAgIC0gXCJTYWludE1hcnRpblwiXG4gICAgICAgIC0gXCJNZXRyb3BvbGVcIlxuICAgICAgICAtIFwiU2FpbnRQaWVycmVFdE1pcXVlbG9uXCJcbiAgICAgICAgLSBcIk1heW90dGVcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBjb2xsZWN0aXZpdGVfdG9fanNvbyA6IENvbGxlY3Rpdml0ZS50IC0+IGNvbGxlY3Rpdml0ZSBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBHdWFkZWxvdXBlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiR3VhZGVsb3VwZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEd1eWFuZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkd1eWFuZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IE1hcnRpbmlxdWUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJNYXJ0aW5pcXVlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgTGFSZXVuaW9uIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTGFSZXVuaW9uXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgU2FpbnRCYXJ0aGVsZW15IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiU2FpbnRCYXJ0aGVsZW15XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgU2FpbnRNYXJ0aW4gYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJTYWludE1hcnRpblwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IE1ldHJvcG9sZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk1ldHJvcG9sZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFNhaW50UGllcnJlRXRNaXF1ZWxvbiBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlNhaW50UGllcnJlRXRNaXF1ZWxvblwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IE1heW90dGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJNYXlvdHRlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBjb2xsZWN0aXZpdGVfb2ZfanNvbyAoY29sbGVjdGl2aXRlIDogY29sbGVjdGl2aXRlIEpzLnQpXG4gIDogQ29sbGVjdGl2aXRlLnQgPVxuICBtYXRjaCBjb2xsZWN0aXZpdGUjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJHdWFkZWxvdXBlXCIgLT4gQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgKClcbiAgfCBcIkd1eWFuZVwiIC0+IENvbGxlY3Rpdml0ZS5HdXlhbmUgKClcbiAgfCBcIk1hcnRpbmlxdWVcIiAtPiBDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSAoKVxuICB8IFwiTGFSZXVuaW9uXCIgLT4gQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiAoKVxuICB8IFwiU2FpbnRCYXJ0aGVsZW15XCIgLT4gQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteSAoKVxuICB8IFwiU2FpbnRNYXJ0aW5cIiAtPiBDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gKClcbiAgfCBcIk1ldHJvcG9sZVwiIC0+IENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgKClcbiAgfCBcIlNhaW50UGllcnJlRXRNaXF1ZWxvblwiIC0+IENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb24gKClcbiAgfCBcIk1heW90dGVcIiAtPiBDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnQ29sbGVjdGl2aXRlLnQnXCIgY29ucylcblxuXG5jbGFzcyB0eXBlIGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDggPVxuICBvYmplY3RcbiAgICBtZXRob2QgYWdlTWluaW11bUFsaW5lYTFMNTIxMzpcbiAgICAgIFJ1bnRpbWVfanNvby5SdW50aW1lLmR1cmF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfdG9fanNvb1xuICAgIChhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4IDogQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDgudClcbiAgICA6IGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDggSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgYWdlTWluaW11bUFsaW5lYTFMNTIxMyA9XG4gICAgICAgIGR1cmF0aW9uX3RvX2pzb28gYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOC5hZ2VfbWluaW11bV9hbGluZWFfMV9sNTIxXzNcbiAgICAgIGVuZFxuICBsZXQgYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOF9vZl9qc29vXG4gICAgKGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDggOiBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4IEpzLnQpIDpcbiAgICBBbGxvY2F0aW9uRmFtaWxpYWxlc0F2cmlsMjAwOC50ID1cbiAgICB7XG4gICAgICBhZ2VfbWluaW11bV9hbGluZWFfMV9sNTIxXzMgPVxuICAgICAgICBkdXJhdGlvbl9vZl9qc29vXG4gICAgICAgICAgYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOCMjLmFnZU1pbmltdW1BbGluZWExTDUyMTNcbiAgICB9XG5cbmNsYXNzIHR5cGUgdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hID1cbiAgb2JqZWN0IG1ldGhvZCBlc3RJbmZlcmlldXJPdUVnYWw6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hX3RvX2pzb29cbiAgICAodmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hXG4gICAgOiBWZXJpZmljYXRpb25BZ2VJbmZlcmlldXJPdUVnYWxBLnQpXG4gICAgOiB2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2EgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZXN0SW5mZXJpZXVyT3VFZ2FsID1cbiAgICAgICAgSnMuYm9vbCB2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2EuZXN0X2luZmVyaWV1cl9vdV9lZ2FsXG4gICAgICBlbmRcbiAgbGV0IHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYV9vZl9qc29vXG4gICAgKHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYVxuICAgICAgOiB2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2EgSnMudCkgOlxuICAgIFZlcmlmaWNhdGlvbkFnZUluZmVyaWV1ck91RWdhbEEudCA9XG4gICAge1xuICAgICAgZXN0X2luZmVyaWV1cl9vdV9lZ2FsID1cbiAgICAgICAgSnMudG9fYm9vbCB2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2EjIy5lc3RJbmZlcmlldXJPdUVnYWxcbiAgICB9XG5cbmNsYXNzIHR5cGUgdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYSA9XG4gIG9iamVjdCBtZXRob2QgZXN0U3VwZXJpZXVyOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfdG9fanNvbyAodmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYVxuICAgIDogVmVyaWZpY2F0aW9uQWdlU3VwZXJpZXVyQS50KSA6IHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2EgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZXN0U3VwZXJpZXVyID0gSnMuYm9vbCB2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hLmVzdF9zdXBlcmlldXJcbiAgICAgIGVuZFxuICBsZXQgdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYV9vZl9qc29vXG4gICAgKHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2EgOiB2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hIEpzLnQpIDpcbiAgICBWZXJpZmljYXRpb25BZ2VTdXBlcmlldXJBLnQgPVxuICAgIHtlc3Rfc3VwZXJpZXVyID0gSnMudG9fYm9vbCB2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hIyMuZXN0U3VwZXJpZXVyXG4gICAgfVxuXG5jbGFzcyB0eXBlIHNtaWMgPVxuICBvYmplY3QgbWV0aG9kIGJydXRIb3JhaXJlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgc21pY190b19qc29vIChzbWljIDogU21pYy50KSA6IHNtaWMgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgYnJ1dEhvcmFpcmUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgc21pYy5icnV0X2hvcmFpcmVcbiAgICAgIGVuZFxuICBsZXQgc21pY19vZl9qc29vIChzbWljIDogc21pYyBKcy50KSA6IFNtaWMudCA9XG4gICAge1xuICAgICAgYnJ1dF9ob3JhaXJlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIHNtaWMjIy5icnV0SG9yYWlyZVxuICAgIH1cblxuY2xhc3MgdHlwZSBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzID1cbiAgb2JqZWN0IG1ldGhvZCBtb250YW50OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc190b19qc29vXG4gICAgKGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgICA6IEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMudClcbiAgICA6IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbW9udGFudCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzLm1vbnRhbnRcbiAgICAgIGVuZFxuICBsZXQgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vZl9qc29vXG4gICAgKGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgICAgIDogYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyBKcy50KSA6XG4gICAgQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlcy50ID1cbiAgICB7XG4gICAgICBtb250YW50ID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMjIy5tb250YW50XG4gICAgfVxuXG5jbGFzcyB0eXBlIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzID1cbiAgb2JqZWN0IG1ldGhvZCBpTW9udGFudFZlcnNlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvb1xuICAgIChpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyA6IEludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlcy50KVxuICAgIDogaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgaU1vbnRhbnRWZXJzZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy5pX21vbnRhbnRfdmVyc2VcbiAgICAgIGVuZFxuICBsZXQgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvb1xuICAgIChpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICAgICAgOiBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyBKcy50KSA6XG4gICAgSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQgPVxuICAgIHtcbiAgICAgIGlfbW9udGFudF92ZXJzZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyMjLmlNb250YW50VmVyc2VcbiAgICB9XG5cbmNsYXNzIHR5cGUgZW5mYW50X2VudHJlZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBkSWRlbnRpZmlhbnQ6IGludCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRSZW11bmVyYXRpb25NZW5zdWVsbGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZERhdGVEZU5haXNzYW5jZTogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkUHJpc2VFbkNoYXJnZTogcHJpc2VfZW5fY2hhcmdlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkQURlamFPdXZlcnREcm9pdEF1eEFsbG9jYXRpb25zRmFtaWxpYWxlczpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRCZW5lZmljaWVUaXRyZVBlcnNvbm5lbEFpZGVQZXJzb25uZWxsZUxvZ2VtZW50OlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBlbmZhbnRfZW50cmVlX3RvX2pzb28gKGVuZmFudF9lbnRyZWUgOiBFbmZhbnRFbnRyZWUudClcbiAgICA6IGVuZmFudF9lbnRyZWUgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZElkZW50aWZpYW50ID0gaW50ZWdlcl90b19pbnQgZW5mYW50X2VudHJlZS5kX2lkZW50aWZpYW50XG4gICAgICB2YWwgZFJlbXVuZXJhdGlvbk1lbnN1ZWxsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBlbmZhbnRfZW50cmVlLmRfcmVtdW5lcmF0aW9uX21lbnN1ZWxsZVxuICAgICAgdmFsIGREYXRlRGVOYWlzc2FuY2UgPSBkYXRlX3RvX2pzb28gZW5mYW50X2VudHJlZS5kX2RhdGVfZGVfbmFpc3NhbmNlXG4gICAgICB2YWwgZFByaXNlRW5DaGFyZ2UgPVxuICAgICAgICBwcmlzZV9lbl9jaGFyZ2VfdG9fanNvbyBlbmZhbnRfZW50cmVlLmRfcHJpc2VfZW5fY2hhcmdlXG4gICAgICB2YWwgZEFEZWphT3V2ZXJ0RHJvaXRBdXhBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgPVxuICAgICAgICBKcy5ib29sIGVuZmFudF9lbnRyZWUuZF9hX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gICAgICB2YWwgZEJlbmVmaWNpZVRpdHJlUGVyc29ubmVsQWlkZVBlcnNvbm5lbGxlTG9nZW1lbnQgPVxuICAgICAgICBKcy5ib29sIGVuZmFudF9lbnRyZWUuZF9iZW5lZmljaWVfdGl0cmVfcGVyc29ubmVsX2FpZGVfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgICAgIGVuZFxuICBsZXQgZW5mYW50X2VudHJlZV9vZl9qc29vIChlbmZhbnRfZW50cmVlIDogZW5mYW50X2VudHJlZSBKcy50KSA6XG4gICAgRW5mYW50RW50cmVlLnQgPVxuICAgIHtcbiAgICAgIGRfaWRlbnRpZmlhbnQgPSBpbnRlZ2VyX29mX2ludCBlbmZhbnRfZW50cmVlIyMuZElkZW50aWZpYW50O1xuICAgICAgZF9yZW11bmVyYXRpb25fbWVuc3VlbGxlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGVuZmFudF9lbnRyZWUjIy5kUmVtdW5lcmF0aW9uTWVuc3VlbGxlO1xuICAgICAgZF9kYXRlX2RlX25haXNzYW5jZSA9IGRhdGVfb2ZfanNvbyBlbmZhbnRfZW50cmVlIyMuZERhdGVEZU5haXNzYW5jZTtcbiAgICAgIGRfcHJpc2VfZW5fY2hhcmdlID1cbiAgICAgICAgcHJpc2VfZW5fY2hhcmdlX29mX2pzb28gZW5mYW50X2VudHJlZSMjLmRQcmlzZUVuQ2hhcmdlO1xuICAgICAgZF9hX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzID1cbiAgICAgICAgSnMudG9fYm9vbCBlbmZhbnRfZW50cmVlIyMuZEFEZWphT3V2ZXJ0RHJvaXRBdXhBbGxvY2F0aW9uc0ZhbWlsaWFsZXM7XG4gICAgICBkX2JlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudCA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBlbmZhbnRfZW50cmVlIyMuZEJlbmVmaWNpZVRpdHJlUGVyc29ubmVsQWlkZVBlcnNvbm5lbGxlTG9nZW1lbnRcbiAgICB9XG5cbmNsYXNzIHR5cGUgZW5mYW50ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGlkZW50aWZpYW50OiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBvYmxpZ2F0aW9uU2NvbGFpcmU6XG4gICAgICBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVtdW5lcmF0aW9uTWVuc3VlbGxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVEZU5haXNzYW5jZTogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBwcmlzZUVuQ2hhcmdlOiBwcmlzZV9lbl9jaGFyZ2UgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGFEZWphT3V2ZXJ0RHJvaXRBdXhBbGxvY2F0aW9uc0ZhbWlsaWFsZXM6XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBiZW5lZmljaWVUaXRyZVBlcnNvbm5lbEFpZGVQZXJzb25uZWxsZUxvZ2VtZW50OlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBlbmZhbnRfdG9fanNvbyAoZW5mYW50IDogRW5mYW50LnQpIDogZW5mYW50IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGlkZW50aWZpYW50ID0gaW50ZWdlcl90b19pbnQgZW5mYW50LmlkZW50aWZpYW50XG4gICAgICB2YWwgb2JsaWdhdGlvblNjb2xhaXJlID1cbiAgICAgICAgc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmVfdG9fanNvbyBlbmZhbnQub2JsaWdhdGlvbl9zY29sYWlyZVxuICAgICAgdmFsIHJlbXVuZXJhdGlvbk1lbnN1ZWxsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBlbmZhbnQucmVtdW5lcmF0aW9uX21lbnN1ZWxsZVxuICAgICAgdmFsIGRhdGVEZU5haXNzYW5jZSA9IGRhdGVfdG9fanNvbyBlbmZhbnQuZGF0ZV9kZV9uYWlzc2FuY2VcbiAgICAgIHZhbCBwcmlzZUVuQ2hhcmdlID0gcHJpc2VfZW5fY2hhcmdlX3RvX2pzb28gZW5mYW50LnByaXNlX2VuX2NoYXJnZVxuICAgICAgdmFsIGFEZWphT3V2ZXJ0RHJvaXRBdXhBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgPVxuICAgICAgICBKcy5ib29sIGVuZmFudC5hX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gICAgICB2YWwgYmVuZWZpY2llVGl0cmVQZXJzb25uZWxBaWRlUGVyc29ubmVsbGVMb2dlbWVudCA9XG4gICAgICAgIEpzLmJvb2wgZW5mYW50LmJlbmVmaWNpZV90aXRyZV9wZXJzb25uZWxfYWlkZV9wZXJzb25uZWxsZV9sb2dlbWVudFxuICAgICAgZW5kXG4gIGxldCBlbmZhbnRfb2ZfanNvbyAoZW5mYW50IDogZW5mYW50IEpzLnQpIDogRW5mYW50LnQgPVxuICAgIHtcbiAgICAgIGlkZW50aWZpYW50ID0gaW50ZWdlcl9vZl9pbnQgZW5mYW50IyMuaWRlbnRpZmlhbnQ7XG4gICAgICBvYmxpZ2F0aW9uX3Njb2xhaXJlID1cbiAgICAgICAgc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmVfb2ZfanNvbyBlbmZhbnQjIy5vYmxpZ2F0aW9uU2NvbGFpcmU7XG4gICAgICByZW11bmVyYXRpb25fbWVuc3VlbGxlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGVuZmFudCMjLnJlbXVuZXJhdGlvbk1lbnN1ZWxsZTtcbiAgICAgIGRhdGVfZGVfbmFpc3NhbmNlID0gZGF0ZV9vZl9qc29vIGVuZmFudCMjLmRhdGVEZU5haXNzYW5jZTtcbiAgICAgIHByaXNlX2VuX2NoYXJnZSA9IHByaXNlX2VuX2NoYXJnZV9vZl9qc29vIGVuZmFudCMjLnByaXNlRW5DaGFyZ2U7XG4gICAgICBhX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzID1cbiAgICAgICAgSnMudG9fYm9vbCBlbmZhbnQjIy5hRGVqYU91dmVydERyb2l0QXV4QWxsb2NhdGlvbnNGYW1pbGlhbGVzO1xuICAgICAgYmVuZWZpY2llX3RpdHJlX3BlcnNvbm5lbF9haWRlX3BlcnNvbm5lbGxlX2xvZ2VtZW50ID1cbiAgICAgICAgSnMudG9fYm9vbCBlbmZhbnQjIy5iZW5lZmljaWVUaXRyZVBlcnNvbm5lbEFpZGVQZXJzb25uZWxsZUxvZ2VtZW50XG4gICAgfVxuXG5jbGFzcyB0eXBlIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXMgPVxuICBvYmplY3RcbiAgICBtZXRob2QgdmVyc2VtZW50OlxuICAgICAgKHVuaXQsICBlbmZhbnQgSnMudCAtPiB2ZXJzZW1lbnRfYWxsb2NhdGlvbnMgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gICAgbWV0aG9kIG1vbnRhbnRWZXJzZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvbyAoYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICAgIDogQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQpIDogYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIG1ldGhvZCB2ZXJzZW1lbnQgPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBfIChmdW5jdGlvbl9pbnB1dDA6IGVuZmFudCBKcy50KSAtPlxuICAgICAgICAgIHZlcnNlbWVudF9hbGxvY2F0aW9uc190b19qc29vIChhbGxvY2F0aW9uc19mYW1pbGlhbGVzLnZlcnNlbWVudCBcbiAgICAgICAgICAoZW5mYW50X29mX2pzb29cbiAgICAgICAgICAgIGZ1bmN0aW9uX2lucHV0MCkpKVxuICAgICAgdmFsIG1vbnRhbnRWZXJzZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBhbGxvY2F0aW9uc19mYW1pbGlhbGVzLm1vbnRhbnRfdmVyc2VcbiAgICAgIGVuZFxuICBsZXQgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19vZl9qc29vXG4gICAgKGFsbG9jYXRpb25zX2ZhbWlsaWFsZXMgOiBhbGxvY2F0aW9uc19mYW1pbGlhbGVzIEpzLnQpIDpcbiAgICBBbGxvY2F0aW9uc0ZhbWlsaWFsZXMudCA9XG4gICAge1xuICAgICAgdmVyc2VtZW50ID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ3ZlcnNlbWVudCcgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiO1xuICAgICAgbW9udGFudF92ZXJzZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBhbGxvY2F0aW9uc19mYW1pbGlhbGVzIyMubW9udGFudFZlcnNlXG4gICAgfVxuXG5jbGFzcyB0eXBlIGVuZmFudF9sZV9wbHVzX2FnZSA9XG4gIG9iamVjdCBtZXRob2QgbGVQbHVzQWdlOiBlbmZhbnQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgZW5mYW50X2xlX3BsdXNfYWdlX3RvX2pzb28gKGVuZmFudF9sZV9wbHVzX2FnZSA6IEVuZmFudExlUGx1c0FnZS50KVxuICAgIDogZW5mYW50X2xlX3BsdXNfYWdlIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGxlUGx1c0FnZSA9IGVuZmFudF90b19qc29vIGVuZmFudF9sZV9wbHVzX2FnZS5sZV9wbHVzX2FnZVxuICAgICAgZW5kXG4gIGxldCBlbmZhbnRfbGVfcGx1c19hZ2Vfb2ZfanNvb1xuICAgIChlbmZhbnRfbGVfcGx1c19hZ2UgOiBlbmZhbnRfbGVfcGx1c19hZ2UgSnMudCkgOiBFbmZhbnRMZVBsdXNBZ2UudCA9XG4gICAge2xlX3BsdXNfYWdlID0gZW5mYW50X29mX2pzb28gZW5mYW50X2xlX3BsdXNfYWdlIyMubGVQbHVzQWdlXG4gICAgfVxuXG5jbGFzcyB0eXBlIHByZXN0YXRpb25zX2ZhbWlsaWFsZXMgPVxuICBvYmplY3RcbiAgICBtZXRob2QgZHJvaXRPdXZlcnQ6XG4gICAgICAodW5pdCwgIGVuZmFudCBKcy50IC0+IGJvb2wgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gICAgbWV0aG9kIGNvbmRpdGlvbnNIb3JzQWdlOlxuICAgICAgKHVuaXQsICBlbmZhbnQgSnMudCAtPiBib29sIEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICAgIG1ldGhvZCBhZ2VMNTEyMzI6IFJ1bnRpbWVfanNvby5SdW50aW1lLmR1cmF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZWdpbWVPdXRyZU1lckw3NTExOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvbyAocHJlc3RhdGlvbnNfZmFtaWxpYWxlc1xuICAgIDogUHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQpIDogcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIG1ldGhvZCBkcm9pdE91dmVydCA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIF8gKGZ1bmN0aW9uX2lucHV0MDogZW5mYW50IEpzLnQpIC0+XG4gICAgICAgICAgSnMuYm9vbCAocHJlc3RhdGlvbnNfZmFtaWxpYWxlcy5kcm9pdF9vdXZlcnQgKGVuZmFudF9vZl9qc29vXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbl9pbnB1dDApKSlcbiAgICAgIG1ldGhvZCBjb25kaXRpb25zSG9yc0FnZSA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIF8gKGZ1bmN0aW9uX2lucHV0MDogZW5mYW50IEpzLnQpIC0+XG4gICAgICAgICAgSnMuYm9vbCAocHJlc3RhdGlvbnNfZmFtaWxpYWxlcy5jb25kaXRpb25zX2hvcnNfYWdlIChlbmZhbnRfb2ZfanNvb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uX2lucHV0MCkpKVxuICAgICAgdmFsIGFnZUw1MTIzMiA9IGR1cmF0aW9uX3RvX2pzb28gcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy5hZ2VfbDUxMl8zXzJcbiAgICAgIHZhbCByZWdpbWVPdXRyZU1lckw3NTExID1cbiAgICAgICAgSnMuYm9vbCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzLnJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xXG4gICAgICBlbmRcbiAgbGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvb1xuICAgIChwcmVzdGF0aW9uc19mYW1pbGlhbGVzIDogcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyBKcy50KSA6XG4gICAgUHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQgPVxuICAgIHtcbiAgICAgIGRyb2l0X291dmVydCA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICdkcm9pdF9vdXZlcnQnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIjtcbiAgICAgIGNvbmRpdGlvbnNfaG9yc19hZ2UgPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAnY29uZGl0aW9uc19ob3JzX2FnZScgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiO1xuICAgICAgYWdlX2w1MTJfM18yID0gZHVyYXRpb25fb2ZfanNvbyBwcmVzdGF0aW9uc19mYW1pbGlhbGVzIyMuYWdlTDUxMjMyO1xuICAgICAgcmVnaW1lX291dHJlX21lcl9sNzUxXzEgPVxuICAgICAgICBKcy50b19ib29sIHByZXN0YXRpb25zX2ZhbWlsaWFsZXMjIy5yZWdpbWVPdXRyZU1lckw3NTExXG4gICAgfVxuXG5jbGFzcyB0eXBlIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzaWRlbmNlSW46IGNvbGxlY3Rpdml0ZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luX3RvX2pzb28gKHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgICA6IFByZXN0YXRpb25zRmFtaWxpYWxlc0luLnQpIDogcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIHZhbCByZXNpZGVuY2VJbiA9XG4gICAgICAgIGNvbGxlY3Rpdml0ZV90b19qc29vIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4ucmVzaWRlbmNlX2luXG4gICAgICBlbmRcbiAgbGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW5fb2ZfanNvb1xuICAgIChwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIDogcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50KSA6XG4gICAgUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4udCA9XG4gICAge1xuICAgICAgZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvbyBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICByZXNpZGVuY2VfaW4gPVxuICAgICAgICBjb2xsZWN0aXZpdGVfb2ZfanNvbyBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIyMucmVzaWRlbmNlSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOF9pbiA9XG5vYmplY3QgZW5kXG5sZXQgYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOF9pbl90b19qc29vIChfIDogQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDhJbi50KSA6IGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfaW4gSnMudCA9IG9iamVjdCVqcyBlbmRcbmxldCBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4X2luX29mX2pzb28gKF8gOiBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4X2luIEpzLnQpIDogQWxsb2NhdGlvbkZhbWlsaWFsZXNBdnJpbDIwMDhJbi50ID0gKClcbmNsYXNzIHR5cGUgZW5mYW50X2xlX3BsdXNfYWdlX2luID1cbiAgb2JqZWN0IG1ldGhvZCBlbmZhbnRzSW46IGVuZmFudCBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGVuZmFudF9sZV9wbHVzX2FnZV9pbl90b19qc29vIChlbmZhbnRfbGVfcGx1c19hZ2VfaW5cbiAgICA6IEVuZmFudExlUGx1c0FnZUluLnQpIDogZW5mYW50X2xlX3BsdXNfYWdlX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGVuZmFudHNJbiA9XG4gICAgICAgIEpzLmFycmF5IEBAIEFycmF5Lm1hcCAoZnVuIHggLT4gZW5mYW50X3RvX2pzb28geCkgZW5mYW50X2xlX3BsdXNfYWdlX2luLmVuZmFudHNfaW5cbiAgICAgIGVuZFxuICBsZXQgZW5mYW50X2xlX3BsdXNfYWdlX2luX29mX2pzb29cbiAgICAoZW5mYW50X2xlX3BsdXNfYWdlX2luIDogZW5mYW50X2xlX3BsdXNfYWdlX2luIEpzLnQpIDpcbiAgICBFbmZhbnRMZVBsdXNBZ2VJbi50ID1cbiAgICB7XG4gICAgICBlbmZhbnRzX2luID1cbiAgICAgICAgQXJyYXkubWFwIChmdW4geCAtPiBlbmZhbnRfb2ZfanNvbyB4KSBAQCBKcy50b19hcnJheVxuICAgICAgICAgIGVuZmFudF9sZV9wbHVzX2FnZV9pbiMjLmVuZmFudHNJblxuICAgIH1cblxuY2xhc3MgdHlwZSBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIHBlcnNvbm5lQ2hhcmdlRWZmZWN0aXZlUGVybWFuZW50ZUVzdFBhcmVudEluOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcGVyc29ubmVDaGFyZ2VFZmZlY3RpdmVQZXJtYW5lbnRlUmVtcGxpdFRpdHJlSUluOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzc291cmNlc01lbmFnZUluOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlc2lkZW5jZUluOiBjb2xsZWN0aXZpdGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGVuZmFudHNBQ2hhcmdlSW46IGVuZmFudCBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBhdmFpdEVuZmFudEFDaGFyZ2VBdmFudDFlckphbnZpZXIyMDEySW46XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5fdG9fanNvbyAoYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pblxuICAgIDogQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udCkgOiBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIHBlcnNvbm5lQ2hhcmdlRWZmZWN0aXZlUGVybWFuZW50ZUVzdFBhcmVudEluID1cbiAgICAgICAgSnMuYm9vbCBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLnBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50X2luXG4gICAgICB2YWwgcGVyc29ubmVDaGFyZ2VFZmZlY3RpdmVQZXJtYW5lbnRlUmVtcGxpdFRpdHJlSUluID1cbiAgICAgICAgSnMuYm9vbCBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLnBlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX0lfaW5cbiAgICAgIHZhbCByZXNzb3VyY2VzTWVuYWdlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5yZXNzb3VyY2VzX21lbmFnZV9pblxuICAgICAgdmFsIHJlc2lkZW5jZUluID1cbiAgICAgICAgY29sbGVjdGl2aXRlX3RvX2pzb28gYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5yZXNpZGVuY2VfaW5cbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIHZhbCBlbmZhbnRzQUNoYXJnZUluID1cbiAgICAgICAgSnMuYXJyYXkgQEAgQXJyYXkubWFwIChmdW4geCAtPiBlbmZhbnRfdG9fanNvbyB4KSBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLmVuZmFudHNfYV9jaGFyZ2VfaW5cbiAgICAgIHZhbCBhdmFpdEVuZmFudEFDaGFyZ2VBdmFudDFlckphbnZpZXIyMDEySW4gPVxuICAgICAgICBKcy5ib29sIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfaW5cbiAgICAgIGVuZFxuICBsZXQgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbl9vZl9qc29vXG4gICAgKGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gOiBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQpIDpcbiAgICBBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi50ID1cbiAgICB7XG4gICAgICBwZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfZXN0X3BhcmVudF9pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luXG4gICAgICAgICAgIyMucGVyc29ubmVDaGFyZ2VFZmZlY3RpdmVQZXJtYW5lbnRlRXN0UGFyZW50SW47XG4gICAgICBwZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfcmVtcGxpdF90aXRyZV9JX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgICAgICAgICAjIy5wZXJzb25uZUNoYXJnZUVmZmVjdGl2ZVBlcm1hbmVudGVSZW1wbGl0VGl0cmVJSW47XG4gICAgICByZXNzb3VyY2VzX21lbmFnZV9pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIyMucmVzc291cmNlc01lbmFnZUluO1xuICAgICAgcmVzaWRlbmNlX2luID1cbiAgICAgICAgY29sbGVjdGl2aXRlX29mX2pzb28gYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiMjLnJlc2lkZW5jZUluO1xuICAgICAgZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvbyBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICBlbmZhbnRzX2FfY2hhcmdlX2luID1cbiAgICAgICAgQXJyYXkubWFwIChmdW4geCAtPiBlbmZhbnRfb2ZfanNvbyB4KSBAQCBKcy50b19hcnJheVxuICAgICAgICAgIGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4jIy5lbmZhbnRzQUNoYXJnZUluO1xuICAgICAgYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiMjLmF2YWl0RW5mYW50QUNoYXJnZUF2YW50MWVySmFudmllcjIwMTJJblxuICAgIH1cblxuY2xhc3MgdHlwZSB2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2FfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgZGF0ZU5haXNzYW5jZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGFubmVlc0luOiBSdW50aW1lX2pzb28uUnVudGltZS5kdXJhdGlvbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCB2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2FfaW5fdG9fanNvb1xuICAgICh2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2FfaW5cbiAgICA6IFZlcmlmaWNhdGlvbkFnZUluZmVyaWV1ck91RWdhbEFJbi50KVxuICAgIDogdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGRhdGVOYWlzc2FuY2VJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyB2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2FfaW4uZGF0ZV9uYWlzc2FuY2VfaW5cbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyB2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2FfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIGFubmVlc0luID1cbiAgICAgICAgZHVyYXRpb25fdG9fanNvbyB2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2FfaW4uYW5uZWVzX2luXG4gICAgICBlbmRcbiAgbGV0IHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYV9pbl9vZl9qc29vXG4gICAgKHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYV9pblxuICAgICAgOiB2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2FfaW4gSnMudCkgOlxuICAgIFZlcmlmaWNhdGlvbkFnZUluZmVyaWV1ck91RWdhbEFJbi50ID1cbiAgICB7XG4gICAgICBkYXRlX25haXNzYW5jZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvb1xuICAgICAgICAgIHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYV9pbiMjLmRhdGVOYWlzc2FuY2VJbjtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb28gdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hX2luIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICBhbm5lZXNfaW4gPVxuICAgICAgICBkdXJhdGlvbl9vZl9qc29vIHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYV9pbiMjLmFubmVlc0luXG4gICAgfVxuXG5jbGFzcyB0eXBlIHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgZGF0ZU5haXNzYW5jZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGFubmVlc0luOiBSdW50aW1lX2pzb28uUnVudGltZS5kdXJhdGlvbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCB2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX2luX3RvX2pzb29cbiAgICAodmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYV9pbiA6IFZlcmlmaWNhdGlvbkFnZVN1cGVyaWV1ckFJbi50KVxuICAgIDogdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYV9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBkYXRlTmFpc3NhbmNlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYV9pbi5kYXRlX25haXNzYW5jZV9pblxuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIGFubmVlc0luID1cbiAgICAgICAgZHVyYXRpb25fdG9fanNvbyB2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX2luLmFubmVlc19pblxuICAgICAgZW5kXG4gIGxldCB2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX2luX29mX2pzb29cbiAgICAodmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYV9pbiA6IHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfaW4gSnMudCkgOlxuICAgIFZlcmlmaWNhdGlvbkFnZVN1cGVyaWV1ckFJbi50ID1cbiAgICB7XG4gICAgICBkYXRlX25haXNzYW5jZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvbyB2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX2luIyMuZGF0ZU5haXNzYW5jZUluO1xuICAgICAgZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvbyB2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX2luIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICBhbm5lZXNfaW4gPSBkdXJhdGlvbl9vZl9qc29vIHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfaW4jIy5hbm5lZXNJblxuICAgIH1cblxuY2xhc3MgdHlwZSBzbWljX2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlc2lkZW5jZUluOiBjb2xsZWN0aXZpdGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgc21pY19pbl90b19qc29vIChzbWljX2luIDogU21pY0luLnQpIDogc21pY19pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9IGRhdGVfdG9fanNvbyBzbWljX2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIHZhbCByZXNpZGVuY2VJbiA9IGNvbGxlY3Rpdml0ZV90b19qc29vIHNtaWNfaW4ucmVzaWRlbmNlX2luXG4gICAgICBlbmRcbiAgbGV0IHNtaWNfaW5fb2ZfanNvbyAoc21pY19pbiA6IHNtaWNfaW4gSnMudCkgOiBTbWljSW4udCA9XG4gICAge1xuICAgICAgZGF0ZV9jb3VyYW50ZV9pbiA9IGRhdGVfb2ZfanNvbyBzbWljX2luIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICByZXNpZGVuY2VfaW4gPSBjb2xsZWN0aXZpdGVfb2ZfanNvbyBzbWljX2luIyMucmVzaWRlbmNlSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiA9XG4gIG9iamVjdCBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luX3RvX2pzb29cbiAgICAoYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pblxuICAgIDogQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnQpXG4gICAgOiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgZW5kXG4gIGxldCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luX29mX2pzb29cbiAgICAoYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pblxuICAgICAgOiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQpIDpcbiAgICBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udCA9XG4gICAge1xuICAgICAgZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvb1xuICAgICAgICAgIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4jIy5kYXRlQ291cmFudGVJblxuICAgIH1cblxuY2xhc3MgdHlwZSBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBpRGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgaUVuZmFudHNJbjogZW5mYW50X2VudHJlZSBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBpUmVzc291cmNlc01lbmFnZUluOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGlSZXNpZGVuY2VJbjogY29sbGVjdGl2aXRlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBpUGVyc29ubmVDaGFyZ2VFZmZlY3RpdmVQZXJtYW5lbnRlRXN0UGFyZW50SW46XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBpUGVyc29ubmVDaGFyZ2VFZmZlY3RpdmVQZXJtYW5lbnRlUmVtcGxpdFRpdHJlSUluOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgaUF2YWl0RW5mYW50QUNoYXJnZUF2YW50MWVySmFudmllcjIwMTJJbjpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5fdG9fanNvb1xuICAgIChpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pblxuICAgIDogSW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udClcbiAgICA6IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGlEYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5pX2RhdGVfY291cmFudGVfaW5cbiAgICAgIHZhbCBpRW5mYW50c0luID1cbiAgICAgICAgSnMuYXJyYXkgQEAgQXJyYXkubWFwIChmdW4geCAtPiBlbmZhbnRfZW50cmVlX3RvX2pzb28geCkgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uaV9lbmZhbnRzX2luXG4gICAgICB2YWwgaVJlc3NvdXJjZXNNZW5hZ2VJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5pX3Jlc3NvdXJjZXNfbWVuYWdlX2luXG4gICAgICB2YWwgaVJlc2lkZW5jZUluID1cbiAgICAgICAgY29sbGVjdGl2aXRlX3RvX2pzb28gaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4uaV9yZXNpZGVuY2VfaW5cbiAgICAgIHZhbCBpUGVyc29ubmVDaGFyZ2VFZmZlY3RpdmVQZXJtYW5lbnRlRXN0UGFyZW50SW4gPVxuICAgICAgICBKcy5ib29sIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLmlfcGVyc29ubmVfY2hhcmdlX2VmZmVjdGl2ZV9wZXJtYW5lbnRlX2VzdF9wYXJlbnRfaW5cbiAgICAgIHZhbCBpUGVyc29ubmVDaGFyZ2VFZmZlY3RpdmVQZXJtYW5lbnRlUmVtcGxpdFRpdHJlSUluID1cbiAgICAgICAgSnMuYm9vbCBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5pX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9yZW1wbGl0X3RpdHJlX0lfaW5cbiAgICAgIHZhbCBpQXZhaXRFbmZhbnRBQ2hhcmdlQXZhbnQxZXJKYW52aWVyMjAxMkluID1cbiAgICAgICAgSnMuYm9vbCBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5pX2F2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZXJfamFudmllcl8yMDEyX2luXG4gICAgICBlbmRcbiAgbGV0IGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luX29mX2pzb29cbiAgICAoaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgICAgIDogaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudCkgOlxuICAgIEludGVyZmFjZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnQgPVxuICAgIHtcbiAgICAgIGlfZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvbyBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiMjLmlEYXRlQ291cmFudGVJbjtcbiAgICAgIGlfZW5mYW50c19pbiA9XG4gICAgICAgIEFycmF5Lm1hcCAoZnVuIHggLT4gZW5mYW50X2VudHJlZV9vZl9qc29vIHgpIEBAIEpzLnRvX2FycmF5XG4gICAgICAgICAgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4jIy5pRW5mYW50c0luO1xuICAgICAgaV9yZXNzb3VyY2VzX21lbmFnZV9pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiMjLmlSZXNzb3VyY2VzTWVuYWdlSW47XG4gICAgICBpX3Jlc2lkZW5jZV9pbiA9XG4gICAgICAgIGNvbGxlY3Rpdml0ZV9vZl9qc29vXG4gICAgICAgICAgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4jIy5pUmVzaWRlbmNlSW47XG4gICAgICBpX3BlcnNvbm5lX2NoYXJnZV9lZmZlY3RpdmVfcGVybWFuZW50ZV9lc3RfcGFyZW50X2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luXG4gICAgICAgICAgIyMuaVBlcnNvbm5lQ2hhcmdlRWZmZWN0aXZlUGVybWFuZW50ZUVzdFBhcmVudEluO1xuICAgICAgaV9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm1hbmVudGVfcmVtcGxpdF90aXRyZV9JX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luXG4gICAgICAgICAgIyMuaVBlcnNvbm5lQ2hhcmdlRWZmZWN0aXZlUGVybWFuZW50ZVJlbXBsaXRUaXRyZUlJbjtcbiAgICAgIGlfYXZhaXRfZW5mYW50X2FfY2hhcmdlX2F2YW50XzFlcl9qYW52aWVyXzIwMTJfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgICAgICAgICAjIy5pQXZhaXRFbmZhbnRBQ2hhcmdlQXZhbnQxZXJKYW52aWVyMjAxMkluXG4gICAgfVxuXG5cblxuXG5sZXQgYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOFxuICAoYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOF9pbiA6IGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfaW4gSnMudClcbiAgOiBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4IEpzLnQgPVxuICBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4X2luXG4gIHw+IGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfaW5fb2ZfanNvb1xuICB8PiBhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4XG4gIHw+IGFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMDhfdG9fanNvb1xuXG5cbmxldCBlbmZhbnRfbGVfcGx1c19hZ2UgKGVuZmFudF9sZV9wbHVzX2FnZV9pbiA6IGVuZmFudF9sZV9wbHVzX2FnZV9pbiBKcy50KVxuICA6IGVuZmFudF9sZV9wbHVzX2FnZSBKcy50ID1cbiAgZW5mYW50X2xlX3BsdXNfYWdlX2luXG4gIHw+IGVuZmFudF9sZV9wbHVzX2FnZV9pbl9vZl9qc29vXG4gIHw+IGVuZmFudF9sZV9wbHVzX2FnZVxuICB8PiBlbmZhbnRfbGVfcGx1c19hZ2VfdG9fanNvb1xuXG5cbmxldCB2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2FcbiAgKHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYV9pbiA6IHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYV9pbiBKcy50KVxuICA6IHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYSBKcy50ID1cbiAgdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hX2luXG4gIHw+IHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYV9pbl9vZl9qc29vXG4gIHw+IHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYVxuICB8PiB2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2FfdG9fanNvb1xuXG5cbmxldCB2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hXG4gICh2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX2luIDogdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYV9pbiBKcy50KVxuICA6IHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2EgSnMudCA9XG4gIHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfaW5cbiAgfD4gdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYV9pbl9vZl9qc29vXG4gIHw+IHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FcbiAgfD4gdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYV90b19qc29vXG5cblxubGV0IHNtaWMgKHNtaWNfaW4gOiBzbWljX2luIEpzLnQpXG4gIDogc21pYyBKcy50ID1cbiAgc21pY19pbiB8PiBzbWljX2luX29mX2pzb28gfD4gc21pYyB8PiBzbWljX3RvX2pzb29cblxuXG5sZXQgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICAoYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiA6IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudClcbiAgOiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIEpzLnQgPVxuICBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luXG4gIHw+IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5fb2ZfanNvb1xuICB8PiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gIHw+IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvb1xuXG5cbmxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzXG4gIChwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIDogcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50KVxuICA6IHByZXN0YXRpb25zX2ZhbWlsaWFsZXMgSnMudCA9XG4gIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgfD4gcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbl9vZl9qc29vXG4gIHw+IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNcbiAgfD4gcHJlc3RhdGlvbnNfZmFtaWxpYWxlc190b19qc29vXG5cblxubGV0IGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgKGFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gOiBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQpXG4gIDogYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyBKcy50ID1cbiAgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pblxuICB8PiBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luX29mX2pzb29cbiAgfD4gYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICB8PiBhbGxvY2F0aW9uc19mYW1pbGlhbGVzX3RvX2pzb29cblxuXG5sZXQgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgKGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIDogaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudClcbiAgOiBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyBKcy50ID1cbiAgaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgfD4gaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5fb2ZfanNvb1xuICB8PiBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICB8PiBpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc190b19qc29vXG5cblxubGV0IF8gPVxuICAgSnMuZXhwb3J0IFwiQWxsb2NhdGlvbnNGYW1pbGlhbGVzTGliXCJcbiAgICAob2JqZWN0JWpzXG4gICAgICBcbiAgICAgIG1ldGhvZCBhbGxvY2F0aW9uRmFtaWxpYWxlc0F2cmlsMjAwOCA6IChhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDA4X2luIEpzLnQgLT4gYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOCBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwOFxuICAgICAgXG4gICAgICBtZXRob2QgZW5mYW50TGVQbHVzQWdlIDogKGVuZmFudF9sZV9wbHVzX2FnZV9pbiBKcy50IC0+IGVuZmFudF9sZV9wbHVzX2FnZSBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgZW5mYW50X2xlX3BsdXNfYWdlXG4gICAgICBcbiAgICAgIG1ldGhvZCB2ZXJpZmljYXRpb25BZ2VJbmZlcmlldXJPdUVnYWxBIDogKHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYV9pbiBKcy50IC0+IHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYSBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hXG4gICAgICBcbiAgICAgIG1ldGhvZCB2ZXJpZmljYXRpb25BZ2VTdXBlcmlldXJBIDogKHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfaW4gSnMudCAtPiB2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hIEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayB2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hXG4gICAgICBcbiAgICAgIG1ldGhvZCBzbWljIDogKHNtaWNfaW4gSnMudCAtPiBzbWljIEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBzbWljXG4gICAgICBcbiAgICAgIG1ldGhvZCBiYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzIDogKGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudCAtPiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gICAgICBcbiAgICAgIG1ldGhvZCBwcmVzdGF0aW9uc0ZhbWlsaWFsZXMgOiAocHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50IC0+IHByZXN0YXRpb25zX2ZhbWlsaWFsZXMgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNcbiAgICAgIFxuICAgICAgbWV0aG9kIGFsbG9jYXRpb25zRmFtaWxpYWxlcyA6IChhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQgLT4gYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICAgICAgXG4gICAgICBtZXRob2QgaW50ZXJmYWNlQWxsb2NhdGlvbnNGYW1pbGlhbGVzIDogKGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQgLT4gaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gICAgICBcbiAgICBlbmQpIiwiKCoqIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgdGhlIENhdGFsYSBjb21waWxlciwgZG8gbm90IGVkaXQhICopXG5cbm9wZW4gUnVudGltZV9vY2FtbC5SdW50aW1lXG5cbltAQEBvY2FtbC53YXJuaW5nIFwiLTQtMjYtMjctMzItNDEtNDJcIl1cblxubW9kdWxlIFR5cGVQcmV0ID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IEQzMzFfMzIgb2YgdW5pdFxuICAgIHwgRDMzMV82M182NCBvZiB1bml0XG4gICAgfCBEMzMxXzU5Xzggb2YgdW5pdFxuICAgIHwgRDMzMV83Nl8xIG9mIHVuaXRcbiAgICB8IEF1dHJlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfdHlwZV9wcmV0ICh4OiBUeXBlUHJldC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlR5cGVQcsOqdFwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBEMzMxXzMyIHggLT4gKFwiRDMzMV8zMlwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBEMzMxXzYzXzY0IHggLT4gKFwiRDMzMV82M182NFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBEMzMxXzU5XzggeCAtPiAoXCJEMzMxXzU5XzhcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgRDMzMV83Nl8xIHggLT4gKFwiRDMzMV83Nl8xXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEF1dHJlIHggLT4gKFwiQXV0cmVcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgVGl0dWxhaXJlUHJldCA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBEZW1hbmRldXIgb2YgdW5pdFxuICAgIHwgVmVuZGV1clF1YW5kRGVtYW5kZXVyQUNvbnRyYXRMb2NhdGlvbkFjY2Vzc2lvbiBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX3RpdHVsYWlyZV9wcmV0ICh4OiBUaXR1bGFpcmVQcmV0LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiVGl0dWxhaXJlUHLDqnRcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgRGVtYW5kZXVyIHggLT4gKFwiRGVtYW5kZXVyXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFZlbmRldXJRdWFuZERlbWFuZGV1ckFDb250cmF0TG9jYXRpb25BY2Nlc3Npb24geCAtPlxuICAgICAgKFwiVmVuZGV1clF1YW5kRGVtYW5kZXVyQUNvbnRyYXRMb2NhdGlvbkFjY2Vzc2lvblwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1ID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IFRyYXZhdXhQb3VyQWNxdWlzaXRpb25EODMyXzE1XzEgb2YgdW5pdFxuICAgIHwgVHJhdmF1eFN1ckxvZ2VtZW50RGVqYUFjcXVpc0Q4MzJfMTVfMiBvZiB1bml0XG4gICAgfCBQYXNEZVRyYXZhdXggb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF90eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNSAoeDogVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS50KVxuICA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlR5cGVUcmF2YXV4TG9nZW1lbnREODMyXzE1XCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IFRyYXZhdXhQb3VyQWNxdWlzaXRpb25EODMyXzE1XzEgeCAtPlxuICAgICAgKFwiVHJhdmF1eFBvdXJBY3F1aXNpdGlvbkQ4MzJfMTVfMVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBUcmF2YXV4U3VyTG9nZW1lbnREZWphQWNxdWlzRDgzMl8xNV8yIHggLT5cbiAgICAgIChcIlRyYXZhdXhTdXJMb2dlbWVudETDqWrDoEFjcXVpc0Q4MzJfMTVfMlwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBQYXNEZVRyYXZhdXggeCAtPiAoXCJQYXNEZVRyYXZhdXhcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1ID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IE9iamVjdGlmRGVjZW5jZUxvZ2VtZW50IG9mIHVuaXRcbiAgICB8IFByZXZ1RGFuc0xpc3RlUjMyMV8xNSBvZiB1bml0XG4gICAgfCBBZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82MyBvZiB1bml0XG4gICAgfCBQYXNEZVRyYXZhdXggb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF90eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81ICh4OiBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUudClcbiAgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJUeXBlVHJhdmF1eExvZ2VtZW50Ujg0Ml81XCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IE9iamVjdGlmRGVjZW5jZUxvZ2VtZW50IHggLT4gKFwiT2JqZWN0aWZEw6ljZW5jZUxvZ2VtZW50XCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFByZXZ1RGFuc0xpc3RlUjMyMV8xNSB4IC0+IChcIlByw6l2dURhbnNMaXN0ZVIzMjFfMTVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgeCAtPlxuICAgICAgKFwiQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjNcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgUGFzRGVUcmF2YXV4IHggLT4gKFwiUGFzRGVUcmF2YXV4XCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIEFtZWxpb3JlUGFyT2NjdXBhbnQgPSBzdHJ1Y3RcbiB0eXBlIHQgPVxuICAgIHwgT3VpIG9mIHVuaXRcbiAgICB8IE5vbiBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX2FtZWxpb3JlX3Bhcl9vY2N1cGFudCAoeDogQW1lbGlvcmVQYXJPY2N1cGFudC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIkFtw6lsaW9yw6lQYXJPY2N1cGFudFwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBPdWkgeCAtPiAoXCJPdWlcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgTm9uIHggLT4gKFwiTm9uXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIExpbWl0ZVRyYW5jaGUgPSBzdHJ1Y3RcbiB0eXBlIHQgPVxuICAgIHwgUmV2ZW51IG9mIG1vbmV5XG4gICAgfCBJbmZpbmkgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9saW1pdGVfdHJhbmNoZSAoeDogTGltaXRlVHJhbmNoZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIkxpbWl0ZVRyYW5jaGVcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgUmV2ZW51IHggLT4gKFwiUmV2ZW51XCIsIGVtYmVkX21vbmV5IHgpXG4gICAgfCBJbmZpbmkgeCAtPiAoXCJJbmZpbmlcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgTGltaXRlVHJhbmNoZURlY2ltYWwgPSBzdHJ1Y3RcbiB0eXBlIHQgPVxuICAgIHwgUmV2ZW51IG9mIGRlY2ltYWxcbiAgICB8IEluZmluaSBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX2xpbWl0ZV90cmFuY2hlX2RlY2ltYWwgKHg6IExpbWl0ZVRyYW5jaGVEZWNpbWFsLnQpXG4gIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiTGltaXRlVHJhbmNoZUTDqWNpbWFsXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IFJldmVudSB4IC0+IChcIlJldmVudVwiLCBlbWJlZF9kZWNpbWFsIHgpXG4gICAgfCBJbmZpbmkgeCAtPiAoXCJJbmZpbmlcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgUHJlc3RhdGlvblJlY3VlID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IEFsbG9jYXRpb25zRmFtaWxpYWxlcyBvZiB1bml0XG4gICAgfCBDb21wbGVtZW50RmFtaWxpYWwgb2YgdW5pdFxuICAgIHwgQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbCBvZiB1bml0XG4gICAgfCBBbGxvY2F0aW9uU291dGllbkVuZmFudEhhbmRpY2FwZSBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX3ByZXN0YXRpb25fcmVjdWUgKHg6IFByZXN0YXRpb25SZWN1ZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlByZXN0YXRpb25SZcOndWVcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgQWxsb2NhdGlvbnNGYW1pbGlhbGVzIHggLT4gKFwiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IENvbXBsZW1lbnRGYW1pbGlhbCB4IC0+IChcIkNvbXBsw6ltZW50RmFtaWxpYWxcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbCB4IC0+XG4gICAgICAoXCJBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25Tb3V0aWVuRW5mYW50SGFuZGljYXBlIHggLT5cbiAgICAgIChcIkFsbG9jYXRpb25Tb3V0aWVuRW5mYW50SGFuZGljYXDDqVwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBQYXJlbnRPdUF1dHJlID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IERlbWFuZGV1ck91Q29uam9pbnRPdVBhcmVudE91VmlhUGFydHNTb2NpZXRlcyBvZiBkZWNpbWFsXG4gICAgfCBBdXRyZSBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX3BhcmVudF9vdV9hdXRyZSAoeDogUGFyZW50T3VBdXRyZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlBhcmVudE91QXV0cmVcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgRGVtYW5kZXVyT3VDb25qb2ludE91UGFyZW50T3VWaWFQYXJ0c1NvY2lldGVzIHggLT5cbiAgICAgIChcIkRlbWFuZGV1ck91Q29uam9pbnRPdVBhcmVudE91VmlhUGFydHNTb2Npw6l0w6lzXCIsIGVtYmVkX2RlY2ltYWwgeClcbiAgICB8IEF1dHJlIHggLT4gKFwiQXV0cmVcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgU2l0dWF0aW9uR2FyZGVBbHRlcm5lZSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBQYXNEZUdhcmRlQWx0ZXJuZWUgb2YgdW5pdFxuICAgIHwgR2FyZGVBbHRlcm5lZUNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZSBvZiBkZWNpbWFsXG4gIGVuZFxubGV0IGVtYmVkX3NpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSAoeDogU2l0dWF0aW9uR2FyZGVBbHRlcm5lZS50KVxuICA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlNpdHVhdGlvbkdhcmRlQWx0ZXJuw6llXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IFBhc0RlR2FyZGVBbHRlcm5lZSB4IC0+IChcIlBhc0RlR2FyZGVBbHRlcm7DqWVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgR2FyZGVBbHRlcm5lZUNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZSB4IC0+XG4gICAgICAoXCJHYXJkZUFsdGVybsOpZUNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZVwiLCBlbWJlZF9kZWNpbWFsIHgpKVxuXG5cbm1vZHVsZSBQYXJlbnRlID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IEFzY2VuZGFudCBvZiB1bml0XG4gICAgfCBEZXNjZW5kYW50IG9mIHVuaXRcbiAgICB8IENvbGxhdGVyYWxEZXV4aWVtZVRyb2lzaWVtZURlZ3JlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfcGFyZW50ZSAoeDogUGFyZW50ZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlBhcmVudMOpXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IEFzY2VuZGFudCB4IC0+IChcIkFzY2VuZGFudFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBEZXNjZW5kYW50IHggLT4gKFwiRGVzY2VuZGFudFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBDb2xsYXRlcmFsRGV1eGllbWVUcm9pc2llbWVEZWdyZSB4IC0+XG4gICAgICAoXCJDb2xsYXTDqXJhbERldXhpw6htZVRyb2lzacOobWVEZWdyw6lcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgRGF0ZURlTmFpc3NhbmNlT3VNb2lzRGVHcm9zc2Vzc2UgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgRGF0ZURlTmFpc3NhbmNlIG9mIGRhdGVcbiAgICB8IEF2YW50UHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2llbWVNb2lzRGVHcm9zc2Vzc2Ugb2YgdW5pdFxuICAgIHwgQXByZXNQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzaWVtZU1vaXNEZUdyb3NzZXNzZSBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX2RhdGVfZGVfbmFpc3NhbmNlX291X21vaXNfZGVfZ3Jvc3Nlc3NlXG4gICh4OiBEYXRlRGVOYWlzc2FuY2VPdU1vaXNEZUdyb3NzZXNzZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIkRhdGVEZU5haXNzYW5jZU91TW9pc0RlR3Jvc3Nlc3NlXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IERhdGVEZU5haXNzYW5jZSB4IC0+IChcIkRhdGVEZU5haXNzYW5jZVwiLCBlbWJlZF9kYXRlIHgpXG4gICAgfCBBdmFudFByZW1pZXJKb3VyTW9pc0NpdmlsVHJvaXNpZW1lTW9pc0RlR3Jvc3Nlc3NlIHggLT5cbiAgICAgIChcIkF2YW50UHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2nDqG1lTW9pc0RlR3Jvc3Nlc3NlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFwcmVzUHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2llbWVNb2lzRGVHcm9zc2Vzc2UgeCAtPlxuICAgICAgKFwiQXByw6hzUHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2nDqG1lTW9pc0RlR3Jvc3Nlc3NlXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIFpvbmVESGFiaXRhdGlvbiA9IHN0cnVjdFxuIHR5cGUgdCA9XG4gICAgfCBab25lMSBvZiB1bml0XG4gICAgfCBab25lMiBvZiB1bml0XG4gICAgfCBab25lMyBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uICh4OiBab25lREhhYml0YXRpb24udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJab25lREhhYml0YXRpb25cIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgWm9uZTEgeCAtPiAoXCJab25lMVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBab25lMiB4IC0+IChcIlpvbmUyXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFpvbmUzIHggLT4gKFwiWm9uZTNcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgVmVyc2VtZW50QSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBCYWlsbGV1ciBvZiB1bml0XG4gICAgfCBCZW5lZmljaWFpcmUgb2YgdW5pdFxuICAgIHwgRXRhYmxpc3NlbWVudEhhYmlsaXRlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfdmVyc2VtZW50X2EgKHg6IFZlcnNlbWVudEEudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJWZXJzZW1lbnTDgFwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBCYWlsbGV1ciB4IC0+IChcIkJhaWxsZXVyXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEJlbmVmaWNpYWlyZSB4IC0+IChcIkLDqW7DqWZpY2lhaXJlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEV0YWJsaXNzZW1lbnRIYWJpbGl0ZSB4IC0+IChcIsOJdGFibGlzc2VtZW50SGFiaWxpdMOpXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIERlcGVuc2VMb2dlbWVudCA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBUb3RhbEFubnVlbEVjaGVhbmNlcyBvZiBtb25leVxuICAgIHwgTWVuc3VhbGl0ZSBvZiBtb25leVxuICAgIHwgTG95ZXIgb2YgbW9uZXlcbiAgZW5kXG5sZXQgZW1iZWRfZGVwZW5zZV9sb2dlbWVudCAoeDogRGVwZW5zZUxvZ2VtZW50LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiRMOpcGVuc2VMb2dlbWVudFwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBUb3RhbEFubnVlbEVjaGVhbmNlcyB4IC0+IChcIlRvdGFsQW5udWVsw4ljaMOpYW5jZXNcIiwgZW1iZWRfbW9uZXkgeClcbiAgICB8IE1lbnN1YWxpdGUgeCAtPiAoXCJNZW5zdWFsaXTDqVwiLCBlbWJlZF9tb25leSB4KVxuICAgIHwgTG95ZXIgeCAtPiAoXCJMb3llclwiLCBlbWJlZF9tb25leSB4KSlcblxuXG5tb2R1bGUgTW9kZU9jY3VwYXRpb25JbXBheWUgPSBzdHJ1Y3RcbiB0eXBlIHQgPVxuICAgIHwgSW1wYXllTG95ZXIgb2YgdW5pdFxuICAgIHwgSW1wYXllUHJldCBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX21vZGVfb2NjdXBhdGlvbl9pbXBheWUgKHg6IE1vZGVPY2N1cGF0aW9uSW1wYXllLnQpXG4gIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiTW9kZU9jY3VwYXRpb25JbXBhecOpXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IEltcGF5ZUxveWVyIHggLT4gKFwiSW1wYXnDqUxveWVyXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEltcGF5ZVByZXQgeCAtPiAoXCJJbXBhecOpUHLDqnRcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50ID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IFBhc0VsaWdpYmxlIG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZSBvZiB1bml0XG4gICAgfCBBbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfdHlwZV9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50XG4gICh4OiBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJUeXBlw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBQYXNFbGlnaWJsZSB4IC0+IChcIlBhc8OJbGlnaWJsZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGUgeCAtPlxuICAgICAgKFwiQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGUgeCAtPlxuICAgICAgKFwiQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZVwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBBY2NvcmRGaW5hbmNlbWVudFJlcHJlc2VudGFudEV0YXRPdXRyZU1lciA9IHN0cnVjdFxuIHR5cGUgdCA9XG4gICAgfCBBY2NvcmQgb2YgZGF0ZVxuICAgIHwgUGFzZEFjY29yZCBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX2FjY29yZF9maW5hbmNlbWVudF9yZXByZXNlbnRhbnRfZXRhdF9vdXRyZV9tZXJcbiAgKHg6IEFjY29yZEZpbmFuY2VtZW50UmVwcmVzZW50YW50RXRhdE91dHJlTWVyLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiQWNjb3JkRmluYW5jZW1lbnRSZXByw6lzZW50YW50w4l0YXRPdXRyZU1lclwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBBY2NvcmQgeCAtPiAoXCJBY2NvcmRcIiwgZW1iZWRfZGF0ZSB4KVxuICAgIHwgUGFzZEFjY29yZCB4IC0+IChcIlBhc2RBY2NvcmRcIiwgZW1iZWRfdW5pdCB4KSlcblxuXG5tb2R1bGUgVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudCA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50IG9mIHVuaXRcbiAgICB8IEFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZSBvZiB1bml0XG4gICAgfCBBbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCAoeDogVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50KVxuICA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudCB4IC0+XG4gICAgICAoXCJBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGUgeCAtPlxuICAgICAgKFwiQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGUgeCAtPlxuICAgICAgKFwiQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZVwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBTaXR1YXRpb25GYW1pbGlhbGUgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgQ2VsaWJhdGFpcmUgb2YgdW5pdFxuICAgIHwgTWFyaWVzIG9mIGRhdGVcbiAgICB8IFBhY3NlcyBvZiB1bml0XG4gICAgfCBDb25jdWJpbnMgb2YgdW5pdFxuICAgIHwgQ2VsaWJhdGFpcmVTZXBhcmVEZUZhaXQgb2YgdW5pdFxuICAgIHwgQ29uY3ViaW5hZ2VEb250U2VwYXJlRGVGYWl0IG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZSAoeDogU2l0dWF0aW9uRmFtaWxpYWxlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiU2l0dWF0aW9uRmFtaWxpYWxlXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IENlbGliYXRhaXJlIHggLT4gKFwiQ8OpbGliYXRhaXJlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IE1hcmllcyB4IC0+IChcIk1hcmnDqXNcIiwgZW1iZWRfZGF0ZSB4KVxuICAgIHwgUGFjc2VzIHggLT4gKFwiUGFjc8Opc1wiLCBlbWJlZF91bml0IHgpXG4gICAgfCBDb25jdWJpbnMgeCAtPiAoXCJDb25jdWJpbnNcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQ2VsaWJhdGFpcmVTZXBhcmVEZUZhaXQgeCAtPlxuICAgICAgKFwiQ8OpbGliYXRhaXJlU8OpcGFyw6lEZUZhaXRcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQ29uY3ViaW5hZ2VEb250U2VwYXJlRGVGYWl0IHggLT5cbiAgICAgIChcIkNvbmN1YmluYWdlRG9udFPDqXBhcsOpRGVGYWl0XCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIFR5cGVMb2dlbWVudEZveWVyID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IExvZ2VtZW50UGVyc29ubmVzQWdlZXNPdUhhbmRpY2FwZWVzIG9mIHVuaXRcbiAgICB8IFJlc2lkZW5jZVNvY2lhbGUgb2YgdW5pdFxuICAgIHwgRm95ZXJKZXVuZXNUcmF2YWlsbGV1cnNPdU1pZ3JhbnRzQ29udmVudGlvbm5lTDM1M18yQXZhbnQxOTk1IG9mIHVuaXRcbiAgICB8IEF1dHJlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfdHlwZV9sb2dlbWVudF9mb3llciAoeDogVHlwZUxvZ2VtZW50Rm95ZXIudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJUeXBlTG9nZW1lbnRGb3llclwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBMb2dlbWVudFBlcnNvbm5lc0FnZWVzT3VIYW5kaWNhcGVlcyB4IC0+XG4gICAgICAoXCJMb2dlbWVudFBlcnNvbm5lc8OCZ8OpZXNPdUhhbmRpY2Fww6llc1wiLCBlbWJlZF91bml0IHgpXG4gICAgfCBSZXNpZGVuY2VTb2NpYWxlIHggLT4gKFwiUsOpc2lkZW5jZVNvY2lhbGVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgRm95ZXJKZXVuZXNUcmF2YWlsbGV1cnNPdU1pZ3JhbnRzQ29udmVudGlvbm5lTDM1M18yQXZhbnQxOTk1IHggLT5cbiAgICAgIChcIkZveWVySmV1bmVzVHJhdmFpbGxldXJzT3VNaWdyYW50c0NvbnZlbnRpb25uw6lMMzUzXzJBdmFudDE5OTVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQXV0cmUgeCAtPiAoXCJBdXRyZVwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVMgb2YgdW5pdFxuICAgIHwgRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVNSZWhhYmlsaXRlZSBvZiB1bml0XG4gICAgfCBQZXJzb25uZXNBZ2Vlc1NlbG9uM0RlRDg0Ml8xNiBvZiB1bml0XG4gICAgfCBBdXRyZXNQZXJzb25uZXMgb2YgdW5pdFxuICBlbmRcbmxldCBlbWJlZF9jYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llclxuICAoeDogQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiQ2F0w6lnb3JpZcOJcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVMgeCAtPlxuICAgICAgKFwiw4l0dWRpYW50TG9nw6lFbkNoYW1icmVDUk9VU1wiLCBlbWJlZF91bml0IHgpXG4gICAgfCBFdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VU1JlaGFiaWxpdGVlIHggLT5cbiAgICAgIChcIsOJdHVkaWFudExvZ8OpRW5DaGFtYnJlQ1JPVVNSw6loYWJpbGl0w6llXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFBlcnNvbm5lc0FnZWVzU2Vsb24zRGVEODQyXzE2IHggLT5cbiAgICAgIChcIlBlcnNvbm5lc8OCZ8OpZXNTZWxvbjNEZUQ4NDJfMTZcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQXV0cmVzUGVyc29ubmVzIHggLT4gKFwiQXV0cmVzUGVyc29ubmVzXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTCA9IHN0cnVjdFxuIHR5cGUgdCA9XG4gICAgfCBQZXJzb25uZVNldWxlIG9mIHVuaXRcbiAgICB8IENvdXBsZSBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sICh4OiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudClcbiAgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUExcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgUGVyc29ubmVTZXVsZSB4IC0+IChcIlBlcnNvbm5lU2V1bGVcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgQ291cGxlIHggLT4gKFwiQ291cGxlXCIsIGVtYmVkX3VuaXQgeCkpXG5cblxubW9kdWxlIENvbGxlY3Rpdml0ZSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBHdWFkZWxvdXBlIG9mIHVuaXRcbiAgICB8IEd1eWFuZSBvZiB1bml0XG4gICAgfCBNYXJ0aW5pcXVlIG9mIHVuaXRcbiAgICB8IExhUmV1bmlvbiBvZiB1bml0XG4gICAgfCBTYWludEJhcnRoZWxlbXkgb2YgdW5pdFxuICAgIHwgU2FpbnRNYXJ0aW4gb2YgdW5pdFxuICAgIHwgTWV0cm9wb2xlIG9mIHVuaXRcbiAgICB8IFNhaW50UGllcnJlRXRNaXF1ZWxvbiBvZiB1bml0XG4gICAgfCBNYXlvdHRlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfY29sbGVjdGl2aXRlICh4OiBDb2xsZWN0aXZpdGUudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJDb2xsZWN0aXZpdMOpXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IEd1YWRlbG91cGUgeCAtPiAoXCJHdWFkZWxvdXBlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEd1eWFuZSB4IC0+IChcIkd1eWFuZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBNYXJ0aW5pcXVlIHggLT4gKFwiTWFydGluaXF1ZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBMYVJldW5pb24geCAtPiAoXCJMYVLDqXVuaW9uXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFNhaW50QmFydGhlbGVteSB4IC0+IChcIlNhaW50QmFydGjDqWxlbXlcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgU2FpbnRNYXJ0aW4geCAtPiAoXCJTYWludE1hcnRpblwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBNZXRyb3BvbGUgeCAtPiAoXCJNw6l0cm9wb2xlXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IFNhaW50UGllcnJlRXRNaXF1ZWxvbiB4IC0+IChcIlNhaW50UGllcnJlRXRNaXF1ZWxvblwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBNYXlvdHRlIHggLT4gKFwiTWF5b3R0ZVwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUgPSBzdHJ1Y3RcbiB0eXBlIHQgPVxuICAgIHwgQXZhbnQgb2YgdW5pdFxuICAgIHwgUGVuZGFudCBvZiB1bml0XG4gICAgfCBBcHJlcyBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX3NpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlICh4OiBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUudClcbiAgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmVcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgQXZhbnQgeCAtPiAoXCJBdmFudFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBQZW5kYW50IHggLT4gKFwiUGVuZGFudFwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBBcHJlcyB4IC0+IChcIkFwcsOoc1wiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBDb252ZW50aW9uQmFpbGxldXJTb2NpYWwgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGNvbnZlbnRpb25uZV9saXZyZV9JSUlfdGl0cmVfVl9jaGFwX0lJSTogYm9vbDtcbiAgICByZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9wZXJjdWU6IG1vbmV5XG4gIH1cbmVuZFxubGV0IGVtYmVkX2NvbnZlbnRpb25fYmFpbGxldXJfc29jaWFsICh4OiBDb252ZW50aW9uQmFpbGxldXJTb2NpYWwudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNvbnZlbnRpb25CYWlsbGV1clNvY2lhbFwiXSxcbiAgWyhcImNvbnZlbnRpb25uw6lfbGl2cmVfSUlJX3RpdHJlX1ZfY2hhcF9JSUlcIiwgZW1iZWRfYm9vbFxuICAgIHguQ29udmVudGlvbkJhaWxsZXVyU29jaWFsLmNvbnZlbnRpb25uZV9saXZyZV9JSUlfdGl0cmVfVl9jaGFwX0lJSSk7XG4gICAgKFwicsOpZHVjdGlvbl9sb3llcl9zb2xpZGFyaXTDqV9wZXLDp3VlXCIsIGVtYmVkX21vbmV5XG4gICAgeC5Db252ZW50aW9uQmFpbGxldXJTb2NpYWwucmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfcGVyY3VlKV0pXG5cblxubW9kdWxlIENvbnZlbnRpb25BTkhBID0gc3RydWN0XG4gIHR5cGUgdCA9IHtjb252ZW50aW9ubmVfbGl2cmVfSUlJX3RpdHJlX0lJX2NoYXBfSV9zZWNfMzogYm9vbH1cbmVuZFxubGV0IGVtYmVkX2NvbnZlbnRpb25fYV9uX2hfYSAoeDogQ29udmVudGlvbkFOSEEudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNvbnZlbnRpb25BTkhBXCJdLFxuICBbKFwiY29udmVudGlvbm7DqV9saXZyZV9JSUlfdGl0cmVfSUlfY2hhcF9JX3NlY18zXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNvbnZlbnRpb25BTkhBLmNvbnZlbnRpb25uZV9saXZyZV9JSUlfdGl0cmVfSUlfY2hhcF9JX3NlY18zKV0pXG5cblxubW9kdWxlIFBlcnNvbm5lU291c0xvY2F0aW9uID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBkYXRlX25haXNzYW5jZV9wZXJzb25uZV9zb3VzX2xvY2F0aW9uOiBkYXRlO1xuICAgIGNvbmZvcm1lX2FydGljbGVfbDQ0Ml8xOiBib29sXG4gIH1cbmVuZFxubGV0IGVtYmVkX3BlcnNvbm5lX3NvdXNfbG9jYXRpb24gKHg6IFBlcnNvbm5lU291c0xvY2F0aW9uLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJQZXJzb25uZVNvdXNMb2NhdGlvblwiXSxcbiAgWyhcImRhdGVfbmFpc3NhbmNlX3BlcnNvbm5lX3NvdXNfbG9jYXRpb25cIiwgZW1iZWRfZGF0ZVxuICAgIHguUGVyc29ubmVTb3VzTG9jYXRpb24uZGF0ZV9uYWlzc2FuY2VfcGVyc29ubmVfc291c19sb2NhdGlvbik7XG4gICAgKFwiY29uZm9ybWVfYXJ0aWNsZV9sNDQyXzFcIiwgZW1iZWRfYm9vbFxuICAgIHguUGVyc29ubmVTb3VzTG9jYXRpb24uY29uZm9ybWVfYXJ0aWNsZV9sNDQyXzEpXSlcblxuXG5tb2R1bGUgQ29uZGl0aW9uc0V0cmFuZ2VycyA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgc2F0aXNmYWl0X2NvbmRpdGlvbnNfbDUxMl8yX2NvZGVfc2VjdXJpdGVfc29jaWFsZTogYm9vbDtcbiAgICBzYXRpc2ZhaXRfYXJ0XzRfb3Jkb25uYW5jZV8yMDAyX21heW90dGU6IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY29uZGl0aW9uc19ldHJhbmdlcnMgKHg6IENvbmRpdGlvbnNFdHJhbmdlcnMudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNvbmRpdGlvbnPDiXRyYW5nZXJzXCJdLFxuICBbKFwic2F0aXNmYWl0X2NvbmRpdGlvbnNfbDUxMl8yX2NvZGVfc8OpY3VyaXTDqV9zb2NpYWxlXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNvbmRpdGlvbnNFdHJhbmdlcnMuc2F0aXNmYWl0X2NvbmRpdGlvbnNfbDUxMl8yX2NvZGVfc2VjdXJpdGVfc29jaWFsZSk7XG4gICAgKFwic2F0aXNmYWl0X2FydF80X29yZG9ubmFuY2VfMjAwMl9tYXlvdHRlXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNvbmRpdGlvbnNFdHJhbmdlcnMuc2F0aXNmYWl0X2FydF80X29yZG9ubmFuY2VfMjAwMl9tYXlvdHRlKV0pXG5cblxubW9kdWxlIEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgZGF0ZV9jb3VyYW50ZTogZGF0ZTtcbiAgICBlbGlnaWJpbGl0ZTogYm9vbDtcbiAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGU6IGludGVnZXI7XG4gICAgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZTogZGVjaW1hbCBhcnJheVxuICB9XG5lbmRcbmxldCBlbWJlZF9lbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQgKHg6IEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCJdLFxuICBbKFwiZGF0ZV9jb3VyYW50ZVwiLCBlbWJlZF9kYXRlXG4gICAgeC5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQuZGF0ZV9jb3VyYW50ZSk7XG4gICAgKFwiw6lsaWdpYmlsaXTDqVwiLCBlbWJlZF9ib29sXG4gICAgeC5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQuZWxpZ2liaWxpdGUpO1xuICAgIChcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVcIiwgZW1iZWRfaW50ZWdlclxuICAgIHguRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Lm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZSk7XG4gICAgKFwiY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm7DqWVfcHJpc19lbl9jb21wdGVcIixcbiAgICBlbWJlZF9hcnJheSAoZW1iZWRfZGVjaW1hbClcbiAgICB4LkVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlKV0pXG5cblxubW9kdWxlIEVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7ZWxpZ2liaWxpdGU6IGJvb2w7IG1vbnRhbnRfcHJpbWVfZGVtZW5hZ2VtZW50OiBtb25leX1cbmVuZFxubGV0IGVtYmVkX2VsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudCAoeDogRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50XCJdLFxuICBbKFwiw6lsaWdpYmlsaXTDqVwiLCBlbWJlZF9ib29sXG4gICAgeC5FbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnQuZWxpZ2liaWxpdGUpO1xuICAgIChcIm1vbnRhbnRfcHJpbWVfZMOpbcOpbmFnZW1lbnRcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudC5tb250YW50X3ByaW1lX2RlbWVuYWdlbWVudCldKVxuXG5cbm1vZHVsZSBDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge21vbnRhbnQ6IG1vbmV5IC0+IG1vbmV5fVxuZW5kXG5sZXQgZW1iZWRfY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCAoeDogQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl0sXG4gIFsoXCJtb250YW50XCIsIHVuZW1iZWRkYWJsZVxuICAgIHguQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50Lm1vbnRhbnQpXSlcblxuXG5tb2R1bGUgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2OiBtb25leTtcbiAgICBwbGFmb25kX2xveWVyX2Q4MjNfMTZfMjogbW9uZXk7XG4gICAgcGFydGljaXBhdGlvbl9taW5pbWFsZTogbW9uZXk7XG4gICAgdGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGU6IGRlY2ltYWw7XG4gICAgcGFydGljaXBhdGlvbl9wZXJzb25uZWxsZTogbW9uZXk7XG4gICAgYWlkZV9maW5hbGVfZm9ybXVsZTogbW9uZXk7XG4gICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZTogbW9uZXkgLT4gbW9uZXlcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmICh4OiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCJdLFxuICBbKFwibW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTZcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2KTtcbiAgICAoXCJwbGFmb25kX2xveWVyX2Q4MjNfMTZfMlwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYucGxhZm9uZF9sb3llcl9kODIzXzE2XzIpO1xuICAgIChcInBhcnRpY2lwYXRpb25fbWluaW1hbGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnBhcnRpY2lwYXRpb25fbWluaW1hbGUpO1xuICAgIChcInRhdXhfY29tcG9zaXRpb25fZmFtaWxpYWxlXCIsIGVtYmVkX2RlY2ltYWxcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnRhdXhfY29tcG9zaXRpb25fZmFtaWxpYWxlKTtcbiAgICAoXCJwYXJ0aWNpcGF0aW9uX3BlcnNvbm5lbGxlXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5wYXJ0aWNpcGF0aW9uX3BlcnNvbm5lbGxlKTtcbiAgICAoXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAoXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCIsIHVuZW1iZWRkYWJsZVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYudHJhaXRlbWVudF9haWRlX2ZpbmFsZSldKVxuXG5cbm1vZHVsZSBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge21vbnRhbnQ6IG1vbmV5fVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlICh4OiBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGUudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bMOJcXVpdmFsZW5jZUxveWVyTWluaW1hbGVcIl0sXG4gIFsoXCJtb250YW50XCIsIGVtYmVkX21vbmV5IHguQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlLm1vbnRhbnQpXSlcblxuXG5tb2R1bGUgQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge25fbm9tYnJlX3BhcnRzX2Q4MzJfMjU6IGRlY2ltYWx9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXIgKHg6IENhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llclwiXSxcbiAgWyhcIm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVcIiwgZW1iZWRfZGVjaW1hbFxuICAgIHguQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXIubl9ub21icmVfcGFydHNfZDgzMl8yNSldKVxuXG5cbm1vZHVsZSBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMjU6IG1vbmV5O1xuICAgIGNvZWZmaWNpZW50X3JfZDgzMl8yNTogbW9uZXk7XG4gICAgbl9ub21icmVfcGFydHNfZDgzMl8yNTogZGVjaW1hbDtcbiAgICBlcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZTogbW9uZXk7XG4gICAgcGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZTogbW9uZXk7XG4gICAgZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGU6IG1vbmV5O1xuICAgIGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1OiBkZWNpbWFsO1xuICAgIGFpZGVfZmluYWxlX2Zvcm11bGU6IG1vbmV5O1xuICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGU6IG1vbmV5IC0+IG1vbmV5XG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIgKHg6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiXSxcbiAgWyhcImNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMjVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzI1KTtcbiAgICAoXCJjb2VmZmljaWVudF9yX2Q4MzJfMjVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9yX2Q4MzJfMjUpO1xuICAgIChcIm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVcIiwgZW1iZWRfZGVjaW1hbFxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjUpO1xuICAgIChcIsOpcXVpdmFsZW5jZV9sb3llcl/DqWxpZ2libGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZSk7XG4gICAgKFwicGxhZm9uZF/DqXF1aXZhbGVuY2VfbG95ZXJfw6lsaWdpYmxlXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIucGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZSk7XG4gICAgKFwiw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUpO1xuICAgIChcImNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1XCIsIGVtYmVkX2RlY2ltYWxcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNSk7XG4gICAgKFwiYWlkZV9maW5hbGVfZm9ybXVsZVwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmFpZGVfZmluYWxlX2Zvcm11bGUpO1xuICAgIChcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIiwgdW5lbWJlZGRhYmxlXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIudHJhaXRlbWVudF9haWRlX2ZpbmFsZSldKVxuXG5cbm1vZHVsZSBDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7bl9ub21icmVfcGFydHNfZDgzMl8xMTogZGVjaW1hbH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZSAoeDogQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGUudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpw6l0w6lcIl0sXG4gIFsoXCJuX25vbWJyZV9wYXJ0c19kODMyXzExXCIsIGVtYmVkX2RlY2ltYWxcbiAgICB4LkNhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMTEpXSlcblxuXG5tb2R1bGUgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgbWVuc3VhbGl0ZV9lbGlnaWJsZTogbW9uZXk7XG4gICAgbWVuc3VhbGl0ZV9taW5pbWFsZTogbW9uZXk7XG4gICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTA6IGRlY2ltYWw7XG4gICAgYWlkZV9maW5hbGVfZm9ybXVsZTogbW9uZXk7XG4gICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZTogbW9uZXkgLT4gbW9uZXlcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlICh4OiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCJdLFxuICBbKFwibWVuc3VhbGl0w6lfw6lsaWdpYmxlXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLm1lbnN1YWxpdGVfZWxpZ2libGUpO1xuICAgIChcIm1lbnN1YWxpdMOpX21pbmltYWxlXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLm1lbnN1YWxpdGVfbWluaW1hbGUpO1xuICAgIChcImNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzEwXCIsIGVtYmVkX2RlY2ltYWxcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUuY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTApO1xuICAgIChcImFpZGVfZmluYWxlX2Zvcm11bGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgKFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudHJhaXRlbWVudF9haWRlX2ZpbmFsZSldKVxuXG5cbm1vZHVsZSBUcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGFpZGVfZmluYWxlX2Zvcm11bGU6IG1vbmV5O1xuICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGU6IG1vbmV5IC0+IG1vbmV5XG4gIH1cbmVuZFxubGV0IGVtYmVkX3RyYWl0ZW1lbnRfZm9ybXVsZV9haWRlX2ZpbmFsZSAoeDogVHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJUcmFpdGVtZW50X2Zvcm11bGVfYWlkZV9maW5hbGVcIl0sXG4gIFsoXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCIsIGVtYmVkX21vbmV5XG4gICAgeC5UcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgKFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiLCB1bmVtYmVkZGFibGVcbiAgICB4LlRyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS50cmFpdGVtZW50X2FpZGVfZmluYWxlKV0pXG5cblxubW9kdWxlIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGFpZGVfZmluYWxlX2Zvcm11bGU6IG1vbmV5O1xuICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGU6IG1vbmV5IC0+IG1vbmV5XG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQgKHg6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCJdLFxuICBbKFwiYWlkZV9maW5hbGVfZm9ybXVsZVwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudC5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAoXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCIsIHVuZW1iZWRkYWJsZVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudC50cmFpdGVtZW50X2FpZGVfZmluYWxlKV0pXG5cblxubW9kdWxlIEluZm9zQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGFuY2llbl9sb3llcl9wcmluY2lwYWw6IG1vbmV5O1xuICAgIGFuY2llbm5lX2FsbG9jYXRpb25fbG9nZW1lbnQ6IG1vbmV5XG4gIH1cbmVuZFxubGV0IGVtYmVkX2luZm9zX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80ICh4OiBJbmZvc0NoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJJbmZvc0NoYW5nZW1lbnRMb2dlbWVudEQ4NDJfNFwiXSxcbiAgWyhcImFuY2llbl9sb3llcl9wcmluY2lwYWxcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkluZm9zQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQuYW5jaWVuX2xveWVyX3ByaW5jaXBhbCk7XG4gICAgKFwiYW5jaWVubmVfYWxsb2NhdGlvbl9sb2dlbWVudFwiLCBlbWJlZF9tb25leVxuICAgIHguSW5mb3NDaGFuZ2VtZW50TG9nZW1lbnREODQyNC5hbmNpZW5uZV9hbGxvY2F0aW9uX2xvZ2VtZW50KV0pXG5cblxubW9kdWxlIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGFpZGVfZmluYWxlX2Zvcm11bGU6IG1vbmV5O1xuICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGU6IG1vbmV5IC0+IG1vbmV5O1xuICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2OiBtb25leTtcbiAgICBwbGFmb25kX2xveWVyX2Q4MjNfMTZfMjogbW9uZXk7XG4gICAgcGFydGljaXBhdGlvbl9taW5pbWFsZTogbW9uZXk7XG4gICAgdGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGU6IGRlY2ltYWw7XG4gICAgcGFydGljaXBhdGlvbl9wZXJzb25uZWxsZTogbW9uZXlcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZiAoeDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiXSxcbiAgWyhcImFpZGVfZmluYWxlX2Zvcm11bGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgKFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudHJhaXRlbWVudF9haWRlX2ZpbmFsZSk7XG4gICAgKFwibW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTZcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYubW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTYpO1xuICAgIChcInBsYWZvbmRfbG95ZXJfZDgyM18xNl8yXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLnBsYWZvbmRfbG95ZXJfZDgyM18xNl8yKTtcbiAgICAoXCJwYXJ0aWNpcGF0aW9uX21pbmltYWxlXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLnBhcnRpY2lwYXRpb25fbWluaW1hbGUpO1xuICAgIChcInRhdXhfY29tcG9zaXRpb25fZmFtaWxpYWxlXCIsIGVtYmVkX2RlY2ltYWxcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGUpO1xuICAgIChcInBhcnRpY2lwYXRpb25fcGVyc29ubmVsbGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYucGFydGljaXBhdGlvbl9wZXJzb25uZWxsZSldKVxuXG5cbm1vZHVsZSBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG1lbnN1YWxpdGVfZWxpZ2libGU6IG1vbmV5O1xuICAgIG1lbnN1YWxpdGVfbWluaW1hbGU6IG1vbmV5O1xuICAgIGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZTogZGVjaW1hbDtcbiAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlOiBtb25leTtcbiAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlOiBtb25leSAtPiBtb25leVxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlICh4OiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCJdLFxuICBbKFwibWVuc3VhbGl0w6lfw6lsaWdpYmxlXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUubWVuc3VhbGl0ZV9lbGlnaWJsZSk7XG4gICAgKFwibWVuc3VhbGl0w6lfbWluaW1hbGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS5tZW5zdWFsaXRlX21pbmltYWxlKTtcbiAgICAoXCJjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VcIiwgZW1iZWRfZGVjaW1hbFxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLmNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZSk7XG4gICAgKFwiYWlkZV9maW5hbGVfZm9ybXVsZVwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLmFpZGVfZmluYWxlX2Zvcm11bGUpO1xuICAgIChcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIiwgdW5lbWJlZGRhYmxlXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudHJhaXRlbWVudF9haWRlX2ZpbmFsZSldKVxuXG5cbm1vZHVsZSBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llciA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlOiBkZWNpbWFsO1xuICAgIGVxdWl2YWxlbmNlX2xveWVyOiBtb25leTtcbiAgICBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXM6IG1vbmV5O1xuICAgIGxveWVyX21pbmltYWw6IG1vbmV5O1xuICAgIGFpZGVfZmluYWxlX2Zvcm11bGU6IG1vbmV5O1xuICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGU6IG1vbmV5IC0+IG1vbmV5XG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyICh4OiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIl0sXG4gIFsoXCJjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VcIiwgZW1iZWRfZGVjaW1hbFxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlKTtcbiAgICAoXCLDqXF1aXZhbGVuY2VfbG95ZXJcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLmVxdWl2YWxlbmNlX2xveWVyKTtcbiAgICAoXCJtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlcyk7XG4gICAgKFwibG95ZXJfbWluaW1hbFwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIubG95ZXJfbWluaW1hbCk7XG4gICAgKFwiYWlkZV9maW5hbGVfZm9ybXVsZVwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgKFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUpXSlcblxuXG5tb2R1bGUgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlOiBtb25leTtcbiAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlOiBtb25leSAtPiBtb25leVxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudCAoeDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIl0sXG4gIFsoXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnQuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgKFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudC50cmFpdGVtZW50X2FpZGVfZmluYWxlKV0pXG5cblxubW9kdWxlIE91dmVydHVyZURyb2l0c1JldHJhaXRlID0gc3RydWN0XG4gIHR5cGUgdCA9IHthZ2Vfb3V2ZXJ0dXJlX2Ryb2l0OiBkdXJhdGlvbn1cbmVuZFxubGV0IGVtYmVkX291dmVydHVyZV9kcm9pdHNfcmV0cmFpdGUgKHg6IE91dmVydHVyZURyb2l0c1JldHJhaXRlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZVwiXSxcbiAgWyhcIsOiZ2Vfb3V2ZXJ0dXJlX2Ryb2l0XCIsIGVtYmVkX2R1cmF0aW9uXG4gICAgeC5PdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZS5hZ2Vfb3V2ZXJ0dXJlX2Ryb2l0KV0pXG5cblxubW9kdWxlIEltcGF5ZURlcGVuc2VMb2dlbWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7bW9udGFudF9pbXBheWU6IG1vbmV5fVxuZW5kXG5sZXQgZW1iZWRfaW1wYXllX2RlcGVuc2VfbG9nZW1lbnQgKHg6IEltcGF5ZURlcGVuc2VMb2dlbWVudC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiSW1wYXnDqUTDqXBlbnNlTG9nZW1lbnRcIl0sXG4gIFsoXCJtb250YW50X2ltcGF5w6lcIiwgZW1iZWRfbW9uZXkgeC5JbXBheWVEZXBlbnNlTG9nZW1lbnQubW9udGFudF9pbXBheWUpXSlcblxuXG5tb2R1bGUgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgZWxpZ2liaWxpdGU6IGJvb2w7XG4gICAgYWlkZV9maW5hbGVfZm9ybXVsZTogbW9uZXk7XG4gICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZTogbW9uZXkgLT4gbW9uZXk7XG4gICAgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZTogZGVjaW1hbCBhcnJheVxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50ICh4OiBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCJdLFxuICBbKFwiw6lsaWdpYmlsaXTDqVwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50LmVsaWdpYmlsaXRlKTtcbiAgICAoXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50LmFpZGVfZmluYWxlX2Zvcm11bGUpO1xuICAgIChcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIiwgdW5lbWJlZGRhYmxlXG4gICAgeC5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUpO1xuICAgIChcImNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuw6llX3ByaXNfZW5fY29tcHRlXCIsXG4gICAgZW1iZWRfYXJyYXkgKGVtYmVkX2RlY2ltYWwpXG4gICAgeC5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50LmNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGUpXSlcblxuXG5tb2R1bGUgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge2VsaWdpYmlsaXRlOiBib29sOyBhaWRlX2ZpbmFsZTogbW9uZXl9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlICh4OiBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCJdLFxuICBbKFwiw6lsaWdpYmlsaXTDqVwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZS5lbGlnaWJpbGl0ZSk7XG4gICAgKFwiYWlkZV9maW5hbGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlLmFpZGVfZmluYWxlKV0pXG5cblxubW9kdWxlIEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge21vbnRhbnQ6IG1vbmV5fVxuZW5kXG5sZXQgZW1iZWRfYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyAoeDogQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlcy50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc1wiXSxcbiAgWyhcIm1vbnRhbnRcIiwgZW1iZWRfbW9uZXkgeC5CYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLm1vbnRhbnQpXSlcblxuXG5tb2R1bGUgVmVyaWZpY2F0aW9uQWdlSW5mZXJpZXVyT3VFZ2FsQSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7ZXN0X2luZmVyaWV1cl9vdV9lZ2FsOiBib29sfVxuZW5kXG5sZXQgZW1iZWRfdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hICh4OiBWZXJpZmljYXRpb25BZ2VJbmZlcmlldXJPdUVnYWxBLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJWw6lyaWZpY2F0aW9uw4JnZUluZsOpcmlldXJPdcOJZ2Fsw4BcIl0sXG4gIFsoXCJlc3RfaW5mw6lyaWV1cl9vdV/DqWdhbFwiLCBlbWJlZF9ib29sXG4gICAgeC5WZXJpZmljYXRpb25BZ2VJbmZlcmlldXJPdUVnYWxBLmVzdF9pbmZlcmlldXJfb3VfZWdhbCldKVxuXG5cbm1vZHVsZSBWZXJpZmljYXRpb25BZ2VTdXBlcmlldXJBID0gc3RydWN0XG4gIHR5cGUgdCA9IHtlc3Rfc3VwZXJpZXVyOiBib29sfVxuZW5kXG5sZXQgZW1iZWRfdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYSAoeDogVmVyaWZpY2F0aW9uQWdlU3VwZXJpZXVyQS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiVsOpcmlmaWNhdGlvbsOCZ2VTdXDDqXJpZXVyw4BcIl0sXG4gIFsoXCJlc3Rfc3Vww6lyaWV1clwiLCBlbWJlZF9ib29sIHguVmVyaWZpY2F0aW9uQWdlU3VwZXJpZXVyQS5lc3Rfc3VwZXJpZXVyKV0pXG5cblxubW9kdWxlIFNtaWMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge2JydXRfaG9yYWlyZTogbW9uZXl9XG5lbmRcbmxldCBlbWJlZF9zbWljICh4OiBTbWljLnQpIDogcnVudGltZV92YWx1ZSA9IFN0cnVjdChbXCJTbWljXCJdLFxuICBbKFwiYnJ1dF9ob3JhaXJlXCIsIGVtYmVkX21vbmV5IHguU21pYy5icnV0X2hvcmFpcmUpXSlcblxuXG5tb2R1bGUgTmV1Zk91QW5jaWVuID0gc3RydWN0XG4gdHlwZSB0ID1cbiAgICB8IE5ldWYgb2YgdW5pdFxuICAgIHwgQW5jaWVuIG9mIEFtZWxpb3JlUGFyT2NjdXBhbnQudFxuICBlbmRcbmxldCBlbWJlZF9uZXVmX291X2FuY2llbiAoeDogTmV1Zk91QW5jaWVuLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiTmV1Zk91QW5jaWVuXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IE5ldWYgeCAtPiAoXCJOZXVmXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IEFuY2llbiB4IC0+IChcIkFuY2llblwiLCBlbWJlZF9hbWVsaW9yZV9wYXJfb2NjdXBhbnQgeCkpXG5cblxubW9kdWxlIFRyYW5jaGVSZXZlbnUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge2hhdXQ6IExpbWl0ZVRyYW5jaGUudDsgYmFzOiBtb25leTsgdGF1eDogZGVjaW1hbH1cbmVuZFxubGV0IGVtYmVkX3RyYW5jaGVfcmV2ZW51ICh4OiBUcmFuY2hlUmV2ZW51LnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJUcmFuY2hlUmV2ZW51XCJdLFxuICBbKFwiaGF1dFwiLCBlbWJlZF9saW1pdGVfdHJhbmNoZSB4LlRyYW5jaGVSZXZlbnUuaGF1dCk7XG4gICAgKFwiYmFzXCIsIGVtYmVkX21vbmV5IHguVHJhbmNoZVJldmVudS5iYXMpO1xuICAgIChcInRhdXhcIiwgZW1iZWRfZGVjaW1hbCB4LlRyYW5jaGVSZXZlbnUudGF1eCldKVxuXG5cbm1vZHVsZSBUcmFuY2hlUmV2ZW51RGVjaW1hbCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7aGF1dDogTGltaXRlVHJhbmNoZURlY2ltYWwudDsgYmFzOiBkZWNpbWFsOyB0YXV4OiBkZWNpbWFsfVxuZW5kXG5sZXQgZW1iZWRfdHJhbmNoZV9yZXZlbnVfZGVjaW1hbCAoeDogVHJhbmNoZVJldmVudURlY2ltYWwudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIlRyYW5jaGVSZXZlbnVEw6ljaW1hbFwiXSxcbiAgWyhcImhhdXRcIiwgZW1iZWRfbGltaXRlX3RyYW5jaGVfZGVjaW1hbCB4LlRyYW5jaGVSZXZlbnVEZWNpbWFsLmhhdXQpO1xuICAgIChcImJhc1wiLCBlbWJlZF9kZWNpbWFsIHguVHJhbmNoZVJldmVudURlY2ltYWwuYmFzKTtcbiAgICAoXCJ0YXV4XCIsIGVtYmVkX2RlY2ltYWwgeC5UcmFuY2hlUmV2ZW51RGVjaW1hbC50YXV4KV0pXG5cblxubW9kdWxlIEF1dHJlUGVyc29ubmVBQ2hhcmdlID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBkYXRlX25haXNzYW5jZTogZGF0ZTtcbiAgICByZXNzb3VyY2VzOiBtb25leTtcbiAgICBhc2NlbmRhbnRfZGVzY2VuZGFudF9jb2xsYXRlcmFsX2RldXhpZW1lX3Ryb2lzaWVtZV9kZWdyZTogYm9vbDtcbiAgICBwYXJlbnRlOiBQYXJlbnRlLnQ7XG4gICAgaW5jYXBhY2l0ZV84MF9wb3VyY2VudF9vdV9yZXN0cmljdGlvbl9lbXBsb2k6IGJvb2w7XG4gICAgYmVuZWZpY2lhaXJlX2wxNjFfMTlfbDM1MV84X2w2NDNfM19zZWN1OiBib29sO1xuICAgIHRpdHVsYWlyZV9hbGxvY2F0aW9uX3BlcnNvbm5lX2FnZWU6IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UgKHg6IEF1dHJlUGVyc29ubmVBQ2hhcmdlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJBdXRyZVBlcnNvbm5lw4BDaGFyZ2VcIl0sXG4gIFsoXCJkYXRlX25haXNzYW5jZVwiLCBlbWJlZF9kYXRlXG4gICAgeC5BdXRyZVBlcnNvbm5lQUNoYXJnZS5kYXRlX25haXNzYW5jZSk7XG4gICAgKFwicmVzc291cmNlc1wiLCBlbWJlZF9tb25leVxuICAgIHguQXV0cmVQZXJzb25uZUFDaGFyZ2UucmVzc291cmNlcyk7XG4gICAgKFwiYXNjZW5kYW50X2Rlc2NlbmRhbnRfY29sbGF0w6lyYWxfZGV1eGnDqG1lX3Ryb2lzacOobWVfZGVncsOpXCIsXG4gICAgZW1iZWRfYm9vbFxuICAgIHguQXV0cmVQZXJzb25uZUFDaGFyZ2UuYXNjZW5kYW50X2Rlc2NlbmRhbnRfY29sbGF0ZXJhbF9kZXV4aWVtZV90cm9pc2llbWVfZGVncmUpO1xuICAgIChcInBhcmVudMOpXCIsIGVtYmVkX3BhcmVudGVcbiAgICB4LkF1dHJlUGVyc29ubmVBQ2hhcmdlLnBhcmVudGUpO1xuICAgIChcImluY2FwYWNpdMOpXzgwX3BvdXJjZW50X291X3Jlc3RyaWN0aW9uX2VtcGxvaVwiLCBlbWJlZF9ib29sXG4gICAgeC5BdXRyZVBlcnNvbm5lQUNoYXJnZS5pbmNhcGFjaXRlXzgwX3BvdXJjZW50X291X3Jlc3RyaWN0aW9uX2VtcGxvaSk7XG4gICAgKFwiYsOpbsOpZmljaWFpcmVfbDE2MV8xOV9sMzUxXzhfbDY0M18zX3PDqWN1XCIsIGVtYmVkX2Jvb2xcbiAgICB4LkF1dHJlUGVyc29ubmVBQ2hhcmdlLmJlbmVmaWNpYWlyZV9sMTYxXzE5X2wzNTFfOF9sNjQzXzNfc2VjdSk7XG4gICAgKFwidGl0dWxhaXJlX2FsbG9jYXRpb25fcGVyc29ubmVfw6Jnw6llXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkF1dHJlUGVyc29ubmVBQ2hhcmdlLnRpdHVsYWlyZV9hbGxvY2F0aW9uX3BlcnNvbm5lX2FnZWUpXSlcblxuXG5tb2R1bGUgRGF0ZU5haXNzYW5jZVRyb2lzaWVtZU91RGVybmllclBsdXNFbmZhbnQgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgTW9pbnNEZVRyb2lzRW5mYW50cyBvZiB1bml0XG4gICAgfCBQbHVzRGVUcm9pc0VuZmFudHMgb2YgRGF0ZURlTmFpc3NhbmNlT3VNb2lzRGVHcm9zc2Vzc2UudFxuICBlbmRcbmxldCBlbWJlZF9kYXRlX25haXNzYW5jZV90cm9pc2llbWVfb3VfZGVybmllcl9wbHVzX2VuZmFudFxuICAoeDogRGF0ZU5haXNzYW5jZVRyb2lzaWVtZU91RGVybmllclBsdXNFbmZhbnQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJEYXRlTmFpc3NhbmNlVHJvaXNpw6htZU91RGVybmllclBsdXNFbmZhbnRcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgTW9pbnNEZVRyb2lzRW5mYW50cyB4IC0+IChcIk1vaW5zRGVUcm9pc0VuZmFudHNcIiwgZW1iZWRfdW5pdCB4KVxuICAgIHwgUGx1c0RlVHJvaXNFbmZhbnRzIHggLT5cbiAgICAgIChcIlBsdXNEZVRyb2lzRW5mYW50c1wiLCBlbWJlZF9kYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2dyb3NzZXNzZSB4KSlcblxuXG5tb2R1bGUgRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGVsaWdpYmlsaXRlOiBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQudDtcbiAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGU6IGludGVnZXI7XG4gICAgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZTogZGVjaW1hbCBhcnJheVxuICB9XG5lbmRcbmxldCBlbWJlZF9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50ICh4OiBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiXSxcbiAgWyhcIsOpbGlnaWJpbGl0w6lcIiwgZW1iZWRfdHlwZV9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50XG4gICAgeC5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5lbGlnaWJpbGl0ZSk7XG4gICAgKFwibm9tYnJlX3BlcnNvbm5lc1/DoF9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZVwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGUpO1xuICAgIChcImNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuw6llX3ByaXNfZW5fY29tcHRlXCIsXG4gICAgZW1iZWRfYXJyYXkgKGVtYmVkX2RlY2ltYWwpXG4gICAgeC5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlKV0pXG5cblxubW9kdWxlIFByZXQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIHR5cGVfcHJldDogVHlwZVByZXQudDtcbiAgICBkYXRlX3NpZ25hdHVyZTogZGF0ZTtcbiAgICB0aXR1bGFpcmVfcHJldDogVGl0dWxhaXJlUHJldC50O1xuICAgIGFjY29yZF9maW5hbmNlbWVudF9yZXByZXNlbnRhbnRfRXRhdF9vdXRyZV9tZXI6XG4gICAgICBBY2NvcmRGaW5hbmNlbWVudFJlcHJlc2VudGFudEV0YXRPdXRyZU1lci50XG4gIH1cbmVuZFxubGV0IGVtYmVkX3ByZXQgKHg6IFByZXQudCkgOiBydW50aW1lX3ZhbHVlID0gU3RydWN0KFtcIlByw6p0XCJdLFxuICBbKFwidHlwZV9wcsOqdFwiLCBlbWJlZF90eXBlX3ByZXQgeC5QcmV0LnR5cGVfcHJldCk7XG4gICAgKFwiZGF0ZV9zaWduYXR1cmVcIiwgZW1iZWRfZGF0ZSB4LlByZXQuZGF0ZV9zaWduYXR1cmUpO1xuICAgIChcInRpdHVsYWlyZV9wcsOqdFwiLCBlbWJlZF90aXR1bGFpcmVfcHJldFxuICAgIHguUHJldC50aXR1bGFpcmVfcHJldCk7XG4gICAgKFwiYWNjb3JkX2ZpbmFuY2VtZW50X3JlcHLDqXNlbnRhbnRfw4l0YXRfb3V0cmVfbWVyXCIsXG4gICAgZW1iZWRfYWNjb3JkX2ZpbmFuY2VtZW50X3JlcHJlc2VudGFudF9ldGF0X291dHJlX21lclxuICAgIHguUHJldC5hY2NvcmRfZmluYW5jZW1lbnRfcmVwcmVzZW50YW50X0V0YXRfb3V0cmVfbWVyKV0pXG5cblxubW9kdWxlIExvZ2VtZW50Rm95ZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIHR5cGVfdXNlcjogVHlwZUxvZ2VtZW50Rm95ZXIudDtcbiAgICBsb2dlbWVudF9mb3llcl9qZXVuZXNfdHJhdmFpbGxldXJzOiBib29sO1xuICAgIHJlbXBsaXRfY29uZGl0aW9uc19yODMyXzIxOiBib29sO1xuICAgIGNvbnZlbnRpb25uZV9saXZyZV9JSUlfdGl0cmVfVl9jaGFwX0lJSTogYm9vbDtcbiAgICBjb252ZW50aW9ubmVfc2Vsb25fcmVnbGVzX2Ryb206IGJvb2w7XG4gICAgZGF0ZV9jb252ZW50aW9ubmVtZW50OiBkYXRlO1xuICAgIGNvbnN0cnVpdF9hcHBsaWNhdGlvbl9sb2lfMTk1N18xMl9JSUk6IGJvb2w7XG4gICAgcmVkZXZhbmNlOiBtb25leTtcbiAgICBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNjpcbiAgICAgIENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50O1xuICAgIGJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlczogYm9vbDtcbiAgICBsb2dlbWVudF9tZXVibGVfZDg0Ml8yOiBib29sO1xuICAgIGxvZ2VtZW50X2VzdF9jaGFtYnJlOiBib29sO1xuICAgIGNvbG9jYXRpb246IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfbG9nZW1lbnRfZm95ZXIgKHg6IExvZ2VtZW50Rm95ZXIudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkxvZ2VtZW50Rm95ZXJcIl0sXG4gIFsoXCJ0eXBlXCIsIGVtYmVkX3R5cGVfbG9nZW1lbnRfZm95ZXJcbiAgICB4LkxvZ2VtZW50Rm95ZXIudHlwZV91c2VyKTtcbiAgICAoXCJsb2dlbWVudF9mb3llcl9qZXVuZXNfdHJhdmFpbGxldXJzXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkxvZ2VtZW50Rm95ZXIubG9nZW1lbnRfZm95ZXJfamV1bmVzX3RyYXZhaWxsZXVycyk7XG4gICAgKFwicmVtcGxpdF9jb25kaXRpb25zX3I4MzJfMjFcIiwgZW1iZWRfYm9vbFxuICAgIHguTG9nZW1lbnRGb3llci5yZW1wbGl0X2NvbmRpdGlvbnNfcjgzMl8yMSk7XG4gICAgKFwiY29udmVudGlvbm7DqV9saXZyZV9JSUlfdGl0cmVfVl9jaGFwX0lJSVwiLCBlbWJlZF9ib29sXG4gICAgeC5Mb2dlbWVudEZveWVyLmNvbnZlbnRpb25uZV9saXZyZV9JSUlfdGl0cmVfVl9jaGFwX0lJSSk7XG4gICAgKFwiY29udmVudGlvbm7DqV9zZWxvbl9yw6hnbGVzX2Ryb21cIiwgZW1iZWRfYm9vbFxuICAgIHguTG9nZW1lbnRGb3llci5jb252ZW50aW9ubmVfc2Vsb25fcmVnbGVzX2Ryb20pO1xuICAgIChcImRhdGVfY29udmVudGlvbm5lbWVudFwiLCBlbWJlZF9kYXRlXG4gICAgeC5Mb2dlbWVudEZveWVyLmRhdGVfY29udmVudGlvbm5lbWVudCk7XG4gICAgKFwiY29uc3RydWl0X2FwcGxpY2F0aW9uX2xvaV8xOTU3XzEyX0lJSVwiLCBlbWJlZF9ib29sXG4gICAgeC5Mb2dlbWVudEZveWVyLmNvbnN0cnVpdF9hcHBsaWNhdGlvbl9sb2lfMTk1N18xMl9JSUkpO1xuICAgIChcInJlZGV2YW5jZVwiLCBlbWJlZF9tb25leVxuICAgIHguTG9nZW1lbnRGb3llci5yZWRldmFuY2UpO1xuICAgIChcImNhdMOpZ29yaWVfw6lxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZcIixcbiAgICBlbWJlZF9jYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llclxuICAgIHguTG9nZW1lbnRGb3llci5jYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNik7XG4gICAgKFwiYsOpbsOpZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2Fww6lzXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkxvZ2VtZW50Rm95ZXIuYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzKTtcbiAgICAoXCJsb2dlbWVudF9tZXVibMOpX2Q4NDJfMlwiLCBlbWJlZF9ib29sXG4gICAgeC5Mb2dlbWVudEZveWVyLmxvZ2VtZW50X21ldWJsZV9kODQyXzIpO1xuICAgIChcImxvZ2VtZW50X2VzdF9jaGFtYnJlXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkxvZ2VtZW50Rm95ZXIubG9nZW1lbnRfZXN0X2NoYW1icmUpO1xuICAgIChcImNvbG9jYXRpb25cIiwgZW1iZWRfYm9vbCB4LkxvZ2VtZW50Rm95ZXIuY29sb2NhdGlvbildKVxuXG5cbm1vZHVsZSBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGlkZW50aWZpYW50OiBpbnRlZ2VyO1xuICAgIG9ibGlnYXRpb25fc2NvbGFpcmU6IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS50O1xuICAgIHJlbXVuZXJhdGlvbl9tZW5zdWVsbGU6IG1vbmV5O1xuICAgIGRhdGVfZGVfbmFpc3NhbmNlOiBkYXRlO1xuICAgIGFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXM6IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgKHg6IEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzXCJdLFxuICBbKFwiaWRlbnRpZmlhbnRcIiwgZW1iZWRfaW50ZWdlclxuICAgIHguRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLmlkZW50aWZpYW50KTtcbiAgICAoXCJvYmxpZ2F0aW9uX3Njb2xhaXJlXCIsIGVtYmVkX3NpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlXG4gICAgeC5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMub2JsaWdhdGlvbl9zY29sYWlyZSk7XG4gICAgKFwicsOpbXVuZXJhdGlvbl9tZW5zdWVsbGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5yZW11bmVyYXRpb25fbWVuc3VlbGxlKTtcbiAgICAoXCJkYXRlX2RlX25haXNzYW5jZVwiLCBlbWJlZF9kYXRlXG4gICAgeC5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuZGF0ZV9kZV9uYWlzc2FuY2UpO1xuICAgIChcImFfZMOpasOgX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1wiLCBlbWJlZF9ib29sXG4gICAgeC5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyldKVxuXG5cbm1vZHVsZSBUeXBlQmFpbGxldXIgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgQmFpbGxldXJTb2NpYWwgb2YgQ29udmVudGlvbkJhaWxsZXVyU29jaWFsLnRcbiAgICB8IEJhaWxsZXVyUHJpdmVBdmVjQ29udmVudGlvbm5lbWVudFNvY2lhbCBvZiBDb252ZW50aW9uQU5IQS50XG4gICAgfCBCYWlsbGV1clByaXZlIG9mIHVuaXRcbiAgZW5kXG5sZXQgZW1iZWRfdHlwZV9iYWlsbGV1ciAoeDogVHlwZUJhaWxsZXVyLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiVHlwZUJhaWxsZXVyXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IEJhaWxsZXVyU29jaWFsIHggLT5cbiAgICAgIChcIkJhaWxsZXVyU29jaWFsXCIsIGVtYmVkX2NvbnZlbnRpb25fYmFpbGxldXJfc29jaWFsIHgpXG4gICAgfCBCYWlsbGV1clByaXZlQXZlY0NvbnZlbnRpb25uZW1lbnRTb2NpYWwgeCAtPlxuICAgICAgKFwiQmFpbGxldXJQcml2w6lBdmVjQ29udmVudGlvbm5lbWVudFNvY2lhbFwiLCBlbWJlZF9jb252ZW50aW9uX2Ffbl9oX2EgeClcbiAgICB8IEJhaWxsZXVyUHJpdmUgeCAtPiAoXCJCYWlsbGV1clByaXbDqVwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBMb3VlT3VTb3VzTG91ZUFEZXNUaWVycyA9IHN0cnVjdFxuIHR5cGUgdCA9XG4gICAgfCBOb24gb2YgdW5pdFxuICAgIHwgT3VpIG9mIFBlcnNvbm5lU291c0xvY2F0aW9uLnRcbiAgZW5kXG5sZXQgZW1iZWRfbG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnMgKHg6IExvdWVPdVNvdXNMb3VlQURlc1RpZXJzLnQpXG4gIDogcnVudGltZV92YWx1ZSA9XG4gIEVudW0oW1wiTG91w6lPdVNvdXNMb3XDqcOARGVzVGllcnNcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgTm9uIHggLT4gKFwiTm9uXCIsIGVtYmVkX3VuaXQgeClcbiAgICB8IE91aSB4IC0+IChcIk91aVwiLCBlbWJlZF9wZXJzb25uZV9zb3VzX2xvY2F0aW9uIHgpKVxuXG5cbm1vZHVsZSBOYXRpb25hbGl0ZSA9IHN0cnVjdFxuIHR5cGUgdCA9XG4gICAgfCBGcmFuY2Fpc2Ugb2YgdW5pdFxuICAgIHwgRXRyYW5nZXJlIG9mIENvbmRpdGlvbnNFdHJhbmdlcnMudFxuICBlbmRcbmxldCBlbWJlZF9uYXRpb25hbGl0ZSAoeDogTmF0aW9uYWxpdGUudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJOYXRpb25hbGl0w6lcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgRnJhbmNhaXNlIHggLT4gKFwiRnJhbsOnYWlzZVwiLCBlbWJlZF91bml0IHgpXG4gICAgfCBFdHJhbmdlcmUgeCAtPiAoXCLDiXRyYW5nw6hyZVwiLCBlbWJlZF9jb25kaXRpb25zX2V0cmFuZ2VycyB4KSlcblxuXG5tb2R1bGUgQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgQ2hhbmdlbWVudCBvZiBJbmZvc0NoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LnRcbiAgICB8IFBhc0RlQ2hhbmdlbWVudCBvZiB1bml0XG4gIGVuZFxubGV0IGVtYmVkX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80ICh4OiBDaGFuZ2VtZW50TG9nZW1lbnREODQyNC50KVxuICA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIkNoYW5nZW1lbnRMb2dlbWVudEQ4NDJfNFwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBDaGFuZ2VtZW50IHggLT5cbiAgICAgIChcIkNoYW5nZW1lbnRcIiwgZW1iZWRfaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQgeClcbiAgICB8IFBhc0RlQ2hhbmdlbWVudCB4IC0+IChcIlBhc0RlQ2hhbmdlbWVudFwiLCBlbWJlZF91bml0IHgpKVxuXG5cbm1vZHVsZSBJbmZvcm1hdGlvbnNQcmltZURlRGVtZW5hZ2VtZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBub21icmVfZW5mYW50c19hX25haXRyZV9hcHJlc190cm9pc2llbWVfbW9pc19ncm9zc2Vzc2U6IGludGVnZXI7XG4gICAgZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX2VuZmFudF9vdV9kZXJuaWVyX3NpX3BsdXM6XG4gICAgICBEYXRlTmFpc3NhbmNlVHJvaXNpZW1lT3VEZXJuaWVyUGx1c0VuZmFudC50XG4gIH1cbmVuZFxubGV0IGVtYmVkX2luZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZW1lbnQgKHg6IEluZm9ybWF0aW9uc1ByaW1lRGVEZW1lbmFnZW1lbnQudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkluZm9ybWF0aW9uc1ByaW1lRGVEw6ltw6luYWdlbWVudFwiXSxcbiAgWyhcIm5vbWJyZV9lbmZhbnRzX8OgX25hw650cmVfYXByw6hzX3Ryb2lzacOobWVfbW9pc19ncm9zc2Vzc2VcIixcbiAgICBlbWJlZF9pbnRlZ2VyXG4gICAgeC5JbmZvcm1hdGlvbnNQcmltZURlRGVtZW5hZ2VtZW50Lm5vbWJyZV9lbmZhbnRzX2FfbmFpdHJlX2FwcmVzX3Ryb2lzaWVtZV9tb2lzX2dyb3NzZXNzZSk7XG4gICAgKFwiZGF0ZV9uYWlzc2FuY2VfdHJvaXNpw6htZV9lbmZhbnRfb3VfZGVybmllcl9zaV9wbHVzXCIsXG4gICAgZW1iZWRfZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2Rlcm5pZXJfcGx1c19lbmZhbnRcbiAgICB4LkluZm9ybWF0aW9uc1ByaW1lRGVEZW1lbmFnZW1lbnQuZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX2VuZmFudF9vdV9kZXJuaWVyX3NpX3BsdXMpXSlcblxuXG5tb2R1bGUgUHJvcHJpZXRhaXJlID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBtZW5zdWFsaXRlX3ByaW5jaXBhbGU6IG1vbmV5O1xuICAgIGNoYXJnZXNfbWVuc3VlbGxlc19wcmV0OiBtb25leTtcbiAgICBkYXRlX2VudHJlZV9sb2dlbWVudDogZGF0ZTtcbiAgICB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNTogVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS50O1xuICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzU6IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS50O1xuICAgIGxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZTogYm9vbDtcbiAgICBjb3Byb3ByaWV0ZTogYm9vbDtcbiAgICBzaXR1YXRpb25fcjgyMl8xMV8xM18xNzogYm9vbDtcbiAgICBhbmNpZW5uZXRlX2xvZ2VtZW50OiBOZXVmT3VBbmNpZW4udDtcbiAgICBwcmV0OiBQcmV0LnQ7XG4gICAgb3BlcmF0aW9uc19sb2dlbWVudF9ldm9sdXRpZnNfc29jaWF1eF9hY2Nlc3Npb25fcHJvcHJpZXRlX2FpZGVlX0V0YXQ6XG4gICAgICBib29sXG4gIH1cbmVuZFxubGV0IGVtYmVkX3Byb3ByaWV0YWlyZSAoeDogUHJvcHJpZXRhaXJlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJQcm9wcmnDqXRhaXJlXCJdLFxuICBbKFwibWVuc3VhbGl0w6lfcHJpbmNpcGFsZVwiLCBlbWJlZF9tb25leVxuICAgIHguUHJvcHJpZXRhaXJlLm1lbnN1YWxpdGVfcHJpbmNpcGFsZSk7XG4gICAgKFwiY2hhcmdlc19tZW5zdWVsbGVzX3Byw6p0XCIsIGVtYmVkX21vbmV5XG4gICAgeC5Qcm9wcmlldGFpcmUuY2hhcmdlc19tZW5zdWVsbGVzX3ByZXQpO1xuICAgIChcImRhdGVfZW50csOpZV9sb2dlbWVudFwiLCBlbWJlZF9kYXRlXG4gICAgeC5Qcm9wcmlldGFpcmUuZGF0ZV9lbnRyZWVfbG9nZW1lbnQpO1xuICAgIChcInR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1XCIsIGVtYmVkX3R5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1XG4gICAgeC5Qcm9wcmlldGFpcmUudHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTUpO1xuICAgIChcInR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzVcIiwgZW1iZWRfdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNVxuICAgIHguUHJvcHJpZXRhaXJlLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUpO1xuICAgIChcImxvY2FsX2hhYml0w6lfcHJlbWnDqHJlX2ZvaXNfYsOpbsOpZmljaWFpcmVcIiwgZW1iZWRfYm9vbFxuICAgIHguUHJvcHJpZXRhaXJlLmxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZSk7XG4gICAgKFwiY29wcm9wcmnDqXTDqVwiLCBlbWJlZF9ib29sXG4gICAgeC5Qcm9wcmlldGFpcmUuY29wcm9wcmlldGUpO1xuICAgIChcInNpdHVhdGlvbl9yODIyXzExXzEzXzE3XCIsIGVtYmVkX2Jvb2xcbiAgICB4LlByb3ByaWV0YWlyZS5zaXR1YXRpb25fcjgyMl8xMV8xM18xNyk7XG4gICAgKFwiYW5jaWVubmV0w6lfbG9nZW1lbnRcIiwgZW1iZWRfbmV1Zl9vdV9hbmNpZW5cbiAgICB4LlByb3ByaWV0YWlyZS5hbmNpZW5uZXRlX2xvZ2VtZW50KTtcbiAgICAoXCJwcsOqdFwiLCBlbWJlZF9wcmV0XG4gICAgeC5Qcm9wcmlldGFpcmUucHJldCk7XG4gICAgKFwib3DDqXJhdGlvbnNfbG9nZW1lbnRfw6l2b2x1dGlmc19zb2NpYXV4X2FjY2Vzc2lvbl9wcm9wcmnDqXTDqV9haWTDqWVfw4l0YXRcIixcbiAgICBlbWJlZF9ib29sXG4gICAgeC5Qcm9wcmlldGFpcmUub3BlcmF0aW9uc19sb2dlbWVudF9ldm9sdXRpZnNfc29jaWF1eF9hY2Nlc3Npb25fcHJvcHJpZXRlX2FpZGVlX0V0YXQpXSlcblxuXG5tb2R1bGUgRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGFnZV9sNTEyXzNfMjogZHVyYXRpb247XG4gICAgZHJvaXRfb3V2ZXJ0OiBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCAtPiBib29sO1xuICAgIGNvbmRpdGlvbnNfaG9yc19hZ2U6IEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy50IC0+IGJvb2w7XG4gICAgcmVnaW1lX291dHJlX21lcl9sNzUxXzE6IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyAoeDogRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIl0sXG4gIFsoXCLDomdlX2w1MTJfM18yXCIsIGVtYmVkX2R1cmF0aW9uXG4gICAgeC5FbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlcy5hZ2VfbDUxMl8zXzIpO1xuICAgIChcImRyb2l0X291dmVydFwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzLmRyb2l0X291dmVydCk7XG4gICAgKFwiY29uZGl0aW9uc19ob3JzX8OiZ2VcIiwgdW5lbWJlZGRhYmxlXG4gICAgeC5FbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlcy5jb25kaXRpb25zX2hvcnNfYWdlKTtcbiAgICAoXCJyw6lnaW1lX291dHJlX21lcl9sNzUxXzFcIiwgZW1iZWRfYm9vbFxuICAgIHguRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXMucmVnaW1lX291dHJlX21lcl9sNzUxXzEpXSlcblxuXG5tb2R1bGUgRGVtYW5kZXVyID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBkYXRlX25haXNzYW5jZTogZGF0ZTtcbiAgICBuYXRpb25hbGl0ZTogTmF0aW9uYWxpdGUudDtcbiAgICBwZXJzb25uZV9oZWJlcmdlZV9jZW50cmVfc29pbl9sX0wxNjJfMjJfM19zZWN1cml0ZV9zb2NpYWxlOiBib29sO1xuICAgIGVzdF9ub25fc2FsYXJpZV9hZ3JpY29sZV9sNzgxXzhfbF83ODFfNDZfY29kZV9ydXJhbDogYm9vbDtcbiAgICBtYWdpc3RyYXRfZm9uY3Rpb25uYWlyZV9jZW50cmVfaW50ZXJldHNfbWF0ZXJpZWxzX2ZhbWlsaWF1eF9ob3JzX21heW90dGU6XG4gICAgICBib29sXG4gIH1cbmVuZFxubGV0IGVtYmVkX2RlbWFuZGV1ciAoeDogRGVtYW5kZXVyLnQpIDogcnVudGltZV92YWx1ZSA9IFN0cnVjdChbXCJEZW1hbmRldXJcIl0sXG4gIFsoXCJkYXRlX25haXNzYW5jZVwiLCBlbWJlZF9kYXRlIHguRGVtYW5kZXVyLmRhdGVfbmFpc3NhbmNlKTtcbiAgICAoXCJuYXRpb25hbGl0w6lcIiwgZW1iZWRfbmF0aW9uYWxpdGVcbiAgICB4LkRlbWFuZGV1ci5uYXRpb25hbGl0ZSk7XG4gICAgKFwicGVyc29ubmVfaMOpYmVyZ8OpZV9jZW50cmVfc29pbl9sX0wxNjJfMjJfM19zw6ljdXJpdMOpX3NvY2lhbGVcIixcbiAgICBlbWJlZF9ib29sXG4gICAgeC5EZW1hbmRldXIucGVyc29ubmVfaGViZXJnZWVfY2VudHJlX3NvaW5fbF9MMTYyXzIyXzNfc2VjdXJpdGVfc29jaWFsZSk7XG4gICAgKFwiZXN0X25vbl9zYWxhcmnDqV9hZ3JpY29sZV9sNzgxXzhfbF83ODFfNDZfY29kZV9ydXJhbFwiLCBlbWJlZF9ib29sXG4gICAgeC5EZW1hbmRldXIuZXN0X25vbl9zYWxhcmllX2Fncmljb2xlX2w3ODFfOF9sXzc4MV80Nl9jb2RlX3J1cmFsKTtcbiAgICAoXCJtYWdpc3RyYXRfZm9uY3Rpb25uYWlyZV9jZW50cmVfaW50w6lyw6p0c19tYXTDqXJpZWxzX2ZhbWlsaWF1eF9ob3JzX21heW90dGVcIixcbiAgICBlbWJlZF9ib29sXG4gICAgeC5EZW1hbmRldXIubWFnaXN0cmF0X2ZvbmN0aW9ubmFpcmVfY2VudHJlX2ludGVyZXRzX21hdGVyaWVsc19mYW1pbGlhdXhfaG9yc19tYXlvdHRlKV0pXG5cblxubW9kdWxlIEVuZmFudEFDaGFyZ2UgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGlkZW50aWZpYW50OiBpbnRlZ2VyO1xuICAgIG5hdGlvbmFsaXRlOiBOYXRpb25hbGl0ZS50O1xuICAgIGFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXM6IGJvb2w7XG4gICAgZGF0ZV9kZV9uYWlzc2FuY2U6IGRhdGU7XG4gICAgcmVtdW5lcmF0aW9uX21lbnN1ZWxsZTogbW9uZXk7XG4gICAgb2JsaWdhdGlvbl9zY29sYWlyZTogU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLnQ7XG4gICAgc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlOiBTaXR1YXRpb25HYXJkZUFsdGVybmVlLnQ7XG4gICAgZXR1ZGVzX2FwcHJlbnRpc3NhZ2Vfc3RhZ2VfZm9ybWF0aW9uX3Byb19pbXBvc3NpYmlsaXRlX3RyYXZhaWw6IGJvb2xcbiAgfVxuZW5kXG5sZXQgZW1iZWRfZW5mYW50X2FfY2hhcmdlICh4OiBFbmZhbnRBQ2hhcmdlLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJFbmZhbnTDgENoYXJnZVwiXSxcbiAgWyhcImlkZW50aWZpYW50XCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkVuZmFudEFDaGFyZ2UuaWRlbnRpZmlhbnQpO1xuICAgIChcIm5hdGlvbmFsaXTDqVwiLCBlbWJlZF9uYXRpb25hbGl0ZVxuICAgIHguRW5mYW50QUNoYXJnZS5uYXRpb25hbGl0ZSk7XG4gICAgKFwiYV9kw6lqw6Bfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkVuZmFudEFDaGFyZ2UuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyk7XG4gICAgKFwiZGF0ZV9kZV9uYWlzc2FuY2VcIiwgZW1iZWRfZGF0ZVxuICAgIHguRW5mYW50QUNoYXJnZS5kYXRlX2RlX25haXNzYW5jZSk7XG4gICAgKFwicsOpbXVuZXJhdGlvbl9tZW5zdWVsbGVcIiwgZW1iZWRfbW9uZXlcbiAgICB4LkVuZmFudEFDaGFyZ2UucmVtdW5lcmF0aW9uX21lbnN1ZWxsZSk7XG4gICAgKFwib2JsaWdhdGlvbl9zY29sYWlyZVwiLCBlbWJlZF9zaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZVxuICAgIHguRW5mYW50QUNoYXJnZS5vYmxpZ2F0aW9uX3Njb2xhaXJlKTtcbiAgICAoXCJzaXR1YXRpb25fZ2FyZGVfYWx0ZXJuw6llXCIsIGVtYmVkX3NpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZVxuICAgIHguRW5mYW50QUNoYXJnZS5zaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWUpO1xuICAgIChcIsOpdHVkZXNfYXBwcmVudGlzc2FnZV9zdGFnZV9mb3JtYXRpb25fcHJvX2ltcG9zc2liaWxpdMOpX3RyYXZhaWxcIixcbiAgICBlbWJlZF9ib29sXG4gICAgeC5FbmZhbnRBQ2hhcmdlLmV0dWRlc19hcHByZW50aXNzYWdlX3N0YWdlX2Zvcm1hdGlvbl9wcm9faW1wb3NzaWJpbGl0ZV90cmF2YWlsKV0pXG5cblxubW9kdWxlIExvY2F0aW9uID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBiYWlsbGV1cjogVHlwZUJhaWxsZXVyLnQ7XG4gICAgbG95ZXJfcHJpbmNpcGFsOiBtb25leTtcbiAgICBiZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXM6IGJvb2w7XG4gICAgbG9nZW1lbnRfZXN0X2NoYW1icmU6IGJvb2w7XG4gICAgY29sb2NhdGlvbjogYm9vbDtcbiAgICBhZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyczogYm9vbDtcbiAgICBsb2dlbWVudF9tZXVibGVfZDg0Ml8yOiBib29sO1xuICAgIGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80OiBDaGFuZ2VtZW50TG9nZW1lbnREODQyNC50XG4gIH1cbmVuZFxubGV0IGVtYmVkX2xvY2F0aW9uICh4OiBMb2NhdGlvbi50KSA6IHJ1bnRpbWVfdmFsdWUgPSBTdHJ1Y3QoW1wiTG9jYXRpb25cIl0sXG4gIFsoXCJiYWlsbGV1clwiLCBlbWJlZF90eXBlX2JhaWxsZXVyIHguTG9jYXRpb24uYmFpbGxldXIpO1xuICAgIChcImxveWVyX3ByaW5jaXBhbFwiLCBlbWJlZF9tb25leVxuICAgIHguTG9jYXRpb24ubG95ZXJfcHJpbmNpcGFsKTtcbiAgICAoXCJiw6luw6lmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXDDqXNcIiwgZW1iZWRfYm9vbFxuICAgIHguTG9jYXRpb24uYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzKTtcbiAgICAoXCJsb2dlbWVudF9lc3RfY2hhbWJyZVwiLCBlbWJlZF9ib29sXG4gICAgeC5Mb2NhdGlvbi5sb2dlbWVudF9lc3RfY2hhbWJyZSk7XG4gICAgKFwiY29sb2NhdGlvblwiLCBlbWJlZF9ib29sXG4gICAgeC5Mb2NhdGlvbi5jb2xvY2F0aW9uKTtcbiAgICAoXCLDomfDqWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaMOpYmVyZ8OpZXNfb27DqXJldXhfcGFydGljdWxpZXJzXCIsXG4gICAgZW1iZWRfYm9vbFxuICAgIHguTG9jYXRpb24uYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnMpO1xuICAgIChcImxvZ2VtZW50X21ldWJsw6lfZDg0Ml8yXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkxvY2F0aW9uLmxvZ2VtZW50X21ldWJsZV9kODQyXzIpO1xuICAgIChcImNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80XCIsIGVtYmVkX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80XG4gICAgeC5Mb2NhdGlvbi5jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNCldKVxuXG5cbm1vZHVsZSBQZXJzb25uZUFDaGFyZ2UgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgRW5mYW50QUNoYXJnZSBvZiBFbmZhbnRBQ2hhcmdlLnRcbiAgICB8IEF1dHJlUGVyc29ubmVBQ2hhcmdlIG9mIEF1dHJlUGVyc29ubmVBQ2hhcmdlLnRcbiAgZW5kXG5sZXQgZW1iZWRfcGVyc29ubmVfYV9jaGFyZ2UgKHg6IFBlcnNvbm5lQUNoYXJnZS50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBFbnVtKFtcIlBlcnNvbm5lw4BDaGFyZ2VcIl0sXG4gIG1hdGNoIHggd2l0aFxuICAgIHwgRW5mYW50QUNoYXJnZSB4IC0+IChcIkVuZmFudMOAQ2hhcmdlXCIsIGVtYmVkX2VuZmFudF9hX2NoYXJnZSB4KVxuICAgIHwgQXV0cmVQZXJzb25uZUFDaGFyZ2UgeCAtPlxuICAgICAgKFwiQXV0cmVQZXJzb25uZcOAQ2hhcmdlXCIsIGVtYmVkX2F1dHJlX3BlcnNvbm5lX2FfY2hhcmdlIHgpKVxuXG5cbm1vZHVsZSBDYXRlZ29yaWVDYWxjdWxBUEwgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHwgTG9jYXRpb24gb2YgTG9jYXRpb24udFxuICAgIHwgQWNjZXNzaW9uUHJvcHJpZXRlIG9mIFByb3ByaWV0YWlyZS50XG4gICAgfCBMb2dlbWVudEZveWVyIG9mIExvZ2VtZW50Rm95ZXIudFxuICBlbmRcbmxldCBlbWJlZF9jYXRlZ29yaWVfY2FsY3VsX2FfcF9sICh4OiBDYXRlZ29yaWVDYWxjdWxBUEwudCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJDYXTDqWdvcmllQ2FsY3VsQVBMXCJdLFxuICBtYXRjaCB4IHdpdGhcbiAgICB8IExvY2F0aW9uIHggLT4gKFwiTG9jYXRpb25cIiwgZW1iZWRfbG9jYXRpb24geClcbiAgICB8IEFjY2Vzc2lvblByb3ByaWV0ZSB4IC0+IChcIkFjY2Vzc2lvblByb3ByacOpdMOpXCIsIGVtYmVkX3Byb3ByaWV0YWlyZSB4KVxuICAgIHwgTG9nZW1lbnRGb3llciB4IC0+IChcIkxvZ2VtZW50Rm95ZXJcIiwgZW1iZWRfbG9nZW1lbnRfZm95ZXIgeCkpXG5cblxubW9kdWxlIE1vZGVPY2N1cGF0aW9uID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IExvY2F0YWlyZSBvZiBMb2NhdGlvbi50XG4gICAgfCBSZXNpZGVudExvZ2VtZW50Rm95ZXIgb2YgTG9nZW1lbnRGb3llci50XG4gICAgfCBBY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIG9mIFByb3ByaWV0YWlyZS50XG4gICAgfCBTb3VzTG9jYXRhaXJlIG9mIExvY2F0aW9uLnRcbiAgICB8IExvY2F0aW9uQWNjZXNzaW9uIG9mIFByb3ByaWV0YWlyZS50XG4gIGVuZFxubGV0IGVtYmVkX21vZGVfb2NjdXBhdGlvbiAoeDogTW9kZU9jY3VwYXRpb24udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgRW51bShbXCJNb2RlT2NjdXBhdGlvblwiXSxcbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBMb2NhdGFpcmUgeCAtPiAoXCJMb2NhdGFpcmVcIiwgZW1iZWRfbG9jYXRpb24geClcbiAgICB8IFJlc2lkZW50TG9nZW1lbnRGb3llciB4IC0+XG4gICAgICAoXCJSw6lzaWRlbnRMb2dlbWVudEZveWVyXCIsIGVtYmVkX2xvZ2VtZW50X2ZveWVyIHgpXG4gICAgfCBBY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIHggLT5cbiAgICAgIChcIkFjY2Vzc2lvblByb3ByacOpdMOpTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvblwiLCBlbWJlZF9wcm9wcmlldGFpcmUgeClcbiAgICB8IFNvdXNMb2NhdGFpcmUgeCAtPiAoXCJTb3VzTG9jYXRhaXJlXCIsIGVtYmVkX2xvY2F0aW9uIHgpXG4gICAgfCBMb2NhdGlvbkFjY2Vzc2lvbiB4IC0+IChcIkxvY2F0aW9uQWNjZXNzaW9uXCIsIGVtYmVkX3Byb3ByaWV0YWlyZSB4KSlcblxuXG5tb2R1bGUgRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGRhdGVfY291cmFudGU6IGRhdGU7XG4gICAgZWxpZ2liaWxpdGU6IGJvb2w7XG4gICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlOiBpbnRlZ2VyO1xuICAgIGNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGU6IGRlY2ltYWwgYXJyYXk7XG4gICAgY29uZGl0aW9uXzJfcjgyM180OiBQZXJzb25uZUFDaGFyZ2UudCAtPiBib29sXG4gIH1cbmVuZFxubGV0IGVtYmVkX2VsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50ICh4OiBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXSxcbiAgWyhcImRhdGVfY291cmFudGVcIiwgZW1iZWRfZGF0ZVxuICAgIHguRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuZGF0ZV9jb3VyYW50ZSk7XG4gICAgKFwiw6lsaWdpYmlsaXTDqVwiLCBlbWJlZF9ib29sXG4gICAgeC5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5lbGlnaWJpbGl0ZSk7XG4gICAgKFwibm9tYnJlX3BlcnNvbm5lc1/DoF9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZVwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGUpO1xuICAgIChcImNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuw6llX3ByaXNfZW5fY29tcHRlXCIsXG4gICAgZW1iZWRfYXJyYXkgKGVtYmVkX2RlY2ltYWwpXG4gICAgeC5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlKTtcbiAgICAoXCJjb25kaXRpb25fMl9yODIzXzRcIiwgdW5lbWJlZGRhYmxlXG4gICAgeC5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5jb25kaXRpb25fMl9yODIzXzQpXSlcblxuXG5tb2R1bGUgTG9nZW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIHJlc2lkZW5jZV9wcmluY2lwYWxlOiBib29sO1xuICAgIG1vZGVfb2NjdXBhdGlvbjogTW9kZU9jY3VwYXRpb24udDtcbiAgICBwcm9wcmlldGFpcmU6IFBhcmVudE91QXV0cmUudDtcbiAgICBsb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVyczogTG91ZU91U291c0xvdWVBRGVzVGllcnMudDtcbiAgICB1c3VmcnVpdDogUGFyZW50T3VBdXRyZS50O1xuICAgIGxvZ2VtZW50X2RlY2VudF9sODlfNDYyOiBib29sO1xuICAgIHN1cmZhY2VfbV9jYXJyZXM6IGludGVnZXI7XG4gICAgem9uZTogWm9uZURIYWJpdGF0aW9uLnRcbiAgfVxuZW5kXG5sZXQgZW1iZWRfbG9nZW1lbnQgKHg6IExvZ2VtZW50LnQpIDogcnVudGltZV92YWx1ZSA9IFN0cnVjdChbXCJMb2dlbWVudFwiXSxcbiAgWyhcInLDqXNpZGVuY2VfcHJpbmNpcGFsZVwiLCBlbWJlZF9ib29sXG4gICAgeC5Mb2dlbWVudC5yZXNpZGVuY2VfcHJpbmNpcGFsZSk7XG4gICAgKFwibW9kZV9vY2N1cGF0aW9uXCIsIGVtYmVkX21vZGVfb2NjdXBhdGlvblxuICAgIHguTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKTtcbiAgICAoXCJwcm9wcmnDqXRhaXJlXCIsIGVtYmVkX3BhcmVudF9vdV9hdXRyZVxuICAgIHguTG9nZW1lbnQucHJvcHJpZXRhaXJlKTtcbiAgICAoXCJsb3XDqV9vdV9zb3VzX2xvdcOpX8OgX2Rlc190aWVyc1wiLCBlbWJlZF9sb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVyc1xuICAgIHguTG9nZW1lbnQubG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnMpO1xuICAgIChcInVzdWZydWl0XCIsIGVtYmVkX3BhcmVudF9vdV9hdXRyZVxuICAgIHguTG9nZW1lbnQudXN1ZnJ1aXQpO1xuICAgIChcImxvZ2VtZW50X2RlY2VudF9sODlfNDYyXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkxvZ2VtZW50LmxvZ2VtZW50X2RlY2VudF9sODlfNDYyKTtcbiAgICAoXCJzdXJmYWNlX21fY2FycsOpc1wiLCBlbWJlZF9pbnRlZ2VyIHguTG9nZW1lbnQuc3VyZmFjZV9tX2NhcnJlcyk7XG4gICAgKFwiem9uZVwiLCBlbWJlZF96b25lX2RfaGFiaXRhdGlvbiB4LkxvZ2VtZW50LnpvbmUpXSlcblxuXG5tb2R1bGUgTWVuYWdlID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBwcmVzdGF0aW9uc19yZWN1ZXM6IFByZXN0YXRpb25SZWN1ZS50IGFycmF5O1xuICAgIGxvZ2VtZW50OiBMb2dlbWVudC50O1xuICAgIHBlcnNvbm5lc19hX2NoYXJnZTogUGVyc29ubmVBQ2hhcmdlLnQgYXJyYXk7XG4gICAgbm9tYnJlX2F1dHJlc19vY2N1cGFudHNfbG9nZW1lbnQ6IGludGVnZXI7XG4gICAgc2l0dWF0aW9uX2ZhbWlsaWFsZTogU2l0dWF0aW9uRmFtaWxpYWxlLnQ7XG4gICAgY29uZGl0aW9uX3JhdHRhY2hlX2ZveWVyX2Zpc2NhbF9wYXJlbnRfaWZpOiBib29sO1xuICAgIGVuZmFudF9hX25haXRyZV9hcHJlc19xdWF0cmllbWVfbW9pc19ncm9zc2Vzc2U6IGJvb2w7XG4gICAgcGVyc29ubmVzX2FnZWVzX2hhbmRpY2FwZWVzX2ZveWVyX3I4NDRfNDogYm9vbDtcbiAgICByZXNpZGVuY2U6IENvbGxlY3Rpdml0ZS50XG4gIH1cbmVuZFxubGV0IGVtYmVkX21lbmFnZSAoeDogTWVuYWdlLnQpIDogcnVudGltZV92YWx1ZSA9IFN0cnVjdChbXCJNw6luYWdlXCJdLFxuICBbKFwicHJlc3RhdGlvbnNfcmXDp3Vlc1wiLCBlbWJlZF9hcnJheSAoZW1iZWRfcHJlc3RhdGlvbl9yZWN1ZSlcbiAgICB4Lk1lbmFnZS5wcmVzdGF0aW9uc19yZWN1ZXMpO1xuICAgIChcImxvZ2VtZW50XCIsIGVtYmVkX2xvZ2VtZW50IHguTWVuYWdlLmxvZ2VtZW50KTtcbiAgICAoXCJwZXJzb25uZXNfw6BfY2hhcmdlXCIsIGVtYmVkX2FycmF5IChlbWJlZF9wZXJzb25uZV9hX2NoYXJnZSlcbiAgICB4Lk1lbmFnZS5wZXJzb25uZXNfYV9jaGFyZ2UpO1xuICAgIChcIm5vbWJyZV9hdXRyZXNfb2NjdXBhbnRzX2xvZ2VtZW50XCIsIGVtYmVkX2ludGVnZXJcbiAgICB4Lk1lbmFnZS5ub21icmVfYXV0cmVzX29jY3VwYW50c19sb2dlbWVudCk7XG4gICAgKFwic2l0dWF0aW9uX2ZhbWlsaWFsZVwiLCBlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlXG4gICAgeC5NZW5hZ2Uuc2l0dWF0aW9uX2ZhbWlsaWFsZSk7XG4gICAgKFwiY29uZGl0aW9uX3JhdHRhY2jDqV9mb3llcl9maXNjYWxfcGFyZW50X2lmaVwiLCBlbWJlZF9ib29sXG4gICAgeC5NZW5hZ2UuY29uZGl0aW9uX3JhdHRhY2hlX2ZveWVyX2Zpc2NhbF9wYXJlbnRfaWZpKTtcbiAgICAoXCJlbmZhbnRfw6BfbmHDrnRyZV9hcHLDqHNfcXVhdHJpw6htZV9tb2lzX2dyb3NzZXNzZVwiLCBlbWJlZF9ib29sXG4gICAgeC5NZW5hZ2UuZW5mYW50X2FfbmFpdHJlX2FwcmVzX3F1YXRyaWVtZV9tb2lzX2dyb3NzZXNzZSk7XG4gICAgKFwicGVyc29ubmVzX8OiZ8OpZXNfaGFuZGljYXDDqWVzX2ZveWVyX3I4NDRfNFwiLCBlbWJlZF9ib29sXG4gICAgeC5NZW5hZ2UucGVyc29ubmVzX2FnZWVzX2hhbmRpY2FwZWVzX2ZveWVyX3I4NDRfNCk7XG4gICAgKFwicsOpc2lkZW5jZVwiLCBlbWJlZF9jb2xsZWN0aXZpdGUgeC5NZW5hZ2UucmVzaWRlbmNlKV0pXG5cblxubW9kdWxlIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG1lbmFnZV9pbjogTWVuYWdlLnQ7XG4gICAgZGVtYW5kZXVyX2luOiBEZW1hbmRldXIudDtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIGNvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV9pbjogdW5pdCAtPiBib29sO1xuICAgIGNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlX2luOiB1bml0IC0+IGJvb2w7XG4gICAgZGF0ZV9lbnRyZWVfdmlndWV1cl9kaWZmZXJlZV9jY2hfaW46IHVuaXQgLT4gZGF0ZVxuICB9XG5lbmRcbmxldCBlbWJlZF9lbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiAoeDogRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudF9pblwiXSxcbiAgWyhcIm3DqW5hZ2VfaW5cIiwgZW1iZWRfbWVuYWdlXG4gICAgeC5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLm1lbmFnZV9pbik7XG4gICAgKFwiZGVtYW5kZXVyX2luXCIsIGVtYmVkX2RlbWFuZGV1clxuICAgIHguRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kZW1hbmRldXJfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJjb25kaXRpb25fbG9nZW1lbnRfcsOpc2lkZW5jZV9wcmluY2lwYWxlX2luXCIsIHVuZW1iZWRkYWJsZVxuICAgIHguRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5jb25kaXRpb25fbG9nZW1lbnRfcmVzaWRlbmNlX3ByaW5jaXBhbGVfaW4pO1xuICAgIChcImNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlX2luXCIsIHVuZW1iZWRkYWJsZVxuICAgIHguRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5jb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV9pbik7XG4gICAgKFwiZGF0ZV9lbnRyw6llX3ZpZ3VldXJfZGlmZsOpcsOpZV9jY2hfaW5cIiwgdW5lbWJlZGRhYmxlXG4gICAgeC5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRhdGVfZW50cmVlX3ZpZ3VldXJfZGlmZmVyZWVfY2NoX2luKV0pXG5cblxubW9kdWxlIEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBtZW5hZ2VfaW46IE1lbmFnZS50O1xuICAgIGRlbWFuZGV1cl9pbjogRGVtYW5kZXVyLnQ7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZVxuICB9XG5lbmRcbmxldCBlbWJlZF9lbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4gKHg6IEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRfaW5cIl0sXG4gIFsoXCJtw6luYWdlX2luXCIsIGVtYmVkX21lbmFnZVxuICAgIHguRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4ubWVuYWdlX2luKTtcbiAgICAoXCJkZW1hbmRldXJfaW5cIiwgZW1iZWRfZGVtYW5kZXVyXG4gICAgeC5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5kZW1hbmRldXJfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbildKVxuXG5cbm1vZHVsZSBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIG1lbmFnZV9pbjogTWVuYWdlLnQ7XG4gICAgZGVtYW5kZXVyX2luOiBEZW1hbmRldXIudDtcbiAgICBiZW5lZmljaWVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luOiBib29sXG4gIH1cbmVuZFxubGV0IGVtYmVkX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4gKHg6IEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRfaW5cIl0sXG4gIFsoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwibcOpbmFnZV9pblwiLCBlbWJlZF9tZW5hZ2VcbiAgICB4LkVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4ubWVuYWdlX2luKTtcbiAgICAoXCJkZW1hbmRldXJfaW5cIiwgZW1iZWRfZGVtYW5kZXVyXG4gICAgeC5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluLmRlbWFuZGV1cl9pbik7XG4gICAgKFwiYsOpbsOpZmljaWVfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudF9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluLmJlbmVmaWNpZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4pXSlcblxuXG5tb2R1bGUgRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGluZm9ybWF0aW9uc19pbjogSW5mb3JtYXRpb25zUHJpbWVEZURlbWVuYWdlbWVudC50O1xuICAgIGRhdGVfZW1tZW5hZ2VtZW50X2luOiBkYXRlO1xuICAgIG1lbmFnZV9pbjogTWVuYWdlLnQ7XG4gICAgZGVtYW5kZXVyX2luOiBEZW1hbmRldXIudDtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIGRlcGVuc2VzX2p1c3RpZmllZXNfcmVlbGxlbWVudF9lbmdhZ2Vlc19pbjogbW9uZXlcbiAgfVxuZW5kXG5sZXQgZW1iZWRfZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luICh4OiBFbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnRJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudF9pblwiXSxcbiAgWyhcImluZm9ybWF0aW9uc19pblwiLCBlbWJlZF9pbmZvcm1hdGlvbnNfcHJpbWVfZGVfZGVtZW5hZ2VtZW50XG4gICAgeC5FbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnRJbi5pbmZvcm1hdGlvbnNfaW4pO1xuICAgIChcImRhdGVfZW1tw6luYWdlbWVudF9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5FbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnRJbi5kYXRlX2VtbWVuYWdlbWVudF9pbik7XG4gICAgKFwibcOpbmFnZV9pblwiLCBlbWJlZF9tZW5hZ2VcbiAgICB4LkVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudEluLm1lbmFnZV9pbik7XG4gICAgKFwiZGVtYW5kZXVyX2luXCIsIGVtYmVkX2RlbWFuZGV1clxuICAgIHguRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4uZGVtYW5kZXVyX2luKTtcbiAgICAoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudEluLmRhdGVfY291cmFudGVfaW4pO1xuICAgIChcImTDqXBlbnNlc19qdXN0aWZpw6llc19yw6llbGxlbWVudF9lbmdhZ8OpZXNfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudEluLmRlcGVuc2VzX2p1c3RpZmllZXNfcmVlbGxlbWVudF9lbmdhZ2Vlc19pbildKVxuXG5cbm1vZHVsZSBDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7ZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTsgbGlldV9pbjogQ29sbGVjdGl2aXRlLnR9XG5lbmRcbmxldCBlbWJlZF9jb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luICh4OiBDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50X2luXCJdLFxuICBbKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5Db250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJsaWV1X2luXCIsIGVtYmVkX2NvbGxlY3Rpdml0ZVxuICAgIHguQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ubGlldV9pbildKVxuXG5cbm1vZHVsZSBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBsb3llcl9wcmluY2lwYWxfYmFzZV9pbjogbW9uZXk7XG4gICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luOiBtb25leTtcbiAgICBiZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfaW46IGJvb2w7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTtcbiAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luOiBpbnRlZ2VyO1xuICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbjogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQ7XG4gICAgem9uZV9pbjogWm9uZURIYWJpdGF0aW9uLnQ7XG4gICAgbG9nZW1lbnRfZXN0X2NoYW1icmVfaW46IGJvb2w7XG4gICAgYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfaW46IGJvb2w7XG4gICAgdHlwZV9haWRlX2luOiBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQ7XG4gICAgY29sb2NhdGlvbl9pbjogYm9vbDtcbiAgICByZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9pbjogbW9uZXk7XG4gICAgbG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl9pbjogYm9vbDtcbiAgICByZXNpZGVuY2VfaW46IENvbGxlY3Rpdml0ZS50XG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbiAoeDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmX2luXCJdLFxuICBbKFwibG95ZXJfcHJpbmNpcGFsX2Jhc2VfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ubG95ZXJfcHJpbmNpcGFsX2Jhc2VfaW4pO1xuICAgIChcInJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luKTtcbiAgICAoXCJiw6luw6lmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXDDqXNfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5iZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9pblwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4pO1xuICAgIChcInNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblwiLFxuICAgIGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbik7XG4gICAgKFwiem9uZV9pblwiLCBlbWJlZF96b25lX2RfaGFiaXRhdGlvblxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi56b25lX2luKTtcbiAgICAoXCJsb2dlbWVudF9lc3RfY2hhbWJyZV9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmxvZ2VtZW50X2VzdF9jaGFtYnJlX2luKTtcbiAgICAoXCLDomfDqWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaMOpYmVyZ8OpZXNfb27DqXJldXhfcGFydGljdWxpZXJzX2luXCIsXG4gICAgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5hZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc19pbik7XG4gICAgKFwidHlwZV9haWRlX2luXCIsIGVtYmVkX3R5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4udHlwZV9haWRlX2luKTtcbiAgICAoXCJjb2xvY2F0aW9uX2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uY29sb2NhdGlvbl9pbik7XG4gICAgKFwicsOpZHVjdGlvbl9sb3llcl9zb2xpZGFyaXTDqV9pblwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9pbik7XG4gICAgKFwibG9nZW1lbnRfbWV1YmzDqV9kODQyXzJfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9tZXVibGVfZDg0Ml8yX2luKTtcbiAgICAoXCJyw6lzaWRlbmNlX2luXCIsIGVtYmVkX2NvbGxlY3Rpdml0ZVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5yZXNpZGVuY2VfaW4pXSlcblxuXG5tb2R1bGUgQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGU7XG4gICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luOiBtb25leTtcbiAgICBjb25kaXRpb25fMl9kdV84MzJfMjVfaW46IGJvb2w7XG4gICAgbl9ub21icmVfcGFydHNfZDgzMl8yNV9pbjogZGVjaW1hbFxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW4gKHg6IENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWzDiXF1aXZhbGVuY2VMb3llck1pbmltYWxlX2luXCJdLFxuICBbKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5DYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJyZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4pO1xuICAgIChcImNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW4pO1xuICAgIChcIm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW5cIiwgZW1iZWRfZGVjaW1hbFxuICAgIHguQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4ubl9ub21icmVfcGFydHNfZDgzMl8yNV9pbildKVxuXG5cbm1vZHVsZSBDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llckluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIGNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbjogYm9vbDtcbiAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luOiBpbnRlZ2VyO1xuICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbjogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQ7XG4gICAgbGltaXRhdGlvbl9tYWpvcmF0aW9uX3BlcnNvbm5lc19hX2NoYXJnZV9pbjogdW5pdCAtPiBib29sXG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbiAoeDogQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJfaW5cIl0sXG4gIFsoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwiY29uZGl0aW9uXzJfZHVfODMyXzI1X2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4uY29uZGl0aW9uXzJfZHVfODMyXzI1X2luKTtcbiAgICAoXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9pblwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5DYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llckluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4pO1xuICAgIChcInNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblwiLFxuICAgIGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sXG4gICAgeC5DYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llckluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbik7XG4gICAgKFwibGltaXRhdGlvbl9tYWpvcmF0aW9uX3BlcnNvbm5lc1/DoF9jaGFyZ2VfaW5cIiwgdW5lbWJlZGRhYmxlXG4gICAgeC5DYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llckluLmxpbWl0YXRpb25fbWFqb3JhdGlvbl9wZXJzb25uZXNfYV9jaGFyZ2VfaW4pXSlcblxuXG5tb2R1bGUgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIHJlc2lkZW5jZV9pbjogQ29sbGVjdGl2aXRlLnQ7XG4gICAgbG9nZW1lbnRfZm95ZXJfamV1bmVzX3RyYXZhaWxsZXVyc19pbjogYm9vbDtcbiAgICB0eXBlX2xvZ2VtZW50X2ZveWVyX2luOiBUeXBlTG9nZW1lbnRGb3llci50O1xuICAgIGRhdGVfY29udmVudGlvbm5lbWVudF9pbjogZGF0ZTtcbiAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW46IG1vbmV5O1xuICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW46IGludGVnZXI7XG4gICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudDtcbiAgICB6b25lX2luOiBab25lREhhYml0YXRpb24udDtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIHJlZGV2YW5jZV9pbjogbW9uZXk7XG4gICAgY29uZGl0aW9uXzJfZHVfODMyXzI1X2luOiB1bml0IC0+IGJvb2w7XG4gICAgbGltaXRhdGlvbl9tYWpvcmF0aW9uX3BlcnNvbm5lc19hX2NoYXJnZV9pbjogdW5pdCAtPiBib29sO1xuICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW46IHVuaXQgLT4gZGVjaW1hbFxuICB9XG5lbmRcbmxldCBlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luICh4OiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llcl9pblwiXSxcbiAgWyhcInLDqXNpZGVuY2VfaW5cIiwgZW1iZWRfY29sbGVjdGl2aXRlXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5yZXNpZGVuY2VfaW4pO1xuICAgIChcImxvZ2VtZW50X2ZveWVyX2pldW5lc190cmF2YWlsbGV1cnNfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ubG9nZW1lbnRfZm95ZXJfamV1bmVzX3RyYXZhaWxsZXVyc19pbik7XG4gICAgKFwidHlwZV9sb2dlbWVudF9mb3llcl9pblwiLCBlbWJlZF90eXBlX2xvZ2VtZW50X2ZveWVyXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi50eXBlX2xvZ2VtZW50X2ZveWVyX2luKTtcbiAgICAoXCJkYXRlX2NvbnZlbnRpb25uZW1lbnRfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uZGF0ZV9jb252ZW50aW9ubmVtZW50X2luKTtcbiAgICAoXCJyZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4pO1xuICAgIChcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX2luXCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4pO1xuICAgIChcInNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblwiLFxuICAgIGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4pO1xuICAgIChcInpvbmVfaW5cIiwgZW1iZWRfem9uZV9kX2hhYml0YXRpb25cbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnpvbmVfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwicmVkZXZhbmNlX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5yZWRldmFuY2VfaW4pO1xuICAgIChcImNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pblwiLCB1bmVtYmVkZGFibGVcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbik7XG4gICAgKFwibGltaXRhdGlvbl9tYWpvcmF0aW9uX3BlcnNvbm5lc1/DoF9jaGFyZ2VfaW5cIiwgdW5lbWJlZGRhYmxlXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5saW1pdGF0aW9uX21ham9yYXRpb25fcGVyc29ubmVzX2FfY2hhcmdlX2luKTtcbiAgICAoXCJuX25vbWJyZV9wYXJ0c19kODMyXzI1X2luXCIsIHVuZW1iZWRkYWJsZVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ubl9ub21icmVfcGFydHNfZDgzMl8yNV9pbildKVxuXG5cbm1vZHVsZSBDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZUluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luOiBpbnRlZ2VyO1xuICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbjogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnRcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luICh4OiBDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZUluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByacOpdMOpX2luXCJdLFxuICBbKFwibm9tYnJlX3BlcnNvbm5lc1/DoF9jaGFyZ2VfaW5cIiwgZW1iZWRfaW50ZWdlclxuICAgIHguQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGVJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luKTtcbiAgICAoXCJzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW5cIixcbiAgICBlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbFxuICAgIHguQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGVJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4pXSlcblxuXG5tb2R1bGUgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBtZW5zdWFsaXRlX3ByaW5jaXBhbGVfaW46IG1vbmV5O1xuICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbjogbW9uZXk7XG4gICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbjogaW50ZWdlcjtcbiAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW46IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50O1xuICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9pbjogVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS50O1xuICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfaW46IGRhdGU7XG4gICAgbG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlX2luOiBib29sO1xuICAgIGRhdGVfZW50cmVlX2xvZ2VtZW50X2luOiBkYXRlO1xuICAgIGNvcHJvcHJpZXRlX2luOiBib29sO1xuICAgIHNpdHVhdGlvbl9yODIyXzExXzEzXzE3X2luOiBib29sO1xuICAgIHpvbmVfaW46IFpvbmVESGFiaXRhdGlvbi50O1xuICAgIHR5cGVfcHJldF9pbjogVHlwZVByZXQudDtcbiAgICBhbmNpZW5uZXRlX2xvZ2VtZW50X2luOiBOZXVmT3VBbmNpZW4udDtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIHJlc2lkZW5jZV9pbjogQ29sbGVjdGl2aXRlLnRcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luICh4OiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lfaW5cIl0sXG4gIFsoXCJtZW5zdWFsaXTDqV9wcmluY2lwYWxlX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubWVuc3VhbGl0ZV9wcmluY2lwYWxlX2luKTtcbiAgICAoXCJyZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luKTtcbiAgICAoXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9pblwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbik7XG4gICAgKFwic2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXCIsXG4gICAgZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4pO1xuICAgIChcInR5cGVfdHJhdmF1eF9sb2dlbWVudF9pblwiLCBlbWJlZF90eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9pbik7XG4gICAgKFwiZGF0ZV9zaWduYXR1cmVfcHLDqnRfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfc2lnbmF0dXJlX3ByZXRfaW4pO1xuICAgIChcImxvY2FsX2hhYml0w6lfcHJlbWnDqHJlX2ZvaXNfYsOpbsOpZmljaWFpcmVfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZV9pbik7XG4gICAgKFwiZGF0ZV9lbnRyw6llX2xvZ2VtZW50X2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX2VudHJlZV9sb2dlbWVudF9pbik7XG4gICAgKFwiY29wcm9wcmnDqXTDqV9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uY29wcm9wcmlldGVfaW4pO1xuICAgIChcInNpdHVhdGlvbl9yODIyXzExXzEzXzE3X2luXCIsIGVtYmVkX2Jvb2xcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5zaXR1YXRpb25fcjgyMl8xMV8xM18xN19pbik7XG4gICAgKFwiem9uZV9pblwiLCBlbWJlZF96b25lX2RfaGFiaXRhdGlvblxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnpvbmVfaW4pO1xuICAgIChcInR5cGVfcHLDqnRfaW5cIiwgZW1iZWRfdHlwZV9wcmV0XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udHlwZV9wcmV0X2luKTtcbiAgICAoXCJhbmNpZW5uZXTDqV9sb2dlbWVudF9pblwiLCBlbWJlZF9uZXVmX291X2FuY2llblxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmFuY2llbm5ldGVfbG9nZW1lbnRfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfY291cmFudGVfaW4pO1xuICAgIChcInLDqXNpZGVuY2VfaW5cIiwgZW1iZWRfY29sbGVjdGl2aXRlXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ucmVzaWRlbmNlX2luKV0pXG5cblxubW9kdWxlIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgbW9kZV9vY2N1cGF0aW9uX2luOiBNb2RlT2NjdXBhdGlvbi50O1xuICAgIHR5cGVfYWlkZV9pbjogVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50O1xuICAgIHJlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV9pbjogbW9uZXk7XG4gICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9pbjogU2l0dWF0aW9uRmFtaWxpYWxlLnQ7XG4gICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbjogaW50ZWdlcjtcbiAgICB6b25lX2luOiBab25lREhhYml0YXRpb24udDtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIHJlc2lkZW5jZV9pbjogQ29sbGVjdGl2aXRlLnRcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiAoeDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudF9pblwiXSxcbiAgWyhcIm1vZGVfb2NjdXBhdGlvbl9pblwiLCBlbWJlZF9tb2RlX29jY3VwYXRpb25cbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5tb2RlX29jY3VwYXRpb25faW4pO1xuICAgIChcInR5cGVfYWlkZV9pblwiLCBlbWJlZF90eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4udHlwZV9haWRlX2luKTtcbiAgICAoXCJyZXNzb3VyY2VzX23DqW5hZ2Vfc2Fuc19hcnJvbmRpX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4ucmVzc291cmNlc19tZW5hZ2Vfc2Fuc19hcnJvbmRpX2luKTtcbiAgICAoXCJzaXR1YXRpb25fZmFtaWxpYWxlX2luXCIsIGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVcbiAgICB4LkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2luKTtcbiAgICAoXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9pblwiLCBlbWJlZF9pbnRlZ2VyXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbik7XG4gICAgKFwiem9uZV9pblwiLCBlbWJlZF96b25lX2RfaGFiaXRhdGlvblxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnpvbmVfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4pO1xuICAgIChcInLDqXNpZGVuY2VfaW5cIiwgZW1iZWRfY29sbGVjdGl2aXRlXG4gICAgeC5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4ucmVzaWRlbmNlX2luKV0pXG5cblxubW9kdWxlIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgbG95ZXJfcHJpbmNpcGFsX2luOiBtb25leTtcbiAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW46IG1vbmV5O1xuICAgIGJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc19pbjogYm9vbDtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW46IGludGVnZXI7XG4gICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudDtcbiAgICB6b25lX2luOiBab25lREhhYml0YXRpb24udDtcbiAgICBsb2dlbWVudF9lc3RfY2hhbWJyZV9pbjogYm9vbDtcbiAgICBhZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc19pbjogYm9vbDtcbiAgICB0eXBlX2FpZGVfaW46IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudDtcbiAgICBjb2xvY2F0aW9uX2luOiBib29sO1xuICAgIHJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX2luOiBtb25leTtcbiAgICBsb2dlbWVudF9tZXVibGVfZDg0Ml8yX2luOiBib29sO1xuICAgIHJlc2lkZW5jZV9pbjogQ29sbGVjdGl2aXRlLnQ7XG4gICAgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfaW46IENoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LnRcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbiAoeDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmX2luXCJdLFxuICBbKFwibG95ZXJfcHJpbmNpcGFsX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubG95ZXJfcHJpbmNpcGFsX2luKTtcbiAgICAoXCJyZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luKTtcbiAgICAoXCJiw6luw6lmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXDDqXNfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc19pbik7XG4gICAgKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwibm9tYnJlX3BlcnNvbm5lc1/DoF9jaGFyZ2VfaW5cIiwgZW1iZWRfaW50ZWdlclxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4pO1xuICAgIChcInNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblwiLFxuICAgIGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luKTtcbiAgICAoXCJ6b25lX2luXCIsIGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uem9uZV9pbik7XG4gICAgKFwibG9nZW1lbnRfZXN0X2NoYW1icmVfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmxvZ2VtZW50X2VzdF9jaGFtYnJlX2luKTtcbiAgICAoXCLDomfDqWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaMOpYmVyZ8OpZXNfb27DqXJldXhfcGFydGljdWxpZXJzX2luXCIsXG4gICAgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzX2luKTtcbiAgICAoXCJ0eXBlX2FpZGVfaW5cIiwgZW1iZWRfdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnR5cGVfYWlkZV9pbik7XG4gICAgKFwiY29sb2NhdGlvbl9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uY29sb2NhdGlvbl9pbik7XG4gICAgKFwicsOpZHVjdGlvbl9sb3llcl9zb2xpZGFyaXTDqV9pblwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX2luKTtcbiAgICAoXCJsb2dlbWVudF9tZXVibMOpX2Q4NDJfMl9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl9pbik7XG4gICAgKFwicsOpc2lkZW5jZV9pblwiLCBlbWJlZF9jb2xsZWN0aXZpdGVcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5yZXNpZGVuY2VfaW4pO1xuICAgIChcImNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80X2luXCIsIGVtYmVkX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfaW4pXSlcblxuXG5tb2R1bGUgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19iYXNlX2luOiBtb25leTtcbiAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luOiBpbnRlZ2VyO1xuICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbjogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQ7XG4gICAgem9uZV9pbjogWm9uZURIYWJpdGF0aW9uLnQ7XG4gICAgcmVzaWRlbmNlX2luOiBDb2xsZWN0aXZpdGUudDtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIG1lbnN1YWxpdGVfcHJpbmNpcGFsZV9pbjogbW9uZXk7XG4gICAgc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfaW46IGJvb2w7XG4gICAgZGF0ZV9zaWduYXR1cmVfcHJldF9pbjogZGF0ZTtcbiAgICB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfaW46IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS50O1xuICAgIGxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZV9pbjogYm9vbDtcbiAgICBkYXRlX2VudHJlZV9sb2dlbWVudF9pbjogZGF0ZTtcbiAgICBjaGFyZ2VzX21lbnN1ZWxsZXNfcHJldF9pbjogbW9uZXk7XG4gICAgY29wcm9wcmlldGVfaW46IGJvb2w7XG4gICAgb3BlcmF0aW9uc19sb2dlbWVudF9ldm9sdXRpZnNfc29jaWF1eF9hY2Nlc3Npb25fcHJvcHJpZXRlX2FpZGVlX0V0YXRfaW46XG4gICAgICBib29sXG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4gKHg6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqV9pblwiXSxcbiAgWyhcInJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNfYmFzZV9pblwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfaW4pO1xuICAgIChcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX2luXCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4pO1xuICAgIChcInNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblwiLFxuICAgIGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4pO1xuICAgIChcInpvbmVfaW5cIiwgZW1iZWRfem9uZV9kX2hhYml0YXRpb25cbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnpvbmVfaW4pO1xuICAgIChcInLDqXNpZGVuY2VfaW5cIiwgZW1iZWRfY29sbGVjdGl2aXRlXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5yZXNpZGVuY2VfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwibWVuc3VhbGl0w6lfcHJpbmNpcGFsZV9pblwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubWVuc3VhbGl0ZV9wcmluY2lwYWxlX2luKTtcbiAgICAoXCJzaXR1YXRpb25fcjgyMl8xMV8xM18xN19pblwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5zaXR1YXRpb25fcjgyMl8xMV8xM18xN19pbik7XG4gICAgKFwiZGF0ZV9zaWduYXR1cmVfcHLDqnRfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9zaWduYXR1cmVfcHJldF9pbik7XG4gICAgKFwidHlwZV90cmF2YXV4X2xvZ2VtZW50X2luXCIsIGVtYmVkX3R5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzVcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9pbik7XG4gICAgKFwibG9jYWxfaGFiaXTDqV9wcmVtacOocmVfZm9pc19iw6luw6lmaWNpYWlyZV9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5sb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfaW4pO1xuICAgIChcImRhdGVfZW50csOpZV9sb2dlbWVudF9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX2VudHJlZV9sb2dlbWVudF9pbik7XG4gICAgKFwiY2hhcmdlc19tZW5zdWVsbGVzX3Byw6p0X2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5jaGFyZ2VzX21lbnN1ZWxsZXNfcHJldF9pbik7XG4gICAgKFwiY29wcm9wcmnDqXTDqV9pblwiLCBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5jb3Byb3ByaWV0ZV9pbik7XG4gICAgKFwib3DDqXJhdGlvbnNfbG9nZW1lbnRfw6l2b2x1dGlmc19zb2NpYXV4X2FjY2Vzc2lvbl9wcm9wcmnDqXTDqV9haWTDqWVfw4l0YXRfaW5cIixcbiAgICBlbWJlZF9ib29sXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5vcGVyYXRpb25zX2xvZ2VtZW50X2V2b2x1dGlmc19zb2NpYXV4X2FjY2Vzc2lvbl9wcm9wcmlldGVfYWlkZWVfRXRhdF9pbildKVxuXG5cbm1vZHVsZSBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICB0eXBlX2xvZ2VtZW50X2ZveWVyX2luOiBUeXBlTG9nZW1lbnRGb3llci50O1xuICAgIGxvZ2VtZW50X2ZveWVyX2pldW5lc190cmF2YWlsbGV1cnNfaW46IGJvb2w7XG4gICAgZGF0ZV9jb252ZW50aW9ubmVtZW50X2luOiBkYXRlO1xuICAgIHJlc2lkZW5jZV9pbjogQ29sbGVjdGl2aXRlLnQ7XG4gICAgcmVkZXZhbmNlX2luOiBtb25leTtcbiAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW46IG1vbmV5O1xuICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW46IGludGVnZXI7XG4gICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudDtcbiAgICB6b25lX2luOiBab25lREhhYml0YXRpb24udDtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X2luOlxuICAgICAgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLnRcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4gKHg6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyX2luXCJdLFxuICBbKFwidHlwZV9sb2dlbWVudF9mb3llcl9pblwiLCBlbWJlZF90eXBlX2xvZ2VtZW50X2ZveWVyXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnR5cGVfbG9nZW1lbnRfZm95ZXJfaW4pO1xuICAgIChcImxvZ2VtZW50X2ZveWVyX2pldW5lc190cmF2YWlsbGV1cnNfaW5cIiwgZW1iZWRfYm9vbFxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5sb2dlbWVudF9mb3llcl9qZXVuZXNfdHJhdmFpbGxldXJzX2luKTtcbiAgICAoXCJkYXRlX2NvbnZlbnRpb25uZW1lbnRfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5kYXRlX2NvbnZlbnRpb25uZW1lbnRfaW4pO1xuICAgIChcInLDqXNpZGVuY2VfaW5cIiwgZW1iZWRfY29sbGVjdGl2aXRlXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnJlc2lkZW5jZV9pbik7XG4gICAgKFwicmVkZXZhbmNlX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnJlZGV2YW5jZV9pbik7XG4gICAgKFwicmVzc291cmNlc19tw6luYWdlX2Fycm9uZGllc19pblwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4pO1xuICAgIChcIm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlX2luXCIsIGVtYmVkX2ludGVnZXJcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbik7XG4gICAgKFwic2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXCIsXG4gICAgZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luKTtcbiAgICAoXCJ6b25lX2luXCIsIGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnpvbmVfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJjYXTDqWdvcmllX8OpcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X2luXCIsXG4gICAgZW1iZWRfY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJcbiAgICB4LkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4uY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZfaW4pXSlcblxuXG5tb2R1bGUgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG1vZGVfb2NjdXBhdGlvbl9pbjogTW9kZU9jY3VwYXRpb24udDtcbiAgICByZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfaW46IG1vbmV5O1xuICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfaW46IFNpdHVhdGlvbkZhbWlsaWFsZS50O1xuICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW46IGludGVnZXI7XG4gICAgem9uZV9pbjogWm9uZURIYWJpdGF0aW9uLnQ7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTtcbiAgICB0eXBlX2FpZGVfaW46IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudDtcbiAgICByZXNpZGVuY2VfaW46IENvbGxlY3Rpdml0ZS50XG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luICh4OiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50X2luXCJdLFxuICBbKFwibW9kZV9vY2N1cGF0aW9uX2luXCIsIGVtYmVkX21vZGVfb2NjdXBhdGlvblxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4ubW9kZV9vY2N1cGF0aW9uX2luKTtcbiAgICAoXCJyZXNzb3VyY2VzX23DqW5hZ2Vfc2Fuc19hcnJvbmRpX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi5yZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfaW4pO1xuICAgIChcInNpdHVhdGlvbl9mYW1pbGlhbGVfaW5cIiwgZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9pbik7XG4gICAgKFwibm9tYnJlX3BlcnNvbm5lc1/DoF9jaGFyZ2VfaW5cIiwgZW1iZWRfaW50ZWdlclxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbik7XG4gICAgKFwiem9uZV9pblwiLCBlbWJlZF96b25lX2RfaGFiaXRhdGlvblxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4uem9uZV9pbik7XG4gICAgKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJ0eXBlX2FpZGVfaW5cIiwgZW1iZWRfdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4udHlwZV9haWRlX2luKTtcbiAgICAoXCJyw6lzaWRlbmNlX2luXCIsIGVtYmVkX2NvbGxlY3Rpdml0ZVxuICAgIHguQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4ucmVzaWRlbmNlX2luKV0pXG5cblxubW9kdWxlIE91dmVydHVyZURyb2l0c1JldHJhaXRlSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge2RhdGVfbmFpc3NhbmNlX2Fzc3VyZV9pbjogZGF0ZX1cbmVuZFxubGV0IGVtYmVkX291dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW4gKHg6IE91dmVydHVyZURyb2l0c1JldHJhaXRlSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIk91dmVydHVyZURyb2l0c1JldHJhaXRlX2luXCJdLFxuICBbKFwiZGF0ZV9uYWlzc2FuY2VfYXNzdXLDqV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5PdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZUluLmRhdGVfbmFpc3NhbmNlX2Fzc3VyZV9pbildKVxuXG5cbm1vZHVsZSBJbXBheWVEZXBlbnNlTG9nZW1lbnRJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgbW9kZV9vY2N1cGF0aW9uX2luOiBNb2RlT2NjdXBhdGlvbi50O1xuICAgIGFpZGVfdmVyc2VlX2luOiBWZXJzZW1lbnRBLnQ7XG4gICAgbW9udGFudF9hcGxfaW46IG1vbmV5O1xuICAgIG1vbnRhbnRfY2hhcmdlc19pbjogbW9uZXk7XG4gICAgZGVwZW5zZV9sb2dlbWVudF9pbjogRGVwZW5zZUxvZ2VtZW50LnQ7XG4gICAgbW9udGFudF9kZXR0ZV9pbjogbW9uZXlcbiAgfVxuZW5kXG5sZXQgZW1iZWRfaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4gKHg6IEltcGF5ZURlcGVuc2VMb2dlbWVudEluLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJJbXBhecOpRMOpcGVuc2VMb2dlbWVudF9pblwiXSxcbiAgWyhcIm1vZGVfb2NjdXBhdGlvbl9pblwiLCBlbWJlZF9tb2RlX29jY3VwYXRpb25cbiAgICB4LkltcGF5ZURlcGVuc2VMb2dlbWVudEluLm1vZGVfb2NjdXBhdGlvbl9pbik7XG4gICAgKFwiYWlkZV92ZXJzw6llX2luXCIsIGVtYmVkX3ZlcnNlbWVudF9hXG4gICAgeC5JbXBheWVEZXBlbnNlTG9nZW1lbnRJbi5haWRlX3ZlcnNlZV9pbik7XG4gICAgKFwibW9udGFudF9hcGxfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkltcGF5ZURlcGVuc2VMb2dlbWVudEluLm1vbnRhbnRfYXBsX2luKTtcbiAgICAoXCJtb250YW50X2NoYXJnZXNfaW5cIiwgZW1iZWRfbW9uZXlcbiAgICB4LkltcGF5ZURlcGVuc2VMb2dlbWVudEluLm1vbnRhbnRfY2hhcmdlc19pbik7XG4gICAgKFwiZMOpcGVuc2VfbG9nZW1lbnRfaW5cIiwgZW1iZWRfZGVwZW5zZV9sb2dlbWVudFxuICAgIHguSW1wYXllRGVwZW5zZUxvZ2VtZW50SW4uZGVwZW5zZV9sb2dlbWVudF9pbik7XG4gICAgKFwibW9udGFudF9kZXR0ZV9pblwiLCBlbWJlZF9tb25leVxuICAgIHguSW1wYXllRGVwZW5zZUxvZ2VtZW50SW4ubW9udGFudF9kZXR0ZV9pbildKVxuXG5cbm1vZHVsZSBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG1lbmFnZV9pbjogTWVuYWdlLnQ7XG4gICAgZGVtYW5kZXVyX2luOiBEZW1hbmRldXIudDtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIHJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfaW46IG1vbmV5XG4gIH1cbmVuZFxubGV0IGVtYmVkX2NhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4gKHg6IENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudF9pblwiXSxcbiAgWyhcIm3DqW5hZ2VfaW5cIiwgZW1iZWRfbWVuYWdlXG4gICAgeC5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4ubWVuYWdlX2luKTtcbiAgICAoXCJkZW1hbmRldXJfaW5cIiwgZW1iZWRfZGVtYW5kZXVyXG4gICAgeC5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4uZGVtYW5kZXVyX2luKTtcbiAgICAoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJyZXNzb3VyY2VzX23DqW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV9pblwiLCBlbWJlZF9tb25leVxuICAgIHguQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLnJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfaW4pXSlcblxuXG5tb2R1bGUgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWVJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgbWVuYWdlX2luOiBNZW5hZ2UudDtcbiAgICBkZW1hbmRldXJfaW46IERlbWFuZGV1ci50O1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGU7XG4gICAgcmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV9pbjogbW9uZXlcbiAgfVxuZW5kXG5sZXQgZW1iZWRfY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbiAoeDogQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWVJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llX2luXCJdLFxuICBbKFwibcOpbmFnZV9pblwiLCBlbWJlZF9tZW5hZ2VcbiAgICB4LkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlSW4ubWVuYWdlX2luKTtcbiAgICAoXCJkZW1hbmRldXJfaW5cIiwgZW1iZWRfZGVtYW5kZXVyXG4gICAgeC5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZUluLmRlbWFuZGV1cl9pbik7XG4gICAgKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZUluLmRhdGVfY291cmFudGVfaW4pO1xuICAgIChcInJlc3NvdXJjZXNfbcOpbmFnZV9wcmlzZXNfZW5fY29tcHRlX2luXCIsIGVtYmVkX21vbmV5XG4gICAgeC5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZUluLnJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfaW4pXSlcblxuXG5tb2R1bGUgQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luID0gc3RydWN0XG4gIHR5cGUgdCA9IHtkYXRlX2NvdXJhbnRlX2luOiBkYXRlfVxuZW5kXG5sZXQgZW1iZWRfYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiAoeDogQmFzZU1lbnN1ZWxsZUFsbG9jYXRpb25zRmFtaWxpYWxlc0luLnQpIDogcnVudGltZV92YWx1ZSA9XG4gIFN0cnVjdChbXCJCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzX2luXCJdLFxuICBbKFwiZGF0ZV9jb3VyYW50ZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5CYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4uZGF0ZV9jb3VyYW50ZV9pbildKVxuXG5cbm1vZHVsZSBWZXJpZmljYXRpb25BZ2VJbmZlcmlldXJPdUVnYWxBSW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGRhdGVfbmFpc3NhbmNlX2luOiBkYXRlO1xuICAgIGRhdGVfY291cmFudGVfaW46IGRhdGU7XG4gICAgYW5uZWVzX2luOiBkdXJhdGlvblxuICB9XG5lbmRcbmxldCBlbWJlZF92ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2FfaW4gKHg6IFZlcmlmaWNhdGlvbkFnZUluZmVyaWV1ck91RWdhbEFJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiVsOpcmlmaWNhdGlvbsOCZ2VJbmbDqXJpZXVyT3XDiWdhbMOAX2luXCJdLFxuICBbKFwiZGF0ZV9uYWlzc2FuY2VfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguVmVyaWZpY2F0aW9uQWdlSW5mZXJpZXVyT3VFZ2FsQUluLmRhdGVfbmFpc3NhbmNlX2luKTtcbiAgICAoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LlZlcmlmaWNhdGlvbkFnZUluZmVyaWV1ck91RWdhbEFJbi5kYXRlX2NvdXJhbnRlX2luKTtcbiAgICAoXCJhbm7DqWVzX2luXCIsIGVtYmVkX2R1cmF0aW9uXG4gICAgeC5WZXJpZmljYXRpb25BZ2VJbmZlcmlldXJPdUVnYWxBSW4uYW5uZWVzX2luKV0pXG5cblxubW9kdWxlIFZlcmlmaWNhdGlvbkFnZVN1cGVyaWV1ckFJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgZGF0ZV9uYWlzc2FuY2VfaW46IGRhdGU7XG4gICAgZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTtcbiAgICBhbm5lZXNfaW46IGR1cmF0aW9uXG4gIH1cbmVuZFxubGV0IGVtYmVkX3ZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfaW4gKHg6IFZlcmlmaWNhdGlvbkFnZVN1cGVyaWV1ckFJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPVxuICBTdHJ1Y3QoW1wiVsOpcmlmaWNhdGlvbsOCZ2VTdXDDqXJpZXVyw4BfaW5cIl0sXG4gIFsoXCJkYXRlX25haXNzYW5jZV9pblwiLCBlbWJlZF9kYXRlXG4gICAgeC5WZXJpZmljYXRpb25BZ2VTdXBlcmlldXJBSW4uZGF0ZV9uYWlzc2FuY2VfaW4pO1xuICAgIChcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguVmVyaWZpY2F0aW9uQWdlU3VwZXJpZXVyQUluLmRhdGVfY291cmFudGVfaW4pO1xuICAgIChcImFubsOpZXNfaW5cIiwgZW1iZWRfZHVyYXRpb24geC5WZXJpZmljYXRpb25BZ2VTdXBlcmlldXJBSW4uYW5uZWVzX2luKV0pXG5cblxubW9kdWxlIFNtaWNJbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7ZGF0ZV9jb3VyYW50ZV9pbjogZGF0ZTsgcmVzaWRlbmNlX2luOiBDb2xsZWN0aXZpdGUudH1cbmVuZFxubGV0IGVtYmVkX3NtaWNfaW4gKHg6IFNtaWNJbi50KSA6IHJ1bnRpbWVfdmFsdWUgPSBTdHJ1Y3QoW1wiU21pY19pblwiXSxcbiAgWyhcImRhdGVfY291cmFudGVfaW5cIiwgZW1iZWRfZGF0ZVxuICAgIHguU21pY0luLmRhdGVfY291cmFudGVfaW4pO1xuICAgIChcInLDqXNpZGVuY2VfaW5cIiwgZW1iZWRfY29sbGVjdGl2aXRlIHguU21pY0luLnJlc2lkZW5jZV9pbildKVxuXG5cbm1vZHVsZSBFbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlc0luID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBkYXRlX2NvdXJhbnRlX2luOiBkYXRlO1xuICAgIHJlc2lkZW5jZV9pbjogQ29sbGVjdGl2aXRlLnQ7XG4gICAgYWdlX2w1MTJfM18yX2luOiB1bml0IC0+IGR1cmF0aW9uXG4gIH1cbmVuZFxubGV0IGVtYmVkX2VsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4gKHg6IEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4udCkgOiBydW50aW1lX3ZhbHVlID1cbiAgU3RydWN0KFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNfaW5cIl0sXG4gIFsoXCJkYXRlX2NvdXJhbnRlX2luXCIsIGVtYmVkX2RhdGVcbiAgICB4LkVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4uZGF0ZV9jb3VyYW50ZV9pbik7XG4gICAgKFwicsOpc2lkZW5jZV9pblwiLCBlbWJlZF9jb2xsZWN0aXZpdGVcbiAgICB4LkVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4ucmVzaWRlbmNlX2luKTtcbiAgICAoXCLDomdlX2w1MTJfM18yX2luXCIsIHVuZW1iZWRkYWJsZVxuICAgIHguRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5hZ2VfbDUxMl8zXzJfaW4pXSlcblxuXG5cblxubGV0IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgKGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW46IENvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnQpIDogQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQgPVxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IGxpZXVfOiBDb2xsZWN0aXZpdGUudCA9IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ubGlldV9pbiBpblxuICBsZXQgZXhvbmVyZV9jc2dfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwiZXhvbsOpcsOpX2NzZ1wiXVxuICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNzsgc3RhcnRfY29sdW1uPTk7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mzc7IGVuZF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDEzNi0xLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IERlIGxhIGNvbnRyaWJ1dGlvbiBzb2NpYWxlIHN1ciBsZXMgcmV2ZW51cyBkJ2FjdGl2aXTDqSBldCBzdXIgbGVzIHJldmVudXMgZGUgcmVtcGxhY2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSA2IDogQ29udHJpYnV0aW9uIHNvY2lhbGUgZ8OpbsOpcmFsaXPDqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSTogVGl0cmUgSUlJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIHJlbGF0aXZlcyBhdSBmaW5hbmNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTA3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTUwNzsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bCBkZXMgY29udHJpYnV0aW9ucyBzb2NpYWxlcyBzJ2FwcGxpcXVhbnQgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTA3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTUwNzsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bCBkZXMgY29udHJpYnV0aW9ucyBzb2NpYWxlcyBzJ2FwcGxpcXVhbnQgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBfOiB1bml0ID0gaWYgKFxuICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTE0OyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTE0OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWwgZGVzIGNvbnRyaWJ1dGlvbnMgc29jaWFsZXMgcydhcHBsaXF1YW50IGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAoKSBlbHNlXG4gICAgICAgICAgICAgICAgICByYWlzZSAoQXNzZXJ0aW9uRmFpbGVkIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01MTQ7IHN0YXJ0X2NvbHVtbj0xMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01MTQ7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bCBkZXMgY29udHJpYnV0aW9ucyBzb2NpYWxlcyBzJ2FwcGxpcXVhbnQgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSBpblxuICBsZXQgdGF1eF9jcmRzXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcInRhdXhfY3Jkc1wiXVxuICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXV0cmVzX3NvdXJjZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTkwOyBzdGFydF9jb2x1bW49Mzk7IGVuZF9saW5lPTE5MDsgZW5kX2NvbHVtbj02ODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IERlcyBjb250cmlidXRpb25zIHBvdXIgbGUgcmVtYm91cnNlbWVudCBkZSBsYSBkZXR0ZSBzb2NpYWxlLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk9yZG9ubmFuY2UgbsKwIDk2LTUwIGR1IDI0IGphbnZpZXIgMTk5NiByZWxhdGl2ZSBhdSByZW1ib3Vyc2VtZW50IGRlIGxhIGRldHRlIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlXyAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSkpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwNVwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01MDY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTA2OyBlbmRfY29sdW1uPTIwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsIGRlcyBjb250cmlidXRpb25zIHNvY2lhbGVzIHMnYXBwbGlxdWFudCBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IF86IHVuaXQgPSBpZiAodHJ5IGV4b25lcmVfY3NnXyB3aXRoXG4gICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXV0cmVzX3NvdXJjZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTY7IHN0YXJ0X2NvbHVtbj0xMztcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTY7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogRGVzIGNvbnRyaWJ1dGlvbnMgcG91ciBsZSByZW1ib3Vyc2VtZW50IGRlIGxhIGRldHRlIHNvY2lhbGUuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJPcmRvbm5hbmNlIG7CsCA5Ni01MCBkdSAyNCBqYW52aWVyIDE5OTYgcmVsYXRpdmUgYXUgcmVtYm91cnNlbWVudCBkZSBsYSBkZXR0ZSBzb2NpYWxlXCJdfSkpKVxuICAgICAgICAgICAgICAgICAgdGhlbiAoKSBlbHNlXG4gICAgICAgICAgICAgICAgICByYWlzZSAoQXNzZXJ0aW9uRmFpbGVkIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXV0cmVzX3NvdXJjZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTY7IHN0YXJ0X2NvbHVtbj0xMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTY7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogRGVzIGNvbnRyaWJ1dGlvbnMgcG91ciBsZSByZW1ib3Vyc2VtZW50IGRlIGxhIGRldHRlIHNvY2lhbGUuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJPcmRvbm5hbmNlIG7CsCA5Ni01MCBkdSAyNCBqYW52aWVyIDE5OTYgcmVsYXRpdmUgYXUgcmVtYm91cnNlbWVudCBkZSBsYSBkZXR0ZSBzb2NpYWxlXCJdfSkgaW5cbiAgbGV0IG1vbnRhbnRfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcIm1vbnRhbnRcIl1cbiAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PXRydWV9ICh1bmVtYmVkZGFibGUpXG4gICAgKGZ1biAoYWlkZV9maW5hbGVfOiBtb25leSkgLT4gXG4gICAgICAgdHJ5XG4gICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXV0cmVzX3NvdXJjZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NzI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ3MzsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMTzY0MTQtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDb21ww6l0ZW5jZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIEllciA6IERpc3Bvc2l0aW9ucyBnw6luw6lyYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgSVYgOiBTYWludC1QaWVycmUtZXQtTWlxdWVsb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNpeGnDqG1lIHBhcnRpZSA6IGNvbGxlY3Rpdml0w6lzIGQnb3V0cmUtbWVyIHLDqWdpZXMgcGFyIGwnYXJ0aWNsZSA3NCBkZSBsYSBjb25zdGl0dXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZ8OpbsOpcmFsIGRlcyBjb2xsZWN0aXZpdMOpcyB0ZXJyaXRvcmlhbGVzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNykgKDIpICgyMikpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggbGlldV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3V5YW5lIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTGFSZXVuaW9uIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWF5b3R0ZSBfIC0+IGZhbHNlKSkpKVxuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKXxdKVxuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hdXRyZXNfc291cmNlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTI7IHN0YXJ0X2NvbHVtbj01OyBlbmRfbGluZT0xNTI7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBEZXMgY29udHJpYnV0aW9ucyBwb3VyIGxlIHJlbWJvdXJzZW1lbnQgZGUgbGEgZGV0dGUgc29jaWFsZS5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJPcmRvbm5hbmNlIG7CsCA5Ni01MCBkdSAyNCBqYW52aWVyIDE5OTYgcmVsYXRpdmUgYXUgcmVtYm91cnNlbWVudCBkZSBsYSBkZXR0ZSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV8gKGRhdGVfb2ZfbnVtYmVycyAoMjAxOCkgKDkpICgxKSkpKSlcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG9fbXVsdF9tb25fcmF0IGFpZGVfZmluYWxlXyB0YXV4X2NyZHNfKSlcbiAgICAgICB3aXRoXG4gICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01MDk7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NTA5OyBlbmRfY29sdW1uPTE5O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsIGRlcyBjb250cmlidXRpb25zIHNvY2lhbGVzIHMnYXBwbGlxdWFudCBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAge0NvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5tb250YW50ID0gbW9udGFudF99XG5cbmxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUgKGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbjogQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4udCkgOiBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGUudCA9XG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbi5DYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfOiBtb25leSA9IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbi5DYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gaW5cbiAgbGV0IGNvbmRpdGlvbl8yX2R1XzgzMl8yNV86IGJvb2wgPSBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW4uQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4uY29uZGl0aW9uXzJfZHVfODMyXzI1X2luIGluXG4gIGxldCBuX25vbWJyZV9wYXJ0c19kODMyXzI1XzogZGVjaW1hbCA9IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbi5DYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5uX25vbWJyZV9wYXJ0c19kODMyXzI1X2luIGluXG4gIGxldCBtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjZfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bMOJcXVpdmFsZW5jZUxveWVyTWluaW1hbGVcIjsgXCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjZcIl1cbiAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNzIzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI3MjM7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAob19ndF9kYXRfZGF0IGRhdGVfY291cmFudGVfIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMCkgKDEpKSkpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZiBjb25kaXRpb25fMl9kdV84MzJfMjVfIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjc2MzJcIilcbiAgICAgICAgICAgICAgZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDU1N1wiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjE0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTYxNDsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhbmNoZXNfcmV2ZW51c19kODMyXzI2XzogVHJhbmNoZVJldmVudS50IGFycmF5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3Vsw4lxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZVwiOyBcInRyYW5jaGVzX3JldmVudXNfZDgzMl8yNlwiXVxuICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9hcnJheSAoZW1iZWRfdHJhbmNoZV9yZXZlbnUpKVxuICAgIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI2ODc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI2ODc7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uXzJfZHVfODMyXzI1XykpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBbfCh7VHJhbmNoZVJldmVudS5oYXV0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKExpbWl0ZVRyYW5jaGUuUmV2ZW51IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNDIzMDNcIikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LmJhcyA9IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LnRhdXggPSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKX0pO1xuICAgICAgICAgICAgICAgICAgICAgICh7VHJhbmNoZVJldmVudS5oYXV0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKExpbWl0ZVRyYW5jaGUuUmV2ZW51IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDQ3NjFcIikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LmJhcyA9IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE0MjMwM1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS50YXV4ID0gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjRcIil9KTtcbiAgICAgICAgICAgICAgICAgICAgICAoe1RyYW5jaGVSZXZlbnUuaGF1dCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChMaW1pdGVUcmFuY2hlLlJldmVudSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjYyOTg1XCIpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS5iYXMgPSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDQ3NjFcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUudGF1eCA9IChkZWNpbWFsX29mX3N0cmluZyBcIjAuMjA4XCIpfSk7XG4gICAgICAgICAgICAgICAgICAgICAgKHtUcmFuY2hlUmV2ZW51LmhhdXQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoTGltaXRlVHJhbmNoZS5SZXZlbnUgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwOTUwNVwiKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUuYmFzID0gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjYyOTg1XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LnRhdXggPSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjIzMlwiKX0pO1xuICAgICAgICAgICAgICAgICAgICAgICh7VHJhbmNoZVJldmVudS5oYXV0ID0gKExpbWl0ZVRyYW5jaGUuSW5maW5pICgpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS5iYXMgPSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDk1MDVcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUudGF1eCA9IChkZWNpbWFsX29mX3N0cmluZyBcIjAuMzI4XCIpfSl8XSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI2Mzc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjYzNzsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIChvX2d0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV8gKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEwKSAoMSkpKSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgW3woe1RyYW5jaGVSZXZlbnUuaGF1dCA9XG4gICAgICAgICAgICAgICAgICAoTGltaXRlVHJhbmNoZS5SZXZlbnUgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5NDgxMFwiKSk7XG4gICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LmJhcyA9IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpO1xuICAgICAgICAgICAgICAgICAgVHJhbmNoZVJldmVudS50YXV4ID0gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wNFwiKX0pO1xuICAgICAgICAgICAgICAoe1RyYW5jaGVSZXZlbnUuaGF1dCA9XG4gICAgICAgICAgICAgICAgICAoTGltaXRlVHJhbmNoZS5SZXZlbnUgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2Nzg3MVwiKSk7XG4gICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LmJhcyA9IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTQ4MTBcIik7XG4gICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LnRhdXggPSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjEwNFwiKX0pO1xuICAgICAgICAgICAgICAoe1RyYW5jaGVSZXZlbnUuaGF1dCA9XG4gICAgICAgICAgICAgICAgICAoTGltaXRlVHJhbmNoZS5SZXZlbnUgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4OTYxOFwiKSk7XG4gICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LmJhcyA9IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjc4NzFcIik7XG4gICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LnRhdXggPSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjIxNlwiKX0pO1xuICAgICAgICAgICAgICAoe1RyYW5jaGVSZXZlbnUuaGF1dCA9XG4gICAgICAgICAgICAgICAgICAoTGltaXRlVHJhbmNoZS5SZXZlbnUgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUzNTc0NFwiKSk7XG4gICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LmJhcyA9IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODk2MThcIik7XG4gICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LnRhdXggPSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjI2NFwiKX0pO1xuICAgICAgICAgICAgICAoe1RyYW5jaGVSZXZlbnUuaGF1dCA9XG4gICAgICAgICAgICAgICAgICAoTGltaXRlVHJhbmNoZS5SZXZlbnUgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjYzMzEyOVwiKSk7XG4gICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LmJhcyA9IChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MzU3NDRcIik7XG4gICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51LnRhdXggPSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjMyXCIpfSk7XG4gICAgICAgICAgICAgICh7VHJhbmNoZVJldmVudS5oYXV0ID0gKExpbWl0ZVRyYW5jaGUuSW5maW5pICgpKTtcbiAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUuYmFzID0gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjYzMzEyOVwiKTtcbiAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnUudGF1eCA9IChkZWNpbWFsX29mX3N0cmluZyBcIjAuNDhcIil9KXxdKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02MTE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjExOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFuY2hlc19yZXZlbnVzX2Q4MzJfMjZfbXVsdGlwbGllZXNfOiBUcmFuY2hlUmV2ZW51RGVjaW1hbC50IGFycmF5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3Vsw4lxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZVwiO1xuICAgICAgXCJ0cmFuY2hlc19yZXZlbnVzX2Q4MzJfMjZfbXVsdGlwbGnDqWVzXCJdIHtpb19pbnB1dD1Ob0lucHV0O1xuICAgIGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2FycmF5IChlbWJlZF90cmFuY2hlX3JldmVudV9kZWNpbWFsKSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzk4ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zOTg4OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX21hcFxuICAgICAgICAgICAgICAoZnVuICh0cmFuY2hlXzogVHJhbmNoZVJldmVudS50KSAtPlxuICAgICAgICAgICAgICAgICB7VHJhbmNoZVJldmVudURlY2ltYWwuaGF1dCA9XG4gICAgICAgICAgICAgICAgICAgIChtYXRjaCAodHJhbmNoZV8uVHJhbmNoZVJldmVudS5oYXV0KVxuICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBMaW1pdGVUcmFuY2hlLlJldmVudSB0cmFuY2hlX2hhdXRfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgKExpbWl0ZVRyYW5jaGVEZWNpbWFsLlJldmVudVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdCAob190b3JhdF9tb24gdHJhbmNoZV9oYXV0XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzI1XykpXG4gICAgICAgICAgICAgICAgICAgICB8IExpbWl0ZVRyYW5jaGUuSW5maW5pIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAoTGltaXRlVHJhbmNoZURlY2ltYWwuSW5maW5pICgpKSk7XG4gICAgICAgICAgICAgICAgICAgIFRyYW5jaGVSZXZlbnVEZWNpbWFsLmJhcyA9XG4gICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfbW9uICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51LmJhcykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgbl9ub21icmVfcGFydHNfZDgzMl8yNV8pO1xuICAgICAgICAgICAgICAgICAgICBUcmFuY2hlUmV2ZW51RGVjaW1hbC50YXV4ID0gKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnUudGF1eCl9KVxuICAgICAgICAgICAgICB0cmFuY2hlc19yZXZlbnVzX2Q4MzJfMjZfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02MTI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjEyOyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWzDiXF1aXZhbGVuY2VMb3llck1pbmltYWxlXCI7IFwibW9udGFudFwiXSB7aW9faW5wdXQ9Tm9JbnB1dDtcbiAgICBpb19vdXRwdXQ9dHJ1ZX0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQwNDI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQwNDI7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbl8yX2R1XzgzMl8yNV8pKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAobGV0IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18gOiBkZWNpbWFsID1cbiAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfbW9uIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18pXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIChvX3RvbW9uZXlfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgIChvX2Rpdl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3JlZHVjZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChzdW0xXzogZGVjaW1hbCkgKHN1bTJfOiBkZWNpbWFsKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9yYXRfcmF0IHN1bTFfIHN1bTJfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAodHJhbmNoZV86IFRyYW5jaGVSZXZlbnVEZWNpbWFsLnQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51RGVjaW1hbC5iYXMpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51RGVjaW1hbC5oYXV0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTGltaXRlVHJhbmNoZURlY2ltYWwuUmV2ZW51IHRyYW5jaGVfaGF1dF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuY2hlX2hhdXRfKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuY2hlX2hhdXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJhbmNoZV8uVHJhbmNoZVJldmVudURlY2ltYWwuYmFzKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51RGVjaW1hbC50YXV4KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51RGVjaW1hbC5iYXMpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnVEZWNpbWFsLnRhdXgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMaW1pdGVUcmFuY2hlRGVjaW1hbC5JbmZpbmkgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnVEZWNpbWFsLmJhcykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJhbmNoZV8uVHJhbmNoZVJldmVudURlY2ltYWwudGF1eCkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbmNoZXNfcmV2ZW51c19kODMyXzI2X211bHRpcGxpZWVzXykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X21vbiBtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjZfKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTIuXCIpKSkpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDAxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQwMDE7IGVuZF9jb2x1bW49MjE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIChsZXQgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXyA6IGRlY2ltYWwgPVxuICAgICAgICAgICAgICAgKG9fdG9yYXRfbW9uIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18pXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKG9fdG9tb25leV9yYXRcbiAgICAgICAgICAgICAgIChvX2Rpdl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAob19hZGRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgKG9fcmVkdWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChzdW0xXzogZGVjaW1hbCkgKHN1bTJfOiBkZWNpbWFsKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfcmF0X3JhdCBzdW0xXyBzdW0yXylcbiAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAob19tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKHRyYW5jaGVfOiBUcmFuY2hlUmV2ZW51RGVjaW1hbC50KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9yYXRfcmF0IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnVEZWNpbWFsLmJhcykpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnVEZWNpbWFsLmhhdXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExpbWl0ZVRyYW5jaGVEZWNpbWFsLlJldmVudSB0cmFuY2hlX2hhdXRfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5jaGVfaGF1dF8pIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfcmF0X3JhdCB0cmFuY2hlX2hhdXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnVEZWNpbWFsLmJhcykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyYW5jaGVfLlRyYW5jaGVSZXZlbnVEZWNpbWFsLnRhdXgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJhbmNoZV8uVHJhbmNoZVJldmVudURlY2ltYWwuYmFzKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJhbmNoZV8uVHJhbmNoZVJldmVudURlY2ltYWwudGF1eCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMaW1pdGVUcmFuY2hlRGVjaW1hbC5JbmZpbmkgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51RGVjaW1hbC5iYXMpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmFuY2hlXy5UcmFuY2hlUmV2ZW51RGVjaW1hbC50YXV4KSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbmNoZXNfcmV2ZW51c19kODMyXzI2X211bHRpcGxpZWVzXykpXG4gICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X21vbiBtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjZfKVxuICAgICAgICAgICAgICAgICAgICAgICAgbl9ub21icmVfcGFydHNfZDgzMl8yNV8pKSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMi5cIikpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTYxNjsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02MTY7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAge0NhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZS5tb250YW50ID0gbW9udGFudF99XG5cbmxldCBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXIgKGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbjogQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJJbi50KSA6IENhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyLnQgPVxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBjb25kaXRpb25fMl9kdV84MzJfMjVfOiBib29sID0gY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4uY29uZGl0aW9uXzJfZHVfODMyXzI1X2luIGluXG4gIGxldCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llckluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gaW5cbiAgbGV0IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luIGluXG4gIGxldCBsaW1pdGF0aW9uX21ham9yYXRpb25fcGVyc29ubmVzX2FfY2hhcmdlXzogdW5pdCAtPiBib29sID0gY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4ubGltaXRhdGlvbl9tYWpvcmF0aW9uX3BlcnNvbm5lc19hX2NoYXJnZV9pbiBpblxuICBsZXQgbGltaXRhdGlvbl9tYWpvcmF0aW9uX3BlcnNvbm5lc19hX2NoYXJnZV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llclwiO1xuICAgICAgXCJsaW1pdGF0aW9uX21ham9yYXRpb25fcGVyc29ubmVzX8OgX2NoYXJnZVwiXSB7aW9faW5wdXQ9UmVlbnRyYW50O1xuICAgIGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPiBsaW1pdGF0aW9uX21ham9yYXRpb25fcGVyc29ubmVzX2FfY2hhcmdlXyAoKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYyNDsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTYyNDsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjI0OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTYyNDsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbl9ub21icmVfcGFydHNfZDgzMl8yNV9iYXNlXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyXCI7IFwibl9ub21icmVfcGFydHNfZDgzMl8yNV9iYXNlXCJdXG4gICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzk0Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mzk0NjsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uXzJfZHVfODMyXzI1XykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEuNVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpIHRoZW4gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMi41XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMy5cIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIzLjdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjQuM1wiKSkpKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzg1Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zODUyOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWYgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMS40XCIpXG4gICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEuOFwiKSkgZWxzZVxuICAgICAgICAgICAgICAoIGlmIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpXG4gICAgICAgICAgICAgICAgIHRoZW4gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMi41XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKVxuICAgICAgICAgICAgICAgICAgICB0aGVuIChkZWNpbWFsX29mX3N0cmluZyBcIjMuXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzXCIpKSB0aGVuIChkZWNpbWFsX29mX3N0cmluZyBcIjMuN1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjQuM1wiKSkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjI2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTYyNjsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbl9ub21icmVfcGFydHNfZDgzMl8yNV9tYWpvcmF0aW9uXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyXCI7IFwibl9ub21icmVfcGFydHNfZDgzMl8yNV9tYWpvcmF0aW9uXCJdXG4gICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChcbiAgICAgICAgICAgICAgICAgICAgICAgICBbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU1Mjc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTUyODsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NjEtOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBWSSA6IERpc3Bvc2l0aW9uIHBhcnRpY3VsacOocmVzIMOgIGwnb3V0cmUtbWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICg5KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIzKSAoNCkgKDUpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXRhdGlvbl9tYWpvcmF0aW9uX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9pbnRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNlwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGVjaW1hbF9vZl9zdHJpbmcgXCIxLlwiKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTYzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zOTYzOyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25fMl9kdV84MzJfMjVfKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC41XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSkpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzg2Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zODY3OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjVcIilcbiAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpKSkgZWxzZVxuICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjI3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTYyNzsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbl9ub21icmVfcGFydHNfZDgzMl8yNV86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llclwiOyBcIm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVcIl1cbiAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PXRydWV9IChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zODcyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM4NzI7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fYWRkX3JhdF9yYXQgbl9ub21icmVfcGFydHNfZDgzMl8yNV9iYXNlX1xuICAgICAgICAgICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzI1X21ham9yYXRpb25fKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02Mjk7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjI5OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llci5uX25vbWJyZV9wYXJ0c19kODMyXzI1ID1cbiAgICAgbl9ub21icmVfcGFydHNfZDgzMl8yNV99XG5cbmxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGUgKGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbjogQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGVJbi50KSA6IENhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlLnQgPVxuICBsZXQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV86IGludGVnZXIgPSBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGVJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luIGluXG4gIGxldCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZUluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiBpblxuICBsZXQgbl9ub21icmVfcGFydHNfZDgzMl8xMV86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByacOpdMOpXCI7IFwibl9ub21icmVfcGFydHNfZDgzMl8xMVwiXVxuICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9dHJ1ZX0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMyMTM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzIxMzsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWYgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMS40XCIpXG4gICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEuOFwiKSkgZWxzZVxuICAgICAgICAgICAgICAoIGlmIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpXG4gICAgICAgICAgICAgICAgIHRoZW4gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMi41XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKVxuICAgICAgICAgICAgICAgICAgICB0aGVuIChkZWNpbWFsX29mX3N0cmluZyBcIjMuXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzXCIpKSB0aGVuIChkZWNpbWFsX29mX3N0cmluZyBcIjMuN1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNFwiKSkgdGhlbiAoZGVjaW1hbF9vZl9zdHJpbmcgXCI0LjNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCI0LjNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0IChkZWNpbWFsX29mX3N0cmluZyBcIjAuNVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkpKSkpKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02OTY7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9Njk2OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICB7Q2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGUubl9ub21icmVfcGFydHNfZDgzMl8xMSA9XG4gICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMTFffVxuXG5sZXQgb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZSAob3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbjogT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGVJbi50KSA6IE91dmVydHVyZURyb2l0c1JldHJhaXRlLnQgPVxuICBsZXQgZGF0ZV9uYWlzc2FuY2VfYXNzdXJlXzogZGF0ZSA9IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW4uT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGVJbi5kYXRlX25haXNzYW5jZV9hc3N1cmVfaW4gaW5cbiAgbGV0IGFnZV9vdXZlcnR1cmVfZHJvaXRfOiBkdXJhdGlvbiA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIk91dmVydHVyZURyb2l0c1JldHJhaXRlXCI7IFwiw6JnZV9vdXZlcnR1cmVfZHJvaXRcIl0ge2lvX2lucHV0PU5vSW5wdXQ7XG4gICAgaW9fb3V0cHV0PXRydWV9IChlbWJlZF9kdXJhdGlvbikgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX3PDqWN1cml0w6lfc29jaWFsZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOTsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEwxNjEtMTctMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJhZ3JhcGhlIDEgOiBJbmZvcm1hdGlvbiBldCBzaW1wbGlmaWNhdGlvbiBkZXMgZMOpbWFyY2hlcyBkZXMgYXNzdXLDqXMuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiA0IDogQXNzdXJhbmNlIHZpZWlsbGVzc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQsOpbsOpZmljaWFpcmVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IHByZXN0YXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIFZJIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnMgZXQgYXV4IHNvaW5zIC0gQ29udHLDtGxlIG3DqWRpY2FsIC0gVHV0ZWxsZSBhdXggcHJlc3RhdGlvbnMgc29jaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJOiBUaXRyZSBJSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgcmVsYXRpdmVzIGF1IGZpbmFuY2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9uYWlzc2FuY2VfYXNzdXJlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5NTUpICgxKSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZHVyYXRpb25fb2ZfbnVtYmVycyAoNjIpICgwKSAoMCkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfc8OpY3VyaXTDqV9zb2NpYWxlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNTY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjU2OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDE2MS0yLTEtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJhZ3JhcGhlIDIgOiBPdXZlcnR1cmUgZHUgZHJvaXQgZXQgbGlxdWlkYXRpb24uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiA0IDogQXNzdXJhbmNlIHZpZWlsbGVzc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQsOpbsOpZmljaWFpcmVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IHByZXN0YXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIFZJIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnMgZXQgYXV4IHNvaW5zIC0gQ29udHLDtGxlIG3DqWRpY2FsIC0gVHV0ZWxsZSBhdXggcHJlc3RhdGlvbnMgc29jaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgSSA6IEfDqW7DqXJhbGl0w6lzIC0gRGlzcG9zaXRpb25zIGNvbW11bmVzIMOgIHRvdXQgb3UgcGFydGllIGRlcyByw6lnaW1lcyBkZSBiYXNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX25haXNzYW5jZV9hc3N1cmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk1MSkgKDcpICgxKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkdXJhdGlvbl9vZl9udW1iZXJzICg2MCkgKDApICgwKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI2Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNjc7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEMTYxLTItMS05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcmFncmFwaGUgMiA6IE91dmVydHVyZSBkdSBkcm9pdCBldCBsaXF1aWRhdGlvbi5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDQgOiBBc3N1cmFuY2UgdmllaWxsZXNzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBCw6luw6lmaWNpYWlyZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgVkkgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9ucyBldCBhdXggc29pbnMgLSBDb250csO0bGUgbcOpZGljYWwgLSBUdXRlbGxlIGF1eCBwcmVzdGF0aW9ucyBzb2NpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBJIDogR8OpbsOpcmFsaXTDqXMgLSBEaXNwb3NpdGlvbnMgY29tbXVuZXMgw6AgdG91dCBvdSBwYXJ0aWUgZGVzIHLDqWdpbWVzIGRlIGJhc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX25haXNzYW5jZV9hc3N1cmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk1MSkgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9uYWlzc2FuY2VfYXNzdXJlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5NTEpICgxMikgKDMxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9kdXJfZHVyIChkdXJhdGlvbl9vZl9udW1iZXJzICg2MCkgKDApICgwKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICgwKSAoNCkgKDApKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI3Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNzY7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEMTYxLTItMS05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcmFncmFwaGUgMiA6IE91dmVydHVyZSBkdSBkcm9pdCBldCBsaXF1aWRhdGlvbi5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDQgOiBBc3N1cmFuY2UgdmllaWxsZXNzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBCw6luw6lmaWNpYWlyZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgVkkgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9ucyBldCBhdXggc29pbnMgLSBDb250csO0bGUgbcOpZGljYWwgLSBUdXRlbGxlIGF1eCBwcmVzdGF0aW9ucyBzb2NpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBJIDogR8OpbsOpcmFsaXTDqXMgLSBEaXNwb3NpdGlvbnMgY29tbXVuZXMgw6AgdG91dCBvdSBwYXJ0aWUgZGVzIHLDqWdpbWVzIGRlIGJhc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgc2ltcGxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSAob19nZXRZZWFyIGRhdGVfbmFpc3NhbmNlX2Fzc3VyZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMTk1MlwiKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfZHVyX2R1ciAoZHVyYXRpb25fb2ZfbnVtYmVycyAoNjApICgwKSAoMCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZHVyYXRpb25fb2ZfbnVtYmVycyAoMCkgKDkpICgwKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfc8OpY3VyaXTDqV9zb2NpYWxlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yODU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjg1OyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDE2MS0yLTEtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJhZ3JhcGhlIDIgOiBPdXZlcnR1cmUgZHUgZHJvaXQgZXQgbGlxdWlkYXRpb24uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiA0IDogQXNzdXJhbmNlIHZpZWlsbGVzc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQsOpbsOpZmljaWFpcmVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IHByZXN0YXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIFZJIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnMgZXQgYXV4IHNvaW5zIC0gQ29udHLDtGxlIG3DqWRpY2FsIC0gVHV0ZWxsZSBhdXggcHJlc3RhdGlvbnMgc29jaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgSSA6IEfDqW7DqXJhbGl0w6lzIC0gRGlzcG9zaXRpb25zIGNvbW11bmVzIMOgIHRvdXQgb3UgcGFydGllIGRlcyByw6lnaW1lcyBkZSBiYXNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgKG9fZ2V0WWVhciBkYXRlX25haXNzYW5jZV9hc3N1cmVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjE5NTNcIikpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX2R1cl9kdXIgKGR1cmF0aW9uX29mX251bWJlcnMgKDYxKSAoMCkgKDApKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGR1cmF0aW9uX29mX251bWJlcnMgKDApICgyKSAoMCkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX3PDqWN1cml0w6lfc29jaWFsZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI5NDsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQxNjEtMi0xLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFyYWdyYXBoZSAyIDogT3V2ZXJ0dXJlIGR1IGRyb2l0IGV0IGxpcXVpZGF0aW9uLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gNCA6IEFzc3VyYW5jZSB2aWVpbGxlc3NlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IELDqW7DqWZpY2lhaXJlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBWSSA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IHByZXN0YXRpb25zIGV0IGF1eCBzb2lucyAtIENvbnRyw7RsZSBtw6lkaWNhbCAtIFR1dGVsbGUgYXV4IHByZXN0YXRpb25zIHNvY2lhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIEkgOiBHw6luw6lyYWxpdMOpcyAtIERpc3Bvc2l0aW9ucyBjb21tdW5lcyDDoCB0b3V0IG91IHBhcnRpZSBkZXMgcsOpZ2ltZXMgZGUgYmFzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIChvX2dldFllYXIgZGF0ZV9uYWlzc2FuY2VfYXNzdXJlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxOTU0XCIpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9kdXJfZHVyIChkdXJhdGlvbl9vZl9udW1iZXJzICg2MSkgKDApICgwKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICgwKSAoNykgKDApKSkpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA4MTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xMDgxOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiRGF0ZSBkJ291dmVydHVyZSBkZXMgZHJvaXRzIMOgIGxhIHJldHJhaXRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZS5hZ2Vfb3V2ZXJ0dXJlX2Ryb2l0ID0gYWdlX291dmVydHVyZV9kcm9pdF99XG5cbmxldCBpbXBheWVfZGVwZW5zZV9sb2dlbWVudCAoaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW46IEltcGF5ZURlcGVuc2VMb2dlbWVudEluLnQpIDogSW1wYXllRGVwZW5zZUxvZ2VtZW50LnQgPVxuICBsZXQgbW9kZV9vY2N1cGF0aW9uXzogTW9kZU9jY3VwYXRpb24udCA9IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luLkltcGF5ZURlcGVuc2VMb2dlbWVudEluLm1vZGVfb2NjdXBhdGlvbl9pbiBpblxuICBsZXQgYWlkZV92ZXJzZWVfOiBWZXJzZW1lbnRBLnQgPSBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbi5JbXBheWVEZXBlbnNlTG9nZW1lbnRJbi5haWRlX3ZlcnNlZV9pbiBpblxuICBsZXQgbW9udGFudF9hcGxfOiBtb25leSA9IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luLkltcGF5ZURlcGVuc2VMb2dlbWVudEluLm1vbnRhbnRfYXBsX2luIGluXG4gIGxldCBtb250YW50X2NoYXJnZXNfOiBtb25leSA9IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luLkltcGF5ZURlcGVuc2VMb2dlbWVudEluLm1vbnRhbnRfY2hhcmdlc19pbiBpblxuICBsZXQgZGVwZW5zZV9sb2dlbWVudF86IERlcGVuc2VMb2dlbWVudC50ID0gaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4uSW1wYXllRGVwZW5zZUxvZ2VtZW50SW4uZGVwZW5zZV9sb2dlbWVudF9pbiBpblxuICBsZXQgbW9udGFudF9kZXR0ZV86IG1vbmV5ID0gaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4uSW1wYXllRGVwZW5zZUxvZ2VtZW50SW4ubW9udGFudF9kZXR0ZV9pbiBpblxuICBsZXQgbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV86IE1vZGVPY2N1cGF0aW9uSW1wYXllLnQgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJJbXBhecOpRMOpcGVuc2VMb2dlbWVudFwiOyBcIm1vZGVfb2NjdXBhdGlvbl9pbXBhecOpXCJdIHtpb19pbnB1dD1Ob0lucHV0O1xuICAgIGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX21vZGVfb2NjdXBhdGlvbl9pbXBheWUpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTIzMjA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjMyMDsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyNC0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2V1aWxzIGRlIGNvbnN0aXR1dGlvbiBkJ3VuIGltcGF5w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IEltcGF5w6lzIGRlIGTDqXBlbnNlcyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgbWF0Y2ggbW9kZV9vY2N1cGF0aW9uX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgIChNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVMb3llciAoKSlcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAoTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllUHJldCAoKSlcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgKE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZVByZXQgKCkpXG4gICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgIChNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVMb3llciAoKSlcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gXyAtPlxuICAgICAgICAgICAgICAgIChNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVMb3llciAoKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwOTc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTA5NzsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlF1YW50aWZpY2F0aW9uIGRlcyBpbXBhecOpcyBkZSBkw6lwZW5zZSBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZGVwZW5zZV9sb2dlbWVudF9icnV0ZV86IERlcGVuc2VMb2dlbWVudC50ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiSW1wYXnDqUTDqXBlbnNlTG9nZW1lbnRcIjsgXCJkw6lwZW5zZV9sb2dlbWVudF9icnV0ZVwiXSB7aW9faW5wdXQ9Tm9JbnB1dDtcbiAgICBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9kZXBlbnNlX2xvZ2VtZW50KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjg4OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIyODg7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjQtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNldWlscyBkZSBjb25zdGl0dXRpb24gZCd1biBpbXBhecOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBJbXBhecOpcyBkZSBkw6lwZW5zZXMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBtb2RlX29jY3VwYXRpb25faW1wYXllX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZVByZXQgXyAtPiB0cnVlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkZXBlbnNlX2xvZ2VtZW50XykpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjE5Mjsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjE5MjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjQtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBTZXVpbHMgZGUgY29uc3RpdHV0aW9uIGQndW4gaW1wYXnDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IEltcGF5w6lzIGRlIGTDqXBlbnNlcyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZVByZXQgXyAtPiBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRlcGVuc2VfbG9nZW1lbnRfKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDk4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEwOTg7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJRdWFudGlmaWNhdGlvbiBkZXMgaW1wYXnDqXMgZGUgZMOpcGVuc2UgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGRlcGVuc2VfbG9nZW1lbnRfbmV0dGVfOiBEZXBlbnNlTG9nZW1lbnQudCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkltcGF5w6lEw6lwZW5zZUxvZ2VtZW50XCI7IFwiZMOpcGVuc2VfbG9nZW1lbnRfbmV0dGVcIl0ge2lvX2lucHV0PU5vSW5wdXQ7XG4gICAgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfZGVwZW5zZV9sb2dlbWVudCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjAxOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMjAxOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyNC0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNldWlscyBkZSBjb25zdGl0dXRpb24gZCd1biBpbXBhecOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogSW1wYXnDqXMgZGUgZMOpcGVuc2VzIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBtb2RlX29jY3VwYXRpb25faW1wYXllX1xuICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllTG95ZXIgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllUHJldCBfIC0+IGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBkZXBlbnNlX2xvZ2VtZW50X2JydXRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5Ub3RhbEFubnVlbEVjaGVhbmNlcyB0b3RhbF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKERlcGVuc2VMb2dlbWVudC5Ub3RhbEFubnVlbEVjaGVhbmNlcyB0b3RhbF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuTWVuc3VhbGl0ZSBtZW5zdWFsaXRlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRGVwZW5zZUxvZ2VtZW50Lk1lbnN1YWxpdGUgbWVuc3VhbGl0ZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuTG95ZXIgbW9udGFudF9sb3llcl8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKERlcGVuc2VMb2dlbWVudC5Mb3llclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBtb250YW50X2xveWVyXyBtb250YW50X2FwbF8pKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjI5Nzsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjI5NzsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjQtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBTZXVpbHMgZGUgY29uc3RpdHV0aW9uIGQndW4gaW1wYXnDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IEltcGF5w6lzIGRlIGTDqXBlbnNlcyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVQcmV0IF8gLT4gdHJ1ZSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggZGVwZW5zZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuVG90YWxBbm51ZWxFY2hlYW5jZXMgdG90YWxfZWNoZWFuY2VzXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRGVwZW5zZUxvZ2VtZW50LlRvdGFsQW5udWVsRWNoZWFuY2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIHRvdGFsX2VjaGVhbmNlc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IG1vbnRhbnRfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMi5cIikpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5NZW5zdWFsaXRlIG1lbnN1YWxpdGVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChEZXBlbnNlTG9nZW1lbnQuTWVuc3VhbGl0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBtZW5zdWFsaXRlXyBtb250YW50X2FwbF8pKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50LkxveWVyIGxveWVyXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRGVwZW5zZUxvZ2VtZW50LkxveWVyIGxveWVyXykpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwOTk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTA5OTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlF1YW50aWZpY2F0aW9uIGRlcyBpbXBhecOpcyBkZSBkw6lwZW5zZSBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgc2V1aWxfaW1wYXllX2RlcGVuc2VfZGVfbG9nZW1lbnRfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkltcGF5w6lEw6lwZW5zZUxvZ2VtZW50XCI7IFwic2V1aWxfaW1wYXnDqV9kw6lwZW5zZV9kZV9sb2dlbWVudFwiXVxuICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMTYyOyBzdGFydF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMTYyOyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyNC0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNldWlscyBkZSBjb25zdGl0dXRpb24gZCd1biBpbXBhecOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogSW1wYXnDqXMgZGUgZMOpcGVuc2VzIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBtb2RlX29jY3VwYXRpb25faW1wYXllX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllTG95ZXIgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllUHJldCBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhaWRlX3ZlcnNlZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFZlcnNlbWVudEEuQmFpbGxldXIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFZlcnNlbWVudEEuQmVuZWZpY2lhaXJlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFZlcnNlbWVudEEuRXRhYmxpc3NlbWVudEhhYmlsaXRlIF8gLT4gZmFsc2UpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBkZXBlbnNlX2xvZ2VtZW50X2JydXRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5Ub3RhbEFubnVlbEVjaGVhbmNlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuTWVuc3VhbGl0ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuTG95ZXIgbG95ZXJfYnJ1dF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGxveWVyX2JydXRfIG1vbnRhbnRfY2hhcmdlc18pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjIuXCIpKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjE3ODsgc3RhcnRfY29sdW1uPTIwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjE3ODsgZW5kX2NvbHVtbj01MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjQtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBTZXVpbHMgZGUgY29uc3RpdHV0aW9uIGQndW4gaW1wYXnDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IEltcGF5w6lzIGRlIGTDqXBlbnNlcyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZUxveWVyIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZVByZXQgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYWlkZV92ZXJzZWVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBWZXJzZW1lbnRBLkJhaWxsZXVyIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFZlcnNlbWVudEEuQmVuZWZpY2lhaXJlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBWZXJzZW1lbnRBLkV0YWJsaXNzZW1lbnRIYWJpbGl0ZSBfIC0+IGZhbHNlKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggZGVwZW5zZV9sb2dlbWVudF9uZXR0ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuVG90YWxBbm51ZWxFY2hlYW5jZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50Lk1lbnN1YWxpdGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50LkxveWVyIGxveWVyX25ldF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGxveWVyX25ldF8gbW9udGFudF9jaGFyZ2VzXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMi5cIikpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjQ0OyBzdGFydF9jb2x1bW49NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIyNDQ7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODI0LTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2V1aWxzIGRlIGNvbnN0aXR1dGlvbiBkJ3VuIGltcGF5w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBJbXBhecOpcyBkZSBkw6lwZW5zZXMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIG1vZGVfb2NjdXBhdGlvbl9pbXBheWVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVMb3llciBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllUHJldCBfIC0+IHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFpZGVfdmVyc2VlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVmVyc2VtZW50QS5CYWlsbGV1ciBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVmVyc2VtZW50QS5CZW5lZmljaWFpcmUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVmVyc2VtZW50QS5FdGFibGlzc2VtZW50SGFiaWxpdGUgXyAtPiBmYWxzZSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGRlcGVuc2VfbG9nZW1lbnRfYnJ1dGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50LlRvdGFsQW5udWVsRWNoZWFuY2VzIGVjaGVhbmNlX3ByZXRfYnJ1dGVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBlY2hlYW5jZV9wcmV0X2JydXRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19kaXZfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCI2LlwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuTWVuc3VhbGl0ZSBtZW5zdWFsaXRlX2JydXRlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgbWVuc3VhbGl0ZV9icnV0ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMi5cIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXBlbnNlTG9nZW1lbnQuTG95ZXIgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMFwiKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjI3Mjsgc3RhcnRfY29sdW1uPTc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMjcyOyBlbmRfY29sdW1uPTUxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyNC0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNldWlscyBkZSBjb25zdGl0dXRpb24gZCd1biBpbXBhecOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogSW1wYXnDqXMgZGUgZMOpcGVuc2VzIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBtb2RlX29jY3VwYXRpb25faW1wYXllX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllTG95ZXIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZVByZXQgXyAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhaWRlX3ZlcnNlZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFZlcnNlbWVudEEuQmFpbGxldXIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFZlcnNlbWVudEEuQmVuZWZpY2lhaXJlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBWZXJzZW1lbnRBLkV0YWJsaXNzZW1lbnRIYWJpbGl0ZSBfIC0+IHRydWUpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBkZXBlbnNlX2xvZ2VtZW50X25ldHRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IERlcGVuc2VMb2dlbWVudC5Ub3RhbEFubnVlbEVjaGVhbmNlcyBlY2hlYW5jZV9wcmV0X25ldHRlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgZWNoZWFuY2VfcHJldF9uZXR0ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZGl2X3JhdF9yYXQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMS5cIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiNi5cIikpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50Lk1lbnN1YWxpdGUgbWVuc3VhbGl0ZV9uZXR0ZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IG1lbnN1YWxpdGVfbmV0dGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjIuXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVwZW5zZUxvZ2VtZW50LkxveWVyIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjBcIikpKXxdKSAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwOTY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTA5NjsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlF1YW50aWZpY2F0aW9uIGRlcyBpbXBhecOpcyBkZSBkw6lwZW5zZSBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9pbXBheWVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkltcGF5w6lEw6lwZW5zZUxvZ2VtZW50XCI7IFwibW9udGFudF9pbXBhecOpXCJdIHtpb19pbnB1dD1Ob0lucHV0O1xuICAgIGlvX291dHB1dD10cnVlfSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIyMjA7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjIyMDsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyNC0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2V1aWxzIGRlIGNvbnN0aXR1dGlvbiBkJ3VuIGltcGF5w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IEltcGF5w6lzIGRlIGTDqXBlbnNlcyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIG1vZGVfb2NjdXBhdGlvbl9pbXBheWVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllTG95ZXIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb25JbXBheWUuSW1wYXllUHJldCBfIC0+IHRydWUpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX21vbl9tb24gbW9udGFudF9kZXR0ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V1aWxfaW1wYXllX2RlcGVuc2VfZGVfbG9nZW1lbnRfKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZGV0dGVfIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIxNTc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIxNTc7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODI0LTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2V1aWxzIGRlIGNvbnN0aXR1dGlvbiBkJ3VuIGltcGF5w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBJbXBhecOpcyBkZSBkw6lwZW5zZXMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIG1vZGVfb2NjdXBhdGlvbl9pbXBheWVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVMb3llciBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVQcmV0IF8gLT4gZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX21vbl9tb24gbW9udGFudF9kZXR0ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldWlsX2ltcGF5ZV9kZXBlbnNlX2RlX2xvZ2VtZW50XykgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9kZXR0ZV8gZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTEwMTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xMTAxOyBlbmRfY29sdW1uPTI2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUXVhbnRpZmljYXRpb24gZGVzIGltcGF5w6lzIGRlIGTDqXBlbnNlIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtJbXBheWVEZXBlbnNlTG9nZW1lbnQubW9udGFudF9pbXBheWUgPSBtb250YW50X2ltcGF5ZV99XG5cbmxldCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luOiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udCkgOiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQgPVxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luLkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBfOiB1bml0ID0gaWYgKFxuICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICg0KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwOyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19KSkpXG4gICAgICAgICAgICAgICAgICB0aGVuICgpIGVsc2VcbiAgICAgICAgICAgICAgICAgIHJhaXNlIChBc3NlcnRpb25GYWlsZWQge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDsgc3RhcnRfY29sdW1uPTEzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwOyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJNb250YW50IGRlIGxhIGJhc2UgbWVuc3VlbGxlIGRlcyBhbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCJdfSkgaW5cbiAgbGV0IG1vbnRhbnRfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIjsgXCJtb250YW50XCJdIHtpb19pbnB1dD1Ob0lucHV0O1xuICAgIGlvX291dHB1dD10cnVlfSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9ibWFmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMzsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnN0cnVjdGlvbiBtaW5pc3TDqXJpZWxsZSBOwrBEU1MvU0QyQi8yMDE5LzY1IGR1IDI1IG1hcnMgMjAxOSByZWxhdGl2ZSDDoCBsYSByZXZhbG9yaXNhdGlvbiBhdSAxZXIgYXZyaWwgMjAxOSBkZXMgcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBzZXJ2aWVzIGVuIG3DqXRyb3BvbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICg0KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoNCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MTMxNlwiKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTUyOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTUzOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkluc3RydWN0aW9uIGludGVybWluaXN0w6lyaWVsbGUgbm8gRFNTL1NEMkIvMjAyMC8zMyBkdSAxOCBmw6l2cmllciAyMDIwIHJlbGF0aXZlIMOgIGxhIHJldmFsb3Jpc2F0aW9uIGF1IDFlciBhdnJpbCAyMDIwIGRlcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIHNlcnZpZXMgZW4gbcOpdHJvcG9sZSwgZW4gR3VhZGVsb3VwZSwgZW4gR3V5YW5lLCBlbiBNYXJ0aW5pcXVlLCDDoCBMYSBSw6l1bmlvbiwgw6AgU2FpbnQtQmFydGjDqWxlbXksIMOgIFNhaW50LU1hcnRpbiBldCBkYW5zIGxlIGTDqXBhcnRlbWVudCBkZSBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoNCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDQpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDE0NDBcIikpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy9ibWFmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02OTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJJbnN0cnVjdGlvbiBpbnRlcm1pbmlzdMOpcmllbGxlIG7CsERTUy8yQi8yMDIxLzY1IGR1IDE5IG1hcnMgMjAyMSByZWxhdGl2ZSDDoCBsYSByZXZhbG9yaXNhdGlvbiBhdSAxZXIgYXZyaWwgMjAyMSBkZXMgcHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBzZXJ2aWVzIGVuIG3DqXRyb3BvbGUsIGVuIEd1YWRlbG91cGUsIGVuIEd1eWFuZSwgZW4gTWFydGluaXF1ZSwgw6AgbGEgUsOpdW5pb24sIMOgIFNhaW50LUJhcnRow6lsZW15LCDDoCBTYWludC1NYXJ0aW4gZXQgZGFucyBsZSBkw6lwYXJ0ZW1lbnQgZGUgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGRlIGxhIGJhc2UgbWVuc3VlbGxlIGRlcyBhbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDQpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg0KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxNDgxXCIpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODc7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW5zdHJ1Y3Rpb24gaW50ZXJtaW5pc3TDqXJpZWxsZSBuwrBEU1MvMkIvMjAyMi84MiBkdSAyOCBtYXJzIDIwMjIgcmVsYXRpdmUgw6AgbGEgcmV2YWxvcmlzYXRpb24gYXUgMWVyIGF2cmlsIDIwMjIgZGVzIHByZXN0YXRpb25zIGZhbWlsaWFsZXMgc2VydmllcyBlbiBtw6l0cm9wb2xlLCBlbiBHdWFkZWxvdXBlLCBlbiBHdXlhbmUsIGVuIE1hcnRpbmlxdWUsIMOgIGxhIFLDqXVuaW9uLCDDoCBTYWludC1CYXJ0aMOpbGVteSwgw6AgU2FpbnQtTWFydGluIGV0IGRhbnMgbGUgZMOpcGFydGVtZW50IGRlIE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkZSBsYSBiYXNlIG1lbnN1ZWxsZSBkZXMgYWxsb2NhdGlvbnMgZmFtaWxpYWxlc1wiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg0KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIzKSAoNCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MjIyOFwiKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9iYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzL2JtYWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDY7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiSW5zdHJ1Y3Rpb24gaW50ZXJtaW5pc3TDqXJpZWxsZSBOwrAgRFNTLzJCLzIwMjMvNDEgZHUgMjQgbWFycyAyMDIzIHJlbGF0aXZlIMOgIGxhIHJldmFsb3Jpc2F0aW9uIGF1IDFlciBhdnJpbCAyMDIzIGRlcyBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzIHNlcnZpZXMgZW4gbcOpdHJvcG9sZSwgZW4gR3VhZGVsb3VwZSwgZW4gR3V5YW5lLCBlbiBNYXJ0aW5pcXVlLCDDoCBsYSBSw6l1bmlvbiwgw6AgU2FpbnQtQmFydGjDqWxlbXksIMOgIFNhaW50LU1hcnRpbiBldCBkYW5zIGxlIGTDqXBhcnRlbWVudCBkZSBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZGUgbGEgYmFzZSBtZW5zdWVsbGUgZGVzIGFsbG9jYXRpb25zIGZhbWlsaWFsZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIzKSAoNCkgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ0NTkzXCIpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMvYm1hZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTY7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJNb250YW50IGRlIGxhIGJhc2UgbWVuc3VlbGxlIGRlcyBhbGxvY2F0aW9ucyBmYW1pbGlhbGVzXCJdfSkpKSkgaW5cbiAge0Jhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMubW9udGFudCA9IG1vbnRhbnRffVxuXG5sZXQgdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hICh2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2FfaW46IFZlcmlmaWNhdGlvbkFnZUluZmVyaWV1ck91RWdhbEFJbi50KSA6IFZlcmlmaWNhdGlvbkFnZUluZmVyaWV1ck91RWdhbEEudCA9XG4gIGxldCBkYXRlX25haXNzYW5jZV86IGRhdGUgPSB2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2FfaW4uVmVyaWZpY2F0aW9uQWdlSW5mZXJpZXVyT3VFZ2FsQUluLmRhdGVfbmFpc3NhbmNlX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYV9pbi5WZXJpZmljYXRpb25BZ2VJbmZlcmlldXJPdUVnYWxBSW4uZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgYW5uZWVzXzogZHVyYXRpb24gPSB2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2FfaW4uVmVyaWZpY2F0aW9uQWdlSW5mZXJpZXVyT3VFZ2FsQUluLmFubmVlc19pbiBpblxuICBsZXQgZXN0X2luZmVyaWV1cl9vdV9lZ2FsXzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIlbDqXJpZmljYXRpb27DgmdlSW5mw6lyaWV1ck91w4lnYWzDgFwiOyBcImVzdF9pbmbDqXJpZXVyX291X8OpZ2FsXCJdXG4gICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy8uLi9wcm9sb2d1ZV9mcmFuY2UvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjU7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX2x0ZV9kYXRfZGF0IChvX2FkZF9kYXRfZHVyIFJvdW5kVXAgZGF0ZV9uYWlzc2FuY2VfIGFubmVlc18pXG4gICAgICAgICAgICAgIGRhdGVfY291cmFudGVfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvLi4vcHJvbG9ndWVfZnJhbmNlL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTIyOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTIyOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWVcIjsgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfSkpKSkgaW5cbiAge1ZlcmlmaWNhdGlvbkFnZUluZmVyaWV1ck91RWdhbEEuZXN0X2luZmVyaWV1cl9vdV9lZ2FsID1cbiAgICAgZXN0X2luZmVyaWV1cl9vdV9lZ2FsX31cblxubGV0IHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2EgKHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfaW46IFZlcmlmaWNhdGlvbkFnZVN1cGVyaWV1ckFJbi50KSA6IFZlcmlmaWNhdGlvbkFnZVN1cGVyaWV1ckEudCA9XG4gIGxldCBkYXRlX25haXNzYW5jZV86IGRhdGUgPSB2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX2luLlZlcmlmaWNhdGlvbkFnZVN1cGVyaWV1ckFJbi5kYXRlX25haXNzYW5jZV9pbiBpblxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSB2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX2luLlZlcmlmaWNhdGlvbkFnZVN1cGVyaWV1ckFJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBhbm5lZXNfOiBkdXJhdGlvbiA9IHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfaW4uVmVyaWZpY2F0aW9uQWdlU3VwZXJpZXVyQUluLmFubmVlc19pbiBpblxuICBsZXQgZXN0X3N1cGVyaWV1cl86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJWw6lyaWZpY2F0aW9uw4JnZVN1cMOpcmlldXLDgFwiOyBcImVzdF9zdXDDqXJpZXVyXCJdIHtpb19pbnB1dD1Ob0lucHV0O1xuICAgIGlvX291dHB1dD10cnVlfSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy8uLi9wcm9sb2d1ZV9mcmFuY2UvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzY7IGVuZF9jb2x1bW49Mjc7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX2d0X2RhdF9kYXQgKG9fYWRkX2RhdF9kdXIgUm91bmRVcCBkYXRlX25haXNzYW5jZV8gYW5uZWVzXylcbiAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy8uLi9wcm9sb2d1ZV9mcmFuY2UvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzM7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MzM7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiOyBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19KSkpKSBpblxuICB7VmVyaWZpY2F0aW9uQWdlU3VwZXJpZXVyQS5lc3Rfc3VwZXJpZXVyID0gZXN0X3N1cGVyaWV1cl99XG5cbmxldCBzbWljIChzbWljX2luOiBTbWljSW4udCkgOiBTbWljLnQgPVxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBzbWljX2luLlNtaWNJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCByZXNpZGVuY2VfOiBDb2xsZWN0aXZpdGUudCA9IHNtaWNfaW4uU21pY0luLnJlc2lkZW5jZV9pbiBpblxuICBsZXQgXzogdW5pdCA9IGlmIChcbiAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2OyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTY7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfSkpKVxuICAgICAgICAgICAgICAgICAgdGhlbiAoKSBlbHNlXG4gICAgICAgICAgICAgICAgICByYWlzZSAoQXNzZXJ0aW9uRmFpbGVkIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjsgc3RhcnRfY29sdW1uPTEzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX0pIGluXG4gIGxldCBicnV0X2hvcmFpcmVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIlNtaWNcIjsgXCJicnV0X2hvcmFpcmVcIl0ge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfSAoZW1iZWRfbW9uZXkpXG4gICAgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDM7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAgMjAxOC0xMTczIGR1IDE5IGTDqWNlbWJyZSAyMDE4IHBvcnRhbnQgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLkd1eWFuZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludE1hcnRpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDAzXCIpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01Mjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NDsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDE4LTExNzMgZHUgMTkgZMOpY2VtYnJlIDIwMTggcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzU3XCIpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04MjsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDE5LTEzODcgZHUgMTggZMOpY2VtYnJlIDIwMTkgcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWV0cm9wb2xlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuR3V5YW5lICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTGFSZXVuaW9uICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50TWFydGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSkpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwMTVcIikpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTkxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTkzOyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwIDIwMTktMTM4NyBkdSAxOCBkw6ljZW1icmUgMjAxOSBwb3J0YW50IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI3NjZcIikpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExMjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjE7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAgMjAyMC0xNTk4IGR1IDE2IGTDqWNlbWJyZSAyMDIwIHBvcnRhbnQgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLkd1eWFuZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludE1hcnRpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDI1XCIpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTMyOyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwIDIwMjAtMTU5OCBkdSAxNiBkw6ljZW1icmUgMjAyMCBwb3J0YW50IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1heW90dGUgKCkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI3NzRcIikpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjA7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAgMjAyMS0xNzQxIGR1IDIyIGTDqWNlbWJyZSAyMDIxIHBvcnRhbnQgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDQpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWV0cm9wb2xlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuR3V5YW5lICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTGFSZXVuaW9uICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50TWFydGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSkpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwNTdcIikpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE3MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNzI7IGVuZF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAgMjAyMS0xNzQxIGR1IDIyIGTDqWNlbWJyZSAyMDIxIHBvcnRhbnQgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDQpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzk4XCIpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xOTE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjAwOyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDE5IGF2cmlsIDIwMjIgcmVsYXRpZiBhdSByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDUpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5HdXlhbmUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5MYVJldW5pb24gKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTA4NVwiKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjA5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIxMTsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAxOSBhdnJpbCAyMDIyIHJlbGF0aWYgYXUgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg1KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODE5XCIpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMzA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjM5OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI5IGp1aWxsZXQgMjAyMiByZWxhdGlmIGF1IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoOCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5HdXlhbmUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5MYVJldW5pb24gKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTEwN1wiKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjQ4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI1MDsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyOSBqdWlsbGV0IDIwMjIgcmVsYXRpZiBhdSByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDgpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODM1XCIpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNzA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjc5OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNyZXQgbsKwIDIwMjItMTYwOCBkdSAyMiBkw6ljZW1icmUgMjAyMiBwb3J0YW50IHJlbMOodmVtZW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIzKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMykgKDUpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5HdXlhbmUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5MYVJldW5pb24gKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTEyN1wiKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjg4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI5MDsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDIyLTE2MDggZHUgMjIgZMOpY2VtYnJlIDIwMjIgcG9ydGFudCByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMykgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjMpICg1KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODUxXCIpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvLi4vc21pYy9zbWljLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzE4OyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI2IGF2cmlsIDIwMjMgcmVsYXRpZiBhdSByZWzDqHZlbWVudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb250YW50IGR1IHNhbGFpcmUgbWluaW11bSBkZSBjcm9pc3NhbmNlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMykgKDUpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTWV0cm9wb2xlICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuR3V5YW5lICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb2xsZWN0aXZpdGUuTGFSZXVuaW9uICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50TWFydGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTE1MlwiKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLy4uL3NtaWMvc21pYy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzI3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMyOTsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNiBhdnJpbCAyMDIzIHJlbGF0aWYgYXUgcmVsw6h2ZW1lbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudCBkdSBzYWxhaXJlIG1pbmltdW0gZGUgY3JvaXNzYW5jZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjMpICg1KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV8gKENvbGxlY3Rpdml0ZS5NYXlvdHRlICgpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI4NzBcIikpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy8uLi9zbWljL3NtaWMuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MTE7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZVwiOyBcIk1vbnRhbnQgZHUgc2FsYWlyZSBtaW5pbXVtIGRlIGNyb2lzc2FuY2VcIl19KSkpKSBpblxuICB7U21pYy5icnV0X2hvcmFpcmUgPSBicnV0X2hvcmFpcmVffVxuXG5sZXQgYXJyb25kaV9jZW50YWluZV9zdXBlcmlldXJlXyA6IG1vbmV5IC0+IG1vbmV5ID1cbiAgZnVuIChyZXNzb3VyY2VzX21lbmFnZV86IG1vbmV5KSAtPlxuICAgIG9fbXVsdF9tb25fcmF0XG4gICAgICAob19yb3VuZF9tb25cbiAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAob19tdWx0X21vbl9yYXQgcmVzc291cmNlc19tZW5hZ2VfIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDFcIikpXG4gICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDlcIikpKSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAuXCIpXG5cbmxldCB0cmFpdGVtZW50X251bF90b3V0X2xlX3RlbXBzXyA6IG1vbmV5IC0+IG1vbmV5ID1cbiAgZnVuIChhaWRlX2ZpbmFsZV86IG1vbmV5KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCJcblxubGV0IG1vbnRlZV9lbl9jaGFyZ2Vfc2FpbnRfcGllcnJlX21pcXVlbG9uXyA6IG1vbmV5IC0+IENvbGxlY3Rpdml0ZS50IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlIC0+IG1vbmV5ID1cbiAgZnVuIChhaWRlX2ZpbmFsZV86IG1vbmV5KSAocmVzaWRlbmNlXzogQ29sbGVjdGl2aXRlLnQpXG4gICAgKGRhdGVfY291cmFudGVfOiBkYXRlKSAtPlxuICAgICBpZlxuICAgICAgKG9fYW5kXG4gICAgICAgICAobWF0Y2ggcmVzaWRlbmNlX1xuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlIF8gLT4gZmFsc2VcbiAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdXlhbmUgXyAtPiBmYWxzZVxuICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgXyAtPiBmYWxzZVxuICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiBfIC0+IGZhbHNlXG4gICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT4gZmFsc2VcbiAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiBfIC0+IGZhbHNlXG4gICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWV0cm9wb2xlIF8gLT4gZmFsc2VcbiAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb24gXyAtPiB0cnVlXG4gICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWF5b3R0ZSBfIC0+IGZhbHNlKVxuICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlXyAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoMSkgKDEpKSlcbiAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfIChkYXRlX29mX251bWJlcnMgKDIwMjUpICgxMikgKDMxKSkpKSlcbiAgICAgIHRoZW5cbiAgICAgIChvX211bHRfbW9uX3JhdCBhaWRlX2ZpbmFsZV9cbiAgICAgICAgIChvX3N1Yl9yYXRfcmF0IChkZWNpbWFsX29mX3N0cmluZyBcIjEuXCIpXG4gICAgICAgICAgICAob19kaXZfcmF0X3JhdFxuICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludCAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyMDI2XCIpXG4gICAgICAgICAgICAgICAgICAgICAob19nZXRZZWFyIGRhdGVfY291cmFudGVfKSkpIChkZWNpbWFsX29mX3N0cmluZyBcIjguXCIpKSkpXG4gICAgICBlbHNlIGFpZGVfZmluYWxlX1xuXG5sZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llciAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbjogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4udCkgOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIudCA9XG4gIGxldCByZXNpZGVuY2VfOiBDb2xsZWN0aXZpdGUudCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ucmVzaWRlbmNlX2luIGluXG4gIGxldCBsb2dlbWVudF9mb3llcl9qZXVuZXNfdHJhdmFpbGxldXJzXzogYm9vbCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ubG9nZW1lbnRfZm95ZXJfamV1bmVzX3RyYXZhaWxsZXVyc19pbiBpblxuICBsZXQgdHlwZV9sb2dlbWVudF9mb3llcl86IFR5cGVMb2dlbWVudEZveWVyLnQgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnR5cGVfbG9nZW1lbnRfZm95ZXJfaW4gaW5cbiAgbGV0IGRhdGVfY29udmVudGlvbm5lbWVudF86IGRhdGUgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLmRhdGVfY29udmVudGlvbm5lbWVudF9pbiBpblxuICBsZXQgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXzogbW9uZXkgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiBpblxuICBsZXQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV86IGludGVnZXIgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gaW5cbiAgbGV0IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gaW5cbiAgbGV0IHpvbmVfOiBab25lREhhYml0YXRpb24udCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uem9uZV9pbiBpblxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IHJlZGV2YW5jZV86IG1vbmV5ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5yZWRldmFuY2VfaW4gaW5cbiAgbGV0IGNvbmRpdGlvbl8yX2R1XzgzMl8yNV86IHVuaXQgLT4gYm9vbCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uY29uZGl0aW9uXzJfZHVfODMyXzI1X2luIGluXG4gIGxldCBsaW1pdGF0aW9uX21ham9yYXRpb25fcGVyc29ubmVzX2FfY2hhcmdlXzogdW5pdCAtPiBib29sID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5saW1pdGF0aW9uX21ham9yYXRpb25fcGVyc29ubmVzX2FfY2hhcmdlX2luIGluXG4gIGxldCBuX25vbWJyZV9wYXJ0c19kODMyXzI1XzogdW5pdCAtPiBkZWNpbWFsID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5uX25vbWJyZV9wYXJ0c19kODMyXzI1X2luIGluXG4gIGxldCBsaW1pdGF0aW9uX21ham9yYXRpb25fcGVyc29ubmVzX2FfY2hhcmdlXzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwibGltaXRhdGlvbl9tYWpvcmF0aW9uX3BlcnNvbm5lc1/DoF9jaGFyZ2VcIl0ge2lvX2lucHV0PVJlZW50cmFudDtcbiAgICBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT4gbGltaXRhdGlvbl9tYWpvcmF0aW9uX3BlcnNvbm5lc19hX2NoYXJnZV8gKCkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02NDQ7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02NDQ7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY0NDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02NDQ7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IF86IHVuaXQgPSBpZiAoXG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Njg2OyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg2OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAoKSBlbHNlXG4gICAgICAgICAgICAgICAgICByYWlzZSAoQXNzZXJ0aW9uRmFpbGVkIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODY7IHN0YXJ0X2NvbHVtbj0xMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODY7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSBpblxuICBsZXQgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNvbnRyaWJ1dGlvbnNfc29jaWFsZXMuZGF0ZV9jb3VyYW50ZVwiXSB7aW9faW5wdXQ9T25seUlucHV0O1xuICAgICAgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NjgwOyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02ODA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NjgwOyBlbmRfY29sdW1uPTUwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfbGlldV86IENvbGxlY3Rpdml0ZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjb250cmlidXRpb25zX3NvY2lhbGVzLmxpZXVcIl0ge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfVxuICAgICAgKGVtYmVkX2NvbGxlY3Rpdml0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NjgxOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByZXNpZGVuY2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY4MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT02ODE7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwiY29udHJpYnV0aW9uc19zb2NpYWxlc1wiO1xuICAgICAgXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjsgXCJjb250cmlidXRpb25zX3NvY2lhbGVzXCI7XG4gICAgICBcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXVxuICAgIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQpXG4gICAgKHtDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV87XG4gICAgICAgIENvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmxpZXVfaW4gPVxuICAgICAgICAgIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X2xpZXVffSkpKSBpblxuICBsZXQgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfbW9udGFudF86IG1vbmV5IC0+IG1vbmV5ID0gcmVzdWx0Xy5Db250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQubW9udGFudCBpblxuICBsZXQgbW9udGFudF9taW5pbWFsX2FpZGVfZDgyM18yNF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiOyBcIm1vbnRhbnRfbWluaW1hbF9haWRlX2Q4MjNfMjRcIl1cbiAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNTg0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI1ODQ7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDI5XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlXyAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTApICgxKSkpKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwMDBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjU3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTY1NzsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9mb3JmYWl0YWlyZV9kODMyXzI0XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwibW9udGFudF9mb3JmYWl0YWlyZV9kODMyXzI0XCJdXG4gICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjU3Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNTcyOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV8gKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEwKSAoMSkpKSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MDBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjU1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTY1NTsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgXCJwbGFmb25kX8OpcXVpdmFsZW5jZV9sb3llcl/DqWxpZ2libGVcIl0ge2lvX2lucHV0PU5vSW5wdXQ7XG4gICAgaW9fb3V0cHV0PXRydWV9IChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjUxNzsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjUxNzsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDI3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ2MTkyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NDE1MlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU3NzQxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI2MTc5NFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjU4NjJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzEwMzlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI3MzY4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQyMjQyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0OTI5OVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUyNTY1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NjI2OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTk5NTdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjM4ODdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI2NjU5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwMDk2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NjYzNFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ5NDc1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1Mjc0MFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTYwMDRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTk2NzVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI2MTgwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSkpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDg5OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDg5OyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMjdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgMWVyIG9jdG9icmUgMjAyMSAtIEFycsOqdMOpIGR1IDIzIHNlcHRlbWJyZSAyMDIxIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbCdhaWRlIMOgIGwnYWNjZXNzaW9uIHNvY2lhbGUgZXQgw6AgbGEgc29ydGllIGRlIGwnaW5zYWx1YnJpdMOpIHNww6ljaWZpcXVlIMOgIGwnb3V0cmUtbWVyIE5PUiA6IExPR0wyMTIzNDUyQVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NDYzMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTIzMjFcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NTc4OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTk3MDRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjYzNjM1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjY4NjM3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNzExOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDgxNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDc2MzJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MDc4N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTQzNjVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU3OTI5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjYxNzI3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjQzNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODc0MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDUwNTdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NzgwMlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTA5NTdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU0MTEwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU3NjU3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTk3MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjU4OTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjU4OTsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDI3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IGR1IDFlciBvY3RvYnJlIDIwMjAgLSBBcnLDqnTDqSBkdSAyNSBzZXB0ZW1icmUgMjAyMCByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGwnYWlkZSDDoCBsJ2FjY2Vzc2lvbiBzb2NpYWxlIGV0IMOgIGxhIHNvcnRpZSBkZSBsJ2luc2FsdWJyaXTDqSBzcMOpY2lmaXF1ZSDDoCBsJ291dHJlLW1lciBOT1IgOiBMT0dMMjAyMDgzNUFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ0NDQzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MjEwMVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU1NTU1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1OTQ1NFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjMzNjlcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjgzNTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI3MDg5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwNjQzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NzQzM1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUwNTc1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NDEzOFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTc2ODdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjE0NjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI2NDA3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4NTc4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NDg2OVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ3NjAyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MDc0NFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTM4ODRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTc0MTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1OTQ2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSkpKSkpKSkpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY1MDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02NTA7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvZWZmaWNpZW50X3JfZDgzMl8yNV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiOyBcImNvZWZmaWNpZW50X3JfZDgzMl8yNVwiXVxuICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9dHJ1ZX0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjU5OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNTk5OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV8gKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEwKSAoMSkpKSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMjE3MjZcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjQ3OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTY0NzsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29uZGl0aW9uXzJfZHVfODMyXzI1XzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjsgXCJjb25kaXRpb25fMl9kdV84MzJfMjVcIl1cbiAgICB7aW9faW5wdXQ9UmVlbnRyYW50OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT4gY29uZGl0aW9uXzJfZHVfODMyXzI1XyAoKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU3NjI7IHN0YXJ0X2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU3NjI7IGVuZF9jb2x1bW49NDU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODYxLTIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZGFucyBsZXMgbG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBWSSA6IERpc3Bvc2l0aW9uIHBhcnRpY3VsacOocmVzIMOgIGwnb3V0cmUtbWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjMpICg0KSAoNSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3V5YW5lIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5MYVJldW5pb24gXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50TWFydGluIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWV0cm9wb2xlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWF5b3R0ZSBfIC0+IHRydWUpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM3ODY7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNzg2OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgb19vclxuICAgICAgICAgICAgICAgICAgIChvX2FuZCBsb2dlbWVudF9mb3llcl9qZXVuZXNfdHJhdmFpbGxldXJzX1xuICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY29udmVudGlvbm5lbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTkwKSAoOSkgKDMwKSkpKVxuICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX2xvZ2VtZW50X2ZveWVyX1xuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgVHlwZUxvZ2VtZW50Rm95ZXIuTG9nZW1lbnRQZXJzb25uZXNBZ2Vlc091SGFuZGljYXBlZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfCBUeXBlTG9nZW1lbnRGb3llci5SZXNpZGVuY2VTb2NpYWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY29udmVudGlvbm5lbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTQpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgIHwgVHlwZUxvZ2VtZW50Rm95ZXIuRm95ZXJKZXVuZXNUcmF2YWlsbGV1cnNPdU1pZ3JhbnRzQ29udmVudGlvbm5lTDM1M18yQXZhbnQxOTk1IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIHwgVHlwZUxvZ2VtZW50Rm95ZXIuQXV0cmUgXyAtPiBmYWxzZSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02NDM7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjQzOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdIHtpb19pbnB1dD1Ob0lucHV0O1xuICAgIGlvX291dHB1dD1mYWxzZX0gKHVuZW1iZWRkYWJsZSlcbiAgICAoZnVuIChhaWRlX2ZpbmFsZV86IG1vbmV5KSAtPiBcbiAgICAgICB0cnlcbiAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM3MTk7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzcxOTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgIChvX2d0ZV9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIGFpZGVfZmluYWxlXyBtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjRfKVxuICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBhaWRlX2ZpbmFsZV8gbW9udGFudF9mb3JmYWl0YWlyZV9kODMyXzI0XylcbiAgICAgICAgICAgICAgICAgZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpXG4gICAgICAgd2l0aFxuICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Njc0OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY3NDsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjsgXCLDqXF1aXZhbGVuY2VfbG95ZXJfw6lsaWdpYmxlXCJdXG4gICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM2OTM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzY5MzsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIChvX2d0ZV9tb25fbW9uIHJlZGV2YW5jZV8gcGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV8pXG4gICAgICAgICAgICAgIHRoZW4gcGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV8gZWxzZSByZWRldmFuY2VfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02NDk7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NjQ5OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX25vbWJyZV9wYXJ0cy5kYXRlX2NvdXJhbnRlXCJdIHtpb19pbnB1dD1Pbmx5SW5wdXQ7XG4gICAgICBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzg4Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zODgyOyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zODgyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM4ODI7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3RfY29uZGl0aW9uXzJfZHVfODMyXzI1XzogYm9vbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX25vbWJyZV9wYXJ0cy5jb25kaXRpb25fMl9kdV84MzJfMjVcIl0ge2lvX2lucHV0PU9ubHlJbnB1dDtcbiAgICAgIGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zODgwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM4ODA7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBjb25kaXRpb25fMl9kdV84MzJfMjVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Mzg4MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zODgwOyBlbmRfY29sdW1uPTU1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfbm9tYnJlX3BhcnRzLm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlXCJdXG4gICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9pbnRlZ2VyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzg3Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zODc2OyBlbmRfY29sdW1uPTU5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zODc2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM4NzY7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXzogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF9ub21icmVfcGFydHMuc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXCJdXG4gICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgICAoZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zODc4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM4Nzg7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9Mzg3ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zODc4OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfZG90X2xpbWl0YXRpb25fbWFqb3JhdGlvbl9wZXJzb25uZXNfYV9jaGFyZ2VfOiBcbiAgICB1bml0IC0+IGJvb2wgPSBmdW4gKF86IHVuaXQpIC0+IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9ub21icmVfcGFydHMubGltaXRhdGlvbl9tYWpvcmF0aW9uX3BlcnNvbm5lc1/DoF9jaGFyZ2VcIl1cbiAgICAgICAgICAgICAgICAgICAgIHtpb19pbnB1dD1SZWVudHJhbnQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2Jvb2wpXG4gICAgICAgICAgICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoXG4gICAgICAgICAgICAgICAgICAgICAgICBbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU1NDU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NTQ1OyBlbmRfY29sdW1uPTQ1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODYxLThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIFZJIDogRGlzcG9zaXRpb24gcGFydGljdWxpw6hyZXMgw6AgbCdvdXRyZS1tZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoOSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjMpICg0KSAoNSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0YXRpb25fbWFqb3JhdGlvbl9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSkpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llci50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjsgXCJjYWxjdWxfbm9tYnJlX3BhcnRzXCI7XG4gICAgICBcIkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwiY2FsY3VsX25vbWJyZV9wYXJ0c1wiO1xuICAgICAgXCJDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llclwiXSBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXIpXG4gICAgKHtDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llckluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICAgQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJJbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9ub21icmVfcGFydHNfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV87XG4gICAgICAgIENhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV87XG4gICAgICAgIENhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgICBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfO1xuICAgICAgICBDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llckluLmxpbWl0YXRpb25fbWFqb3JhdGlvbl9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgIGNhbGN1bF9ub21icmVfcGFydHNfZG90X2xpbWl0YXRpb25fbWFqb3JhdGlvbl9wZXJzb25uZXNfYV9jaGFyZ2VffSkpKSBpblxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV86IGRlY2ltYWwgPSByZXN1bHRfLkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjUgaW5cbiAgbGV0IG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yN186IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiOyBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yN1wiXVxuICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI3NTc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mjc1NzsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMCkgKDEpKSkpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZiBjb25kaXRpb25fMl9kdV84MzJfMjVfIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE1MDBcIilcbiAgICAgICAgICAgICAgZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjY2OFwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjU2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTY1NjsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgXCJjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzI1XCJdIHtpb19pbnB1dD1Ob0lucHV0O1xuICAgIGlvX291dHB1dD10cnVlfSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNjEwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI2MTA7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlXyAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTApICgxKSkpKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWYgY29uZGl0aW9uXzJfZHVfODMyXzI1XyB0aGVuIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTQyMDkxXCIpXG4gICAgICAgICAgICAgIGVsc2UgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEzMzkzNDBcIikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY0Njsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02NDY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN186IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzI3XCJdIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgKHVuZW1iZWRkYWJsZSlcbiAgICAoZnVuIChhbGxvY2F0aW9uX21lbnN1ZWxsZV86IG1vbmV5KSAtPiBcbiAgICAgICB0cnlcbiAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQwODU7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDA4NTsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgb19zdWJfbW9uX21vbiBlcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV9cbiAgICAgICAgICAgICAgICAgYWxsb2NhdGlvbl9tZW5zdWVsbGVfKSlcbiAgICAgICB3aXRoXG4gICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02NTM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjUzOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBuX25vbWJyZV9wYXJ0c19kODMyXzI1XzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjsgXCJuX25vbWJyZV9wYXJ0c19kODMyXzI1XCJdXG4gICAge2lvX2lucHV0PVJlZW50cmFudDsgaW9fb3V0cHV0PXRydWV9IChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT4gbl9ub21icmVfcGFydHNfZDgzMl8yNV8gKCkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM4ODM7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zODgzOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV8pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02NDg7IHN0YXJ0X2NvbHVtbj0yMTsgZW5kX2xpbmU9NjQ4OyBlbmRfY29sdW1uPTQzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhYmF0dGVtZW50X2RlcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN186IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdcIl0ge2lvX2lucHV0PU5vSW5wdXQ7XG4gICAgaW9fb3V0cHV0PWZhbHNlfSAodW5lbWJlZGRhYmxlKVxuICAgIChmdW4gKGFsbG9jYXRpb25fbWVuc3VlbGxlXzogbW9uZXkpIC0+IFxuICAgICAgIHRyeVxuICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA4OTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDg5OyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAobGV0IGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdcIl1cbiAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzI3XCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PXRydWV9IChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzI3XCJdXG4gICAgICAgICAgICAgICAgICBkZXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdfKSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN1wiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICBhbGxvY2F0aW9uX21lbnN1ZWxsZV8pKSkpKSkpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgKG9fbHRlX21vbl9tb24gZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV9cbiAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yN18pIHRoZW5cbiAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8yN19cbiAgICAgICAgICAgICAgICAgICAgIGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfKSBlbHNlXG4gICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpKSlcbiAgICAgICB3aXRoXG4gICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT02NTE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NjUxOyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlLmRhdGVfY291cmFudGVcIl1cbiAgICAgIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjgyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTY4MjsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjgyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTY4MjsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUucmVzc291cmNlc19tw6luYWdlX2Fycm9uZGllc1wiXVxuICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNzA5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM3MDk7IGVuZF9jb2x1bW49NzU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzcwOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNzA5OyBlbmRfY29sdW1uPTc1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfY29uZGl0aW9uXzJfZHVfODMyXzI1XzogYm9vbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX8OpcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZS5jb25kaXRpb25fMl9kdV84MzJfMjVcIl1cbiAgICAgIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNzA3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM3MDc7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBjb25kaXRpb25fMl9kdV84MzJfMjVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzcwNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNzA3OyBlbmRfY29sdW1uPTY5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV86IGRlY2ltYWwgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUubl9ub21icmVfcGFydHNfZDgzMl8yNVwiXVxuICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfZGVjaW1hbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM3MTE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzcxMTsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAyIDogQ29uZGl0aW9ucyBkJ29jdHJvaSBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgYXV4IHBlcnNvbm5lcyByw6lzaWRhbnQgZGFucyB1biBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzcxMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNzExOyBlbmRfY29sdW1uPTcwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZS50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwiY2FsY3VsX8OpcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZVwiO1xuICAgICAgXCJDYWxjdWzDiXF1aXZhbGVuY2VMb3llck1pbmltYWxlXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVcIjtcbiAgICAgIFwiQ2FsY3Vsw4lxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZVwiXSBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUpXG4gICAgKHtDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICAgQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luID1cbiAgICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc187XG4gICAgICAgIENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9jb25kaXRpb25fMl9kdV84MzJfMjVfO1xuICAgICAgICBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5uX25vbWJyZV9wYXJ0c19kODMyXzI1X2luID1cbiAgICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMjVffSkpKSBpblxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9tb250YW50XzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZS5tb250YW50IGluXG4gIGxldCBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9mb3JtdWxlXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfZm9ybXVsZVwiXSB7aW9faW5wdXQ9Tm9JbnB1dDtcbiAgICBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM4OTY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM4OTY7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbl8yX2R1XzgzMl8yNV8pKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBvX3N1Yl9yYXRfcmF0IChkZWNpbWFsX29mX3N0cmluZyBcIjAuOVwiKVxuICAgICAgICAgICAgICAgICAgICAgIChvX2Rpdl9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzI1XykpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zODAxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM4MDE7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIChsZXQgZGVub21pbmF0ZXVyXyA6IG1vbmV5ID1cbiAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19cbiAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBjb2VmZmljaWVudF9yX2Q4MzJfMjVfXG4gICAgICAgICAgICAgICAgICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzI1XykpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKGxldCBkZW5vbWluYXRldXJfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgKCBpZiAob19sdF9tb25fbW9uIGRlbm9taW5hdGV1cl8gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICB0aGVuIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2UgZGVub21pbmF0ZXVyXylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAob19zdWJfcmF0X3JhdCAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjk1XCIpXG4gICAgICAgICAgICAgICAob19kaXZfbW9uX21vbiBkZW5vbWluYXRldXJfXG4gICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNV9cbiAgICAgICAgICAgICAgICAgICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfKSkpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY2Nzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02Njc7IGVuZF9jb2x1bW49MTc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudF86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIl0ge2lvX2lucHV0PU5vSW5wdXQ7XG4gICAgaW9fb3V0cHV0PWZhbHNlfSAodW5lbWJlZGRhYmxlKVxuICAgIChmdW4gKGFpZGVfZmluYWxlXzogbW9uZXkpIC0+IFxuICAgICAgIHRyeVxuICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzczMzsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNzMzOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0ge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfVxuICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdXG4gICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVfKVxuICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICBcImlucHV0MFwiXSB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIGFpZGVfZmluYWxlXykpKSkpKSlcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID1cbiAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIGFpZGVfZmluYWxlXyAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN1wiXVxuICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8yN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PXRydWV9XG4gICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdcIl1cbiAgICAgICAgICAgICAgICAgICAgIGFiYXR0ZW1lbnRfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzI3XylcbiAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl0ge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBhaWRlX2ZpbmFsZV8pKSkpKSkpKVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICggaWYgKG9fZ3RlX21vbl9tb24gYWlkZV9maW5hbGVfIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgdGhlbiBhaWRlX2ZpbmFsZV8gZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpKSkpXG4gICAgICAgd2l0aFxuICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Njc1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY3NTsgZW5kX2NvbHVtbj0yMDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjsgXCLDqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVcIl1cbiAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PXRydWV9IChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzcwNTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNzA1OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfbW9udGFudF8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY1ODsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT02NTg7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X2NvZWZmX2Fycm9uZGlfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgXCJjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9jb2VmZl9hcnJvbmRpXCJdIHtpb19pbnB1dD1Ob0lucHV0O1xuICAgIGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzkxMzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzkxMzsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uXzJfZHVfODMyXzI1XykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG9fZGl2X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAob19yb3VuZF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X2Zvcm11bGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMDVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTAwLlwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTAwLlwiKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzgyMjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zODIyOyBlbmRfY29sdW1uPTQ5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX2Rpdl9yYXRfcmF0XG4gICAgICAgICAgICAgIChvX3JvdW5kX3JhdFxuICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgKG9fc3ViX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfZm9ybXVsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMDVcIikpXG4gICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMC5cIikpKSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAuXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT02Njg7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NjY4OyBlbmRfY29sdW1uPTIzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXVxuICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9ZmFsc2V9ICh1bmVtYmVkZGFibGUpXG4gICAgKGZ1biAoYWlkZV9maW5hbGVfOiBtb25leSkgLT4gXG4gICAgICAgdHJ5XG4gICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNzQ3OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgIGVuZF9saW5lPTM3NDc7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLVNlY3Rpb24gMiA6IENvbmRpdGlvbnMgZCdvY3Ryb2kgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGF1eCBwZXJzb25uZXMgcsOpc2lkYW50IGRhbnMgdW4gbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiXVxuICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XCJdXG4gICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRfKVxuICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICBhaWRlX2ZpbmFsZV8pKSkpKSkpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgKGxldCBjcmRzXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIl0gKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiOyBcIm91dHB1dFwiXSB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PXRydWV9XG4gICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIl0gY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfbW9udGFudF8pXG4gICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwiaW5wdXQwXCJdIHtpb19pbnB1dD1Pbmx5SW5wdXQ7XG4gICAgICAgICAgICAgICAgICBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9tb25leSkgYWlkZV9maW5hbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfbW9pbnNfY3Jkc19hcnJvbmRpZV8gOiBtb25leSA9XG4gICAgICAgICAgICAgICAgICAob19yb3VuZF9tb25cbiAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIChvX3N1Yl9tb25fbW9uIGFpZGVfZmluYWxlXyBjcmRzXylcbiAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MFwiKSkpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgKG9fZ3RlX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGFpZGVfZmluYWxlX21vaW5zX2NyZHNfYXJyb25kaWVfIGNyZHNfKVxuICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGFpZGVfZmluYWxlX21vaW5zX2NyZHNfYXJyb25kaWVfIGNyZHNfKSBlbHNlXG4gICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpKSkpKVxuICAgICAgIHdpdGhcbiAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTY3Njsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02NzY7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X3NldWlsXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfc2V1aWxcIl0ge2lvX2lucHV0PU5vSW5wdXQ7XG4gICAgaW9fb3V0cHV0PXRydWV9IChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM5MTk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM5MTk7IGVuZF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0yNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbl8yX2R1XzgzMl8yNV8pKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAob19ndGVfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgIGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1X2NvZWZmX2Fycm9uZGlfXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC45XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC45XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9jb2VmZl9hcnJvbmRpXykpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzgyNTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zODI1OyBlbmRfY29sdW1uPTQ5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgKG9fZ3RlX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfY29lZmZfYXJyb25kaV9cbiAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC45NVwiKSkgdGhlbiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjk1XCIpXG4gICAgICAgICAgICAgIGVsc2UgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfY29lZmZfYXJyb25kaV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTY2OTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT02Njk7IGVuZF9jb2x1bW49MTU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXCJdIHtpb19pbnB1dD1Ob0lucHV0O1xuICAgIGlvX291dHB1dD10cnVlfSAodW5lbWJlZGRhYmxlKVxuICAgIChmdW4gKGFpZGVfZmluYWxlXzogbW9uZXkpIC0+IFxuICAgICAgIHRyeVxuICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzc2ODsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNzY4OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXVxuICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCI7XG4gICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9dHJ1ZX1cbiAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCJdXG4gICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaV8pXG4gICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl0ge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfVxuICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBhaWRlX2ZpbmFsZV8pKSkpKSkpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgKCBpZiAob19sdF9tb25fbW9uIGFpZGVfZmluYWxlXyBtb250YW50X21pbmltYWxfYWlkZV9kODIzXzI0XylcbiAgICAgICAgICAgICAgICAgIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZSBhaWRlX2ZpbmFsZV8pKSkpXG4gICAgICAgd2l0aFxuICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Njc3OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTY3NzsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiOyBcImFpZGVfZmluYWxlX2Zvcm11bGVcIl1cbiAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PXRydWV9IChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzY3Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNjcyOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTI0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1TZWN0aW9uIDIgOiBDb25kaXRpb25zIGQnb2N0cm9pIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBhdXggcGVyc29ubmVzIHLDqXNpZGFudCBkYW5zIHVuIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID1cbiAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGVfXG4gICAgICAgICAgICAgICAgICAgICBlcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV8pXG4gICAgICAgICAgICAgICAgICBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9zZXVpbF8pXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBpZiAob19sdF9tb25fbW9uIGFpZGVfZmluYWxlXyAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZSBhaWRlX2ZpbmFsZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NjcxOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTY3MTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICB7Q2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMjUgPVxuICAgICBjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzI1XztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmNvZWZmaWNpZW50X3JfZDgzMl8yNSA9XG4gICAgICAgY29lZmZpY2llbnRfcl9kODMyXzI1XztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjUgPVxuICAgICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGUgPVxuICAgICAgIGVxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlXztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnBsYWZvbmRfZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGUgPVxuICAgICAgIHBsYWZvbmRfZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGVfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUgPVxuICAgICAgIGVxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1ID1cbiAgICAgICBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9zZXVpbF87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5haWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlXztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsX31cblxubGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udCkgOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnQgPVxuICBsZXQgbWVuc3VhbGl0ZV9wcmluY2lwYWxlXzogbW9uZXkgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLm1lbnN1YWxpdGVfcHJpbmNpcGFsZV9pbiBpblxuICBsZXQgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXzogbW9uZXkgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiBpblxuICBsZXQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV86IGludGVnZXIgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gaW5cbiAgbGV0IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gaW5cbiAgbGV0IHR5cGVfdHJhdmF1eF9sb2dlbWVudF86IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUudCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udHlwZV90cmF2YXV4X2xvZ2VtZW50X2luIGluXG4gIGxldCBkYXRlX3NpZ25hdHVyZV9wcmV0XzogZGF0ZSA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9zaWduYXR1cmVfcHJldF9pbiBpblxuICBsZXQgbG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlXzogYm9vbCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlX2luIGluXG4gIGxldCBkYXRlX2VudHJlZV9sb2dlbWVudF86IGRhdGUgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfZW50cmVlX2xvZ2VtZW50X2luIGluXG4gIGxldCBjb3Byb3ByaWV0ZV86IGJvb2wgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmNvcHJvcHJpZXRlX2luIGluXG4gIGxldCBzaXR1YXRpb25fcjgyMl8xMV8xM18xN186IGJvb2wgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnNpdHVhdGlvbl9yODIyXzExXzEzXzE3X2luIGluXG4gIGxldCB6b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnpvbmVfaW4gaW5cbiAgbGV0IHR5cGVfcHJldF86IFR5cGVQcmV0LnQgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnR5cGVfcHJldF9pbiBpblxuICBsZXQgYW5jaWVubmV0ZV9sb2dlbWVudF86IE5ldWZPdUFuY2llbi50ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5hbmNpZW5uZXRlX2xvZ2VtZW50X2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgcmVzaWRlbmNlXzogQ29sbGVjdGl2aXRlLnQgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnJlc2lkZW5jZV9pbiBpblxuICBsZXQgdGF1eF9mcmFuY3NfdmVyc19ldXJvc186IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NcIl0ge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD1mYWxzZX1cbiAgICAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2F1dHJlc19zb3VyY2VzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMyNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMjc7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIHByZW1pZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJSw6hnbGVtZW50IChDRSkgbsKwMjg2Ni85OCBkdSBjb25zZWlsIGR1IDMxIGTDqWNlbWJyZSAxOTk4IGNvbmNlcm5hbnQgbGVzIHRhdXggZGUgY29udmVyc2lvbiBlbnRyZSBsJ2V1cm8gZXQgbGVzIG1vbm5haWVzIGRlcyDDiXRhdHMgbWVtYnJlcyBhZG9wdGFudCBsJ2V1cm9cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX2Rpdl9yYXRfcmF0IChkZWNpbWFsX29mX3N0cmluZyBcIjEuXCIpXG4gICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjYuNTU5NTdcIikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTc0Mzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03NDM7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX25vbWJyZV9wYXJ0cy5ub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZVwiXVxuICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfaW50ZWdlcilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMyMzQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzIzNDsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMjM0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMyMzQ7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX25vbWJyZV9wYXJ0cy5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxcIl1cbiAgICAgIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX1cbiAgICAgIChlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMyMzY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzIzNjsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMyMzY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzIzNjsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjYWxjdWxfbm9tYnJlX3BhcnRzXCI7IFwiQ2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiXVxuICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNhbGN1bF9ub21icmVfcGFydHNcIjsgXCJDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByacOpdMOpXCJdXG4gICAgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlKVxuICAgICh7Q2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGVJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV87XG4gICAgICAgIENhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgICBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxffSkpKSBpblxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8xMV86IGRlY2ltYWwgPSByZXN1bHRfLkNhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMTEgaW5cbiAgbGV0IF86IHVuaXQgPSBpZiAoXG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzY2OyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzY2OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkgdGhlblxuICAgICAgICAgICAgICAgICAgKCkgZWxzZVxuICAgICAgICAgICAgICAgICAgcmFpc2UgKEFzc2VydGlvbkZhaWxlZCB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzY2OyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzY2OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pIGluXG4gIGxldCB0YXV4X3RyYW5jaGVfc3VwZXJpZXVyZV9kODMyXzE1XzFfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJ0YXV4X3RyYW5jaGVfc3Vww6lyaWV1cmVfZDgzMl8xNV8xXCJdIHtpb19pbnB1dD1Ob0lucHV0O1xuICAgIGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNDEwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI0MTA7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDIzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMCkgKDEpKSkpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjQxNlwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03NDI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzQyOyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdGF1eF90cmFuY2hlX2luZmVyaWV1cmVfZDgzMl8xNV8xXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwidGF1eF90cmFuY2hlX2luZsOpcmlldXJlX2Q4MzJfMTVfMVwiXSB7aW9faW5wdXQ9Tm9JbnB1dDtcbiAgICBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjQwOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNDA5OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlXyAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTApICgxKSkpKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4yMDhcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzQxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTc0MTsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfbGltaXRlX3RyYW5jaGVzX2Q4MzJfMTVfMV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJtb250YW50X2xpbWl0ZV90cmFuY2hlc19kODMyXzE1XzFcIl0ge2lvX2lucHV0PU5vSW5wdXQ7XG4gICAgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNDA4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI0MDg7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDIzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMCkgKDEpKSkpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTYwMDg1XCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTc0MDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03NDA7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzE4XzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8xOFwiXSB7aW9faW5wdXQ9Tm9JbnB1dDtcbiAgICBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjQ4ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yNDg4OyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlXyAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTApICgxKSkpKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTYuMjVcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzM5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTczOTsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMTFfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8xMVwiXSB7aW9faW5wdXQ9Tm9JbnB1dDtcbiAgICBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTIzOTI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjM5MjsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMjJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV8gKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEwKSAoMSkpKSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjExMTMzXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTczODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03Mzg7IGVuZF9jb2x1bW49NDU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzE3XzNfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzE3XzNcIl0ge2lvX2lucHV0PU5vSW5wdXQ7XG4gICAgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI0Njk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjQ2OTsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMjVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV8gKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEwKSAoMSkpKSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgbWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTgpICgxMCkgKDEpKSkgdGhlblxuICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDIyNlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjM0XCIpKVxuICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIGFtZWxpb3JlX3Bhcl9vY2N1cGFudF8gLT5cbiAgICAgICAgICAgICAgICAobWF0Y2ggYW1lbGlvcmVfcGFyX29jY3VwYW50X1xuICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgIHwgQW1lbGlvcmVQYXJPY2N1cGFudC5PdWkgXyAtPiAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAxNzJcIilcbiAgICAgICAgICAgICAgICAgfCBBbWVsaW9yZVBhck9jY3VwYW50Lk5vbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5OCkgKDEwKSAoMSkpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyMjZcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjM0XCIpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTczNzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03Mzc7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X21pbmltYWxfYWlkZV9kODMyXzEwXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcIm1vbnRhbnRfbWluaW1hbF9haWRlX2Q4MzJfMTBcIl0ge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD1mYWxzZX1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMzgyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTIzODI7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMCkgKDEpKSkpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTAwMFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03MzY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzM2OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9mb3JmYWl0YWlyZV9kODMyXzEwXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8xMFwiXSB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PWZhbHNlfVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTIzNzA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MjM3MDsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMjBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV8gKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEwKSAoMSkpKSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MDBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzM1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTczNTsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODMyXzEwXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODMyXzEwXCJdIHtpb19pbnB1dD1Ob0lucHV0O1xuICAgIGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNDQxOyBzdGFydF9jb2x1bW49NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjQ0MTsgZW5kX2NvbHVtbj0xODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3Byb3ByaWV0ZV8pKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjgwNVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTYxMlwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxMjcyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ1NDsgc3RhcnRfY29sdW1uPTc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0NTQ7IGVuZF9jb2x1bW49MTg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDI0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgMWVyIG9jdG9icmUgMjAyMSAtIEFycsOqdMOpIGR1IDIzIHNlcHRlbWJyZSAyMDIxIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbCdhaWRlIMOgIGwnYWNjZXNzaW9uIHNvY2lhbGUgZXQgw6AgbGEgc29ydGllIGRlIGwnaW5zYWx1YnJpdMOpIHNww6ljaWZpcXVlIMOgIGwnb3V0cmUtbWVyIE5PUiA6IExPR0wyMTIzNDUyQVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29wcm9wcmlldGVfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI3MTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU0MjJcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTIyOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI1NTQ7IHN0YXJ0X2NvbHVtbj03O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNTU0OyBlbmRfY29sdW1uPTE4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IGR1IDFlciBvY3RvYnJlIDIwMjAgLSBBcnLDqnTDqSBkdSAyNSBzZXB0ZW1icmUgMjAyMCByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGwnYWlkZSDDoCBsJ2FjY2Vzc2lvbiBzb2NpYWxlIGV0IMOgIGxhIHNvcnRpZSBkZSBsJ2luc2FsdWJyaXTDqSBzcMOpY2lmaXF1ZSDDoCBsJ291dHJlLW1lciBOT1IgOiBMT0dMMjAyMDgzNUFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3Byb3ByaWV0ZV8pKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjY5OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTM5OVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxMjI0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjM1ODsgc3RhcnRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjM1ODsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE5XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU2MTJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTI3MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDIwOyBzdGFydF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDIwOyBlbmRfY29sdW1uPTY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgMWVyIG9jdG9icmUgMjAyMSAtIEFycsOqdMOpIGR1IDIzIHNlcHRlbWJyZSAyMDIxIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbCdhaWRlIMOgIGwnYWNjZXNzaW9uIHNvY2lhbGUgZXQgw6AgbGEgc29ydGllIGRlIGwnaW5zYWx1YnJpdMOpIHNww6ljaWZpcXVlIMOgIGwnb3V0cmUtbWVyIE5PUiA6IExPR0wyMTIzNDUyQVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTQyMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMjI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI1MjA7IHN0YXJ0X2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI1MjA7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyBlbiB2aWd1ZXVyIMOgIHBhcnRpciBkdSBkdSAxZXIgb2N0b2JyZSAyMDIwIC0gQXJyw6p0w6kgZHUgMjUgc2VwdGVtYnJlIDIwMjAgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsJ2FpZGUgw6AgbCdhY2Nlc3Npb24gc29jaWFsZSBldCDDoCBsYSBzb3J0aWUgZGUgbCdpbnNhbHVicml0w6kgc3DDqWNpZmlxdWUgw6AgbCdvdXRyZS1tZXIgTk9SIDogTE9HTDIwMjA4MzVBXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTM5OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMjI0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzM0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTczNDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjb250cmlidXRpb25zX3NvY2lhbGVzLmRhdGVfY291cmFudGVcIl0ge2lvX2lucHV0PU9ubHlJbnB1dDtcbiAgICAgIGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzYwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTc2MDsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTc2MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT03NjA7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfbGlldV86IENvbGxlY3Rpdml0ZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjb250cmlidXRpb25zX3NvY2lhbGVzLmxpZXVcIl0ge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfVxuICAgICAgKGVtYmVkX2NvbGxlY3Rpdml0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT03NjE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NzYxOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmVzaWRlbmNlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03NjE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NzYxOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY29udHJpYnV0aW9uc19zb2NpYWxlc1wiO1xuICAgICAgXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY29udHJpYnV0aW9uc19zb2NpYWxlc1wiO1xuICAgICAgXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl1cbiAgICBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50KVxuICAgICh7Q29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X2RhdGVfY291cmFudGVfO1xuICAgICAgICBDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5saWV1X2luID1cbiAgICAgICAgICBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9saWV1X30pKSkgaW5cbiAgbGV0IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X21vbnRhbnRfOiBtb25leSAtPiBtb25leSA9IHJlc3VsdF8uQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50Lm1vbnRhbnQgaW5cbiAgbGV0IGNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zXzogZGF0ZSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zXCJdIHtpb19pbnB1dD1Ob0lucHV0O1xuICAgIGlvX291dHB1dD1mYWxzZX0gKHVuZW1iZWRkYWJsZSlcbiAgICAoZnVuIChkYXRlX3NpZ25hdHVyZV9wcmV0XzogZGF0ZSkgLT4gXG4gICAgICAgdHJ5XG4gICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04MzA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODQ1OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIzKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTIpICg2KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5NCkgKDExKSAoMjcpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIGFtZWxpb3JlX3Bhcl9vY2N1cGFudF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW1lbGlvcmVfcGFyX29jY3VwYW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEFtZWxpb3JlUGFyT2NjdXBhbnQuT3VpIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQW1lbGlvcmVQYXJPY2N1cGFudC5Ob24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjg2OTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjk3MTAwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxMDczMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjEwMjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpfF0pXG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7IGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA4Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwOTA7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTkyKSAoNikgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk0KSAoMTEpICgyNykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwODUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNTE1MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5NDUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQzMDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE4NjAwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjM5MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI2MTgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3OTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE3MzYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDgyMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0MjgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0NjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7IGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTExOTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExMjM7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTkyKSAoNikgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk0KSAoMTEpICgyNykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE2NzgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDI1MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzNzIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE0OTYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxODAxMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxMDYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwNTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjEzOTcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNjc2MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE5NTUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI3OTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7IGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE1Mjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNTY7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk0KSAoMTEpICgyNykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMCkgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE5ODEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzkwMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI3OTkwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwOTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE3NjgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTI4MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0ODgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2MDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE2NTAwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTc5MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzMDgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMyOTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7IGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE4NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExODk7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk0KSAoMTEpICgyNykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMCkgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE1OTUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTI1MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyNTUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMzMDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE0MjIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNzEyMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwMDIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5MDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjEzMjgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNTkzMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE4NTgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI2NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7IGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTIxODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyMjI7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDAwKSAoNikgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMSkgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwMDEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNDE0MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE4MjcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQxMzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE3ODYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTUwMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI1MTQwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2NDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE2NjcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTk5MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzMzEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMzMjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7IGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI1MTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyNTU7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDAwKSAoNikgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMSkgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE2MTEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTQ0MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyNzcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMzMzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE0MzYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNzI5MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwMjIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5MzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjEzNDEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNjA5MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE4NzcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI2ODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7IGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI4NDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyODg7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDAxKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDEpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjAyNTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0NDMwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjg2MTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDE4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTgwNzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxNzUwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjU0MzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzY4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTY4NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwMjMwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjM1OTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzM2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTsgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzE3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTMyMTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMikgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMDg3MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzI0M1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQzNjE1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjM3MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI3NTQ4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMzMTQ4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzg3NjhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1NjEwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjU3MThcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzA4NDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTk2MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjUxMjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xOyBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEzNTA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMzU0OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMSkgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDAxKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE2MzAwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTY3MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzMDQwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMzNzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE0NTMwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNzUwMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwNDcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjEzNTcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNjI4MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE4OTkwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI3MTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7IGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTM4Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEzODc7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDAyKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDIpICg2KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQ4NDlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjk5ODdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTEyNVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjUxMzhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjE1MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNjY3OVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxMjA3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDUyOFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwNjg3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0ODE4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjg5NDlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTMxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTsgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDE2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQyMDsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDIpICg2KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDMpICg2KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzEyNDFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzc2ODlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NDEzN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjY0NDhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNzg3OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzU1NlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM5MjMzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTY3N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI2MDI3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMxMjEwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzYzOTNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1MTgzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTsgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDQ5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ1MzsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDIpICg2KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDMpICg2KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjUxNDdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzAzNDdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTU0N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjUyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjQxN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNjk5OVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxNTgxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDU4MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwOTM1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI1MTE2XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjkyOTdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTgxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTsgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDgyOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ4NjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDMpICg2KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDUpICg4KSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE2MTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzgxNDFcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NDY2NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjY1MjVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyODIxNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzk1OVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM5NzA0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTc0NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI2MzM5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMxNTg0XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY4MjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1MjQ1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTsgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTE1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUxOTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDMpICg2KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDUpICg4KSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjU0NDlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzA3MTFcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTk3M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjUyNjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjY4NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNzMyM1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxOTYwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDYzN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxMTg2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI1NDE3XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjk2NDhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MjMxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTsgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTQ4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU1MjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDUpICg4KSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDYpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMyMTg1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM4ODI3XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDU0NjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2NjQyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjg3MjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzQ1NzBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDQxOFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU4NDhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNjgxM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMjE1MlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3NDkxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTMzOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7IGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU4MTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1ODU7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA1KSAoOCkgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA2KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNTkwN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMTI2NFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2NjIxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTM1N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzMDk0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI3ODE0XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI1MzRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NzIwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjE1NjdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjU4NzRcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDE4MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQzMDdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xOyBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2MTQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjE4OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNikgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDcpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMzMDg2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM5OTE0XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDY3NDJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2ODI4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjk1MjZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU1MzhcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MTU1MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjYwMTJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNzU2NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzA1MlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4NTQxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTQ4OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7IGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTY0Nzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2NTE7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA2KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNykgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjY2MzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzIxMzlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzY0NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU1MDdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzc0MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyODU5M1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzNDQ1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDg1MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyMTcxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2NTk4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzEwMjZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NDI4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTsgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjgwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTY4NDsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDcpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA4KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzk5OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTAxNlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ4MDMyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNzAxNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwMzQxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2NTE5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDI2OTdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2MTc4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjgzMjVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzM5NjRcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzOTYwNVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU2MzlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xOyBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE3MTM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNzE3OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNykgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDgpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI3MzY3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMzMDI2XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzg2ODVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1NjU5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQzOTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjkzODJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDM2OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ5ODZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjc4M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNzMzMlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxODgyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDU1MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7IGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTc0Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE3NTA7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA4KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwOSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzUwMDJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDIyMjZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0OTQ0OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjcyMjNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMTIzNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzU5NlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQzOTU3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjM2MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5MTYxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0OTY2XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDA3NzNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1ODA1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTsgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNzc5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTc4MzsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDgpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA5KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyODE3NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDAwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM5ODI2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTgyNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI1MTE2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwMjQ5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzUzODJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1MTMzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjM0NTVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjgxMzhcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjgyM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ2ODRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xOyBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4MTI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xODE2OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwOSkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTApICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1MTE0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQyMzYxXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDk2MDdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI3MjQ2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzEzMzZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzc3MTZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NDA5OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjYzODBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTI1NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTA3OFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwOTAzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTgyNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7IGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTg0NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE4NDk7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA5KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMCkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjgyNjRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzQxMDlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzOTk1M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU4NDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNTE5NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMDM0NlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NDk1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTE0OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzNTMwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI4MjI4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI5MjhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0Njk5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTsgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODc4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTg4MjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTApICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDExKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MjgyN1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUwMTUzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNzMyNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMxNjgxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM4MTMxXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDQ1ODNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2NDUwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjk1NzZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU0NjRcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MTM1M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU4ODhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xOyBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE5MTE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xOTE1OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMCkgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTEpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI4NTc1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0NDg0XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDAzOTJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1OTA5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjU0NzNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzA2ODBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTg4NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjUyMDZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzc4OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyODUzOVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzMjkwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDc1MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7IGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTk0NDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE5NDg7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDExKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMikgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU4NTVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDMyNTVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MDY1NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjczOTlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMTk5OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzODUxMlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ1MDI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjUxNVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5ODcyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1ODE5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDE3NjdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1OTQ3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTsgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xOTc3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTk4MTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTEpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEyKSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyODg2MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDgyOVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwNzk2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTk2OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI1NzI4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwOTg3XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzYyNDRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1MjU4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQwMjdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjg4MjRcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzYyM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ3OTlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xOyBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIwMTA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMDE0OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMikgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTQpICg5KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzY2MjZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDQxODVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MTc0NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjc1NThcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMjY4NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTM0MFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ1OTk3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjY1NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwNTE0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2NTg5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDI2NjVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2MDc1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTsgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMDQzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjA0NzsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTIpICgxMikgKDMxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE0KSAoOSkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5NDgyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1NTc4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDE2NzNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2MDk2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjYyODFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE2NTNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzAyM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjUzNzFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNDU0NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTQ0NFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0MzQ2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDkwMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7IGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjA3Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIwODA7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE0KSAoOSkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE1KSAoOSkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2ODM1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0NDM3XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTIwMzlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI3NjAxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzI4NzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzk1NjRcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NjI1OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjY2OTNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMDY4OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjc5OFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQyOTA4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjExMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7IGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjEwOTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIxMTM7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE0KSAoOSkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE1KSAoOSkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5NjUwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1NzgxXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDE5MTFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2MTMxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjY0MzFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE4MzNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzIzNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU0MDJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNDY4NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTYxMlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0NTQyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDkzMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7IGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjE0Mjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIxNDY7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE1KSAoOSkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE3KSAoOSkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2ODY0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0NDczXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTIwODFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI3NjA3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzI4OThcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzk1OTZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NjI5NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjY2OThcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMDcxM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjgyN1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQyOTQyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjExNVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7IGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjE3NTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIxNzk7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE1KSAoOSkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE3KSAoOSkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5Njc0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1ODEwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDE5NDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2MTM2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjY0NTJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE4NThcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzI2NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU0MDZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNDcwNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTYzNlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0NTcwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDkzNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7IGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjIwODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIyMTI7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE3KSAoOSkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoOSkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3MTQwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0ODA3XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTI0NzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI3NjY0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzMxNDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzk4OTNcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NjY0M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjY3NDhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMDk0M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzEwM1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQzMjY0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjE2MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7IGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjI0MTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIyNDU7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE3KSAoOSkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoOSkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5ODk3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2MDc5XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDIyNjBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2MTgyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjY2NTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzIwOTdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzU0M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU0NDdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNDg4OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTg1OFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0ODI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDk3MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7IGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjI3NDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIyNzc7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoOSkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLkFuY2llbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzI1MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NDk0MVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUyNjI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNzY4N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMzMjQ0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwMDEzXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDY3ODNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2NzY4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzEwMzZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzcyMTVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MzM5NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjYxNzlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xOyBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIzMDY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMzA5OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDkpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjk5ODZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzYxODdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MjM4NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjYyMDFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNjczMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMjE5M1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3NjU2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTQ2M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0OTY0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5OTQ4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQ5MzRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0OTg2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSkpO1xuICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xOyBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYzODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY0MTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5MikgKDYpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5NCkgKDExKSAoMjcpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGFuY2llbm5ldGVfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV1Zk91QW5jaWVuLk5ldWYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV9wcmV0X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA4NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI1MTUwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjk0NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDMwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTg2MDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyMzkwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjYxODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzc5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTczNjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwODIwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQyODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTsgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02ODM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODY7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTIpICg2KSAoMzApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTQpICgxMSkgKDI3KSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhbmNpZW5uZXRlX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE2NzgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDI1MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzNzIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE0OTYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxODAxMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxMDYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwNTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjEzOTcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNjc2MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE5NTUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI3OTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7IGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzI5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzMxOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk0KSAoMTEpICgyNykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5BbmNpZW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE4NDAwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjAwMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI2MDAwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM4MDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE2NDIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTc3MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzMTIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMzNTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE1MzIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxODM3MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxNDIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwNTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7IGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzczOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Nzc1OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk0KSAoMTEpICgyNykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYW5jaWVubmV0ZV9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uTmV1ZiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT4gdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNjNfNjQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+IGZhbHNlKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE0ODEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNzg3MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwOTMwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwNjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjEzMjAwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNTg5MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE4NTgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI2OTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjEyMzMwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxNDc5MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE3MjUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0NjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpKXxdKVxuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03MjI7IHN0YXJ0X2NvbHVtbj01NTtcbiAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzIyOyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IGZhbHNlKSlcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKVxuICAgICAgIHdpdGhcbiAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTcyMjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT03MjI7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBuX25vbWJyZV9wYXJ0c19kODMyXzExXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwibl9ub21icmVfcGFydHNfZDgzMl8xMVwiXSB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PWZhbHNlfVxuICAgIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMjMyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMyMzI7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzExXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzI0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTcyNDsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX2F2ZWNfZDgzMl8xOF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJyZXNzb3VyY2VzX23DqW5hZ2VfYXZlY19kODMyXzE4XCJdIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM1MTg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM1MTg7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9yODIyXzExXzEzXzE3XykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18pKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM1MTA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzUxMDsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgKG9fbHRlX21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX1xuICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgbWVuc3VhbGl0ZV9wcmluY2lwYWxlX1xuICAgICAgICAgICAgICAgICAgICBjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzE4XykpIHRoZW5cbiAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IG1lbnN1YWxpdGVfcHJpbmNpcGFsZV9cbiAgICAgICAgICAgICAgICAgY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8xOF8pIGVsc2VcbiAgICAgICAgICAgICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzMzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTczMzsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl0ge2lvX2lucHV0PU5vSW5wdXQ7XG4gICAgaW9fb3V0cHV0PWZhbHNlfSAodW5lbWJlZGRhYmxlKVxuICAgIChmdW4gKGFpZGVfZmluYWxlXzogbW9uZXkpIC0+IFxuICAgICAgIHRyeVxuICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzEwNTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTA1OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTEwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAob19ndGVfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBhaWRlX2ZpbmFsZV8gbW9udGFudF9mb3JmYWl0YWlyZV9kODMyXzEwXylcbiAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gYWlkZV9maW5hbGVfIG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgzMl8xMF8pXG4gICAgICAgICAgICAgICAgIGVsc2UgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKVxuICAgICAgIHdpdGhcbiAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc1NDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03NTQ7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBkZXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMTBfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMFwiXSB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PWZhbHNlfVxuICAgICh1bmVtYmVkZGFibGUpXG4gICAgKGZ1biAoYWxsb2NhdGlvbl9tZW5zdWVsbGVfOiBtb25leSkgLT4gXG4gICAgICAgdHJ5XG4gICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM0NTQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM0NTQ7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTkpICg2KSAoMzApKSkpKVxuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBvX3N1Yl9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gbWVuc3VhbGl0ZV9wcmluY2lwYWxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODMyXzEwXylcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvY2F0aW9uX21lbnN1ZWxsZV8pKXxdKVxuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM0NjU7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzQ2NTsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBvX3N1Yl9tb25fbW9uIG1lbnN1YWxpdGVfcHJpbmNpcGFsZV8gYWxsb2NhdGlvbl9tZW5zdWVsbGVfKSlcbiAgICAgICB3aXRoXG4gICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03Mjk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzI5OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcGxhZm9uZF9tZW5zdWFsaXRlX2Q4MzJfMTBfM19iYXNlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInBsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zX2Jhc2VcIl0ge2lvX2lucHV0PU5vSW5wdXQ7XG4gICAgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzMxOTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzMxOTsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgbG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlXykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIChsZXQgcGxhZm9uZF9zaWduYXR1cmVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODMyXzEwXzNcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODMyXzEwXzNcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zXCJdXG4gICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zXylcbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODMyXzEwXzNcIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfZGF0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF8pKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIChsZXQgcGxhZm9uZF9lbnRyZWVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODMyXzEwXzNcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODMyXzEwXzNcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zXCJdXG4gICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zXylcbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODMyXzEwXzNcIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfZGF0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9lbnRyZWVfbG9nZW1lbnRfKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAoIGlmIChvX2x0X21vbl9tb24gcGxhZm9uZF9zaWduYXR1cmVfIHBsYWZvbmRfZW50cmVlXylcbiAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBwbGFmb25kX2VudHJlZV8gZWxzZSBwbGFmb25kX3NpZ25hdHVyZV8pKSkpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMyOTk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzI5OTsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODMyXzEwXzNcIl1cbiAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODMyXzEwXzNcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9dHJ1ZX0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDgzMl8xMF8zXCJdXG4gICAgICAgICAgICBjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4MzJfMTBfM18pICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODMyXzEwXzNcIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2RhdGUpXG4gICAgICAgICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0XykpKSkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzIwOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTcyMDsgZW5kX2NvbHVtbj0xNDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUuZGF0ZV9jb3VyYW50ZVwiXVxuICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT03NjI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NzYyOyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzYyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTc2MjsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc186IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlLnJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNcIl1cbiAgICAgIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQxMDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNDEwOyBlbmRfY29sdW1uPTc1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzQxMDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNDEwOyBlbmRfY29sdW1uPTc1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9jb25kaXRpb25fMl9kdV84MzJfMjVfOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlLmNvbmRpdGlvbl8yX2R1XzgzMl8yNVwiXVxuICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM0MDk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzQwOTsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zNDA5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM0MDk7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfOiBkZWNpbWFsID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVcIl1cbiAgICAgIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2RlY2ltYWwpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNDEyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM0MTI7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IG5fbm9tYnJlX3BhcnRzX2Q4MzJfMTFfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzQxMjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNDEyOyBlbmRfY29sdW1uPTcwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXCI7XG4gICAgICBcIkNhbGN1bMOJcXVpdmFsZW5jZUxveWVyTWluaW1hbGVcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY2FsY3VsX8OpcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZVwiO1xuICAgICAgXCJDYWxjdWzDiXF1aXZhbGVuY2VMb3llck1pbmltYWxlXCJdIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSlcbiAgICAoe0NhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X2RhdGVfY291cmFudGVfO1xuICAgICAgICBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICAgIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXztcbiAgICAgICAgQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4uY29uZGl0aW9uXzJfZHVfODMyXzI1X2luID1cbiAgICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV87XG4gICAgICAgIENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV99KSkpIGluXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X21vbnRhbnRfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlLm1vbnRhbnQgaW5cbiAgbGV0IGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzEwX2Zvcm11bGVfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMF9mb3JtdWxlXCJdIHtpb19pbnB1dD1Ob0lucHV0O1xuICAgIGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMxNjk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzE2OTsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX3N1Yl9yYXRfcmF0IChkZWNpbWFsX29mX3N0cmluZyBcIjAuOTVcIilcbiAgICAgICAgICAgICAgKG9fZGl2X21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX1xuICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8xMV9cbiAgICAgICAgICAgICAgICAgICAgbl9ub21icmVfcGFydHNfZDgzMl8xMV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzI2OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTcyNjsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFiYXR0ZW1lbnRfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMFwiXSB7aW9faW5wdXQ9Tm9JbnB1dDtcbiAgICBpb19vdXRwdXQ9ZmFsc2V9ICh1bmVtYmVkZGFibGUpXG4gICAgKGZ1biAoYWxsb2NhdGlvbl9tZW5zdWVsbGVfOiBtb25leSkgLT4gXG4gICAgICAgdHJ5XG4gICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNDc2OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgIGVuZF9saW5lPTM0NzY7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgKGxldCBkZXBlbnNlX25ldHRlX21pbmltYWxlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwXCJdXG4gICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMFwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMFwiXVxuICAgICAgICAgICAgICAgICAgZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwXykgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMTBcIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgYWxsb2NhdGlvbl9tZW5zdWVsbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgIChvX2x0ZV9tb25fbW9uIGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfXG4gICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgcmVzc291cmNlc19tZW5hZ2VfYXZlY19kODMyXzE4X1xuICAgICAgICAgICAgICAgICAgICAgICAgY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8xN18zXykpIHRoZW5cbiAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgcmVzc291cmNlc19tZW5hZ2VfYXZlY19kODMyXzE4X1xuICAgICAgICAgICAgICAgICAgICAgICAgY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8xN18zXylcbiAgICAgICAgICAgICAgICAgICAgIGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfKSBlbHNlXG4gICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpKSlcbiAgICAgICB3aXRoXG4gICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03MzE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzMxOyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcGxhZm9uZF9tZW5zdWFsaXRlX2Q4MzJfMTBfM19jb3Byb3ByaWV0YWlyZXNfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwicGxhZm9uZF9tZW5zdWFsaXTDqV9kODMyXzEwXzNfY29wcm9wcmnDqXRhaXJlc1wiXSB7aW9faW5wdXQ9Tm9JbnB1dDtcbiAgICBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI1MzQ7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNTM0OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDI0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyBlbiB2aWd1ZXVyIMOgIHBhcnRpciBkdSBkdSAxZXIgb2N0b2JyZSAyMDIwIC0gQXJyw6p0w6kgZHUgMjUgc2VwdGVtYnJlIDIwMjAgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsJ2FpZGUgw6AgbCdhY2Nlc3Npb24gc29jaWFsZSBldCDDoCBsYSBzb3J0aWUgZGUgbCdpbnNhbHVicml0w6kgc3DDqWNpZmlxdWUgw6AgbCdvdXRyZS1tZXIgTk9SIDogTE9HTDIwMjA4MzVBXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgY29wcm9wcmlldGVfIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zX2Jhc2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC43NVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9tZW5zdWFsaXRlX2Q4MzJfMTBfM19iYXNlXykpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0MzQ7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQzNDsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMjRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyBlbiB2aWd1ZXVyIMOgIHBhcnRpciBkdSAxZXIgb2N0b2JyZSAyMDIxIC0gQXJyw6p0w6kgZHUgMjMgc2VwdGVtYnJlIDIwMjEgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsJ2FpZGUgw6AgbCdhY2Nlc3Npb24gc29jaWFsZSBldCDDoCBsYSBzb3J0aWUgZGUgbCdpbnNhbHVicml0w6kgc3DDqWNpZmlxdWUgw6AgbCdvdXRyZS1tZXIgTk9SIDogTE9HTDIxMjM0NTJBXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNvcHJvcHJpZXRlXyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zX2Jhc2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNzVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9tZW5zdWFsaXRlX2Q4MzJfMTBfM19iYXNlXykpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI0MjI7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI0MjI7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAyNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgY29wcm9wcmlldGVfIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBwbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zX2Jhc2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjc1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX21lbnN1YWxpdGVfZDgzMl8xMF8zX2Jhc2VfKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03MjE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzIxOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbWVuc3VhbGl0ZV9taW5pbWFsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJtZW5zdWFsaXTDqV9taW5pbWFsZVwiXSB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PXRydWV9XG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMzNDk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzM2MTsgZW5kX2NvbHVtbj03NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUuVHJhdmF1eFBvdXJBY3F1aXNpdGlvbkQ4MzJfMTVfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS5UcmF2YXV4U3VyTG9nZW1lbnREZWphQWNxdWlzRDgzMl8xNV8yIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS5QYXNEZVRyYXZhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUuVHJhdmF1eFBvdXJBY3F1aXNpdGlvbkQ4MzJfMTVfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUuVHJhdmF1eFN1ckxvZ2VtZW50RGVqYUFjcXVpc0Q4MzJfMTVfMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUuUGFzRGVUcmF2YXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18gOiBkZWNpbWFsID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9tb24gcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXylcbiAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbW9udGFudF9saW1pdGVfdHJhbmNoZXNfZDgzMl8xNV8xXyA6IGRlY2ltYWwgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X21vbiBtb250YW50X2xpbWl0ZV90cmFuY2hlc19kODMyXzE1XzFfKVxuICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9tb25leV9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19kaXZfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfbGltaXRlX3RyYW5jaGVzX2Q4MzJfMTVfMV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzExXykpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2xpbWl0ZV90cmFuY2hlc19kODMyXzE1XzFfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbl9ub21icmVfcGFydHNfZDgzMl8xMV8pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfdHJhbmNoZV9zdXBlcmlldXJlX2Q4MzJfMTVfMV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9saW1pdGVfdHJhbmNoZXNfZDgzMl8xNV8xX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMTFfKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X3RyYW5jaGVfaW5mZXJpZXVyZV9kODMyXzE1XzFfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2xpbWl0ZV90cmFuY2hlc19kODMyXzE1XzFfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbl9ub21icmVfcGFydHNfZDgzMl8xMV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF1eF90cmFuY2hlX2luZmVyaWV1cmVfZDgzMl8xNV8xXykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEyLlwiKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM0MDQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzQwNDsgZW5kX2NvbHVtbj03NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LlRyYXZhdXhQb3VyQWNxdWlzaXRpb25EODMyXzE1XzEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LlRyYXZhdXhTdXJMb2dlbWVudERlamFBY3F1aXNEODMyXzE1XzIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUuUGFzRGVUcmF2YXV4IF8gLT4gZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfbW9udGFudF8pKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTcxODsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT03MTg7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMF9jb2VmZl9hcnJvbmRpXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTBfY29lZmZfYXJyb25kaVwiXSB7aW9faW5wdXQ9Tm9JbnB1dDtcbiAgICBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTg1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMxODU7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19kaXZfcmF0X3JhdFxuICAgICAgICAgICAgICAob19yb3VuZF9yYXRcbiAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgIGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzEwX2Zvcm11bGVfXG4gICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDA1XCIpKVxuICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAuXCIpKSkgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTAwLlwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzI3OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTcyNzsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudF86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIl0ge2lvX2lucHV0PU5vSW5wdXQ7XG4gICAgaW9fb3V0cHV0PWZhbHNlfSAodW5lbWJlZGRhYmxlKVxuICAgIChmdW4gKGFpZGVfZmluYWxlXzogbW9uZXkpIC0+IFxuICAgICAgIHRyeVxuICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzExOTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTE5OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTEwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PXRydWV9XG4gICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZV8pXG4gICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgIFwiaW5wdXQwXCJdIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX1cbiAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgYWlkZV9maW5hbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gYWlkZV9maW5hbGVfICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwXCJdXG4gICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZV9kODMyXzEwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMFwiXVxuICAgICAgICAgICAgICAgICAgICAgYWJhdHRlbWVudF9kZXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMTBfKVxuICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVfZDgzMl8xMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0MFwiXSB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIGFpZGVfZmluYWxlXykpKSkpKSkpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgKCBpZiAob19ndGVfbW9uX21vbiBhaWRlX2ZpbmFsZV8gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpXG4gICAgICAgICAgICAgICAgICB0aGVuIGFpZGVfZmluYWxlXyBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSkpKSlcbiAgICAgICB3aXRoXG4gICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03NTU7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzU1OyBlbmRfY29sdW1uPTIwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbWVuc3VhbGl0ZV9lbGlnaWJsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJtZW5zdWFsaXTDqV/DqWxpZ2libGVcIl0ge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzA4MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMDgwOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTEwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAob19ndF9tb25fbW9uIG1lbnN1YWxpdGVfcHJpbmNpcGFsZV9cbiAgICAgICAgICAgICAgICAgcGxhZm9uZF9tZW5zdWFsaXRlX2Q4MzJfMTBfM19jb3Byb3ByaWV0YWlyZXNfKSB0aGVuXG4gICAgICAgICAgICAgIHBsYWZvbmRfbWVuc3VhbGl0ZV9kODMyXzEwXzNfY29wcm9wcmlldGFpcmVzXyBlbHNlXG4gICAgICAgICAgICAgIG1lbnN1YWxpdGVfcHJpbmNpcGFsZV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTcxNzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT03MTc7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMF9zZXVpbF86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzEwX3NldWlsXCJdIHtpb19pbnB1dD1Ob0lucHV0O1xuICAgIGlvX291dHB1dD10cnVlfSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE4ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMTg4OyBlbmRfY29sdW1uPTQ5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODMyLTExXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAob19ndGVfcmF0X3JhdFxuICAgICAgICAgICAgICAgICBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMF9jb2VmZl9hcnJvbmRpX1xuICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjk1XCIpKSB0aGVuIChkZWNpbWFsX29mX3N0cmluZyBcIjAuOTVcIilcbiAgICAgICAgICAgICAgZWxzZSBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMF9jb2VmZl9hcnJvbmRpXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzI4OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTcyODsgZW5kX2NvbHVtbj0xNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCJdXG4gICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKHVuZW1iZWRkYWJsZSlcbiAgICAoZnVuIChhaWRlX2ZpbmFsZV86IG1vbmV5KSAtPiBcbiAgICAgICB0cnlcbiAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMxMzM7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzEzMzsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIl1cbiAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9dHJ1ZX0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfYWJhdHRlbWVudFwiXVxuICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9hYmF0dGVtZW50XylcbiAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW1lbnRcIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgYWlkZV9maW5hbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIChsZXQgY3Jkc18gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJvdXRwdXRcIl0ge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfVxuICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCJdIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X21vbnRhbnRfKVxuICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiOyBcImlucHV0MFwiXSB7aW9faW5wdXQ9T25seUlucHV0O1xuICAgICAgICAgICAgICAgICAgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfbW9uZXkpIGFpZGVfZmluYWxlXykpKSkpKSlcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlX21vaW5zX2NyZHNfYXJyb25kaWVfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgICAgKG9fcm91bmRfbW9uXG4gICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiAob19zdWJfbW9uX21vbiBhaWRlX2ZpbmFsZV8gY3Jkc18pXG4gICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTBcIikpKVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgIChvX2d0ZV9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBhaWRlX2ZpbmFsZV9tb2luc19jcmRzX2Fycm9uZGllXyBjcmRzXylcbiAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBhaWRlX2ZpbmFsZV9tb2luc19jcmRzX2Fycm9uZGllXyBjcmRzXykgZWxzZVxuICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKSkpKSlcbiAgICAgICB3aXRoXG4gICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT03NTY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NzU2OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCJdIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9dHJ1ZX0gKGVtYmVkX21vbmV5KVxuICAgIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMwNjA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzA2MDsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgzMi0xMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID1cbiAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIG1lbnN1YWxpdGVfZWxpZ2libGVfXG4gICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgzMl8xMF8pXG4gICAgICAgICAgICAgICAgICAgICBtZW5zdWFsaXRlX21pbmltYWxlXylcbiAgICAgICAgICAgICAgICAgIGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzEwX3NldWlsXylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIGlmIChvX2x0X21vbl9tb24gYWlkZV9maW5hbGVfIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSBlbHNlIGFpZGVfZmluYWxlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03NTE7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NzUxOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxcIl0ge2lvX2lucHV0PU5vSW5wdXQ7XG4gICAgaW9fb3V0cHV0PXRydWV9ICh1bmVtYmVkZGFibGUpXG4gICAgKGZ1biAoYWlkZV9maW5hbGVfOiBtb25leSkgLT4gXG4gICAgICAgdHJ5XG4gICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTUzOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgIGVuZF9saW5lPTMxNTM7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MzItMTBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl1cbiAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiO1xuICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PXRydWV9XG4gICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXVxuICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlfKVxuICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCI7XG4gICAgICAgICAgICAgICAgICAgIFwiaW5wdXQwXCJdIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX1cbiAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgYWlkZV9maW5hbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICggaWYgKG9fbHRfbW9uX21vbiBhaWRlX2ZpbmFsZV8gbW9udGFudF9taW5pbWFsX2FpZGVfZDgzMl8xMF8pXG4gICAgICAgICAgICAgICAgICB0aGVuIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2UgYWlkZV9maW5hbGVfKSkpKVxuICAgICAgIHdpdGhcbiAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTc1Nzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03NTc7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLm1lbnN1YWxpdGVfZWxpZ2libGUgPVxuICAgICBtZW5zdWFsaXRlX2VsaWdpYmxlXztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS5tZW5zdWFsaXRlX21pbmltYWxlID1cbiAgICAgICBtZW5zdWFsaXRlX21pbmltYWxlXztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8xMCA9XG4gICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTBfc2V1aWxfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLmFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgIGFpZGVfZmluYWxlX2Zvcm11bGVfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsX31cblxubGV0IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgKGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW46IEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4udCkgOiBFbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlcy50ID1cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbi5FbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlc0luLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IHJlc2lkZW5jZV86IENvbGxlY3Rpdml0ZS50ID0gZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbi5FbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlc0luLnJlc2lkZW5jZV9pbiBpblxuICBsZXQgYWdlX2w1MTJfM18yXzogdW5pdCAtPiBkdXJhdGlvbiA9IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4uRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5hZ2VfbDUxMl8zXzJfaW4gaW5cbiAgbGV0IGFnZV9sNTEyXzNfMl86IGR1cmF0aW9uID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiOyBcIsOiZ2VfbDUxMl8zXzJcIl1cbiAgICB7aW9faW5wdXQ9UmVlbnRyYW50OyBpb19vdXRwdXQ9dHJ1ZX0gKGVtYmVkX2R1cmF0aW9uKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT4gYWdlX2w1MTJfM18yXyAoKSl8XSkgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvc8OpY3VyaXTDqV9zb2NpYWxlX1IuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIxOyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI1MTItMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IENoYW1wIGQnYXBwbGljYXRpb24uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAxIDogQ2hhbXAgZCdhcHBsaWNhdGlvbiAtIEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlIC0gRMOpY3JldHMgZW4gQ29uc2VpbCBkJ0V0YXRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSB0cnVlKSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZHVyYXRpb25fb2ZfbnVtYmVycyAoMjApICgwKSAoMCkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTI2OyBzdGFydF9jb2x1bW49MjE7IGVuZF9saW5lPTI2OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSkpKSkgaW5cbiAgbGV0IHNtaWNfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjsgXCJzbWljLmRhdGVfY291cmFudGVcIl1cbiAgICAgIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNzsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM3OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSkpIGluXG4gIGxldCBzbWljX2RvdF9yZXNpZGVuY2VfOiBDb2xsZWN0aXZpdGUudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwic21pYy5yw6lzaWRlbmNlXCJdXG4gICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9jb2xsZWN0aXZpdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNjsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByZXNpZGVuY2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzY7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IFNtaWMudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwic21pY1wiOyBcIlNtaWNcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjsgXCJzbWljXCI7IFwiU21pY1wiXSBzbWljKVxuICAgICh7U21pY0luLmRhdGVfY291cmFudGVfaW4gPSBzbWljX2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICAgU21pY0luLnJlc2lkZW5jZV9pbiA9IHNtaWNfZG90X3Jlc2lkZW5jZV99KSkpIGluXG4gIGxldCBzbWljX2RvdF9icnV0X2hvcmFpcmVfOiBtb25leSA9IHJlc3VsdF8uU21pYy5icnV0X2hvcmFpcmUgaW5cbiAgbGV0IHJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xXzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjsgXCJyw6lnaW1lX291dHJlX21lcl9sNzUxXzFcIl1cbiAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PXRydWV9IChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9zw6ljdXJpdMOpX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyMzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTI4OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw3NTEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogR8OpbsOpcmFsaXTDqXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDUgOiBEaXNwb3NpdGlvbnMgcGFydGljdWxpw6hyZXMgw6AgbGEgR3VhZGVsb3VwZSwgw6AgbGEgR3V5YW5lLCDDoCBsYSBNYXJ0aW5pcXVlLCDDoCBMYSBSw6l1bmlvbiwgw6AgU2FpbnQtQmFydGjDqWxlbXkgZXQgw6AgU2FpbnQtTWFydGluXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA3IDogUsOpZ2ltZXMgZGl2ZXJzIC0gRGlzcG9zaXRpb25zIGRpdmVyc2VzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fb3IgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAob19vciAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuR3V5YW5lICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlXyAoQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSByZXNpZGVuY2VfIChDb2xsZWN0aXZpdGUuTGFSZXVuaW9uICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteSAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiAoKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0zMTsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0zMTsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlByb2xvZ3VlIDogcHJlc3RhdGlvbnMgZmFtaWxpYWxlc1wiXX0pKSkpIGluXG4gIGxldCBwbGFmb25kX2w1MTJfM18yXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwicGxhZm9uZF9sNTEyXzNfMlwiXVxuICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvc8OpY3VyaXTDqV9zb2NpYWxlX1IuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02Mjsgc3RhcnRfY29sdW1uPTE4O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTYyOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI3NTUtMC0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgNSA6IETDqXBhcnRlbWVudHMgZCdvdXRyZS1tZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDcgOiBSw6lnaW1lcyBkaXZlcnMgLSBEaXNwb3NpdGlvbnMgZGl2ZXJzZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIGVuIENvbnNlaWwgZCdFdGF0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgcmVnaW1lX291dHJlX21lcl9sNzUxXzFfKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgc21pY19kb3RfYnJ1dF9ob3JhaXJlX1xuICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNTVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTY5LlwiKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvc8OpY3VyaXTDqV9zb2NpYWxlX1IuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzE7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI1MTItMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDEgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uIC0gR8OpbsOpcmFsaXTDqXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIGVuIENvbnNlaWwgZCdFdGF0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBzbWljX2RvdF9icnV0X2hvcmFpcmVfXG4gICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNTVcIikpIChkZWNpbWFsX29mX3N0cmluZyBcIjE2OS5cIikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MjQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MjQ7IGVuZF9jb2x1bW49Mjc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19KSkpKSBpblxuICBsZXQgY29uZGl0aW9uc19ob3JzX2FnZV86IEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy50IC0+IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7IFwiY29uZGl0aW9uc19ob3JzX8OiZ2VcIl1cbiAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PXRydWV9ICh1bmVtYmVkZGFibGUpXG4gICAgKGZ1biAoZW5mYW50XzogRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQpIC0+IFxuICAgICAgIHRyeVxuICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvc8OpY3VyaXTDqV9zb2NpYWxlX0wuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03NDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Nzg7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDUxMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMSA6IENoYW1wIGQnYXBwbGljYXRpb24gLSBHw6luw6lyYWxpdMOpc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgNSA6IFByZXN0YXRpb25zIGZhbWlsaWFsZXMgZXQgcHJlc3RhdGlvbnMgYXNzaW1pbMOpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5vYmxpZ2F0aW9uX3Njb2xhaXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXZhbnQgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXByZXMgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5vYmxpZ2F0aW9uX3Njb2xhaXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXZhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMub2JsaWdhdGlvbl9zY29sYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkF2YW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuUGVuZGFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkFwcmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5yZW11bmVyYXRpb25fbWVuc3VlbGxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX2w1MTJfM18yXykpKSkgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9Mjk7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19IHRydWUpKVxuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgICAgIHdpdGhcbiAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50Ly4uL3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9Mjk7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJQcm9sb2d1ZSA6IHByZXN0YXRpb25zIGZhbWlsaWFsZXNcIl19KSkpKSBpblxuICBsZXQgZHJvaXRfb3V2ZXJ0XzogRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQgLT4gYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjsgXCJkcm9pdF9vdXZlcnRcIl0ge2lvX2lucHV0PU5vSW5wdXQ7XG4gICAgaW9fb3V0cHV0PXRydWV9ICh1bmVtYmVkZGFibGUpXG4gICAgKGZ1biAoZW5mYW50XzogRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQpIC0+IFxuICAgICAgIHRyeVxuICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTsgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9zw6ljdXJpdMOpX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTEyLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSAxIDogQ2hhbXAgZCdhcHBsaWNhdGlvbiAtIEfDqW7DqXJhbGl0w6lzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLm9ibGlnYXRpb25fc2NvbGFpcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLlBlbmRhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5yZW11bmVyYXRpb25fbWVuc3VlbGxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX2w1MTJfM18yXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsZXQgcmVzdWx0XyA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJpZmljYXRpb25BZ2VTdXBlcmlldXJBLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiVsOpcmlmaWNhdGlvbsOCZ2VTdXDDqXJpZXVyw4BcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXJlY3RcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2EpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJWw6lyaWZpY2F0aW9uw4JnZVN1cMOpcmlldXLDgFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRpcmVjdFwiOyBcImlucHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9T25seUlucHV0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW9fb3V0cHV0PWZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX3ZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfaW4pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1ZlcmlmaWNhdGlvbkFnZVN1cGVyaWV1ckFJbi5kYXRlX25haXNzYW5jZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLmRhdGVfZGVfbmFpc3NhbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9zw6ljdXJpdMOpX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02NjsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBcnRpY2xlIEw1MTItM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDEgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uIC0gR8OpbsOpcmFsaXTDqXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyaWZpY2F0aW9uQWdlU3VwZXJpZXVyQUluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9zw6ljdXJpdMOpX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0zNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02NzsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQXJ0aWNsZSBMNTEyLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMSA6IENoYW1wIGQnYXBwbGljYXRpb24gLSBHw6luw6lyYWxpdMOpc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJpZmljYXRpb25BZ2VTdXBlcmlldXJBSW4uYW5uZWVzX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSBhZ2VfbDUxMl8zXzJfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9zw6ljdXJpdMOpX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02ODsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQXJ0aWNsZSBMNTEyLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMSA6IENoYW1wIGQnYXBwbGljYXRpb24gLSBHw6luw6lyYWxpdMOpc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfSkpKX0pKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgcmVzdWx0XyA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcmlmaWNhdGlvbkFnZVN1cGVyaWV1ckEudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7VmVyaWZpY2F0aW9uQWdlU3VwZXJpZXVyQS5lc3Rfc3VwZXJpZXVyID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLlZlcmlmaWNhdGlvbkFnZVN1cGVyaWV1ckEuZXN0X3N1cGVyaWV1cil9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJWw6lyaWZpY2F0aW9uw4JnZVN1cMOpcmlldXLDgFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZGlyZWN0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiVsOpcmlmaWNhdGlvbsOCZ2VTdXDDqXJpZXVyw4BcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRpcmVjdFwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9Tm9JbnB1dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW9fb3V0cHV0PXRydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF92ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3PDqWN1cml0w6lfc29jaWFsZV9MLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBcnRpY2xlIEw1MTItM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgMSA6IENoYW1wIGQnYXBwbGljYXRpb24gLSBHw6luw6lyYWxpdMOpc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIDUgOiBQcmVzdGF0aW9ucyBmYW1pbGlhbGVzIGV0IHByZXN0YXRpb25zIGFzc2ltaWzDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSB0aGVuIHJlc3VsdF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSByZXN1bHRfKSkpKSkpKS5WZXJpZmljYXRpb25BZ2VTdXBlcmlldXJBLmVzdF9zdXBlcmlldXIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvLi4vcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy9zw6ljdXJpdMOpX3NvY2lhbGVfTC5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01Mjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTUzOyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMNTEyLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIDEgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uIC0gR8OpbsOpcmFsaXTDqXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSA1IDogUHJlc3RhdGlvbnMgZmFtaWxpYWxlcyBldCBwcmVzdGF0aW9ucyBhc3NpbWlsw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5vYmxpZ2F0aW9uX3Njb2xhaXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BcHJlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMub2JsaWdhdGlvbl9zY29sYWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXZhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLlBlbmRhbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXByZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpKXxdKVxuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI3OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTI3OyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSB0cnVlKSlcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICAgICB3aXRoXG4gICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC8uLi9wcmVzdGF0aW9uc19mYW1pbGlhbGVzL3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTI3OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTI3OyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiUHJvbG9ndWUgOiBwcmVzdGF0aW9ucyBmYW1pbGlhbGVzXCJdfSkpKSkgaW5cbiAge0VsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzLmFnZV9sNTEyXzNfMiA9IGFnZV9sNTEyXzNfMl87XG4gICAgIEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzLmRyb2l0X291dmVydCA9IGRyb2l0X291dmVydF87XG4gICAgIEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzLmNvbmRpdGlvbnNfaG9yc19hZ2UgPVxuICAgICAgIGNvbmRpdGlvbnNfaG9yc19hZ2VfO1xuICAgICBFbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlcy5yZWdpbWVfb3V0cmVfbWVyX2w3NTFfMSA9XG4gICAgICAgcmVnaW1lX291dHJlX21lcl9sNzUxXzFffVxuXG5sZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW46IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4udCkgOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi50ID1cbiAgbGV0IGxveWVyX3ByaW5jaXBhbF9iYXNlXzogbW9uZXkgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5sb3llcl9wcmluY2lwYWxfYmFzZV9pbiBpblxuICBsZXQgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXzogbW9uZXkgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gaW5cbiAgbGV0IGJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc186IGJvb2wgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5iZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfaW4gaW5cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV86IGludGVnZXIgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luIGluXG4gIGxldCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiBpblxuICBsZXQgem9uZV86IFpvbmVESGFiaXRhdGlvbi50ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uem9uZV9pbiBpblxuICBsZXQgbG9nZW1lbnRfZXN0X2NoYW1icmVfOiBib29sID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ubG9nZW1lbnRfZXN0X2NoYW1icmVfaW4gaW5cbiAgbGV0IGFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzXzogYm9vbCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzX2luIGluXG4gIGxldCB0eXBlX2FpZGVfOiBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi50eXBlX2FpZGVfaW4gaW5cbiAgbGV0IGNvbG9jYXRpb25fOiBib29sID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uY29sb2NhdGlvbl9pbiBpblxuICBsZXQgcmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfOiBtb25leSA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX2luIGluXG4gIGxldCBsb2dlbWVudF9tZXVibGVfZDg0Ml8yXzogYm9vbCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmxvZ2VtZW50X21ldWJsZV9kODQyXzJfaW4gaW5cbiAgbGV0IHJlc2lkZW5jZV86IENvbGxlY3Rpdml0ZS50ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ucmVzaWRlbmNlX2luIGluXG4gIGxldCBmcmFjdGlvbl9sODMyXzNfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7IFwiZnJhY3Rpb25fbDgzMl8zXCJdXG4gICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE4NjM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTg2MzsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy0xNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAyIDogQ2FsY3VsIGRlIGwnYWlkZSBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC45OFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NDg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTQ4OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IF86IHVuaXQgPSBpZiAoXG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTkxOyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTkxOyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpIHRoZW5cbiAgICAgICAgICAgICAgICAgICgpIGVsc2VcbiAgICAgICAgICAgICAgICAgIHJhaXNlIChBc3NlcnRpb25GYWlsZWQge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU5MTsgc3RhcnRfY29sdW1uPTEzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU5MTsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkgaW5cbiAgbGV0IG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgyM18xNl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDgyM18xNlwiXSB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PWZhbHNlfVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTI4ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yODg7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDExXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMCkgKDEpKSkpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTAwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU1MTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01NTE7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgXzogdW5pdCA9IGlmIChcbiAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTkyOyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTkyOyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpIHRoZW5cbiAgICAgICAgICAgICAgICAgICgpIGVsc2VcbiAgICAgICAgICAgICAgICAgIHJhaXNlIChBc3NlcnRpb25GYWlsZWQge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU5Mjsgc3RhcnRfY29sdW1uPTEzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU5MjsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkgaW5cbiAgbGV0IG11bHRpcGxpY2F0ZXVyX21ham9yYXRpb25fY2hhcmdlc19kODIzXzE2XzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgXCJtdWx0aXBsaWNhdGV1cl9tYWpvcmF0aW9uX2NoYXJnZXNfZDgyM18xNlwiXSB7aW9faW5wdXQ9Tm9JbnB1dDtcbiAgICBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjI0ODsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIyNDg7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgZHUgMWVyIG9jdG9icmUgMjAyMCAtIEFycsOqdMOpIGR1IDI1IHNlcHRlbWJyZSAyMDIwIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbCdhaWRlIMOgIGwnYWNjZXNzaW9uIHNvY2lhbGUgZXQgw6AgbGEgc29ydGllIGRlIGwnaW5zYWx1YnJpdMOpIHNww6ljaWZpcXVlIMOgIGwnb3V0cmUtbWVyIE5PUiA6IExPR0wyMDIwODM1QVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExNDY7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE0NjsgZW5kX2NvbHVtbj01NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IDFlciBvY3RvYnJlIDIwMjEgLSBBcnLDqnTDqSBkdSAyMyBzZXB0ZW1icmUgMjAyMSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGwnYWlkZSDDoCBsJ2FjY2Vzc2lvbiBzb2NpYWxlIGV0IMOgIGxhIHNvcnRpZSBkZSBsJ2luc2FsdWJyaXTDqSBzcMOpY2lmaXF1ZSDDoCBsJ291dHJlLW1lciBOT1IgOiBMT0dMMjEyMzQ1MkFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX3RvcmF0X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIzODsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjM4OyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBvX3RvcmF0X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTU2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU1NjsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X21pbmltYWxfYWlkZV9kODIzXzE2XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgIFwibW9udGFudF9taW5pbWFsX2FpZGVfZDgyM18xNlwiXSB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PWZhbHNlfVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMwMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zMDE7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDEyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMCkgKDEpKSkpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG1hdGNoIHR5cGVfYWlkZV9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5BaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50IF8gLT5cbiAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKVxuICAgICAgICAgICAgfCBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZSBfIC0+XG4gICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEwMDBcIilcbiAgICAgICAgICAgIHwgVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlIF8gLT5cbiAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTAwMFwiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTUyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU1MjsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBfOiB1bml0ID0gaWYgKFxuICAgICAgICAgICAgICAgICAgdHJ5IChvX25vdCAob19hbmQgbG9nZW1lbnRfZXN0X2NoYW1icmVfIGNvbG9jYXRpb25fKSkgd2l0aFxuICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTk5OyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTk5OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpIHRoZW5cbiAgICAgICAgICAgICAgICAgICgpIGVsc2VcbiAgICAgICAgICAgICAgICAgIHJhaXNlIChBc3NlcnRpb25GYWlsZWQge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU5OTsgc3RhcnRfY29sdW1uPTEzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU5OTsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkgaW5cbiAgbGV0IGxveWVyX3ByaW5jaXBhbF9hdmVjX3JlZHVjdGlvbl9tZXVibGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgXCJsb3llcl9wcmluY2lwYWxfYXZlY19yw6lkdWN0aW9uX21ldWJsw6lcIl0ge2lvX2lucHV0PU5vSW5wdXQ7XG4gICAgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQxOTU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDE5NTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2VjdGV1ciBsb2NhdGlmIG9yZGluYWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZiBsb2dlbWVudF9tZXVibGVfZDg0Ml8yXyB0aGVuXG4gICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBsb3llcl9wcmluY2lwYWxfYmFzZV9cbiAgICAgICAgICAgICAgICAgKG9fZGl2X3JhdF9yYXQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMi5cIilcbiAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMy5cIikpKSBlbHNlIGxveWVyX3ByaW5jaXBhbF9iYXNlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTI1OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTUyNTsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgXCJjb250cmlidXRpb25zX3NvY2lhbGVzLmRhdGVfY291cmFudGVcIl0ge2lvX2lucHV0PU9ubHlJbnB1dDtcbiAgICAgIGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTg3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTU4NzsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01ODc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NTg3OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9saWV1XzogQ29sbGVjdGl2aXRlLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgIFwiY29udHJpYnV0aW9uc19zb2NpYWxlcy5saWV1XCJdIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX1cbiAgICAgIChlbWJlZF9jb2xsZWN0aXZpdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTg4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTU4ODsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByZXNpZGVuY2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU4ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT01ODg7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiOyBcImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNcIjtcbiAgICAgIFwiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjsgXCJjb250cmlidXRpb25zX3NvY2lhbGVzXCI7XG4gICAgICBcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXVxuICAgIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQpXG4gICAgKHtDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV87XG4gICAgICAgIENvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmxpZXVfaW4gPVxuICAgICAgICAgIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X2xpZXVffSkpKSBpblxuICBsZXQgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfbW9udGFudF86IG1vbmV5IC0+IG1vbmV5ID0gcmVzdWx0Xy5Db250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQubW9udGFudCBpblxuICBsZXQgdGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGVfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7IFwidGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGVcIl1cbiAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PXRydWV9IChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NTIyOyBzdGFydF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDUyOTsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJWCA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gb3V0cmUtbWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjMpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdXlhbmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTGFSZXVuaW9uIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWF5b3R0ZSBfIC0+IHRydWUpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDI4MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyOTlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDIzOFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyMTdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMTk0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDE4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDE2OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAxNjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjdcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMTY3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMTY3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwMDZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjdcIikpKSkpKSkpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX0gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNzEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM3MTc7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFydGljbGUgNDZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyBlbiB2aWd1ZXVyIMOgIHBhcnRpciBkdSAxZXIgamFudmllciAyMDIwIC0gQXJyw6p0w6kgZHUgMyBqYW52aWVyIDIwMjAgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBwb3VyIGwnYW5uw6llIDIwMjAgTk9SIDogTE9HTDE5MzQwMDZBXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZpdGUuTGFSZXVuaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGVjdGl2aXRlLk1heW90dGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjgxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyOTlcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyMzhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjJcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjE3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDE5NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAxOFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAxNjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAxNjJcIikpKSkpKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTQ5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzE1NjsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBcnRpY2xlIDQ2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyBlbiB2aWd1ZXVyIMOgIHBhcnRpciBkdSBkdSAxZXIgb2N0b2JyZSAyMDIwIC0gQXJyw6p0w6kgZHUgMjUgc2VwdGVtYnJlIDIwMjAgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsJ2FpZGUgw6AgbCdhY2Nlc3Npb24gc29jaWFsZSBldCDDoCBsYSBzb3J0aWUgZGUgbCdpbnNhbHVicml0w6kgc3DDqWNpZmlxdWUgw6AgbCdvdXRyZS1tZXIgTk9SIDogTE9HTDIwMjA4MzVBXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3V5YW5lIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWV0cm9wb2xlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1heW90dGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyODFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjk5XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyMzhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjJcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjE3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDE5NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAxOFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAxNjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAxNjJcIikpKSkpKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjA1NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjA2MzsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQ2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IDFlciBvY3RvYnJlIDIwMjEgLSBBcnLDqnTDqSBkdSAyMyBzZXB0ZW1icmUgMjAyMSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGwnYWlkZSDDoCBsJ2FjY2Vzc2lvbiBzb2NpYWxlIGV0IMOgIGxhIHNvcnRpZSBkZSBsJ2luc2FsdWJyaXTDqSBzcMOpY2lmaXF1ZSDDoCBsJ291dHJlLW1lciBOT1IgOiBMT0dMMjEyMzQ1MkFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDEpICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTGFSZXVuaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1heW90dGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyODFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyOTlcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyMzhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDIxN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMTk0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAxOFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDE2OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMTYyXCIpKSkpKSkpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05MjE7IHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTkyODsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0NlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgMWVyIGphbnZpZXIgMjAyMiAtIEFycsOqdMOpIGR1IDIwIGTDqWNlbWJyZSAyMDIxIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgcG91ciBsJ2FubsOpZSAyMDIyIE5PUiA6IExPR0wyMTM0NDc3QVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5MYVJldW5pb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1heW90dGUgXyAtPiB0cnVlKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyODFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDI5OVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyMzhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyMTdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAxOTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAxOFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDE2OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAxNjJcIikpKSkpKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQwNDsgc3RhcnRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQxMTsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyBlbiB2aWd1ZXVyIMOgIHBhcnRpciBkdSAxZXIganVpbGxldCAyMDIyIC0gQXJyw6p0w6kgZHUgMjkganVpbGxldCAyMDIyIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgTk9SIDogVFJFTDIyMjA3NDhBIC0gQXJyw6p0w6kgZHUgMTYgYW/Du3QgMjAyMiByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGwnYWlkZSDDoCBsJ2FjY2Vzc2lvbiBzb2NpYWxlIGV0IMOgIGxhIHNvcnRpZSBkZSBsJ2luc2FsdWJyaXTDqSBzcMOpY2lmaXF1ZSDDoCBsJ291dHJlLW1lciAtIE5PUiA6IFRSRUwyMjIwNzQ0QVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIzKSAoMSkgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5MYVJldW5pb24gXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50TWFydGluIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXlvdHRlIF8gLT4gdHJ1ZSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjgxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDI5OVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjM4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDIxN1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAxOTRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMThcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMTY5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMTYyXCIpKSkpKSkpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjMxMTsgc3RhcnRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIzMTE7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IGR1IDFlciBvY3RvYnJlIDIwMjAgLSBBcnLDqnTDqSBkdSAyNSBzZXB0ZW1icmUgMjAyMCByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGwnYWlkZSDDoCBsJ2FjY2Vzc2lvbiBzb2NpYWxlIGV0IMOgIGxhIHNvcnRpZSBkZSBsJ2luc2FsdWJyaXTDqSBzcMOpY2lmaXF1ZSDDoCBsJ291dHJlLW1lciBOT1IgOiBMT0dMMjAyMDgzNUFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDI4M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMzE1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDI3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjM4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjAxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMTg1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMTc5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMTczXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMTczXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMDA2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjZcIikpKSkpKSkpKSkpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTIwODsgc3RhcnRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjA4OyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IDFlciBvY3RvYnJlIDIwMjEgLSBBcnLDqnTDqSBkdSAyMyBzZXB0ZW1icmUgMjAyMSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGwnYWlkZSDDoCBsJ2FjY2Vzc2lvbiBzb2NpYWxlIGV0IMOgIGxhIHNvcnRpZSBkZSBsJ2luc2FsdWJyaXTDqSBzcMOpY2lmaXF1ZSDDoCBsJ291dHJlLW1lciBOT1IgOiBMT0dMMjEyMzQ1MkFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjgzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDMxNVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMjM4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDIwMVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAxODVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMTc5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDE3M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDE3M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMDA2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2XCIpKSkpKSkpKSkpKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2Mzsgc3RhcnRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzYzOyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDI4M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDMxNVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDI3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAyMzhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDIwMVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMTg1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAxNzlcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjZcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDE3M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDE3M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwMDZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNlwiKSkpKSkpKSkpKSkpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU2Mzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01NjM7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbXVsdGlwbGljYXRldXJfbWFqb3JhdGlvbl9yMF86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgIFwibXVsdGlwbGljYXRldXJfbWFqb3JhdGlvbl9yMFwiXSB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PWZhbHNlfVxuICAgIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW119IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQ5MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNDk5OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBcnRpY2xlIDQ2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgMWVyIGphbnZpZXIgMjAyMCAtIEFycsOqdMOpIGR1IDMgamFudmllciAyMDIwIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgcG91ciBsJ2FubsOpZSAyMDIwIE5PUiA6IExPR0wxOTM0MDA2QVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZpdGUuR3V5YW5lIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5MYVJldW5pb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZpdGUuTWF5b3R0ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjZcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjkzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI5Mzg7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQXJ0aWNsZSA0NlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgZHUgMWVyIG9jdG9icmUgMjAyMCAtIEFycsOqdMOpIGR1IDI1IHNlcHRlbWJyZSAyMDIwIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbCdhaWRlIMOgIGwnYWNjZXNzaW9uIHNvY2lhbGUgZXQgw6AgbGEgc29ydGllIGRlIGwnaW5zYWx1YnJpdMOpIHNww6ljaWZpcXVlIMOgIGwnb3V0cmUtbWVyIE5PUiA6IExPR0wyMDIwODM1QVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5MYVJldW5pb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50TWFydGluIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXlvdHRlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjZcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIikpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTgzOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTg0NzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQ2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IDFlciBvY3RvYnJlIDIwMjEgLSBBcnLDqnTDqSBkdSAyMyBzZXB0ZW1icmUgMjAyMSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGwnYWlkZSDDoCBsJ2FjY2Vzc2lvbiBzb2NpYWxlIGV0IMOgIGxhIHNvcnRpZSBkZSBsJ2luc2FsdWJyaXTDqSBzcMOpY2lmaXF1ZSDDoCBsJ291dHJlLW1lciBOT1IgOiBMT0dMMjEyMzQ1MkFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDEpICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTGFSZXVuaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1heW90dGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2XCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIikpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcwMjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzEwOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQ2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyBlbiB2aWd1ZXVyIMOgIHBhcnRpciBkdSAxZXIgamFudmllciAyMDIyIC0gQXJyw6p0w6kgZHUgMjAgZMOpY2VtYnJlIDIwMjEgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBwb3VyIGwnYW5uw6llIDIwMjIgTk9SIDogTE9HTDIxMzQ0NzdBXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWV0cm9wb2xlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWF5b3R0ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNlwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIikpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4Nzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE5NTsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyBlbiB2aWd1ZXVyIMOgIHBhcnRpciBkdSAxZXIganVpbGxldCAyMDIyIC0gQXJyw6p0w6kgZHUgMjkganVpbGxldCAyMDIyIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgTk9SIDogVFJFTDIyMjA3NDhBIC0gQXJyw6p0w6kgZHUgMTYgYW/Du3QgMjAyMiByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGwnYWlkZSDDoCBsJ2FjY2Vzc2lvbiBzb2NpYWxlIGV0IMOgIGxhIHNvcnRpZSBkZSBsJ2luc2FsdWJyaXTDqSBzcMOpY2lmaXF1ZSDDoCBsJ291dHJlLW1lciAtIE5PUiA6IFRSRUwyMjIwNzQ0QVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIzKSAoMSkgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3V5YW5lIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWV0cm9wb2xlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1heW90dGUgXyAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI2XCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIikpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMzMjc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMzI3OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgMWVyIGphbnZpZXIgMjAyMCAtIEFycsOqdMOpIGR1IDMgamFudmllciAyMDIwIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgcG91ciBsJ2FubsOpZSAyMDIwIE5PUiA6IExPR0wxOTM0MDA2QVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNlwiKSkpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NTA7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NTA7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IDFlciBqYW52aWVyIDIwMjIgLSBBcnLDqnTDqSBkdSAyMCBkw6ljZW1icmUgMjAyMSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IHBvdXIgbCdhbm7DqWUgMjAyMiBOT1IgOiBMT0dMMjEzNDQ3N0FcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI2XCIpKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM1OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM1OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IDFlciBqdWlsbGV0IDIwMjIgLSBBcnLDqnTDqSBkdSAyOSBqdWlsbGV0IDIwMjIgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBOT1IgOiBUUkVMMjIyMDc0OEEgLSBBcnLDqnTDqSBkdSAxNiBhb8O7dCAyMDIyIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbCdhaWRlIMOgIGwnYWNjZXNzaW9uIHNvY2lhbGUgZXQgw6AgbGEgc29ydGllIGRlIGwnaW5zYWx1YnJpdMOpIHNww6ljaWZpcXVlIMOgIGwnb3V0cmUtbWVyIC0gTk9SIDogVFJFTDIyMjA3NDRBXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDEyKSAoMzEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI2XCIpKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4NTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDg1OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIzKSAoMSkgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI2XCIpKSkpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTU4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU1ODsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtdWx0aXBsaWNhdGV1cl9tYWpvcmF0aW9uX2xveWVyX3JlZmVyZW5jZV86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgIFwibXVsdGlwbGljYXRldXJfbWFqb3JhdGlvbl9sb3llcl9yw6lmw6lyZW5jZVwiXSB7aW9faW5wdXQ9Tm9JbnB1dDtcbiAgICBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW119IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQ2OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNDc3OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBcnRpY2xlIDQ2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgMWVyIGphbnZpZXIgMjAyMCAtIEFycsOqdMOpIGR1IDMgamFudmllciAyMDIwIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgcG91ciBsJ2FubsOpZSAyMDIwIE5PUiA6IExPR0wxOTM0MDA2QVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZpdGUuR3V5YW5lIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5MYVJldW5pb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZpdGUuTWF5b3R0ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjZcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpbWFsX29mX3N0cmluZyBcIjUuXCIpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjkwOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI5MTc7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQXJ0aWNsZSA0NlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgZHUgMWVyIG9jdG9icmUgMjAyMCAtIEFycsOqdMOpIGR1IDI1IHNlcHRlbWJyZSAyMDIwIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbCdhaWRlIMOgIGwnYWNjZXNzaW9uIHNvY2lhbGUgZXQgw6AgbGEgc29ydGllIGRlIGwnaW5zYWx1YnJpdMOpIHNww6ljaWZpcXVlIMOgIGwnb3V0cmUtbWVyIE5PUiA6IExPR0wyMDIwODM1QVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5MYVJldW5pb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50TWFydGluIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXlvdHRlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjZcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2ltYWxfb2Zfc3RyaW5nIFwiNS5cIikpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTgxODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTgyNjsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQ2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IDFlciBvY3RvYnJlIDIwMjEgLSBBcnLDqnTDqSBkdSAyMyBzZXB0ZW1icmUgMjAyMSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGwnYWlkZSDDoCBsJ2FjY2Vzc2lvbiBzb2NpYWxlIGV0IMOgIGxhIHNvcnRpZSBkZSBsJ2luc2FsdWJyaXTDqSBzcMOpY2lmaXF1ZSDDoCBsJ291dHJlLW1lciBOT1IgOiBMT0dMMjEyMzQ1MkFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDEpICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTGFSZXVuaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1heW90dGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2XCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2ltYWxfb2Zfc3RyaW5nIFwiNS5cIikpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY4MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Njg4OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQ2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyBlbiB2aWd1ZXVyIMOgIHBhcnRpciBkdSAxZXIgamFudmllciAyMDIyIC0gQXJyw6p0w6kgZHUgMjAgZMOpY2VtYnJlIDIwMjEgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBwb3VyIGwnYW5uw6llIDIwMjIgTk9SIDogTE9HTDIxMzQ0NzdBXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWV0cm9wb2xlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWF5b3R0ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNlwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2ltYWxfb2Zfc3RyaW5nIFwiNS5cIikpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE3NDsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyBlbiB2aWd1ZXVyIMOgIHBhcnRpciBkdSAxZXIganVpbGxldCAyMDIyIC0gQXJyw6p0w6kgZHUgMjkganVpbGxldCAyMDIyIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgTk9SIDogVFJFTDIyMjA3NDhBIC0gQXJyw6p0w6kgZHUgMTYgYW/Du3QgMjAyMiByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGwnYWlkZSDDoCBsJ2FjY2Vzc2lvbiBzb2NpYWxlIGV0IMOgIGxhIHNvcnRpZSBkZSBsJ2luc2FsdWJyaXTDqSBzcMOpY2lmaXF1ZSDDoCBsJ291dHJlLW1lciAtIE5PUiA6IFRSRUwyMjIwNzQ0QVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIzKSAoMSkgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3V5YW5lIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWV0cm9wb2xlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1heW90dGUgXyAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI2XCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRlY2ltYWxfb2Zfc3RyaW5nIFwiNS5cIikpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMzkyOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjM5MjsgZW5kX2NvbHVtbj01NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgZHUgMWVyIG9jdG9icmUgMjAyMCAtIEFycsOqdMOpIGR1IDI1IHNlcHRlbWJyZSAyMDIwIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbCdhaWRlIMOgIGwnYWNjZXNzaW9uIHNvY2lhbGUgZXQgw6AgbGEgc29ydGllIGRlIGwnaW5zYWx1YnJpdMOpIHNww6ljaWZpcXVlIMOgIGwnb3V0cmUtbWVyIE5PUiA6IExPR0wyMDIwODM1QVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjkyOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyOTI7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgMWVyIG9jdG9icmUgMjAyMSAtIEFycsOqdMOpIGR1IDIzIHNlcHRlbWJyZSAyMDIxIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbCdhaWRlIMOgIGwnYWNjZXNzaW9uIHNvY2lhbGUgZXQgw6AgbGEgc29ydGllIGRlIGwnaW5zYWx1YnJpdMOpIHNww6ljaWZpcXVlIMOgIGwnb3V0cmUtbWVyIE5PUiA6IExPR0wyMTIzNDUyQVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ1OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NDU7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NTc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTU3OyBlbmRfY29sdW1uPTUyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG11bHRpcGxpY2F0ZXVyX21ham9yYXRpb25fcGxhZm9uZF9sb3llcl9kODIzXzE2XzJfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcIm11bHRpcGxpY2F0ZXVyX21ham9yYXRpb25fcGxhZm9uZF9sb3llcl9kODIzXzE2XzJcIl0ge2lvX2lucHV0PU5vSW5wdXQ7XG4gICAgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMzODU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzM5MzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQXJ0aWNsZSA0NlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IDFlciBqYW52aWVyIDIwMjAgLSBBcnLDqnTDqSBkdSAzIGphbnZpZXIgMjAyMCByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IHBvdXIgbCdhbm7DqWUgMjAyMCBOT1IgOiBMT0dMMTkzNDAwNkFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZpdGUuTGFSZXVuaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGVjdGl2aXRlLk1heW90dGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2XCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaW1hbF9vZl9zdHJpbmcgXCI1LlwiKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI4MjU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yODMzOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFydGljbGUgNDZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IGR1IDFlciBvY3RvYnJlIDIwMjAgLSBBcnLDqnTDqSBkdSAyNSBzZXB0ZW1icmUgMjAyMCByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGwnYWlkZSDDoCBsJ2FjY2Vzc2lvbiBzb2NpYWxlIGV0IMOgIGxhIHNvcnRpZSBkZSBsJ2luc2FsdWJyaXTDqSBzcMOpY2lmaXF1ZSDDoCBsJ291dHJlLW1lciBOT1IgOiBMT0dMMjAyMDgzNUFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdXlhbmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTGFSZXVuaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWF5b3R0ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2XCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpbWFsX29mX3N0cmluZyBcIjUuXCIpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE3MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE3NDM7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0NlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyBlbiB2aWd1ZXVyIMOgIHBhcnRpciBkdSAxZXIgb2N0b2JyZSAyMDIxIC0gQXJyw6p0w6kgZHUgMjMgc2VwdGVtYnJlIDIwMjEgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsJ2FpZGUgw6AgbCdhY2Nlc3Npb24gc29jaWFsZSBldCDDoCBsYSBzb3J0aWUgZGUgbCdpbnNhbHVicml0w6kgc3DDqWNpZmlxdWUgw6AgbCdvdXRyZS1tZXIgTk9SIDogTE9HTDIxMjM0NTJBXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxKSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdXlhbmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50TWFydGluIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWV0cm9wb2xlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXlvdHRlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNlwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpbWFsX29mX3N0cmluZyBcIjUuXCIpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01OTY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTYwNDsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0NlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgMWVyIGphbnZpZXIgMjAyMiAtIEFycsOqdMOpIGR1IDIwIGTDqWNlbWJyZSAyMDIxIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgcG91ciBsJ2FubsOpZSAyMDIyIE5PUiA6IExPR0wyMTM0NDc3QVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdXlhbmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5MYVJldW5pb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1heW90dGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjZcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpbWFsX29mX3N0cmluZyBcIjUuXCIpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04Mjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTkwOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0NlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IDFlciBqdWlsbGV0IDIwMjIgLSBBcnLDqnTDqSBkdSAyOSBqdWlsbGV0IDIwMjIgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBOT1IgOiBUUkVMMjIyMDc0OEEgLSBBcnLDqnTDqSBkdSAxNiBhb8O7dCAyMDIyIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbCdhaWRlIMOgIGwnYWNjZXNzaW9uIHNvY2lhbGUgZXQgw6AgbGEgc29ydGllIGRlIGwnaW5zYWx1YnJpdMOpIHNww6ljaWZpcXVlIMOgIGwnb3V0cmUtbWVyIC0gTk9SIDogVFJFTDIyMjA3NDRBXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjMpICgxKSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdXlhbmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTGFSZXVuaW9uIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWF5b3R0ZSBfIC0+IHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjZcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGVjaW1hbF9vZl9zdHJpbmcgXCI1LlwiKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjQ1NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNDU3OyBlbmRfY29sdW1uPTYzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFydGljbGUgMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IGR1IDFlciBvY3RvYnJlIDIwMjAgLSBBcnLDqnTDqSBkdSAyNSBzZXB0ZW1icmUgMjAyMCByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGwnYWlkZSDDoCBsJ2FjY2Vzc2lvbiBzb2NpYWxlIGV0IMOgIGxhIHNvcnRpZSBkZSBsJ2luc2FsdWJyaXTDqSBzcMOpY2lmaXF1ZSDDoCBsJ291dHJlLW1lciBOT1IgOiBMT0dMMjAyMDgzNUFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvY2F0aW9uXykpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxXCIpKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjEzODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIxMzg7IGVuZF9jb2x1bW49NjM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IGR1IDFlciBvY3RvYnJlIDIwMjAgLSBBcnLDqnTDqSBkdSAyNSBzZXB0ZW1icmUgMjAyMCByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGwnYWlkZSDDoCBsJ2FjY2Vzc2lvbiBzb2NpYWxlIGV0IMOgIGxhIHNvcnRpZSBkZSBsJ2luc2FsdWJyaXTDqSBzcMOpY2lmaXF1ZSDDoCBsJ291dHJlLW1lciBOT1IgOiBMT0dMMjAyMDgzNUFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzU5OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTM1OTsgZW5kX2NvbHVtbj02MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgMWVyIG9jdG9icmUgMjAyMSAtIEFycsOqdMOpIGR1IDIzIHNlcHRlbWJyZSAyMDIxIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbCdhaWRlIMOgIGwnYWNjZXNzaW9uIHNvY2lhbGUgZXQgw6AgbGEgc29ydGllIGRlIGwnaW5zYWx1YnJpdMOpIHNww6ljaWZpcXVlIMOgIGwnb3V0cmUtbWVyIE5PUiA6IExPR0wyMTIzNDUyQVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb2NhdGlvbl8pKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAzNTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDM1OyBlbmRfY29sdW1uPTYzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgMWVyIG9jdG9icmUgMjAyMSAtIEFycsOqdMOpIGR1IDIzIHNlcHRlbWJyZSAyMDIxIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbCdhaWRlIMOgIGwnYWNjZXNzaW9uIHNvY2lhbGUgZXQgw6AgbGEgc29ydGllIGRlIGwnaW5zYWx1YnJpdMOpIHNww6ljaWZpcXVlIMOgIGwnb3V0cmUtbWVyIE5PUiA6IExPR0wyMTIzNDUyQVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI4OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjg7IGVuZF9jb2x1bW49NjM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU1NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01NTU7IGVuZF9jb2x1bW49NjA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgXzogdW5pdCA9IGlmIChcbiAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX3JhdF9yYXQgZnJhY3Rpb25fbDgzMl8zX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjlcIikpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9yYXRfcmF0IGZyYWN0aW9uX2w4MzJfM19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC45OFwiKSkpXG4gICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTg0MDsgc3RhcnRfY29sdW1uPTEzO1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg0MDsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODMyLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSlcbiAgICAgICAgICAgICAgICAgIHRoZW4gKCkgZWxzZVxuICAgICAgICAgICAgICAgICAgcmFpc2UgKEFzc2VydGlvbkZhaWxlZCB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04NDA7IHN0YXJ0X2NvbHVtbj0xMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NDA7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgzMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSBpblxuICBsZXQgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTZfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgXCJtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNlwiXSB7aW9faW5wdXQ9Tm9JbnB1dDtcbiAgICBpb19vdXRwdXQ9dHJ1ZX0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7IGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0NDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ0NTE7IGVuZF9jb2x1bW49MTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0NlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJWCA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gb3V0cmUtbWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjMpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTGFSZXVuaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1heW90dGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkgY29sb2NhdGlvbl8pKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTM4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3NjdcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiOTY5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsaWNhdGV1cl9tYWpvcmF0aW9uX2NoYXJnZXNfZDgyM18xNl8pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMzMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzQwOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgMWVyIGp1aWxsZXQgMjAyMiAtIEFycsOqdMOpIGR1IDI5IGp1aWxsZXQgMjAyMiByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IE5PUiA6IFRSRUwyMjIwNzQ4QSAtIEFycsOqdMOpIGR1IDE2IGFvw7t0IDIwMjIgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsJ2FpZGUgw6AgbCdhY2Nlc3Npb24gc29jaWFsZSBldCDDoCBsYSBzb3J0aWUgZGUgbCdpbnNhbHVicml0w6kgc3DDqWNpZmlxdWUgw6AgbCdvdXRyZS1tZXIgLSBOT1IgOiBUUkVMMjIyMDc0NEFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIzKSAoMSkgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3V5YW5lIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5MYVJldW5pb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWF5b3R0ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBtb250YW50XyA6IG1vbmV5ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTkzOFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzY3XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjk2OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxpbWl0ZV8gOiBtb25leSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE5MzhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzc2N1wiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI5NjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCI2LlwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfbW9uX21vbiBtb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0ZV8pIHRoZW4gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXRlXyBlbHNlIG1vbnRhbnRfKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE5ODY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xOTkzOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFydGljbGUgNDZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IDFlciBvY3RvYnJlIDIwMjEgLSBBcnLDqnTDqSBkdSAyMyBzZXB0ZW1icmUgMjAyMSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGwnYWlkZSDDoCBsJ2FjY2Vzc2lvbiBzb2NpYWxlIGV0IMOgIGxhIHNvcnRpZSBkZSBsJ2luc2FsdWJyaXTDqSBzcMOpY2lmaXF1ZSDDoCBsJ291dHJlLW1lciBOT1IgOiBMT0dMMjEyMzQ1MkFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoMSkgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5MYVJldW5pb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50TWFydGluIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXlvdHRlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IG1vbnRhbnRfIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbmV5ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxODcyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2NDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiOTM2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxpbWl0ZV8gOiBtb25leVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE4NzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzY0MFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI5MzZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjYuXCIpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXRlXykgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXRlXyBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50XykpKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODUwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04NTc7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0NlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyBlbiB2aWd1ZXVyIMOgIHBhcnRpciBkdSAxZXIgamFudmllciAyMDIyIC0gQXJyw6p0w6kgZHUgMjAgZMOpY2VtYnJlIDIwMjEgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBwb3VyIGwnYW5uw6llIDIwMjIgTk9SIDogTE9HTDIxMzQ0NzdBXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTGFSZXVuaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1heW90dGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbW9udGFudF8gOiBtb25leSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE4NzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzY0MFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI5MzZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsaW1pdGVfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxODcyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2NDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiOTM2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiNi5cIikpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X21vbl9tb24gbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdGVfKSB0aGVuIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0ZV8gZWxzZSBtb250YW50XykpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDc4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMDg1OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgZHUgMWVyIG9jdG9icmUgMjAyMCAtIEFycsOqdMOpIGR1IDI1IHNlcHRlbWJyZSAyMDIwIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbCdhaWRlIMOgIGwnYWNjZXNzaW9uIHNvY2lhbGUgZXQgw6AgbGEgc29ydGllIGRlIGwnaW5zYWx1YnJpdMOpIHNww6ljaWZpcXVlIMOgIGwnb3V0cmUtbWVyIE5PUiA6IExPR0wyMDIwODM1QVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTGFSZXVuaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1heW90dGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbW9udGFudF8gOiBtb25leSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE4NjRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzYyNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI5MzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsaW1pdGVfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxODY0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2MjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiOTMyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiNi5cIikpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X21vbl9tb24gbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdGVfKSB0aGVuIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0ZV8gZWxzZSBtb250YW50XykpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjQ1OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgMWVyIGphbnZpZXIgMjAyMCAtIEFycsOqdMOpIGR1IDMgamFudmllciAyMDIwIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgcG91ciBsJ2FubsOpZSAyMDIwIE5PUiA6IExPR0wxOTM0MDA2QVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3V5YW5lIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5MYVJldW5pb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWF5b3R0ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBtb250YW50XyA6IG1vbmV5ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTg1OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjE0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjkyOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxpbWl0ZV8gOiBtb25leSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE4NThcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzYxNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI5MjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCI2LlwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfbW9uX21vbiBtb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0ZV8pIHRoZW4gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXRlXyBlbHNlIG1vbnRhbnRfKSkpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU5MTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU5MTsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9jYXRpb25fKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI4MDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTYxMlwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTI3MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxpY2F0ZXVyX21ham9yYXRpb25fY2hhcmdlc19kODIzXzE2XykpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEzODc7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMzg3OyBlbmRfY29sdW1uPTQ5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyBlbiB2aWd1ZXVyIMOgIHBhcnRpciBkdSAxZXIgb2N0b2JyZSAyMDIxIC0gQXJyw6p0w6kgZHUgMjMgc2VwdGVtYnJlIDIwMjEgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsJ2FpZGUgw6AgbCdhY2Nlc3Npb24gc29jaWFsZSBldCDDoCBsYSBzb3J0aWUgZGUgbCdpbnNhbHVicml0w6kgc3DDqWNpZmlxdWUgw6AgbCdvdXRyZS1tZXIgTk9SIDogTE9HTDIxMjM0NTJBXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvY2F0aW9uXykpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjcxMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1NDIyXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMjI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGljYXRldXJfbWFqb3JhdGlvbl9jaGFyZ2VzX2Q4MjNfMTZfKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjQ4Njsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI0ODY7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IGR1IDFlciBvY3RvYnJlIDIwMjAgLSBBcnLDqnTDqSBkdSAyNSBzZXB0ZW1icmUgMjAyMCByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGwnYWlkZSDDoCBsJ2FjY2Vzc2lvbiBzb2NpYWxlIGV0IMOgIGxhIHNvcnRpZSBkZSBsJ2luc2FsdWJyaXTDqSBzcMOpY2lmaXF1ZSDDoCBsJ291dHJlLW1lciBOT1IgOiBMT0dMMjAyMDgzNUFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvY2F0aW9uXykpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjY5OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1Mzk5XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMjI0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGljYXRldXJfbWFqb3JhdGlvbl9jaGFyZ2VzX2Q4MjNfMTZfKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDM4MDsgc3RhcnRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQzODc7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQ2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVggOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIG91dHJlLW1lclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIzKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3V5YW5lIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWV0cm9wb2xlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1heW90dGUgXyAtPiB0cnVlKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3NjdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI5NjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGljYXRldXJfbWFqb3JhdGlvbl9jaGFyZ2VzX2Q4MjNfMTZfKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI1ODsgc3RhcnRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI2NTsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyBlbiB2aWd1ZXVyIMOgIHBhcnRpciBkdSAxZXIganVpbGxldCAyMDIyIC0gQXJyw6p0w6kgZHUgMjkganVpbGxldCAyMDIyIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgTk9SIDogVFJFTDIyMjA3NDhBIC0gQXJyw6p0w6kgZHUgMTYgYW/Du3QgMjAyMiByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGwnYWlkZSDDoCBsJ2FjY2Vzc2lvbiBzb2NpYWxlIGV0IMOgIGxhIHNvcnRpZSBkZSBsJ2luc2FsdWJyaXTDqSBzcMOpY2lmaXF1ZSDDoCBsJ291dHJlLW1lciAtIE5PUiA6IFRSRUwyMjIwNzQ0QVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIzKSAoMSkgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5MYVJldW5pb24gXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50TWFydGluIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXlvdHRlIF8gLT4gdHJ1ZSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IG1vbnRhbnRfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzY3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI5NjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxpbWl0ZV8gOiBtb25leSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3NjdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjk2OVwiKSAoZGVjaW1hbF9vZl9zdHJpbmcgXCI2LlwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZiAob19ndF9tb25fbW9uIG1vbnRhbnRfIGxpbWl0ZV8pIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0ZV8gZWxzZSBtb250YW50XykpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE5MTI7IHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE5MTk7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IDFlciBvY3RvYnJlIDIwMjEgLSBBcnLDqnTDqSBkdSAyMyBzZXB0ZW1icmUgMjAyMSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGwnYWlkZSDDoCBsJ2FjY2Vzc2lvbiBzb2NpYWxlIGV0IMOgIGxhIHNvcnRpZSBkZSBsJ2luc2FsdWJyaXTDqSBzcMOpY2lmaXF1ZSDDoCBsJ291dHJlLW1lciBOT1IgOiBMT0dMMjEyMzQ1MkFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDEpICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3V5YW5lIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWV0cm9wb2xlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWF5b3R0ZSBfIC0+IHRydWUpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbW9udGFudF8gOiBtb25leSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjQwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiOTM2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxpbWl0ZV8gOiBtb25leSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjQwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiOTM2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjYuXCIpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZiAob19ndF9tb25fbW9uIG1vbnRhbnRfIGxpbWl0ZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gbGltaXRlXyBlbHNlIG1vbnRhbnRfKSkpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Nzc1OyBzdGFydF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzgyOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0NlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IDFlciBqYW52aWVyIDIwMjIgLSBBcnLDqnTDqSBkdSAyMCBkw6ljZW1icmUgMjAyMSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IHBvdXIgbCdhbm7DqWUgMjAyMiBOT1IgOiBMT0dMMjEzNDQ3N0FcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdXlhbmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTGFSZXVuaW9uIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWF5b3R0ZSBfIC0+IHRydWUpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBtb250YW50XyA6IG1vbmV5ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzY0MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiOTM2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsaW1pdGVfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjQwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI5MzZcIikgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiNi5cIikpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWYgKG9fZ3RfbW9uX21vbiBtb250YW50XyBsaW1pdGVfKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdGVfIGVsc2UgbW9udGFudF8pKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDA0OyBzdGFydF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzAxMTsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyBlbiB2aWd1ZXVyIMOgIHBhcnRpciBkdSBkdSAxZXIgb2N0b2JyZSAyMDIwIC0gQXJyw6p0w6kgZHUgMjUgc2VwdGVtYnJlIDIwMjAgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsJ2FpZGUgw6AgbCdhY2Nlc3Npb24gc29jaWFsZSBldCDDoCBsYSBzb3J0aWUgZGUgbCdpbnNhbHVicml0w6kgc3DDqWNpZmlxdWUgw6AgbCdvdXRyZS1tZXIgTk9SIDogTE9HTDIwMjA4MzVBXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdXlhbmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTGFSZXVuaW9uIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWF5b3R0ZSBfIC0+IHRydWUpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBtb250YW50XyA6IG1vbmV5ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzYyNVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiOTMyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsaW1pdGVfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjI1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI5MzJcIikgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiNi5cIikpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWYgKG9fZ3RfbW9uX21vbiBtb250YW50XyBsaW1pdGVfKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdGVfIGVsc2UgbW9udGFudF8pKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNTY0OyBzdGFydF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzU3MTsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyBlbiB2aWd1ZXVyIMOgIHBhcnRpciBkdSAxZXIgamFudmllciAyMDIwIC0gQXJyw6p0w6kgZHUgMyBqYW52aWVyIDIwMjAgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBwb3VyIGwnYW5uw6llIDIwMjAgTk9SIDogTE9HTDE5MzQwMDZBXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5MYVJldW5pb24gXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50TWFydGluIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXlvdHRlIF8gLT4gdHJ1ZSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IG1vbnRhbnRfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjE0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI5MjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxpbWl0ZV8gOiBtb25leSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2MTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjkyOVwiKSAoZGVjaW1hbF9vZl9zdHJpbmcgXCI2LlwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZiAob19ndF9tb25fbW9uIG1vbnRhbnRfIGxpbWl0ZV8pIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0ZV8gZWxzZSBtb250YW50XykpKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI0Mjsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjQyOyBlbmRfY29sdW1uPTQ5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NjEyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEyNzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxpY2F0ZXVyX21ham9yYXRpb25fY2hhcmdlc19kODIzXzE2XykpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTUwOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTUwOyBlbmRfY29sdW1uPTQ5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyBlbiB2aWd1ZXVyIMOgIHBhcnRpciBkdSAxZXIgb2N0b2JyZSAyMDIxIC0gQXJyw6p0w6kgZHUgMjMgc2VwdGVtYnJlIDIwMjEgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsJ2FpZGUgw6AgbCdhY2Nlc3Npb24gc29jaWFsZSBldCDDoCBsYSBzb3J0aWUgZGUgbCdpbnNhbHVicml0w6kgc3DDqWNpZmlxdWUgw6AgbCdvdXRyZS1tZXIgTk9SIDogTE9HTDIxMjM0NTJBXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NDIyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEyMjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxpY2F0ZXVyX21ham9yYXRpb25fY2hhcmdlc19kODIzXzE2XykpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjUyOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMjUyOyBlbmRfY29sdW1uPTQ5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyBlbiB2aWd1ZXVyIMOgIHBhcnRpciBkdSBkdSAxZXIgb2N0b2JyZSAyMDIwIC0gQXJyw6p0w6kgZHUgMjUgc2VwdGVtYnJlIDIwMjAgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsJ2FpZGUgw6AgbCdhY2Nlc3Npb24gc29jaWFsZSBldCDDoCBsYSBzb3J0aWUgZGUgbCdpbnNhbHVicml0w6kgc3DDqWNpZmlxdWUgw6AgbCdvdXRyZS1tZXIgTk9SIDogTE9HTDIwMjA4MzVBXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTM5OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMjI0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsaWNhdGV1cl9tYWpvcmF0aW9uX2NoYXJnZXNfZDgyM18xNl8pKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NjA7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NTYwOyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFiYXR0ZW1lbnRfZm9yZmFpdGFpcmVfZDgyM18xN186IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcImFiYXR0ZW1lbnRfZm9yZmFpdGFpcmVfZDgyM18xN1wiXSB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PWZhbHNlfVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFxuICAgICAgICAgICAgICAgICAgICAgICAgIFt8fF0pIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzI3ODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzI3ODsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0N1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgMDEgamFudmllciAyMDIxIC0gQXJyw6p0w6kgZHUgMzEgZMOpY2VtYnJlIDIwMjAgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBwb3VyIGwnYW5uw6llIDIwMjEgTk9SIDogTE9HTDIwMjgzNTFBXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDEpICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTGFSZXVuaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXlvdHRlIF8gLT4gdHJ1ZSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0Mjc0MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNjEyMjAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjY5OTAwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjc0MzIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjc4NTQwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjRcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjgyODMwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjg3MTEwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI5MTM5MDBcIikpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzgxMDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzgxMDsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0N1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgMWVyIGphbnZpZXIgMjAyMCAtIEFycsOqdMOpIGR1IDMgamFudmllciAyMDIwIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgcG91ciBsJ2FubsOpZSAyMDIwIE5PUiA6IExPR0wxOTM0MDA2QVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxKSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdXlhbmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50TWFydGluIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWV0cm9wb2xlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWF5b3R0ZSBfIC0+IHRydWUpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzk2MDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU2NzMwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2Mzk2MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2ODQ5MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI3Mzg2MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI3OTM1MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI4NDg0MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiOTAzMjAwXCIpKSkpKSkpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI5NzQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI5ODI7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IGR1IDFlciBvY3RvYnJlIDIwMjAgLSBBcnLDqnTDqSBkdSAyNSBzZXB0ZW1icmUgMjAyMCByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGwnYWlkZSDDoCBsJ2FjY2Vzc2lvbiBzb2NpYWxlIGV0IMOgIGxhIHNvcnRpZSBkZSBsJ2luc2FsdWJyaXTDqSBzcMOpY2lmaXF1ZSDDoCBsJ291dHJlLW1lciBOT1IgOiBMT0dMMjAyMDgzNUFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdXlhbmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5MYVJldW5pb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1heW90dGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI3NTg0MDBcIikpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4ODQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xODkyOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0NlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IDFlciBvY3RvYnJlIDIwMjEgLSBBcnLDqnTDqSBkdSAyMyBzZXB0ZW1icmUgMjAyMSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGwnYWlkZSDDoCBsJ2FjY2Vzc2lvbiBzb2NpYWxlIGV0IMOgIGxhIHNvcnRpZSBkZSBsJ2luc2FsdWJyaXTDqSBzcMOpY2lmaXF1ZSDDoCBsJ291dHJlLW1lciBOT1IgOiBMT0dMMjEyMzQ1MkFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxKSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdXlhbmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTGFSZXVuaW9uIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWF5b3R0ZSBfIC0+IHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNzU4NDAwXCIpKXxdKSAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MzQzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDM1MTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJWCA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gb3V0cmUtbWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjMpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5MYVJldW5pb24gXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50TWFydGluIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXlvdHRlIF8gLT4gdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI4MTgxMDBcIikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ2MTM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NjE1OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0N1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElYIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBvdXRyZS1tZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMykgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdXlhbmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWV0cm9wb2xlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWF5b3R0ZSBfIC0+IGZhbHNlKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTI3MjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI3NTUyMDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI5MDA4MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjkyMTEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiOTU2MzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjk5MTkwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxMDI3MTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjEwNjI2MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTA2MjYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1MDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2XCIpKSkpKSkpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIzMDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIzODsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyBlbiB2aWd1ZXVyIMOgIHBhcnRpciBkdSAxZXIganVpbGxldCAyMDIyIC0gQXJyw6p0w6kgZHUgMjkganVpbGxldCAyMDIyIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgTk9SIDogVFJFTDIyMjA3NDhBIC0gQXJyw6p0w6kgZHUgMTYgYW/Du3QgMjAyMiByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGwnYWlkZSDDoCBsJ2FjY2Vzc2lvbiBzb2NpYWxlIGV0IMOgIGxhIHNvcnRpZSBkZSBsJ2luc2FsdWJyaXTDqSBzcMOpY2lmaXF1ZSDDoCBsJ291dHJlLW1lciAtIE5PUiA6IFRSRUwyMjIwNzQ0QVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIzKSAoMSkgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3V5YW5lIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWV0cm9wb2xlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1heW90dGUgXyAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjgwNTEwMFwiKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDc4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDgwOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0N1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IDFlciBqdWlsbGV0IDIwMjIgLSBBcnLDqnTDqSBkdSAyOSBqdWlsbGV0IDIwMjIgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBOT1IgOiBUUkVMMjIyMDc0OEEgLSBBcnLDqnTDqSBkdSAxNiBhb8O7dCAyMDIyIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbCdhaWRlIMOgIGwnYWNjZXNzaW9uIHNvY2lhbGUgZXQgw6AgbGEgc29ydGllIGRlIGwnaW5zYWx1YnJpdMOpIHNww6ljaWZpcXVlIMOgIGwnb3V0cmUtbWVyIC0gTk9SIDogVFJFTDIyMjA3NDRBXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjMpICgxKSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTGFSZXVuaW9uIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50TWFydGluIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXlvdHRlIF8gLT4gZmFsc2UpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0ODcwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjY5NzcwMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjgzMjIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODUwOTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI4ODM0MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiOTE2MzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjk0ODgwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI5ODE2MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiOTgxNjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzUwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjZcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzQ2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzU0OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0NlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IDFlciBqYW52aWVyIDIwMjIgLSBBcnLDqnTDqSBkdSAyMCBkw6ljZW1icmUgMjAyMSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IHBvdXIgbCdhbm7DqWUgMjAyMiBOT1IgOiBMT0dMMjEzNDQ3N0FcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5MYVJldW5pb24gXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50TWFydGluIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXlvdHRlIF8gLT4gdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI3NzQyMDBcIikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM1MzU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNTQzOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0NlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IDFlciBqYW52aWVyIDIwMjAgLSBBcnLDqnTDqSBkdSAzIGphbnZpZXIgMjAyMCByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IHBvdXIgbCdhbm7DqWUgMjAyMCBOT1IgOiBMT0dMMTkzNDAwNkFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdXlhbmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTGFSZXVuaW9uIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWF5b3R0ZSBfIC0+IHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNzU4NDAwXCIpKXxdKSAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDg5OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00ODk7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjMpICgxKSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ5NDkwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI3MDkwMDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODQ1NjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODY0NjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODk3NzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiOTMxMTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiOTY0MjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjk5NzUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiOTk3NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzI4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxpY2F0ZXVyX21ham9yYXRpb25fcjBfKSkpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mzk7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyBlbiB2aWd1ZXVyIMOgIHBhcnRpciBkdSAxZXIganVpbGxldCAyMDIyIC0gQXJyw6p0w6kgZHUgMjkganVpbGxldCAyMDIyIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgTk9SIDogVFJFTDIyMjA3NDhBIC0gQXJyw6p0w6kgZHUgMTYgYW/Du3QgMjAyMiByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGwnYWlkZSDDoCBsJ2FjY2Vzc2lvbiBzb2NpYWxlIGV0IMOgIGxhIHNvcnRpZSBkZSBsJ2luc2FsdWJyaXTDqSBzcMOpY2lmaXF1ZSDDoCBsJ291dHJlLW1lciAtIE5PUiA6IFRSRUwyMjIwNzQ0QVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxMikgKDMxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ4NzAwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI2OTc3MDBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODMyMjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODUwOTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODgzNDAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiOTE2MzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiOTQ4ODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjk4MTYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiOTgxNjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzIzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxpY2F0ZXVyX21ham9yYXRpb25fcjBfKSkpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NTQ7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU1NDsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IDFlciBqYW52aWVyIDIwMjIgLSBBcnLDqnTDqSBkdSAyMCBkw6ljZW1icmUgMjAyMSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IHBvdXIgbCdhbm7DqWUgMjAyMiBOT1IgOiBMT0dMMjEzNDQ3N0FcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NjgzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjcwOTAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjgwMDIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjgxOTIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjg0OTUwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjg4MTEwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjkxMjQwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjZcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI5NDM5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjk0MzkwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMxMTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsaWNhdGV1cl9tYWpvcmF0aW9uX3IwXykpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzMzMTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzMzMTsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IDFlciBqYW52aWVyIDIwMjAgLSBBcnLDqnTDqSBkdSAzIGphbnZpZXIgMjAyMCByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IHBvdXIgbCdhbm7DqWUgMjAyMCBOT1IgOiBMT0dMMTkzNDAwNkFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NTg4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNjU3MjAwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjc4MzkwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjgwMTUwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjgzMjIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjg2MzEwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjg5MzgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjZcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI5MjQ2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjkyNDYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwNTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjZcIikpKSkpKSkpKSkpKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NTM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTUzOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGxveWVyX3JlZmVyZW5jZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7IFwibG95ZXJfcsOpZsOpcmVuY2VcIl1cbiAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0ODsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDQ4OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjg4N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjkxMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3MDMyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUzOTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxpY2F0ZXVyX21ham9yYXRpb25fbG95ZXJfcmVmZXJlbmNlXykpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI5NTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTI5NTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IDFlciBvY3RvYnJlIDIwMjEgLSBBcnLDqnTDqSBkdSAyMyBzZXB0ZW1icmUgMjAyMSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGwnYWlkZSDDoCBsJ2FjY2Vzc2lvbiBzb2NpYWxlIGV0IMOgIGxhIHNvcnRpZSBkZSBsJ2luc2FsdWJyaXTDqSBzcMOpY2lmaXF1ZSDDoCBsJ291dHJlLW1lciBOT1IgOiBMT0dMMjEyMzQ1MkFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjU5NzhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE3OTdcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTc4MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MjA4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsaWNhdGV1cl9tYWpvcmF0aW9uX2xveWVyX3JlZmVyZW5jZV8pKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIzOTU7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIzOTU7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyBlbiB2aWd1ZXVyIMOgIHBhcnRpciBkdSBkdSAxZXIgb2N0b2JyZSAyMDIwIC0gQXJyw6p0w6kgZHUgMjUgc2VwdGVtYnJlIDIwMjAgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsJ2FpZGUgw6AgbCdhY2Nlc3Npb24gc29jaWFsZSBldCDDoCBsYSBzb3J0aWUgZGUgbCdpbnNhbHVicml0w6kgc3DDqWNpZmlxdWUgw6AgbCdvdXRyZS1tZXIgTk9SIDogTE9HTDIwMjA4MzVBXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNTg2OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTY2NFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NjMwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUxODZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxpY2F0ZXVyX21ham9yYXRpb25fbG95ZXJfcmVmZXJlbmNlXykpKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NDc7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTQ3OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHBsYWZvbmRfbG95ZXJfZDgyM18xNl8yXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjsgXCJwbGFmb25kX2xveWVyX2Q4MjNfMTZfMlwiXVxuICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9dHJ1ZX0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NDk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NTA7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvY2F0aW9uXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMzEzOFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDE2NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODkwMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU1ODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU1OTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9jYXRpb25fKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI3OTA1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI0NjgzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyOTExXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTY3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTY3OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb2NhdGlvbl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMxNTM5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQ1NzZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsaWNhdGV1cl9tYWpvcmF0aW9uX3BsYWZvbmRfbG95ZXJfZDgyM18xNl8yXykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjc3NzRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDA0M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxpY2F0ZXVyX21ham9yYXRpb25fcGxhZm9uZF9sb3llcl9kODIzXzE2XzJfKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNTY4OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjgyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGljYXRldXJfbWFqb3JhdGlvbl9wbGFmb25kX2xveWVyX2Q4MjNfMTZfMl8pKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEzNDE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMzQyOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IDFlciBvY3RvYnJlIDIwMjEgLSBBcnLDqnTDqSBkdSAyMyBzZXB0ZW1icmUgMjAyMSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGwnYWlkZSDDoCBsJ2FjY2Vzc2lvbiBzb2NpYWxlIGV0IMOgIGxhIHNvcnRpZSBkZSBsJ2luc2FsdWJyaXTDqSBzcMOpY2lmaXF1ZSDDoCBsJ291dHJlLW1lciBOT1IgOiBMT0dMMjEyMzQ1MkFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvY2F0aW9uXykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjIzNTVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk0ODRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTgyNjFcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzUwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTM1MTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyBlbiB2aWd1ZXVyIMOgIHBhcnRpciBkdSAxZXIgb2N0b2JyZSAyMDIxIC0gQXJyw6p0w6kgZHUgMjMgc2VwdGVtYnJlIDIwMjEgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsJ2FpZGUgw6AgbCdhY2Nlc3Npb24gc29jaWFsZSBldCDDoCBsYSBzb3J0aWUgZGUgbCdpbnNhbHVicml0w6kgc3DDqWNpZmlxdWUgw6AgbCdvdXRyZS1tZXIgTk9SIDogTE9HTDIxMjM0NTJBXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb2NhdGlvbl8pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2OTYyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzODQ4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyMTM2XCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTM2Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEzNjM7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgMWVyIG9jdG9icmUgMjAyMSAtIEFycsOqdMOpIGR1IDIzIHNlcHRlbWJyZSAyMDIxIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbCdhaWRlIMOgIGwnYWNjZXNzaW9uIHNvY2lhbGUgZXQgw6AgbGEgc29ydGllIGRlIGwnaW5zYWx1YnJpdMOpIHNww6ljaWZpcXVlIMOgIGwnb3V0cmUtbWVyIE5PUiA6IExPR0wyMTIzNDUyQVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9jYXRpb25fKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9pbnRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzA0NzNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDQyMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxpY2F0ZXVyX21ham9yYXRpb25fcGxhZm9uZF9sb3llcl9kODIzXzE2XzJfKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNjgzNVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzOTA2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGljYXRldXJfbWFqb3JhdGlvbl9wbGFmb25kX2xveWVyX2Q4MjNfMTZfMl8pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0ODIxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NTdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsaWNhdGV1cl9tYWpvcmF0aW9uX3BsYWZvbmRfbG95ZXJfZDgyM18xNl8yXykpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjQzOTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI0NDA7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgZHUgMWVyIG9jdG9icmUgMjAyMCAtIEFycsOqdMOpIGR1IDI1IHNlcHRlbWJyZSAyMDIwIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbCdhaWRlIMOgIGwnYWNjZXNzaW9uIHNvY2lhbGUgZXQgw6AgbGEgc29ydGllIGRlIGwnaW5zYWx1YnJpdMOpIHNww6ljaWZpcXVlIMOgIGwnb3V0cmUtbWVyIE5PUiA6IExPR0wyMDIwODM1QVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvY2F0aW9uXykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjIyNjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk0MDJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTgxODVcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNDQ4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjQ0OTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyBlbiB2aWd1ZXVyIMOgIHBhcnRpciBkdSBkdSAxZXIgb2N0b2JyZSAyMDIwIC0gQXJyw6p0w6kgZHUgMjUgc2VwdGVtYnJlIDIwMjAgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsJ2FpZGUgw6AgbCdhY2Nlc3Npb24gc29jaWFsZSBldCDDoCBsYSBzb3J0aWUgZGUgbCdpbnNhbHVicml0w6kgc3DDqWNpZmlxdWUgw6AgbCdvdXRyZS1tZXIgTk9SIDogTE9HTDIwMjA4MzVBXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9jYXRpb25fKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjg0OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMzc0OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjA0NFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI0NjE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNDYxOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IGR1IDFlciBvY3RvYnJlIDIwMjAgLSBBcnLDqnTDqSBkdSAyNSBzZXB0ZW1icmUgMjAyMCByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGwnYWlkZSDDoCBsJ2FjY2Vzc2lvbiBzb2NpYWxlIGV0IMOgIGxhIHNvcnRpZSBkZSBsJ2luc2FsdWJyaXTDqSBzcMOpY2lmaXF1ZSDDoCBsJ291dHJlLW1lciBOT1IgOiBMT0dMMjAyMDgzNUFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb2NhdGlvbl8pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2ludF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMDM0NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0NDAzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGljYXRldXJfbWFqb3JhdGlvbl9wbGFmb25kX2xveWVyX2Q4MjNfMTZfMl8pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI2NzIzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4OTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsaWNhdGV1cl9tYWpvcmF0aW9uX3BsYWZvbmRfbG95ZXJfZDgyM18xNl8yXykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQ3MTdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU0MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxpY2F0ZXVyX21ham9yYXRpb25fcGxhZm9uZF9sb3llcl9kODIzXzE2XzJfKSkpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKSk7XG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChcbiAgICAgICAgICAgICAgICAgICAgICAgICBbfHxdKSAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIwMTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjAxOyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDhcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZW1lbnRfZXN0X2NoYW1icmVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc18pKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjMxMzhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwMTY1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODkwMFwiKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTEwOTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTEwOTsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyBlbiB2aWd1ZXVyIMOgIHBhcnRpciBkdSAxZXIgb2N0b2JyZSAyMDIxIC0gQXJyw6p0w6kgZHUgMjMgc2VwdGVtYnJlIDIwMjEgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsJ2FpZGUgw6AgbCdhY2Nlc3Npb24gc29jaWFsZSBldCDDoCBsYSBzb3J0aWUgZGUgbCdpbnNhbHVicml0w6kgc3DDqWNpZmlxdWUgw6AgbCdvdXRyZS1tZXIgTk9SIDogTE9HTDIxMjM0NTJBXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZW1lbnRfZXN0X2NoYW1icmVfKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyMzU1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTQ4NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTgyNjFcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIyMTE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIyMTE7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgZHUgMWVyIG9jdG9icmUgMjAyMCAtIEFycsOqdMOpIGR1IDI1IHNlcHRlbWJyZSAyMDIwIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbCdhaWRlIMOgIGwnYWNjZXNzaW9uIHNvY2lhbGUgZXQgw6AgbGEgc29ydGllIGRlIGwnaW5zYWx1YnJpdMOpIHNww6ljaWZpcXVlIMOgIGwnb3V0cmUtbWVyIE5PUiA6IExPR0wyMDIwODM1QVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dlbWVudF9lc3RfY2hhbWJyZV8pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc18pKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjIyNjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5NDAyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODE4NVwiKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTk0OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE5NDsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2VtZW50X2VzdF9jaGFtYnJlXykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI3NzY1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI0MTk4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyNjgwXCIpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTEwMjsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTAyOyBlbmRfY29sdW1uPTM3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgMWVyIG9jdG9icmUgMjAyMSAtIEFycsOqdMOpIGR1IDIzIHNlcHRlbWJyZSAyMDIxIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbCdhaWRlIMOgIGwnYWNjZXNzaW9uIHNvY2lhbGUgZXQgw6AgbGEgc29ydGllIGRlIGwnaW5zYWx1YnJpdMOpIHNww6ljaWZpcXVlIMOgIGwnb3V0cmUtbWVyIE5PUiA6IExPR0wyMTIzNDUyQVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dlbWVudF9lc3RfY2hhbWJyZV8pKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjY4MjZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjMzODBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjE5MTNcIikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjA0OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIyMDQ7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDhcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyBlbiB2aWd1ZXVyIMOgIHBhcnRpciBkdSBkdSAxZXIgb2N0b2JyZSAyMDIwIC0gQXJyw6p0w6kgZHUgMjUgc2VwdGVtYnJlIDIwMjAgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsJ2FpZGUgw6AgbCdhY2Nlc3Npb24gc29jaWFsZSBldCDDoCBsYSBzb3J0aWUgZGUgbCdpbnNhbHVicml0w6kgc3DDqWNpZmlxdWUgw6AgbCdvdXRyZS1tZXIgTk9SIDogTE9HTDIwMjA4MzVBXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dlbWVudF9lc3RfY2hhbWJyZV8pKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjY3MTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjMyODJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjE4MjFcIikpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTEwOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzA4NTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNjg4N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI1MjAwXCIpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyMDsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3MjA3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzI5MTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMDU0OFwiKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEzMzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMzM7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IENhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2ludF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDIwNTJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2MTAxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxpY2F0ZXVyX21ham9yYXRpb25fcGxhZm9uZF9sb3llcl9kODIzXzE2XzJfKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzAzMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjUzOTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGljYXRldXJfbWFqb3JhdGlvbl9wbGFmb25kX2xveWVyX2Q4MjNfMTZfMl8pKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0MjUyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDkwOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsaWNhdGV1cl9tYWpvcmF0aW9uX3BsYWZvbmRfbG95ZXJfZDgyM18xNl8yXykpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAxNjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDE3OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyBlbiB2aWd1ZXVyIMOgIHBhcnRpciBkdSAxZXIgb2N0b2JyZSAyMDIxIC0gQXJyw6p0w6kgZHUgMjMgc2VwdGVtYnJlIDIwMjEgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsJ2FpZGUgw6AgbCdhY2Nlc3Npb24gc29jaWFsZSBldCDDoCBsYSBzb3J0aWUgZGUgbCdpbnNhbHVicml0w6kgc3DDqWNpZmlxdWUgw6AgbCdvdXRyZS1tZXIgTk9SIDogTE9HTDIxMjM0NTJBXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjk4MDdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNTk3OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0MzQ4XCIpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAyNjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDI3OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyBlbiB2aWd1ZXVyIMOgIHBhcnRpciBkdSAxZXIgb2N0b2JyZSAyMDIxIC0gQXJyw6p0w6kgZHUgMjMgc2VwdGVtYnJlIDIwMjEgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsJ2FpZGUgw6AgbCdhY2Nlc3Npb24gc29jaWFsZSBldCDDoCBsYSBzb3J0aWUgZGUgbCdpbnNhbHVicml0w6kgc3DDqWNpZmlxdWUgw6AgbCdvdXRyZS1tZXIgTk9SIDogTE9HTDIxMjM0NTJBXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU5NDlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMTc5N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5NTE1XCIpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA0MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDQwOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyBlbiB2aWd1ZXVyIMOgIHBhcnRpciBkdSAxZXIgb2N0b2JyZSAyMDIxIC0gQXJyw6p0w6kgZHUgMjMgc2VwdGVtYnJlIDIwMjEgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsJ2FpZGUgw6AgbCdhY2Nlc3Npb24gc29jaWFsZSBldCDDoCBsYSBzb3J0aWUgZGUgbCdpbnNhbHVicml0w6kgc3DDqWNpZmlxdWUgw6AgbCdvdXRyZS1tZXIgTk9SIDogTE9HTDIxMjM0NTJBXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9pbnRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwNjMwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTg5NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsaWNhdGV1cl9tYWpvcmF0aW9uX3BsYWZvbmRfbG95ZXJfZDgyM18xNl8yXykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU3ODBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1MjA4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxpY2F0ZXVyX21ham9yYXRpb25fcGxhZm9uZF9sb3llcl9kODIzXzE2XzJfKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzA5NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ3NDNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGljYXRldXJfbWFqb3JhdGlvbl9wbGFmb25kX2xveWVyX2Q4MjNfMTZfMl8pKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIxMTk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjEyMDsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgZHUgMWVyIG9jdG9icmUgMjAyMCAtIEFycsOqdMOpIGR1IDI1IHNlcHRlbWJyZSAyMDIwIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbCdhaWRlIMOgIGwnYWNjZXNzaW9uIHNvY2lhbGUgZXQgw6AgbGEgc29ydGllIGRlIGwnaW5zYWx1YnJpdMOpIHNww6ljaWZpcXVlIMOgIGwnb3V0cmUtbWVyIE5PUiA6IExPR0wyMDIwODM1QVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTY4MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI1ODU5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQyNDZcIikpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMTI5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIxMzA7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IGR1IDFlciBvY3RvYnJlIDIwMjAgLSBBcnLDqnTDqSBkdSAyNSBzZXB0ZW1icmUgMjAyMCByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGwnYWlkZSDDoCBsJ2FjY2Vzc2lvbiBzb2NpYWxlIGV0IMOgIGxhIHNvcnRpZSBkZSBsJ2luc2FsdWJyaXTDqSBzcMOpY2lmaXF1ZSDDoCBsJ291dHJlLW1lciBOT1IgOiBMT0dMMjAyMDgzNUFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU3OTlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMTY2NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT4gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI5MzkyXCIpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjE0Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMTQzOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyBlbiB2aWd1ZXVyIMOgIHBhcnRpciBkdSBkdSAxZXIgb2N0b2JyZSAyMDIwIC0gQXJyw6p0w6kgZHUgMjUgc2VwdGVtYnJlIDIwMjAgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsJ2FpZGUgw6AgbCdhY2Nlc3Npb24gc29jaWFsZSBldCDDoCBsYSBzb3J0aWUgZGUgbCdpbnNhbHVicml0w6kgc3DDqWNpZmlxdWUgw6AgbCdvdXRyZS1tZXIgTk9SIDogTE9HTDIwMjA4MzVBXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDQ2MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjU4NzBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGljYXRldXJfbWFqb3JhdGlvbl9wbGFmb25kX2xveWVyX2Q4MjNfMTZfMl8pKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NjMwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNTE4NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsaWNhdGV1cl9tYWpvcmF0aW9uX3BsYWZvbmRfbG95ZXJfZDgyM18xNl8yXykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI5NTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0NzIzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxpY2F0ZXVyX21ham9yYXRpb25fcGxhZm9uZF9sb3llcl9kODIzXzE2XzJfKSkpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU2MTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01NjE7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcGxhZm9uZF9zdXBwcmVzc2lvbl9kODIzXzE2XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgIFwicGxhZm9uZF9zdXBwcmVzc2lvbl9kODIzXzE2XCJdIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjcyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI3MjsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV8gKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEwKSAoMSkpKSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgcGxhZm9uZF9sb3llcl9kODIzXzE2XzJfXG4gICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiNC5cIikpXG4gICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IHBsYWZvbmRfbG95ZXJfZDgyM18xNl8yX1xuICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjMuMVwiKSlcbiAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgcGxhZm9uZF9sb3llcl9kODIzXzE2XzJfXG4gICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMy4xXCIpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NTUwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTU1MDsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBwbGFmb25kX2RlZ3Jlc3Npdml0ZV9kODIzXzE2XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgIFwicGxhZm9uZF9kw6lncmVzc2l2aXTDqV9kODIzXzE2XCJdIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjY2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI2NjsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV8gKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEwKSAoMSkpKSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgcGxhZm9uZF9sb3llcl9kODIzXzE2XzJfXG4gICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMy40XCIpKVxuICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBwbGFmb25kX2xveWVyX2Q4MjNfMTZfMl9cbiAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIyLjVcIikpXG4gICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IHBsYWZvbmRfbG95ZXJfZDgyM18xNl8yX1xuICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjIuNVwiKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU0OTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01NDk7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbG95ZXJfZWxpZ2libGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiOyBcImxveWVyX8OpbGlnaWJsZVwiXVxuICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTc2NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNzY0OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDIgOiBDYWxjdWwgZGUgbCdhaWRlIGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgKG9fZ3RfbW9uX21vbiBsb3llcl9wcmluY2lwYWxfYXZlY19yZWR1Y3Rpb25fbWV1YmxlX1xuICAgICAgICAgICAgICAgICBwbGFmb25kX2xveWVyX2Q4MjNfMTZfMl8pIHRoZW4gcGxhZm9uZF9sb3llcl9kODIzXzE2XzJfIGVsc2VcbiAgICAgICAgICAgICAgbG95ZXJfcHJpbmNpcGFsX2F2ZWNfcmVkdWN0aW9uX21ldWJsZV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU0Mjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01NDI7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgXzogdW5pdCA9IGlmIChcbiAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAob19ndGVfbW9uX21vbiBwbGFmb25kX2RlZ3Jlc3Npdml0ZV9kODIzXzE2X1xuICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgcGxhZm9uZF9sb3llcl9kODIzXzE2XzJfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjIuNVwiKSkpXG4gICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4MTY7IHN0YXJ0X2NvbHVtbj0xMztcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xODE2OyBlbmRfY29sdW1uPTc0O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAyIDogQ2FsY3VsIGRlIGwnYWlkZSBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKVxuICAgICAgICAgICAgICAgICAgdGhlbiAoKSBlbHNlXG4gICAgICAgICAgICAgICAgICByYWlzZSAoQXNzZXJ0aW9uRmFpbGVkIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4MTY7IHN0YXJ0X2NvbHVtbj0xMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xODE2OyBlbmRfY29sdW1uPTc0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAyIDogQ2FsY3VsIGRlIGwnYWlkZSBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGltaW51ZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGltaW51w6lcIl0ge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD1mYWxzZX1cbiAgICAodW5lbWJlZGRhYmxlKVxuICAgIChmdW4gKGFpZGVfZmluYWxlXzogbW9uZXkpIC0+IFxuICAgICAgIHRyeVxuICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODEzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xODEzOyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAyIDogQ2FsY3VsIGRlIGwnYWlkZSBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICBiZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfKSlcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gYWlkZV9maW5hbGVfKSl8XSlcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNzk5OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgIGVuZF9saW5lPTE3OTk7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IENhbGN1bCBkZSBsJ2FpZGUgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAob19ndF9tb25fbW9uIGxveWVyX3ByaW5jaXBhbF9hdmVjX3JlZHVjdGlvbl9tZXVibGVfXG4gICAgICAgICAgICAgICAgICAgIHBsYWZvbmRfc3VwcHJlc3Npb25fZDgyM18xNl8pIHRoZW5cbiAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgIChvX2d0X21vbl9tb24gbG95ZXJfcHJpbmNpcGFsX2F2ZWNfcmVkdWN0aW9uX21ldWJsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9kZWdyZXNzaXZpdGVfZDgyM18xNl8pIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gYWlkZV9maW5hbGVfXG4gICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCBhaWRlX2ZpbmFsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZGl2X21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG95ZXJfcHJpbmNpcGFsX2F2ZWNfcmVkdWN0aW9uX21ldWJsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9kZWdyZXNzaXZpdGVfZDgyM18xNl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIHBsYWZvbmRfc3VwcHJlc3Npb25fZDgyM18xNl9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhZm9uZF9kZWdyZXNzaXZpdGVfZDgyM18xNl8pKSkpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgYWlkZV9maW5hbGVfKSkpXG4gICAgICAgd2l0aFxuICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTczOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU3MzsgZW5kX2NvbHVtbj0xNztcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBwYXJ0aWNpcGF0aW9uX21pbmltYWxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjsgXCJwYXJ0aWNpcGF0aW9uX21pbmltYWxlXCJdXG4gICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMxNzsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzE3OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBsb3llcl9lbGlnaWJsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDg1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2NjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gbG95ZXJfZWxpZ2libGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA4NVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2NjNcIikpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTY0OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTY0OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgMWVyIG9jdG9icmUgMjAyMSAtIEFycsOqdMOpIGR1IDIzIHNlcHRlbWJyZSAyMDIxIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbCdhaWRlIMOgIGwnYWNjZXNzaW9uIHNvY2lhbGUgZXQgw6AgbGEgc29ydGllIGRlIGwnaW5zYWx1YnJpdMOpIHNww6ljaWZpcXVlIMOgIGwnb3V0cmUtbWVyIE5PUiA6IExPR0wyMTIzNDUyQVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBsb3llcl9lbGlnaWJsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDg1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1MzlcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gbG95ZXJfZWxpZ2libGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA4NVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1MzlcIikpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjY2OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMjY2OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgZHUgMWVyIG9jdG9icmUgMjAyMCAtIEFycsOqdMOpIGR1IDI1IHNlcHRlbWJyZSAyMDIwIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbCdhaWRlIMOgIGwnYWNjZXNzaW9uIHNvY2lhbGUgZXQgw6AgbGEgc29ydGllIGRlIGwnaW5zYWx1YnJpdMOpIHNww6ljaWZpcXVlIMOgIGwnb3V0cmUtbWVyIE5PUiA6IExPR0wyMDIwODM1QVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gbG95ZXJfZWxpZ2libGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjA4NVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTI0XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGxveWVyX2VsaWdpYmxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTZfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wODVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTI0XCIpKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NjI7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NTYyOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHJhcHBvcnRfbG95ZXJzXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiOyBcInJhcHBvcnRfbG95ZXJzXCJdXG4gICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMzQxOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjM0MTsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgZHUgMWVyIG9jdG9icmUgMjAyMCAtIEFycsOqdMOpIGR1IDI1IHNlcHRlbWJyZSAyMDIwIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbCdhaWRlIMOgIGwnYWNjZXNzaW9uIHNvY2lhbGUgZXQgw6AgbGEgc29ydGllIGRlIGwnaW5zYWx1YnJpdMOpIHNww6ljaWZpcXVlIMOgIGwnb3V0cmUtbWVyIE5PUiA6IExPR0wyMDIwODM1QVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19kaXZfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3JvdW5kX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2Rpdl9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG95ZXJfZWxpZ2libGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG95ZXJfcmVmZXJlbmNlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAuXCIpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAuXCIpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTIzODsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjM4OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IDFlciBvY3RvYnJlIDIwMjEgLSBBcnLDqnTDqSBkdSAyMyBzZXB0ZW1icmUgMjAyMSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGwnYWlkZSDDoCBsJ2FjY2Vzc2lvbiBzb2NpYWxlIGV0IMOgIGxhIHNvcnRpZSBkZSBsJ2luc2FsdWJyaXTDqSBzcMOpY2lmaXF1ZSDDoCBsJ291dHJlLW1lciBOT1IgOiBMT0dMMjEyMzQ1MkFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2Rpdl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3JvdW5kX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZGl2X21vbl9tb24gbG95ZXJfZWxpZ2libGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxveWVyX3JlZmVyZW5jZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMC5cIikpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAuXCIpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzkzOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zOTM7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBvX2Rpdl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19yb3VuZF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZGl2X21vbl9tb24gbG95ZXJfZWxpZ2libGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb3llcl9yZWZlcmVuY2VfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTAwLlwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAuXCIpKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NDY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NTQ2OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXSB7aW9faW5wdXQ9Tm9JbnB1dDtcbiAgICBpb19vdXRwdXQ9ZmFsc2V9ICh1bmVtYmVkZGFibGUpXG4gICAgKGZ1biAoYWlkZV9maW5hbGVfOiBtb25leSkgLT4gXG4gICAgICAgdHJ5XG4gICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODIzOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgIGVuZF9saW5lPTE4MjM7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtMTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gMiA6IENhbGN1bCBkZSBsJ2FpZGUgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kaW1pbnXDqVwiXVxuICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kaW1pbnXDqVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2RpbWludcOpXCJdXG4gICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2RpbWludWVfKSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2RpbWludcOpXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgIGFpZGVfZmluYWxlXykpKSkpKSlcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAob19ndGVfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gYWlkZV9maW5hbGVfIG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgyM18xNl8pXG4gICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gYWlkZV9maW5hbGVfIG1vbnRhbnRfZm9yZmFpdGFpcmVfZDgyM18xNl8pXG4gICAgICAgICAgICAgICAgICBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSkpKVxuICAgICAgIHdpdGhcbiAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTU3NDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NzQ7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdGF1eF9sb3llcl9lbGlnaWJsZV9mb3JtdWxlXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgXCJ0YXV4X2xveWVyX8OpbGlnaWJsZV9mb3JtdWxlXCJdIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMzY1OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjM2NTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgZHUgMWVyIG9jdG9icmUgMjAyMCAtIEFycsOqdMOpIGR1IDI1IHNlcHRlbWJyZSAyMDIwIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbCdhaWRlIMOgIGwnYWNjZXNzaW9uIHNvY2lhbGUgZXQgw6AgbGEgc29ydGllIGRlIGwnaW5zYWx1YnJpdMOpIHNww6ljaWZpcXVlIMOgIGwnb3V0cmUtbWVyIE5PUiA6IExPR0wyMDIwODM1QVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfcmF0X3JhdCByYXBwb3J0X2xveWVyc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjQ1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNDVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNzVcIikpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwNDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDA0NVwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNzVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMDQ1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4zXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDA2OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFwcG9ydF9sb3llcnNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC43NVwiKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSkpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTI2NTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjY1OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IDFlciBvY3RvYnJlIDIwMjEgLSBBcnLDqnTDqSBkdSAyMyBzZXB0ZW1icmUgMjAyMSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGwnYWlkZSDDoCBsJ2FjY2Vzc2lvbiBzb2NpYWxlIGV0IMOgIGxhIHNvcnRpZSBkZSBsJ2luc2FsdWJyaXTDqSBzcMOpY2lmaXF1ZSDDoCBsJ291dHJlLW1lciBOT1IgOiBMT0dMMjEyMzQ1MkFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfcmF0X3JhdCByYXBwb3J0X2xveWVyc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC40NVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjQ1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjc1XCIpKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4wMDQ1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwNDVcIikpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX3JhdF9yYXQgcmFwcG9ydF9sb3llcnNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNzVcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDA0NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjNcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwNjhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX3JhdF9yYXQgcmFwcG9ydF9sb3llcnNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNzVcIikpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSkpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDE5OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MTk7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X3JhdF9yYXQgcmFwcG9ydF9sb3llcnNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjQ1XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC40NVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X3JhdF9yYXQgcmFwcG9ydF9sb3llcnNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjc1XCIpKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0IChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDA0NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX3JhdF9yYXQgcmFwcG9ydF9sb3llcnNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwNDVcIikpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfcmF0X3JhdCByYXBwb3J0X2xveWVyc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNzVcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMDA0NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC4zXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAwNjhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9yYXRfcmF0IHJhcHBvcnRfbG95ZXJzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC43NVwiKSkpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKSkpKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT01NDQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTQ0OyBlbmRfY29sdW1uPTE3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl1cbiAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAodW5lbWJlZGRhYmxlKVxuICAgIChmdW4gKGFpZGVfZmluYWxlXzogbW9uZXkpIC0+IFxuICAgICAgIHRyeVxuICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTg0MDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICBlbmRfbGluZT0xODQwOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDIgOiBDYWxjdWwgZGUgbCdhaWRlIGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9dHJ1ZX1cbiAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdXG4gICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVfKVxuICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgIFwiaW5wdXQwXCJdIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX1cbiAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgYWlkZV9maW5hbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIChsZXQgY3Jkc18gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJvdXRwdXRcIl0ge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfVxuICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCJdIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X21vbnRhbnRfKVxuICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiOyBcImlucHV0MFwiXSB7aW9faW5wdXQ9T25seUlucHV0O1xuICAgICAgICAgICAgICAgICAgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfbW9uZXkpIGFpZGVfZmluYWxlXykpKSkpKSlcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlX21vaW5zX2NyZHNfYXJyb25kaWVfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgICAgKG9fcm91bmRfbW9uXG4gICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiAob19zdWJfbW9uX21vbiBhaWRlX2ZpbmFsZV8gY3Jkc18pXG4gICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTBcIikpKVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgIChvX2d0ZV9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBhaWRlX2ZpbmFsZV9tb2luc19jcmRzX2Fycm9uZGllXyBjcmRzXylcbiAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBhaWRlX2ZpbmFsZV9tb2luc19jcmRzX2Fycm9uZGllXyBjcmRzXykgZWxzZVxuICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKSkpKSlcbiAgICAgICB3aXRoXG4gICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01NzU7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTc1OyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRhdXhfbG95ZXJfZWxpZ2libGVfdGF1eF9hcnJvbmRpXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgXCJ0YXV4X2xveWVyX8OpbGlnaWJsZV90YXV4X2Fycm9uZGlcIl0ge2lvX2lucHV0PU5vSW5wdXQ7XG4gICAgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIzNzI7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMzcyOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyBlbiB2aWd1ZXVyIMOgIHBhcnRpciBkdSBkdSAxZXIgb2N0b2JyZSAyMDIwIC0gQXJyw6p0w6kgZHUgMjUgc2VwdGVtYnJlIDIwMjAgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsJ2FpZGUgw6AgbCdhY2Nlc3Npb24gc29jaWFsZSBldCDDoCBsYSBzb3J0aWUgZGUgbCdpbnNhbHVicml0w6kgc3DDqWNpZmlxdWUgw6AgbCdvdXRyZS1tZXIgTk9SIDogTE9HTDIwMjA4MzVBXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2Rpdl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fcm91bmRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF1eF9sb3llcl9lbGlnaWJsZV9mb3JtdWxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMDAwMC5cIikpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMDAwMC5cIikpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjcyOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyNzI7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgMWVyIG9jdG9icmUgMjAyMSAtIEFycsOqdMOpIGR1IDIzIHNlcHRlbWJyZSAyMDIxIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbCdhaWRlIMOgIGwnYWNjZXNzaW9uIHNvY2lhbGUgZXQgw6AgbGEgc29ydGllIGRlIGwnaW5zYWx1YnJpdMOpIHNww6ljaWZpcXVlIMOgIGwnb3V0cmUtbWVyIE5PUiA6IExPR0wyMTIzNDUyQVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fZGl2X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fcm91bmRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2xveWVyX2VsaWdpYmxlX2Zvcm11bGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMDAwMC5cIikpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAwMDAuXCIpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDI2OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MjY7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAxNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBvX2Rpdl9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19yb3VuZF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdCB0YXV4X2xveWVyX2VsaWdpYmxlX2Zvcm11bGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxMDAwMDAuXCIpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjEwMDAwMC5cIikpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU0NTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT01NDU7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcsOpZHVjdGlvbl9sb3llcl9zb2xpZGFyaXTDqVwiXVxuICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9ZmFsc2V9ICh1bmVtYmVkZGFibGUpXG4gICAgKGZ1biAoYWlkZV9maW5hbGVfOiBtb25leSkgLT4gXG4gICAgICAgdHJ5XG4gICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04MzA7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgZW5kX2xpbmU9ODMwOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODMyLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXVxuICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0ge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfVxuICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXVxuICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlfKVxuICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl0ge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfVxuICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBhaWRlX2ZpbmFsZV8pKSkpKSkpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgKG9fZ3RlX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIGFpZGVfZmluYWxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IHJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhY3Rpb25fbDgzMl8zXykpIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gYWlkZV9maW5hbGVfXG4gICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgcmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfXG4gICAgICAgICAgICAgICAgICAgICAgICBmcmFjdGlvbl9sODMyXzNfKSkgZWxzZSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpKSlcbiAgICAgICB3aXRoXG4gICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01NzY7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTc2OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRhdXhfcHJpc2VfY29tcHRlX3Jlc3NvdXJjZXNfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcInRhdXhfcHJpc2VfY29tcHRlX3Jlc3NvdXJjZXNcIl0ge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD1mYWxzZX1cbiAgICAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTkyMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xOTIzOyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDIgOiBDYWxjdWwgZGUgbCdhaWRlIGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX2FkZF9yYXRfcmF0IHRhdXhfY29tcG9zaXRpb25fZmFtaWxpYWxlX1xuICAgICAgICAgICAgICB0YXV4X2xveWVyX2VsaWdpYmxlX3RhdXhfYXJyb25kaV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU1NDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT01NTQ7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250ZWVfZW5fY2hhcmdlX3NhaW50X3BpZXJyZV9taXF1ZWxvbl86IFxuICAgIG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udMOpZV9lbl9jaGFyZ2Vfc2FpbnRfcGllcnJlX21pcXVlbG9uXCJdXG4gICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKHVuZW1iZWRkYWJsZSlcbiAgICAoZnVuIChhaWRlX2ZpbmFsZV86IG1vbmV5KSAtPiBcbiAgICAgICB0cnlcbiAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hdXRyZXNfc291cmNlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTE7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzkxOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY3JldCBuwrAgMjAyMS0xNzUwIGR1IDIxIGTDqWNlbWJyZSAyMDIxIHBvcnRhbnQgZGl2ZXJzZXMgbWVzdXJlcyBzdXIgbGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCByZWxhdGlmIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgw6AgU2FpbnQtUGllcnJlLWV0LU1pcXVlbG9uXCJdfVxuICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX3LDqWR1Y3Rpb25fbG95ZXJfc29saWRhcml0w6lcIl1cbiAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcsOpZHVjdGlvbl9sb3llcl9zb2xpZGFyaXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PXRydWV9XG4gICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcsOpZHVjdGlvbl9sb3llcl9zb2xpZGFyaXTDqVwiXVxuICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV8pXG4gICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX3LDqWR1Y3Rpb25fbG95ZXJfc29saWRhcml0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl0ge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfVxuICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBhaWRlX2ZpbmFsZV8pKSkpKSkpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgKG1vbnRlZV9lbl9jaGFyZ2Vfc2FpbnRfcGllcnJlX21pcXVlbG9uXyBhaWRlX2ZpbmFsZV9cbiAgICAgICAgICAgICAgICAgIHJlc2lkZW5jZV8gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgICAgd2l0aFxuICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9NTgzOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTU4MzsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBwYXJ0aWNpcGF0aW9uX3BlcnNvbm5lbGxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjsgXCJwYXJ0aWNpcGF0aW9uX3BlcnNvbm5lbGxlXCJdXG4gICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE4ODk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTg4OTsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy0xN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAyIDogQ2FsY3VsIGRlIGwnYWlkZSBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgKGxldCBwYXJ0aWNpcGF0aW9uX3Jlc3NvdXJjZXNfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfXG4gICAgICAgICAgICAgICAgICAgICBhYmF0dGVtZW50X2ZvcmZhaXRhaXJlX2Q4MjNfMTdfKVxuICAgICAgICAgICAgICAgICAgdGF1eF9wcmlzZV9jb21wdGVfcmVzc291cmNlc18pXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKGxldCBwYXJ0aWNpcGF0aW9uX3Jlc3NvdXJjZXNfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgKG9fbHRfbW9uX21vbiBwYXJ0aWNpcGF0aW9uX3Jlc3NvdXJjZXNfXG4gICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZSBwYXJ0aWNpcGF0aW9uX3Jlc3NvdXJjZXNfKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIHBhcnRpY2lwYXRpb25fbWluaW1hbGVfIHBhcnRpY2lwYXRpb25fcmVzc291cmNlc18pKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU2NDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01NjQ7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbFwiXSB7aW9faW5wdXQ9Tm9JbnB1dDtcbiAgICBpb19vdXRwdXQ9dHJ1ZX0gKHVuZW1iZWRkYWJsZSlcbiAgICAoZnVuIChhaWRlX2ZpbmFsZV86IG1vbmV5KSAtPiBcbiAgICAgICB0cnlcbiAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4NzI7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTg3MjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy0xNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiAyIDogQ2FsY3VsIGRlIGwnYWlkZSBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnTDqWVfZW5fY2hhcmdlX3NhaW50X3BpZXJyZV9taXF1ZWxvblwiXVxuICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250w6llX2VuX2NoYXJnZV9zYWludF9waWVycmVfbWlxdWVsb25cIjtcbiAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0ge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfVxuICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnTDqWVfZW5fY2hhcmdlX3NhaW50X3BpZXJyZV9taXF1ZWxvblwiXVxuICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250ZWVfZW5fY2hhcmdlX3NhaW50X3BpZXJyZV9taXF1ZWxvbl8pXG4gICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnTDqWVfZW5fY2hhcmdlX3NhaW50X3BpZXJyZV9taXF1ZWxvblwiO1xuICAgICAgICAgICAgICAgICAgICBcImlucHV0MFwiXSB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIGFpZGVfZmluYWxlXykpKSkpKSlcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAoIGlmIChvX2x0X21vbl9tb24gYWlkZV9maW5hbGVfIG1vbnRhbnRfbWluaW1hbF9haWRlX2Q4MjNfMTZfKVxuICAgICAgICAgICAgICAgICAgdGhlbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSBlbHNlIGFpZGVfZmluYWxlXykpKSlcbiAgICAgICB3aXRoXG4gICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT01ODQ7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NTg0OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFpZGVfZmluYWxlX2Zvcm11bGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiOyBcImFpZGVfZmluYWxlX2Zvcm11bGVcIl1cbiAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PXRydWV9IChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTc0Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNzQ2OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDIgOiBDYWxjdWwgZGUgbCdhaWRlIGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID1cbiAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBsb3llcl9lbGlnaWJsZV9cbiAgICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2XylcbiAgICAgICAgICAgICAgICAgIHBhcnRpY2lwYXRpb25fcGVyc29ubmVsbGVfKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggaWYgKG9fbHRfbW9uX21vbiBhaWRlX2ZpbmFsZV8gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2UgYWlkZV9maW5hbGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTU2OTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT01Njk7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICB7Q2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYubW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTYgPVxuICAgICBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNl87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnBsYWZvbmRfbG95ZXJfZDgyM18xNl8yID1cbiAgICAgICBwbGFmb25kX2xveWVyX2Q4MjNfMTZfMl87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnBhcnRpY2lwYXRpb25fbWluaW1hbGUgPVxuICAgICAgIHBhcnRpY2lwYXRpb25fbWluaW1hbGVfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi50YXV4X2NvbXBvc2l0aW9uX2ZhbWlsaWFsZSA9XG4gICAgICAgdGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGVfO1xuICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5wYXJ0aWNpcGF0aW9uX3BlcnNvbm5lbGxlID1cbiAgICAgICBwYXJ0aWNpcGF0aW9uX3BlcnNvbm5lbGxlXztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYuYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgYWlkZV9maW5hbGVfZm9ybXVsZV87XG4gICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsX31cblxubGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbjogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi50KSA6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLnQgPVxuICBsZXQgdHlwZV9sb2dlbWVudF9mb3llcl86IFR5cGVMb2dlbWVudEZveWVyLnQgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnR5cGVfbG9nZW1lbnRfZm95ZXJfaW4gaW5cbiAgbGV0IGxvZ2VtZW50X2ZveWVyX2pldW5lc190cmF2YWlsbGV1cnNfOiBib29sID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5sb2dlbWVudF9mb3llcl9qZXVuZXNfdHJhdmFpbGxldXJzX2luIGluXG4gIGxldCBkYXRlX2NvbnZlbnRpb25uZW1lbnRfOiBkYXRlID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5kYXRlX2NvbnZlbnRpb25uZW1lbnRfaW4gaW5cbiAgbGV0IHJlc2lkZW5jZV86IENvbGxlY3Rpdml0ZS50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5yZXNpZGVuY2VfaW4gaW5cbiAgbGV0IHJlZGV2YW5jZV86IG1vbmV5ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5yZWRldmFuY2VfaW4gaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc186IG1vbmV5ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gaW5cbiAgbGV0IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luIGluXG4gIGxldCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luIGluXG4gIGxldCB6b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnpvbmVfaW4gaW5cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNl86IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5jYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNl9pbiBpblxuICBsZXQgXzogdW5pdCA9IGlmIChcbiAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDQ5OyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA0OTsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAoKSBlbHNlXG4gICAgICAgICAgICAgICAgICByYWlzZSAoQXNzZXJ0aW9uRmFpbGVkIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDQ5OyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTA0OTsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkgaW5cbiAgbGV0IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY29udHJpYnV0aW9uc19zb2NpYWxlcy5kYXRlX2NvdXJhbnRlXCJdIHtpb19pbnB1dD1Pbmx5SW5wdXQ7XG4gICAgICBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNDM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA0MzsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNDM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA0MzsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9saWV1XzogQ29sbGVjdGl2aXRlLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJjb250cmlidXRpb25zX3NvY2lhbGVzLmxpZXVcIl1cbiAgICAgIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2NvbGxlY3Rpdml0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDQ0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNDQ7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByZXNpZGVuY2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNDQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA0NDsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNcIjtcbiAgICAgIFwiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNcIjtcbiAgICAgIFwiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdXG4gICAgY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudClcbiAgICAoe0NvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICAgQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ubGlldV9pbiA9XG4gICAgICAgICAgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfbGlldV99KSkpIGluXG4gIGxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb250YW50XzogbW9uZXkgLT4gbW9uZXkgPSByZXN1bHRfLkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5tb250YW50IGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9yZXNpZGVuY2VfOiBDb2xsZWN0aXZpdGUudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIucsOpc2lkZW5jZVwiXSB7aW9faW5wdXQ9T25seUlucHV0O1xuICAgICAgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfY29sbGVjdGl2aXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMjQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTAyNDsgZW5kX2NvbHVtbj00OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJlc2lkZW5jZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAyNDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDI0OyBlbmRfY29sdW1uPTQ5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2xvZ2VtZW50X2ZveWVyX2pldW5lc190cmF2YWlsbGV1cnNfOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5sb2dlbWVudF9mb3llcl9qZXVuZXNfdHJhdmFpbGxldXJzXCJdXG4gICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMjg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTAyODsgZW5kX2NvbHVtbj03NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGxvZ2VtZW50X2ZveWVyX2pldW5lc190cmF2YWlsbGV1cnNfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwMjg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTAyODsgZW5kX2NvbHVtbj03NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF90eXBlX2xvZ2VtZW50X2ZveWVyXzogVHlwZUxvZ2VtZW50Rm95ZXIudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIudHlwZV9sb2dlbWVudF9mb3llclwiXSB7aW9faW5wdXQ9T25seUlucHV0O1xuICAgICAgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfdHlwZV9sb2dlbWVudF9mb3llcilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDI2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwMjY7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0eXBlX2xvZ2VtZW50X2ZveWVyXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDI2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwMjY7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfZGF0ZV9jb252ZW50aW9ubmVtZW50XzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIuZGF0ZV9jb252ZW50aW9ubmVtZW50XCJdXG4gICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMzA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTAzMDsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY29udmVudGlvbm5lbWVudF8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAzMDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDMwOyBlbmRfY29sdW1uPTYxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc186IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5yZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzXCJdXG4gICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9tb25leSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDM0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwMzQ7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwMzQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTAzNDsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIubm9tYnJlX3BlcnNvbm5lc1/DoF9jaGFyZ2VcIl1cbiAgICAgIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2ludGVnZXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAzNjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDM2OyBlbmRfY29sdW1uPTY1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTAzNjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDM2OyBlbmRfY29sdW1uPTY1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxcIl1cbiAgICAgIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX1cbiAgICAgIChlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDM4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwMzg7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwMzg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTAzODsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF96b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLnpvbmVcIl1cbiAgICAgIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX3pvbmVfZF9oYWJpdGF0aW9uKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNDA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA0MDsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHpvbmVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNDA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTA0MDsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIuZGF0ZV9jb3VyYW50ZVwiXSB7aW9faW5wdXQ9T25seUlucHV0O1xuICAgICAgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDQxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNDE7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDQxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNDE7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfcmVkZXZhbmNlXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLnJlZGV2YW5jZVwiXSB7aW9faW5wdXQ9T25seUlucHV0O1xuICAgICAgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAzMjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDMyOyBlbmRfY29sdW1uPTQ5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmVkZXZhbmNlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDMyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwMzI7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfY29uZGl0aW9uXzJfZHVfODMyXzI1XzogdW5pdCAtPiBib29sID0gXG4gICAgZnVuIChfOiB1bml0KSAtPiAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5jb25kaXRpb25fMl9kdV84MzJfMjVcIl1cbiAgICAgIHtpb19pbnB1dD1SZWVudHJhbnQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00Nzg3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ3ODc7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2xpbWl0YXRpb25fbWFqb3JhdGlvbl9wZXJzb25uZXNfYV9jaGFyZ2VfOiBcbiAgICB1bml0IC0+IGJvb2wgPSBmdW4gKF86IHVuaXQpIC0+IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLmxpbWl0YXRpb25fbWFqb3JhdGlvbl9wZXJzb25uZXNfw6BfY2hhcmdlXCJdXG4gICAgICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9UmVlbnRyYW50OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9ib29sKVxuICAgICAgICAgICAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFxuICAgICAgICAgICAgICAgICAgICAgICAgW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NjAxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTYwNzsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg2MS04XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBWSSA6IERpc3Bvc2l0aW9uIHBhcnRpY3VsacOocmVzIMOgIGwnb3V0cmUtbWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDkpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIzKSAoNCkgKDUpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50TWFydGluIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWF5b3R0ZSBfIC0+IHRydWUpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzI1XzogdW5pdCAtPiBkZWNpbWFsID0gXG4gICAgZnVuIChfOiB1bml0KSAtPiAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5uX25vbWJyZV9wYXJ0c19kODMyXzI1XCJdXG4gICAgICB7aW9faW5wdXQ9UmVlbnRyYW50OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9kZWNpbWFsKSAocmFpc2VcbiAgICAgIEVtcHR5RXJyb3IpKSBpblxuICBsZXQgcmVzdWx0XzogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyXCI7XG4gICAgICBcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llclwiO1xuICAgICAgXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCJdXG4gICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcilcbiAgICAoe0NhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnJlc2lkZW5jZV9pbiA9XG4gICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3Jlc2lkZW5jZV87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLmxvZ2VtZW50X2ZveWVyX2pldW5lc190cmF2YWlsbGV1cnNfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2xvZ2VtZW50X2ZveWVyX2pldW5lc190cmF2YWlsbGV1cnNfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi50eXBlX2xvZ2VtZW50X2ZveWVyX2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF90eXBlX2xvZ2VtZW50X2ZveWVyXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uZGF0ZV9jb252ZW50aW9ubmVtZW50X2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9kYXRlX2NvbnZlbnRpb25uZW1lbnRfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc187XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnpvbmVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3pvbmVfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ucmVkZXZhbmNlX2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9yZWRldmFuY2VfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLmxpbWl0YXRpb25fbWFqb3JhdGlvbl9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2xpbWl0YXRpb25fbWFqb3JhdGlvbl9wZXJzb25uZXNfYV9jaGFyZ2VfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5uX25vbWJyZV9wYXJ0c19kODMyXzI1X2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzI1X30pKSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2NvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMjVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMjUgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2NvZWZmaWNpZW50X3JfZDgzMl8yNV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuY29lZmZpY2llbnRfcl9kODMyXzI1IGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzI1XzogZGVjaW1hbCA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjUgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2VxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfcGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIucGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmVxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9zZXVpbF86IGRlY2ltYWwgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuYWlkZV9maW5hbGVfZm9ybXVsZSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxfOiBcbiAgICBtb25leSAtPiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgaW5cbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwiY2FsY3VsX25vbWJyZV9wYXJ0cy5kYXRlX2NvdXJhbnRlXCJdXG4gICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDgxNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODE3OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ4MTc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDgxNzsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiOyBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV86IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfbm9tYnJlX3BhcnRzLmNvbmRpdGlvbl8yX2R1XzgzMl8yNVwiXSB7aW9faW5wdXQ9T25seUlucHV0O1xuICAgICAgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4MTY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDgxNjsgZW5kX2NvbHVtbj01NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ4MTY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDgxNjsgZW5kX2NvbHVtbj01NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiOyBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgIFwiY2FsY3VsX25vbWJyZV9wYXJ0cy5ub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZVwiXVxuICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfaW50ZWdlcilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4MTI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDgxMjsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00ODEyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4MTI7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjsgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF9ub21icmVfcGFydHMuc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXCJdXG4gICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgICAoZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00ODE0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4MTQ7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00ODE0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4MTQ7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjsgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9saW1pdGF0aW9uX21ham9yYXRpb25fcGVyc29ubmVzX2FfY2hhcmdlXzogXG4gICAgdW5pdCAtPiBib29sID0gZnVuIChfOiB1bml0KSAtPiAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX25vbWJyZV9wYXJ0cy5saW1pdGF0aW9uX21ham9yYXRpb25fcGVyc29ubmVzX8OgX2NoYXJnZVwiXVxuICAgICAgICAgICAgICAgICAgICAge2lvX2lucHV0PVJlZW50cmFudDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfYm9vbClcbiAgICAgICAgICAgICAgICAgICAgIChyYWlzZSBFbXB0eUVycm9yKSkgaW5cbiAgbGV0IHJlc3VsdF86IENhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJjYWxjdWxfbm9tYnJlX3BhcnRzXCI7XG4gICAgICBcIkNhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcImNhbGN1bF9ub21icmVfcGFydHNcIjtcbiAgICAgIFwiQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJcIl0gY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyKVxuICAgICh7Q2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3RfZGF0ZV9jb3VyYW50ZV87XG4gICAgICAgIENhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4uY29uZGl0aW9uXzJfZHVfODMyXzI1X2luID1cbiAgICAgICAgICBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9jb25kaXRpb25fMl9kdV84MzJfMjVfO1xuICAgICAgICBDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llckluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgIGNhbGN1bF9ub21icmVfcGFydHNfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfO1xuICAgICAgICBDYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llckluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiA9XG4gICAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXztcbiAgICAgICAgQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXJJbi5saW1pdGF0aW9uX21ham9yYXRpb25fcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgICBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9saW1pdGF0aW9uX21ham9yYXRpb25fcGVyc29ubmVzX2FfY2hhcmdlX30pKSkgaW5cbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMjVfOiBkZWNpbWFsID0gcmVzdWx0Xy5DYWxjdWxOb21icmVQYXJ0TG9nZW1lbnRGb3llci5uX25vbWJyZV9wYXJ0c19kODMyXzI1IGluXG4gIGxldCBtdWx0aXBsaWNhdGV1cl9tYWpvcmF0aW9uX2NoYXJnZXNfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJtdWx0aXBsaWNhdGV1cl9tYWpvcmF0aW9uX2NoYXJnZXNcIl1cbiAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM0NDg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzQ1NjsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQXJ0aWNsZSA0NlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IDFlciBqYW52aWVyIDIwMjAgLSBBcnLDqnTDqSBkdSAzIGphbnZpZXIgMjAyMCByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IHBvdXIgbCdhbm7DqWUgMjAyMCBOT1IgOiBMT0dMMTkzNDAwNkFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZpdGUuTGFSZXVuaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGVjdGl2aXRlLk1heW90dGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2XCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaW1hbF9vZl9zdHJpbmcgXCI2LlwiKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI4ODg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yODk2OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFydGljbGUgNDZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IGR1IDFlciBvY3RvYnJlIDIwMjAgLSBBcnLDqnTDqSBkdSAyNSBzZXB0ZW1icmUgMjAyMCByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGwnYWlkZSDDoCBsJ2FjY2Vzc2lvbiBzb2NpYWxlIGV0IMOgIGxhIHNvcnRpZSBkZSBsJ2luc2FsdWJyaXTDqSBzcMOpY2lmaXF1ZSDDoCBsJ291dHJlLW1lciBOT1IgOiBMT0dMMjAyMDgzNUFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdXlhbmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTGFSZXVuaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWF5b3R0ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2XCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpbWFsX29mX3N0cmluZyBcIjYuXCIpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE3OTc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE4MDU7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0NlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyBlbiB2aWd1ZXVyIMOgIHBhcnRpciBkdSAxZXIgb2N0b2JyZSAyMDIxIC0gQXJyw6p0w6kgZHUgMjMgc2VwdGVtYnJlIDIwMjEgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsJ2FpZGUgw6AgbCdhY2Nlc3Npb24gc29jaWFsZSBldCDDoCBsYSBzb3J0aWUgZGUgbCdpbnNhbHVicml0w6kgc3DDqWNpZmlxdWUgw6AgbCdvdXRyZS1tZXIgTk9SIDogTE9HTDIxMjM0NTJBXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxKSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdXlhbmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50TWFydGluIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWV0cm9wb2xlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXlvdHRlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNlwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpbWFsX29mX3N0cmluZyBcIjYuXCIpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02NTk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY2NzsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0NlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgMWVyIGphbnZpZXIgMjAyMiAtIEFycsOqdMOpIGR1IDIwIGTDqWNlbWJyZSAyMDIxIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgcG91ciBsJ2FubsOpZSAyMDIyIE5PUiA6IExPR0wyMTM0NDc3QVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdXlhbmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5MYVJldW5pb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1heW90dGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjZcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpbWFsX29mX3N0cmluZyBcIjYuXCIpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTM7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQ2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgMWVyIGp1aWxsZXQgMjAyMiAtIEFycsOqdMOpIGR1IDI5IGp1aWxsZXQgMjAyMiByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IE5PUiA6IFRSRUwyMjIwNzQ4QSAtIEFycsOqdMOpIGR1IDE2IGFvw7t0IDIwMjIgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsJ2FpZGUgw6AgbCdhY2Nlc3Npb24gc29jaWFsZSBldCDDoCBsYSBzb3J0aWUgZGUgbCdpbnNhbHVicml0w6kgc3DDqWNpZmlxdWUgw6AgbCdvdXRyZS1tZXIgLSBOT1IgOiBUUkVMMjIyMDc0NEFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMykgKDEpICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5MYVJldW5pb24gXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50TWFydGluIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXlvdHRlIF8gLT4gdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNlwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkZWNpbWFsX29mX3N0cmluZyBcIjYuXCIpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYyNjsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjI2OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0MFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IDFlciBvY3RvYnJlIDIwMjEgLSBBcnLDqnTDqSBkdSAyMyBzZXB0ZW1icmUgMjAyMSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGwnYWlkZSDDoCBsJ2FjY2Vzc2lvbiBzb2NpYWxlIGV0IMOgIGxhIHNvcnRpZSBkZSBsJ2luc2FsdWJyaXTDqSBzcMOpY2lmaXF1ZSDDoCBsJ291dHJlLW1lciBOT1IgOiBMT0dMMjEyMzQ1MkFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX3RvcmF0X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQxNzA7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQxNzA7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0MFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBWSUkgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBvX3RvcmF0X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTkzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTk5MzsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfbWluaW1hbF9kZXBlbnNlX25ldHRlX2Q4NDJfMTdfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICBcIm1vbnRhbnRfbWluaW1hbF9kw6lwZW5zZV9uZXR0ZV9kODQyXzE3XCJdIHtpb19pbnB1dD1Ob0lucHV0O1xuICAgIGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDI5MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MjkwOyBlbmRfY29sdW1uPTUxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0NFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFZJSSA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlXyAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTApICgxKSkpKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE1MDBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTkyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTk5MjsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml8xNV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfMTVcIl1cbiAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTg2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQxODY7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgVklJIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMCkgKDEpKSkpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTAwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk5MTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05OTE7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X21pbmltYWxfYWlkZV9kODQyXzE1XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcIm1vbnRhbnRfbWluaW1hbF9haWRlX2Q4NDJfMTVcIl1cbiAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTk4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQxOTg7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgVklJIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxMCkgKDEpKSkpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTAwMFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05OTA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTkwOyBlbmRfY29sdW1uPTM5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZXF1aXZhbGVuY2VfbG95ZXJfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwiw6lxdWl2YWxlbmNlX2xveWVyXCJdXG4gICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQyMTY7IHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDIxNjsgZW5kX2NvbHVtbj03OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFZJSSA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVNSZWhhYmlsaXRlZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5QZXJzb25uZXNBZ2Vlc1NlbG9uM0RlRDg0Ml8xNiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5BdXRyZXNQZXJzb25uZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiODcwOFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzU1OVwiKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQyNTE7IHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDI1MjsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFZJSSA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTUmVoYWJpbGl0ZWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuUGVyc29ubmVzQWdlZXNTZWxvbjNEZUQ4NDJfMTYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5BdXRyZXNQZXJzb25uZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjEzNjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzMxOTZcIikpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDI2OTsgc3RhcnRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQyNzA7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgVklJIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNl9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTUmVoYWJpbGl0ZWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLlBlcnNvbm5lc0FnZWVzU2Vsb24zRGVEODQyXzE2IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5BdXRyZXNQZXJzb25uZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNzYwN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjczNjVcIikpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MjMzOyBzdGFydF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQyMzQ7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0M1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBWSUkgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNl9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5FdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VUyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5FdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VU1JlaGFiaWxpdGVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuUGVyc29ubmVzQWdlZXNTZWxvbjNEZUQ4NDJfMTYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuQXV0cmVzUGVyc29ubmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3NjA3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI3MzY1XCIpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTY1MTsgc3RhcnRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjUxOyBlbmRfY29sdW1uPTc5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgMWVyIG9jdG9icmUgMjAyMSAtIEFycsOqdMOpIGR1IDIzIHNlcHRlbWJyZSAyMDIxIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbCdhaWRlIMOgIGwnYWNjZXNzaW9uIHNvY2lhbGUgZXQgw6AgbGEgc29ydGllIGRlIGwnaW5zYWx1YnJpdMOpIHNww6ljaWZpcXVlIMOgIGwnb3V0cmUtbWVyIE5PUiA6IExPR0wyMTIzNDUyQVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5FdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VU1JlaGFiaWxpdGVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLlBlcnNvbm5lc0FnZWVzU2Vsb24zRGVEODQyXzE2IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkF1dHJlc1BlcnNvbm5lcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI4NDE0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEzMTAwXCIpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTY4ODsgc3RhcnRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjg5OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgMWVyIG9jdG9icmUgMjAyMSAtIEFycsOqdMOpIGR1IDIzIHNlcHRlbWJyZSAyMDIxIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbCdhaWRlIMOgIGwnYWNjZXNzaW9uIHNvY2lhbGUgZXQgw6AgbGEgc29ydGllIGRlIGwnaW5zYWx1YnJpdMOpIHNww6ljaWZpcXVlIMOgIGwnb3V0cmUtbWVyIE5PUiA6IExPR0wyMTIzNDUyQVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVNSZWhhYmlsaXRlZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5QZXJzb25uZXNBZ2Vlc1NlbG9uM0RlRDg0Ml8xNiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkF1dHJlc1BlcnNvbm5lcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDY0MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjA3M1wiKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNzA3OyBzdGFydF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTcwODsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyBlbiB2aWd1ZXVyIMOgIHBhcnRpciBkdSAxZXIgb2N0b2JyZSAyMDIxIC0gQXJyw6p0w6kgZHUgMjMgc2VwdGVtYnJlIDIwMjEgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsJ2FpZGUgw6AgbCdhY2Nlc3Npb24gc29jaWFsZSBldCDDoCBsYSBzb3J0aWUgZGUgbCdpbnNhbHVicml0w6kgc3DDqWNpZmlxdWUgw6AgbCdvdXRyZS1tZXIgTk9SIDogTE9HTDIxMjM0NTJBXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5FdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VUyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVNSZWhhYmlsaXRlZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuUGVyc29ubmVzQWdlZXNTZWxvbjNEZUQ4NDJfMTYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkF1dHJlc1BlcnNvbm5lcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3MDEyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjQ0MFwiKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2Njk7IHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTY3MDsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IDFlciBvY3RvYnJlIDIwMjEgLSBBcnLDqnTDqSBkdSAyMyBzZXB0ZW1icmUgMjAyMSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGwnYWlkZSDDoCBsJ2FjY2Vzc2lvbiBzb2NpYWxlIGV0IMOgIGxhIHNvcnRpZSBkZSBsJ2luc2FsdWJyaXTDqSBzcMOpY2lmaXF1ZSDDoCBsJ291dHJlLW1lciBOT1IgOiBMT0dMMjEyMzQ1MkFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTUmVoYWJpbGl0ZWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5QZXJzb25uZXNBZ2Vlc1NlbG9uM0RlRDg0Ml8xNiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5BdXRyZXNQZXJzb25uZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTcwMTJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjY0NDBcIikpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNzQwOyBzdGFydF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI3NDA7IGVuZF9jb2x1bW49Nzk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0M1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyBlbiB2aWd1ZXVyIMOgIHBhcnRpciBkdSBkdSAxZXIgb2N0b2JyZSAyMDIwIC0gQXJyw6p0w6kgZHUgMjUgc2VwdGVtYnJlIDIwMjAgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsJ2FpZGUgw6AgbCdhY2Nlc3Npb24gc29jaWFsZSBldCDDoCBsYSBzb3J0aWUgZGUgbCdpbnNhbHVicml0w6kgc3DDqWNpZmlxdWUgw6AgbCdvdXRyZS1tZXIgTk9SIDogTE9HTDIwMjA4MzVBXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5FdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VU1JlaGFiaWxpdGVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLlBlcnNvbm5lc0FnZWVzU2Vsb24zRGVEODQyXzE2IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkF1dHJlc1BlcnNvbm5lcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI4Mzc5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEzMDQ1XCIpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjc3Nzsgc3RhcnRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNzc4OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgZHUgMWVyIG9jdG9icmUgMjAyMCAtIEFycsOqdMOpIGR1IDI1IHNlcHRlbWJyZSAyMDIwIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbCdhaWRlIMOgIGwnYWNjZXNzaW9uIHNvY2lhbGUgZXQgw6AgbGEgc29ydGllIGRlIGwnaW5zYWx1YnJpdMOpIHNww6ljaWZpcXVlIMOgIGwnb3V0cmUtbWVyIE5PUiA6IExPR0wyMDIwODM1QVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTUmVoYWJpbGl0ZWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuUGVyc29ubmVzQWdlZXNTZWxvbjNEZUQ4NDJfMTYgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5BdXRyZXNQZXJzb25uZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjA1NTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE5MzlcIikpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjc5Njsgc3RhcnRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI3OTc7IGVuZF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgZHUgMWVyIG9jdG9icmUgMjAyMCAtIEFycsOqdMOpIGR1IDI1IHNlcHRlbWJyZSAyMDIwIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbCdhaWRlIMOgIGwnYWNjZXNzaW9uIHNvY2lhbGUgZXQgw6AgbGEgc29ydGllIGRlIGwnaW5zYWx1YnJpdMOpIHNww6ljaWZpcXVlIMOgIGwnb3V0cmUtbWVyIE5PUiA6IExPR0wyMDIwODM1QVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5FdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VU1JlaGFiaWxpdGVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5QZXJzb25uZXNBZ2Vlc1NlbG9uM0RlRDg0Ml8xNiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuQXV0cmVzUGVyc29ubmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTY5NDFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2MzI5XCIpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjc1ODsgc3RhcnRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNzU5OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgZHUgMWVyIG9jdG9icmUgMjAyMCAtIEFycsOqdMOpIGR1IDI1IHNlcHRlbWJyZSAyMDIwIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbCdhaWRlIMOgIGwnYWNjZXNzaW9uIHNvY2lhbGUgZXQgw6AgbGEgc29ydGllIGRlIGwnaW5zYWx1YnJpdMOpIHNww6ljaWZpcXVlIMOgIGwnb3V0cmUtbWVyIE5PUiA6IExPR0wyMDIwODM1QVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTUmVoYWJpbGl0ZWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5QZXJzb25uZXNBZ2Vlc1NlbG9uM0RlRDg0Ml8xNiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5BdXRyZXNQZXJzb25uZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTY5NDFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjYzMjlcIikpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk5NTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT05OTU7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VcIl1cbiAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PXRydWV9IChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NzkwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ3OTA7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjVfc2V1aWxfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05OTQ7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9OTk0OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUuZGF0ZV9jb3VyYW50ZVwiXVxuICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDQ1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNDU7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMDQ1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNDU7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUucmVzc291cmNlc19tw6luYWdlX2Fycm9uZGllc1wiXVxuICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00ODA5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4MDk7IGVuZF9jb2x1bW49NzU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc18pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00ODA5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4MDk7IGVuZF9jb2x1bW49NzU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjsgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV86IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlLmNvbmRpdGlvbl8yX2R1XzgzMl8yNVwiXVxuICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4MDg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDgwODsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ4MDg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDgwODsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiOyBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV86IGRlY2ltYWwgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVcIl1cbiAgICAgIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2RlY2ltYWwpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00ODE5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4MTk7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzI1XykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ4MTk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDgxOTsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiOyBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZS50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwiY2FsY3VsX8OpcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZVwiO1xuICAgICAgXCJDYWxjdWzDiXF1aXZhbGVuY2VMb3llck1pbmltYWxlXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVcIjtcbiAgICAgIFwiQ2FsY3Vsw4lxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZVwiXSBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUpXG4gICAgKHtDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICAgQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luID1cbiAgICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc187XG4gICAgICAgIENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9jb25kaXRpb25fMl9kdV84MzJfMjVfO1xuICAgICAgICBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5uX25vbWJyZV9wYXJ0c19kODMyXzI1X2luID1cbiAgICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMjVffSkpKSBpblxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9tb250YW50XzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZS5tb250YW50IGluXG4gIGxldCBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwibW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzXCJdXG4gICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0MDk7IHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NDE2OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0NlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElYIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBvdXRyZS1tZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMykgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5MYVJldW5pb24gXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50TWFydGluIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXlvdHRlIF8gLT4gdHJ1ZSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzY3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiOTY5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxpY2F0ZXVyX21ham9yYXRpb25fY2hhcmdlc18pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mjk5OyBzdGFydF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzA2OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0NlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IDFlciBqdWlsbGV0IDIwMjIgLSBBcnLDqnTDqSBkdSAyOSBqdWlsbGV0IDIwMjIgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBOT1IgOiBUUkVMMjIyMDc0OEEgLSBBcnLDqnTDqSBkdSAxNiBhb8O7dCAyMDIyIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbCdhaWRlIMOgIGwnYWNjZXNzaW9uIHNvY2lhbGUgZXQgw6AgbGEgc29ydGllIGRlIGwnaW5zYWx1YnJpdMOpIHNww6ljaWZpcXVlIMOgIGwnb3V0cmUtbWVyIC0gTk9SIDogVFJFTDIyMjA3NDRBXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjMpICgxKSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3V5YW5lIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWV0cm9wb2xlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1heW90dGUgXyAtPiB0cnVlKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbW9udGFudF8gOiBtb25leSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3NjdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjk2OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbGltaXRlXyA6IG1vbmV5ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzc2N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiOTY5XCIpIChkZWNpbWFsX29mX3N0cmluZyBcIjYuXCIpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmIChvX2d0X21vbl9tb24gbW9udGFudF8gbGltaXRlXykgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXRlXyBlbHNlIG1vbnRhbnRfKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTk1Mzsgc3RhcnRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTk2MDsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0NlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgMWVyIG9jdG9icmUgMjAyMSAtIEFycsOqdMOpIGR1IDIzIHNlcHRlbWJyZSAyMDIxIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbCdhaWRlIMOgIGwnYWNjZXNzaW9uIHNvY2lhbGUgZXQgw6AgbGEgc29ydGllIGRlIGwnaW5zYWx1YnJpdMOpIHNww6ljaWZpcXVlIMOgIGwnb3V0cmUtbWVyIE5PUiA6IExPR0wyMTIzNDUyQVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoMSkgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdXlhbmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTGFSZXVuaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50TWFydGluIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXlvdHRlIF8gLT4gdHJ1ZSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBtb250YW50XyA6IG1vbmV5ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2NDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI5MzZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbGltaXRlXyA6IG1vbmV5ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2NDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI5MzZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiNi5cIikpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmIChvX2d0X21vbl9tb24gbW9udGFudF8gbGltaXRlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBsaW1pdGVfIGVsc2UgbW9udGFudF8pKSkpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04MTY7IHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04MjM7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQ2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgMWVyIGphbnZpZXIgMjAyMiAtIEFycsOqdMOpIGR1IDIwIGTDqWNlbWJyZSAyMDIxIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgcG91ciBsJ2FubsOpZSAyMDIyIE5PUiA6IExPR0wyMTM0NDc3QVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5MYVJldW5pb24gXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50TWFydGluIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXlvdHRlIF8gLT4gdHJ1ZSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IG1vbnRhbnRfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjQwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI5MzZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxpbWl0ZV8gOiBtb25leSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2NDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjkzNlwiKSAoZGVjaW1hbF9vZl9zdHJpbmcgXCI2LlwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZiAob19ndF9tb25fbW9uIG1vbnRhbnRfIGxpbWl0ZV8pIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0ZV8gZWxzZSBtb250YW50XykpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMwNDU7IHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMDUyOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0NlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IGR1IDFlciBvY3RvYnJlIDIwMjAgLSBBcnLDqnTDqSBkdSAyNSBzZXB0ZW1icmUgMjAyMCByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGwnYWlkZSDDoCBsJ2FjY2Vzc2lvbiBzb2NpYWxlIGV0IMOgIGxhIHNvcnRpZSBkZSBsJ2luc2FsdWJyaXTDqSBzcMOpY2lmaXF1ZSDDoCBsJ291dHJlLW1lciBOT1IgOiBMT0dMMjAyMDgzNUFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5MYVJldW5pb24gXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50TWFydGluIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXlvdHRlIF8gLT4gdHJ1ZSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IG1vbnRhbnRfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjI1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI5MzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxpbWl0ZV8gOiBtb25leSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2MjVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjkzMlwiKSAoZGVjaW1hbF9vZl9zdHJpbmcgXCI2LlwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZiAob19ndF9tb25fbW9uIG1vbnRhbnRfIGxpbWl0ZV8pIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0ZV8gZWxzZSBtb250YW50XykpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2MDU7IHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjEyOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0NlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IDFlciBqYW52aWVyIDIwMjAgLSBBcnLDqnTDqSBkdSAzIGphbnZpZXIgMjAyMCByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IHBvdXIgbCdhbm7DqWUgMjAyMCBOT1IgOiBMT0dMMTkzNDAwNkFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3V5YW5lIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWV0cm9wb2xlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1heW90dGUgXyAtPiB0cnVlKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbW9udGFudF8gOiBtb25leSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2MTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjkyOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbGltaXRlXyA6IG1vbmV5ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzYxNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiOTI5XCIpIChkZWNpbWFsX29mX3N0cmluZyBcIjYuXCIpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmIChvX2d0X21vbl9tb24gbW9udGFudF8gbGltaXRlXykgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXRlXyBlbHNlIG1vbnRhbnRfKSkpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDE3Mzsgc3RhcnRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDE3MzsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFZJSSA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NjEyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NjEyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEyNzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxpY2F0ZXVyX21ham9yYXRpb25fY2hhcmdlc18pKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2Mjk7IHN0YXJ0X2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2Mjk7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0MFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyBlbiB2aWd1ZXVyIMOgIHBhcnRpciBkdSAxZXIgb2N0b2JyZSAyMDIxIC0gQXJyw6p0w6kgZHUgMjMgc2VwdGVtYnJlIDIwMjEgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsJ2FpZGUgw6AgbCdhY2Nlc3Npb24gc29jaWFsZSBldCDDoCBsYSBzb3J0aWUgZGUgbCdpbnNhbHVicml0w6kgc3DDqWNpZmlxdWUgw6AgbCdvdXRyZS1tZXIgTk9SIDogTE9HTDIxMjM0NTJBXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTQyMlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTQyMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMjI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsaWNhdGV1cl9tYWpvcmF0aW9uX2NoYXJnZXNfKSkpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yNzE1OyBzdGFydF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yNzE1OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgZHUgMWVyIG9jdG9icmUgMjAyMCAtIEFycsOqdMOpIGR1IDI1IHNlcHRlbWJyZSAyMDIwIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbCdhaWRlIMOgIGwnYWNjZXNzaW9uIHNvY2lhbGUgZXQgw6AgbGEgc29ydGllIGRlIGwnaW5zYWx1YnJpdMOpIHNww6ljaWZpcXVlIMOgIGwnb3V0cmUtbWVyIE5PUiA6IExPR0wyMDIwODM1QVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1Mzk5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1Mzk5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEyMjRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSkpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTk2OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTk5NjsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCJdIHtpb19pbnB1dD1Ob0lucHV0O1xuICAgIGlvX291dHB1dD1mYWxzZX0gKHVuZW1iZWRkYWJsZSlcbiAgICAoZnVuIChhaWRlX2ZpbmFsZV86IG1vbmV5KSAtPiBcbiAgICAgICB0cnlcbiAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4Mjk7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDgyOTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgKG9fbHRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBhaWRlX2ZpbmFsZV8gbW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzE1XylcbiAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBhaWRlX2ZpbmFsZV8gbW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzE1XykpKVxuICAgICAgIHdpdGhcbiAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMTA7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9MTAxMDsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGxveWVyX21pbmltYWxfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwibG95ZXJfbWluaW1hbFwiXSB7aW9faW5wdXQ9Tm9JbnB1dDtcbiAgICBpb19vdXRwdXQ9dHJ1ZX0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00ODIxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4MjE7IGVuZF9jb2x1bW49Mjc7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X21vbnRhbnRfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05OTc7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9OTk3OyBlbmRfY29sdW1uPTI1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXVxuICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9ZmFsc2V9ICh1bmVtYmVkZGFibGUpXG4gICAgKGZ1biAoYWxsb2NhdGlvbl9tZW5zdWVsbGVfOiBtb25leSkgLT4gXG4gICAgICAgdHJ5XG4gICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00OTQxOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ5NDE7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgb19zdWJfbW9uX21vblxuICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBlcXVpdmFsZW5jZV9sb3llcl9cbiAgICAgICAgICAgICAgICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzXykgYWxsb2NhdGlvbl9tZW5zdWVsbGVfKSlcbiAgICAgICB3aXRoXG4gICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05ODY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTg2OyBlbmRfY29sdW1uPTMzO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCJdXG4gICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ3Njk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDc2OTsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAob19zdWJfbW9uX21vblxuICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vbiBlcXVpdmFsZW5jZV9sb3llcl9cbiAgICAgICAgICAgICAgICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzXykgbG95ZXJfbWluaW1hbF8pXG4gICAgICAgICAgICAgIGNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwMDc7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MTAwNzsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFiYXR0ZW1lbnRfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdXG4gICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKHVuZW1iZWRkYWJsZSlcbiAgICAoZnVuIChhbGxvY2F0aW9uX21lbnN1ZWxsZV86IG1vbmV5KSAtPiBcbiAgICAgICB0cnlcbiAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ5NTA7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDk1MDsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgKG9fbHRfbW9uX21vbiAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl0gKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjsgXCJvdXRwdXRcIl0ge2lvX2lucHV0PU5vSW5wdXQ7XG4gICAgICAgICAgICAgICAgICAgIGlvX291dHB1dD10cnVlfSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdIGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfKVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgYWxsb2NhdGlvbl9tZW5zdWVsbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICBtb250YW50X21pbmltYWxfZGVwZW5zZV9uZXR0ZV9kODQyXzE3XykgdGhlblxuICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBtb250YW50X21pbmltYWxfZGVwZW5zZV9uZXR0ZV9kODQyXzE3X1xuICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl0gKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjsgXCJvdXRwdXRcIl0ge2lvX2lucHV0PU5vSW5wdXQ7XG4gICAgICAgICAgICAgICAgICAgIGlvX291dHB1dD10cnVlfSAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdIGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfKVxuICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgYWxsb2NhdGlvbl9tZW5zdWVsbGVfKSkpKSkpKSkgZWxzZVxuICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpXG4gICAgICAgd2l0aFxuICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9OTg4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTk4ODsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXSB7aW9faW5wdXQ9Tm9JbnB1dDtcbiAgICBpb19vdXRwdXQ9ZmFsc2V9ICh1bmVtYmVkZGFibGUpXG4gICAgKGZ1biAoYWlkZV9maW5hbGVfOiBtb25leSkgLT4gXG4gICAgICAgdHJ5XG4gICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00ODQzOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ4NDM7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDMgOiBMb2dlbWVudHMtZm95ZXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0ge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfVxuICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXVxuICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXylcbiAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgIFwiaW5wdXQwXCJdIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX1cbiAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgYWlkZV9maW5hbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIChsZXQgYWJhdHRlbWVudF8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl1cbiAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgIFwiYWJhdHRlbWVudF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl1cbiAgICAgICAgICAgICAgICAgIGFiYXR0ZW1lbnRfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV8pXG4gICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgYWlkZV9maW5hbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgIChvX2x0X21vbl9tb24gKG9fc3ViX21vbl9tb24gYWlkZV9maW5hbGVfIGFiYXR0ZW1lbnRfKVxuICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIGFpZGVfZmluYWxlXyBhYmF0dGVtZW50XykpKSkpKVxuICAgICAgIHdpdGhcbiAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMTE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9MTAxMTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXCJdXG4gICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKHVuZW1iZWRkYWJsZSlcbiAgICAoZnVuIChhaWRlX2ZpbmFsZV86IG1vbmV5KSAtPiBcbiAgICAgICB0cnlcbiAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4NjE7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDg2MTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXVxuICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9dHJ1ZX1cbiAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdXG4gICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2RlcGVuc2VfbmV0dGVfbWluaW1hbGVfKVxuICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgIFwiaW5wdXQwXCJdIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX1cbiAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgYWlkZV9maW5hbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICggaWYgKG9fZ3RfbW9uX21vbiBhaWRlX2ZpbmFsZV8gcmVkZXZhbmNlXykgdGhlbiByZWRldmFuY2VfXG4gICAgICAgICAgICAgICAgICBlbHNlIGFpZGVfZmluYWxlXykpKSlcbiAgICAgICB3aXRoXG4gICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDEyOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTEwMTI7IGVuZF9jb2x1bW49MTk7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl1cbiAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAodW5lbWJlZGRhYmxlKVxuICAgIChmdW4gKGFpZGVfZmluYWxlXzogbW9uZXkpIC0+IFxuICAgICAgIHRyeVxuICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDg3NTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICBlbmRfbGluZT00ODc1OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTE1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX3JlZGV2YW5jZVwiXVxuICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX3JlZGV2YW5jZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXCJdXG4gICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX3JlZGV2YW5jZV8pXG4gICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkZXZhbmNlXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgIGFpZGVfZmluYWxlXykpKSkpKSlcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAobGV0IGNyZHNfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwib3V0cHV0XCJdIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9dHJ1ZX1cbiAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiXSBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb250YW50XylcbiAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIjsgXCJpbnB1dDBcIl0ge2lvX2lucHV0PU9ubHlJbnB1dDtcbiAgICAgICAgICAgICAgICAgIGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX21vbmV5KSBhaWRlX2ZpbmFsZV8pKSkpKSkpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgKGxldCBhaWRlX2ZpbmFsZV9tb2luc19jcmRzX2Fycm9uZGllXyA6IG1vbmV5ID1cbiAgICAgICAgICAgICAgICAgIChvX3JvdW5kX21vblxuICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gKG9fc3ViX21vbl9tb24gYWlkZV9maW5hbGVfIGNyZHNfKVxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUwXCIpKSlcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAob19ndGVfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gYWlkZV9maW5hbGVfbW9pbnNfY3Jkc19hcnJvbmRpZV8gY3Jkc18pXG4gICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gYWlkZV9maW5hbGVfbW9pbnNfY3Jkc19hcnJvbmRpZV8gY3Jkc18pIGVsc2VcbiAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSkpKSkpXG4gICAgICAgd2l0aFxuICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTAxMzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT0xMDEzOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250ZWVfZW5fY2hhcmdlX3NhaW50X3BpZXJyZV9taXF1ZWxvbl86IFxuICAgIG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250w6llX2VuX2NoYXJnZV9zYWludF9waWVycmVfbWlxdWVsb25cIl1cbiAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAodW5lbWJlZGRhYmxlKVxuICAgIChmdW4gKGFpZGVfZmluYWxlXzogbW9uZXkpIC0+IFxuICAgICAgIHRyeVxuICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2F1dHJlc19zb3VyY2VzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM5OTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICBlbmRfbGluZT0zOTk7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDIxLTE3NTAgZHUgMjEgZMOpY2VtYnJlIDIwMjEgcG9ydGFudCBkaXZlcnNlcyBtZXN1cmVzIHN1ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IHJlbGF0aWYgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCDDoCBTYWludC1QaWVycmUtZXQtTWlxdWVsb25cIl19XG4gICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl1cbiAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0ge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfVxuICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCJdXG4gICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaV8pXG4gICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCI7XG4gICAgICAgICAgICAgICAgICAgIFwiaW5wdXQwXCJdIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX1cbiAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgYWlkZV9maW5hbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIChtb250ZWVfZW5fY2hhcmdlX3NhaW50X3BpZXJyZV9taXF1ZWxvbl8gYWlkZV9maW5hbGVfXG4gICAgICAgICAgICAgICAgICByZXNpZGVuY2VfIGRhdGVfY291cmFudGVfKSkpKVxuICAgICAgIHdpdGhcbiAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTEwMjA7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9MTAyMDsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRhbnRfbWluaW1hbFwiXSB7aW9faW5wdXQ9Tm9JbnB1dDtcbiAgICBpb19vdXRwdXQ9dHJ1ZX0gKHVuZW1iZWRkYWJsZSlcbiAgICAoZnVuIChhaWRlX2ZpbmFsZV86IG1vbmV5KSAtPiBcbiAgICAgICB0cnlcbiAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4OTY7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDg5NjsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250w6llX2VuX2NoYXJnZV9zYWludF9waWVycmVfbWlxdWVsb25cIl1cbiAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250w6llX2VuX2NoYXJnZV9zYWludF9waWVycmVfbWlxdWVsb25cIjtcbiAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0ge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfVxuICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udMOpZV9lbl9jaGFyZ2Vfc2FpbnRfcGllcnJlX21pcXVlbG9uXCJdXG4gICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRlZV9lbl9jaGFyZ2Vfc2FpbnRfcGllcnJlX21pcXVlbG9uXylcbiAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250w6llX2VuX2NoYXJnZV9zYWludF9waWVycmVfbWlxdWVsb25cIjtcbiAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl0ge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfVxuICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBhaWRlX2ZpbmFsZV8pKSkpKSkpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgKCBpZiAob19sdF9tb25fbW9uIGFpZGVfZmluYWxlXyBtb250YW50X21pbmltYWxfYWlkZV9kODQyXzE1XylcbiAgICAgICAgICAgICAgICAgIHRoZW4gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikgZWxzZSBhaWRlX2ZpbmFsZV8pKSkpXG4gICAgICAgd2l0aFxuICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MTAyMTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT0xMDIxOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICB7Q2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlID1cbiAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlXztcbiAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuZXF1aXZhbGVuY2VfbG95ZXIgPSBlcXVpdmFsZW5jZV9sb3llcl87XG4gICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlcyA9XG4gICAgICAgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzXztcbiAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIubG95ZXJfbWluaW1hbCA9IGxveWVyX21pbmltYWxfO1xuICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5haWRlX2ZpbmFsZV9mb3JtdWxlID0gYWlkZV9maW5hbGVfZm9ybXVsZV87XG4gICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsX31cblxubGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW46IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnQpIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnQgPVxuICBsZXQgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfOiBtb25leSA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfaW4gaW5cbiAgbGV0IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luIGluXG4gIGxldCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luIGluXG4gIGxldCB6b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnpvbmVfaW4gaW5cbiAgbGV0IHJlc2lkZW5jZV86IENvbGxlY3Rpdml0ZS50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5yZXNpZGVuY2VfaW4gaW5cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCBtZW5zdWFsaXRlX3ByaW5jaXBhbGVfOiBtb25leSA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubWVuc3VhbGl0ZV9wcmluY2lwYWxlX2luIGluXG4gIGxldCBzaXR1YXRpb25fcjgyMl8xMV8xM18xN186IGJvb2wgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnNpdHVhdGlvbl9yODIyXzExXzEzXzE3X2luIGluXG4gIGxldCBkYXRlX3NpZ25hdHVyZV9wcmV0XzogZGF0ZSA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9zaWduYXR1cmVfcHJldF9pbiBpblxuICBsZXQgdHlwZV90cmF2YXV4X2xvZ2VtZW50XzogVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LnQgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9pbiBpblxuICBsZXQgbG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlXzogYm9vbCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlX2luIGluXG4gIGxldCBkYXRlX2VudHJlZV9sb2dlbWVudF86IGRhdGUgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfZW50cmVlX2xvZ2VtZW50X2luIGluXG4gIGxldCBjaGFyZ2VzX21lbnN1ZWxsZXNfcHJldF86IG1vbmV5ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5jaGFyZ2VzX21lbnN1ZWxsZXNfcHJldF9pbiBpblxuICBsZXQgY29wcm9wcmlldGVfOiBib29sID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5jb3Byb3ByaWV0ZV9pbiBpblxuICBsZXQgb3BlcmF0aW9uc19sb2dlbWVudF9ldm9sdXRpZnNfc29jaWF1eF9hY2Nlc3Npb25fcHJvcHJpZXRlX2FpZGVlX19ldGF0XzogYm9vbCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ub3BlcmF0aW9uc19sb2dlbWVudF9ldm9sdXRpZnNfc29jaWF1eF9hY2Nlc3Npb25fcHJvcHJpZXRlX2FpZGVlX0V0YXRfaW4gaW5cbiAgbGV0IHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwidGF1eF9mcmFuY3NfdmVyc19ldXJvc1wiXSB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PWZhbHNlfVxuICAgIChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXV0cmVzX3NvdXJjZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzMwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTMzMDsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgcHJlbWllclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlLDqGdsZW1lbnQgKENFKSBuwrAyODY2Lzk4IGR1IGNvbnNlaWwgZHUgMzEgZMOpY2VtYnJlIDE5OTggY29uY2VybmFudCBsZXMgdGF1eCBkZSBjb252ZXJzaW9uIGVudHJlIGwnZXVybyBldCBsZXMgbW9ubmFpZXMgZGVzIMOJdGF0cyBtZW1icmVzIGFkb3B0YW50IGwnZXVyb1wiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fZGl2X3JhdF9yYXQgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMS5cIilcbiAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiNi41NTk1N1wiKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODk2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg5NjsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF9ub21icmVfcGFydHMubm9tYnJlX3BlcnNvbm5lc1/DoF9jaGFyZ2VcIl1cbiAgICAgIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2ludGVnZXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NDIzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ0MjM7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ0MjM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQyMzsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF9ub21icmVfcGFydHMuc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXCJdXG4gICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgICAoZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NDI1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ0MjU7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDQyNTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDI1OyBlbmRfY29sdW1uPTY0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjsgXCJjYWxjdWxfbm9tYnJlX3BhcnRzXCI7XG4gICAgICBcIkNhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpw6l0w6lcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7IFwiY2FsY3VsX25vbWJyZV9wYXJ0c1wiO1xuICAgICAgXCJDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByacOpdMOpXCJdXG4gICAgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlKVxuICAgICh7Q2FsY3VsTm9tYnJlUGFydHNBY2Nlc3Npb25Qcm9wcmlldGVJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV87XG4gICAgICAgIENhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgICBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxffSkpKSBpblxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8xMV86IGRlY2ltYWwgPSByZXN1bHRfLkNhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMTEgaW5cbiAgbGV0IF86IHVuaXQgPSBpZiAoXG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTY1OyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTY1OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAoKSBlbHNlXG4gICAgICAgICAgICAgICAgICByYWlzZSAoQXNzZXJ0aW9uRmFpbGVkIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05NjU7IHN0YXJ0X2NvbHVtbj0xMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05NjU7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSBpblxuICBsZXQgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjb250cmlidXRpb25zX3NvY2lhbGVzLmRhdGVfY291cmFudGVcIl0ge2lvX2lucHV0PU9ubHlJbnB1dDtcbiAgICAgIGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTU5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk1OTsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NTk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTU5OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9saWV1XzogQ29sbGVjdGl2aXRlLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjb250cmlidXRpb25zX3NvY2lhbGVzLmxpZXVcIl0ge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfVxuICAgICAgKGVtYmVkX2NvbGxlY3Rpdml0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT05NjA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTYwOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJlc2lkZW5jZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTYwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk2MDsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY29udHJpYnV0aW9uc19zb2NpYWxlc1wiO1xuICAgICAgXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNcIjtcbiAgICAgIFwiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdXG4gICAgY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudClcbiAgICAoe0NvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICAgQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ubGlldV9pbiA9XG4gICAgICAgICAgY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfbGlldV99KSkpIGluXG4gIGxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2RvdF9tb250YW50XzogbW9uZXkgLT4gbW9uZXkgPSByZXN1bHRfLkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5tb250YW50IGluXG4gIGxldCBtdWx0aXBsaWNhdGV1cl9tYWpvcmF0aW9uX2NoYXJnZXNfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwibXVsdGlwbGljYXRldXJfbWFqb3JhdGlvbl9jaGFyZ2VzXCJdIHtpb19pbnB1dD1Ob0lucHV0O1xuICAgIGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX0gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNDMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM0NDE7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFydGljbGUgNDZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyBlbiB2aWd1ZXVyIMOgIHBhcnRpciBkdSAxZXIgamFudmllciAyMDIwIC0gQXJyw6p0w6kgZHUgMyBqYW52aWVyIDIwMjAgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBwb3VyIGwnYW5uw6llIDIwMjAgTk9SIDogTE9HTDE5MzQwMDZBXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5HdXlhbmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGVjdGl2aXRlLlNhaW50TWFydGluIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZpdGUuTWV0cm9wb2xlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5NYXlvdHRlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNlwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2ltYWxfb2Zfc3RyaW5nIFwiNi5cIikpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yODczO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjg4MTsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBcnRpY2xlIDQ2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyBlbiB2aWd1ZXVyIMOgIHBhcnRpciBkdSBkdSAxZXIgb2N0b2JyZSAyMDIwIC0gQXJyw6p0w6kgZHUgMjUgc2VwdGVtYnJlIDIwMjAgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsJ2FpZGUgw6AgbCdhY2Nlc3Npb24gc29jaWFsZSBldCDDoCBsYSBzb3J0aWUgZGUgbCdpbnNhbHVicml0w6kgc3DDqWNpZmlxdWUgw6AgbCdvdXRyZS1tZXIgTk9SIDogTE9HTDIwMjA4MzVBXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3V5YW5lIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWV0cm9wb2xlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1heW90dGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNlwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaW1hbF9vZl9zdHJpbmcgXCI2LlwiKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNzgyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNzkwOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgMWVyIG9jdG9icmUgMjAyMSAtIEFycsOqdMOpIGR1IDIzIHNlcHRlbWJyZSAyMDIxIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbCdhaWRlIMOgIGwnYWNjZXNzaW9uIHNvY2lhbGUgZXQgw6AgbGEgc29ydGllIGRlIGwnaW5zYWx1YnJpdMOpIHNww6ljaWZpcXVlIMOgIGwnb3V0cmUtbWVyIE5PUiA6IExPR0wyMTIzNDUyQVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoMSkgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3V5YW5lIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5MYVJldW5pb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWF5b3R0ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjZcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaW1hbF9vZl9zdHJpbmcgXCI2LlwiKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjQ0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02NTI7IGVuZF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IDFlciBqYW52aWVyIDIwMjIgLSBBcnLDqnTDqSBkdSAyMCBkw6ljZW1icmUgMjAyMSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IHBvdXIgbCdhbm7DqWUgMjAyMiBOT1IgOiBMT0dMMjEzNDQ3N0FcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3V5YW5lIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTGFSZXVuaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50TWFydGluIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXlvdHRlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI2XCIpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaW1hbF9vZl9zdHJpbmcgXCI2LlwiKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTMwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTM4OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0NlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IDFlciBqdWlsbGV0IDIwMjIgLSBBcnLDqnTDqSBkdSAyOSBqdWlsbGV0IDIwMjIgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBOT1IgOiBUUkVMMjIyMDc0OEEgLSBBcnLDqnTDqSBkdSAxNiBhb8O7dCAyMDIyIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbCdhaWRlIMOgIGwnYWNjZXNzaW9uIHNvY2lhbGUgZXQgw6AgbGEgc29ydGllIGRlIGwnaW5zYWx1YnJpdMOpIHNww6ljaWZpcXVlIMOgIGwnb3V0cmUtbWVyIC0gTk9SIDogVFJFTDIyMjA3NDRBXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjMpICgxKSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdXlhbmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTGFSZXVuaW9uIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWF5b3R0ZSBfIC0+IHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjZcIikpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGVjaW1hbF9vZl9zdHJpbmcgXCI2LlwiKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1NTI7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU1MjsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyBlbiB2aWd1ZXVyIMOgIHBhcnRpciBkdSAxZXIgb2N0b2JyZSAyMDIxIC0gQXJyw6p0w6kgZHUgMjMgc2VwdGVtYnJlIDIwMjEgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsJ2FpZGUgw6AgbCdhY2Nlc3Npb24gc29jaWFsZSBldCDDoCBsYSBzb3J0aWUgZGUgbCdpbnNhbHVicml0w6kgc3DDqWNpZmlxdWUgw6AgbCdvdXRyZS1tZXIgTk9SIDogTE9HTDIxMjM0NTJBXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb190b3JhdF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKXxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDM1OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDM1OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgb190b3JhdF9pbnQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTkwNzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05MDc7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29lZmZpY2llbnRfZDg0Ml8xMl86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiOyBcImNvZWZmaWNpZW50X2Q4NDJfMTJcIl1cbiAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQxMzY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDEzNjsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV8gKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEwKSAoMSkpKSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkZWNpbWFsX29mX3N0cmluZyBcIjE2LjI1XCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTkwNTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05MDU7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29lZmZpY2llbnRfZDg0Ml8xMV86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiOyBcImNvZWZmaWNpZW50X2Q4NDJfMTFcIl1cbiAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQxMjQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDEyNDsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzhcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV8gKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEwKSAoMSkpKSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkZWNpbWFsX29mX3N0cmluZyBcIjAuMDIzNFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05MDQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTA0OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml8xMl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwibW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzEyXCJdIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDE0NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MTQ0OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlXyAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTApICgxKSkpKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM5MDAwMFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05MDM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9OTAzOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml8xMV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwibW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzExXCJdIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDExNjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MTE2OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlXyAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTApICgxKSkpKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE1MDBcIikpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTAyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTkwMjsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X21pbmltYWxfYWlkZV9kODQyXzZfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcIm1vbnRhbnRfbWluaW1hbF9haWRlX2Q4NDJfNlwiXSB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PWZhbHNlfVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQwNjE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDA2MTsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV8gKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEwKSAoMSkpKSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMDAwXCIpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTkwMTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT05MDE7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzZfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml82XCJdIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA1MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MDUwOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlXyAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTApICgxKSkpKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUwMFwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04OTM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODkzOyBlbmRfY29sdW1uPTM3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IF86IHVuaXQgPSBpZiAoXG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5MikgKDkpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTY2OyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTY2OyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAoKSBlbHNlXG4gICAgICAgICAgICAgICAgICByYWlzZSAoQXNzZXJ0aW9uRmFpbGVkIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05NjY7IHN0YXJ0X2NvbHVtbj0xMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05NjY7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSBpblxuICBsZXQgY29uZGl0aW9uX2Q4NDJfMTFfM186IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiOyBcImNvbmRpdGlvbl9kODQyXzExXzNcIl1cbiAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFxuICAgICAgICAgICAgICAgICAgICAgICAgIFt8fF0pIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjA3NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02MDgxOyBlbmRfY29sdW1uPTcyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBcnRpY2xlIEQ4NjItN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gSUlJIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IFNhaW50LUJhcnRow6lsZW15IGV0IFNhaW50LU1hcnRpblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICg5KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjMpICg0KSAoNSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZpdGUuTWF5b3R0ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25zX2xvZ2VtZW50X2V2b2x1dGlmc19zb2NpYXV4X2FjY2Vzc2lvbl9wcm9wcmlldGVfYWlkZWVfX2V0YXRfKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYwMjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj00O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02MDMzOyBlbmRfY29sdW1uPTcyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFydGljbGUgRDg2Mi03XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIElJSSA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IFNhaW50LUJhcnRow6lsZW15IGV0IFNhaW50LU1hcnRpblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMykgKDQpICg1KSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdXlhbmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50TWFydGluIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXlvdHRlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25zX2xvZ2VtZW50X2V2b2x1dGlmc19zb2NpYXV4X2FjY2Vzc2lvbl9wcm9wcmlldGVfYWlkZWVfX2V0YXRfKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTU3NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj00O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTU4MTsgZW5kX2NvbHVtbj03MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NjEtOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBWSSA6IERpc3Bvc2l0aW9uIHBhcnRpY3VsacOocmVzIMOgIGwnb3V0cmUtbWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDkpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMykgKDQpICg1KSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5MYVJldW5pb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWV0cm9wb2xlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXlvdHRlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uc19sb2dlbWVudF9ldm9sdXRpZnNfc29jaWF1eF9hY2Nlc3Npb25fcHJvcHJpZXRlX2FpZGVlX19ldGF0XykpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTQ5NDsgc3RhcnRfY29sdW1uPTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTUwMTsgZW5kX2NvbHVtbj03MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODYxLThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBWSSA6IERpc3Bvc2l0aW9uIHBhcnRpY3VsacOocmVzIMOgIGwnb3V0cmUtbWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjMpICg0KSAoNSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTGFSZXVuaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1heW90dGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbnNfbG9nZW1lbnRfZXZvbHV0aWZzX3NvY2lhdXhfYWNjZXNzaW9uX3Byb3ByaWV0ZV9haWRlZV9fZXRhdF8pKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ2NTI7IHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ2NTU7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5PYmplY3RpZkRlY2VuY2VMb2dlbWVudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlByZXZ1RGFuc0xpc3RlUjMyMV8xNSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LkFncmFuZGlyT3VSZW5kcmVIYWJpdGFibGVEMzMxXzYzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUGFzRGVUcmF2YXV4IF8gLT4gdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1Lk9iamVjdGlmRGVjZW5jZUxvZ2VtZW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QcmV2dURhbnNMaXN0ZVIzMjFfMTUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5BZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82MyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlBhc0RlVHJhdmF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5PYmplY3RpZkRlY2VuY2VMb2dlbWVudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlByZXZ1RGFuc0xpc3RlUjMyMV8xNSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LkFncmFuZGlyT3VSZW5kcmVIYWJpdGFibGVEMzMxXzYzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QYXNEZVRyYXZhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTkpICg3KSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTA2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTkwNjsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTA2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTkwNjsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDJfNl9iYXNlXzogZGF0ZSAtPiBpbnRlZ2VyIC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIl0ge2lvX2lucHV0PU5vSW5wdXQ7XG4gICAgaW9fb3V0cHV0PWZhbHNlfSAodW5lbWJlZGRhYmxlKVxuICAgIChmdW4gKGRhdGVfY2FsY3VsXzogZGF0ZSkgKG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyKSAtPiBcbiAgICAgICB0cnlcbiAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSlcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFxuICAgICAgICAgICAgICAgICAgICAgICAgIFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI5NTg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjk1ODsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5MikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk0KSAoNykgKDEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTU4NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTEzMDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDU1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxMTMwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTcxMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjIyOTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyODAwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjgwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEzOTMwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTcwNjAwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTg0NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTEyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTk3NzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwNDIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTg3MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjE4NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTkxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzA2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE1ODQwMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3MjYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTc5ODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE4NzAwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTQyMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA4NjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwODYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE4MjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzAwMzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMDAzOyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk0KSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTcpICg3KSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNjA0MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5MzQwMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwNzgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjEzNzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxOTYwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjU1MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjMwNTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzMDUwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwMDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTQwODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNzI1MDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODY3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5MzMwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTk5MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA2NTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyMTEwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjExMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTMwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEzMjAwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTgwMTAwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTc0NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODE4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTg5MTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE5NjQwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTA5MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjEwOTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTg0MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF1eF9mcmFuY3NfdmVyc19ldXJvc18pKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChcbiAgICAgICAgICAgICAgICAgICAgICAgICBbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDQ4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMwNDg7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDE5OTcpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5OCkgKDcpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2MzMwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk2OTAwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjExNjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTc2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjIzNjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyOTYwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzQ2MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjM0NjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA0MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNDMzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3NTYwMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5MDEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk2NjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwMzUwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTAyMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjI1MTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyNTEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE5NjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTM0NDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNjMwMDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNzc3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4NTEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTI1MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTk5OTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxNDcwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTQ3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxODcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFxuICAgICAgICAgICAgICAgICAgICAgICAgIFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMwOTM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzA5MzsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5OCkgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk5KSAoNykgKDEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTY3MjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDE2MDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTY3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyMjgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjkwMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjM1MTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0MDIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNDAyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDkwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE0NjcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTc5ODAwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk0NzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDE1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA4NDAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxNTIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzA1MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjMwNTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjAxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMzc2MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2NjkwMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4MjAwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTg5NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE5NzEwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDQ3MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjE5OTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxOTkwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE5MTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzEzODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTM4OyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk5KSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDApICg3KSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNjc0MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwMTgwMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxNjkwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjIzMDAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyOTIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzUzMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQwNDAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0MDQwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwOTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTQ2ODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODAwMDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxOTQ5MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIwMTcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDg2MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjE1NDAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzMDcwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzA3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEzNzcwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTY3MTAwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTgyMjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODk3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTk3MzAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwNDkwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjAxMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjIwMTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTkxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF1eF9mcmFuY3NfdmVyc19ldXJvc18pKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChcbiAgICAgICAgICAgICAgICAgICAgICAgICBbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTg2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMxODY7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDApICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMSkgKDcpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE2OTEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjAzODAwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjE5MTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjUyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjMxNTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzNzcwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNDI4MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQyODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjExMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNDgzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4MTgwMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5NjgwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjAzNzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIxMDcwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTc2MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjMzMDAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIzMzAwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwMzAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTM5MTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNjg4MDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxODQwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE5MTYwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTkzMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA2OTAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyMjMwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMjIzMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxOTMwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXV4X2ZyYW5jc192ZXJzX2V1cm9zXykpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFxuICAgICAgICAgICAgICAgICAgICAgICAgIFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMyMzQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzIzNDsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMSkgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDAyKSAoMSkgKDEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTcxMTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDYyMDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjE3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyNzkwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzQzMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjQwNjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjI0NTcwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyNDU3MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMTQwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE1MDEwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTg0MDAwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTk5MjAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMDYxMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjEzMjAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyMDIwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMzU4MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjM1ODAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjA1MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIxNDA4MDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE3MDgwMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjE4NjIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTkzOTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwMTcwMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDk0MDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjI1MDAwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIyNTAwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE5NTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhdXhfZnJhbmNzX3ZlcnNfZXVyb3NfKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzI4Mjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMjgyOyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDAyKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDIpICg3KSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjYwODRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxNDM1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM3OThcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0NzQzXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTcxOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjY3OVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzQ1N1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzQ1N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMyNjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMjg4M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjgwNTFcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDM2OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE0MjBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyNTAyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMzNTY5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1OTQ3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1OTQ3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzEyNVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIxNDY1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjAzOFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI4Mzg2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyOTU2MFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzA3NDlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE5MjNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzQzMDFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzQzMDFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyOTczXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFxuICAgICAgICAgICAgICAgICAgICAgICAgIFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMzMjk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzMyOTsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDAzKSAoNykgKDEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2Mzk3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTgxMlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0MjA0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTE2MFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzYxNDhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzcxMTlcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzc5MDZcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzc5MDZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzAxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjMxNThcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI4Mzg4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzA3MzJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxNzk3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjg5MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzk3MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjM3OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjM3OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMxNjNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMTcyM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjYzNTBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyODcyN1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjk5MTVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxMTE4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMyMzA2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0NzEzXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0NzEzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzAwOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChcbiAgICAgICAgICAgICAgICAgICAgICAgICBbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMzc2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMzNzY7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDMpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNSkgKDkpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjcxNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzIxOTRcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDYxNFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU1ODJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2NTgyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3NTY0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM4MzYxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM4MzYxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzM0MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIzNDM2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyODcyOVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxMTAxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjE3OVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzMyODdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzQzODBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzY4MTVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzY4MTVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMjAxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjE5ODRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2NjY2XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjkwNzJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwMjc0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTQ5MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMjY5NFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTEzMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTEzMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMwNDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQyMzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNDIzOyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA1KSAoOSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDcpICgxKSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjcxOTVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyNzczXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzUyMzdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2MjIyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzI0MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzODI0MFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTA1MVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTA1MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0MDFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMzg1OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjkyNDZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTY2MVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI3NThcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzODg2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0OTk5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3NDc4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3NDc4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzI1OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjIyMzgwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNzE0NlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI5NTk1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDgxOVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzIwNThcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzMyODJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU3NjJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU3NjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMTAwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFxuICAgICAgICAgICAgICAgICAgICAgICAgIFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM0NzA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzQ3MDsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwNykgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA4KSAoMSkgKDEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI3OTU2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzY5MVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2MjI0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzIzNlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzgyODNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzkzMTFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDAxNDRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDAxNDRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDk2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjQ1MjZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwMDY1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI1NDhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzNjc1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDg2NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTk3OVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzODUyN1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzODUyN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMzNTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyMzAwN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjc5MDZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDQyNFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE2ODJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyOTU2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0MjE0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2NzMzXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2NzMzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzE4N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChcbiAgICAgICAgICAgICAgICAgICAgICAgICBbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNTE3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM1MTc7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMDgpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAwOSkgKDEpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyODcyOFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQ2MjFcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzIyNFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzgyNjRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM5MzQwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwMzk2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQxMjUyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQxMjUyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU5MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI1MjAzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDg5NVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzNDQ2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDYwNFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU3OTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzY5NzJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzk1OTBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzk1OTBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDQyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjM2NDJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI4Njc2XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzEyNjRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyNTU2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzg2NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTE1OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzc3OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzc3OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjMyNzVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzU2NDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNTY0OyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDA5KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTApICgxKSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjk1NzVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NjQyXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzgzMjJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM5MzkzXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDUwMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTU4OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MjQ2OVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MjQ2OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2OThcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNTk0NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE4MDZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDQzM1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU2MjVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2ODUyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM4MDYzXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwNzU4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQwNzU4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU0NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI0MzM5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyOTUyMlwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyMTg2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzUxNlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQ4NjVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzYxOTVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzg4OTJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzg4OTJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzMzcyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFxuICAgICAgICAgICAgICAgICAgICAgICAgIFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2MTE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzYxMTsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDExKSAoMSkgKDEpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI5NjcwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTc1N1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM4NDQ1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzOTUxOVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDA2MDFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDE3MjFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDI2MDVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDI2MDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzEwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjYwMjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxOTA4XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQ2NDNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NzM5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjk3MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzODE4NVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDg4OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDg4OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1NTVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNDQxN1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjk2MTZcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjI4OVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM2MjNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0OTc3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2MzExXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM5MDE2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM5MDE2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzM4M1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChcbiAgICAgICAgICAgICAgICAgICAgICAgICBbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjU4OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM2NTg7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENhbGN1bCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnQgZW4gc2VjdGV1ciBhY2Nlc3Npb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTEpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMikgKDEpICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyOTk5NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzYxNDlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzODg2OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzk5NTRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQxMDc4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQyMTgwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQzMDc0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQzMDc0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzc1MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI2MzE1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMjI1OVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM0OTIzXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjEzMlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzczNzNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzg2MDVcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDEzMzhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDEzMzhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNTk0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjQ2ODZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI5OTQyXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI2NDRcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzOTkzXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTM2MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjcxMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTQ0NVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTQ0NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM0MjBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzcwNTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNzA1OyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDEyKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY2FsY3VsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTMpICgxKSAoMSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHpvbmVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUxIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzAyOTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2NTEwXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzkyNTdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwMzU0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MTQ4OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MjYwMlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzUwNVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzUwNVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3ODlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjU3OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzI1ODJcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNTI3MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY0OTNcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3NzUxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM4OTkxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQxNzUxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQxNzUxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzYzMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI0OTMzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDI0MVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMyOTcwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDMzM1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU3MTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzcwNzdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzk4MzlcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzk4MzlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNDU0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKSkpO1xuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFxuICAgICAgICAgICAgICAgICAgICAgICAgIFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM3NTI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mzc1MjsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jYWxjdWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxMykgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE0KSAoMTApICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMDk0N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzcyOTVcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDEwMVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDEyMjJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQyMzgxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQzNTE4XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0NDQwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0NDQwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzg3MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI3MTQ5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzI4M1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2MDMwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzI3OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzg1NjNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzk4MjlcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDI2NDlcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDI2NTlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzA4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjU0NjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMwODkxXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM2NzlcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1MDcxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjQ4NFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzg3NFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDY5NlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDY5NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1MjhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzc5OTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNzk5OyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE0KSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE1KSAoMTApICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTEyM1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzc1MDhcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDMzMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDE0NTdcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQyNjIzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQzNzY2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0NjkzXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0NjkzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzg5MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI3MzA0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzQ3M1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2MjM1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzQ5MFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzg3ODNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDAwNTZcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDI4OTJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDI4OTJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjU2MTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxMDY3XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM4NzFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1MjcxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjY5MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzODA5MFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDkyOFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDkyOFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1NDhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzg0Njsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zODQ2OyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE1KSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE3KSAoMTApICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTE0OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzc1MzhcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDM2MlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDE0OTBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQyNjU3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQzODAxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0NzI5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0NzI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzg5NVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI3MzI2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzUwMFwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2MjY0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzUyMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzg4MTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDAwODhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDI5MjZcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDI5MjZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzMyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjU2MzRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxMDkyXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzM4OThcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1Mjk5XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjcyMVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzODEyMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDk2MVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDk2MVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1NTFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzg5Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zODkzOyBlbmRfY29sdW1uPTYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE3KSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTApICgxKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMTM4MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzc4MjBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MDY2NVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDE4MDFcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQyOTc3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ0MTMwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ1MDY0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQ1MDY0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzkyNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjI3NTMxXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzMzc1MVwiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM2NTM2XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzgwMVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzkxMDVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDAzODlcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDMyNDhcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDMyNDhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzYwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjU4MjZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxMzI1XCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzQxNTJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM1NTY0XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjk5NlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzODQwNlwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTI2OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MTI2OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM1NzhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzk0MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zOTQwOyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NhbGN1bF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTApICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB6b25lX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFpvbmVESGFiaXRhdGlvbi5ab25lMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMxNDc2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNzkzM1wiKSkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjQwNzg3XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0MTkyN1wiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNDMxMDZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDQyNjJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDUyMDBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNDUyMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzOTM2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19zdWJfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI1XCIpKSkpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWm9uZURIYWJpdGF0aW9uLlpvbmUyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjc2MTRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjMzODUzXCIpKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY2NDZcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjJcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3OTE1XCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIzXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzOTIyMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MDUxMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzM3OFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI0MzM3OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3NzFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjVcIikpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNTkwNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzE0MTlcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNDI1NVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzU2NzBcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjM3MTA3XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM4NTIxXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI1XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQxMzkyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjQxMzkyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzU4OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNVwiKSkpKSkpKSkpKSkpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpKVxuICAgICAgIHdpdGhcbiAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg5MDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04OTA7IGVuZF9jb2x1bW49MTQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNcIl0ge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD1mYWxzZX1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTsgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ2MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDQ3MDsgZW5kX2NvbHVtbj0xNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQ2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElYIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBvdXRyZS1tZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMykgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3V5YW5lIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5MYVJldW5pb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWF5b3R0ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHJvcHJpZXRlXykpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE5MzhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzc2N1wiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI5NjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxpY2F0ZXVyX21ham9yYXRpb25fY2hhcmdlc18pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzY3OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgMWVyIGp1aWxsZXQgMjAyMiAtIEFycsOqdMOpIGR1IDI5IGp1aWxsZXQgMjAyMiByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IE5PUiA6IFRSRUwyMjIwNzQ4QSAtIEFycsOqdMOpIGR1IDE2IGFvw7t0IDIwMjIgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsJ2FpZGUgw6AgbCdhY2Nlc3Npb24gc29jaWFsZSBldCDDoCBsYSBzb3J0aWUgZGUgbCdpbnNhbHVicml0w6kgc3DDqWNpZmlxdWUgw6AgbCdvdXRyZS1tZXIgLSBOT1IgOiBUUkVMMjIyMDc0NEFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIzKSAoMSkgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3V5YW5lIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5MYVJldW5pb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWF5b3R0ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBtb250YW50XyA6IG1vbmV5ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTkzOFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNzY3XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjk2OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxpbWl0ZV8gOiBtb25leSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE5MzhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzc2N1wiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI5NjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCI2LlwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfbW9uX21vbiBtb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0ZV8pIHRoZW4gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXRlXyBlbHNlIG1vbnRhbnRfKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIwMTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yMDIwOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFydGljbGUgNDZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IDFlciBvY3RvYnJlIDIwMjEgLSBBcnLDqnTDqSBkdSAyMyBzZXB0ZW1icmUgMjAyMSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGwnYWlkZSDDoCBsJ2FjY2Vzc2lvbiBzb2NpYWxlIGV0IMOgIGxhIHNvcnRpZSBkZSBsJ2luc2FsdWJyaXTDqSBzcMOpY2lmaXF1ZSDDoCBsJ291dHJlLW1lciBOT1IgOiBMT0dMMjEyMzQ1MkFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoMSkgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5MYVJldW5pb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50TWFydGluIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXlvdHRlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IG1vbnRhbnRfIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbmV5ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxODcyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2NDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiOTM2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxpbWl0ZV8gOiBtb25leVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE4NzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzY0MFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI5MzZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjYuXCIpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXRlXykgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXRlXyBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250YW50XykpKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODc3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT04ODQ7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0NlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyBlbiB2aWd1ZXVyIMOgIHBhcnRpciBkdSAxZXIgamFudmllciAyMDIyIC0gQXJyw6p0w6kgZHUgMjAgZMOpY2VtYnJlIDIwMjEgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBwb3VyIGwnYW5uw6llIDIwMjIgTk9SIDogTE9HTDIxMzQ0NzdBXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTGFSZXVuaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1heW90dGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbW9udGFudF8gOiBtb25leSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE4NzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzY0MFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI5MzZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsaW1pdGVfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxODcyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2NDBcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiOTM2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiNi5cIikpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X21vbl9tb24gbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdGVfKSB0aGVuIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0ZV8gZWxzZSBtb250YW50XykpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTA1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMTEyOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgZHUgMWVyIG9jdG9icmUgMjAyMCAtIEFycsOqdMOpIGR1IDI1IHNlcHRlbWJyZSAyMDIwIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbCdhaWRlIMOgIGwnYWNjZXNzaW9uIHNvY2lhbGUgZXQgw6AgbGEgc29ydGllIGRlIGwnaW5zYWx1YnJpdMOpIHNww6ljaWZpcXVlIMOgIGwnb3V0cmUtbWVyIE5PUiA6IExPR0wyMDIwODM1QVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTGFSZXVuaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1heW90dGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbW9udGFudF8gOiBtb25leSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE4NjRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzYyNVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI5MzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsaW1pdGVfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxODY0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2MjVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiOTMyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiNi5cIikpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X21vbl9tb24gbW9udGFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdGVfKSB0aGVuIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0ZV8gZWxzZSBtb250YW50XykpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjY1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjcyOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgMWVyIGphbnZpZXIgMjAyMCAtIEFycsOqdMOpIGR1IDMgamFudmllciAyMDIwIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgcG91ciBsJ2FubsOpZSAyMDIwIE5PUiA6IExPR0wxOTM0MDA2QVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3V5YW5lIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5MYVJldW5pb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWF5b3R0ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBtb250YW50XyA6IG1vbmV5ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMTg1OFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIzNjE0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjkyOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxpbWl0ZV8gOiBtb25leSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjE4NThcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzYxNFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI5MjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCI2LlwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfbW9uX21vbiBtb250YW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0ZV8pIHRoZW4gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXRlXyBlbHNlIG1vbnRhbnRfKSkpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQzOTU7IHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ0MDI7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElYIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBvdXRyZS1tZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIzKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5MYVJldW5pb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1heW90dGUgXyAtPiB0cnVlKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM3NjdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiOTY5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGljYXRldXJfbWFqb3JhdGlvbl9jaGFyZ2VzXykpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI3OTsgc3RhcnRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjg2OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQ2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyBlbiB2aWd1ZXVyIMOgIHBhcnRpciBkdSAxZXIganVpbGxldCAyMDIyIC0gQXJyw6p0w6kgZHUgMjkganVpbGxldCAyMDIyIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgTk9SIDogVFJFTDIyMjA3NDhBIC0gQXJyw6p0w6kgZHUgMTYgYW/Du3QgMjAyMiByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGwnYWlkZSDDoCBsJ2FjY2Vzc2lvbiBzb2NpYWxlIGV0IMOgIGxhIHNvcnRpZSBkZSBsJ2luc2FsdWJyaXTDqSBzcMOpY2lmaXF1ZSDDoCBsJ291dHJlLW1lciAtIE5PUiA6IFRSRUwyMjIwNzQ0QVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjMpICgxKSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5MYVJldW5pb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1heW90dGUgXyAtPiB0cnVlKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IG1vbnRhbnRfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzc2N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjk2OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsaW1pdGVfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzc2N1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjk2OVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCI2LlwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWYgKG9fZ3RfbW9uX21vbiBtb250YW50XyBsaW1pdGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuIGxpbWl0ZV8gZWxzZSBtb250YW50XykpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xOTMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xOTQwOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgMWVyIG9jdG9icmUgMjAyMSAtIEFycsOqdMOpIGR1IDIzIHNlcHRlbWJyZSAyMDIxIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbCdhaWRlIMOgIGwnYWNjZXNzaW9uIHNvY2lhbGUgZXQgw6AgbGEgc29ydGllIGRlIGwnaW5zYWx1YnJpdMOpIHNww6ljaWZpcXVlIMOgIGwnb3V0cmUtbWVyIE5PUiA6IExPR0wyMTIzNDUyQVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoMSkgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3V5YW5lIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5MYVJldW5pb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWF5b3R0ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBtb250YW50XyA6IG1vbmV5ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjM2NDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI5MzZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsaW1pdGVfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMzY0MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjkzNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjYuXCIpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9tb25fbW9uIG1vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXRlXykgdGhlbiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdGVfIGVsc2UgbW9udGFudF8pKSkpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03OTY7IHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTgwMzsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0NlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgMWVyIGphbnZpZXIgMjAyMiAtIEFycsOqdMOpIGR1IDIwIGTDqWNlbWJyZSAyMDIxIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgcG91ciBsJ2FubsOpZSAyMDIyIE5PUiA6IExPR0wyMTM0NDc3QVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICg3KSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5MYVJldW5pb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1heW90dGUgXyAtPiB0cnVlKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IG1vbnRhbnRfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY0MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjkzNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsaW1pdGVfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzY0MFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjkzNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCI2LlwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWYgKG9fZ3RfbW9uX21vbiBtb250YW50XyBsaW1pdGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuIGxpbWl0ZV8gZWxzZSBtb250YW50XykpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzAyNTsgc3RhcnRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzAzMjsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0NlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgZHUgMWVyIG9jdG9icmUgMjAyMCAtIEFycsOqdMOpIGR1IDI1IHNlcHRlbWJyZSAyMDIwIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbCdhaWRlIMOgIGwnYWNjZXNzaW9uIHNvY2lhbGUgZXQgw6AgbGEgc29ydGllIGRlIGwnaW5zYWx1YnJpdMOpIHNww6ljaWZpcXVlIMOgIGwnb3V0cmUtbWVyIE5PUiA6IExPR0wyMDIwODM1QVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3V5YW5lIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWV0cm9wb2xlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWF5b3R0ZSBfIC0+IHRydWUpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbW9udGFudF8gOiBtb25leSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjI1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiOTMyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxpbWl0ZV8gOiBtb25leSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIzNjI1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiOTMyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjYuXCIpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZiAob19ndF9tb25fbW9uIG1vbnRhbnRfIGxpbWl0ZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gbGltaXRlXyBlbHNlIG1vbnRhbnRfKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNTg1OyBzdGFydF9jb2x1bW49NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNTkyOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQ2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyBlbiB2aWd1ZXVyIMOgIHBhcnRpciBkdSAxZXIgamFudmllciAyMDIwIC0gQXJyw6p0w6kgZHUgMyBqYW52aWVyIDIwMjAgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBwb3VyIGwnYW5uw6llIDIwMjAgTk9SIDogTE9HTDE5MzQwMDZBXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5MYVJldW5pb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1heW90dGUgXyAtPiB0cnVlKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IG1vbnRhbnRfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzYxNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjkyOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsaW1pdGVfIDogbW9uZXkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfbW9uX21vblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMzYxNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjkyOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCI2LlwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaWYgKG9fZ3RfbW9uX21vbiBtb250YW50XyBsaW1pdGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuIGxpbWl0ZV8gZWxzZSBtb250YW50XykpKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDA5NDsgc3RhcnRfY29sdW1uPTU3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDk0OyBlbmRfY29sdW1uPTY4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHJvcHJpZXRlXykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyODA1XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NjEyXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjEyNzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGljYXRldXJfbWFqb3JhdGlvbl9jaGFyZ2VzXykpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTkzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU5MzsgZW5kX2NvbHVtbj0xNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyBlbiB2aWd1ZXVyIMOgIHBhcnRpciBkdSAxZXIgb2N0b2JyZSAyMDIxIC0gQXJyw6p0w6kgZHUgMjMgc2VwdGVtYnJlIDIwMjEgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsJ2FpZGUgw6AgbCdhY2Nlc3Npb24gc29jaWFsZSBldCDDoCBsYSBzb3J0aWUgZGUgbCdpbnNhbHVicml0w6kgc3DDqWNpZmlxdWUgw6AgbCdvdXRyZS1tZXIgTk9SIDogTE9HTDIxMjM0NTJBXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3Byb3ByaWV0ZV8pKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMjcxMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiNTQyMlwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0IChtb25leV9vZl9jZW50c19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIxMjI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjY5MDsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI2OTA7IGVuZF9jb2x1bW49MTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDM3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgZHUgMWVyIG9jdG9icmUgMjAyMCAtIEFycsOqdMOpIGR1IDI1IHNlcHRlbWJyZSAyMDIwIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbCdhaWRlIMOgIGwnYWNjZXNzaW9uIHNvY2lhbGUgZXQgw6AgbGEgc29ydGllIGRlIGwnaW5zYWx1YnJpdMOpIHNww6ljaWZpcXVlIMOgIGwnb3V0cmUtbWVyIE5PUiA6IExPR0wyMDIwODM1QVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHJvcHJpZXRlXykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fYWRkX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIyNjk5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1Mzk5XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjEyMjRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MDM4OyBzdGFydF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDM4OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU2MTJcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjU2MTJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTI3MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGljYXRldXJfbWFqb3JhdGlvbl9jaGFyZ2VzXykpKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU1NTsgc3RhcnRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU1NTsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDM0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IDFlciBvY3RvYnJlIDIwMjEgLSBBcnLDqnTDqSBkdSAyMyBzZXB0ZW1icmUgMjAyMSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGwnYWlkZSDDoCBsJ2FjY2Vzc2lvbiBzb2NpYWxlIGV0IMOgIGxhIHNvcnRpZSBkZSBsJ2luc2FsdWJyaXTDqSBzcMOpY2lmaXF1ZSDDoCBsJ291dHJlLW1lciBOT1IgOiBMT0dMMjEyMzQ1MkFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NDIyXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1NDIyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXQgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjEyMjlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxpY2F0ZXVyX21ham9yYXRpb25fY2hhcmdlc18pKSkpO1xuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI2NDk7IHN0YXJ0X2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI2NDk7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyBlbiB2aWd1ZXVyIMOgIHBhcnRpciBkdSBkdSAxZXIgb2N0b2JyZSAyMDIwIC0gQXJyw6p0w6kgZHUgMjUgc2VwdGVtYnJlIDIwMjAgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsJ2FpZGUgw6AgbCdhY2Nlc3Npb24gc29jaWFsZSBldCDDoCBsYSBzb3J0aWUgZGUgbCdpbnNhbHVicml0w6kgc3DDqWNpZmlxdWUgw6AgbCdvdXRyZS1tZXIgTk9SIDogTE9HTDIwMjA4MzVBXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMFwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUzOTlcIikgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX21vbl9tb24gKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjUzOTlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdCAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTIyNFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fdG9yYXRfaW50IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04ODM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9ODgzOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHNldWlsX21pbmltYWxfcmVzc291cmNlc19tZW5hZ2VfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInNldWlsX21pbmltYWxfcmVzc291cmNlc19tw6luYWdlXCJdIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ2ODE7IHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDY4NzsgZW5kX2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5MikgKDkpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5NCkgKDkpICgzMCkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9kYXRfZGF0IGRhdGVfc2lnbmF0dXJlX3ByZXRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMTk5NCkgKDkpICgzMCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5PYmplY3RpZkRlY2VuY2VMb2dlbWVudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QcmV2dURhbnNMaXN0ZVIzMjFfMTUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUGFzRGVUcmF2YXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV90cmF2YXV4X2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1Lk9iamVjdGlmRGVjZW5jZUxvZ2VtZW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUHJldnVEYW5zTGlzdGVSMzIxXzE1IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LkFncmFuZGlyT3VSZW5kcmVIYWJpdGFibGVEMzMxXzYzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlBhc0RlVHJhdmF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdHlwZV90cmF2YXV4X2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1Lk9iamVjdGlmRGVjZW5jZUxvZ2VtZW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlByZXZ1RGFuc0xpc3RlUjMyMV8xNSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5BZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82MyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlBhc0RlVHJhdmF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0IG1lbnN1YWxpdGVfcHJpbmNpcGFsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZWZmaWNpZW50X2Q4NDJfMTJfKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00Njk5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ3MDA7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTEyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2RhdF9kYXQgZGF0ZV9zaWduYXR1cmVfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgxOTk0KSAoOSkgKDMwKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5PYmplY3RpZkRlY2VuY2VMb2dlbWVudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QcmV2dURhbnNMaXN0ZVIzMjFfMTUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5BZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82MyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QYXNEZVRyYXZhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzEyXykpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODk1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg5NTsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiXSB7aW9faW5wdXQ9Tm9JbnB1dDtcbiAgICBpb19vdXRwdXQ9ZmFsc2V9ICh1bmVtYmVkZGFibGUpXG4gICAgKGZ1biAoYWlkZV9maW5hbGVfOiBtb25leSkgLT4gXG4gICAgICAgdHJ5XG4gICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NDMzOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ0MzM7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAob19sdF9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIGFpZGVfZmluYWxlXyBtb250YW50X2ZvcmZhaXRhaXJlX2Q4NDJfNl8pXG4gICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSB0aGVuXG4gICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gYWlkZV9maW5hbGVfIG1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml82XykpKVxuICAgICAgIHdpdGhcbiAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTkyMTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05MjE7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODQyXzZfYXZlY19jb3Byb3ByaWV0ZV86IGRhdGUgLT4gaW50ZWdlciAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19jb3Byb3ByacOpdMOpXCJdXG4gICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKHVuZW1iZWRkYWJsZSlcbiAgICAoZnVuIChkYXRlX2NhbGN1bF86IGRhdGUpIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlcikgLT4gXG4gICAgICAgdHJ5XG4gICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xOyBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI2Njk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI2Njk7IGVuZF9jb2x1bW49MTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IGR1IDFlciBvY3RvYnJlIDIwMjAgLSBBcnLDqnTDqSBkdSAyNSBzZXB0ZW1icmUgMjAyMCByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGwnYWlkZSDDoCBsJ2FjY2Vzc2lvbiBzb2NpYWxlIGV0IMOgIGxhIHNvcnRpZSBkZSBsJ2luc2FsdWJyaXTDqSBzcMOpY2lmaXF1ZSDDoCBsJ291dHJlLW1lciBOT1IgOiBMT0dMMjAyMDgzNUFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmNoaXZlcyBkZSBsJ2FycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxMCkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHJvcHJpZXRlXykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9Tm9JbnB1dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvX291dHB1dD10cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDJfNl9iYXNlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpb19pbnB1dD1Pbmx5SW5wdXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfZGF0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY2FsY3VsXykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXQxXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9T25seUlucHV0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW9fb3V0cHV0PWZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2ludGVnZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNzVcIikpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJjaGl2ZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTczO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1NzM7IGVuZF9jb2x1bW49MTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgMzdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IDFlciBvY3RvYnJlIDIwMjEgLSBBcnLDqnTDqSBkdSAyMyBzZXB0ZW1icmUgMjAyMSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGwnYWlkZSDDoCBsJ2FjY2Vzc2lvbiBzb2NpYWxlIGV0IMOgIGxhIHNvcnRpZSBkZSBsJ2luc2FsdWJyaXTDqSBzcMOpY2lmaXF1ZSDDoCBsJ291dHJlLW1lciBOT1IgOiBMT0dMMjEyMzQ1MkFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3Byb3ByaWV0ZV8pKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXQgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYmFzZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYmFzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0ge2lvX2lucHV0PU5vSW5wdXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW9fb3V0cHV0PXRydWV9IChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDg0Ml82X2Jhc2VfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYmFzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9T25seUlucHV0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvX291dHB1dD1mYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfZGF0ZSkgZGF0ZV9jYWxjdWxfKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXQxXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2ludGVnZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC43NVwiKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQwNzY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDc2OyBlbmRfY29sdW1uPTE2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHJvcHJpZXRlXykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYmFzZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYmFzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIHtpb19pbnB1dD1Ob0lucHV0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpb19vdXRwdXQ9dHJ1ZX0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDg0Ml82X2Jhc2VfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYmFzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXQwXCJdIHtpb19pbnB1dD1Pbmx5SW5wdXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2RhdGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY2FsY3VsXykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9iYXNlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDFcIl0ge2lvX2lucHV0PU9ubHlJbnB1dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfaW50ZWdlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuNzVcIikpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKSl8XSlcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzk4NDsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICBlbmRfbGluZT0zOTg0OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSAzM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ2FsY3VsIGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudCBlbiBzZWN0ZXVyIGFjY2Vzc2lvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlXyAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSkpKVxuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYmFzZVwiXVxuICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYmFzZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAoKGNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDg0Ml82X2Jhc2VfKVxuICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYmFzZVwiOyBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfZGF0ZSlcbiAgICAgICAgICAgICAgICAgIGRhdGVfY2FsY3VsXykpICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2Jhc2VcIjsgXCJpbnB1dDFcIl1cbiAgICAgICAgICAgICAgICAgIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2ludGVnZXIpXG4gICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSkpKSkpXG4gICAgICAgd2l0aFxuICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODkxOyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTg5MTsgZW5kX2NvbHVtbj0yNjtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBkZXBlbnNlX25ldHRlX21pbmltYWxlXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXSB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PWZhbHNlfVxuICAgICh1bmVtYmVkZGFibGUpXG4gICAgKGZ1biAoYWxsb2NhdGlvbl9tZW5zdWVsbGVfOiBtb25leSkgLT4gXG4gICAgICAgdHJ5XG4gICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NjE3OyBzdGFydF9jb2x1bW49MTU7XG4gICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ2MTc7IGVuZF9jb2x1bW49Mzc7XG4gICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBvX3N1Yl9tb25fbW9uXG4gICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGNoYXJnZXNfbWVuc3VlbGxlc19wcmV0X1xuICAgICAgICAgICAgICAgICAgICBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfKSBhbGxvY2F0aW9uX21lbnN1ZWxsZV8pKVxuICAgICAgIHdpdGhcbiAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg5Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04OTc7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX3NldWlsXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJyZXNzb3VyY2VzX23DqW5hZ2VfYXJyb25kaWVzX3NldWlsXCJdIHtpb19pbnB1dD1Ob0lucHV0O1xuICAgIGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ3MjA7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ3MjA7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NzEwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ3MTA7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgKG9fbHRlX21vbl9tb24gcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2Jhc2VfXG4gICAgICAgICAgICAgICAgIHNldWlsX21pbmltYWxfcmVzc291cmNlc19tZW5hZ2VfKSB0aGVuXG4gICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAob19yb3VuZF9tb25cbiAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIHNldWlsX21pbmltYWxfcmVzc291cmNlc19tZW5hZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI0OTk5XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjAxXCIpKSlcbiAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMTAwLlwiKSkgZWxzZVxuICAgICAgICAgICAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmFzZV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg2NTsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04NjU7IGVuZF9jb2x1bW49MTU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODQyXzZfYXZlY19saW1pdGF0aW9uX2RvbV90b21fOiBkYXRlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZWdlciAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2F2ZWNfbGltaXRhdGlvbl9kb21fdG9tXCJdXG4gICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKHVuZW1iZWRkYWJsZSlcbiAgICAoZnVuIChkYXRlX2NhbGN1bF86IGRhdGUpIChub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlcikgLT4gXG4gICAgICAgdHJ5XG4gICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xOyBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW119IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM1MTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNTIwOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFydGljbGUgNDZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyBlbiB2aWd1ZXVyIMOgIHBhcnRpciBkdSAxZXIgamFudmllciAyMDIwIC0gQXJyw6p0w6kgZHUgMyBqYW52aWVyIDIwMjAgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBwb3VyIGwnYW5uw6llIDIwMjAgTk9SIDogTE9HTDE5MzQwMDZBXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJjaGl2ZXMgZGUgbCdhcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNlwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZpdGUuTGFSZXVuaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGVjdGl2aXRlLk1heW90dGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2lvX2lucHV0PU5vSW5wdXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvX291dHB1dD10cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDg0Ml82X2F2ZWNfY29wcm9wcmlldGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2F2ZWNfY29wcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9T25seUlucHV0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9kYXRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NhbGN1bF8pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2F2ZWNfY29wcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0MVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9T25seUlucHV0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9pbnRlZ2VyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2XCIpKSkpKSkpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTI5NTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0yOTU5OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFydGljbGUgNDZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IGR1IDFlciBvY3RvYnJlIDIwMjAgLSBBcnLDqnTDqSBkdSAyNSBzZXB0ZW1icmUgMjAyMCByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGwnYWlkZSDDoCBsJ2FjY2Vzc2lvbiBzb2NpYWxlIGV0IMOgIGxhIHNvcnRpZSBkZSBsJ2luc2FsdWJyaXTDqSBzcMOpY2lmaXF1ZSDDoCBsJ291dHJlLW1lciBOT1IgOiBMT0dMMjAyMDgzNUFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxMCkgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjZcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5MYVJldW5pb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGVjdGl2aXRlLlNhaW50TWFydGluIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5NYXlvdHRlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19jb3Byb3ByacOpdMOpXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpb19pbnB1dD1Ob0lucHV0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW9fb3V0cHV0PXRydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDg0Ml82X2F2ZWNfY29wcm9wcmlldGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19jb3Byb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9T25seUlucHV0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW9fb3V0cHV0PWZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2RhdGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NhbGN1bF8pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19jb3Byb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXQxXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9T25seUlucHV0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW9fb3V0cHV0PWZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2ludGVnZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiNlwiKSkpKSkpKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcmNoaXZlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTg2MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTg2OTsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDQ2XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJ0aWNsZXMgZW4gdmlndWV1ciDDoCBwYXJ0aXIgZHUgMWVyIG9jdG9icmUgMjAyMSAtIEFycsOqdMOpIGR1IDIzIHNlcHRlbWJyZSAyMDIxIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbCdhaWRlIMOgIGwnYWNjZXNzaW9uIHNvY2lhbGUgZXQgw6AgbGEgc29ydGllIGRlIGwnaW5zYWx1YnJpdMOpIHNww6ljaWZpcXVlIMOgIGwnb3V0cmUtbWVyIE5PUiA6IExPR0wyMTIzNDUyQVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxKSAoMSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTGFSZXVuaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1heW90dGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2F2ZWNfY29wcm9wcmnDqXTDqVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19jb3Byb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpb19pbnB1dD1Ob0lucHV0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvX291dHB1dD10cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDg0Ml82X2F2ZWNfY29wcm9wcmlldGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19jb3Byb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpb19pbnB1dD1Pbmx5SW5wdXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW9fb3V0cHV0PWZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9kYXRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY2FsY3VsXykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXQxXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2ludGVnZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI2XCIpKSkpKSkpKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzIzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03MzE7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFydGljbGVzIGVuIHZpZ3VldXIgw6AgcGFydGlyIGR1IDFlciBqYW52aWVyIDIwMjIgLSBBcnLDqnTDqSBkdSAyMCBkw6ljZW1icmUgMjAyMSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IHBvdXIgbCdhbm7DqWUgMjAyMiBOT1IgOiBMT0dMMjEzNDQ3N0FcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoNykgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI2XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3V5YW5lIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTGFSZXVuaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50TWFydGluIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXlvdHRlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2F2ZWNfY29wcm9wcmnDqXTDqVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19jb3Byb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0ge2lvX2lucHV0PU5vSW5wdXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvX291dHB1dD10cnVlfSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODQyXzZfYXZlY19jb3Byb3ByaWV0ZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9T25seUlucHV0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9kYXRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NhbGN1bF8pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19jb3Byb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDFcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW9fb3V0cHV0PWZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfaW50ZWdlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNlwiKSkpKSkpKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FyY2hpdmVzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIwODsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIxNjsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgNDZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnRpY2xlcyBlbiB2aWd1ZXVyIMOgIHBhcnRpciBkdSAxZXIganVpbGxldCAyMDIyIC0gQXJyw6p0w6kgZHUgMjkganVpbGxldCAyMDIyIHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgTk9SIDogVFJFTDIyMjA3NDhBIC0gQXJyw6p0w6kgZHUgMTYgYW/Du3QgMjAyMiByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGwnYWlkZSDDoCBsJ2FjY2Vzc2lvbiBzb2NpYWxlIGV0IMOgIGxhIHNvcnRpZSBkZSBsJ2luc2FsdWJyaXTDqSBzcMOpY2lmaXF1ZSDDoCBsJ291dHJlLW1lciAtIE5PUiA6IFRSRUwyMjIwNzQ0QVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyY2hpdmVzIGRlIGwnYXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDcpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIzKSAoMSkgKDEpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNlwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3V5YW5lIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWV0cm9wb2xlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1heW90dGUgXyAtPiB0cnVlKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2F2ZWNfY29wcm9wcmnDqXTDqVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19jb3Byb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIHtpb19pbnB1dD1Ob0lucHV0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW9fb3V0cHV0PXRydWV9IChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODQyXzZfYXZlY19jb3Byb3ByaWV0ZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl0ge2lvX2lucHV0PU9ubHlJbnB1dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2RhdGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NhbGN1bF8pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19jb3Byb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXQxXCJdIHtpb19pbnB1dD1Pbmx5SW5wdXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9pbnRlZ2VyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNlwiKSkpKSkpKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpKXxdKVxuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hcnJldGVfMjAxOS0wOS0yNy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTkwOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgIGVuZF9saW5lPTM5OTA7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDMzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSVYgOiBDYWxjdWwgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50IGVuIHNlY3RldXIgYWNjZXNzaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfIChkYXRlX29mX251bWJlcnMgKDIwMjApICgxKSAoMSkpKSkpXG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIl1cbiAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2F2ZWNfY29wcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICBcIm91dHB1dFwiXSB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PXRydWV9IChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICgoY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODQyXzZfYXZlY19jb3Byb3ByaWV0ZV8pXG4gICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2NvcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl0ge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfVxuICAgICAgICAgICAgICAgICAgKGVtYmVkX2RhdGUpIGRhdGVfY2FsY3VsXykpICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2F2ZWNfY29wcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICBcImlucHV0MVwiXSB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAoZW1iZWRfaW50ZWdlcikgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpKSkpKVxuICAgICAgIHdpdGhcbiAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTg5Mjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT04OTI7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUuZGF0ZV9jb3VyYW50ZVwiXVxuICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT05NjE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTYxOyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk2MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05NjE7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9kb3RfcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlLnJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNcIl1cbiAgICAgIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDQxOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDE5OyBlbmRfY29sdW1uPTc1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX3NldWlsXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ0MTk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQxOTsgZW5kX2NvbHVtbj03NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV86IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlLmNvbmRpdGlvbl8yX2R1XzgzMl8yNVwiXVxuICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0MTg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQxODsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00NDE4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ0MTg7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzI1XzogZGVjaW1hbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUubl9ub21icmVfcGFydHNfZDgzMl8yNVwiXVxuICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfZGVjaW1hbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0MjE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQyMTsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBjYWxjdWxfbm9tYnJlX3BhcnRzX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzExXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ0MjE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDQyMTsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGUudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJjYWxjdWxfw6lxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXCI7XG4gICAgICBcIkNhbGN1bMOJcXVpdmFsZW5jZUxveWVyTWluaW1hbGVcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNhbGN1bF/DqXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVcIjtcbiAgICAgIFwiQ2FsY3Vsw4lxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZVwiXSBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUpXG4gICAgKHtDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICAgQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luID1cbiAgICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc187XG4gICAgICAgIENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9jb25kaXRpb25fMl9kdV84MzJfMjVfO1xuICAgICAgICBDYWxjdWxFcXVpdmFsZW5jZUxveWVyTWluaW1hbGVJbi5uX25vbWJyZV9wYXJ0c19kODMyXzI1X2luID1cbiAgICAgICAgICBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfZG90X25fbm9tYnJlX3BhcnRzX2Q4MzJfMjVffSkpKSBpblxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9tb250YW50XzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZS5tb250YW50IGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9yZXNpZGVuY2VfOiBDb2xsZWN0aXZpdGUudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIucsOpc2lkZW5jZVwiXSB7aW9faW5wdXQ9T25seUlucHV0O1xuICAgICAgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfY29sbGVjdGl2aXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTk0MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05NDA7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmVzaWRlbmNlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NDA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTQwOyBlbmRfY29sdW1uPTQ5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9sb2dlbWVudF9mb3llcl9qZXVuZXNfdHJhdmFpbGxldXJzXzogYm9vbCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIubG9nZW1lbnRfZm95ZXJfamV1bmVzX3RyYXZhaWxsZXVyc1wiXVxuICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT05NDM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTQzOyBlbmRfY29sdW1uPTc0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk0Mzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05NDM7IGVuZF9jb2x1bW49NzQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3R5cGVfbG9nZW1lbnRfZm95ZXJfOiBUeXBlTG9nZW1lbnRGb3llci50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci50eXBlX2xvZ2VtZW50X2ZveWVyXCJdIHtpb19pbnB1dD1Pbmx5SW5wdXQ7XG4gICAgICBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF90eXBlX2xvZ2VtZW50X2ZveWVyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTk0MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05NDE7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gVHlwZUxvZ2VtZW50Rm95ZXIuUmVzaWRlbmNlU29jaWFsZSAoKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NDE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTQxOyBlbmRfY29sdW1uPTU5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9kYXRlX2NvbnZlbnRpb25uZW1lbnRfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5kYXRlX2NvbnZlbnRpb25uZW1lbnRcIl1cbiAgICAgIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTQ1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk0NTsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX29mX251bWJlcnMgKDE5NzApICgxKSAoMSkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9OTQ1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk0NTsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyLnJlc3NvdXJjZXNfbcOpbmFnZV9hcnJvbmRpZXNcIl1cbiAgICAgIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTk0OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05NDk7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX3NldWlsXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NDk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTQ5OyBlbmRfY29sdW1uPTY3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIubm9tYnJlX3BlcnNvbm5lc1/DoF9jaGFyZ2VcIl1cbiAgICAgIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2ludGVnZXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTUxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk1MTsgZW5kX2NvbHVtbj02NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NTE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTUxOyBlbmRfY29sdW1uPTY1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIuc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXCJdXG4gICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgICAoZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTUzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk1MzsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk1Mzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05NTM7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3pvbmVfOiBab25lREhhYml0YXRpb24udCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIuem9uZVwiXSB7aW9faW5wdXQ9T25seUlucHV0O1xuICAgICAgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfem9uZV9kX2hhYml0YXRpb24pXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTU1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTk1NTsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB6b25lXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05NTU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTU1OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIuZGF0ZV9jb3VyYW50ZVwiXSB7aW9faW5wdXQ9T25seUlucHV0O1xuICAgICAgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT05NTc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTU3OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk1Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05NTc7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3JlZGV2YW5jZV86IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llci5yZWRldmFuY2VcIl0ge2lvX2lucHV0PU9ubHlJbnB1dDtcbiAgICAgIGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTk0Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05NDc7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTk0Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT05NDc7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV86IHVuaXQgLT4gYm9vbCA9IFxuICAgIGZ1biAoXzogdW5pdCkgLT4gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIuY29uZGl0aW9uXzJfZHVfODMyXzI1XCJdXG4gICAgICB7aW9faW5wdXQ9UmVlbnRyYW50OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDM4NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00Mzg1OyBlbmRfY29sdW1uPTYxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfbGltaXRhdGlvbl9tYWpvcmF0aW9uX3BlcnNvbm5lc19hX2NoYXJnZV86IFxuICAgIHVuaXQgLT4gYm9vbCA9IGZ1biAoXzogdW5pdCkgLT4gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIubGltaXRhdGlvbl9tYWpvcmF0aW9uX3BlcnNvbm5lc1/DoF9jaGFyZ2VcIl1cbiAgICAgICAgICAgICAgICAgICAgIHtpb19pbnB1dD1SZWVudHJhbnQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2Jvb2wpXG4gICAgICAgICAgICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoXG4gICAgICAgICAgICAgICAgICAgICAgICBbfHxdKSAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02MDYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjA2NTsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg2Mi03XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiBJSUkgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogU2FpbnQtQmFydGjDqWxlbXkgZXQgU2FpbnQtTWFydGluXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICg5KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjMpICg0KSAoNSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCByZXNpZGVuY2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTGFSZXVuaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWV0cm9wb2xlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1heW90dGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU1NTY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTU2MjsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NjEtOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBWSSA6IERpc3Bvc2l0aW9uIHBhcnRpY3VsacOocmVzIMOgIGwnb3V0cmUtbWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICg5KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIzKSAoNCkgKDUpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHJlc2lkZW5jZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3V5YW5lIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTGFSZXVuaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50TWFydGluIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWF5b3R0ZSBfIC0+IHRydWUpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSkpKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3Rfbl9ub21icmVfcGFydHNfZDgzMl8yNV86IHVuaXQgLT4gZGVjaW1hbCA9IFxuICAgIGZ1biAoXzogdW5pdCkgLT4gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXIubl9ub21icmVfcGFydHNfZDgzMl8yNVwiXVxuICAgICAge2lvX2lucHV0PVJlZW50cmFudDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfZGVjaW1hbCkgKHJhaXNlXG4gICAgICBFbXB0eUVycm9yKSkgaW5cbiAgbGV0IHJlc3VsdF86IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJcIjsgXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCJdXG4gICAgKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJcIjsgXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCJdXG4gICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcilcbiAgICAoe0NhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnJlc2lkZW5jZV9pbiA9XG4gICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3Jlc2lkZW5jZV87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLmxvZ2VtZW50X2ZveWVyX2pldW5lc190cmF2YWlsbGV1cnNfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2xvZ2VtZW50X2ZveWVyX2pldW5lc190cmF2YWlsbGV1cnNfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi50eXBlX2xvZ2VtZW50X2ZveWVyX2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF90eXBlX2xvZ2VtZW50X2ZveWVyXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uZGF0ZV9jb252ZW50aW9ubmVtZW50X2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9kYXRlX2NvbnZlbnRpb25uZW1lbnRfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc187XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnpvbmVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X3pvbmVfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ucmVkZXZhbmNlX2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9yZWRldmFuY2VfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2NvbmRpdGlvbl8yX2R1XzgzMl8yNV87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLmxpbWl0YXRpb25fbWFqb3JhdGlvbl9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2xpbWl0YXRpb25fbWFqb3JhdGlvbl9wZXJzb25uZXNfYV9jaGFyZ2VfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5uX25vbWJyZV9wYXJ0c19kODMyXzI1X2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzI1X30pKSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2NvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMjVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMjUgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2NvZWZmaWNpZW50X3JfZDgzMl8yNV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuY29lZmZpY2llbnRfcl9kODMyXzI1IGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9uX25vbWJyZV9wYXJ0c19kODMyXzI1XzogZGVjaW1hbCA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjUgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90X2VxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfcGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIucGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmVxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9zZXVpbF86IGRlY2ltYWwgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuYWlkZV9maW5hbGVfZm9ybXVsZSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxfOiBcbiAgICBtb25leSAtPiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgaW5cbiAgbGV0IHNldWlsX21pbmltYWxfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwic2V1aWxfbWluaW1hbF9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXSB7aW9faW5wdXQ9Tm9JbnB1dDtcbiAgICBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NjU5OyBzdGFydF9jb2x1bW49NztcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NjU5OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbl9kODQyXzExXzNfKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgb19tdWx0X21vbl9yYXQgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX3NldWlsX1xuICAgICAgICAgICAgICAgICAgICAgIGNvZWZmaWNpZW50X2Q4NDJfMTFfKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NjQwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ2NDA7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gbW9udGFudF9mb3JmYWl0YWlyZV9kODQyXzExXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODk0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg5NDsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBwbGFmb25kX21lbnN1YWxpdGVfZDg0Ml82XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJwbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNlwiXSB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PWZhbHNlfVxuICAgIChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NTY0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NTY0OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgbG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlXykpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIChsZXQgcGxhZm9uZF9zaWduYXR1cmVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2F2ZWNfbGltaXRhdGlvbl9kb21fdG9tXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2xpbWl0YXRpb25fZG9tX3RvbVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgICAgICAoKGNhbGN1bF9wbGFmb25kX21lbnN1YWxpdGVfZDg0Ml82X2F2ZWNfbGltaXRhdGlvbl9kb21fdG9tXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2F2ZWNfbGltaXRhdGlvbl9kb21fdG9tXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl0ge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfZGF0ZSkgZGF0ZV9zaWduYXR1cmVfcHJldF8pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19saW1pdGF0aW9uX2RvbV90b21cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0MVwiXSB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9pbnRlZ2VyKSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgKGxldCBwbGFmb25kX2VudHJlZV8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19saW1pdGF0aW9uX2RvbV90b21cIl1cbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2F2ZWNfbGltaXRhdGlvbl9kb21fdG9tXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0ge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICgoY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODQyXzZfYXZlY19saW1pdGF0aW9uX2RvbV90b21fKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19saW1pdGF0aW9uX2RvbV90b21cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0MFwiXSB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9kYXRlKSBkYXRlX2VudHJlZV9sb2dlbWVudF8pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19saW1pdGF0aW9uX2RvbV90b21cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0MVwiXSB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9pbnRlZ2VyKSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXykpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgKCBpZiAob19sdF9tb25fbW9uIHBsYWZvbmRfc2lnbmF0dXJlXyBwbGFmb25kX2VudHJlZV8pXG4gICAgICAgICAgICAgICAgICAgICAgIHRoZW4gcGxhZm9uZF9lbnRyZWVfIGVsc2UgcGxhZm9uZF9zaWduYXR1cmVfKSkpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NTQ1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ1NDU7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgXCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXTDqV9kODQyXzZfYXZlY19saW1pdGF0aW9uX2RvbV90b21cIl1cbiAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgIFwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0w6lfZDg0Ml82X2F2ZWNfbGltaXRhdGlvbl9kb21fdG9tXCI7XG4gICAgICAgICAgICAgIFwib3V0cHV0XCJdIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9dHJ1ZX0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgKChjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDJfNl9hdmVjX2xpbWl0YXRpb25fZG9tX3RvbV8pXG4gICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2xpbWl0YXRpb25fZG9tX3RvbVwiO1xuICAgICAgICAgICAgICAgICBcImlucHV0MFwiXSB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9kYXRlKVxuICAgICAgICAgICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF8pKSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICBcImNhbGN1bF9wbGFmb25kX21lbnN1YWxpdMOpX2Q4NDJfNl9hdmVjX2xpbWl0YXRpb25fZG9tX3RvbVwiO1xuICAgICAgICAgICAgICAgICBcImlucHV0MVwiXSB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgICAgICAgICAgICAoZW1iZWRfaW50ZWdlcikgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8pKSkpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg4Njsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT04ODY7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbWVuc3VhbGl0ZV9taW5pbWFsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjsgXCJtZW5zdWFsaXTDqV9taW5pbWFsZVwiXVxuICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9dHJ1ZX0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NDE0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ0MTQ7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2RvdF9tb250YW50XykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODg0OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTg4NDsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfOiBkZWNpbWFsID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlXCJdIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9dHJ1ZX1cbiAgICAoZW1iZWRfZGVjaW1hbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDM4ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00Mzg4OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF9jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNV9zZXVpbF8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg4NTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT04ODU7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWJhdHRlbWVudF9kZXBlbnNlX25ldHRlX21pbmltYWxlXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdIHtpb19pbnB1dD1Ob0lucHV0O1xuICAgIGlvX291dHB1dD1mYWxzZX0gKHVuZW1iZWRkYWJsZSlcbiAgICAoZnVuIChhbGxvY2F0aW9uX21lbnN1ZWxsZV86IG1vbmV5KSAtPiBcbiAgICAgICB0cnlcbiAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ2Mjk7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDYyOTsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIChsZXQgZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgIFwiZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjsgXCJvdXRwdXRcIl0ge2lvX2lucHV0PU5vSW5wdXQ7XG4gICAgICAgICAgICAgICAgICBpb19vdXRwdXQ9dHJ1ZX0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICBcImTDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdIGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfKVxuICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJkw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiOyBcImlucHV0MFwiXSB7aW9faW5wdXQ9T25seUlucHV0O1xuICAgICAgICAgICAgICAgICAgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfbW9uZXkpIGFsbG9jYXRpb25fbWVuc3VlbGxlXykpKSkpKSlcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAob19sdF9tb25fbW9uIGRlcGVuc2VfbmV0dGVfbWluaW1hbGVfXG4gICAgICAgICAgICAgICAgICAgICBzZXVpbF9taW5pbWFsX2RlcGVuc2VfbmV0dGVfbWluaW1hbGVfKSB0aGVuXG4gICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBzZXVpbF9taW5pbWFsX2RlcGVuc2VfbmV0dGVfbWluaW1hbGVfXG4gICAgICAgICAgICAgICAgICAgICBkZXBlbnNlX25ldHRlX21pbmltYWxlXykgZWxzZVxuICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKSkpXG4gICAgICAgd2l0aFxuICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODk5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTg5OTsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgYWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtZW5zdWFsaXRlX2VsaWdpYmxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiOyBcIm1lbnN1YWxpdMOpX8OpbGlnaWJsZVwiXVxuICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9dHJ1ZX0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00Mzk5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQzOTk7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAob19ndF9tb25fbW9uIG1lbnN1YWxpdGVfcHJpbmNpcGFsZV8gcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDJfNl8pXG4gICAgICAgICAgICAgIHRoZW4gcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDJfNl8gZWxzZSBtZW5zdWFsaXRlX3ByaW5jaXBhbGVfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04ODI7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9ODgyOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kw6lwZW5zZV9uZXR0ZV9taW5pbWFsZVwiXSB7aW9faW5wdXQ9Tm9JbnB1dDtcbiAgICBpb19vdXRwdXQ9ZmFsc2V9ICh1bmVtYmVkZGFibGUpXG4gICAgKGZ1biAoYWlkZV9maW5hbGVfOiBtb25leSkgLT4gXG4gICAgICAgdHJ5XG4gICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NDQ3OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ0NDc7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9taW5vcmF0aW9uX2ZvcmZhaXRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9dHJ1ZX1cbiAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21pbm9yYXRpb25fZm9yZmFpdGFpcmVcIl1cbiAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZV8pXG4gICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdGlvbl9mb3JmYWl0YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICBcImlucHV0MFwiXSB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpIGFpZGVfZmluYWxlXykpKSkpKSlcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAobGV0IGFiYXR0ZW1lbnRfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdXG4gICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICBcImFiYXR0ZW1lbnRfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9dHJ1ZX0gKGVtYmVkX21vbmV5KVxuICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdXG4gICAgICAgICAgICAgICAgICBhYmF0dGVtZW50X2RlcGVuc2VfbmV0dGVfbWluaW1hbGVfKVxuICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJhYmF0dGVtZW50X2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgIGFpZGVfZmluYWxlXykpKSkpKSlcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAoIGlmIChvX2x0X21vbl9tb24gYWlkZV9maW5hbGVfIGFiYXR0ZW1lbnRfKSB0aGVuXG4gICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAob19zdWJfbW9uX21vbiBhaWRlX2ZpbmFsZV8gYWJhdHRlbWVudF8pKSkpKSlcbiAgICAgICB3aXRoXG4gICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05MjI7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTIyOyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFpZGVfZmluYWxlX2Zvcm11bGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7IFwiYWlkZV9maW5hbGVfZm9ybXVsZVwiXVxuICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9dHJ1ZX0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MzY2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQzNjY7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uXG4gICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIG1lbnN1YWxpdGVfZWxpZ2libGVfXG4gICAgICAgICAgICAgICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc18pIG1lbnN1YWxpdGVfbWluaW1hbGVfKVxuICAgICAgICAgICAgICBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT05MTc7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9OTE3OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXzogbW9uZXkgLT4gbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaVwiXVxuICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9ZmFsc2V9ICh1bmVtYmVkZGFibGUpXG4gICAgKGZ1biAoYWlkZV9maW5hbGVfOiBtb25leSkgLT4gXG4gICAgICAgdHJ5XG4gICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00NDYxOyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgIGVuZF9saW5lPTQ0NjE7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfIDogbW9uZXkgPSAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2TDqXBlbnNlX25ldHRlX21pbmltYWxlXCJdXG4gICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0ge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfVxuICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIl1cbiAgICAgICAgICAgICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGVwZW5zZV9uZXR0ZV9taW5pbWFsZV8pXG4gICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZMOpcGVuc2VfbmV0dGVfbWluaW1hbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl0ge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfVxuICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBhaWRlX2ZpbmFsZV8pKSkpKSkpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgKGxldCBjcmRzXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIl0gKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgW1wiQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgIFwibW9udGFudFwiOyBcIm91dHB1dFwiXSB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PXRydWV9XG4gICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgIFtcIkNvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICBcIm1vbnRhbnRcIl0gY29udHJpYnV0aW9uc19zb2NpYWxlc19kb3RfbW9udGFudF8pXG4gICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICBbXCJDb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJtb250YW50XCI7IFwiaW5wdXQwXCJdIHtpb19pbnB1dD1Pbmx5SW5wdXQ7XG4gICAgICAgICAgICAgICAgICBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9tb25leSkgYWlkZV9maW5hbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIChsZXQgYWlkZV9maW5hbGVfbW9pbnNfY3Jkc19hcnJvbmRpZV8gOiBtb25leSA9XG4gICAgICAgICAgICAgICAgICAob19yb3VuZF9tb25cbiAgICAgICAgICAgICAgICAgICAgIChvX3N1Yl9tb25fbW9uIChvX3N1Yl9tb25fbW9uIGFpZGVfZmluYWxlXyBjcmRzXylcbiAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCI1MFwiKSkpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgKG9fZ3RlX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGFpZGVfZmluYWxlX21vaW5zX2NyZHNfYXJyb25kaWVfIGNyZHNfKVxuICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgIChvX2FkZF9tb25fbW9uIGFpZGVfZmluYWxlX21vaW5zX2NyZHNfYXJyb25kaWVfIGNyZHNfKSBlbHNlXG4gICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSkpKSkpKVxuICAgICAgIHdpdGhcbiAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTkyMzsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05MjM7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250ZWVfZW5fY2hhcmdlX3NhaW50X3BpZXJyZV9taXF1ZWxvbl86IFxuICAgIG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250w6llX2VuX2NoYXJnZV9zYWludF9waWVycmVfbWlxdWVsb25cIl1cbiAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAodW5lbWJlZGRhYmxlKVxuICAgIChmdW4gKGFpZGVfZmluYWxlXzogbW9uZXkpIC0+IFxuICAgICAgIHRyeVxuICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2F1dHJlc19zb3VyY2VzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQwNzsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICBlbmRfbGluZT00MDc7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljcmV0IG7CsCAyMDIxLTE3NTAgZHUgMjEgZMOpY2VtYnJlIDIwMjEgcG9ydGFudCBkaXZlcnNlcyBtZXN1cmVzIHN1ciBsZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IHJlbGF0aWYgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCDDoCBTYWludC1QaWVycmUtZXQtTWlxdWVsb25cIl19XG4gICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIl1cbiAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9jb250cmlidXRpb25zX3NvY2lhbGVzX2Fycm9uZGlcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0ge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfVxuICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCJdXG4gICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYXJyb25kaV8pXG4gICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYnV0aW9uc19zb2NpYWxlc19hcnJvbmRpXCI7XG4gICAgICAgICAgICAgICAgICAgIFwiaW5wdXQwXCJdIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX1cbiAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgYWlkZV9maW5hbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIChtb250ZWVfZW5fY2hhcmdlX3NhaW50X3BpZXJyZV9taXF1ZWxvbl8gYWlkZV9maW5hbGVfXG4gICAgICAgICAgICAgICAgICByZXNpZGVuY2VfIGRhdGVfY291cmFudGVfKSkpKVxuICAgICAgIHdpdGhcbiAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTkzMDsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT05MzA7IGVuZF9jb2x1bW49NDg7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXCJdIHtpb19pbnB1dD1Ob0lucHV0O1xuICAgIGlvX291dHB1dD10cnVlfSAodW5lbWJlZGRhYmxlKVxuICAgIChmdW4gKGFpZGVfZmluYWxlXzogbW9uZXkpIC0+IFxuICAgICAgIHRyeVxuICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ4MTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICBlbmRfbGluZT00NDgxOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250w6llX2VuX2NoYXJnZV9zYWludF9waWVycmVfbWlxdWVsb25cIl1cbiAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250w6llX2VuX2NoYXJnZV9zYWludF9waWVycmVfbWlxdWVsb25cIjtcbiAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0ge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfVxuICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udMOpZV9lbl9jaGFyZ2Vfc2FpbnRfcGllcnJlX21pcXVlbG9uXCJdXG4gICAgICAgICAgICAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRlZV9lbl9jaGFyZ2Vfc2FpbnRfcGllcnJlX21pcXVlbG9uXylcbiAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250w6llX2VuX2NoYXJnZV9zYWludF9waWVycmVfbWlxdWVsb25cIjtcbiAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl0ge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfVxuICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBhaWRlX2ZpbmFsZV8pKSkpKSkpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgKCBpZiAob19sdF9tb25fbW9uIGFpZGVfZmluYWxlXyBtb250YW50X21pbmltYWxfYWlkZV9kODQyXzZfKVxuICAgICAgICAgICAgICAgICAgdGhlbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSBlbHNlIGFpZGVfZmluYWxlXykpKSlcbiAgICAgICB3aXRoXG4gICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT05MzE7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9OTMxOyBlbmRfY29sdW1uPTI1O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBhY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAge0NhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS5tZW5zdWFsaXRlX2VsaWdpYmxlID1cbiAgICAgbWVuc3VhbGl0ZV9lbGlnaWJsZV87XG4gICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS5tZW5zdWFsaXRlX21pbmltYWxlID1cbiAgICAgICBtZW5zdWFsaXRlX21pbmltYWxlXztcbiAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLmNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZSA9XG4gICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlXztcbiAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLmFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgIGFpZGVfZmluYWxlX2Zvcm11bGVfO1xuICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxffVxuXG5sZXQgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgKGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luOiBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnQpIDogRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9XG4gIGxldCBtZW5hZ2VfOiBNZW5hZ2UudCA9IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ubWVuYWdlX2luIGluXG4gIGxldCBkZW1hbmRldXJfOiBEZW1hbmRldXIudCA9IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGVtYW5kZXVyX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlXzogdW5pdCAtPiBib29sID0gZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5jb25kaXRpb25fbG9nZW1lbnRfcmVzaWRlbmNlX3ByaW5jaXBhbGVfaW4gaW5cbiAgbGV0IGNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlXzogdW5pdCAtPiBib29sID0gZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5jb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV9pbiBpblxuICBsZXQgZGF0ZV9lbnRyZWVfdmlndWV1cl9kaWZmZXJlZV9jY2hfOiB1bml0IC0+IGRhdGUgPSBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRhdGVfZW50cmVlX3ZpZ3VldXJfZGlmZmVyZWVfY2NoX2luIGluXG4gIGxldCBkYXRlX2VudHJlZV92aWd1ZXVyX2RpZmZlcmVlX2NjaF86IGRhdGUgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImRhdGVfZW50csOpZV92aWd1ZXVyX2RpZmbDqXLDqWVfY2NoXCJdIHtpb19pbnB1dD1SZWVudHJhbnQ7XG4gICAgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfZGF0ZSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+IGRhdGVfZW50cmVlX3ZpZ3VldXJfZGlmZmVyZWVfY2NoXyAoKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTQzODsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU0Mzg7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjg2MS01XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYXBpdHJlIEkgOiBHdWFkZWxvdXBlLCBHdXlhbmUsIE1hcnRpbmlxdWUsIExhIFLDqXVuaW9uIGV0IE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIFZJIDogRGlzcG9zaXRpb24gcGFydGljdWxpw6hyZXMgw6AgbCdvdXRyZS1tZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMSkgKDEpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzE2OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTMxNjsgZW5kX2NvbHVtbj00NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBzZXVpbF9sODIyXzNfcGFydHNfcHJvcHJpZXRlXzogZGVjaW1hbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgIFwic2V1aWxfbDgyMl8zX3BhcnRzX3Byb3ByacOpdMOpXCJdIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDU7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjItMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENvbmRpdGlvbnMgcmVsYXRpdmVzIGF1IGLDqW7DqWZpY2lhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBkZWNpbWFsX29mX3N0cmluZyBcIjAuMVwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMjE7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzIxOyBlbmRfY29sdW1uPTM5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHNldWlsX2w4MjJfM19wYXJ0c191c3VmcnVpdF86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwic2V1aWxfbDgyMl8zX3BhcnRzX3VzdWZydWl0XCJdXG4gICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2RlY2ltYWwpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDY7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjItMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENvbmRpdGlvbnMgcmVsYXRpdmVzIGF1IGLDqW7DqWZpY2lhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBkZWNpbWFsX29mX3N0cmluZyBcIjAuMVwiKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMjI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzIyOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHVzdWZydWl0X291X3Byb3ByaWV0ZV9mYW1pbGxlXzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgIFwidXN1ZnJ1aXRfb3VfcHJvcHJpw6l0w6lfZmFtaWxsZVwiXSB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PWZhbHNlfVxuICAgIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTY0OyBlbmRfY29sdW1uPTQzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODIyLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fb3JcbiAgICAgICAgICAgICAgKG1hdGNoICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50LnByb3ByaWV0YWlyZSlcbiAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgIHwgUGFyZW50T3VBdXRyZS5EZW1hbmRldXJPdUNvbmpvaW50T3VQYXJlbnRPdVZpYVBhcnRzU29jaWV0ZXMgcGFydHNfIC0+XG4gICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgfCBQYXJlbnRPdUF1dHJlLkF1dHJlIF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgIChtYXRjaCAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC51c3VmcnVpdClcbiAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgIHwgUGFyZW50T3VBdXRyZS5EZW1hbmRldXJPdUNvbmpvaW50T3VQYXJlbnRPdVZpYVBhcnRzU29jaWV0ZXMgcGFydHNfIC0+XG4gICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgfCBQYXJlbnRPdUF1dHJlLkF1dHJlIF8gLT4gZmFsc2UpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMjA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzIwOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG5vbWJyZV9wZXJzb25uZXNfbG9nZW1lbnRfOiBpbnRlZ2VyID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcIm5vbWJyZV9wZXJzb25uZXNfbG9nZW1lbnRcIl1cbiAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfaW50ZWdlcikgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAxMjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDEyOyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogQ29uZGl0aW9ucyByZWxhdGl2ZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19hZGRfaW50X2ludFxuICAgICAgICAgICAgICAob19hZGRfaW50X2ludFxuICAgICAgICAgICAgICAgICAobWF0Y2ggKG1lbmFnZV8uTWVuYWdlLnNpdHVhdGlvbl9mYW1pbGlhbGUpXG4gICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5DZWxpYmF0YWlyZSBfIC0+IChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKVxuICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuTWFyaWVzIF8gLT4gKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKVxuICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuUGFjc2VzIF8gLT4gKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKVxuICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ29uY3ViaW5zIF8gLT4gKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKVxuICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmVTZXBhcmVEZUZhaXQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjFcIilcbiAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNvbmN1YmluYWdlRG9udFNlcGFyZURlRmFpdCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMlwiKSlcbiAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLm5vbWJyZV9hdXRyZXNfb2NjdXBhbnRzX2xvZ2VtZW50KSlcbiAgICAgICAgICAgICAgKG9fbGVuZ3RoIChtZW5hZ2VfLk1lbmFnZS5wZXJzb25uZXNfYV9jaGFyZ2UpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzE3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMxNzsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBzZXB0aWVtZV9hbGluZWFfbDgyM18xX2FwcGxpY2FibGVfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgXCJzZXB0acOobWVfYWxpbsOpYV9sODIzXzFfYXBwbGljYWJsZVwiXSB7aW9faW5wdXQ9Tm9JbnB1dDtcbiAgICBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMzU0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEzNTQ7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODYxLTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogR3VhZGVsb3VwZSwgR3V5YW5lLCBNYXJ0aW5pcXVlLCBMYSBSw6l1bmlvbiBldCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIFZJIDogRGlzcG9zaXRpb25zIHBhcnRpY3VsacOocmVzIMOgIGwnb3V0cmUtbWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChtZW5hZ2VfLk1lbmFnZS5yZXNpZGVuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5MYVJldW5pb24gXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvbiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1heW90dGUgXyAtPiB0cnVlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQzMzsgc3RhcnRfY29sdW1uPTk7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDMzOyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjMtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzEwOyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMTA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzEwOyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbmRpdGlvbl9ub25fb3V2ZXJ0dXJlX2w4MjJfOV9kZWNlbmNlX2xvZ2VtZW50XzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgIFwiY29uZGl0aW9uX25vbl9vdXZlcnR1cmVfbDgyMl85X2RlY2VuY2VfbG9nZW1lbnRcIl0ge2lvX2lucHV0PU5vSW5wdXQ7XG4gICAgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjQ7IHN0YXJ0X2NvbHVtbj0xODtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjQ7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19ub3RcbiAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubG9nZW1lbnRfZGVjZW50X2w4OV80NjIpKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzA4OyBlbmRfY29sdW1uPTU4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMDg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzA4OyBlbmRfY29sdW1uPTU4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbmRpdGlvbl9ub25fb3V2ZXJ0dXJlX2w4MjJfOF86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImNvbmRpdGlvbl9ub25fb3V2ZXJ0dXJlX2w4MjJfOFwiXSB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PWZhbHNlfVxuICAgIChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM1MDsgc3RhcnRfY29sdW1uPTE4O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM1MDsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODIyLThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5jb25kaXRpb25fcmF0dGFjaGVfZm95ZXJfZmlzY2FsX3BhcmVudF9pZmkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMwNzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMDc7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMwNzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMDc7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlXzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgIFwiY29uZGl0aW9uX2xvZ2VtZW50X3LDqXNpZGVuY2VfcHJpbmNpcGFsZVwiXSB7aW9faW5wdXQ9UmVlbnRyYW50O1xuICAgIGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPiBjb25kaXRpb25fbG9nZW1lbnRfcmVzaWRlbmNlX3ByaW5jaXBhbGVfICgpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDY7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODIxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDEgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogUsOoZ2xlcyBkZSBub24tY3VtdWxcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogUHJpbmNpcGVzIGfDqW7DqXJhdXhcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50LnJlc2lkZW5jZV9wcmluY2lwYWxlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMwMzsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMwMzsgZW5kX2NvbHVtbj01MTtcbiAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzAzOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTMwMzsgZW5kX2NvbHVtbj01MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2RvdF9kYXRlX25haXNzYW5jZV9hc3N1cmVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgXCJvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlLmRhdGVfbmFpc3NhbmNlX2Fzc3Vyw6lcIl1cbiAgICAgIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTIzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEyMzsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDE2MS0xNy0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFyYWdyYXBoZSAxIDogSW5mb3JtYXRpb24gZXQgc2ltcGxpZmljYXRpb24gZGVzIGTDqW1hcmNoZXMgZGVzIGFzc3Vyw6lzLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiA0IDogQXNzdXJhbmNlIHZpZWlsbGVzc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBCw6luw6lmaWNpYWlyZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIFZJIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnMgZXQgYXV4IHNvaW5zIC0gQ29udHLDtGxlIG3DqWRpY2FsIC0gVHV0ZWxsZSBhdXggcHJlc3RhdGlvbnMgc29jaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUk6IFRpdHJlIElJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyByZWxhdGl2ZXMgYXUgZmluYW5jZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGVtYW5kZXVyXy5EZW1hbmRldXIuZGF0ZV9uYWlzc2FuY2UpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTIzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEyMzsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDE2MS0xNy0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFyYWdyYXBoZSAxIDogSW5mb3JtYXRpb24gZXQgc2ltcGxpZmljYXRpb24gZGVzIGTDqW1hcmNoZXMgZGVzIGFzc3Vyw6lzLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiA0IDogQXNzdXJhbmNlIHZpZWlsbGVzc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBCw6luw6lmaWNpYWlyZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAxZXIgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9uc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIFZJIDogRGlzcG9zaXRpb25zIHJlbGF0aXZlcyBhdXggcHJlc3RhdGlvbnMgZXQgYXV4IHNvaW5zIC0gQ29udHLDtGxlIG3DqWRpY2FsIC0gVHV0ZWxsZSBhdXggcHJlc3RhdGlvbnMgc29jaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUk6IFRpdHJlIElJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyByZWxhdGl2ZXMgYXUgZmluYW5jZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IE91dmVydHVyZURyb2l0c1JldHJhaXRlLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVcIjtcbiAgICAgIFwiT3V2ZXJ0dXJlRHJvaXRzUmV0cmFpdGVcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlXCI7XG4gICAgICBcIk91dmVydHVyZURyb2l0c1JldHJhaXRlXCJdIG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGUpXG4gICAgKHtPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZUluLmRhdGVfbmFpc3NhbmNlX2Fzc3VyZV9pbiA9XG4gICAgICAgIG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfZG90X2RhdGVfbmFpc3NhbmNlX2Fzc3VyZV99KSkpIGluXG4gIGxldCBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2RvdF9hZ2Vfb3V2ZXJ0dXJlX2Ryb2l0XzogZHVyYXRpb24gPSByZXN1bHRfLk91dmVydHVyZURyb2l0c1JldHJhaXRlLmFnZV9vdXZlcnR1cmVfZHJvaXQgaW5cbiAgbGV0IGNvbmRpdGlvbl9uYXRpb25hbGl0ZV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwiY29uZGl0aW9uX25hdGlvbmFsaXTDqVwiXVxuICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEzMTI7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEzMTI7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg2MS01XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogR3VhZGVsb3VwZSwgR3V5YW5lLCBNYXJ0aW5pcXVlLCBMYSBSw6l1bmlvbiBldCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBWSSA6IERpc3Bvc2l0aW9ucyBwYXJ0aWN1bGnDqHJlcyDDoCBsJ291dHJlLW1lclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKG1lbmFnZV8uTWVuYWdlLnJlc2lkZW5jZSlcbiAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3V5YW5lIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTGFSZXVuaW9uIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1heW90dGUgXyAtPiB0cnVlKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIChkZW1hbmRldXJfLkRlbWFuZGV1ci5uYXRpb25hbGl0ZSlcbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IE5hdGlvbmFsaXRlLkZyYW5jYWlzZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIHwgTmF0aW9uYWxpdGUuRXRyYW5nZXJlIGNvbmRpdGlvbnNfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY29uZGl0aW9uc18uQ29uZGl0aW9uc0V0cmFuZ2Vycy5zYXRpc2ZhaXRfYXJ0XzRfb3Jkb25uYW5jZV8yMDAyX21heW90dGUpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTI1OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODIyLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG1hdGNoIChkZW1hbmRldXJfLkRlbWFuZGV1ci5uYXRpb25hbGl0ZSlcbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgTmF0aW9uYWxpdGUuRnJhbmNhaXNlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgfCBOYXRpb25hbGl0ZS5FdHJhbmdlcmUgY29uZGl0aW9uc18gLT5cbiAgICAgICAgICAgICAgICAoY29uZGl0aW9uc18uQ29uZGl0aW9uc0V0cmFuZ2Vycy5zYXRpc2ZhaXRfY29uZGl0aW9uc19sNTEyXzJfY29kZV9zZWN1cml0ZV9zb2NpYWxlKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzAyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMwMjsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBfOiB1bml0ID0gaWYgKFxuICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTgpICg0KSAoMSkpKVxuICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzY2OyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzY2OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSB0aGVuXG4gICAgICAgICAgICAgICAgICAoKSBlbHNlXG4gICAgICAgICAgICAgICAgICByYWlzZSAoQXNzZXJ0aW9uRmFpbGVkIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjY7IHN0YXJ0X2NvbHVtbj0xMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNjY7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSBpblxuICBsZXQgcGxhZm9uZF9pbmRpdmlkdWVsX2w4MTVfOV9zZWN1XzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcInBsYWZvbmRfaW5kaXZpZHVlbF9sODE1Xzlfc8OpY3VcIl0ge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD1mYWxzZX1cbiAgICAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9zw6ljdXJpdMOpX3NvY2lhbGUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMyOTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMzA7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODE1LTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogT3V2ZXJ0dXJlIGR1IGRyb2l0IGV0IGxpcXVpZGF0aW9uIGRlIGwnYWxsb2NhdGlvbiBkZSBzb2xpZGFyaXTDqSBhdXggcGVyc29ubmVzIMOiZ8OpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgNSA6IEFsbG9jYXRpb24gZGUgc29saWRhcml0w6kgYXV4IHBlcnNvbm5lcyDDomfDqWVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIEkgOiBBbGxvY2F0aW9ucyBhdXggcGVyc29ubmVzIMOiZ8OpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFsbG9jYXRpb25zIGF1eCBwZXJzb25uZXMgw6Jnw6llcyAtIEFsbG9jYXRpb24gYXV4IGFkdWx0ZXMgaGFuZGljYXDDqXMgLSBBaWRlcyDDoCBsJ2VtcGxvaSBwb3VyIGxhIGdhcmRlIGRlcyBqZXVuZXMgZW5mYW50cyAtIFByb3RlY3Rpb24gY29tcGzDqW1lbnRhaXJlIGVuIG1hdGnDqHJlIGRlIHNhbnTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmUgLSBEw6ljcmV0cyBzaW1wbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOCkgKDQpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMTkpICgxKSAoMSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjk5OTg0MFwiKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX3PDqWN1cml0w6lfc29jaWFsZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzM0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTMzNTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MTUtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBPdXZlcnR1cmUgZHUgZHJvaXQgZXQgbGlxdWlkYXRpb24gZGUgbCdhbGxvY2F0aW9uIGRlIHNvbGlkYXJpdMOpIGF1eCBwZXJzb25uZXMgw6Jnw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSA1IDogQWxsb2NhdGlvbiBkZSBzb2xpZGFyaXTDqSBhdXggcGVyc29ubmVzIMOiZ8OpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSSA6IEFsbG9jYXRpb25zIGF1eCBwZXJzb25uZXMgw6Jnw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWxsb2NhdGlvbnMgYXV4IHBlcnNvbm5lcyDDomfDqWVzIC0gQWxsb2NhdGlvbiBhdXggYWR1bHRlcyBoYW5kaWNhcMOpcyAtIEFpZGVzIMOgIGwnZW1wbG9pIHBvdXIgbGEgZ2FyZGUgZGVzIGpldW5lcyBlbmZhbnRzIC0gUHJvdGVjdGlvbiBjb21wbMOpbWVudGFpcmUgZW4gbWF0acOocmUgZGUgc2FudMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTA0MTg0MFwiKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX3PDqWN1cml0w6lfc29jaWFsZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzM5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM0MDsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MTUtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBPdXZlcnR1cmUgZHUgZHJvaXQgZXQgbGlxdWlkYXRpb24gZGUgbCdhbGxvY2F0aW9uIGRlIHNvbGlkYXJpdMOpIGF1eCBwZXJzb25uZXMgw6Jnw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSA1IDogQWxsb2NhdGlvbiBkZSBzb2xpZGFyaXTDqSBhdXggcGVyc29ubmVzIMOiZ8OpZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSSA6IEFsbG9jYXRpb25zIGF1eCBwZXJzb25uZXMgw6Jnw6llc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWxsb2NhdGlvbnMgYXV4IHBlcnNvbm5lcyDDomfDqWVzIC0gQWxsb2NhdGlvbiBhdXggYWR1bHRlcyBoYW5kaWNhcMOpcyAtIEFpZGVzIMOgIGwnZW1wbG9pIHBvdXIgbGEgZ2FyZGUgZGVzIGpldW5lcyBlbmZhbnRzIC0gUHJvdGVjdGlvbiBjb21wbMOpbWVudGFpcmUgZW4gbWF0acOocmUgZGUgc2FudMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZSAtIETDqWNyZXRzIHNpbXBsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIwKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMSkgKDEpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTA4Mzg0MFwiKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hdXRyZXNfc291cmNlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTg7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2lyY3VsYWlyZSBkZSBsYSBDTkFWIDIwMjMtMyBkdSAwOS8wMS8yMDIyIFxcXCJSZXZhbG9yaXNhdGlvbiDDoCBjb21wdGVyIGR1IDFlciBqYW52aWVyIDIwMjNcXFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk1vbnRhbnRzIHJldmFsb3Jpc8OpcyBkZSBsJ2FsbG9jYXRpb24gZGUgc29saWRhcml0w6kgYXV4IHBlcnNvbm5lcyDDomfDqWVzXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMykgKDEpICgxKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtb25leV9vZl9jZW50c19zdHJpbmcgXCIxMTUzMzAyXCIpKTtcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2F1dHJlc19zb3VyY2VzLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04OTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05MDsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDaXJjdWxhaXJlIGRlIGxhIENOQVYgMjAyMi0zIGR1IDExLzAxLzIwMjIgXFxcIlJldmFsb3Jpc2F0aW9uIMOgIGNvbXB0ZXIgZHUgMWVyIGphbnZpZXIgMjAyMlxcXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudHMgcmV2YWxvcmlzw6lzIGRlIGwnYWxsb2NhdGlvbiBkZSBzb2xpZGFyaXTDqSBhdXggcGVyc29ubmVzIMOiZ8OpZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMykgKDEpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTEwMDE0NFwiKSk7XG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9hdXRyZXNfc291cmNlcy5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTIyOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyMzsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDaXJjdWxhaXJlIGRlIGxhIENOQVYgMjAyMS0xIGR1IDExLzAxLzIwMjEgXFxcIlJldmFsb3Jpc2F0aW9uIMOgIGNvbXB0ZXIgZHUgMWVyIGphbnZpZXIgMjAyMVxcXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTW9udGFudHMgcmV2YWxvcmlzw6lzIGRlIGwnYWxsb2NhdGlvbiBkZSBzb2xpZGFyaXTDqSBhdXggcGVyc29ubmVzIMOiZ8OpZXNcIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0IGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMikgKDEpICgxKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMTA4ODE3NVwiKSl8XSlcbiAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMjU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzI1OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbmRpdGlvbl9sb2dlbWVudF9sb2NhdGlvbl90aWVyc186IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImNvbmRpdGlvbl9sb2dlbWVudF9sb2NhdGlvbl90aWVyc1wiXSB7aW9faW5wdXQ9Tm9JbnB1dDtcbiAgICBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjI5OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi00XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5sb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVycylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExvdWVPdVNvdXNMb3VlQURlc1RpZXJzLk5vbiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMb3VlT3VTb3VzTG91ZUFEZXNUaWVycy5PdWkgcGVyc29ubmVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsZXQgcmVzdWx0XyA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyaWZpY2F0aW9uQWdlU3VwZXJpZXVyQS50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiVsOpcmlmaWNhdGlvbsOCZ2VTdXDDqXJpZXVyw4BcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZGlyZWN0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiVsOpcmlmaWNhdGlvbsOCZ2VTdXDDqXJpZXVyw4BcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZGlyZWN0XCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX3ZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfaW4pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtWZXJpZmljYXRpb25BZ2VTdXBlcmlldXJBSW4uZGF0ZV9uYWlzc2FuY2VfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwZXJzb25uZV8uUGVyc29ubmVTb3VzTG9jYXRpb24uZGF0ZV9uYWlzc2FuY2VfcGVyc29ubmVfc291c19sb2NhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIyNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIyNTsgZW5kX2NvbHVtbj03NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJpZmljYXRpb25BZ2VTdXBlcmlldXJBSW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSBkYXRlX2NvdXJhbnRlXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjI2OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODIyLTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcmlmaWNhdGlvbkFnZVN1cGVyaWV1ckFJbi5hbm5lZXNfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICgzMCkgKDApICgwKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0yMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjI3OyBlbmRfY29sdW1uPTI3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODIyLTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSl9KSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgcmVzdWx0XyA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJpZmljYXRpb25BZ2VTdXBlcmlldXJBLnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtWZXJpZmljYXRpb25BZ2VTdXBlcmlldXJBLmVzdF9zdXBlcmlldXIgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLlZlcmlmaWNhdGlvbkFnZVN1cGVyaWV1ckEuZXN0X3N1cGVyaWV1cil9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJWw6lyaWZpY2F0aW9uw4JnZVN1cMOpcmlldXLDgFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRpcmVjdFwiXSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJWw6lyaWZpY2F0aW9uw4JnZVN1cMOpcmlldXLDgFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRpcmVjdFwiOyBcIm91dHB1dFwiXSB7aW9faW5wdXQ9Tm9JbnB1dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvX291dHB1dD10cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX3ZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2EpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMjQ7IHN0YXJ0X2NvbHVtbj04O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIyNzsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODIyLTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSB0aGVuIHJlc3VsdF8gZWxzZSByZXN1bHRfKSkpKSkpKS5WZXJpZmljYXRpb25BZ2VTdXBlcmlldXJBLmVzdF9zdXBlcmlldXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGVyc29ubmVfLlBlcnNvbm5lU291c0xvY2F0aW9uLmNvbmZvcm1lX2FydGljbGVfbDQ0Ml8xKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yMTU7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIxNjsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODIyLTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5sb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVycylcbiAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgTG91ZU91U291c0xvdWVBRGVzVGllcnMuTm9uIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgfCBMb3VlT3VTb3VzTG91ZUFEZXNUaWVycy5PdWkgXyAtPiBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMwNTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMDU7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMwNTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMDU7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICBcInByZXN0YXRpb25zX2ZhbWlsaWFsZXMuZGF0ZV9jb3VyYW50ZVwiXSB7aW9faW5wdXQ9T25seUlucHV0O1xuICAgICAgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzY4OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM2ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zNjg7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3Jlc2lkZW5jZV86IENvbGxlY3Rpdml0ZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgXCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzLnLDqXNpZGVuY2VcIl0ge2lvX2lucHV0PU9ubHlJbnB1dDtcbiAgICAgIGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2NvbGxlY3Rpdml0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNjk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzY5OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1lbmFnZV8uTWVuYWdlLnJlc2lkZW5jZSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zNjk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzY5OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9hZ2VfbDUxMl8zXzJfOiB1bml0IC0+IGR1cmF0aW9uID0gZnVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInByZXN0YXRpb25zX2ZhbWlsaWFsZXMuw6JnZV9sNTEyXzNfMlwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9UmVlbnRyYW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9kdXJhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU4Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01ODQxOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFydGljbGUgUjg2Mi0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiBJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IFNhaW50LUJhcnRow6lsZW15IGV0IFNhaW50LU1hcnRpblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2VudHJlZV92aWd1ZXVyX2RpZmZlcmVlX2NjaF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWVuYWdlXy5NZW5hZ2UucmVzaWRlbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZpdGUuTWF5b3R0ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbl9vZl9udW1iZXJzICgyMikgKDApICgwKSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2MzI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj02O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01NjM4OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFydGljbGUgRDg2MS05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBWSSA6IERpc3Bvc2l0aW9uIHBhcnRpY3VsacOocmVzIMOgIGwnb3V0cmUtbWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5yZXNpZGVuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5HdXlhbmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZpdGUuTGFSZXVuaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGVjdGl2aXRlLlNhaW50TWFydGluIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZpdGUuTWF5b3R0ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb25fb2ZfbnVtYmVycyAoMjIpICgwKSAoMCkpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvcikpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExMjk7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQXJ0aWNsZSBSODIzLTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb25fb2ZfbnVtYmVycyAoMjEpICgwKSAoMCkpKSkgaW5cbiAgbGV0IHJlc3VsdF86IEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcInByZXN0YXRpb25zX2ZhbWlsaWFsZXNcIjtcbiAgICAgIFwiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcInByZXN0YXRpb25zX2ZhbWlsaWFsZXNcIjtcbiAgICAgIFwiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiXVxuICAgIGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMpXG4gICAgKHtFbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlc0luLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICAgRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5yZXNpZGVuY2VfaW4gPVxuICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3Jlc2lkZW5jZV87XG4gICAgICAgIEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4uYWdlX2w1MTJfM18yX2luID1cbiAgICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9hZ2VfbDUxMl8zXzJffSkpKSBpblxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfYWdlX2w1MTJfM18yXzogZHVyYXRpb24gPSByZXN1bHRfLkVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzLmFnZV9sNTEyXzNfMiBpblxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfZHJvaXRfb3V2ZXJ0XzogRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCA9IHJlc3VsdF8uRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuZHJvaXRfb3V2ZXJ0IGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9jb25kaXRpb25zX2hvcnNfYWdlXzogRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgPSByZXN1bHRfLkVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzLmNvbmRpdGlvbnNfaG9yc19hZ2UgaW5cbiAgbGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3JlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xXzogYm9vbCA9IHJlc3VsdF8uRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXMucmVnaW1lX291dHJlX21lcl9sNzUxXzEgaW5cbiAgbGV0IF86IHVuaXQgPSBpZiAoXG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgKG9fbHRfcmF0X3JhdCBzZXVpbF9sODIyXzNfcGFydHNfcHJvcHJpZXRlX1xuICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjJcIikpXG4gICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE5OTsgc3RhcnRfY29sdW1uPTEzO1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE5OTsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODIyLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpXG4gICAgICAgICAgICAgICAgICB0aGVuICgpIGVsc2VcbiAgICAgICAgICAgICAgICAgIHJhaXNlIChBc3NlcnRpb25GYWlsZWQge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTk5OyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTk5OyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pIGluXG4gIGxldCBfOiB1bml0ID0gaWYgKFxuICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgIChvX2x0X3JhdF9yYXQgc2V1aWxfbDgyMl8zX3BhcnRzX3VzdWZydWl0X1xuICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLjJcIikpXG4gICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTIwMDsgc3RhcnRfY29sdW1uPTEzO1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTIwMDsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODIyLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpXG4gICAgICAgICAgICAgICAgICB0aGVuICgpIGVsc2VcbiAgICAgICAgICAgICAgICAgIHJhaXNlIChBc3NlcnRpb25GYWlsZWQge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjAwOyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjAwOyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pIGluXG4gIGxldCBjb25kaXRpb25fbG9nZW1lbnRfbW9kZV9vY2N1cGF0aW9uXzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgIFwiY29uZGl0aW9uX2xvZ2VtZW50X21vZGVfb2NjdXBhdGlvblwiXSB7aW9faW5wdXQ9Tm9JbnB1dDtcbiAgICBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7IGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODk7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xOTU7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kIHVzdWZydWl0X291X3Byb3ByaWV0ZV9mYW1pbGxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9yYXRfcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50LnByb3ByaWV0YWlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQYXJlbnRPdUF1dHJlLkRlbWFuZGV1ck91Q29uam9pbnRPdVBhcmVudE91VmlhUGFydHNTb2NpZXRlcyBwYXJ0c18gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydHNfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQYXJlbnRPdUF1dHJlLkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMC5cIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXVpbF9sODIyXzNfcGFydHNfcHJvcHJpZXRlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0X3JhdF9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQudXN1ZnJ1aXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGFyZW50T3VBdXRyZS5EZW1hbmRldXJPdUNvbmpvaW50T3VQYXJlbnRPdVZpYVBhcnRzU29jaWV0ZXMgcGFydHNfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGFyZW50T3VBdXRyZS5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V1aWxfbDgyMl8zX3BhcnRzX3VzdWZydWl0XykpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNzQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTc2OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXN1ZnJ1aXRfb3VfcHJvcHJpZXRlX2ZhbWlsbGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT4gZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDk7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMi0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQucmVzaWRlbmNlX3ByaW5jaXBhbGUpXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT4gdHJ1ZSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzA0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMwNDsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzA0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMwNDsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwiY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VcIl1cbiAgICB7aW9faW5wdXQ9UmVlbnRyYW50OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT4gY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfICgpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTUyNTY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTUyNTc7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjg0NC00XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJViA6IENvbmRpdGlvbnMgZGUgcGV1cGxlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWVuYWdlXy5NZW5hZ2UucGVyc29ubmVzX2FnZWVzX2hhbmRpY2FwZWVzX2ZveWVyX3I4NDRfNClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21icmVfcGVyc29ubmVzX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIyXCIpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTI0OTsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTUyNTE7IGVuZF9jb2x1bW49NTg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4NDQtNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElWIDogQ29uZGl0aW9ucyBkZSBwZXVwbGVtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5wZXJzb25uZXNfYWdlZXNfaGFuZGljYXBlZXNfZm95ZXJfcjg0NF80KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50LnN1cmZhY2VfbV9jYXJyZXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBub21icmVfcGVyc29ubmVzX2xvZ2VtZW50X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiOVwiKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxNlwiKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDI1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEwNDI7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIyLTI1XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IENvbmRpdGlvbnMgcmVsYXRpdmVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV9taW5pbWFsZV9zYW5zX3NldWlsX21fY2FycmVzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW50ZWdlciA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKG1lbmFnZV8uTWVuYWdlLnNpdHVhdGlvbl9mYW1pbGlhbGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiOVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5NYXJpZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMTZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuUGFjc2VzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjE2XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNvbmN1YmlucyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxNlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5DZWxpYmF0YWlyZVNlcGFyZURlRmFpdCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCI5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNvbmN1YmluYWdlRG9udFNlcGFyZURlRmFpdCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcl9vZl9zdHJpbmcgXCIxNlwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5ub21icmVfYXV0cmVzX29jY3VwYW50c19sb2dlbWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWVuYWdlXy5NZW5hZ2UucGVyc29ubmVzX2FfY2hhcmdlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiOVwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV9taW5pbWFsZV9zYW5zX3NldWlsX21fY2FycmVzX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjcwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9pbnRfaW50IG5vbWJyZV9wZXJzb25uZXNfbG9nZW1lbnRfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiOFwiKSkpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50LnN1cmZhY2VfbV9jYXJyZXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiNzBcIikpIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50LnN1cmZhY2VfbV9jYXJyZXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfbWluaW1hbGVfc2Fuc19zZXVpbF9tX2NhcnJlc18pKSkpKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDY7IHN0YXJ0X2NvbHVtbj0xMjtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMDY7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMwNjsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0zMDY7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWdlX2wxNjFfMTdfMl9zZWN1XzogZHVyYXRpb24gPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwiw6JnZV9sMTYxXzE3XzJfc8OpY3VcIl1cbiAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfZHVyYXRpb24pIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX3PDqWN1cml0w6lfc29jaWFsZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTI1OyBlbmRfY29sdW1uPTMyO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMMTYxLTE3LTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJhZ3JhcGhlIDEgOiBJbmZvcm1hdGlvbiBldCBzaW1wbGlmaWNhdGlvbiBkZXMgZMOpbWFyY2hlcyBkZXMgYXNzdXLDqXMuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDQgOiBBc3N1cmFuY2UgdmllaWxsZXNzZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IELDqW7DqWZpY2lhaXJlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDFlciA6IERpc3Bvc2l0aW9ucyByZWxhdGl2ZXMgYXV4IHByZXN0YXRpb25zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgVkkgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBwcmVzdGF0aW9ucyBldCBhdXggc29pbnMgLSBDb250csO0bGUgbcOpZGljYWwgLSBUdXRlbGxlIGF1eCBwcmVzdGF0aW9ucyBzb2NpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSTogVGl0cmUgSUlJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIHJlbGF0aXZlcyBhdSBmaW5hbmNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2RvdF9hZ2Vfb3V2ZXJ0dXJlX2Ryb2l0XykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzI0OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTMyNDsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb25kaXRpb25fb3V2ZXJ0dXJlX2w4MjJfMTBfcGV1cGxlbWVudF9sb2dlbWVudF86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImNvbmRpdGlvbl9vdXZlcnR1cmVfbDgyMl8xMF9wZXVwbGVtZW50X2xvZ2VtZW50XCJdIHtpb19pbnB1dD1Ob0lucHV0O1xuICAgIGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzg5OyBzdGFydF9jb2x1bW49MTg7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mzg5OyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjItMTBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogQ29uZGl0aW9ucyBnw6luw6lyYWxlcyBkJ2F0dHJpYnV0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlXykpIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMDk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzA5OyBlbmRfY29sdW1uPTU4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zMDk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzA5OyBlbmRfY29sdW1uPTU4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFnZV9sMzUxXzhfMV9zZWN1XzogZHVyYXRpb24gPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7IFwiw6JnZV9sMzUxXzhfMV9zw6ljdVwiXVxuICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9kdXJhdGlvbikgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfc8OpY3VyaXTDqV9zb2NpYWxlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE2Mzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNjM7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEwzNTEtOFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gNSA6IFRhdXggZXQgbW9udGFudCBkZSBsYSBwZW5zaW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMWVyIDogT3V2ZXJ0dXJlIGR1IGRyb2l0LCBsaXF1aWRhdGlvbiBldCBjYWxjdWwgZGVzIHBlbnNpb25zIGRlIHJldHJhaXRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgViA6IEFzc3VyYW5jZSB2aWVpbGxlc3NlIC0gQXNzdXJhbmNlIHZldXZhZ2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBJSUkgOiBEaXNwb3NpdGlvbnMgcmVsYXRpdmVzIGF1eCBhc3N1cmFuY2VzIHNvY2lhbGVzIGV0IMOgIGRpdmVyc2VzIGNhdMOpZ29yaWVzIGRlIHBlcnNvbm5lcyByYXR0YWNow6llcyBhdSByw6lnaW1lIGfDqW7DqXJhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG9fYWRkX2R1cl9kdXIgYWdlX2wxNjFfMTdfMl9zZWN1X1xuICAgICAgICAgICAgICAoZHVyYXRpb25fb2ZfbnVtYmVycyAoNSkgKDApICgwKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMyMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMjM7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfbG9nZW1lbnRfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfbG9nZW1lbnRcIl1cbiAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFxuICAgICAgICAgICAgICAgICAgICAgICAgIFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTI7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2hhcGl0cmUgSUkgOiBDb25kaXRpb25zIGfDqW7DqXJhbGVzIGQnYXR0cmlidXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yIGNvbmRpdGlvbl9ub25fb3V2ZXJ0dXJlX2w4MjJfOF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25fbm9uX291dmVydHVyZV9sODIyXzlfZGVjZW5jZV9sb2dlbWVudF8pKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg3OyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDaGFwaXRyZSBJSSA6IENvbmRpdGlvbnMgZ8OpbsOpcmFsZXMgZCdhdHRyaWJ1dGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmQgY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlX1xuICAgICAgICAgICAgICAgICAgICAgICAob19hbmQgY29uZGl0aW9uX2xvZ2VtZW50X21vZGVfb2NjdXBhdGlvbl9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kIGNvbmRpdGlvbl9sb2dlbWVudF9sb2NhdGlvbl90aWVyc19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uX291dmVydHVyZV9sODIyXzEwX3BldXBsZW1lbnRfbG9nZW1lbnRfKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMxMTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMTE7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMxMTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMTE7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29uZGl0aW9uXzJfcjgyM180XzogUGVyc29ubmVBQ2hhcmdlLnQgLT4gYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjsgXCJjb25kaXRpb25fMl9yODIzXzRcIl1cbiAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PXRydWV9ICh1bmVtYmVkZGFibGUpXG4gICAgKGZ1biAocGVyc29ubmVfYV9jaGFyZ2VfOiBQZXJzb25uZUFDaGFyZ2UudCkgLT4gXG4gICAgICAgdHJ5XG4gICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExNjg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOTE7IGVuZF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyMy00XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHBlcnNvbm5lX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuRW5mYW50QUNoYXJnZSBlbmZhbnRfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5BdXRyZVBlcnNvbm5lQUNoYXJnZSBwYXJlbnRfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgKHBhcmVudF8uQXV0cmVQZXJzb25uZUFDaGFyZ2UucGFyZW50ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUGFyZW50ZS5Bc2NlbmRhbnQgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmVudF8uQXV0cmVQZXJzb25uZUFDaGFyZ2UucmVzc291cmNlcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19tdWx0X21vbl9yYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX2luZGl2aWR1ZWxfbDgxNV85X3NlY3VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2ltYWxfb2Zfc3RyaW5nIFwiMS4yNVwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2RhdF9kdXIgQWJvcnRPblJvdW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmVudF8uQXV0cmVQZXJzb25uZUFDaGFyZ2UuZGF0ZV9uYWlzc2FuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlX2wzNTFfOF8xX3NlY3VfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJlbnRfLkF1dHJlUGVyc29ubmVBQ2hhcmdlLnRpdHVsYWlyZV9hbGxvY2F0aW9uX3BlcnNvbm5lX2FnZWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsZXQgcmVzdWx0XyA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcmlmaWNhdGlvbkFnZUluZmVyaWV1ck91RWdhbEEudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiVsOpcmlmaWNhdGlvbsOCZ2VJbmbDqXJpZXVyT3XDiWdhbMOAXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXJlY3RcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIlbDqXJpZmljYXRpb27DgmdlSW5mw6lyaWV1ck91w4lnYWzDgFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZGlyZWN0XCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW9fb3V0cHV0PWZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hX2luKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1ZlcmlmaWNhdGlvbkFnZUluZmVyaWV1ck91RWdhbEFJbi5kYXRlX25haXNzYW5jZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmVudF8uQXV0cmVQZXJzb25uZUFDaGFyZ2UuZGF0ZV9uYWlzc2FuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExODE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExODE7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyMy00XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJpZmljYXRpb25BZ2VJbmZlcmlldXJPdUVnYWxBSW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgZGF0ZV9jb3VyYW50ZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExODI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49Mzc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTgyOyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQXJ0aWNsZSBSODIzLTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcmlmaWNhdGlvbkFnZUluZmVyaWV1ck91RWdhbEFJbi5hbm5lZXNfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICg2NSkgKDApICgwKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExODM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MzA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTgzOyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQXJ0aWNsZSBSODIzLTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKX0pKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IHJlc3VsdF8gOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcmlmaWNhdGlvbkFnZUluZmVyaWV1ck91RWdhbEEudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1ZlcmlmaWNhdGlvbkFnZUluZmVyaWV1ck91RWdhbEEuZXN0X2luZmVyaWV1cl9vdV9lZ2FsID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uVmVyaWZpY2F0aW9uQWdlSW5mZXJpZXVyT3VFZ2FsQS5lc3RfaW5mZXJpZXVyX291X2VnYWwpfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiVsOpcmlmaWNhdGlvbsOCZ2VJbmbDqXJpZXVyT3XDiWdhbMOAXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRpcmVjdFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJWw6lyaWZpY2F0aW9uw4JnZUluZsOpcmlldXJPdcOJZ2Fsw4BcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZGlyZWN0XCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF92ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2EpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE4MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTgzOyBlbmRfY29sdW1uPTM3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODIzLTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpIHRoZW4gcmVzdWx0XyBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0XykpKSkpKSkuVmVyaWZpY2F0aW9uQWdlSW5mZXJpZXVyT3VFZ2FsQS5lc3RfaW5mZXJpZXVyX291X2VnYWwpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9kYXRfZHVyIEFib3J0T25Sb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJlbnRfLkF1dHJlUGVyc29ubmVBQ2hhcmdlLmRhdGVfbmFpc3NhbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZV9sMTYxXzE3XzJfc2VjdV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmVudF8uQXV0cmVQZXJzb25uZUFDaGFyZ2UuYmVuZWZpY2lhaXJlX2wxNjFfMTlfbDM1MV84X2w2NDNfM19zZWN1KSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTMzNDsgc3RhcnRfY29sdW1uPTEyO1xuICAgICAgICAgICAgICAgICBlbmRfbGluZT0zMzQ7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgICAgIHdpdGhcbiAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTMzNDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0zMzQ7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lcIl1cbiAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PXRydWV9IChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNDE7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM0MzsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG9fYW5kIGNvbmRpdGlvbl9uYXRpb25hbGl0ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kIGNvbmRpdGlvbl9sb2dlbWVudF9tb2RlX29jY3VwYXRpb25fXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVsaWdpYmlsaXRlX2xvZ2VtZW50XykpKSkgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTMzMDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0zMzA7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMzMDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0zMzA7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcHJpc2VfZW5fY29tcHRlX3BlcnNvbm5lX2FfY2hhcmdlXzogUGVyc29ubmVBQ2hhcmdlLnQgLT4gYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgIFwicHJpc2VfZW5fY29tcHRlX3BlcnNvbm5lX8OgX2NoYXJnZVwiXSB7aW9faW5wdXQ9Tm9JbnB1dDtcbiAgICBpb19vdXRwdXQ9ZmFsc2V9ICh1bmVtYmVkZGFibGUpXG4gICAgKGZ1biAocGVyc29ubmVfYV9jaGFyZ2VfOiBQZXJzb25uZUFDaGFyZ2UudCkgLT4gXG4gICAgICAgdHJ5XG4gICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEyMTU7IHN0YXJ0X2NvbHVtbj00O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTIyMzsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjMtNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHBlcnNvbm5lX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkVuZmFudEFDaGFyZ2UgZW5mYW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgcGFyZW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyZW50Xy5BdXRyZVBlcnNvbm5lQUNoYXJnZS5wYXJlbnRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBhcmVudGUuQXNjZW5kYW50IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGFyZW50ZS5EZXNjZW5kYW50IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBhcmVudGUuQ29sbGF0ZXJhbERldXhpZW1lVHJvaXNpZW1lRGVncmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJlbnRfLkF1dHJlUGVyc29ubmVBQ2hhcmdlLnBhcmVudGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGFyZW50ZS5Bc2NlbmRhbnQgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGFyZW50ZS5EZXNjZW5kYW50IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGFyZW50ZS5Db2xsYXRlcmFsRGV1eGllbWVUcm9pc2llbWVEZWdyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyZW50Xy5BdXRyZVBlcnNvbm5lQUNoYXJnZS5wYXJlbnRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBhcmVudGUuQXNjZW5kYW50IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBhcmVudGUuRGVzY2VuZGFudCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQYXJlbnRlLkNvbGxhdGVyYWxEZXV4aWVtZVRyb2lzaWVtZURlZ3JlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyZW50Xy5BdXRyZVBlcnNvbm5lQUNoYXJnZS5pbmNhcGFjaXRlXzgwX3BvdXJjZW50X291X3Jlc3RyaWN0aW9uX2VtcGxvaSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9tb25fbW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyZW50Xy5BdXRyZVBlcnNvbm5lQUNoYXJnZS5yZXNzb3VyY2VzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFmb25kX2luZGl2aWR1ZWxfbDgxNV85X3NlY3VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIxLjI1XCIpKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExOTY7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExOTY7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyMy00XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uXzJfcjgyM180XCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uXzJfcjgyM180XCI7IFwib3V0cHV0XCJdIHtpb19pbnB1dD1Ob0lucHV0O1xuICAgICAgICAgICAgICAgICAgICAgICBpb19vdXRwdXQ9dHJ1ZX0gKGVtYmVkX2Jvb2wpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uXzJfcjgyM180XCJdIGNvbmRpdGlvbl8yX3I4MjNfNF8pXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uXzJfcjgyM180XCI7IFwiaW5wdXQwXCJdIHtpb19pbnB1dD1Pbmx5SW5wdXQ7XG4gICAgICAgICAgICAgICAgICAgICAgIGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX3BlcnNvbm5lX2FfY2hhcmdlKVxuICAgICAgICAgICAgICAgICAgICAgICBwZXJzb25uZV9hX2NoYXJnZV8pKSkpKSkpKSkgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpO1xuICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW119IChbfHxdKSAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7IGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xODEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTgxNjsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBcnRpY2xlIEw4NjItM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgVkkgOiBEaXNwb3NpdGlvbnMgcGFydGljdWxpw6hyZXMgw6AgbCdvdXRyZS1tZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWVuYWdlXy5NZW5hZ2UucmVzaWRlbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdXlhbmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50TWFydGluIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXlvdHRlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcnNvbm5lX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5FbmZhbnRBQ2hhcmdlIGVuZmFudF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50QUNoYXJnZS5vYmxpZ2F0aW9uX3Njb2xhaXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5QZW5kYW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkFwcmVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0X2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYWRkX2RhdF9kdXIgQWJvcnRPblJvdW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2UuZGF0ZV9kZV9uYWlzc2FuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2FnZV9sNTEyXzNfMl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLmV0dWRlc19hcHByZW50aXNzYWdlX3N0YWdlX2Zvcm1hdGlvbl9wcm9faW1wb3NzaWJpbGl0ZV90cmF2YWlsKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTQ0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTUwOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg2MS02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiA0IDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBHdWFkZWxvdXBlLCBHdXlhbmUsIE1hcnRpbmlxdWUsIExhIFLDqXVuaW9uIGV0IE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBWSSA6IERpc3Bvc2l0aW9ucyBwYXJ0aWN1bGnDqHJlcyDDoCBsJ291dHJlLW1lclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5yZXNpZGVuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5MYVJldW5pb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWV0cm9wb2xlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXlvdHRlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyc29ubmVfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuRW5mYW50QUNoYXJnZSBlbmZhbnRfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50QUNoYXJnZS5vYmxpZ2F0aW9uX3Njb2xhaXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbk9ibGlnYXRpb25TY29sYWlyZS5BdmFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuUGVuZGFudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUuQXByZXMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9kYXRfZHVyIEFib3J0T25Sb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLmRhdGVfZGVfbmFpc3NhbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9hZ2VfbDUxMl8zXzJfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2UuZXR1ZGVzX2FwcHJlbnRpc3NhZ2Vfc3RhZ2VfZm9ybWF0aW9uX3Byb19pbXBvc3NpYmlsaXRlX3RyYXZhaWwpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQzNzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDQ1OyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MjMtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcHRpZW1lX2FsaW5lYV9sODIzXzFfYXBwbGljYWJsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHBlcnNvbm5lX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuRW5mYW50QUNoYXJnZSBlbmZhbnRfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50QUNoYXJnZS5uYXRpb25hbGl0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5hdGlvbmFsaXRlLkZyYW5jYWlzZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5hdGlvbmFsaXRlLkV0cmFuZ2VyZSBjb25kaXRpb25zXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uZGl0aW9uc18uQ29uZGl0aW9uc0V0cmFuZ2Vycy5zYXRpc2ZhaXRfY29uZGl0aW9uc19sNTEyXzJfY29kZV9zZWN1cml0ZV9zb2NpYWxlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5BdXRyZVBlcnNvbm5lQUNoYXJnZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpKXxdKVxuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTExMzM7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNDc7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgyMy00XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHBlcnNvbm5lX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuRW5mYW50QUNoYXJnZSBlbmZhbnRfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydFwiXSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRcIjsgXCJvdXRwdXRcIl0ge2lvX2lucHV0PU5vSW5wdXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW9fb3V0cHV0PXRydWV9IChlbWJlZF9ib29sKSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9kcm9pdF9vdXZlcnRfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydFwiOyBcImlucHV0MFwiXSB7aW9faW5wdXQ9T25seUlucHV0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvX291dHB1dD1mYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuaWRlbnRpZmlhbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLmlkZW50aWZpYW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLm9ibGlnYXRpb25fc2NvbGFpcmUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2Uub2JsaWdhdGlvbl9zY29sYWlyZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5yZW11bmVyYXRpb25fbWVuc3VlbGxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLnJlbXVuZXJhdGlvbl9tZW5zdWVsbGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuZGF0ZV9kZV9uYWlzc2FuY2UgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2UuZGF0ZV9kZV9uYWlzc2FuY2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50QUNoYXJnZS5hX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzKX0pKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgcGFyZW50XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zMTI7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MzEyOyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICAgICB3aXRoXG4gICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0zMTI7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzEyOyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHBlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXzogUGVyc29ubmVBQ2hhcmdlLnQgYXJyYXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcInBlcnNvbm5lc1/DoF9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZVwiXSB7aW9faW5wdXQ9Tm9JbnB1dDtcbiAgICBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9hcnJheSAoZW1iZWRfcGVyc29ubmVfYV9jaGFyZ2UpKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTE2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExMTY7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MjMtNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX2ZpbHRlclxuICAgICAgICAgICAgICAoZnVuIChwZXJzb25uZV9hX2NoYXJnZV86IFBlcnNvbm5lQUNoYXJnZS50KSAtPiAobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICBcInByaXNlX2VuX2NvbXB0ZV9wZXJzb25uZV/DoF9jaGFyZ2VcIl1cbiAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgXCJwcmlzZV9lbl9jb21wdGVfcGVyc29ubmVfw6BfY2hhcmdlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9dHJ1ZX0gKGVtYmVkX2Jvb2wpXG4gICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgIFwicHJpc2VfZW5fY29tcHRlX3BlcnNvbm5lX8OgX2NoYXJnZVwiXVxuICAgICAgICAgICAgICAgICBwcmlzZV9lbl9jb21wdGVfcGVyc29ubmVfYV9jaGFyZ2VfKVxuICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICBcInByaXNlX2VuX2NvbXB0ZV9wZXJzb25uZV/DoF9jaGFyZ2VcIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfVxuICAgICAgICAgICAgICAgICAoZW1iZWRfcGVyc29ubmVfYV9jaGFyZ2UpIHBlcnNvbm5lX2FfY2hhcmdlXykpKSkpKSlcbiAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLnBlcnNvbm5lc19hX2NoYXJnZSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMxNDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zMTQ7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV86IGRlY2ltYWwgYXJyYXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICBcImNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuw6llX3ByaXNfZW5fY29tcHRlXCJdXG4gICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfSAoZW1iZWRfYXJyYXkgKGVtYmVkX2RlY2ltYWwpKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzQ3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM0NzsgZW5kX2NvbHVtbj02MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgb19tYXBcbiAgICAgICAgICAgICAgKGZ1biAocGVyc29ubmVfYV9jaGFyZ2VfOiBQZXJzb25uZUFDaGFyZ2UudCkgLT5cbiAgICAgICAgICAgICAgICAgbWF0Y2ggcGVyc29ubmVfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuRW5mYW50QUNoYXJnZSBlbmZhbnRfIC0+XG4gICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKGVuZmFudF8uRW5mYW50QUNoYXJnZS5zaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWUpXG4gICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uR2FyZGVBbHRlcm5lZS5QYXNEZUdhcmRlQWx0ZXJuZWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIwLlwiKVxuICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uR2FyZGVBbHRlcm5lZS5HYXJkZUFsdGVybmVlQ29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlIGNvZWZmXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb2VmZl8pXG4gICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkF1dHJlUGVyc29ubmVBQ2hhcmdlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpKVxuICAgICAgICAgICAgICAob19maWx0ZXJcbiAgICAgICAgICAgICAgICAgKGZ1biAocGVyc29ubmVfYV9jaGFyZ2VfOiBQZXJzb25uZUFDaGFyZ2UudCkgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggcGVyc29ubmVfYV9jaGFyZ2VfXG4gICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuRW5mYW50QUNoYXJnZSBlbmZhbnRfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2Uuc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkdhcmRlQWx0ZXJuZWUuUGFzRGVHYXJkZUFsdGVybmVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkdhcmRlQWx0ZXJuZWUuR2FyZGVBbHRlcm5lZUNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkF1dHJlUGVyc29ubmVBQ2hhcmdlIF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgIHBlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXykpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTMzMjsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0zMzI7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXzogaW50ZWdlciA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgIFwibm9tYnJlX3BlcnNvbm5lc1/DoF9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZVwiXSB7aW9faW5wdXQ9Tm9JbnB1dDtcbiAgICBpb19vdXRwdXQ9dHJ1ZX0gKGVtYmVkX2ludGVnZXIpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNDU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MzQ1OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG9fbGVuZ3RoIHBlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzMxOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTMzMTsgZW5kX2NvbHVtbj01NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5kYXRlX2NvdXJhbnRlID0gZGF0ZV9jb3VyYW50ZV87XG4gICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmVsaWdpYmlsaXRlID0gZWxpZ2liaWxpdGVfO1xuICAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGUgPVxuICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV87XG4gICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGUgPVxuICAgICAgIGNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfO1xuICAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5jb25kaXRpb25fMl9yODIzXzQgPVxuICAgICAgIGNvbmRpdGlvbl8yX3I4MjNfNF99XG5cbmxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4udCkgOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLnQgPVxuICBsZXQgbG95ZXJfcHJpbmNpcGFsXzogbW9uZXkgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5sb3llcl9wcmluY2lwYWxfaW4gaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc186IG1vbmV5ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luIGluXG4gIGxldCBiZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfOiBib29sID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiBpblxuICBsZXQgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXzogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gaW5cbiAgbGV0IHpvbmVfOiBab25lREhhYml0YXRpb24udCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnpvbmVfaW4gaW5cbiAgbGV0IGxvZ2VtZW50X2VzdF9jaGFtYnJlXzogYm9vbCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmxvZ2VtZW50X2VzdF9jaGFtYnJlX2luIGluXG4gIGxldCBhZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc186IGJvb2wgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5hZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc19pbiBpblxuICBsZXQgdHlwZV9haWRlXzogVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4udHlwZV9haWRlX2luIGluXG4gIGxldCBjb2xvY2F0aW9uXzogYm9vbCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmNvbG9jYXRpb25faW4gaW5cbiAgbGV0IHJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlXzogbW9uZXkgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9pbiBpblxuICBsZXQgbG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl86IGJvb2wgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9tZXVibGVfZDg0Ml8yX2luIGluXG4gIGxldCByZXNpZGVuY2VfOiBDb2xsZWN0aXZpdGUudCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnJlc2lkZW5jZV9pbiBpblxuICBsZXQgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfOiBDaGFuZ2VtZW50TG9nZW1lbnREODQyNC50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfaW4gaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfbG95ZXJfcHJpbmNpcGFsX2Jhc2VfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2NhdGlmLmxveWVyX3ByaW5jaXBhbF9iYXNlXCJdIHtpb19pbnB1dD1Pbmx5SW5wdXQ7XG4gICAgICBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9tb25leSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQxNDU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDE0NTsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2VjdGV1ciBsb2NhdGlmIG9yZGluYWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBsb3llcl9wcmluY2lwYWxfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDE0NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MTQ1OyBlbmRfY29sdW1uPTQ4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBTZWN0ZXVyIGxvY2F0aWYgb3JkaW5haXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc186IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvY2F0aWYucmVzc291cmNlc19tw6luYWdlX2Fycm9uZGllc1wiXVxuICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTQ3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQxNDc7IGVuZF9jb2x1bW49NjA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNlY3RldXIgbG9jYXRpZiBvcmRpbmFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQxNDc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDE0NzsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2VjdGV1ciBsb2NhdGlmIG9yZGluYWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9iZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvY2F0aWYuYsOpbsOpZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2Fww6lzXCJdXG4gICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9ib29sKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDE0OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MTQ5OyBlbmRfY29sdW1uPTc4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBTZWN0ZXVyIGxvY2F0aWYgb3JkaW5haXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBiZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDE0OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MTQ5OyBlbmRfY29sdW1uPTc4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBTZWN0ZXVyIGxvY2F0aWYgb3JkaW5haXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJjYWxjdWxfYXBsX2xvY2F0aWYuZGF0ZV9jb3VyYW50ZVwiXVxuICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQxNTI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDE1MjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2VjdGV1ciBsb2NhdGlmIG9yZGluYWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQxNTI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDE1MjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2VjdGV1ciBsb2NhdGlmIG9yZGluYWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgIFwiY2FsY3VsX2FwbF9sb2NhdGlmLm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlXCJdIHtpb19pbnB1dD1Pbmx5SW5wdXQ7XG4gICAgICBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9pbnRlZ2VyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDE1NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MTU0OyBlbmRfY29sdW1uPTU4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBTZWN0ZXVyIGxvY2F0aWYgb3JkaW5haXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDE1NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MTU0OyBlbmRfY29sdW1uPTU4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBTZWN0ZXVyIGxvY2F0aWYgb3JkaW5haXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvY2F0aWYuc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXCJdXG4gICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgICAoZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTU2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQxNTY7IGVuZF9jb2x1bW49NjM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNlY3RldXIgbG9jYXRpZiBvcmRpbmFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQxNTY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDE1NjsgZW5kX2NvbHVtbj02MztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2VjdGV1ciBsb2NhdGlmIG9yZGluYWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF96b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiOyBcImNhbGN1bF9hcGxfbG9jYXRpZi56b25lXCJdXG4gICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF96b25lX2RfaGFiaXRhdGlvbilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQxNTg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDE1ODsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2VjdGV1ciBsb2NhdGlmIG9yZGluYWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiB6b25lXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQxNTg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDE1ODsgZW5kX2NvbHVtbj0zNztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2VjdGV1ciBsb2NhdGlmIG9yZGluYWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9sb2dlbWVudF9lc3RfY2hhbWJyZV86IGJvb2wgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICBcImNhbGN1bF9hcGxfbG9jYXRpZi5sb2dlbWVudF9lc3RfY2hhbWJyZVwiXSB7aW9faW5wdXQ9T25seUlucHV0O1xuICAgICAgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQxNjA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDE2MDsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2VjdGV1ciBsb2NhdGlmIG9yZGluYWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBsb2dlbWVudF9lc3RfY2hhbWJyZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00MTYwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQxNjA7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNlY3RldXIgbG9jYXRpZiBvcmRpbmFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvY2F0aWYuw6Jnw6llc19vdV9oYW5kaWNhcF9hZHVsdGVzX2jDqWJlcmfDqWVzX29uw6lyZXV4X3BhcnRpY3VsaWVyc1wiXVxuICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQxNjM7IHN0YXJ0X2NvbHVtbj01OyBlbmRfbGluZT00MTY0OyBlbmRfY29sdW1uPTYzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBTZWN0ZXVyIGxvY2F0aWYgb3JkaW5haXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDE2Mzsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTQxNjQ7IGVuZF9jb2x1bW49NjM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNlY3RldXIgbG9jYXRpZiBvcmRpbmFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfdHlwZV9haWRlXzogVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJjYWxjdWxfYXBsX2xvY2F0aWYudHlwZV9haWRlXCJdXG4gICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgICAoZW1iZWRfdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQxNjc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDE2NzsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2VjdGV1ciBsb2NhdGlmIG9yZGluYWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiB0eXBlX2FpZGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDE2Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MTY3OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBTZWN0ZXVyIGxvY2F0aWYgb3JkaW5haXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2NvbG9jYXRpb25fOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJjYWxjdWxfYXBsX2xvY2F0aWYuY29sb2NhdGlvblwiXVxuICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQxNjk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDE2OTsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2VjdGV1ciBsb2NhdGlmIG9yZGluYWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKSAoZnVuIChfOiB1bml0KSAtPiBjb2xvY2F0aW9uXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQxNjk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDE2OTsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2VjdGV1ciBsb2NhdGlmIG9yZGluYWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV86IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvY2F0aWYucsOpZHVjdGlvbl9sb3llcl9zb2xpZGFyaXTDqVwiXVxuICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTcxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQxNzE7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNlY3RldXIgbG9jYXRpZiBvcmRpbmFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gcmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDE3MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MTcxOyBlbmRfY29sdW1uPTU5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBTZWN0ZXVyIGxvY2F0aWYgb3JkaW5haXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2xvZ2VtZW50X21ldWJsZV9kODQyXzJfOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgXCJjYWxjdWxfYXBsX2xvY2F0aWYubG9nZW1lbnRfbWV1YmzDqV9kODQyXzJcIl0ge2lvX2lucHV0PU9ubHlJbnB1dDtcbiAgICAgIGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTczOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQxNzM7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNlY3RldXIgbG9jYXRpZiBvcmRpbmFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gbG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00MTczOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQxNzM7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNlY3RldXIgbG9jYXRpZiBvcmRpbmFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfcmVzaWRlbmNlXzogQ29sbGVjdGl2aXRlLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiOyBcImNhbGN1bF9hcGxfbG9jYXRpZi5yw6lzaWRlbmNlXCJdXG4gICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9jb2xsZWN0aXZpdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTc1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQxNzU7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNlY3RldXIgbG9jYXRpZiBvcmRpbmFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gcmVzaWRlbmNlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQxNzU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDE3NTsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2VjdGV1ciBsb2NhdGlmIG9yZGluYWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7IFwiY2FsY3VsX2FwbF9sb2NhdGlmXCI7XG4gICAgICBcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiOyBcImNhbGN1bF9hcGxfbG9jYXRpZlwiO1xuICAgICAgXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIl1cbiAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYpXG4gICAgKHtDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmxveWVyX3ByaW5jaXBhbF9iYXNlX2luID1cbiAgICAgICAgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9sb3llcl9wcmluY2lwYWxfYmFzZV87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc187XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzX2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2JlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc187XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnpvbmVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9jYXRpZl9kb3Rfem9uZV87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ubG9nZW1lbnRfZXN0X2NoYW1icmVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfbG9nZW1lbnRfZXN0X2NoYW1icmVfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzX2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2FnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi50eXBlX2FpZGVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfdHlwZV9haWRlXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5jb2xvY2F0aW9uX2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2NvbG9jYXRpb25fO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3JlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9tZXVibGVfZDg0Ml8yX2luID1cbiAgICAgICAgICBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2xvZ2VtZW50X21ldWJsZV9kODQyXzJfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnJlc2lkZW5jZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9yZXNpZGVuY2VffSkpKSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9tb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNl86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5tb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNiBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9wbGFmb25kX2xveWVyX2Q4MjNfMTZfMl86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5wbGFmb25kX2xveWVyX2Q4MjNfMTZfMiBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9wYXJ0aWNpcGF0aW9uX21pbmltYWxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnBhcnRpY2lwYXRpb25fbWluaW1hbGUgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfdGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGVfOiBkZWNpbWFsID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi50YXV4X2NvbXBvc2l0aW9uX2ZhbWlsaWFsZSBpblxuICBsZXQgY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9wYXJ0aWNpcGF0aW9uX3BlcnNvbm5lbGxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnBhcnRpY2lwYXRpb25fcGVyc29ubmVsbGUgaW5cbiAgbGV0IGNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5haWRlX2ZpbmFsZV9mb3JtdWxlIGluXG4gIGxldCBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXzogXG4gICAgbW9uZXkgLT4gbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgaW5cbiAgbGV0IHBhcnRpY2lwYXRpb25fcGVyc29ubmVsbGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJwYXJ0aWNpcGF0aW9uX3BlcnNvbm5lbGxlXCJdXG4gICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04NTU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODU1OyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3BhcnRpY2lwYXRpb25fcGVyc29ubmVsbGVfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04NDQ7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9ODQ0OyBlbmRfY29sdW1uPTM3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCB0YXV4X2NvbXBvc2l0aW9uX2ZhbWlsaWFsZV86IGRlY2ltYWwgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7IFwidGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGVcIl1cbiAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PXRydWV9IChlbWJlZF9kZWNpbWFsKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODUzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTg1MzsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF90YXV4X2NvbXBvc2l0aW9uX2ZhbWlsaWFsZV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTg0Mzsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT04NDM7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHBhcnRpY2lwYXRpb25fbWluaW1hbGVfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJwYXJ0aWNpcGF0aW9uX21pbmltYWxlXCJdXG4gICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04NTE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODUxOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3BhcnRpY2lwYXRpb25fbWluaW1hbGVfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT04NDI7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9ODQyOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBwbGFmb25kX2xveWVyX2Q4MjNfMTZfMl86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiOyBcInBsYWZvbmRfbG95ZXJfZDgyM18xNl8yXCJdXG4gICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT04NDk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9ODQ5OyBlbmRfY29sdW1uPTM3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiU2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3BsYWZvbmRfbG95ZXJfZDgyM18xNl8yXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODQxOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTg0MTsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgbW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTZfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjtcbiAgICAgIFwibW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTZcIl0ge2lvX2lucHV0PU5vSW5wdXQ7XG4gICAgaW9fb3V0cHV0PXRydWV9IChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTg0Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04NDc7IGVuZF9jb2x1bW49NDk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJTZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X21vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2XykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODQwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTg0MDsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PXRydWV9ICh1bmVtYmVkZGFibGUpXG4gICAgKGZ1biAoYWlkZV9maW5hbGVfOiBtb25leSkgLT4gXG4gICAgICAgdHJ5XG4gICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQyNjU7IHN0YXJ0X2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MjY1OyBlbmRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDItNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2VjdGV1ciBsb2NhdGlmIG9yZGluYWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQuQ2hhbmdlbWVudCBpbmZvc18gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfbW9uX21vbiBsb3llcl9wcmluY2lwYWxfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGluZm9zXy5JbmZvc0NoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LmFuY2llbl9sb3llcl9wcmluY2lwYWwpKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDaGFuZ2VtZW50TG9nZW1lbnREODQyNC5QYXNEZUNoYW5nZW1lbnQgXyAtPiBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBhaWRlX2ZpbmFsZV8pKXxdKVxuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQxNzk7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDE3OTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2VjdGV1ciBsb2NhdGlmIG9yZGluYWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50X21pbmltYWxcIl1cbiAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PXRydWV9IChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXCJdXG4gICAgICAgICAgICAgICBjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXylcbiAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbW9udGFudF9taW5pbWFsXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgIGFpZGVfZmluYWxlXykpKSkpKSkpXG4gICAgICAgd2l0aFxuICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9ODM4OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTgzODsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiOyBcImFpZGVfZmluYWxlX2Zvcm11bGVcIl1cbiAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PXRydWV9IChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MjU3OyBzdGFydF9jb2x1bW49MjQ7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDI1NzsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODQyLTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IFNlY3RldXIgbG9jYXRpZiBvcmRpbmFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAobWF0Y2ggY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfXG4gICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IENoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LkNoYW5nZW1lbnQgaW5mb3NfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX21vbl9tb24gbG95ZXJfcHJpbmNpcGFsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbmZvc18uSW5mb3NDaGFuZ2VtZW50TG9nZW1lbnREODQyNC5hbmNpZW5fbG95ZXJfcHJpbmNpcGFsKSlcbiAgICAgICAgICAgICAgICAgICAgIHwgQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQuUGFzRGVDaGFuZ2VtZW50IF8gLT4gZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfXG4gICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBDaGFuZ2VtZW50TG9nZW1lbnREODQyNC5DaGFuZ2VtZW50IGluZm9zXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gbG95ZXJfcHJpbmNpcGFsX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbmZvc18uSW5mb3NDaGFuZ2VtZW50TG9nZW1lbnREODQyNC5hbmNpZW5fbG95ZXJfcHJpbmNpcGFsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGluZm9zXy5JbmZvc0NoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LmFuY2llbm5lX2FsbG9jYXRpb25fbG9nZW1lbnQpKSlcbiAgICAgICAgICAgICAgICAgICAgfCBDaGFuZ2VtZW50TG9nZW1lbnREODQyNC5QYXNEZUNoYW5nZW1lbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQxNzg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDE3ODsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg0Mi0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogU2VjdGV1ciBsb2NhdGlmIG9yZGluYWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9ODM3OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTgzNzsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICB7Q2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi5haWRlX2ZpbmFsZV9mb3JtdWxlID0gYWlkZV9maW5hbGVfZm9ybXVsZV87XG4gICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV87XG4gICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYubW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTYgPVxuICAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2XztcbiAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi5wbGFmb25kX2xveWVyX2Q4MjNfMTZfMiA9XG4gICAgICAgcGxhZm9uZF9sb3llcl9kODIzXzE2XzJfO1xuICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLnBhcnRpY2lwYXRpb25fbWluaW1hbGUgPVxuICAgICAgIHBhcnRpY2lwYXRpb25fbWluaW1hbGVfO1xuICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLnRhdXhfY29tcG9zaXRpb25fZmFtaWxpYWxlID1cbiAgICAgICB0YXV4X2NvbXBvc2l0aW9uX2ZhbWlsaWFsZV87XG4gICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYucGFydGljaXBhdGlvbl9wZXJzb25uZWxsZSA9XG4gICAgICAgcGFydGljaXBhdGlvbl9wZXJzb25uZWxsZV99XG5cbmxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50IChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4udCkgOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50LnQgPVxuICBsZXQgbW9kZV9vY2N1cGF0aW9uXzogTW9kZU9jY3VwYXRpb24udCA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLm1vZGVfb2NjdXBhdGlvbl9pbiBpblxuICBsZXQgdHlwZV9haWRlXzogVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4udHlwZV9haWRlX2luIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfOiBtb25leSA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnJlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV9pbiBpblxuICBsZXQgc2l0dWF0aW9uX2ZhbWlsaWFsZV86IFNpdHVhdGlvbkZhbWlsaWFsZS50ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9pbiBpblxuICBsZXQgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV86IGludGVnZXIgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luIGluXG4gIGxldCB6b25lXzogWm9uZURIYWJpdGF0aW9uLnQgPSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi56b25lX2luIGluXG4gIGxldCBkYXRlX2NvdXJhbnRlXzogZGF0ZSA9IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IHJlc2lkZW5jZV86IENvbGxlY3Rpdml0ZS50ID0gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4ucmVzaWRlbmNlX2luIGluXG4gIGxldCBjYXRlZ29yaWVfY2FsY3VsX2FwbF86IENhdGVnb3JpZUNhbGN1bEFQTC50ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjsgXCJjYXTDqWdvcmllX2NhbGN1bF9hcGxcIl1cbiAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfY2F0ZWdvcmllX2NhbGN1bF9hX3BfbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQxNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xNDE3OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgbWF0Y2ggbW9kZV9vY2N1cGF0aW9uX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgbG9jYXRpb25fIC0+XG4gICAgICAgICAgICAgICAgKENhdGVnb3JpZUNhbGN1bEFQTC5Mb2NhdGlvbiBsb2NhdGlvbl8pXG4gICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBsb2dlbWVudGZveWVyXyAtPlxuICAgICAgICAgICAgICAgIChDYXRlZ29yaWVDYWxjdWxBUEwuTG9nZW1lbnRGb3llciBsb2dlbWVudGZveWVyXylcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBwcm9wcmlldGFpcmVfIC0+XG4gICAgICAgICAgICAgICAgKENhdGVnb3JpZUNhbGN1bEFQTC5BY2Nlc3Npb25Qcm9wcmlldGUgcHJvcHJpZXRhaXJlXylcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBsb2NhdGlvbl8gLT5cbiAgICAgICAgICAgICAgICAoQ2F0ZWdvcmllQ2FsY3VsQVBMLkxvY2F0aW9uIGxvY2F0aW9uXylcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gcHJvcHJpZXRhaXJlXyAtPlxuICAgICAgICAgICAgICAgIChDYXRlZ29yaWVDYWxjdWxBUEwuQWNjZXNzaW9uUHJvcHJpZXRlIHByb3ByaWV0YWlyZV8pKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03ODk7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9Nzg5OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCByZXNzb3VyY2VzX21lbmFnZV9hdmVjX2Fycm9uZGlfOiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7IFwicmVzc291cmNlc19tw6luYWdlX2F2ZWNfYXJyb25kaVwiXVxuICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTk0NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xOTQ0OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDIgOiBDYWxjdWwgZGUgbCdhaWRlIGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBhcnJvbmRpX2NlbnRhaW5lX3N1cGVyaWV1cmVfIHJlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTc4Mjsgc3RhcnRfY29sdW1uPTEwOyBlbmRfbGluZT03ODI7IGVuZF9jb2x1bW49MjI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF86IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjsgXCJzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxcIl1cbiAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PWZhbHNlfVxuICAgIChlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTgzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTgzOyBlbmRfY29sdW1uPTQ0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogQ2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZW4gc2VjdGV1ciBsb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJyw6p0w6kgZHUgMjcgc2VwdGVtYnJlIDIwMTkgcmVsYXRpZiBhdSBjYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBldCBkZSBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG1hdGNoIHNpdHVhdGlvbl9mYW1pbGlhbGVfXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5DZWxpYmF0YWlyZSBfIC0+XG4gICAgICAgICAgICAgICAgKFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlICgpKVxuICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuTWFyaWVzIF8gLT5cbiAgICAgICAgICAgICAgICAoU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSAoKSlcbiAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLlBhY3NlcyBfIC0+XG4gICAgICAgICAgICAgICAgKFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgKCkpXG4gICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5Db25jdWJpbnMgXyAtPlxuICAgICAgICAgICAgICAgIChTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlICgpKVxuICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmVTZXBhcmVEZUZhaXQgXyAtPlxuICAgICAgICAgICAgICAgIChTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSAoKSlcbiAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNvbmN1YmluYWdlRG9udFNlcGFyZURlRmFpdCBfIC0+XG4gICAgICAgICAgICAgICAgKFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgKCkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03OTA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NzkwOyBlbmRfY29sdW1uPTQxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBzb3VzX2NhbGN1bF90cmFpdGVtZW50XzogVHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLnQgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiOyBcInNvdXNfY2FsY3VsX3RyYWl0ZW1lbnRcIl1cbiAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PWZhbHNlfVxuICAgIChlbWJlZF90cmFpdGVtZW50X2Zvcm11bGVfYWlkZV9maW5hbGUpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NDA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTQ0MDsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG1hdGNoIGNhdGVnb3JpZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBDYXRlZ29yaWVDYWxjdWxBUEwuTG9jYXRpb24gbG9jYXRpb25fIC0+XG4gICAgICAgICAgICAgICAgKGxldCB0cmFpdGVtZW50X2Zvcm11bGVfIDpcbiAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi50ID1cbiAgICAgICAgICAgICAgICAgICAobGV0IHJlc3VsdF8gOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi50ID1cbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7IFwiZGlyZWN0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmKVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjsgXCJkaXJlY3RcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0ge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4pXG4gICAgICAgICAgICAgICAgICAgICAgKHtDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmxveWVyX3ByaW5jaXBhbF9iYXNlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSAobG9jYXRpb25fLkxvY2F0aW9uLmxveWVyX3ByaW5jaXBhbCkgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDUwOyBzdGFydF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDUwOyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHJlc3NvdXJjZXNfbWVuYWdlX2F2ZWNfYXJyb25kaV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDQ1OyBzdGFydF9jb2x1bW49NDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0NDU7IGVuZF9jb2x1bW49NjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc19pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvY2F0aW9uXy5Mb2NhdGlvbi5iZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDUyOyBzdGFydF9jb2x1bW49MTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0NTI7IGVuZF9jb2x1bW49Njk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgZGF0ZV9jb3VyYW50ZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDQ4OyBzdGFydF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0NDg7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDQ2OyBzdGFydF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0NDY7IGVuZF9jb2x1bW49NjY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ0OTsgc3RhcnRfY29sdW1uPTQ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDQ5OyBlbmRfY29sdW1uPTc2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi56b25lX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHpvbmVfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ0Nzsgc3RhcnRfY29sdW1uPTIwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDQ3OyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9lc3RfY2hhbWJyZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSAobG9jYXRpb25fLkxvY2F0aW9uLmxvZ2VtZW50X2VzdF9jaGFtYnJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ1Mzsgc3RhcnRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDUzOyBlbmRfY29sdW1uPTY1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5hZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc19pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvY2F0aW9uXy5Mb2NhdGlvbi5hZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVycylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NTY7IHN0YXJ0X2NvbHVtbj0xNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ1NjsgZW5kX2NvbHVtbj04MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4udHlwZV9haWRlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHR5cGVfYWlkZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDU3OyBzdGFydF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0NTc7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLmNvbG9jYXRpb25faW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgKGxvY2F0aW9uXy5Mb2NhdGlvbi5jb2xvY2F0aW9uKSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NTQ7IHN0YXJ0X2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ1NDsgZW5kX2NvbHVtbj00NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ucmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAobG9jYXRpb25fLkxvY2F0aW9uLmJhaWxsZXVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVCYWlsbGV1ci5CYWlsbGV1clNvY2lhbCBiYWlsbGV1cl8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJhaWxsZXVyXy5Db252ZW50aW9uQmFpbGxldXJTb2NpYWwucmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfcGVyY3VlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZUJhaWxsZXVyLkJhaWxsZXVyUHJpdmVBdmVjQ29udmVudGlvbm5lbWVudFNvY2lhbCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlQmFpbGxldXIuQmFpbGxldXJQcml2ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ1OTsgc3RhcnRfY29sdW1uPTE2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDYyOyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9tZXVibGVfZDg0Ml8yX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IChsb2NhdGlvbl8uTG9jYXRpb24ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NjM7IHN0YXJ0X2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ2MzsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmSW4ucmVzaWRlbmNlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHJlc2lkZW5jZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDY0OyBzdGFydF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0NjQ7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpfSkpKSlcbiAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgIChsZXQgcmVzdWx0XyA6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnQgPVxuICAgICAgICAgICAgICAgICAgICAgICh7Q2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYubW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTYgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5tb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnBsYWZvbmRfbG95ZXJfZDgyM18xNl8yID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5wbGFmb25kX2xveWVyX2Q4MjNfMTZfMik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnBhcnRpY2lwYXRpb25fbWluaW1hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnBhcnRpY2lwYXRpb25fbWluaW1hbGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi50YXV4X2NvbXBvc2l0aW9uX2ZhbWlsaWFsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYudGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5wYXJ0aWNpcGF0aW9uX3BlcnNvbm5lbGxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi5wYXJ0aWNpcGF0aW9uX3BlcnNvbm5lbGxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYuYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKHBhcmFtMF86IG1vbmV5KSAtPiAobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PXRydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi50cmFpdGVtZW50X2FpZGVfZmluYWxlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBwYXJhbTBfKSkpKSkpKX0pXG4gICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50TG9jYXRpZlwiOyBcImRpcmVjdFwiXVxuICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudExvY2F0aWZcIjsgXCJkaXJlY3RcIjtcbiAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAoZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmKVxuICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0NDQ7IHN0YXJ0X2NvbHVtbj05O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDY1OyBlbmRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpIHRoZW4gcmVzdWx0XyBlbHNlIHJlc3VsdF8pKSkpKSkpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAoe1RyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS5haWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgICAgICAgICAgICAgKHRyYWl0ZW1lbnRfZm9ybXVsZV8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWYuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgICAgICAgICAgICAgICAgIFRyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS50cmFpdGVtZW50X2FpZGVfZmluYWxlID1cbiAgICAgICAgICAgICAgICAgICAgICAodHJhaXRlbWVudF9mb3JtdWxlXy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi50cmFpdGVtZW50X2FpZGVfZmluYWxlKX0pKVxuICAgICAgICAgICAgfCBDYXRlZ29yaWVDYWxjdWxBUEwuQWNjZXNzaW9uUHJvcHJpZXRlIHByb3ByaWV0YWlyZV8gLT5cbiAgICAgICAgICAgICAgICAobGV0IHRyYWl0ZW1lbnRfZm9ybXVsZV8gOlxuICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudCA9XG4gICAgICAgICAgICAgICAgICAgKGxldCByZXN1bHRfIDpcbiAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnQgPVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBcImRpcmVjdFwiXVxuICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXJlY3RcIjsgXCJpbnB1dFwiXSB7aW9faW5wdXQ9T25seUlucHV0O1xuICAgICAgICAgICAgICAgICAgICAgIGlvX291dHB1dD1mYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luKVxuICAgICAgICAgICAgICAgICAgICAgICh7Q2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLm1lbnN1YWxpdGVfcHJpbmNpcGFsZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLm1lbnN1YWxpdGVfcHJpbmNpcGFsZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTA1OyBzdGFydF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTA1OyBlbmRfY29sdW1uPTcyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgcmVzc291cmNlc19tZW5hZ2VfYXZlY19hcnJvbmRpXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MDA7IHN0YXJ0X2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUwMDsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTUwMTsgc3RhcnRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTAxOyBlbmRfY29sdW1uPTY3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTUwNDsgc3RhcnRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTA0OyBlbmRfY29sdW1uPTc3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTUwNjsgc3RhcnRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTA2OyBlbmRfY29sdW1uPTgwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmRhdGVfc2lnbmF0dXJlX3ByZXRfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUucHJldCkuUHJldC5kYXRlX3NpZ25hdHVyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MDc7IHN0YXJ0X2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUwNzsgZW5kX2NvbHVtbj02ODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5sb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5sb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTA5OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1MDk7IGVuZF9jb2x1bW49NjY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9lbnRyZWVfbG9nZW1lbnRfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5kYXRlX2VudHJlZV9sb2dlbWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MTA7IHN0YXJ0X2NvbHVtbj0zNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUxMDsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5jb3Byb3ByaWV0ZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUuY29wcm9wcmlldGUpIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTUxMTsgc3RhcnRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTExOyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnNpdHVhdGlvbl9yODIyXzExXzEzXzE3X2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUuc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTEyOyBzdGFydF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1MTI7IGVuZF9jb2x1bW49NzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uem9uZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSB6b25lXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MDI7IHN0YXJ0X2NvbHVtbj0yMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUwMjsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi50eXBlX3ByZXRfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUucHJldCkuUHJldC50eXBlX3ByZXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTEzOyBzdGFydF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1MTM7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uYW5jaWVubmV0ZV9sb2dlbWVudF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLmFuY2llbm5ldGVfbG9nZW1lbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTE0OyBzdGFydF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1MTQ7IGVuZF9jb2x1bW49Njg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSBkYXRlX2NvdXJhbnRlXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MDM7IHN0YXJ0X2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUwMzsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5yZXNpZGVuY2VfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgcmVzaWRlbmNlXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MTU7IHN0YXJ0X2NvbHVtbj0yNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUxNTsgZW5kX2NvbHVtbj0zNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSl9KSkpKVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgKGxldCByZXN1bHRfIDpcbiAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnQgPVxuICAgICAgICAgICAgICAgICAgICAgICh7Q2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS5tZW5zdWFsaXRlX2VsaWdpYmxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS5tZW5zdWFsaXRlX2VsaWdpYmxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS5tZW5zdWFsaXRlX21pbmltYWxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLm1lbnN1YWxpdGVfbWluaW1hbGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLmNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzEwID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLmNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzEwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS5haWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLmFpZGVfZmluYWxlX2Zvcm11bGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKHBhcmFtMF86IG1vbmV5KSAtPiAobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBwYXJhbTBfKSkpKSkpKX0pXG4gICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgIFwiZGlyZWN0XCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICBcImRpcmVjdFwiOyBcIm91dHB1dFwiXSB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PXRydWV9XG4gICAgICAgICAgICAgICAgICAgKGVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSlcbiAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDk5OyBzdGFydF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1MTY7IGVuZF9jb2x1bW49MTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSkgdGhlbiByZXN1bHRfIGVsc2UgcmVzdWx0XykpKSkpKSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICh7VHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLmFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICAgICAgICAgICAgICAodHJhaXRlbWVudF9mb3JtdWxlXy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLmFpZGVfZmluYWxlX2Zvcm11bGUpO1xuICAgICAgICAgICAgICAgICAgICBUcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgKHRyYWl0ZW1lbnRfZm9ybXVsZV8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50cmFpdGVtZW50X2FpZGVfZmluYWxlKX0pKVxuICAgICAgICAgICAgfCBDYXRlZ29yaWVDYWxjdWxBUEwuTG9nZW1lbnRGb3llciBsb2dlbWVudF9mb3llcl9fIC0+XG4gICAgICAgICAgICAgICAgKGxldCB0cmFpdGVtZW50X2Zvcm11bGVfIDpcbiAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIudCA9XG4gICAgICAgICAgICAgICAgICAgKGxldCByZXN1bHRfIDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnQgPVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwiZGlyZWN0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcilcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiOyBcImRpcmVjdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dFwiXSB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4pXG4gICAgICAgICAgICAgICAgICAgICAgKHtDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5yZXNpZGVuY2VfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHJlc2lkZW5jZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDgyOyBzdGFydF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDgyOyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLmxvZ2VtZW50X2ZveWVyX2pldW5lc190cmF2YWlsbGV1cnNfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dlbWVudF9mb3llcl9fLkxvZ2VtZW50Rm95ZXIubG9nZW1lbnRfZm95ZXJfamV1bmVzX3RyYXZhaWxsZXVycylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0ODA7IHN0YXJ0X2NvbHVtbj0xMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ4MDsgZW5kX2NvbHVtbj02MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLnR5cGVfbG9nZW1lbnRfZm95ZXJfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgKGxvZ2VtZW50X2ZveWVyX18uTG9nZW1lbnRGb3llci50eXBlX3VzZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDg2OyBzdGFydF9jb2x1bW49MzU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0ODY7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5kYXRlX2NvbnZlbnRpb25uZW1lbnRfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dlbWVudF9mb3llcl9fLkxvZ2VtZW50Rm95ZXIuZGF0ZV9jb252ZW50aW9ubmVtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ4Nzsgc3RhcnRfY29sdW1uPTM3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDg3OyBlbmRfY29sdW1uPTc0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHJlc3NvdXJjZXNfbWVuYWdlX2F2ZWNfYXJyb25kaV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDc3OyBzdGFydF9jb2x1bW49NDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0Nzc7IGVuZF9jb2x1bW49NjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ3ODsgc3RhcnRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDc4OyBlbmRfY29sdW1uPTY2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDg0OyBzdGFydF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0ODQ7IGVuZF9jb2x1bW49NzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi56b25lX2luID0gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB6b25lXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0ODE7IHN0YXJ0X2NvbHVtbj0yMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ4MTsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llckluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgZGF0ZV9jb3VyYW50ZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDgzOyBzdGFydF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0ODM7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5yZWRldmFuY2VfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgKGxvZ2VtZW50X2ZveWVyX18uTG9nZW1lbnRGb3llci5yZWRldmFuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDg1OyBzdGFydF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0ODU7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi5saW1pdGF0aW9uX21ham9yYXRpb25fcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4ubl9ub21icmVfcGFydHNfZDgzMl8yNV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcil9KSkpKVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgKGxldCByZXN1bHRfIDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnQgPVxuICAgICAgICAgICAgICAgICAgICAgICh7Q2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmNvZWZmaWNpZW50X211bHRpcGxpY2F0ZXVyX2Q4MzJfMjUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzMl8yNSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9yX2Q4MzJfMjUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9yX2Q4MzJfMjUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIubl9ub21icmVfcGFydHNfZDgzMl8yNSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5wbGFmb25kX2VxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIucGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmVxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kODMyXzI1ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIuYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLmFpZGVfZmluYWxlX2Zvcm11bGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAocGFyYW0wXzogbW9uZXkpIC0+IChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci50cmFpdGVtZW50X2FpZGVfZmluYWxlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgcGFyYW0wXykpKSkpKSl9KVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudEZveWVyXCI7IFwiZGlyZWN0XCJdXG4gICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50Rm95ZXJcIjsgXCJkaXJlY3RcIjtcbiAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAoZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcilcbiAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDc2OyBzdGFydF9jb2x1bW49OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ4ODsgZW5kX2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSB0aGVuIHJlc3VsdF8gZWxzZSByZXN1bHRfKSkpKSkpKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgKHtUcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUuYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgICAgICAgICAgICAgICh0cmFpdGVtZW50X2Zvcm11bGVfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAgICAgICAgICAgICAgICAgVHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICh0cmFpdGVtZW50X2Zvcm11bGVfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci50cmFpdGVtZW50X2FpZGVfZmluYWxlKX0pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NzkyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTc5MjsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjsgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfSAodW5lbWJlZGRhYmxlKVxuICAgIChmdW4gKGFyZ186IG1vbmV5KSAtPiBcbiAgICAgICB0cnlcbiAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE0MzA7IHN0YXJ0X2NvbHVtbj0xNDtcbiAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQzMDsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIChzb3VzX2NhbGN1bF90cmFpdGVtZW50Xy5UcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUudHJhaXRlbWVudF9haWRlX2ZpbmFsZSlcbiAgICAgICAgICAgICAgICAgYXJnXykpXG4gICAgICAgd2l0aFxuICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9Nzk1OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTc5NTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjsgXCJhaWRlX2ZpbmFsZV9mb3JtdWxlXCJdXG4gICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfSAoZW1iZWRfbW9uZXkpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE0Mjg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTQyODsgZW5kX2NvbHVtbj0zMztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIHNvdXNfY2FsY3VsX3RyYWl0ZW1lbnRfLlRyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS5haWRlX2ZpbmFsZV9mb3JtdWxlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT03OTQ7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9Nzk0OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50LmFpZGVfZmluYWxlX2Zvcm11bGUgPSBhaWRlX2ZpbmFsZV9mb3JtdWxlXztcbiAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudC50cmFpdGVtZW50X2FpZGVfZmluYWxlID1cbiAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX31cblxubGV0IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudCAoZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luOiBFbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnRJbi50KSA6IEVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudC50ID1cbiAgbGV0IGluZm9ybWF0aW9uc186IEluZm9ybWF0aW9uc1ByaW1lRGVEZW1lbmFnZW1lbnQudCA9IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbi5FbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnRJbi5pbmZvcm1hdGlvbnNfaW4gaW5cbiAgbGV0IGRhdGVfZW1tZW5hZ2VtZW50XzogZGF0ZSA9IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbi5FbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnRJbi5kYXRlX2VtbWVuYWdlbWVudF9pbiBpblxuICBsZXQgbWVuYWdlXzogTWVuYWdlLnQgPSBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4uRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4ubWVuYWdlX2luIGluXG4gIGxldCBkZW1hbmRldXJfOiBEZW1hbmRldXIudCA9IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbi5FbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnRJbi5kZW1hbmRldXJfaW4gaW5cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luLkVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudEluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IGRlcGVuc2VzX2p1c3RpZmllZXNfcmVlbGxlbWVudF9lbmdhZ2Vlc186IG1vbmV5ID0gZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luLkVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudEluLmRlcGVuc2VzX2p1c3RpZmllZXNfcmVlbGxlbWVudF9lbmdhZ2Vlc19pbiBpblxuICBsZXQgZGVsYWlfYXByZXNfZW1tZW5hZ2VtZW50X2w4MjNfOF8yXzogZHVyYXRpb24gPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICBcImTDqWxhaV9hcHLDqHNfZW1tw6luYWdlbWVudF9sODIzXzhfMlwiXSB7aW9faW5wdXQ9Tm9JbnB1dDtcbiAgICBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9kdXJhdGlvbikgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjA1Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yMDU2OyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTIwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogUHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IGR1cmF0aW9uX29mX251bWJlcnMgKDApICg2KSAoMCkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ3Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00Nzc7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvbmRpdGlvbl9yYW5nX2VuZmFudF86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50XCI7IFwiY29uZGl0aW9uX3JhbmdfZW5mYW50XCJdXG4gICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjAzMjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjAzNzsgZW5kX2NvbHVtbj03NztcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTIwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBQcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZmlsdGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBlcnNvbm5lX2FfY2hhcmdlXzogUGVyc29ubmVBQ2hhcmdlLnQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHBlcnNvbm5lX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkVuZmFudEFDaGFyZ2UgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkF1dHJlUGVyc29ubmVBQ2hhcmdlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWVuYWdlXy5NZW5hZ2UucGVyc29ubmVzX2FfY2hhcmdlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChpbmZvcm1hdGlvbnNfLkluZm9ybWF0aW9uc1ByaW1lRGVEZW1lbmFnZW1lbnQubm9tYnJlX2VuZmFudHNfYV9uYWl0cmVfYXByZXNfdHJvaXNpZW1lX21vaXNfZ3Jvc3Nlc3NlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkpKSAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDc1OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQ3NTsgZW5kX2NvbHVtbj0zMjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ3NTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00NzU7IGVuZF9jb2x1bW49MzI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IF86IHVuaXQgPSBpZiAoXG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOSkgKDEwKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDk2OyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDk2OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkgdGhlblxuICAgICAgICAgICAgICAgICAgKCkgZWxzZVxuICAgICAgICAgICAgICAgICAgcmFpc2UgKEFzc2VydGlvbkZhaWxlZCB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDk2OyBzdGFydF9jb2x1bW49MTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDk2OyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pIGluXG4gIGxldCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgIFwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy5kYXRlX2NvdXJhbnRlXCJdXG4gICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ5Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00OTI7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ5Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00OTI7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiO1xuICAgICAgXCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXCI7XG4gICAgICBcIkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIsOJbGlnaWJpbGl0w6lQcmltZURlRMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgIFwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1wiO1xuICAgICAgXCJCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCJdXG4gICAgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcylcbiAgICAoe0Jhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfZGF0ZV9jb3VyYW50ZV99KSkpIGluXG4gIGxldCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9tb250YW50XzogbW9uZXkgPSByZXN1bHRfLkJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMubW9udGFudCBpblxuICBsZXQgZWxpZ2liaWxpdGVfYXBsX2RvdF9tZW5hZ2VfOiBNZW5hZ2UudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50XCI7IFwiw6lsaWdpYmlsaXTDqV9hcGwubcOpbmFnZVwiXVxuICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfbWVuYWdlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODg7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1lbmFnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDg4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4ODsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FwbF9kb3RfZGVtYW5kZXVyXzogRGVtYW5kZXVyLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfYXBsLmRlbWFuZGV1clwiXVxuICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfZGVtYW5kZXVyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00ODk7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRlbWFuZGV1cl8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDg5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ4OTsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FwbF9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiO1xuICAgICAgICBcIsOpbGlnaWJpbGl0w6lfYXBsLmRhdGVfY291cmFudGVcIl0ge2lvX2lucHV0PU9ubHlJbnB1dDtcbiAgICAgIGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDkwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ5MDsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDkwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ5MDsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FwbF9kb3RfY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlXzogdW5pdCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sID0gXG4gICAgZnVuIChfOiB1bml0KSAtPiAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lQcmltZURlRMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2FwbC5jb25kaXRpb25fbG9nZW1lbnRfcsOpc2lkZW5jZV9wcmluY2lwYWxlXCJdXG4gICAgICB7aW9faW5wdXQ9UmVlbnRyYW50OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9ib29sKSAocmFpc2UgRW1wdHlFcnJvcikpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9hcGxfZG90X2NvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlXzogdW5pdCAtPiBib29sID0gXG4gICAgZnVuIChfOiB1bml0KSAtPiAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lQcmltZURlRMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2FwbC5jb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZVwiXSB7aW9faW5wdXQ9UmVlbnRyYW50O1xuICAgICAgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfYm9vbCkgKHJhaXNlIEVtcHR5RXJyb3IpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYXBsX2RvdF9kYXRlX2VudHJlZV92aWd1ZXVyX2RpZmZlcmVlX2NjaF86IHVuaXQgLT4gZGF0ZSA9IFxuICAgIGZ1biAoXzogdW5pdCkgLT4gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9hcGwuZGF0ZV9lbnRyw6llX3ZpZ3VldXJfZGlmZsOpcsOpZV9jY2hcIl1cbiAgICAgIHtpb19pbnB1dD1SZWVudHJhbnQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2RhdGUpIChyYWlzZSBFbXB0eUVycm9yKSkgaW5cbiAgbGV0IHJlc3VsdF86IEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfYXBsXCI7XG4gICAgICBcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIsOJbGlnaWJpbGl0w6lQcmltZURlRMOpbcOpbmFnZW1lbnRcIjsgXCLDqWxpZ2liaWxpdMOpX2FwbFwiO1xuICAgICAgXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdXG4gICAgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQpXG4gICAgKHtFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLm1lbmFnZV9pbiA9XG4gICAgICAgIGVsaWdpYmlsaXRlX2FwbF9kb3RfbWVuYWdlXztcbiAgICAgICAgRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kZW1hbmRldXJfaW4gPVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FwbF9kb3RfZGVtYW5kZXVyXztcbiAgICAgICAgRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9hcGxfZG90X2RhdGVfY291cmFudGVfO1xuICAgICAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmNvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV9pbiA9XG4gICAgICAgICAgZWxpZ2liaWxpdGVfYXBsX2RvdF9jb25kaXRpb25fbG9nZW1lbnRfcmVzaWRlbmNlX3ByaW5jaXBhbGVfO1xuICAgICAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlX2luID1cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9hcGxfZG90X2NvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlXztcbiAgICAgICAgRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2VudHJlZV92aWd1ZXVyX2RpZmZlcmVlX2NjaF9pbiA9XG4gICAgICAgICAgZWxpZ2liaWxpdGVfYXBsX2RvdF9kYXRlX2VudHJlZV92aWd1ZXVyX2RpZmZlcmVlX2NjaF99KSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9hcGxfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5kYXRlX2NvdXJhbnRlIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9hcGxfZG90X2VsaWdpYmlsaXRlXzogYm9vbCA9IHJlc3VsdF8uRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuZWxpZ2liaWxpdGUgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FwbF9kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXzogaW50ZWdlciA9IHJlc3VsdF8uRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9hcGxfZG90X2NvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfOiBcbiAgICBkZWNpbWFsIGFycmF5ID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9hcGxfZG90X2NvbmRpdGlvbl8yX3I4MjNfNF86IFBlcnNvbm5lQUNoYXJnZS50IC0+IGJvb2wgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmNvbmRpdGlvbl8yX3I4MjNfNCBpblxuICBsZXQgY29uZGl0aW9uX3BlcmlvZGVfZGVtZW5hZ2VtZW50XzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lQcmltZURlRMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgIFwiY29uZGl0aW9uX3DDqXJpb2RlX2TDqW3DqW5hZ2VtZW50XCJdIHtpb19pbnB1dD1Ob0lucHV0O1xuICAgIGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjA0MTsgc3RhcnRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MjA1MjsgZW5kX2NvbHVtbj03NTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTIwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBQcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgKGluZm9ybWF0aW9uc18uSW5mb3JtYXRpb25zUHJpbWVEZURlbWVuYWdlbWVudC5kYXRlX25haXNzYW5jZV90cm9pc2llbWVfZW5mYW50X291X2Rlcm5pZXJfc2lfcGx1cylcbiAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgRGF0ZU5haXNzYW5jZVRyb2lzaWVtZU91RGVybmllclBsdXNFbmZhbnQuTW9pbnNEZVRyb2lzRW5mYW50cyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHwgRGF0ZU5haXNzYW5jZVRyb2lzaWVtZU91RGVybmllclBsdXNFbmZhbnQuUGx1c0RlVHJvaXNFbmZhbnRzIGRhdGVfbmFpc3NhbmNlX291X2dyb3NzZXNzZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggZGF0ZV9uYWlzc2FuY2Vfb3VfZ3Jvc3Nlc3NlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGF0ZURlTmFpc3NhbmNlT3VNb2lzRGVHcm9zc2Vzc2UuRGF0ZURlTmFpc3NhbmNlIGRhdGVfbmFpc3NhbmNlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2RhdF9kYXQgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9kYXRfZHVyIEFib3J0T25Sb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZmlyc3REYXlPZk1vbnRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hZGRfZGF0X2R1ciBBYm9ydE9uUm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfbmFpc3NhbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGR1cmF0aW9uX29mX251bWJlcnMgKDIpICgwKSAoMCkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkdXJhdGlvbl9vZl9udW1iZXJzICgwKSAoMCkgKC0xKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IERhdGVEZU5haXNzYW5jZU91TW9pc0RlR3Jvc3Nlc3NlLkF2YW50UHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2llbWVNb2lzRGVHcm9zc2Vzc2UgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEYXRlRGVOYWlzc2FuY2VPdU1vaXNEZUdyb3NzZXNzZS5BcHJlc1ByZW1pZXJKb3VyTW9pc0NpdmlsVHJvaXNpZW1lTW9pc0RlR3Jvc3Nlc3NlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSkpIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NzY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDc2OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDc2OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQ3NjsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgcGxhZm9uZF9kODIzXzIyXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50XCI7IFwicGxhZm9uZF9kODIzXzIyXCJdXG4gICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDMwNjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00MzA2OyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0NVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIFZJSUkgOiBQcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlXyAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTApICgxKSkpKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9tb250YW50X1xuICAgICAgICAgICAgICAgICAoZGVjaW1hbF9vZl9zdHJpbmcgXCIyLjRcIikpXG4gICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgKG9fZ3RfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgKG9fZmlsdGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKHBlcnNvbm5lX2FfY2hhcmdlXzogUGVyc29ubmVBQ2hhcmdlLnQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHBlcnNvbm5lX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkVuZmFudEFDaGFyZ2UgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVyc29ubmVBQ2hhcmdlLkF1dHJlUGVyc29ubmVBQ2hhcmdlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSAobWVuYWdlXy5NZW5hZ2UucGVyc29ubmVzX2FfY2hhcmdlKSkpXG4gICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjNcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgKG9fbXVsdF9tb25fcmF0XG4gICAgICAgICAgICAgICAgICAgIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X21vbnRhbnRfXG4gICAgICAgICAgICAgICAgICAgIChvX211bHRfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAob190b3JhdF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2ZpbHRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwZXJzb25uZV9hX2NoYXJnZV86IFBlcnNvbm5lQUNoYXJnZS50KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBwZXJzb25uZV9hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5FbmZhbnRBQ2hhcmdlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5wZXJzb25uZXNfYV9jaGFyZ2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiM1wiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuMlwiKSkpIGVsc2VcbiAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIikpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00Nzg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDc4OyBlbmRfY29sdW1uPTI2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpUHJpbWVEZUTDqW3DqW5hZ2VtZW50XCI7IFwiw6lsaWdpYmlsaXTDqVwiXVxuICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9dHJ1ZX0gKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChcbiAgICAgICAgICAgICAgICAgICAgICAgICBbfHxdKSAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT01NDc2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NTQ3NjsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBcnRpY2xlIEQ4NjEtN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FwaXRyZSBJIDogR3VhZGVsb3VwZSwgR3V5YW5lLCBNYXJ0aW5pcXVlLCBMYSBSw6l1bmlvbiBldCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBWSSA6IERpc3Bvc2l0aW9uIHBhcnRpY3VsacOocmVzIMOgIGwnb3V0cmUtbWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDIyKSAoMSkgKDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLnJlc2lkZW5jZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3V5YW5lIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5MYVJldW5pb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXlvdHRlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE4NTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE4NTU7IGVuZF9jb2x1bW49NTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODYzLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBhcHBsaWNhYmxlcyDDoCBTYWludC1QaWVycmUtZXQtTWlxdWVsb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogU2FpbnQtUGllcnJlLWV0LU1pcXVlbG9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIFZJIDogRGlzcG9zaXRpb25zIHBhcnRpY3VsacOocmVzIMOgIGwnb3V0cmUtbWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjIpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5yZXNpZGVuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdXlhbmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5MYVJldW5pb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50TWFydGluIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXlvdHRlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjkyOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMjkyOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NjEtNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IEd1YWRlbG91cGUsIEd1eWFuZSwgTWFydGluaXF1ZSwgTGEgUsOpdW5pb24gZXQgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgVkkgOiBEaXNwb3NpdGlvbnMgcGFydGljdWxpw6hyZXMgw6AgbCdvdXRyZS1tZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChtZW5hZ2VfLk1lbmFnZS5yZXNpZGVuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3V5YW5lIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5MYVJldW5pb24gXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWF5b3R0ZSBfIC0+IHRydWUpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NTg1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT01ODg7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgyMy04XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAob19hbmQgZWxpZ2liaWxpdGVfYXBsX2RvdF9lbGlnaWJpbGl0ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kIGNvbmRpdGlvbl9yYW5nX2VuZmFudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kIGNvbmRpdGlvbl9wZXJpb2RlX2RlbWVuYWdlbWVudF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbHRlX2R1cl9kdXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX2RhdF9kYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxpZ2liaWxpdGVfYXBsX2RvdF9kYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX2VtbWVuYWdlbWVudF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGFpX2FwcmVzX2VtbWVuYWdlbWVudF9sODIzXzhfMl8pKSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ4NDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT00ODQ7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00ODQ7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NDg0OyBlbmRfY29sdW1uPTIzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBtb250YW50X3ByaW1lX2RlbWVuYWdlbWVudF86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqVByaW1lRGVEw6ltw6luYWdlbWVudFwiOyBcIm1vbnRhbnRfcHJpbWVfZMOpbcOpbmFnZW1lbnRcIl1cbiAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PXRydWV9IChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjA4Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0yMDgyOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTIyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogUHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmIGVsaWdpYmlsaXRlXyB0aGVuXG4gICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgKG9fbHRlX21vbl9tb24gZGVwZW5zZXNfanVzdGlmaWVlc19yZWVsbGVtZW50X2VuZ2FnZWVzX1xuICAgICAgICAgICAgICAgICAgICBwbGFmb25kX2Q4MjNfMjJfKSB0aGVuXG4gICAgICAgICAgICAgICAgIGRlcGVuc2VzX2p1c3RpZmllZXNfcmVlbGxlbWVudF9lbmdhZ2Vlc18gZWxzZVxuICAgICAgICAgICAgICAgICBwbGFmb25kX2Q4MjNfMjJfKSBlbHNlIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00ODU7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9NDg1OyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsYSBwcmltZSBkZSBkw6ltw6luYWdlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtFbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnQuZWxpZ2liaWxpdGUgPSBlbGlnaWJpbGl0ZV87XG4gICAgIEVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudC5tb250YW50X3ByaW1lX2RlbWVuYWdlbWVudCA9XG4gICAgICAgbW9udGFudF9wcmltZV9kZW1lbmFnZW1lbnRffVxuXG5sZXQgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudCAoZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbjogRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnRJbi50KSA6IEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LnQgPVxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLkVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgbWVuYWdlXzogTWVuYWdlLnQgPSBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLkVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4ubWVuYWdlX2luIGluXG4gIGxldCBkZW1hbmRldXJfOiBEZW1hbmRldXIudCA9IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4uRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnRJbi5kZW1hbmRldXJfaW4gaW5cbiAgbGV0IGJlbmVmaWNpZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfOiBib29sID0gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5FbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluLmJlbmVmaWNpZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4gaW5cbiAgbGV0IGR1cmVlX2w4NDFfMV8zXzogZHVyYXRpb24gPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwiZHVyw6llX2w4NDFfMV8zXCJdIHtpb19pbnB1dD1Ob0lucHV0O1xuICAgIGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2R1cmF0aW9uKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MTE5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQxMTk7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NDEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDEgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gZHVyYXRpb25fb2ZfbnVtYmVycyAoNSkgKDApICgwKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDI5OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQyOTsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjtcbiAgICAgICAgXCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzLmRhdGVfY291cmFudGVcIl0ge2lvX2lucHV0PU9ubHlJbnB1dDtcbiAgICAgIGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ0NTsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ0NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDU7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVzaWRlbmNlXzogQ29sbGVjdGl2aXRlLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiO1xuICAgICAgICBcInByZXN0YXRpb25zX2ZhbWlsaWFsZXMucsOpc2lkZW5jZVwiXSB7aW9faW5wdXQ9T25seUlucHV0O1xuICAgICAgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfY29sbGVjdGl2aXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDY7IGVuZF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtZW5hZ2VfLk1lbmFnZS5yZXNpZGVuY2UpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDQ2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ0NjsgZW5kX2NvbHVtbj00NjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9hZ2VfbDUxMl8zXzJfOiB1bml0IC0+IGR1cmF0aW9uID0gZnVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInByZXN0YXRpb25zX2ZhbWlsaWFsZXMuw6JnZV9sNTEyXzNfMlwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9UmVlbnRyYW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9kdXJhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IpKSBpblxuICBsZXQgcmVzdWx0XzogRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc1wiO1xuICAgICAgXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc1wiO1xuICAgICAgXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCJdXG4gICAgZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcylcbiAgICAoe0VsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzSW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2RhdGVfY291cmFudGVfO1xuICAgICAgICBFbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlc0luLnJlc2lkZW5jZV9pbiA9XG4gICAgICAgICAgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVzaWRlbmNlXztcbiAgICAgICAgRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi5hZ2VfbDUxMl8zXzJfaW4gPVxuICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2FnZV9sNTEyXzNfMl99KSkpIGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9hZ2VfbDUxMl8zXzJfOiBkdXJhdGlvbiA9IHJlc3VsdF8uRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuYWdlX2w1MTJfM18yIGluXG4gIGxldCBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9kcm9pdF9vdXZlcnRfOiBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlcy5kcm9pdF9vdXZlcnQgaW5cbiAgbGV0IHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2NvbmRpdGlvbnNfaG9yc19hZ2VfOiBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCA9IHJlc3VsdF8uRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuY29uZGl0aW9uc19ob3JzX2FnZSBpblxuICBsZXQgcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19kb3RfcmVnaW1lX291dHJlX21lcl9sNzUxXzFfOiBib29sID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlcy5yZWdpbWVfb3V0cmVfbWVyX2w3NTFfMSBpblxuICBsZXQgbF84NDFfMV82X2FwcGxpY2FibGVfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiOyBcImxfODQxXzFfNl9hcHBsaWNhYmxlXCJdXG4gICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2Jvb2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChcbiAgICAgICAgICAgICAgICAgICAgICAgICBbfHxdKSAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNzMyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTczMjsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NjItM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBWSSA6IERpc3Bvc2l0aW9ucyBwYXJ0aWN1bGnDqHJlcyDDoCBsJ291dHJlLW1lclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5yZXNpZGVuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdXlhbmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5MYVJldW5pb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1heW90dGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQyODsgc3RhcnRfY29sdW1uPTE5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0Mjg7IGVuZF9jb2x1bW49Mzk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg2MS02XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDQgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogR3VhZGVsb3VwZSwgR3V5YW5lLCBNYXJ0aW5pcXVlLCBMYSBSw6l1bmlvbiBldCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBWSSA6IERpc3Bvc2l0aW9ucyBwYXJ0aWN1bGnDqHJlcyDDoCBsJ291dHJlLW1lclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKG1lbmFnZV8uTWVuYWdlLnJlc2lkZW5jZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdXlhbmUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTGFSZXVuaW9uIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWF5b3R0ZSBfIC0+IHRydWUpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTAxMzsgc3RhcnRfY29sdW1uPTk7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTAxMzsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MjY7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDI2OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQyNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00MjY7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBsXzg0MV8xXzJfYXBwbGljYWJsZV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwibF84NDFfMV8yX2FwcGxpY2FibGVcIl1cbiAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFxuICAgICAgICAgICAgICAgICAgICAgICAgIFt8fF0pIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE3MzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNzMxOyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg2Mi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIFZJIDogRGlzcG9zaXRpb25zIHBhcnRpY3VsacOocmVzIMOgIGwnb3V0cmUtbWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLnJlc2lkZW5jZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWF5b3R0ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDI3OyBzdGFydF9jb2x1bW49MTk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQyNzsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODYxLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gNCA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBHdWFkZWxvdXBlLCBHdXlhbmUsIE1hcnRpbmlxdWUsIExhIFLDqXVuaW9uIGV0IE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIFZJIDogRGlzcG9zaXRpb25zIHBhcnRpY3VsacOocmVzIMOgIGwnb3V0cmUtbWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAobWVuYWdlXy5NZW5hZ2UucmVzaWRlbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5MYVJldW5pb24gXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXlvdHRlIF8gLT4gdHJ1ZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT05MTM7IHN0YXJ0X2NvbHVtbj05O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTkxMzsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MjU7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDI1OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQyNTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00MjU7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBsXzg0MV8xXzFfYXBwbGljYWJsZV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwibF84NDFfMV8xX2FwcGxpY2FibGVcIl1cbiAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFxuICAgICAgICAgICAgICAgICAgICAgICAgIFt8fF0pIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE3MzA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNzMwOyBlbmRfY29sdW1uPTM5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg2Mi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIFZJIDogRGlzcG9zaXRpb25zIHBhcnRpY3VsacOocmVzIMOgIGwnb3V0cmUtbWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLnJlc2lkZW5jZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWF5b3R0ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDI2OyBzdGFydF9jb2x1bW49MTk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQyNjsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODYxLTZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gNCA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBHdWFkZWxvdXBlLCBHdXlhbmUsIE1hcnRpbmlxdWUsIExhIFLDqXVuaW9uIGV0IE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIFZJIDogRGlzcG9zaXRpb25zIHBhcnRpY3VsacOocmVzIMOgIGwnb3V0cmUtbWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAobWVuYWdlXy5NZW5hZ2UucmVzaWRlbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5MYVJldW5pb24gXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXlvdHRlIF8gLT4gdHJ1ZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT04OTE7IHN0YXJ0X2NvbHVtbj05O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTg5MTsgZW5kX2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MjQ7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDI0OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQyNDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00MjQ7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb25kaXRpb25fYWNjZXNzaW9uX3Byb3ByaWV0ZV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwiY29uZGl0aW9uX2FjY2Vzc2lvbl9wcm9wcmnDqXTDqVwiXVxuICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3x8XSkgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDM0ODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQzNTM7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQXJ0aWNsZSBSODQyLTVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMiA6IEFjY2Vzc2lvbiDDoCBsYSBwcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gcHJvcHJpZXRhaXJlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUucHJldCkuUHJldC50aXR1bGFpcmVfcHJldClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVGl0dWxhaXJlUHJldC5EZW1hbmRldXIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRpdHVsYWlyZVByZXQuVmVuZGV1clF1YW5kRGVtYW5kZXVyQUNvbnRyYXRMb2NhdGlvbkFjY2Vzc2lvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5PYmplY3RpZkRlY2VuY2VMb2dlbWVudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QcmV2dURhbnNMaXN0ZVIzMjFfMTUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QYXNEZVRyYXZhdXggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDMzMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDMzNjsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4NDItNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgMiA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlcyBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIHByb3ByaWV0YWlyZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLnByZXQpLlByZXQudGl0dWxhaXJlX3ByZXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVGl0dWxhaXJlUHJldC5EZW1hbmRldXIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUaXR1bGFpcmVQcmV0LlZlbmRldXJRdWFuZERlbWFuZGV1ckFDb250cmF0TG9jYXRpb25BY2Nlc3Npb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1Lk9iamVjdGlmRGVjZW5jZUxvZ2VtZW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QcmV2dURhbnNMaXN0ZVIzMjFfMTUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlBhc0RlVHJhdmF1eCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT00MzE0OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00MzIxOyBlbmRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4NDItNVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gcHJvcHJpZXRhaXJlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUucHJldCkuUHJldC50aXR1bGFpcmVfcHJldClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRpdHVsYWlyZVByZXQuRGVtYW5kZXVyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUaXR1bGFpcmVQcmV0LlZlbmRldXJRdWFuZERlbWFuZGV1ckFDb250cmF0TG9jYXRpb25BY2Nlc3Npb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUudHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5PYmplY3RpZkRlY2VuY2VMb2dlbWVudCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QcmV2dURhbnNMaXN0ZVIzMjFfMTUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUGFzRGVUcmF2YXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuT2JqZWN0aWZEZWNlbmNlTG9nZW1lbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5QcmV2dURhbnNMaXN0ZVIzMjFfMTUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuUGFzRGVUcmF2YXV4IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmFpc2UgRW1wdHlFcnJvcikpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQyODQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTQyODY7IGVuZF9jb2x1bW49Mjg7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjg0Mi01XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gXyAtPiB0cnVlKSkpXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00MjM7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9NDIzOyBlbmRfY29sdW1uPTQwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQyMzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00MjM7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBfOiB1bml0ID0gaWYgKFxuICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgIChvX25vdFxuICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlbWFuZGV1cl8uRGVtYW5kZXVyLnBlcnNvbm5lX2hlYmVyZ2VlX2NlbnRyZV9zb2luX2xfTDE2Ml8yMl8zX3NlY3VyaXRlX3NvY2lhbGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlbWFuZGV1cl8uRGVtYW5kZXVyLm1hZ2lzdHJhdF9mb25jdGlvbm5haXJlX2NlbnRyZV9pbnRlcmV0c19tYXRlcmllbHNfZmFtaWxpYXV4X2hvcnNfbWF5b3R0ZSkpKSlcbiAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE1MDsgc3RhcnRfY29sdW1uPTEzO1xuICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNTU7IGVuZF9jb2x1bW49ODE7XG4gICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg0MS0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpXG4gICAgICAgICAgICAgICAgICB0aGVuICgpIGVsc2VcbiAgICAgICAgICAgICAgICAgIHJhaXNlIChBc3NlcnRpb25GYWlsZWQge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE1MDsgc3RhcnRfY29sdW1uPTEzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTExNTU7IGVuZF9jb2x1bW49ODE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg0MS0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfbWVuYWdlXzogTWVuYWdlLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfY29tbXVuZS5tw6luYWdlXCJdXG4gICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9tZW5hZ2UpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDQ4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ0ODsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1lbmFnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDQ4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQ0ODsgZW5kX2NvbHVtbj00MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9kZW1hbmRldXJfOiBEZW1hbmRldXIudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwiw6lsaWdpYmlsaXTDqV9jb21tdW5lLmRlbWFuZGV1clwiXVxuICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfZGVtYW5kZXVyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ0OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDk7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkZW1hbmRldXJfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQ0OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NDk7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiO1xuICAgICAgICBcIsOpbGlnaWJpbGl0w6lfY29tbXVuZS5kYXRlX2NvdXJhbnRlXCJdIHtpb19pbnB1dD1Pbmx5SW5wdXQ7XG4gICAgICBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ1MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NTA7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00NTA7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9NDUwOyBlbmRfY29sdW1uPTQ3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV86IFxuICAgIHVuaXQgLT4gYm9vbCA9IGZ1biAoXzogdW5pdCkgLT4gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiw6lsaWdpYmlsaXTDqV9jb21tdW5lLmNvbmRpdGlvbl9sb2dlbWVudF9yw6lzaWRlbmNlX3ByaW5jaXBhbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgIHtpb19pbnB1dD1SZWVudHJhbnQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2Jvb2wpXG4gICAgICAgICAgICAgICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoXG4gICAgICAgICAgICAgICAgICAgICAgICBbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTQ3NTM7IHN0YXJ0X2NvbHVtbj05O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT00NzUzOyBlbmRfY29sdW1uPTY4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODQyLTE0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIDIgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZXMgYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIExvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgbG9nZW1lbnRfZm95ZXJfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dlbWVudF9mb3llcl8uTG9nZW1lbnRGb3llci5jb25zdHJ1aXRfYXBwbGljYXRpb25fbG9pXzE5NTdfMTJfSUlJKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT4gZmFsc2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlXzogdW5pdCAtPiBib29sID0gXG4gICAgZnVuIChfOiB1bml0KSAtPiAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjtcbiAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2NvbW11bmUuY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VcIl1cbiAgICAgIHtpb19pbnB1dD1SZWVudHJhbnQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2Jvb2wpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT00NzU0OyBzdGFydF9jb2x1bW49OTsgZW5kX2xpbmU9NDc1NDsgZW5kX2NvbHVtbj01NTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjg0Mi0xNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSAyIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGVzIGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAobWF0Y2ggKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKVxuICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgbG9nZW1lbnRfZm95ZXJfIC0+XG4gICAgICAgICAgICAgICAgIChsb2dlbWVudF9mb3llcl8uTG9nZW1lbnRGb3llci5jb25zdHJ1aXRfYXBwbGljYXRpb25fbG9pXzE5NTdfMTJfSUlJKVxuICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT4gZmFsc2UpKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2RhdGVfZW50cmVlX3ZpZ3VldXJfZGlmZmVyZWVfY2NoXzogdW5pdCAtPiBkYXRlID0gXG4gICAgZnVuIChfOiB1bml0KSAtPiAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjtcbiAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2NvbW11bmUuZGF0ZV9lbnRyw6llX3ZpZ3VldXJfZGlmZsOpcsOpZV9jY2hcIl1cbiAgICAgIHtpb19pbnB1dD1SZWVudHJhbnQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2RhdGUpIChyYWlzZSBFbXB0eUVycm9yKSkgaW5cbiAgbGV0IHJlc3VsdF86IEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfY29tbXVuZVwiO1xuICAgICAgXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwiw6lsaWdpYmlsaXTDqV9jb21tdW5lXCI7XG4gICAgICBcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIl1cbiAgICBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudClcbiAgICAoe0VsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4ubWVuYWdlX2luID1cbiAgICAgICAgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfbWVuYWdlXztcbiAgICAgICAgRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kZW1hbmRldXJfaW4gPVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2RlbWFuZGV1cl87XG4gICAgICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgICAgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZGF0ZV9jb3VyYW50ZV87XG4gICAgICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlX2luID1cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9jb25kaXRpb25fbG9nZW1lbnRfcmVzaWRlbmNlX3ByaW5jaXBhbGVfO1xuICAgICAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlX2luID1cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9jb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV87XG4gICAgICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uZGF0ZV9lbnRyZWVfdmlndWV1cl9kaWZmZXJlZV9jY2hfaW4gPVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2RhdGVfZW50cmVlX3ZpZ3VldXJfZGlmZmVyZWVfY2NoX30pKSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5kYXRlX2NvdXJhbnRlIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9lbGlnaWJpbGl0ZV86IGJvb2wgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmVsaWdpYmlsaXRlIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfOiBpbnRlZ2VyID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGUgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfOiBcbiAgICBkZWNpbWFsIGFycmF5ID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9jb25kaXRpb25fMl9yODIzXzRfOiBQZXJzb25uZUFDaGFyZ2UudCAtPiBib29sID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5jb25kaXRpb25fMl9yODIzXzQgaW5cbiAgbGV0IGNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfOiBkZWNpbWFsIGFycmF5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiO1xuICAgICAgXCJjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybsOpZV9wcmlzX2VuX2NvbXB0ZVwiXVxuICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9dHJ1ZX0gKGVtYmVkX2FycmF5IChlbWJlZF9kZWNpbWFsKSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ1NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NTQ7IGVuZF9jb2x1bW49NjM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTQzOTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT00Mzk7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfOiBpbnRlZ2VyID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiO1xuICAgICAgXCJub21icmVfcGVyc29ubmVzX8OgX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXCJdIHtpb19pbnB1dD1Ob0lucHV0O1xuICAgIGlvX291dHB1dD10cnVlfSAoZW1iZWRfaW50ZWdlcikgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQ1Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT00NTI7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDM4OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTQzODsgZW5kX2NvbHVtbj01NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2Rpc3Bvc2l0aW9uc19jb21tdW5lc186IFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC50ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiO1xuICAgICAgXCLDqWxpZ2liaWxpdMOpX2Rpc3Bvc2l0aW9uc19jb21tdW5lc1wiXSB7aW9faW5wdXQ9Tm9JbnB1dDtcbiAgICBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF90eXBlX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTg2Mzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT04NjM7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIChvX29yIChvX25vdCBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9lbGlnaWJpbGl0ZV8pXG4gICAgICAgICAgICAgICAgIChvX25vdCBjb25kaXRpb25fYWNjZXNzaW9uX3Byb3ByaWV0ZV8pKSB0aGVuXG4gICAgICAgICAgICAgIChUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuUGFzRWxpZ2libGUgKCkpIGVsc2VcbiAgICAgICAgICAgICAgKFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlICgpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDM2OyBzdGFydF9jb2x1bW49MTA7IGVuZF9saW5lPTQzNjsgZW5kX2NvbHVtbj0zMTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZmFtaWxpYWxlXzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIjtcbiAgICAgIFwiw6lsaWdpYmlsaXTDqV9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZhbWlsaWFsZVwiXSB7aW9faW5wdXQ9Tm9JbnB1dDtcbiAgICBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE3ODQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNzg0OyBlbmRfY29sdW1uPTY2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFydGljbGUgTDg2Mi0zXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgVkkgOiBEaXNwb3NpdGlvbnMgcGFydGljdWxpw6hyZXMgw6AgbCdvdXRyZS1tZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWVuYWdlXy5NZW5hZ2UucmVzaWRlbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGVjdGl2aXRlLkd1eWFuZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZpdGUuTWF5b3R0ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVtYW5kZXVyXy5EZW1hbmRldXIuZXN0X25vbl9zYWxhcmllX2Fncmljb2xlX2w3ODFfOF9sXzc4MV80Nl9jb2RlX3J1cmFsKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTc1MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE3NjY7IGVuZF9jb2x1bW49OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBcnRpY2xlIEw4NjItM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIFZJIDogRGlzcG9zaXRpb25zIHBhcnRpY3VsacOocmVzIMOgIGwnb3V0cmUtbWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLnJlc2lkZW5jZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5HdXlhbmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5MYVJldW5pb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGVjdGl2aXRlLk1heW90dGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RlX2ludF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2ZpbHRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwZXJzb25uZV9hX2NoYXJnZV86XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBlcnNvbm5lQUNoYXJnZS50KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJzb25uZV9hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQZXJzb25uZUFDaGFyZ2UuRW5mYW50QUNoYXJnZSBlbmZhbnRfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpb19pbnB1dD1Ob0lucHV0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpb19vdXRwdXQ9dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2Jvb2wpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9kcm9pdF9vdXZlcnRfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW9fb3V0cHV0PWZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7RW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLmlkZW50aWZpYW50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50QUNoYXJnZS5pZGVudGlmaWFudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5vYmxpZ2F0aW9uX3Njb2xhaXJlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50QUNoYXJnZS5vYmxpZ2F0aW9uX3Njb2xhaXJlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLnJlbXVuZXJhdGlvbl9tZW5zdWVsbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLnJlbXVuZXJhdGlvbl9tZW5zdWVsbGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuZGF0ZV9kZV9uYWlzc2FuY2UgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLmRhdGVfZGVfbmFpc3NhbmNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLmFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLmFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMpfSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBlcnNvbm5lQUNoYXJnZS5BdXRyZVBlcnNvbm5lQUNoYXJnZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWVuYWdlXy5NZW5hZ2UucGVyc29ubmVzX2FfY2hhcmdlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDk4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTQ5ODsgZW5kX2NvbHVtbj02NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBcnRpY2xlIEw4NjEtNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gNCA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogR3VhZGVsb3VwZSwgR3V5YW5lLCBNYXJ0aW5pcXVlLCBMYSBSw6l1bmlvbiBldCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgVkkgOiBEaXNwb3NpdGlvbnMgcGFydGljdWxpw6hyZXMgw6AgbCdvdXRyZS1tZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWVuYWdlXy5NZW5hZ2UucmVzaWRlbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZpdGUuR3V5YW5lIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGVjdGl2aXRlLk1heW90dGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVtYW5kZXVyXy5EZW1hbmRldXIuZXN0X25vbl9zYWxhcmllX2Fncmljb2xlX2w3ODFfOF9sXzc4MV80Nl9jb2RlX3J1cmFsKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQ2NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0Nzc7IGVuZF9jb2x1bW49OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBcnRpY2xlIEw4NjEtNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gNCA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogR3VhZGVsb3VwZSwgR3V5YW5lLCBNYXJ0aW5pcXVlLCBMYSBSw6l1bmlvbiBldCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgVkkgOiBEaXNwb3NpdGlvbnMgcGFydGljdWxpw6hyZXMgw6AgbCdvdXRyZS1tZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWVuYWdlXy5NZW5hZ2UucmVzaWRlbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZpdGUuR3V5YW5lIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGVjdGl2aXRlLk1heW90dGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZmlsdGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBlcnNvbm5lX2FfY2hhcmdlXzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGVyc29ubmVBQ2hhcmdlLnQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcnNvbm5lX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBlcnNvbm5lQUNoYXJnZS5FbmZhbnRBQ2hhcmdlIGVuZmFudF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2lvX2lucHV0PU5vSW5wdXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvX291dHB1dD10cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2Ryb2l0X291dmVydF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9T25seUlucHV0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuaWRlbnRpZmlhbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLmlkZW50aWZpYW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLm9ibGlnYXRpb25fc2NvbGFpcmUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLm9ibGlnYXRpb25fc2NvbGFpcmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMucmVtdW5lcmF0aW9uX21lbnN1ZWxsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2UucmVtdW5lcmF0aW9uX21lbnN1ZWxsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5kYXRlX2RlX25haXNzYW5jZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2UuZGF0ZV9kZV9uYWlzc2FuY2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2UuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyl9KSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGVyc29ubmVBQ2hhcmdlLkF1dHJlUGVyc29ubmVBQ2hhcmdlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5wZXJzb25uZXNfYV9jaGFyZ2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEwMTc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDIyOyBlbmRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFydGljbGUgTDg0MS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfODQxXzFfNl9hcHBsaWNhYmxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLnNpdHVhdGlvbl9mYW1pbGlhbGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2l0dWF0aW9uRmFtaWxpYWxlLkNlbGliYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWVuYWdlXy5NZW5hZ2UucGVyc29ubmVzX2FfY2hhcmdlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLmVuZmFudF9hX25haXRyZV9hcHJlc19xdWF0cmllbWVfbW9pc19ncm9zc2Vzc2UpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaXR1YXRpb25GYW1pbGlhbGUuTWFyaWVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2l0dWF0aW9uRmFtaWxpYWxlLlBhY3NlcyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpdHVhdGlvbkZhbWlsaWFsZS5Db25jdWJpbnMgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaXR1YXRpb25GYW1pbGlhbGUuQ2VsaWJhdGFpcmVTZXBhcmVEZUZhaXQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaXR1YXRpb25GYW1pbGlhbGUuQ29uY3ViaW5hZ2VEb250U2VwYXJlRGVGYWl0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk5MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMDAzOyBlbmRfY29sdW1uPTEzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJBcnRpY2xlIEw4NDEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9pbnRfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZmlsdGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBlcnNvbm5lX2FfY2hhcmdlXzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGVyc29ubmVBQ2hhcmdlLnQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcnNvbm5lX2FfY2hhcmdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBlcnNvbm5lQUNoYXJnZS5FbmZhbnRBQ2hhcmdlIGVuZmFudF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGVyc29ubmVBQ2hhcmdlLkF1dHJlUGVyc29ubmVBQ2hhcmdlIHBhcmVudF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJlbnRfLkF1dHJlUGVyc29ubmVBQ2hhcmdlLmFzY2VuZGFudF9kZXNjZW5kYW50X2NvbGxhdGVyYWxfZGV1eGllbWVfdHJvaXNpZW1lX2RlZ3JlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyZW50Xy5BdXRyZVBlcnNvbm5lQUNoYXJnZS5pbmNhcGFjaXRlXzgwX3BvdXJjZW50X291X3Jlc3RyaWN0aW9uX2VtcGxvaSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWVuYWdlXy5NZW5hZ2UucGVyc29ubmVzX2FfY2hhcmdlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTk3NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTk3NjsgZW5kX2NvbHVtbj05O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkFydGljbGUgTDg0MS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfaW50X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19maWx0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBlcnNvbm5lX2FfY2hhcmdlXzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGVyc29ubmVBQ2hhcmdlLnQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNvbmRpdGlvbl8yX3I4MjNfNFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjb25kaXRpb25fMl9yODIzXzRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2lvX2lucHV0PU5vSW5wdXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvX291dHB1dD10cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uXzJfcjgyM180XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdGlvbl8yX3I4MjNfNF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNvbmRpdGlvbl8yX3I4MjNfNFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9T25seUlucHV0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9wZXJzb25uZV9hX2NoYXJnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyc29ubmVfYV9jaGFyZ2VfKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLnBlcnNvbm5lc19hX2NoYXJnZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjFcIikpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTQyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05NjA7IGVuZF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19maWx0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBlcnNvbm5lX2FfY2hhcmdlXzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBlcnNvbm5lQUNoYXJnZS50KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJzb25uZV9hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuRW5mYW50QUNoYXJnZSBlbmZhbnRfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19ub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lQcmVzdGF0aW9uc0ZhbWlsaWFsZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkcm9pdF9vdXZlcnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2lvX2lucHV0PU5vSW5wdXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvX291dHB1dD10cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfYm9vbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2Ryb2l0X291dmVydF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9T25seUlucHV0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuaWRlbnRpZmlhbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLmlkZW50aWZpYW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLm9ibGlnYXRpb25fc2NvbGFpcmUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLm9ibGlnYXRpb25fc2NvbGFpcmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMucmVtdW5lcmF0aW9uX21lbnN1ZWxsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2UucmVtdW5lcmF0aW9uX21lbnN1ZWxsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5kYXRlX2RlX25haXNzYW5jZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2UuZGF0ZV9kZV9uYWlzc2FuY2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2UuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyl9KSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWVuYWdlXy5NZW5hZ2UucGVyc29ubmVzX2FfY2hhcmdlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIwXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5zaXR1YXRpb25fZmFtaWxpYWxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNlbGliYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLk1hcmllcyBkYXRlX21hcmlhZ2VfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9jb3VyYW50ZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FkZF9kYXRfZHVyIEFib3J0T25Sb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9tYXJpYWdlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyZWVfbDg0MV8xXzNfKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuUGFjc2VzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNvbmN1YmlucyBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5DZWxpYmF0YWlyZVNlcGFyZURlRmFpdCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5Db25jdWJpbmFnZURvbnRTZXBhcmVEZUZhaXQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTE3OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT05MzE7IGVuZF9jb2x1bW49ODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kIGxfODQxXzFfMl9hcHBsaWNhYmxlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZmlsdGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBlcnNvbm5lX2FfY2hhcmdlXzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQZXJzb25uZUFDaGFyZ2UudCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJzb25uZV9hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5FbmZhbnRBQ2hhcmdlIGVuZmFudF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9Tm9JbnB1dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvX291dHB1dD10cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2Jvb2wpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpUHJlc3RhdGlvbnNGYW1pbGlhbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZHJvaXRfb3V2ZXJ0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9kcm9pdF9vdXZlcnRfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqVByZXN0YXRpb25zRmFtaWxpYWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRyb2l0X291dmVydFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0MFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvX291dHB1dD1mYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9lbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7RW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLmlkZW50aWZpYW50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLmlkZW50aWZpYW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMub2JsaWdhdGlvbl9zY29sYWlyZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5mYW50Xy5FbmZhbnRBQ2hhcmdlLm9ibGlnYXRpb25fc2NvbGFpcmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5yZW11bmVyYXRpb25fbWVuc3VlbGxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2UucmVtdW5lcmF0aW9uX21lbnN1ZWxsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5mYW50UHJlc3RhdGlvbnNGYW1pbGlhbGVzLmRhdGVfZGVfbmFpc3NhbmNlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2UuZGF0ZV9kZV9uYWlzc2FuY2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy5hX2RlamFfb3V2ZXJ0X2Ryb2l0X2F1eF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmZhbnRfLkVuZmFudEFDaGFyZ2UuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyl9KSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5wZXJzb25uZXNfYV9jaGFyZ2UpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXJfb2Zfc3RyaW5nIFwiMVwiKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9ODk1OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9OTAxOyBlbmRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmQgbF84NDFfMV8xX2FwcGxpY2FibGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19mb2xkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChhY2NfOiBib29sKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByZXN0YXRpb25fOiBQcmVzdGF0aW9uUmVjdWUudCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fb3IgYWNjX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19lcSBwcmVzdGF0aW9uX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHJlc3RhdGlvblJlY3VlLkFsbG9jYXRpb25zRmFtaWxpYWxlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2VxIHByZXN0YXRpb25fXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQcmVzdGF0aW9uUmVjdWUuQ29tcGxlbWVudEZhbWlsaWFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcHJlc3RhdGlvbl9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFByZXN0YXRpb25SZWN1ZS5BbGxvY2F0aW9uU291dGllbkZhbWlsaWFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fZXEgcHJlc3RhdGlvbl9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFByZXN0YXRpb25SZWN1ZS5BbGxvY2F0aW9uU291dGllbkVuZmFudEhhbmRpY2FwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpKSkpKSBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLnByZXN0YXRpb25zX3JlY3VlcykpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTQyODsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT00Mjg7IGVuZF9jb2x1bW49NTI7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIGF1eCBhbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9NDI4OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTQyODsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgYXV4IGFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2w4NDFfMl86IFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC50ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFsbG9jYXRpb25Mb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfbDg0MV8yXCJdXG4gICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfVxuICAgIChlbWJlZF90eXBlX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTsgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2MDg7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjA5OyBlbmRfY29sdW1uPTc5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODYxLThcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDQgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IEd1YWRlbG91cGUsIEd1eWFuZSwgTWFydGluaXF1ZSwgTGEgUsOpdW5pb24gZXQgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIFZJIDogRGlzcG9zaXRpb25zIHBhcnRpY3VsacOocmVzIMOgIGwnb3V0cmUtbWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAobWVuYWdlXy5NZW5hZ2UucmVzaWRlbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdXlhbmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWV0cm9wb2xlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1heW90dGUgXyAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlbWFuZGV1cl8uRGVtYW5kZXVyLm1hZ2lzdHJhdF9mb25jdGlvbm5haXJlX2NlbnRyZV9pbnRlcmV0c19tYXRlcmllbHNfZmFtaWxpYXV4X2hvcnNfbWF5b3R0ZSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuUGFzRWxpZ2libGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1NzQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU4MzsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NjEtNlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDQgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBHdWFkZWxvdXBlLCBHdXlhbmUsIE1hcnRpbmlxdWUsIExhIFLDqXVuaW9uIGV0IE1heW90dGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgVkkgOiBEaXNwb3NpdGlvbnMgcGFydGljdWxpw6hyZXMgw6AgbCdvdXRyZS1tZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKG1lbmFnZV8uTWVuYWdlLnJlc2lkZW5jZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdXlhbmUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1hcnRpbmlxdWUgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWF5b3R0ZSBfIC0+IHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIHByb3ByaWV0YWlyZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX29yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLnByZXQpLlByZXQuZGF0ZV9zaWduYXR1cmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE3KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLnByZXQpLlByZXQuZGF0ZV9zaWduYXR1cmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLnByZXQpLlByZXQuYWNjb3JkX2ZpbmFuY2VtZW50X3JlcHJlc2VudGFudF9FdGF0X291dHJlX21lcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBY2NvcmRGaW5hbmNlbWVudFJlcHJlc2VudGFudEV0YXRPdXRyZU1lci5BY2NvcmQgZGF0ZV9hY2NvcmRfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2x0ZV9kYXRfZGF0IGRhdGVfYWNjb3JkX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE4KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQWNjb3JkRmluYW5jZW1lbnRSZXByZXNlbnRhbnRFdGF0T3V0cmVNZXIuUGFzZEFjY29yZCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gXyAtPiBmYWxzZSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5QYXNFbGlnaWJsZSAoKSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE3Mzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTE3NjsgZW5kX2NvbHVtbj0yODtcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElWIDogQWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBwcm9wcmlldGFpcmVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9fZ3RfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUucHJldCkuUHJldC5kYXRlX3NpZ25hdHVyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE3KSAoMTIpICgzMSkpKVxuICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gXyAtPiBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuUGFzRWxpZ2libGUgKCkpKTtcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTU5OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xMTU5OyBlbmRfY29sdW1uPTczO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtM1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAoZGVtYW5kZXVyXy5EZW1hbmRldXIucGVyc29ubmVfaGViZXJnZWVfY2VudHJlX3NvaW5fbF9MMTYyXzIyXzNfc2VjdXJpdGVfc29jaWFsZSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZVxuICAgICAgICAgICAgICAgICAgICAgICgpKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDQ5OyBzdGFydF9jb2x1bW49Mjk7IGVuZF9saW5lPTEwNDk7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgKG9fZXEgZWxpZ2liaWxpdGVfZGlzcG9zaXRpb25zX2NvbW11bmVzX1xuICAgICAgICAgICAgICAgICAgICAoVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LlBhc0VsaWdpYmxlICgpKSlcbiAgICAgICAgICAgICAgICAgYmVuZWZpY2llX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF8pIHRoZW5cbiAgICAgICAgICAgICAgKFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5QYXNFbGlnaWJsZSAoKSkgZWxzZVxuICAgICAgICAgICAgICAoIGlmIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZmFtaWxpYWxlXyB0aGVuXG4gICAgICAgICAgICAgICAgIChUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlXG4gICAgICAgICAgICAgICAgICAgICgpKSBlbHNlXG4gICAgICAgICAgICAgICAgIChUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZVxuICAgICAgICAgICAgICAgICAgICAoKSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT00Mzc7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9NDM3OyBlbmRfY29sdW1uPTE2O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSBhdXggYWxsb2NhdGlvbnMgZGUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICB7RWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuZWxpZ2liaWxpdGUgPSBlbGlnaWJpbGl0ZV9sODQxXzJfO1xuICAgICBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGUgPVxuICAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV87XG4gICAgIEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LmNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGUgPVxuICAgICAgIGNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVffVxuXG5sZXQgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50IChlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW46IEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnQpIDogRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50LnQgPVxuICBsZXQgbWVuYWdlXzogTWVuYWdlLnQgPSBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4uRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4ubWVuYWdlX2luIGluXG4gIGxldCBkZW1hbmRldXJfOiBEZW1hbmRldXIudCA9IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5kZW1hbmRldXJfaW4gaW5cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLkVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IGNhcmFjdGVyaXN0aXF1ZXNfcHJldF9sODMxXzFfMV86IFByZXQudCAtPiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICBcImNhcmFjdMOpcmlzdGlxdWVzX3Byw6p0X2w4MzFfMV8xXCJdIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgKHVuZW1iZWRkYWJsZSlcbiAgICAoZnVuIChwcmV0XzogUHJldC50KSAtPiBcbiAgICAgICB0cnlcbiAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7IGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTk2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTI5OTk7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgzMi03XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDIgOiBBY2Nlc3Npb24gw6AgbGEgcHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJldF8uUHJldC50aXR1bGFpcmVfcHJldClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVGl0dWxhaXJlUHJldC5EZW1hbmRldXIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRpdHVsYWlyZVByZXQuVmVuZGV1clF1YW5kRGVtYW5kZXVyQUNvbnRyYXRMb2NhdGlvbkFjY2Vzc2lvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmV0Xy5QcmV0LnR5cGVfcHJldClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV8zMiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV81OV84IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByZXRfLlByZXQudHlwZV9wcmV0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzYzXzY0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNzZfMSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5BdXRyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0yOTYxOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mjk2MzsgZW5kX2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjgzMi01XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAyIDogQWNjZXNzaW9uIMOgIGxhIHByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudCBkZSBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChwcmV0Xy5QcmV0LnRpdHVsYWlyZV9wcmV0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRpdHVsYWlyZVByZXQuRGVtYW5kZXVyIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVGl0dWxhaXJlUHJldC5WZW5kZXVyUXVhbmREZW1hbmRldXJBQ29udHJhdExvY2F0aW9uQWNjZXNzaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19vclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIChwcmV0Xy5QcmV0LnR5cGVfcHJldClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzMyIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzU5XzggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV83Nl8xIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkF1dHJlIF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKHByZXRfLlByZXQudHlwZV9wcmV0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfMzIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuRDMzMV82M182NCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVQcmV0LkQzMzFfNTlfOCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlUHJldC5EMzMxXzc2XzEgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZVByZXQuQXV0cmUgXyAtPiBmYWxzZSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSkpfF0pXG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM4Mzsgc3RhcnRfY29sdW1uPTExO1xuICAgICAgICAgICAgICAgICBlbmRfbGluZT0zODM7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgICAgd2l0aFxuICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgIHN0YXJ0X2xpbmU9MzgzOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTM4MzsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNhcmFjdGVyaXN0aXF1ZXNfcHJldF9sODMxXzFfNl86IFByZXQudCAtPiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICBcImNhcmFjdMOpcmlzdGlxdWVzX3Byw6p0X2w4MzFfMV82XCJdIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgKHVuZW1iZWRkYWJsZSlcbiAgICAoZnVuIChwcmV0XzogUHJldC50KSAtPiBcbiAgICAgICB0cnlcbiAgICAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zODQ7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Mzg0OyBlbmRfY29sdW1uPTQxO1xuICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKVxuICAgICAgIHdpdGhcbiAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTM4NDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zODQ7IGVuZF9jb2x1bW49NDE7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9tZW5hZ2VfOiBNZW5hZ2UudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2NvbW11bmUubcOpbmFnZVwiXSB7aW9faW5wdXQ9T25seUlucHV0O1xuICAgICAgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfbWVuYWdlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM5NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zOTU7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtZW5hZ2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM5NTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zOTU7IGVuZF9jb2x1bW49NDA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZGVtYW5kZXVyXzogRGVtYW5kZXVyLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9jb21tdW5lLmRlbWFuZGV1clwiXSB7aW9faW5wdXQ9T25seUlucHV0O1xuICAgICAgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfZGVtYW5kZXVyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM5Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zOTY7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkZW1hbmRldXJfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM5Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zOTY7IGVuZF9jb2x1bW49NDM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9jb21tdW5lLmRhdGVfY291cmFudGVcIl0ge2lvX2lucHV0PU9ubHlJbnB1dDtcbiAgICAgIGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzk3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTM5NzsgZW5kX2NvbHVtbj00NztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRhdGVfY291cmFudGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM5Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0zOTc7IGVuZF9jb2x1bW49NDc7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlXzogXG4gICAgdW5pdCAtPiBib29sID0gZnVuIChfOiB1bml0KSAtPiAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIsOpbGlnaWJpbGl0w6lfY29tbXVuZS5jb25kaXRpb25fbG9nZW1lbnRfcsOpc2lkZW5jZV9wcmluY2lwYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9UmVlbnRyYW50OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9ib29sKVxuICAgICAgICAgICAgICAgICAgICAgKHJhaXNlIEVtcHR5RXJyb3IpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfOiB1bml0IC0+IGJvb2wgPSBcbiAgICBmdW4gKF86IHVuaXQpIC0+IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgIFwiw6lsaWdpYmlsaXTDqV9jb21tdW5lLmNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlXCJdXG4gICAgICB7aW9faW5wdXQ9UmVlbnRyYW50OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9ib29sKSAocmFpc2UgRW1wdHlFcnJvcikpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9kYXRlX2VudHJlZV92aWd1ZXVyX2RpZmZlcmVlX2NjaF86IHVuaXQgLT4gZGF0ZSA9IFxuICAgIGZ1biAoXzogdW5pdCkgLT4gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2NvbW11bmUuZGF0ZV9lbnRyw6llX3ZpZ3VldXJfZGlmZsOpcsOpZV9jY2hcIl1cbiAgICAgIHtpb19pbnB1dD1SZWVudHJhbnQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2RhdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT01NDQyOyBzdGFydF9jb2x1bW49NTsgZW5kX2xpbmU9NTQ0MzsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgUjg2MS01XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FwaXRyZSBJIDogR3VhZGVsb3VwZSwgR3V5YW5lLCBNYXJ0aW5pcXVlLCBMYSBSw6l1bmlvbiBldCBNYXlvdHRlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgVkkgOiBEaXNwb3NpdGlvbiBwYXJ0aWN1bGnDqHJlcyDDoCBsJ291dHJlLW1lclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAobWF0Y2ggKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKVxuICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gXyAtPiBmYWxzZSkpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGF0ZV9vZl9udW1iZXJzICgyMDIxKSAoNSkgKDEpKSkpIGluXG4gIGxldCByZXN1bHRfOiBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfY29tbXVuZVwiO1xuICAgICAgXCLDiWxpZ2liaWxpdMOpQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50XCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjsgXCLDqWxpZ2liaWxpdMOpX2NvbW11bmVcIjtcbiAgICAgIFwiw4lsaWdpYmlsaXTDqUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudFwiXVxuICAgIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50KVxuICAgICh7RWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5tZW5hZ2VfaW4gPVxuICAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9tZW5hZ2VfO1xuICAgICAgICBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLmRlbWFuZGV1cl9pbiA9XG4gICAgICAgICAgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZGVtYW5kZXVyXztcbiAgICAgICAgRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICAgRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5jb25kaXRpb25fbG9nZW1lbnRfcmVzaWRlbmNlX3ByaW5jaXBhbGVfaW4gPVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV87XG4gICAgICAgIEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4uY29uZGl0aW9uX2xvZ2VtZW50X3N1cmZhY2VfaW4gPVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlXztcbiAgICAgICAgRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi5kYXRlX2VudHJlZV92aWd1ZXVyX2RpZmZlcmVlX2NjaF9pbiA9XG4gICAgICAgICAgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZGF0ZV9lbnRyZWVfdmlndWV1cl9kaWZmZXJlZV9jY2hffSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmRhdGVfY291cmFudGUgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2VsaWdpYmlsaXRlXzogYm9vbCA9IHJlc3VsdF8uRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuZWxpZ2liaWxpdGUgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV86IGludGVnZXIgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50Lm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZSBpblxuICBsZXQgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV86IFxuICAgIGRlY2ltYWwgYXJyYXkgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGUgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdGlvbl8yX3I4MjNfNF86IFBlcnNvbm5lQUNoYXJnZS50IC0+IGJvb2wgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LmNvbmRpdGlvbl8yX3I4MjNfNCBpblxuICBsZXQgbG9nZW1lbnRfc2l0dWVfY29tbXVuZV9kZXNlcXVpbGlicmVfbDgzMV8yXzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgXCJsb2dlbWVudF9zaXR1w6lfY29tbXVuZV9kw6lzw6lxdWlsaWJyZV9sODMxXzJcIl0ge2lvX2lucHV0PU5vSW5wdXQ7XG4gICAgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2FycmV0ZV8yMDE5LTA5LTI3LmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDY2Nzsgc3RhcnRfY29sdW1uPTY7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NDY2NzsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSA0OVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgWEkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycsOqdMOpIGR1IDI3IHNlcHRlbWJyZSAyMDE5IHJlbGF0aWYgYXUgY2FsY3VsIGRlcyBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnQgZXQgZGUgbGEgcHJpbWUgZGUgZMOpbcOpbmFnZW1lbnRcIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZV9vZl9udW1iZXJzICgyMDE5KSAoMTApICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC56b25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTEgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBab25lREhhYml0YXRpb24uWm9uZTMgXyAtPiB0cnVlKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MzgwOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTM4MDsgZW5kX2NvbHVtbj01MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zODA7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MzgwOyBlbmRfY29sdW1uPTUzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgY29uZGl0aW9uX2xvZ2VtZW50X2JhaWxsZXVyXzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgXCJjb25kaXRpb25fbG9nZW1lbnRfYmFpbGxldXJcIl0ge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD1mYWxzZX1cbiAgICAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFxuICAgICAgICAgICAgICAgICAgICAgICAgIFt8fF0pIChmdW4gKF86IHVuaXQpIC0+IHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTU2OTk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTU3MDM7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODYxLTIwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnQgZGFucyBsZXMgbG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBWSSA6IERpc3Bvc2l0aW9uIHBhcnRpY3VsacOocmVzIMOgIGwnb3V0cmUtbWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfY291cmFudGVfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMykgKDQpICg1KSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLnJlc2lkZW5jZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdWFkZWxvdXBlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3V5YW5lIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRQaWVycmVFdE1pcXVlbG9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1heW90dGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIGxvZ2VtZW50X2ZveWVyXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nZW1lbnRfZm95ZXJfLkxvZ2VtZW50Rm95ZXIudHlwZV91c2VyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVMb2dlbWVudEZveWVyLkxvZ2VtZW50UGVyc29ubmVzQWdlZXNPdUhhbmRpY2FwZWVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVMb2dlbWVudEZveWVyLlJlc2lkZW5jZVNvY2lhbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZUxvZ2VtZW50Rm95ZXIuRm95ZXJKZXVuZXNUcmF2YWlsbGV1cnNPdU1pZ3JhbnRzQ29udmVudGlvbm5lTDM1M18yQXZhbnQxOTk1IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZUxvZ2VtZW50Rm95ZXIuQXV0cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0zNTcwOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0zNTczOyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIFI4MzItMjBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAxIDogQ29uZGl0aW9ucyBkJ2Fzc2ltaWxhdGlvbiBkZXMgbG9nZW1lbnRzLWZveWVycyBhdXggbG9nZW1lbnRzIMOgIHVzYWdlIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IExvZ2VtZW50cy1mb3llcnNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnQgZGUgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgbG9nZW1lbnRfZm95ZXJfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ2VtZW50X2ZveWVyXy5Mb2dlbWVudEZveWVyLnR5cGVfdXNlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVMb2dlbWVudEZveWVyLkxvZ2VtZW50UGVyc29ubmVzQWdlZXNPdUhhbmRpY2FwZWVzIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZUxvZ2VtZW50Rm95ZXIuUmVzaWRlbmNlU29jaWFsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVMb2dlbWVudEZveWVyLkZveWVySmV1bmVzVHJhdmFpbGxldXJzT3VNaWdyYW50c0NvbnZlbnRpb25uZUwzNTNfMkF2YW50MTk5NSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVMb2dlbWVudEZveWVyLkF1dHJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJhaXNlIEVtcHR5RXJyb3IpKSl8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTM2Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTM2MzQ7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBSODMyLTIxXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtU2VjdGlvbiAxIDogQ29uZGl0aW9ucyBkJ2Fzc2ltaWxhdGlvbiBkZXMgbG9nZW1lbnRzLWZveWVycyBhdXggbG9nZW1lbnRzIMOgIHVzYWdlIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAzIDogTG9nZW1lbnRzLWZveWVyc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50IGRlIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgbG9nZW1lbnRfZm95ZXJfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nZW1lbnRfZm95ZXJfLkxvZ2VtZW50Rm95ZXIucmVtcGxpdF9jb25kaXRpb25zX3I4MzJfMjEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTEzOTc7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE0MDA7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDg2MS01LTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMyA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IEd1YWRlbG91cGUsIEd1eWFuZSwgTWFydGluaXF1ZSwgTGEgUsOpdW5pb24gZXQgTWF5b3R0ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgVkkgOiBEaXNwb3NpdGlvbnMgcGFydGljdWxpw6hyZXMgw6AgbCdvdXRyZS1tZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAobWVuYWdlXy5NZW5hZ2UucmVzaWRlbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3V5YW5lIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTGFSZXVuaW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludEJhcnRoZWxlbXkgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludE1hcnRpbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50UGllcnJlRXRNaXF1ZWxvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1heW90dGUgXyAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBsb2NhdGlvbl8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9jYXRpb25fLkxvZ2VtZW50Rm95ZXIuY29udmVudGlvbm5lX3NlbG9uX3JlZ2xlc19kcm9tKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTcwNzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTcxMDsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgzMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgbG9jYXRpb25fIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2NhdGlvbl8uTG9nZW1lbnRGb3llci5jb252ZW50aW9ubmVfbGl2cmVfSUlJX3RpdHJlX1ZfY2hhcF9JSUkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSkpO1xuICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT03Mjc7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODMxLTFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBwcm9wcmlldGVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FyYWN0w6lyaXN0aXF1ZXNfcHLDqnRfbDgzMV8xXzZcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhcmFjdMOpcmlzdGlxdWVzX3Byw6p0X2w4MzFfMV82XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9Tm9JbnB1dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvX291dHB1dD10cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2Jvb2wpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYXJhY3TDqXJpc3RpcXVlc19wcsOqdF9sODMxXzFfNlwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyYWN0ZXJpc3RpcXVlc19wcmV0X2w4MzFfMV82XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhcmFjdMOpcmlzdGlxdWVzX3Byw6p0X2w4MzFfMV82XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9T25seUlucHV0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW9fb3V0cHV0PWZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX3ByZXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRlXy5Qcm9wcmlldGFpcmUucHJldCkpKSkpKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjYzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02NzI7IGVuZF9jb2x1bW49MzA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgzMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBsb2NhdGlvbl8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9jYXRpb25fLkxvY2F0aW9uLmJhaWxsZXVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZUJhaWxsZXVyLkJhaWxsZXVyU29jaWFsIGNvbnZlbnRpb25fIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29udmVudGlvbl8uQ29udmVudGlvbkJhaWxsZXVyU29jaWFsLmNvbnZlbnRpb25uZV9saXZyZV9JSUlfdGl0cmVfVl9jaGFwX0lJSSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlQmFpbGxldXIuQmFpbGxldXJQcml2ZUF2ZWNDb252ZW50aW9ubmVtZW50U29jaWFsIGNvbnZlbnRpb25fIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29udmVudGlvbl8uQ29udmVudGlvbkFOSEEuY29udmVudGlvbm5lX2xpdnJlX0lJSV90aXRyZV9JSV9jaGFwX0lfc2VjXzMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZUJhaWxsZXVyLkJhaWxsZXVyUHJpdmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uU291c0xvY2F0YWlyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHRydWUpKXxdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY0Mjsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY0NTsgZW5kX2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgzMS0xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJSSA6IEFpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBwcm9wcmlldGVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FyYWN0w6lyaXN0aXF1ZXNfcHLDqnRfbDgzMV8xXzFcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhcmFjdMOpcmlzdGlxdWVzX3Byw6p0X2w4MzFfMV8xXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0ge2lvX2lucHV0PU5vSW5wdXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvX291dHB1dD10cnVlfSAoZW1iZWRfYm9vbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhcmFjdMOpcmlzdGlxdWVzX3Byw6p0X2w4MzFfMV8xXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmFjdGVyaXN0aXF1ZXNfcHJldF9sODMxXzFfMV8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjYXJhY3TDqXJpc3RpcXVlc19wcsOqdF9sODMxXzFfMVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXQwXCJdIHtpb19pbnB1dD1Pbmx5SW5wdXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX3ByZXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGVfLlByb3ByaWV0YWlyZS5wcmV0KSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRpb25BY2Nlc3Npb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpKSAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiByYWlzZSBFbXB0eUVycm9yKSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM4MTsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zODE7IGVuZF9jb2x1bW49Mzg7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzgxOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTM4MTsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfOiBkZWNpbWFsIGFycmF5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiw4lsaWdpYmlsaXTDqUFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICBcImNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuw6llX3ByaXNfZW5fY29tcHRlXCJdXG4gICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfSAoZW1iZWRfYXJyYXkgKGVtYmVkX2RlY2ltYWwpKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NDAxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTQwMTsgZW5kX2NvbHVtbj02MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBlbGlnaWJpbGl0ZV9jb21tdW5lX2RvdF9jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXykpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzkwOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTM5MDsgZW5kX2NvbHVtbj02MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV86IGludGVnZXIgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgIFwibm9tYnJlX3BlcnNvbm5lc1/DoF9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZVwiXSB7aW9faW5wdXQ9Tm9JbnB1dDtcbiAgICBpb19vdXRwdXQ9dHJ1ZX0gKGVtYmVkX2ludGVnZXIpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0zOTk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9Mzk5OyBlbmRfY29sdW1uPTU2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGVsaWdpYmlsaXRlX2NvbW11bmVfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTM4OTsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0zODk7IGVuZF9jb2x1bW49NTQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjb25kaXRpb25fbG9nZW1lbnRfcHJldF86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjsgXCJjb25kaXRpb25fbG9nZW1lbnRfcHLDqnRcIl1cbiAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAoW3woZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbHVtbj0xOyBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzYzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9Nzc2OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODMxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1lbmFnZV8uTWVuYWdlLmxvZ2VtZW50KS5Mb2dlbWVudC5tb2RlX29jY3VwYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlJlc2lkZW50TG9nZW1lbnRGb3llciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5BY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uIHByb3ByaWV0ZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocHJvcHJpZXRlXy5Qcm9wcmlldGFpcmUucHJldCkuUHJldC5kYXRlX3NpZ25hdHVyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocHJvcHJpZXRlXy5Qcm9wcmlldGFpcmUucHJldCkuUHJldC5kYXRlX3NpZ25hdHVyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0ZV8uUHJvcHJpZXRhaXJlLmFuY2llbm5ldGVfbG9nZW1lbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dlbWVudF9zaXR1ZV9jb21tdW5lX2Rlc2VxdWlsaWJyZV9sODMxXzJfKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIHByb3ByaWV0ZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2d0ZV9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocHJvcHJpZXRlXy5Qcm9wcmlldGFpcmUucHJldCkuUHJldC5kYXRlX3NpZ25hdHVyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxOCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19sdF9kYXRfZGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocHJvcHJpZXRlXy5Qcm9wcmlldGFpcmUucHJldCkuUHJldC5kYXRlX3NpZ25hdHVyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAyMCkgKDEpICgxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0ZV8uUHJvcHJpZXRhaXJlLmFuY2llbm5ldGVfbG9nZW1lbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldWZPdUFuY2llbi5OZXVmIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXVmT3VBbmNpZW4uQW5jaWVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dlbWVudF9zaXR1ZV9jb21tdW5lX2Rlc2VxdWlsaWJyZV9sODMxXzJfKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT03NDQ7IHN0YXJ0X2NvbHVtbj01O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzQ5OyBlbmRfY29sdW1uPTMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgTDgzMS0yXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0YWlyZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvbiBwcm9wcmlldGVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwcm9wcmlldGVfLlByb3ByaWV0YWlyZS5wcmV0KS5QcmV0LmRhdGVfc2lnbmF0dXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNykgKDEyKSAoMzEpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Tb3VzTG9jYXRhaXJlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5Mb2NhdGlvbkFjY2Vzc2lvbiBwcm9wcmlldGVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwcm9wcmlldGVfLlByb3ByaWV0YWlyZS5wcmV0KS5QcmV0LmRhdGVfc2lnbmF0dXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVfb2ZfbnVtYmVycyAoMjAxNykgKDEyKSAoMzEpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpfF0pXG4gICAgICAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NzM5OyBzdGFydF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NzM5OyBlbmRfY29sdW1uPTU0O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4MzEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSWVyIDogQ2hhbXAgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUlJIDogQWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIGzDqWdpc2xhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICB0cnVlKSkgKGZ1biAoXzogdW5pdCkgLT4gdHJ1ZSkpfF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTM4Mjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0zODI7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCLDiWxpZ2liaWxpdMOpIMOgIGwnYWlkZSBwZXJzb25uYWxpc8OpZSBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkTDqWNsYXJhdGlvbnMgZGVzIGNoYW1wcyBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBmYWxzZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MzgyOyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTM4MjsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlXzogYm9vbCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lcIl1cbiAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PXRydWV9IChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfVxuICAgICAgICAgKFt8KGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119XG4gICAgICAgICAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3x8XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjU2OyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTEyNTc7IGVuZF9jb2x1bW49NTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODYwLTNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgVkkgOiBEaXNwb3NpdGlvbnMgcGFydGljdWxpw6hyZXMgw6AgbCdvdXRyZS1tZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19hbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob19ndGVfZGF0X2RhdCBkYXRlX2NvdXJhbnRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlX29mX251bWJlcnMgKDIwMjEpICgxKSAoMSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAobWVuYWdlXy5NZW5hZ2UucmVzaWRlbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdXlhbmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXJ0aW5pcXVlIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTGFSZXVuaW9uIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXlvdHRlIF8gLT4gZmFsc2UpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZmFsc2UpKXxdKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTYxMzsgc3RhcnRfY29sdW1uPTU7XG4gICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjE1OyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSUkgOiBBaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZCBjb25kaXRpb25fbG9nZW1lbnRfYmFpbGxldXJfXG4gICAgICAgICAgICAgICAgICAgICAgIChvX2FuZCBjb25kaXRpb25fbG9nZW1lbnRfcHJldF9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZWxpZ2liaWxpdGVfKSkpKVxuICAgICAgICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiB0cnVlKSl8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9Mzg4OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTM4ODsgZW5kX2NvbHVtbj0yMztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIsOJbGlnaWJpbGl0w6kgw6AgbCdhaWRlIHBlcnNvbm5hbGlzw6llIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRMOpY2xhcmF0aW9ucyBkZXMgY2hhbXBzIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0zODg7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9Mzg4OyBlbmRfY29sdW1uPTIzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiw4lsaWdpYmlsaXTDqSDDoCBsJ2FpZGUgcGVyc29ubmFsaXPDqWUgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJEw6ljbGFyYXRpb25zIGRlcyBjaGFtcHMgZCdhcHBsaWNhdGlvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICB7RWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50LmRhdGVfY291cmFudGUgPSBkYXRlX2NvdXJhbnRlXztcbiAgICAgRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50LmVsaWdpYmlsaXRlID0gZWxpZ2liaWxpdGVfO1xuICAgICBFbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlID1cbiAgICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfO1xuICAgICBFbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZSA9XG4gICAgICAgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV99XG5cbmxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudCAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW46IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnQpIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50LnQgPVxuICBsZXQgbW9kZV9vY2N1cGF0aW9uXzogTW9kZU9jY3VwYXRpb24udCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLm1vZGVfb2NjdXBhdGlvbl9pbiBpblxuICBsZXQgcmVzc291cmNlc19tZW5hZ2Vfc2Fuc19hcnJvbmRpXzogbW9uZXkgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi5yZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfaW4gaW5cbiAgbGV0IHNpdHVhdGlvbl9mYW1pbGlhbGVfOiBTaXR1YXRpb25GYW1pbGlhbGUudCA9IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnNpdHVhdGlvbl9mYW1pbGlhbGVfaW4gaW5cbiAgbGV0IG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfOiBpbnRlZ2VyID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiBpblxuICBsZXQgem9uZV86IFpvbmVESGFiaXRhdGlvbi50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4uem9uZV9pbiBpblxuICBsZXQgZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luIGluXG4gIGxldCB0eXBlX2FpZGVfOiBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQgPSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi50eXBlX2FpZGVfaW4gaW5cbiAgbGV0IHJlc2lkZW5jZV86IENvbGxlY3Rpdml0ZS50ID0gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4ucmVzaWRlbmNlX2luIGluXG4gIGxldCBjYXRlZ29yaWVfY2FsY3VsX2FwbF86IENhdGVnb3JpZUNhbGN1bEFQTC50ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwiY2F0w6lnb3JpZV9jYWxjdWxfYXBsXCJdIHtpb19pbnB1dD1Ob0lucHV0O1xuICAgIGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2NhdGVnb3JpZV9jYWxjdWxfYV9wX2wpIChcbiAgICB0cnlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEzOTk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTM5OTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG1hdGNoIG1vZGVfb2NjdXBhdGlvbl9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIGxvY2F0aW9uXyAtPlxuICAgICAgICAgICAgICAgIChDYXRlZ29yaWVDYWxjdWxBUEwuTG9jYXRpb24gbG9jYXRpb25fKVxuICAgICAgICAgICAgfCBNb2RlT2NjdXBhdGlvbi5SZXNpZGVudExvZ2VtZW50Rm95ZXIgbG9nZW1lbnRmb3llcl8gLT5cbiAgICAgICAgICAgICAgICAoQ2F0ZWdvcmllQ2FsY3VsQVBMLkxvZ2VtZW50Rm95ZXIgbG9nZW1lbnRmb3llcl8pXG4gICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gcHJvcHJpZXRhaXJlXyAtPlxuICAgICAgICAgICAgICAgIChDYXRlZ29yaWVDYWxjdWxBUEwuQWNjZXNzaW9uUHJvcHJpZXRlIHByb3ByaWV0YWlyZV8pXG4gICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgbG9jYXRpb25fIC0+XG4gICAgICAgICAgICAgICAgKENhdGVnb3JpZUNhbGN1bEFQTC5Mb2NhdGlvbiBsb2NhdGlvbl8pXG4gICAgICAgICAgICB8IE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIHByb3ByaWV0YWlyZV8gLT5cbiAgICAgICAgICAgICAgICAoQ2F0ZWdvcmllQ2FsY3VsQVBMLkFjY2Vzc2lvblByb3ByaWV0ZSBwcm9wcmlldGFpcmVfKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA2Nzsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDY3OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX2F2ZWNfYXJyb25kaV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwicmVzc291cmNlc19tw6luYWdlX2F2ZWNfYXJyb25kaVwiXVxuICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9tb25leSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTk0ODsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xOTQ4OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTE3XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIDIgOiBDYWxjdWwgZGUgbCdhaWRlIGVuIHNlY3RldXIgbG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBhcnJvbmRpX2NlbnRhaW5lX3N1cGVyaWV1cmVfIHJlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV8pKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNTk7IHN0YXJ0X2NvbHVtbj0xMDsgZW5kX2xpbmU9MTA1OTsgZW5kX2NvbHVtbj0yMjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfOiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwudCA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbFwiXVxuICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgKGVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXJyZXRlXzIwMTktMDktMjcuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9OTM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9OTM7IGVuZF9jb2x1bW49NDQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIDdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBDYWxjdWwgZGVzIGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudCBlbiBzZWN0ZXVyIGxvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcnLDqnTDqSBkdSAyNyBzZXB0ZW1icmUgMjAxOSByZWxhdGlmIGF1IGNhbGN1bCBkZXMgYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50IGV0IGRlIGxhIHByaW1lIGRlIGTDqW3DqW5hZ2VtZW50XCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgbWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZV9cbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNlbGliYXRhaXJlIF8gLT5cbiAgICAgICAgICAgICAgICAoU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLlBlcnNvbm5lU2V1bGUgKCkpXG4gICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5NYXJpZXMgXyAtPlxuICAgICAgICAgICAgICAgIChTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuQ291cGxlICgpKVxuICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuUGFjc2VzIF8gLT5cbiAgICAgICAgICAgICAgICAoU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSAoKSlcbiAgICAgICAgICAgIHwgU2l0dWF0aW9uRmFtaWxpYWxlLkNvbmN1YmlucyBfIC0+XG4gICAgICAgICAgICAgICAgKFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5Db3VwbGUgKCkpXG4gICAgICAgICAgICB8IFNpdHVhdGlvbkZhbWlsaWFsZS5DZWxpYmF0YWlyZVNlcGFyZURlRmFpdCBfIC0+XG4gICAgICAgICAgICAgICAgKFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC5QZXJzb25uZVNldWxlICgpKVxuICAgICAgICAgICAgfCBTaXR1YXRpb25GYW1pbGlhbGUuQ29uY3ViaW5hZ2VEb250U2VwYXJlRGVGYWl0IF8gLT5cbiAgICAgICAgICAgICAgICAoU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSAoKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEwNjg7IHN0YXJ0X2NvbHVtbj0xMTsgZW5kX2xpbmU9MTA2ODsgZW5kX2NvbHVtbj00MTtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIlRvdXMgc2VjdGV1cnNcIjsgXCJTZWN0ZXVyIGxvZ2VtZW50LWZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGR1IG1vbnRhbnQgZGUgbCdhbGxvY2F0aW9uIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBzb3VzX2NhbGN1bF90cmFpdGVtZW50XzogVHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLnQgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJzb3VzX2NhbGN1bF90cmFpdGVtZW50XCJdIHtpb19pbnB1dD1Ob0lucHV0O1xuICAgIGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX3RyYWl0ZW1lbnRfZm9ybXVsZV9haWRlX2ZpbmFsZSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX1cbiAgICAgICAgIChbfChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICBoYW5kbGVfZGVmYXVsdFxuICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02NTEzOyBzdGFydF9jb2x1bW49NTtcbiAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02NTEzOyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NjMtN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IFNhaW50LVBpZXJyZS1ldC1NaXF1ZWxvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgIChvX2FuZFxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggcmVzaWRlbmNlX1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuR3VhZGVsb3VwZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5HdXlhbmUgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5MYVJldW5pb24gXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xsZWN0aXZpdGUuU2FpbnRCYXJ0aGVsZW15IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLlNhaW50TWFydGluIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sbGVjdGl2aXRlLk1ldHJvcG9sZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb24gXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENvbGxlY3Rpdml0ZS5NYXlvdHRlIF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBjYXRlZ29yaWVfY2FsY3VsX2FwbF9cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllQ2FsY3VsQVBMLkxvY2F0aW9uIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2F0ZWdvcmllQ2FsY3VsQVBMLkFjY2Vzc2lvblByb3ByaWV0ZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUNhbGN1bEFQTC5Mb2dlbWVudEZveWVyIF8gLT4gdHJ1ZSkpKSlcbiAgICAgICAgICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggY2F0ZWdvcmllX2NhbGN1bF9hcGxfXG4gICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBDYXRlZ29yaWVDYWxjdWxBUEwuTG9jYXRpb24gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtUcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUuYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9udWxfdG91dF9sZV90ZW1wc199KVxuICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUNhbGN1bEFQTC5BY2Nlc3Npb25Qcm9wcmlldGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtUcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUuYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbmV5X29mX2NlbnRzX3N0cmluZyBcIjBcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhaXRlbWVudF9udWxfdG91dF9sZV90ZW1wc199KVxuICAgICAgICAgICAgICAgICAgICB8IENhdGVnb3JpZUNhbGN1bEFQTC5Mb2dlbWVudEZveWVyIGxvZ2VtZW50X2ZveWVyX18gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgdHJhaXRlbWVudF9mb3JtdWxlXyA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCByZXN1bHRfIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJkaXJlY3RcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7IFwiZGlyZWN0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5wdXRcIl0ge2lvX2lucHV0PU9ubHlJbnB1dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvX291dHB1dD1mYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubG95ZXJfcHJpbmNpcGFsX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nZW1lbnRfZm95ZXJfXy5Mb2dlbWVudEZveWVyLnJlZGV2YW5jZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY1MjY7IHN0YXJ0X2NvbHVtbj0zMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjUyNjsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg2My03XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogU2FpbnQtUGllcnJlLWV0LU1pcXVlbG9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHJlc3NvdXJjZXNfbWVuYWdlX2F2ZWNfYXJyb25kaV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02NTIwOyBzdGFydF9jb2x1bW49NDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjUyMDsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODYzLTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBTYWludC1QaWVycmUtZXQtTWlxdWVsb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nZW1lbnRfZm95ZXJfXy5Mb2dlbWVudEZveWVyLmJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjUyODsgc3RhcnRfY29sdW1uPTE1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY1Mjg7IGVuZF9jb2x1bW49NzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg2My03XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogU2FpbnQtUGllcnJlLWV0LU1pcXVlbG9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSBkYXRlX2NvdXJhbnRlXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY1MjM7IHN0YXJ0X2NvbHVtbj0yOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02NTIzOyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NjMtN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IFNhaW50LVBpZXJyZS1ldC1NaXF1ZWxvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02NTIxOyBzdGFydF9jb2x1bW49NDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjUyMTsgZW5kX2NvbHVtbj02NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODYzLTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBTYWludC1QaWVycmUtZXQtTWlxdWVsb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY1MjQ7IHN0YXJ0X2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02NTI0OyBlbmRfY29sdW1uPTc2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NjMtN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IFNhaW50LVBpZXJyZS1ldC1NaXF1ZWxvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi56b25lX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgem9uZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02NTIyOyBzdGFydF9jb2x1bW49MjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjUyMjsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODYzLTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBTYWludC1QaWVycmUtZXQtTWlxdWVsb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubG9nZW1lbnRfZXN0X2NoYW1icmVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dlbWVudF9mb3llcl9fLkxvZ2VtZW50Rm95ZXIubG9nZW1lbnRfZXN0X2NoYW1icmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY1MzY7IHN0YXJ0X2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02NTM2OyBlbmRfY29sdW1uPTcyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NjMtN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IFNhaW50LVBpZXJyZS1ldC1NaXF1ZWxvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5hZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc19pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IGZhbHNlIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjU0MDsgc3RhcnRfY29sdW1uPTcyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY1NDA7IGVuZF9jb2x1bW49NzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg2My03XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogU2FpbnQtUGllcnJlLWV0LU1pcXVlbG9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnR5cGVfYWlkZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHR5cGVfYWlkZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02NTQxOyBzdGFydF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjU0MTsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODYzLTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBTYWludC1QaWVycmUtZXQtTWlxdWVsb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uY29sb2NhdGlvbl9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ2VtZW50X2ZveWVyX18uTG9nZW1lbnRGb3llci5jb2xvY2F0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02NTM3OyBzdGFydF9jb2x1bW49MjY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjUzNzsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODYzLTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBTYWludC1QaWVycmUtZXQtTWlxdWVsb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ucmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY1NDU7IHN0YXJ0X2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02NTQ1OyBlbmRfY29sdW1uPTQ1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NjMtN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IFNhaW50LVBpZXJyZS1ldC1NaXF1ZWxvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9tZXVibGVfZDg0Ml8yX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nZW1lbnRfZm95ZXJfXy5Mb2dlbWVudEZveWVyLmxvZ2VtZW50X21ldWJsZV9kODQyXzIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTY1NDY7IHN0YXJ0X2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT02NTQ2OyBlbmRfY29sdW1uPTc2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4NjMtN1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU291cy1zZWN0aW9uIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IFNhaW50LVBpZXJyZS1ldC1NaXF1ZWxvblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5yZXNpZGVuY2VfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSByZXNpZGVuY2VfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjUxOTsgc3RhcnRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTY1MTk7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDg2My03XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTb3VzLXNlY3Rpb24gSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogU2FpbnQtUGllcnJlLWV0LU1pcXVlbG9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80X2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQuUGFzRGVDaGFuZ2VtZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT02NTQ3OyBzdGFydF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjU0NzsgZW5kX2NvbHVtbj01NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODYzLTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBTYWludC1QaWVycmUtZXQtTWlxdWVsb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKX0pKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCByZXN1bHRfIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7Q2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi5haWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLmFpZGVfZmluYWxlX2Zvcm11bGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChwYXJhbTBfOiBtb25leSkgLT4gKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7IFwib3V0cHV0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PXRydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgcGFyYW0wXykpKSkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi5tb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlc19kODIzXzE2KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLnBsYWZvbmRfbG95ZXJfZDgyM18xNl8yID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYucGxhZm9uZF9sb3llcl9kODIzXzE2XzIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYucGFydGljaXBhdGlvbl9taW5pbWFsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLnBhcnRpY2lwYXRpb25fbWluaW1hbGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi50YXV4X2NvbXBvc2l0aW9uX2ZhbWlsaWFsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi5wYXJ0aWNpcGF0aW9uX3BlcnNvbm5lbGxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYucGFydGljaXBhdGlvbl9wZXJzb25uZWxsZSl9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7IFwiZGlyZWN0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7IFwiZGlyZWN0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9NjUxODsgc3RhcnRfY29sdW1uPTk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9NjU0ODsgZW5kX2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODYzLTdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNvdXMtc2VjdGlvbiBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBTYWludC1QaWVycmUtZXQtTWlxdWVsb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSkgdGhlbiByZXN1bHRfIGVsc2UgcmVzdWx0XykpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAoe1RyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS5haWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJhaXRlbWVudF9mb3JtdWxlXy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLmFpZGVfZmluYWxlX2Zvcm11bGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS50cmFpdGVtZW50X2FpZGVfZmluYWxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmFpdGVtZW50X2Zvcm11bGVfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudHJhaXRlbWVudF9haWRlX2ZpbmFsZSl9KSkpKXxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTE1Mjk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTUyOTsgZW5kX2NvbHVtbj0zNjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgIHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIG1hdGNoIGNhdGVnb3JpZV9jYWxjdWxfYXBsX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBDYXRlZ29yaWVDYWxjdWxBUEwuTG9jYXRpb24gbG9jYXRpb25fIC0+XG4gICAgICAgICAgICAgICAgKGxldCB0cmFpdGVtZW50X2Zvcm11bGVfIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi50XG4gICAgICAgICAgICAgICAgICAgPVxuICAgICAgICAgICAgICAgICAgIChsZXQgcmVzdWx0XyA6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudCA9XG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJkaXJlY3RcIl1cbiAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmKVxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7IFwiZGlyZWN0XCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4pXG4gICAgICAgICAgICAgICAgICAgICAgKHtDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubG95ZXJfcHJpbmNpcGFsX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSAobG9jYXRpb25fLkxvY2F0aW9uLmxveWVyX3ByaW5jaXBhbCkgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTQwOyBzdGFydF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTQwOyBlbmRfY29sdW1uPTU1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgcmVzc291cmNlc19tZW5hZ2VfYXZlY19hcnJvbmRpXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MzU7IHN0YXJ0X2NvbHVtbj00MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUzNTsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5iZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2NhdGlvbl8uTG9jYXRpb24uYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU0Mjsgc3RhcnRfY29sdW1uPTE1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTQyOyBlbmRfY29sdW1uPTY5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgZGF0ZV9jb3VyYW50ZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTM4OyBzdGFydF9jb2x1bW49Mjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1Mzg7IGVuZF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1MzY7IHN0YXJ0X2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUzNjsgZW5kX2NvbHVtbj02NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1Mzk7IHN0YXJ0X2NvbHVtbj00NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUzOTsgZW5kX2NvbHVtbj03NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi56b25lX2luID0gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB6b25lXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1Mzc7IHN0YXJ0X2NvbHVtbj0yMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTUzNzsgZW5kX2NvbHVtbj0yNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9lc3RfY2hhbWJyZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSAobG9jYXRpb25fLkxvY2F0aW9uLmxvZ2VtZW50X2VzdF9jaGFtYnJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU0Mzsgc3RhcnRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTQzOyBlbmRfY29sdW1uPTY1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9jYXRpb25fLkxvY2F0aW9uLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU0Njsgc3RhcnRfY29sdW1uPTE1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTQ2OyBlbmRfY29sdW1uPTgwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnR5cGVfYWlkZV9pbiA9IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgdHlwZV9haWRlXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1NDc7IHN0YXJ0X2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU0NzsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5jb2xvY2F0aW9uX2luID0gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSAobG9jYXRpb25fLkxvY2F0aW9uLmNvbG9jYXRpb24pIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU0NDsgc3RhcnRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTQ0OyBlbmRfY29sdW1uPTQ1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKGxvY2F0aW9uXy5Mb2NhdGlvbi5iYWlsbGV1cilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlQmFpbGxldXIuQmFpbGxldXJTb2NpYWwgYmFpbGxldXJfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiYWlsbGV1cl8uQ29udmVudGlvbkJhaWxsZXVyU29jaWFsLnJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX3BlcmN1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVCYWlsbGV1ci5CYWlsbGV1clByaXZlQXZlY0NvbnZlbnRpb25uZW1lbnRTb2NpYWwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZUJhaWxsZXVyLkJhaWxsZXVyUHJpdmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1NDk7IHN0YXJ0X2NvbHVtbj0xNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU1MjsgZW5kX2NvbHVtbj0zOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5sb2dlbWVudF9tZXVibGVfZDg0Ml8yX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IChsb2NhdGlvbl8uTG9jYXRpb24ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1NTM7IHN0YXJ0X2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU1MzsgZW5kX2NvbHVtbj02OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi5yZXNpZGVuY2VfaW4gPSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHJlc2lkZW5jZV8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTM0OyBzdGFydF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1MzQ7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmSW4uY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2NhdGlvbl8uTG9jYXRpb24uY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTU0OyBzdGFydF9jb2x1bW49NDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1NTQ7IGVuZF9jb2x1bW49Nzc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpfSkpKSlcbiAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgIChsZXQgcmVzdWx0XyA6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudCA9XG4gICAgICAgICAgICAgICAgICAgICAgKHtDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLmFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLmFpZGVfZmluYWxlX2Zvcm11bGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKHBhcmFtMF86IG1vbmV5KSAtPiAobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSBwYXJhbTBfKSkpKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi5tb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi5tb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYucGxhZm9uZF9sb3llcl9kODIzXzE2XzIgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYucGxhZm9uZF9sb3llcl9kODIzXzE2XzIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLnBhcnRpY2lwYXRpb25fbWluaW1hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYucGFydGljaXBhdGlvbl9taW5pbWFsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYudGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLnBhcnRpY2lwYXRpb25fcGVyc29ubmVsbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYucGFydGljaXBhdGlvbl9wZXJzb25uZWxsZSl9KVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmXCI7IFwiZGlyZWN0XCJdXG4gICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZcIjsgXCJkaXJlY3RcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PXRydWV9XG4gICAgICAgICAgICAgICAgICAgKGVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWYpXG4gICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgICgobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTUzMzsgc3RhcnRfY29sdW1uPTk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1NTU7IGVuZF9jb2x1bW49MTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSkgdGhlbiByZXN1bHRfIGVsc2UgcmVzdWx0XykpKSkpKSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICh7VHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLmFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICAgICAgICAgICAgICAodHJhaXRlbWVudF9mb3JtdWxlXy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLmFpZGVfZmluYWxlX2Zvcm11bGUpO1xuICAgICAgICAgICAgICAgICAgICBUcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgKHRyYWl0ZW1lbnRfZm9ybXVsZV8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi50cmFpdGVtZW50X2FpZGVfZmluYWxlKX0pKVxuICAgICAgICAgICAgfCBDYXRlZ29yaWVDYWxjdWxBUEwuQWNjZXNzaW9uUHJvcHJpZXRlIHByb3ByaWV0YWlyZV8gLT5cbiAgICAgICAgICAgICAgICAobGV0IHRyYWl0ZW1lbnRfZm9ybXVsZV8gOlxuICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50ID1cbiAgICAgICAgICAgICAgICAgICAobGV0IHJlc3VsdF8gOlxuICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50ID1cbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZGlyZWN0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZGlyZWN0XCI7IFwiaW5wdXRcIl0ge2lvX2lucHV0PU9ubHlJbnB1dDtcbiAgICAgICAgICAgICAgICAgICAgICBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4pXG4gICAgICAgICAgICAgICAgICAgICAgKHtDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmFzZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgcmVzc291cmNlc19tZW5hZ2VfYXZlY19hcnJvbmRpXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1OTE7IHN0YXJ0X2NvbHVtbj00NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1OTE7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1OTI7IHN0YXJ0X2NvbHVtbj00MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU5MjsgZW5kX2NvbHVtbj02NztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU5OTsgc3RhcnRfY29sdW1uPTQ3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTk5OyBlbmRfY29sdW1uPTc3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uem9uZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSB6b25lXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1OTM7IHN0YXJ0X2NvbHVtbj0yMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU5MzsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnJlc2lkZW5jZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSByZXNpZGVuY2VfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU5NDsgc3RhcnRfY29sdW1uPTI2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTk0OyBlbmRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSBkYXRlX2NvdXJhbnRlXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1OTg7IHN0YXJ0X2NvbHVtbj0zMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU5ODsgZW5kX2NvbHVtbj00MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLm1lbnN1YWxpdGVfcHJpbmNpcGFsZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLm1lbnN1YWxpdGVfcHJpbmNpcGFsZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2MDA7IHN0YXJ0X2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTYwMDsgZW5kX2NvbHVtbj03MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnNpdHVhdGlvbl9yODIyXzExXzEzXzE3X2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUuc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjA4OyBzdGFydF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2MDg7IGVuZF9jb2x1bW49NzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5kYXRlX3NpZ25hdHVyZV9wcmV0X2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHByb3ByaWV0YWlyZV8uUHJvcHJpZXRhaXJlLnByZXQpLlByZXQuZGF0ZV9zaWduYXR1cmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjAzOyBzdGFydF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2MDM7IGVuZF9jb2x1bW49Njg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi50eXBlX3RyYXZhdXhfbG9nZW1lbnRfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS50eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYwMjsgc3RhcnRfY29sdW1uPTM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjAyOyBlbmRfY29sdW1uPTc5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ubG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUubG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYwNTsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjA1OyBlbmRfY29sdW1uPTY2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4uZGF0ZV9lbnRyZWVfbG9nZW1lbnRfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5kYXRlX2VudHJlZV9sb2dlbWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE2MDY7IHN0YXJ0X2NvbHVtbj0zNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTYwNjsgZW5kX2NvbHVtbj03MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLmNoYXJnZXNfbWVuc3VlbGxlc19wcmV0X2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUuY2hhcmdlc19tZW5zdWVsbGVzX3ByZXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNjAxOyBzdGFydF9jb2x1bW49NDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE2MDE7IGVuZF9jb2x1bW49NzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGVJbi5jb3Byb3ByaWV0ZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSAocHJvcHJpZXRhaXJlXy5Qcm9wcmlldGFpcmUuY29wcm9wcmlldGUpIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTYwNzsgc3RhcnRfY29sdW1uPTI4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNjA3OyBlbmRfY29sdW1uPTUyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4ub3BlcmF0aW9uc19sb2dlbWVudF9ldm9sdXRpZnNfc29jaWF1eF9hY2Nlc3Npb25fcHJvcHJpZXRlX2FpZGVlX0V0YXRfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcmlldGFpcmVfLlByb3ByaWV0YWlyZS5vcGVyYXRpb25zX2xvZ2VtZW50X2V2b2x1dGlmc19zb2NpYXV4X2FjY2Vzc2lvbl9wcm9wcmlldGVfYWlkZWVfRXRhdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1OTY7IHN0YXJ0X2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU5NzsgZW5kX2NvbHVtbj04MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSl9KSkpKVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgKGxldCByZXN1bHRfIDpcbiAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudCA9XG4gICAgICAgICAgICAgICAgICAgICAgKHtDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUubWVuc3VhbGl0ZV9lbGlnaWJsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS5tZW5zdWFsaXRlX2VsaWdpYmxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLm1lbnN1YWxpdGVfbWluaW1hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS5tZW5zdWFsaXRlX21pbmltYWxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLmNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLmNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS5haWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50cmFpdGVtZW50X2FpZGVfZmluYWxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChwYXJhbTBfOiBtb25leSkgLT4gKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByacOpdMOpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpw6l0w6lcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcIm91dHB1dFwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1iZWRfbW9uZXkpICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgcGFyYW0wXykpKSkpKSl9KVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiOyBcImRpcmVjdFwiXVxuICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmnDqXTDqVwiOyBcImRpcmVjdFwiO1xuICAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0ge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfVxuICAgICAgICAgICAgICAgICAgIChlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlKVxuICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1OTA7IHN0YXJ0X2NvbHVtbj0xMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTYwOTsgZW5kX2NvbHVtbj0xMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSB0aGVuIHJlc3VsdF8gZWxzZSByZXN1bHRfKSkpKSkpKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgKHtUcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUuYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgICAgICAgICAgICAgICh0cmFpdGVtZW50X2Zvcm11bGVfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAgICAgICAgICAgICAgICAgVHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgICAgICAgICAgICAgICAgICh0cmFpdGVtZW50X2Zvcm11bGVfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50cmFpdGVtZW50X2FpZGVfZmluYWxlKX0pKVxuICAgICAgICAgICAgfCBDYXRlZ29yaWVDYWxjdWxBUEwuTG9nZW1lbnRGb3llciBsb2dlbWVudF9mb3llcl9fIC0+XG4gICAgICAgICAgICAgICAgKGxldCB0cmFpdGVtZW50X2Zvcm11bGVfIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIudCA9XG4gICAgICAgICAgICAgICAgICAgKGxldCByZXN1bHRfIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIudCA9XG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwiZGlyZWN0XCJdXG4gICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7IFwiZGlyZWN0XCI7IFwiaW5wdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luKVxuICAgICAgICAgICAgICAgICAgICAgICh7Q2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi50eXBlX2xvZ2VtZW50X2ZveWVyX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgKGxvZ2VtZW50X2ZveWVyX18uTG9nZW1lbnRGb3llci50eXBlX3VzZXIpIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU3ODsgc3RhcnRfY29sdW1uPTM1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU3ODsgZW5kX2NvbHVtbj01NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLmxvZ2VtZW50X2ZveWVyX2pldW5lc190cmF2YWlsbGV1cnNfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2dlbWVudF9mb3llcl9fLkxvZ2VtZW50Rm95ZXIubG9nZW1lbnRfZm95ZXJfamV1bmVzX3RyYXZhaWxsZXVycylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1NzQ7IHN0YXJ0X2NvbHVtbj0xMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU3NDsgZW5kX2NvbHVtbj02MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4uZGF0ZV9jb252ZW50aW9ubmVtZW50X2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nZW1lbnRfZm95ZXJfXy5Mb2dlbWVudEZveWVyLmRhdGVfY29udmVudGlvbm5lbWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1Nzk7IHN0YXJ0X2NvbHVtbj0zNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU3OTsgZW5kX2NvbHVtbj03NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4ucmVzaWRlbmNlX2luID0gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSByZXNpZGVuY2VfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU2OTsgc3RhcnRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTY5OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5yZWRldmFuY2VfaW4gPSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IChsb2dlbWVudF9mb3llcl9fLkxvZ2VtZW50Rm95ZXIucmVkZXZhbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU3NTsgc3RhcnRfY29sdW1uPTI1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTc1OyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cnkgcmVzc291cmNlc19tZW5hZ2VfYXZlY19hcnJvbmRpXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1Njc7IHN0YXJ0X2NvbHVtbj00MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU2NzsgZW5kX2NvbHVtbj02MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyeSBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1Njg7IHN0YXJ0X2NvbHVtbj00MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU2ODsgZW5kX2NvbHVtbj02NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNTcyOyBzdGFydF9jb2x1bW49NDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9saW5lPTE1NzI7IGVuZF9jb2x1bW49NzY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llckluLnpvbmVfaW4gPSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHpvbmVfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU3MDsgc3RhcnRfY29sdW1uPTIwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTcwOyBlbmRfY29sdW1uPTI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ5IGRhdGVfY291cmFudGVfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTU3MTsgc3RhcnRfY29sdW1uPTI5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTcxOyBlbmRfY29sdW1uPTQyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi5jYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNl9pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ2VtZW50X2ZveWVyX18uTG9nZW1lbnRGb3llci5jYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1Nzc7IHN0YXJ0X2NvbHVtbj0xMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2xpbmU9MTU3NzsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkFydGljbGUgRDgyMy05XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU2VjdGlvbiAxIDogQ2FsY3VsLCBsaXF1aWRhdGlvbiBldCB2ZXJzZW1lbnQgZGVzIGFpZGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2hhcGl0cmUgSUlJIDogTW9kYWxpdMOpcyBkZSBsaXF1aWRhdGlvbiBldCBkZSB2ZXJzZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJSSA6IERpc3Bvc2l0aW9ucyBjb21tdW5lcyBhdXggYWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSByw6lnbGVtZW50YWlyZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvZGUgZGUgbGEgY29uc3RydWN0aW9uIGV0IGRlIGwnaGFiaXRhdGlvblwiXX0pKSl9KSkpKVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgKGxldCByZXN1bHRfIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIudCA9XG4gICAgICAgICAgICAgICAgICAgICAgKHtDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2UgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5lcXVpdmFsZW5jZV9sb3llciA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdF8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuZXF1aXZhbGVuY2VfbG95ZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5tb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLmxveWVyX21pbmltYWwgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLmxveWVyX21pbmltYWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5haWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5haWRlX2ZpbmFsZV9mb3JtdWxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIudHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAocGFyYW0wXzogbW9uZXkpIC0+IChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PXRydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHRfLkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgcGFyYW0wXykpKSkpKSl9KVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgKChsb2dfZW5kX2NhbGwgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJkaXJlY3RcIl1cbiAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJcIjsgXCJkaXJlY3RcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PXRydWV9XG4gICAgICAgICAgICAgICAgICAgKGVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyKVxuICAgICAgICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAgICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9yZWdsZW1lbnRhaXJlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5lPTE1NjY7IHN0YXJ0X2NvbHVtbj05O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNTgwOyBlbmRfY29sdW1uPTEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpIHRoZW4gcmVzdWx0XyBlbHNlIHJlc3VsdF8pKSkpKSkpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAoe1RyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS5haWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgICAgICAgICAgICAgKHRyYWl0ZW1lbnRfZm9ybXVsZV8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuYWlkZV9maW5hbGVfZm9ybXVsZSk7XG4gICAgICAgICAgICAgICAgICAgIFRyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS50cmFpdGVtZW50X2FpZGVfZmluYWxlID1cbiAgICAgICAgICAgICAgICAgICAgICAodHJhaXRlbWVudF9mb3JtdWxlXy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50cmFpdGVtZW50X2FpZGVfZmluYWxlKX0pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA3MDsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMDcwOyBlbmRfY29sdW1uPTMzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfOiBtb25leSAtPiBtb25leSA9IChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl0ge2lvX2lucHV0PU5vSW5wdXQ7XG4gICAgaW9fb3V0cHV0PXRydWV9ICh1bmVtYmVkZGFibGUpXG4gICAgKGZ1biAoYXJnXzogbW9uZXkpIC0+IFxuICAgICAgIHRyeVxuICAgICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX3JlZ2xlbWVudGFpcmUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTQxMjsgc3RhcnRfY29sdW1uPTE0O1xuICAgICAgICAgICAgICAgICBlbmRfbGluZT0xNDEyOyBlbmRfY29sdW1uPTM2O1xuICAgICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBEODIzLTlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTZWN0aW9uIDEgOiBDYWxjdWwsIGxpcXVpZGF0aW9uIGV0IHZlcnNlbWVudCBkZXMgYWlkZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJSUkgOiBNb2RhbGl0w6lzIGRlIGxpcXVpZGF0aW9uIGV0IGRlIHZlcnNlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRpdHJlIElJIDogRGlzcG9zaXRpb25zIGNvbW11bmVzIGF1eCBhaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXZyZSBWSUlJIDogQWlkZXMgcGVyc29ubmVsbGVzIGF1IGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGFydGllIHLDqWdsZW1lbnRhaXJlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgICAgKHNvdXNfY2FsY3VsX3RyYWl0ZW1lbnRfLlRyYWl0ZW1lbnRGb3JtdWxlQWlkZUZpbmFsZS50cmFpdGVtZW50X2FpZGVfZmluYWxlKVxuICAgICAgICAgICAgICAgICBhcmdfKSlcbiAgICAgICB3aXRoXG4gICAgICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgc3RhcnRfbGluZT0xMDczOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTEwNzM7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJUb3VzIHNlY3RldXJzXCI7IFwiU2VjdGV1ciBsb2dlbWVudC1mb3llclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkdSBtb250YW50IGRlIGwnYWxsb2NhdGlvbiBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwiYWlkZV9maW5hbGVfZm9ybXVsZVwiXSB7aW9faW5wdXQ9Tm9JbnB1dDtcbiAgICBpb19vdXRwdXQ9dHJ1ZX0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fcmVnbGVtZW50YWlyZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xNDEwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTE0MTA7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEQ4MjMtOVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNlY3Rpb24gMSA6IENhbGN1bCwgbGlxdWlkYXRpb24gZXQgdmVyc2VtZW50IGRlcyBhaWRlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIElJSSA6IE1vZGFsaXTDqXMgZGUgbGlxdWlkYXRpb24gZXQgZGUgdmVyc2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSUkgOiBEaXNwb3NpdGlvbnMgY29tbXVuZXMgYXV4IGFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgcsOpZ2xlbWVudGFpcmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBzb3VzX2NhbGN1bF90cmFpdGVtZW50Xy5UcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUuYWlkZV9maW5hbGVfZm9ybXVsZSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA3Mjsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xMDcyOyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiVG91cyBzZWN0ZXVyc1wiOyBcIlNlY3RldXIgbG9nZW1lbnQtZm95ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZHUgbW9udGFudCBkZSBsJ2FsbG9jYXRpb24gbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAge0NhbGN1bEFsbG9jYXRpb25Mb2dlbWVudC5haWRlX2ZpbmFsZV9mb3JtdWxlID0gYWlkZV9maW5hbGVfZm9ybXVsZV87XG4gICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudC50cmFpdGVtZW50X2FpZGVfZmluYWxlID1cbiAgICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlX31cblxubGV0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnQgKGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW46IENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi50KSA6IENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQudCA9XG4gIGxldCBtZW5hZ2VfOiBNZW5hZ2UudCA9IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4uQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLm1lbmFnZV9pbiBpblxuICBsZXQgZGVtYW5kZXVyXzogRGVtYW5kZXVyLnQgPSBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi5kZW1hbmRldXJfaW4gaW5cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbi5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbiBpblxuICBsZXQgcmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV86IG1vbmV5ID0gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbi5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4ucmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV9pbiBpblxuICBsZXQgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcIsOpbGlnaWJpbGl0w6lfYWxsb2NhdGlvbl9sb2dlbWVudC5kYXRlX2NvdXJhbnRlXCJdXG4gICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExNTM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE1MzsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkZSBsJ2FpZGUgYXUgbG9nZW1lbnQgZWZmZWN0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTUzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExNTM7IGVuZF9jb2x1bW49NTk7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZGUgbCdhaWRlIGF1IGxvZ2VtZW50IGVmZmVjdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X21lbmFnZV86IE1lbmFnZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2FsbG9jYXRpb25fbG9nZW1lbnQubcOpbmFnZVwiXSB7aW9faW5wdXQ9T25seUlucHV0O1xuICAgICAgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfbWVuYWdlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExNDU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE0NTsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkZSBsJ2FpZGUgYXUgbG9nZW1lbnQgZWZmZWN0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtZW5hZ2VfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExNDU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE0NTsgZW5kX2NvbHVtbj01MjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkZSBsJ2FpZGUgYXUgbG9nZW1lbnQgZWZmZWN0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfZGVtYW5kZXVyXzogRGVtYW5kZXVyLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcIsOpbGlnaWJpbGl0w6lfYWxsb2NhdGlvbl9sb2dlbWVudC5kZW1hbmRldXJcIl0ge2lvX2lucHV0PU9ubHlJbnB1dDtcbiAgICAgIGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2RlbWFuZGV1cilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTQ5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExNDk7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZGUgbCdhaWRlIGF1IGxvZ2VtZW50IGVmZmVjdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGVtYW5kZXVyXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTQ5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExNDk7IGVuZF9jb2x1bW49NTU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZGUgbCdhaWRlIGF1IGxvZ2VtZW50IGVmZmVjdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2JlbmVmaWNpZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfOiBib29sID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2FsbG9jYXRpb25fbG9nZW1lbnQuYsOpbsOpZmljaWVfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudFwiXVxuICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfYm9vbClcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9jb2RlX2NvbnN0cnVjdGlvbl9sZWdpc2xhdGlmLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEwNjU7IHN0YXJ0X2NvbHVtbj01OyBlbmRfbGluZT0xMDY1OyBlbmRfY29sdW1uPTc0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpIChmdW4gKF86IHVuaXQpIC0+IGZhbHNlKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA2NTsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTEwNjU7IGVuZF9jb2x1bW49NzQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtMlwiOyBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lfYWxsb2NhdGlvbl9sb2dlbWVudFwiO1xuICAgICAgXCLDiWxpZ2liaWxpdMOpQWxsb2NhdGlvbkxvZ2VtZW50XCJdICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwiw6lsaWdpYmlsaXTDqV9hbGxvY2F0aW9uX2xvZ2VtZW50XCI7XG4gICAgICBcIsOJbGlnaWJpbGl0w6lBbGxvY2F0aW9uTG9nZW1lbnRcIl0gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudClcbiAgICAoe0VsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2RhdGVfY291cmFudGVfO1xuICAgICAgICBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudEluLm1lbmFnZV9pbiA9XG4gICAgICAgICAgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfbWVuYWdlXztcbiAgICAgICAgRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnRJbi5kZW1hbmRldXJfaW4gPVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2RlbWFuZGV1cl87XG4gICAgICAgIEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4uYmVuZWZpY2llX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiA9XG4gICAgICAgICAgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfYmVuZWZpY2llX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF99KSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9lbGlnaWJpbGl0ZV9sODQxXzJfOiBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQudCA9IHJlc3VsdF8uRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuZWxpZ2liaWxpdGUgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV86IGludGVnZXIgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50Lm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV86IFxuICAgIGRlY2ltYWwgYXJyYXkgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LmNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGUgaW5cbiAgbGV0IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfbWVuYWdlXzogTWVuYWdlLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcIsOpbGlnaWJpbGl0w6lfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudC5tw6luYWdlXCJdXG4gICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9tZW5hZ2UpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE0Mzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTQzOyBlbmRfY29sdW1uPTYwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGRlIGwnYWlkZSBhdSBsb2dlbWVudCBlZmZlY3RpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1lbmFnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTE0Mzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTQzOyBlbmRfY29sdW1uPTYwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGRlIGwnYWlkZSBhdSBsb2dlbWVudCBlZmZlY3RpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2RlbWFuZGV1cl86IERlbWFuZGV1ci50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2FpZGVfcGVyc29ubmFsaXPDqWVfbG9nZW1lbnQuZGVtYW5kZXVyXCJdXG4gICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9kZW1hbmRldXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE0Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTQ3OyBlbmRfY29sdW1uPTYzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGRlIGwnYWlkZSBhdSBsb2dlbWVudCBlZmZlY3RpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRlbWFuZGV1cl8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTE0Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTQ3OyBlbmRfY29sdW1uPTYzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGRlIGwnYWlkZSBhdSBsb2dlbWVudCBlZmZlY3RpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCLDqWxpZ2liaWxpdMOpX2FpZGVfcGVyc29ubmFsaXPDqWVfbG9nZW1lbnQuZGF0ZV9jb3VyYW50ZVwiXVxuICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTUxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExNTE7IGVuZF9jb2x1bW49Njc7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZGUgbCdhaWRlIGF1IGxvZ2VtZW50IGVmZmVjdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTE1MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTUxOyBlbmRfY29sdW1uPTY3O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGRlIGwnYWlkZSBhdSBsb2dlbWVudCBlZmZlY3RpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCByZXN1bHRfOiBFbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICBcIsOpbGlnaWJpbGl0w6lfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudFwiO1xuICAgICAgXCLDiWxpZ2liaWxpdMOpQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgIFwiw6lsaWdpYmlsaXTDqV9haWRlX3BlcnNvbm5hbGlzw6llX2xvZ2VtZW50XCI7XG4gICAgICBcIsOJbGlnaWJpbGl0w6lBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiXVxuICAgIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudClcbiAgICAoe0VsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLm1lbmFnZV9pbiA9XG4gICAgICAgIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfbWVuYWdlXztcbiAgICAgICAgRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4uZGVtYW5kZXVyX2luID1cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2RlbWFuZGV1cl87XG4gICAgICAgIEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLmRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfZGF0ZV9jb3VyYW50ZV99KSkpIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQuZGF0ZV9jb3VyYW50ZSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9lbGlnaWJpbGl0ZV86IGJvb2wgPSByZXN1bHRfLkVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudC5lbGlnaWJpbGl0ZSBpblxuICBsZXQgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfOiBpbnRlZ2VyID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlIGluXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2NvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfOiBcbiAgICBkZWNpbWFsIGFycmF5ID0gcmVzdWx0Xy5FbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZSBpblxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X21vZGVfb2NjdXBhdGlvbl86IE1vZGVPY2N1cGF0aW9uLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvblwiXSB7aW9faW5wdXQ9T25seUlucHV0O1xuICAgICAgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfbW9kZV9vY2N1cGF0aW9uKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExNTc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE1NzsgZW5kX2NvbHVtbj01NjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkZSBsJ2FpZGUgYXUgbG9nZW1lbnQgZWZmZWN0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbikpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTU3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExNTc7IGVuZF9jb2x1bW49NTY7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZGUgbCdhaWRlIGF1IGxvZ2VtZW50IGVmZmVjdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9yZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICAgIFwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQucmVzc291cmNlc19tw6luYWdlX3NhbnNfYXJyb25kaVwiXVxuICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE2MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTYxOyBlbmRfY29sdW1uPTU4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGRlIGwnYWlkZSBhdSBsb2dlbWVudCBlZmZlY3RpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExNjE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE2MTsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkZSBsJ2FpZGUgYXUgbG9nZW1lbnQgZWZmZWN0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X3NpdHVhdGlvbl9mYW1pbGlhbGVfOiBTaXR1YXRpb25GYW1pbGlhbGUudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICAgIFwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQuc2l0dWF0aW9uX2ZhbWlsaWFsZVwiXVxuICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfc2l0dWF0aW9uX2ZhbWlsaWFsZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTY1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExNjU7IGVuZF9jb2x1bW49NjA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZGUgbCdhaWRlIGF1IGxvZ2VtZW50IGVmZmVjdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbWVuYWdlXy5NZW5hZ2Uuc2l0dWF0aW9uX2ZhbWlsaWFsZSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTY1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExNjU7IGVuZF9jb2x1bW49NjA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZGUgbCdhaWRlIGF1IGxvZ2VtZW50IGVmZmVjdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXzogaW50ZWdlciA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICAgIFwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQubm9tYnJlX3BlcnNvbm5lc1/DoF9jaGFyZ2VcIl1cbiAgICAgIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2ludGVnZXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE3Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTcyOyBlbmRfY29sdW1uPTY2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGRlIGwnYWlkZSBhdSBsb2dlbWVudCBlZmZlY3RpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExNzI7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE3MjsgZW5kX2NvbHVtbj02NjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkZSBsJ2FpZGUgYXUgbG9nZW1lbnQgZWZmZWN0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X3pvbmVfOiBab25lREhhYml0YXRpb24udCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQuem9uZVwiXVxuICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfem9uZV9kX2hhYml0YXRpb24pXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE3Njsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTc2OyBlbmRfY29sdW1uPTQ1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGRlIGwnYWlkZSBhdSBsb2dlbWVudCBlZmZlY3RpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQuem9uZSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTc2OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExNzY7IGVuZF9jb2x1bW49NDU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZGUgbCdhaWRlIGF1IGxvZ2VtZW50IGVmZmVjdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9kYXRlX2NvdXJhbnRlXzogZGF0ZSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICAgIFwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQuZGF0ZV9jb3VyYW50ZVwiXSB7aW9faW5wdXQ9T25seUlucHV0O1xuICAgICAgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfZGF0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTgwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExODA7IGVuZF9jb2x1bW49NTQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZGUgbCdhaWRlIGF1IGxvZ2VtZW50IGVmZmVjdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTE4MDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTgwOyBlbmRfY29sdW1uPTU0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGRlIGwnYWlkZSBhdSBsb2dlbWVudCBlZmZlY3RpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfdHlwZV9haWRlXzogVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjsgXCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudC50eXBlX2FpZGVcIl1cbiAgICAgIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX1cbiAgICAgIChlbWJlZF90eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA4MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDgxOyBlbmRfY29sdW1uPTUwO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgbWF0Y2ggZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfZWxpZ2liaWxpdGVfbDg0MV8yX1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuUGFzRWxpZ2libGUgXyAtPlxuICAgICAgICAgICAgICAgIChUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGUgKCkpXG4gICAgICAgICAgICB8IFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGUgXyAtPlxuICAgICAgICAgICAgICAgIChUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZSAoKSlcbiAgICAgICAgICAgIHwgVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGUgXyAtPlxuICAgICAgICAgICAgICAgIChUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGUgKCkpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA4MTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDgxOyBlbmRfY29sdW1uPTUwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTJcIjsgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfcmVzaWRlbmNlXzogQ29sbGVjdGl2aXRlLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiOyBcImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50LnLDqXNpZGVuY2VcIl1cbiAgICAgIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2NvbGxlY3Rpdml0ZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTg0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExODQ7IGVuZF9jb2x1bW49NTA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZGUgbCdhaWRlIGF1IGxvZ2VtZW50IGVmZmVjdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gbWVuYWdlXy5NZW5hZ2UucmVzaWRlbmNlKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExODQ7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE4NDsgZW5kX2NvbHVtbj01MDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkZSBsJ2FpZGUgYXUgbG9nZW1lbnQgZWZmZWN0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50LnQgPSAobG9nX2VuZF9jYWxsXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiOyBcImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50XCI7XG4gICAgICBcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiOyBcImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50XCI7XG4gICAgICBcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiXSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudClcbiAgICAoe0NhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLm1vZGVfb2NjdXBhdGlvbl9pbiA9XG4gICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9tb2RlX29jY3VwYXRpb25fO1xuICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi5yZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9yZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfO1xuICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2luID1cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV87XG4gICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlXztcbiAgICAgICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4uem9uZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X3pvbmVfO1xuICAgICAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfZGF0ZV9jb3VyYW50ZV87XG4gICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnR5cGVfYWlkZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X3R5cGVfYWlkZV87XG4gICAgICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEluLnJlc2lkZW5jZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X3Jlc2lkZW5jZV99KSkpIGluXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV86IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnQuYWlkZV9maW5hbGVfZm9ybXVsZSBpblxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfOiBtb25leSAtPiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgaW5cbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X21vZGVfb2NjdXBhdGlvbl86IE1vZGVPY2N1cGF0aW9uLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzw6llX2xvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvblwiXVxuICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfbW9kZV9vY2N1cGF0aW9uKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExNTU7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE1NTsgZW5kX2NvbHVtbj02NDtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkZSBsJ2FpZGUgYXUgbG9nZW1lbnQgZWZmZWN0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpLkxvZ2VtZW50Lm1vZGVfb2NjdXBhdGlvbikpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTU1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExNTU7IGVuZF9jb2x1bW49NjQ7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZGUgbCdhaWRlIGF1IGxvZ2VtZW50IGVmZmVjdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X3R5cGVfYWlkZV86IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICAgIFwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXPDqWVfbG9nZW1lbnQudHlwZV9haWRlXCJdIHtpb19pbnB1dD1Pbmx5SW5wdXQ7XG4gICAgICBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF90eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTA3OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDc5OyBlbmRfY29sdW1uPTU4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPlxuICAgICAgICAgICAgVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5BaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50ICgpKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L2NvZGVfY29uc3RydWN0aW9uX2xlZ2lzbGF0aWYuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTA3OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMDc5OyBlbmRfY29sdW1uPTU4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQXJ0aWNsZSBMODQxLTJcIjsgXCJDaGFwaXRyZSBJZXIgOiBDaGFtcCBkJ2FwcGxpY2F0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiVGl0cmUgSVYgOiBBbGxvY2F0aW9ucyBkZSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkxpdnJlIFZJSUkgOiBBaWRlcyBwZXJzb25uZWxsZXMgYXUgbG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQYXJ0aWUgbMOpZ2lzbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZSBkZSBsYSBjb25zdHJ1Y3Rpb24gZXQgZGUgbCdoYWJpdGF0aW9uXCJdfSkpIGluXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9yZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfOiBtb25leSA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICAgIFwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXPDqWVfbG9nZW1lbnQucmVzc291cmNlc19tw6luYWdlX3NhbnNfYXJyb25kaVwiXVxuICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE1OTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTU5OyBlbmRfY29sdW1uPTY2O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGRlIGwnYWlkZSBhdSBsb2dlbWVudCBlZmZlY3RpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExNTk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE1OTsgZW5kX2NvbHVtbj02NjtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkZSBsJ2FpZGUgYXUgbG9nZW1lbnQgZWZmZWN0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3Rfc2l0dWF0aW9uX2ZhbWlsaWFsZV86IFNpdHVhdGlvbkZhbWlsaWFsZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudC5zaXR1YXRpb25fZmFtaWxpYWxlXCJdXG4gICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExNjM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE2MzsgZW5kX2NvbHVtbj02ODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkZSBsJ2FpZGUgYXUgbG9nZW1lbnQgZWZmZWN0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtZW5hZ2VfLk1lbmFnZS5zaXR1YXRpb25fZmFtaWxpYWxlKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTExNjM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE2MzsgZW5kX2NvbHVtbj02ODtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkZSBsJ2FpZGUgYXUgbG9nZW1lbnQgZWZmZWN0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3Rfbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV86IGludGVnZXIgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiO1xuICAgICAgICBcImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzw6llX2xvZ2VtZW50Lm5vbWJyZV9wZXJzb25uZXNfw6BfY2hhcmdlXCJdXG4gICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9pbnRlZ2VyKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExNjg7IHN0YXJ0X2NvbHVtbj01OyBlbmRfbGluZT0xMTY4OyBlbmRfY29sdW1uPTY1O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGRlIGwnYWlkZSBhdSBsb2dlbWVudCBlZmZlY3RpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTE2ODsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTExNjg7IGVuZF9jb2x1bW49NjU7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZGUgbCdhaWRlIGF1IGxvZ2VtZW50IGVmZmVjdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X3pvbmVfOiBab25lREhhYml0YXRpb24udCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICAgIFwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXPDqWVfbG9nZW1lbnQuem9uZVwiXSB7aW9faW5wdXQ9T25seUlucHV0O1xuICAgICAgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfem9uZV9kX2hhYml0YXRpb24pXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE3NDsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTc0OyBlbmRfY29sdW1uPTUzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGRlIGwnYWlkZSBhdSBsb2dlbWVudCBlZmZlY3RpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChtZW5hZ2VfLk1lbmFnZS5sb2dlbWVudCkuTG9nZW1lbnQuem9uZSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTc0OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExNzQ7IGVuZF9jb2x1bW49NTM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZGUgbCdhaWRlIGF1IGxvZ2VtZW50IGVmZmVjdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2RhdGVfY291cmFudGVfOiBkYXRlID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudC5kYXRlX2NvdXJhbnRlXCJdXG4gICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTExNzg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTE3ODsgZW5kX2NvbHVtbj02MjtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkZSBsJ2FpZGUgYXUgbG9nZW1lbnQgZWZmZWN0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkYXRlX2NvdXJhbnRlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTc4OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExNzg7IGVuZF9jb2x1bW49NjI7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZGUgbCdhaWRlIGF1IGxvZ2VtZW50IGVmZmVjdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X3Jlc2lkZW5jZV86IENvbGxlY3Rpdml0ZS50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjtcbiAgICAgICAgXCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudC5yw6lzaWRlbmNlXCJdXG4gICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9jb2xsZWN0aXZpdGUpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE4Mjsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTgyOyBlbmRfY29sdW1uPTU4O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGRlIGwnYWlkZSBhdSBsb2dlbWVudCBlZmZlY3RpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1lbmFnZV8uTWVuYWdlLnJlc2lkZW5jZSkpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTgyOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTExODI7IGVuZF9jb2x1bW49NTg7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZGUgbCdhaWRlIGF1IGxvZ2VtZW50IGVmZmVjdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IHJlc3VsdF86IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQudCA9IChsb2dfZW5kX2NhbGxcbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXPDqWVfbG9nZW1lbnRcIjtcbiAgICAgIFwiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIl0gKChsb2dfYmVnaW5fY2FsbFxuICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjsgXCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc8OpZV9sb2dlbWVudFwiO1xuICAgICAgXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiXSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50KVxuICAgICh7Q2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLm1vZGVfb2NjdXBhdGlvbl9pbiA9XG4gICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X21vZGVfb2NjdXBhdGlvbl87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi50eXBlX2FpZGVfaW4gPVxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X3R5cGVfYWlkZV87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5yZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfaW4gPVxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX3NhbnNfYXJyb25kaV87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5zaXR1YXRpb25fZmFtaWxpYWxlX2luID1cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9zaXR1YXRpb25fZmFtaWxpYWxlXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X25vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfO1xuICAgICAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4uem9uZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3Rfem9uZV87XG4gICAgICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnJlc2lkZW5jZV9pbiA9XG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfcmVzaWRlbmNlX30pKSkgaW5cbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfOiBtb25leSA9IHJlc3VsdF8uQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudC5haWRlX2ZpbmFsZV9mb3JtdWxlIGluXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF90cmFpdGVtZW50X2FpZGVfZmluYWxlXzogXG4gICAgbW9uZXkgLT4gbW9uZXkgPSByZXN1bHRfLkNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQudHJhaXRlbWVudF9haWRlX2ZpbmFsZSBpblxuICBsZXQgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZV86IGRlY2ltYWwgYXJyYXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7XG4gICAgICBcImNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuw6llX3ByaXNfZW5fY29tcHRlXCJdXG4gICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfSAoZW1iZWRfYXJyYXkgKGVtYmVkX2RlY2ltYWwpKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTE4Nzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMTg3OyBlbmRfY29sdW1uPTYzO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGRlIGwnYWlkZSBhdSBsb2dlbWVudCBlZmZlY3RpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2NvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTM5OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTExMzk7IGVuZF9jb2x1bW49NjE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZGUgbCdhaWRlIGF1IGxvZ2VtZW50IGVmZmVjdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgZWxpZ2liaWxpdGVfOiBib29sID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiOyBcIsOpbGlnaWJpbGl0w6lcIl0ge2lvX2lucHV0PU5vSW5wdXQ7XG4gICAgaW9fb3V0cHV0PXRydWV9IChlbWJlZF9ib29sKSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDcwOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwNzA7IGVuZF9jb2x1bW49MjU7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICBvX29yIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfZWxpZ2liaWxpdGVfXG4gICAgICAgICAgICAgIChtYXRjaCBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9lbGlnaWJpbGl0ZV9sODQxXzJfXG4gICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICB8IFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5QYXNFbGlnaWJsZSBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICB8IFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgIHwgVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgIHRydWUpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMTM1OyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTExMzU7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGdsb2JhbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZGUgbCdhaWRlIGF1IGxvZ2VtZW50IGVmZmVjdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkpKSBpblxuICBsZXQgdHJhaXRlbWVudF9haWRlX2ZpbmFsZV86IG1vbmV5IC0+IG1vbmV5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICB7aW9faW5wdXQ9Tm9JbnB1dDsgaW9fb3V0cHV0PXRydWV9ICh1bmVtYmVkZGFibGUpXG4gICAgKGZ1biAoYWlkZV9maW5hbGVfOiBtb25leSkgLT4gXG4gICAgICAgdHJ5XG4gICAgICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMTA4OyBzdGFydF9jb2x1bW49MTQ7XG4gICAgICAgICAgICAgICAgIGVuZF9saW5lPTExMDg7IGVuZF9jb2x1bW49MzY7XG4gICAgICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlX2FwbF8gOiBtb25leSA9ICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBaWRlUGVyc29ubmFsaXPDqWVMb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl0gKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7IFwib3V0cHV0XCJdIHtpb19pbnB1dD1Ob0lucHV0O1xuICAgICAgICAgICAgICAgICAgaW9fb3V0cHV0PXRydWV9IChlbWJlZF9tb25leSkgKChsb2dfYmVnaW5fY2FsbFxuICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgICAgICAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF90cmFpdGVtZW50X2FpZGVfZmluYWxlXylcbiAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgIFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiOyBcImlucHV0MFwiXSB7aW9faW5wdXQ9T25seUlucHV0O1xuICAgICAgICAgICAgICAgICAgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfbW9uZXkpIGFpZGVfZmluYWxlXykpKSkpKSlcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAobGV0IGFpZGVfZmluYWxlX2FsXyA6IG1vbmV5ID0gKChsb2dfZW5kX2NhbGxcbiAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgXCJvdXRwdXRcIl0ge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfVxuICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgICAgICAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfdHJhaXRlbWVudF9haWRlX2ZpbmFsZV8pXG4gICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgIFwiaW5wdXQwXCJdIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX1cbiAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSkgYWlkZV9maW5hbGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICggaWYgKG9fbm90IGVsaWdpYmlsaXRlXykgdGhlbiBhaWRlX2ZpbmFsZV8gZWxzZVxuICAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2VsaWdpYmlsaXRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgKG9fbm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2VsaWdpYmlsaXRlX2w4NDFfMl9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuUGFzRWxpZ2libGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50RmFtaWxpYWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgKCBpZiAob19ndF9tb25fbW9uIGFpZGVfZmluYWxlX2FwbF8gYWlkZV9maW5hbGVfYWxfKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBhaWRlX2ZpbmFsZV9hcGxfIGVsc2UgYWlkZV9maW5hbGVfYWxfKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2VsaWdpYmlsaXRlX1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBhaWRlX2ZpbmFsZV9hcGxfIGVsc2UgYWlkZV9maW5hbGVfYWxfKSkpKSkpKVxuICAgICAgIHdpdGhcbiAgICAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICBzdGFydF9saW5lPTExMzc7IHN0YXJ0X2NvbHVtbj0xMjsgZW5kX2xpbmU9MTEzNzsgZW5kX2NvbHVtbj0zNDtcbiAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgZ2xvYmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkZSBsJ2FpZGUgYXUgbG9nZW1lbnQgZWZmZWN0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBhaWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwiYWlkZV9maW5hbGVfZm9ybXVsZVwiXSB7aW9faW5wdXQ9Tm9JbnB1dDtcbiAgICBpb19vdXRwdXQ9dHJ1ZX0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvY29kZV9jb25zdHJ1Y3Rpb25fbGVnaXNsYXRpZi5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMDkxOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEwOTE7IGVuZF9jb2x1bW49MzM7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJBcnRpY2xlIEw4NDEtMlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNoYXBpdHJlIEllciA6IENoYW1wIGQnYXBwbGljYXRpb25cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaXRyZSBJViA6IEFsbG9jYXRpb25zIGRlIGxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTGl2cmUgVklJSSA6IEFpZGVzIHBlcnNvbm5lbGxlcyBhdSBsb2dlbWVudFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBhcnRpZSBsw6lnaXNsYXRpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb2RlIGRlIGxhIGNvbnN0cnVjdGlvbiBldCBkZSBsJ2hhYml0YXRpb25cIl19XG4gICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+XG4gICAgICAgICAgICAgaWYgKG9fbm90IGVsaWdpYmlsaXRlXykgdGhlbiAobW9uZXlfb2ZfY2VudHNfc3RyaW5nIFwiMFwiKSBlbHNlXG4gICAgICAgICAgICAgICggaWZcbiAgICAgICAgICAgICAgICAgKG9fYW5kXG4gICAgICAgICAgICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfZWxpZ2liaWxpdGVfXG4gICAgICAgICAgICAgICAgICAgIChvX25vdFxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfZWxpZ2liaWxpdGVfbDg0MV8yX1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQuUGFzRWxpZ2libGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkpIHRoZW5cbiAgICAgICAgICAgICAgICAgKCBpZlxuICAgICAgICAgICAgICAgICAgICAob19ndF9tb25fbW9uICgobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFpZGVQZXJzb25uYWxpc8OpZUxvZ2VtZW50XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgICAgICAgICAgICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfdHJhaXRlbWVudF9haWRlX2ZpbmFsZV8pXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWlkZVBlcnNvbm5hbGlzw6llTG9nZW1lbnRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJpbnB1dDBcIl1cbiAgICAgICAgICAgICAgICAgICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfbW9uZXkpXG4gICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfKSkpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ19lbmRfY2FsbFxuICAgICAgICAgICAgICAgICAgICAgICBbXCJDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRcIjsgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50XCI7IFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIFwib3V0cHV0XCJdIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X3RyYWl0ZW1lbnRfYWlkZV9maW5hbGVfKVxuICAgICAgICAgICAgICAgICAgICAgICAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIFtcIkNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBcImlucHV0MFwiXSB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgIChlbWJlZF9tb25leSlcbiAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfKSkpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlX1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlXylcbiAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfZWxpZ2liaWxpdGVfXG4gICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV9cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTEzNjsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xMTM2OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBnbG9iYWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGRlIGwnYWlkZSBhdSBsb2dlbWVudCBlZmZlY3RpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAge0NhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQuZWxpZ2liaWxpdGUgPSBlbGlnaWJpbGl0ZV87XG4gICAgIENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQuYWlkZV9maW5hbGVfZm9ybXVsZSA9IGFpZGVfZmluYWxlX2Zvcm11bGVfO1xuICAgICBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPVxuICAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfO1xuICAgICBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50LmNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGUgPVxuICAgICAgIGNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVffVxuXG5sZXQgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZSAoY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbjogQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWVJbi50KSA6IENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlLnQgPVxuICBsZXQgbWVuYWdlXzogTWVuYWdlLnQgPSBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlSW4ubWVuYWdlX2luIGluXG4gIGxldCBkZW1hbmRldXJfOiBEZW1hbmRldXIudCA9IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4uQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWVJbi5kZW1hbmRldXJfaW4gaW5cbiAgbGV0IGRhdGVfY291cmFudGVfOiBkYXRlID0gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbi5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZUluLmRhdGVfY291cmFudGVfaW4gaW5cbiAgbGV0IHJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfOiBtb25leSA9IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4uQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWVJbi5yZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlX2luIGluXG4gIGxldCBtZW5hZ2Vfc2Fuc19lbmZhbnRzX2dhcmRlX2FsdGVybmVlXzogTWVuYWdlLnQgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIjtcbiAgICAgIFwibcOpbmFnZV9zYW5zX2VuZmFudHNfZ2FyZGVfYWx0ZXJuw6llXCJdIHtpb19pbnB1dD1Ob0lucHV0O1xuICAgIGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX21lbmFnZSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEyMzg7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTIzODsgZW5kX2NvbHVtbj00ODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZGUgbCdhaWRlIGF1IGxvZ2VtZW50IGVmZmVjdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIHtNZW5hZ2UucHJlc3RhdGlvbnNfcmVjdWVzID0gKG1lbmFnZV8uTWVuYWdlLnByZXN0YXRpb25zX3JlY3Vlcyk7XG4gICAgICAgICAgICAgICBNZW5hZ2UubG9nZW1lbnQgPSAobWVuYWdlXy5NZW5hZ2UubG9nZW1lbnQpO1xuICAgICAgICAgICAgICAgTWVuYWdlLnBlcnNvbm5lc19hX2NoYXJnZSA9XG4gICAgICAgICAgICAgICAgIChvX2ZpbHRlclxuICAgICAgICAgICAgICAgICAgICAoZnVuIChwZXJzb25uZV9hX2NoYXJnZV86IFBlcnNvbm5lQUNoYXJnZS50KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBwZXJzb25uZV9hX2NoYXJnZV9cbiAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFBlcnNvbm5lQUNoYXJnZS5FbmZhbnRBQ2hhcmdlIGVuZmFudF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZmFudF8uRW5mYW50QUNoYXJnZS5zaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2l0dWF0aW9uR2FyZGVBbHRlcm5lZS5QYXNEZUdhcmRlQWx0ZXJuZWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaXR1YXRpb25HYXJkZUFsdGVybmVlLkdhcmRlQWx0ZXJuZWVDb2VmZmljaWVudFByaXNlRW5DaGFyZ2UgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgXyAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAobWVuYWdlXy5NZW5hZ2UucGVyc29ubmVzX2FfY2hhcmdlKSk7XG4gICAgICAgICAgICAgICBNZW5hZ2Uubm9tYnJlX2F1dHJlc19vY2N1cGFudHNfbG9nZW1lbnQgPVxuICAgICAgICAgICAgICAgICAobWVuYWdlXy5NZW5hZ2Uubm9tYnJlX2F1dHJlc19vY2N1cGFudHNfbG9nZW1lbnQpO1xuICAgICAgICAgICAgICAgTWVuYWdlLnNpdHVhdGlvbl9mYW1pbGlhbGUgPVxuICAgICAgICAgICAgICAgICAobWVuYWdlXy5NZW5hZ2Uuc2l0dWF0aW9uX2ZhbWlsaWFsZSk7XG4gICAgICAgICAgICAgICBNZW5hZ2UuY29uZGl0aW9uX3JhdHRhY2hlX2ZveWVyX2Zpc2NhbF9wYXJlbnRfaWZpID1cbiAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLmNvbmRpdGlvbl9yYXR0YWNoZV9mb3llcl9maXNjYWxfcGFyZW50X2lmaSk7XG4gICAgICAgICAgICAgICBNZW5hZ2UuZW5mYW50X2FfbmFpdHJlX2FwcmVzX3F1YXRyaWVtZV9tb2lzX2dyb3NzZXNzZSA9XG4gICAgICAgICAgICAgICAgIChtZW5hZ2VfLk1lbmFnZS5lbmZhbnRfYV9uYWl0cmVfYXByZXNfcXVhdHJpZW1lX21vaXNfZ3Jvc3Nlc3NlKTtcbiAgICAgICAgICAgICAgIE1lbmFnZS5wZXJzb25uZXNfYWdlZXNfaGFuZGljYXBlZXNfZm95ZXJfcjg0NF80ID1cbiAgICAgICAgICAgICAgICAgKG1lbmFnZV8uTWVuYWdlLnBlcnNvbm5lc19hZ2Vlc19oYW5kaWNhcGVlc19mb3llcl9yODQ0XzQpO1xuICAgICAgICAgICAgICAgTWVuYWdlLnJlc2lkZW5jZSA9IChtZW5hZ2VfLk1lbmFnZS5yZXNpZGVuY2UpfSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTIwNjsgc3RhcnRfY29sdW1uPTExOyBlbmRfbGluZT0xMjA2OyBlbmRfY29sdW1uPTQ1O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkZSBsJ2FpZGUgYXUgbG9nZW1lbnQgZWZmZWN0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIGxldCBjYWxjdWxldHRlX2RvdF9tZW5hZ2VfOiBNZW5hZ2UudCA9IFxuICAgIHRyeSAoKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIjsgXCJjYWxjdWxldHRlLm3DqW5hZ2VcIl1cbiAgICAgIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX21lbmFnZSlcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjE3OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEyMTc7IGVuZF9jb2x1bW49MzE7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGRlIGwnYWlkZSBhdSBsb2dlbWVudCBlZmZlY3RpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IG1lbmFnZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTIxNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMjE3OyBlbmRfY29sdW1uPTMxO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkZSBsJ2FpZGUgYXUgbG9nZW1lbnQgZWZmZWN0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsZXR0ZV9kb3RfZGVtYW5kZXVyXzogRGVtYW5kZXVyLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7IFwiY2FsY3VsZXR0ZS5kZW1hbmRldXJcIl1cbiAgICAgIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2RlbWFuZGV1cilcbiAgICAgIChoYW5kbGVfZGVmYXVsdFxuICAgICAgICAge2ZpbGVuYW1lID0gXCJcIjsgc3RhcnRfbGluZT0wOyBzdGFydF9jb2x1bW49MTtcbiAgICAgICAgICAgZW5kX2xpbmU9MDsgZW5kX2NvbHVtbj0xOyBsYXdfaGVhZGluZ3M9W119IChbfHxdKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gKGxvZ19kZWNpc2lvbl90YWtlblxuICAgICAgICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgICAgICAgc3RhcnRfbGluZT0xMjE5OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEyMTk7IGVuZF9jb2x1bW49MzQ7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGRlIGwnYWlkZSBhdSBsb2dlbWVudCBlZmZlY3RpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IGRlbWFuZGV1cl8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTIxOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMjE5OyBlbmRfY29sdW1uPTM0O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkZSBsJ2FpZGUgYXUgbG9nZW1lbnQgZWZmZWN0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsZXR0ZV9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7IFwiY2FsY3VsZXR0ZS5kYXRlX2NvdXJhbnRlXCJdXG4gICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEyMjE7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTIyMTsgZW5kX2NvbHVtbj0zODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZGUgbCdhaWRlIGF1IGxvZ2VtZW50IGVmZmVjdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTIyMTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMjIxOyBlbmRfY29sdW1uPTM4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkZSBsJ2FpZGUgYXUgbG9nZW1lbnQgZWZmZWN0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsZXR0ZV9kb3RfcmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV86IG1vbmV5ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybsOpZVwiO1xuICAgICAgICBcImNhbGN1bGV0dGUucmVzc291cmNlc19tw6luYWdlX3ByaXNlc19lbl9jb21wdGVcIl1cbiAgICAgIHtpb19pbnB1dD1Pbmx5SW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX21vbmV5KVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEyMjM7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTIyMzsgZW5kX2NvbHVtbj01OTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZGUgbCdhaWRlIGF1IGxvZ2VtZW50IGVmZmVjdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gcmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTIyMzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMjIzOyBlbmRfY29sdW1uPTU5O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkZSBsJ2FpZGUgYXUgbG9nZW1lbnQgZWZmZWN0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybsOpZVwiOyBcImNhbGN1bGV0dGVcIjtcbiAgICAgIFwiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiXSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7IFwiY2FsY3VsZXR0ZVwiO1xuICAgICAgXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCJdIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnQpXG4gICAgKHtDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4ubWVuYWdlX2luID0gY2FsY3VsZXR0ZV9kb3RfbWVuYWdlXztcbiAgICAgICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLmRlbWFuZGV1cl9pbiA9IGNhbGN1bGV0dGVfZG90X2RlbWFuZGV1cl87XG4gICAgICAgIENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRJbi5kYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgICBjYWxjdWxldHRlX2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLnJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfaW4gPVxuICAgICAgICAgIGNhbGN1bGV0dGVfZG90X3Jlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVffSkpKSBpblxuICBsZXQgY2FsY3VsZXR0ZV9kb3RfZWxpZ2liaWxpdGVfOiBib29sID0gcmVzdWx0Xy5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50LmVsaWdpYmlsaXRlIGluXG4gIGxldCBjYWxjdWxldHRlX2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQuYWlkZV9maW5hbGVfZm9ybXVsZSBpblxuICBsZXQgY2FsY3VsZXR0ZV9kb3RfdHJhaXRlbWVudF9haWRlX2ZpbmFsZV86IG1vbmV5IC0+IG1vbmV5ID0gcmVzdWx0Xy5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgaW5cbiAgbGV0IGNhbGN1bGV0dGVfZG90X2NvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfOiBcbiAgICBkZWNpbWFsIGFycmF5ID0gcmVzdWx0Xy5DYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50LmNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGUgaW5cbiAgbGV0IGNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZV9kb3RfbWVuYWdlXzogTWVuYWdlLnQgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7XG4gICAgICAgIFwiY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybsOpZS5tw6luYWdlXCJdIHtpb19pbnB1dD1Pbmx5SW5wdXQ7XG4gICAgICBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9tZW5hZ2UpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTIyNTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMjI1OyBlbmRfY29sdW1uPTUxO1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkZSBsJ2FpZGUgYXUgbG9nZW1lbnQgZWZmZWN0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBtZW5hZ2Vfc2Fuc19lbmZhbnRzX2dhcmRlX2FsdGVybmVlXykpKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMjI1OyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTEyMjU7IGVuZF9jb2x1bW49NTE7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGRlIGwnYWlkZSBhdSBsb2dlbWVudCBlZmZlY3RpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpIGluXG4gIGxldCBjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWVfZG90X2RlbWFuZGV1cl86IERlbWFuZGV1ci50ID0gXG4gICAgdHJ5ICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybsOpZVwiO1xuICAgICAgICBcImNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm7DqWUuZGVtYW5kZXVyXCJdIHtpb19pbnB1dD1Pbmx5SW5wdXQ7XG4gICAgICBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9kZW1hbmRldXIpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTIyNzsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMjI3OyBlbmRfY29sdW1uPTU0O1xuICAgICAgICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkZSBsJ2FpZGUgYXUgbG9nZW1lbnQgZWZmZWN0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0gdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiBkZW1hbmRldXJfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEyMjc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTIyNzsgZW5kX2NvbHVtbj01NDtcbiAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZGUgbCdhaWRlIGF1IGxvZ2VtZW50IGVmZmVjdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19KSkgaW5cbiAgbGV0IGNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZV9kb3RfZGF0ZV9jb3VyYW50ZV86IGRhdGUgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7XG4gICAgICAgIFwiY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybsOpZS5kYXRlX2NvdXJhbnRlXCJdIHtpb19pbnB1dD1Pbmx5SW5wdXQ7XG4gICAgICBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9kYXRlKVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEyMjk7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTIyOTsgZW5kX2NvbHVtbj01ODtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZGUgbCdhaWRlIGF1IGxvZ2VtZW50IGVmZmVjdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gZGF0ZV9jb3VyYW50ZV8pKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTIyOTsgc3RhcnRfY29sdW1uPTE0OyBlbmRfbGluZT0xMjI5OyBlbmRfY29sdW1uPTU4O1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkZSBsJ2FpZGUgYXUgbG9nZW1lbnQgZWZmZWN0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF9yZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlXzogbW9uZXkgPSBcbiAgICB0cnkgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7XG4gICAgICAgIFwiY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybsOpZS5yZXNzb3VyY2VzX23DqW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZVwiXVxuICAgICAge2lvX2lucHV0PU9ubHlJbnB1dDsgaW9fb3V0cHV0PWZhbHNlfSAoZW1iZWRfbW9uZXkpXG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MTIzMjsgc3RhcnRfY29sdW1uPTU7IGVuZF9saW5lPTEyMzI7IGVuZF9jb2x1bW49NzA7XG4gICAgICAgICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGRlIGwnYWlkZSBhdSBsb2dlbWVudCBlZmZlY3RpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSB0cnVlKSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IHJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfKSkpKVxuICAgIHdpdGhcbiAgICBFbXB0eUVycm9yIC0+IChyYWlzZSAoTm9WYWx1ZVByb3ZpZGVkXG4gICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICBzdGFydF9saW5lPTEyMzI7IHN0YXJ0X2NvbHVtbj01OyBlbmRfbGluZT0xMjMyOyBlbmRfY29sdW1uPTcwO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkZSBsJ2FpZGUgYXUgbG9nZW1lbnQgZWZmZWN0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSBpblxuICBsZXQgcmVzdWx0XzogQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudC50ID0gKGxvZ19lbmRfY2FsbFxuICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybsOpZVwiO1xuICAgICAgXCJjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuw6llXCI7IFwiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiXVxuICAgICgobG9nX2JlZ2luX2NhbGxcbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIjtcbiAgICAgIFwiY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybsOpZVwiOyBcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIl1cbiAgICBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50KVxuICAgICh7Q2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLm1lbmFnZV9pbiA9XG4gICAgICAgIGNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZV9kb3RfbWVuYWdlXztcbiAgICAgICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLmRlbWFuZGV1cl9pbiA9XG4gICAgICAgICAgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF9kZW1hbmRldXJfO1xuICAgICAgICBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50SW4uZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgICAgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF9kYXRlX2NvdXJhbnRlXztcbiAgICAgICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLnJlc3NvdXJjZXNfbWVuYWdlX3ByaXNlc19lbl9jb21wdGVfaW4gPVxuICAgICAgICAgIGNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZV9kb3RfcmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV99KSkpIGluXG4gIGxldCBjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWVfZG90X2VsaWdpYmlsaXRlXzogYm9vbCA9IHJlc3VsdF8uQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudC5lbGlnaWJpbGl0ZSBpblxuICBsZXQgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF9haWRlX2ZpbmFsZV9mb3JtdWxlXzogbW9uZXkgPSByZXN1bHRfLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQuYWlkZV9maW5hbGVfZm9ybXVsZSBpblxuICBsZXQgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF90cmFpdGVtZW50X2FpZGVfZmluYWxlXzogbW9uZXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9uZXkgPSByZXN1bHRfLkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnQudHJhaXRlbWVudF9haWRlX2ZpbmFsZSBpblxuICBsZXQgY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlX2RvdF9jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXzogXG4gICAgZGVjaW1hbCBhcnJheSA9IHJlc3VsdF8uQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlIGluXG4gIGxldCBlbGlnaWJpbGl0ZV86IGJvb2wgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIjsgXCLDqWxpZ2liaWxpdMOpXCJdXG4gICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD10cnVlfSAoZW1iZWRfYm9vbCkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEyNjc7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTI2NzsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZGUgbCdhaWRlIGF1IGxvZ2VtZW50IGVmZmVjdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT4gY2FsY3VsZXR0ZV9kb3RfZWxpZ2liaWxpdGVfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMjEzOyBzdGFydF9jb2x1bW49MTI7IGVuZF9saW5lPTEyMTM7IGVuZF9jb2x1bW49MjM7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGRlIGwnYWlkZSBhdSBsb2dlbWVudCBlZmZlY3RpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfOiBkZWNpbWFsIGFycmF5ID0gKGxvZ192YXJpYWJsZV9kZWZpbml0aW9uXG4gICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuw6llXCI7XG4gICAgICBcImNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuw6llX3ByaXNfZW5fY29tcHRlXCJdXG4gICAge2lvX2lucHV0PU5vSW5wdXQ7IGlvX291dHB1dD1mYWxzZX0gKGVtYmVkX2FycmF5IChlbWJlZF9kZWNpbWFsKSkgKFxuICAgIHRyeVxuICAgICAgKGhhbmRsZV9kZWZhdWx0XG4gICAgICAgICB7ZmlsZW5hbWUgPSBcIlwiOyBzdGFydF9saW5lPTA7IHN0YXJ0X2NvbHVtbj0xO1xuICAgICAgICAgICBlbmRfbGluZT0wOyBlbmRfY29sdW1uPTE7IGxhd19oZWFkaW5ncz1bXX0gKFt8fF0pXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2RlY2lzaW9uX3Rha2VuXG4gICAgICAgICAgICB7ZmlsZW5hbWUgPSBcImV4YW1wbGVzL2FpZGVzX2xvZ2VtZW50L3Byb2xvZ3VlLmNhdGFsYV9mclwiO1xuICAgICAgICAgICAgICBzdGFydF9saW5lPTEyMzY7IHN0YXJ0X2NvbHVtbj0xNDsgZW5kX2xpbmU9MTIzNjsgZW5kX2NvbHVtbj02MztcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNhbGN1bGV0dGUgYXZlYyBnYXJkZSBhbHRlcm7DqWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDYWxjdWwgZGUgbCdhaWRlIGF1IGxvZ2VtZW50IGVmZmVjdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb2xvZ3VlIDogYWlkZXMgYXUgbG9nZW1lbnRcIl19IHRydWUpKVxuICAgICAgICAgKGZ1biAoXzogdW5pdCkgLT5cbiAgICAgICAgICAgIGNhbGN1bGV0dGVfZG90X2NvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVfKSlcbiAgICB3aXRoXG4gICAgRW1wdHlFcnJvciAtPiAocmFpc2UgKE5vVmFsdWVQcm92aWRlZFxuICAgICAge2ZpbGVuYW1lID0gXCJleGFtcGxlcy9haWRlc19sb2dlbWVudC9wcm9sb2d1ZS5jYXRhbGFfZnJcIjtcbiAgICAgICAgc3RhcnRfbGluZT0xMjA3OyBzdGFydF9jb2x1bW49MTE7IGVuZF9saW5lPTEyMDc7IGVuZF9jb2x1bW49NjA7XG4gICAgICAgIGxhd19oZWFkaW5ncz1bXCJDYWxjdWxldHRlIGF2ZWMgZ2FyZGUgYWx0ZXJuw6llXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiQ2FsY3VsIGRlIGwnYWlkZSBhdSBsb2dlbWVudCBlZmZlY3RpdmVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9sb2d1ZSA6IGFpZGVzIGF1IGxvZ2VtZW50XCJdfSkpKSkgaW5cbiAgbGV0IGFpZGVfZmluYWxlXzogbW9uZXkgPSAobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm7DqWVcIjsgXCJhaWRlX2ZpbmFsZVwiXVxuICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9dHJ1ZX0gKGVtYmVkX21vbmV5KSAoXG4gICAgdHJ5XG4gICAgICAoaGFuZGxlX2RlZmF1bHRcbiAgICAgICAgIHtmaWxlbmFtZSA9IFwiXCI7IHN0YXJ0X2xpbmU9MDsgc3RhcnRfY29sdW1uPTE7XG4gICAgICAgICAgIGVuZF9saW5lPTA7IGVuZF9jb2x1bW49MTsgbGF3X2hlYWRpbmdzPVtdfSAoW3x8XSlcbiAgICAgICAgIChmdW4gKF86IHVuaXQpIC0+IChsb2dfZGVjaXNpb25fdGFrZW5cbiAgICAgICAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvYXV0cmVzX3NvdXJjZXMuY2F0YWxhX2ZyXCI7XG4gICAgICAgICAgICAgIHN0YXJ0X2xpbmU9MjgzOyBzdGFydF9jb2x1bW49MTQ7IGVuZF9saW5lPTI4MzsgZW5kX2NvbHVtbj0yNTtcbiAgICAgICAgICAgICAgbGF3X2hlYWRpbmdzPVtcIkNvbnNlaWwgZCfDiXRhdCwgNcOobWUgLSA0w6htZSBjaGFtYnJlcyByw6l1bmllcywgMjEvMDcvMjAxNywgMzk4NTYzXCJdfVxuICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAoZnVuIChfOiB1bml0KSAtPiAobG9nX2VuZF9jYWxsXG4gICAgICAgICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgKChsb2dfdmFyaWFibGVfZGVmaW5pdGlvblxuICAgICAgICAgICAgW1wiQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudFwiOyBcInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVcIjsgXCJvdXRwdXRcIl1cbiAgICAgICAgICAgIHtpb19pbnB1dD1Ob0lucHV0OyBpb19vdXRwdXQ9dHJ1ZX0gKGVtYmVkX21vbmV5KSAoKGxvZ19iZWdpbl9jYWxsXG4gICAgICAgICAgICBbXCJDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50XCI7IFwidHJhaXRlbWVudF9haWRlX2ZpbmFsZVwiXVxuICAgICAgICAgICAgY2FsY3VsZXR0ZV9kb3RfdHJhaXRlbWVudF9haWRlX2ZpbmFsZV8pICgobG9nX3ZhcmlhYmxlX2RlZmluaXRpb25cbiAgICAgICAgICAgIFtcIkNhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRcIjsgXCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlXCI7IFwiaW5wdXQwXCJdXG4gICAgICAgICAgICB7aW9faW5wdXQ9T25seUlucHV0OyBpb19vdXRwdXQ9ZmFsc2V9IChlbWJlZF9tb25leSlcbiAgICAgICAgICAgIChvX2FkZF9tb25fbW9uXG4gICAgICAgICAgICAgICBjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWVfZG90X2FpZGVfZmluYWxlX2Zvcm11bGVfXG4gICAgICAgICAgICAgICAoIGlmXG4gICAgICAgICAgICAgICAgICAob19lcVxuICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXylcbiAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VyX29mX3N0cmluZyBcIjBcIikpIHRoZW5cbiAgICAgICAgICAgICAgICAgIChtb25leV9vZl9jZW50c19zdHJpbmcgXCIwXCIpIGVsc2VcbiAgICAgICAgICAgICAgICAgIChvX211bHRfbW9uX3JhdFxuICAgICAgICAgICAgICAgICAgICAgKG9fc3ViX21vbl9tb24gY2FsY3VsZXR0ZV9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV9cbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZV9kb3RfYWlkZV9maW5hbGVfZm9ybXVsZV8pXG4gICAgICAgICAgICAgICAgICAgICAob19kaXZfcmF0X3JhdFxuICAgICAgICAgICAgICAgICAgICAgICAgKG9fcmVkdWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChzdW0xXzogZGVjaW1hbCkgKHN1bTJfOiBkZWNpbWFsKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19hZGRfcmF0X3JhdCBzdW0xXyBzdW0yXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpbWFsX29mX3N0cmluZyBcIjAuXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXylcbiAgICAgICAgICAgICAgICAgICAgICAgIChvX3RvcmF0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9fbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXykpKSkpKSkpKSkpKSkpXG4gICAgd2l0aFxuICAgIEVtcHR5RXJyb3IgLT4gKHJhaXNlIChOb1ZhbHVlUHJvdmlkZWRcbiAgICAgIHtmaWxlbmFtZSA9IFwiZXhhbXBsZXMvYWlkZXNfbG9nZW1lbnQvcHJvbG9ndWUuY2F0YWxhX2ZyXCI7XG4gICAgICAgIHN0YXJ0X2xpbmU9MTIxNDsgc3RhcnRfY29sdW1uPTEyOyBlbmRfbGluZT0xMjE0OyBlbmRfY29sdW1uPTIzO1xuICAgICAgICBsYXdfaGVhZGluZ3M9W1wiQ2FsY3VsZXR0ZSBhdmVjIGdhcmRlIGFsdGVybsOpZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICBcIkNhbGN1bCBkZSBsJ2FpZGUgYXUgbG9nZW1lbnQgZWZmZWN0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgIFwiUHJvbG9ndWUgOiBhaWRlcyBhdSBsb2dlbWVudFwiXX0pKSkpIGluXG4gIHtDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZS5lbGlnaWJpbGl0ZSA9IGVsaWdpYmlsaXRlXztcbiAgICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEdhcmRlQWx0ZXJuZWUuYWlkZV9maW5hbGUgPSBhaWRlX2ZpbmFsZV99XG4iLCIoKiogVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSB0aGUgQ2F0YWxhIGNvbXBpbGVyLCBkbyBub3QgZWRpdCEgKilcblxub3BlbiBSdW50aW1lX29jYW1sLlJ1bnRpbWVcbm9wZW4gUnVudGltZV9qc29vLlJ1bnRpbWVcbm9wZW4gSnNfb2Zfb2NhbWxcbm9wZW4gQWlkZXNfbG9nZW1lbnRcblxuW0BAQG9jYW1sLndhcm5pbmcgXCItNC0yNi0yNy0zMi00MS00MlwiXVxuXG4oKiBHZW5lcmF0ZWQgQVBJICopXG5cbmNsYXNzIHR5cGUgdHlwZV9wcmV0ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiRDMzMV8zMlwiXG4gICAgICAgIC0gXCJEMzMxXzYzXzY0XCJcbiAgICAgICAgLSBcIkQzMzFfNTlfOFwiXG4gICAgICAgIC0gXCJEMzMxXzc2XzFcIlxuICAgICAgICAtIFwiQXV0cmVcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCB0eXBlX3ByZXRfdG9fanNvbyA6IFR5cGVQcmV0LnQgLT4gdHlwZV9wcmV0IEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IEQzMzFfMzIgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJEMzMxXzMyXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgRDMzMV82M182NCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkQzMzFfNjNfNjRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBEMzMxXzU5XzggYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJEMzMxXzU5XzhcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBEMzMxXzc2XzEgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJEMzMxXzc2XzFcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBdXRyZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkF1dHJlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCB0eXBlX3ByZXRfb2ZfanNvbyAodHlwZV9wcmV0IDogdHlwZV9wcmV0IEpzLnQpIDogVHlwZVByZXQudCA9XG4gIG1hdGNoIHR5cGVfcHJldCMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkQzMzFfMzJcIiAtPiBUeXBlUHJldC5EMzMxXzMyICgpXG4gIHwgXCJEMzMxXzYzXzY0XCIgLT4gVHlwZVByZXQuRDMzMV82M182NCAoKVxuICB8IFwiRDMzMV81OV84XCIgLT4gVHlwZVByZXQuRDMzMV81OV84ICgpXG4gIHwgXCJEMzMxXzc2XzFcIiAtPiBUeXBlUHJldC5EMzMxXzc2XzEgKClcbiAgfCBcIkF1dHJlXCIgLT4gVHlwZVByZXQuQXV0cmUgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZiBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1R5cGVQcmV0LnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIHRpdHVsYWlyZV9wcmV0ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiRGVtYW5kZXVyXCJcbiAgICAgICAgLSBcIlZlbmRldXJRdWFuZERlbWFuZGV1ckFDb250cmF0TG9jYXRpb25BY2Nlc3Npb25cIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCB0aXR1bGFpcmVfcHJldF90b19qc29vIDogVGl0dWxhaXJlUHJldC50IC0+IHRpdHVsYWlyZV9wcmV0IEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IERlbWFuZGV1ciBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkRlbWFuZGV1clwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFZlbmRldXJRdWFuZERlbWFuZGV1ckFDb250cmF0TG9jYXRpb25BY2Nlc3Npb24gYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJWZW5kZXVyUXVhbmREZW1hbmRldXJBQ29udHJhdExvY2F0aW9uQWNjZXNzaW9uXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCB0aXR1bGFpcmVfcHJldF9vZl9qc29vICh0aXR1bGFpcmVfcHJldCA6IHRpdHVsYWlyZV9wcmV0IEpzLnQpXG4gIDogVGl0dWxhaXJlUHJldC50ID1cbiAgbWF0Y2ggdGl0dWxhaXJlX3ByZXQjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJEZW1hbmRldXJcIiAtPiBUaXR1bGFpcmVQcmV0LkRlbWFuZGV1ciAoKVxuICB8IFwiVmVuZGV1clF1YW5kRGVtYW5kZXVyQUNvbnRyYXRMb2NhdGlvbkFjY2Vzc2lvblwiIC0+XG4gICAgVGl0dWxhaXJlUHJldC5WZW5kZXVyUXVhbmREZW1hbmRldXJBQ29udHJhdExvY2F0aW9uQWNjZXNzaW9uICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdUaXR1bGFpcmVQcmV0LnQnXCIgY29ucylcblxuXG5jbGFzcyB0eXBlIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiVHJhdmF1eFBvdXJBY3F1aXNpdGlvbkQ4MzJfMTVfMVwiXG4gICAgICAgIC0gXCJUcmF2YXV4U3VyTG9nZW1lbnREZWphQWNxdWlzRDgzMl8xNV8yXCJcbiAgICAgICAgLSBcIlBhc0RlVHJhdmF1eFwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1X3RvX2pzb29cbiAgOiBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LnQgLT4gdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgVHJhdmF1eFBvdXJBY3F1aXNpdGlvbkQ4MzJfMTVfMSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlRyYXZhdXhQb3VyQWNxdWlzaXRpb25EODMyXzE1XzFcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBUcmF2YXV4U3VyTG9nZW1lbnREZWphQWNxdWlzRDgzMl8xNV8yIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiVHJhdmF1eFN1ckxvZ2VtZW50RGVqYUFjcXVpc0Q4MzJfMTVfMlwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFBhc0RlVHJhdmF1eCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlBhc0RlVHJhdmF1eFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTVfb2ZfanNvb1xuICAodHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTUgOiB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNSBKcy50KVxuICA6IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUudCA9XG4gIG1hdGNoIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1IyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiVHJhdmF1eFBvdXJBY3F1aXNpdGlvbkQ4MzJfMTVfMVwiIC0+XG4gICAgVHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNS5UcmF2YXV4UG91ckFjcXVpc2l0aW9uRDgzMl8xNV8xICgpXG4gIHwgXCJUcmF2YXV4U3VyTG9nZW1lbnREZWphQWNxdWlzRDgzMl8xNV8yXCIgLT5cbiAgICBUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LlRyYXZhdXhTdXJMb2dlbWVudERlamFBY3F1aXNEODMyXzE1XzIgKClcbiAgfCBcIlBhc0RlVHJhdmF1eFwiIC0+IFR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTUuUGFzRGVUcmF2YXV4ICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdUeXBlVHJhdmF1eExvZ2VtZW50RDgzMjE1LnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJPYmplY3RpZkRlY2VuY2VMb2dlbWVudFwiXG4gICAgICAgIC0gXCJQcmV2dURhbnNMaXN0ZVIzMjFfMTVcIlxuICAgICAgICAtIFwiQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjNcIlxuICAgICAgICAtIFwiUGFzRGVUcmF2YXV4XCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNV90b19qc29vXG4gIDogVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LnQgLT4gdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBPYmplY3RpZkRlY2VuY2VMb2dlbWVudCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk9iamVjdGlmRGVjZW5jZUxvZ2VtZW50XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgUHJldnVEYW5zTGlzdGVSMzIxXzE1IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUHJldnVEYW5zTGlzdGVSMzIxXzE1XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82M1wiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFBhc0RlVHJhdmF1eCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlBhc0RlVHJhdmF1eFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNV9vZl9qc29vXG4gICh0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81IDogdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSBKcy50KVxuICA6IFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS50ID1cbiAgbWF0Y2ggdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIk9iamVjdGlmRGVjZW5jZUxvZ2VtZW50XCIgLT5cbiAgICBUeXBlVHJhdmF1eExvZ2VtZW50Ujg0MjUuT2JqZWN0aWZEZWNlbmNlTG9nZW1lbnQgKClcbiAgfCBcIlByZXZ1RGFuc0xpc3RlUjMyMV8xNVwiIC0+XG4gICAgVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlByZXZ1RGFuc0xpc3RlUjMyMV8xNSAoKVxuICB8IFwiQWdyYW5kaXJPdVJlbmRyZUhhYml0YWJsZUQzMzFfNjNcIiAtPlxuICAgIFR5cGVUcmF2YXV4TG9nZW1lbnRSODQyNS5BZ3JhbmRpck91UmVuZHJlSGFiaXRhYmxlRDMzMV82MyAoKVxuICB8IFwiUGFzRGVUcmF2YXV4XCIgLT4gVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LlBhc0RlVHJhdmF1eCAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnVHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1LnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIGFtZWxpb3JlX3Bhcl9vY2N1cGFudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIk91aVwiXG4gICAgICAgIC0gXCJOb25cIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBhbWVsaW9yZV9wYXJfb2NjdXBhbnRfdG9fanNvb1xuICA6IEFtZWxpb3JlUGFyT2NjdXBhbnQudCAtPiBhbWVsaW9yZV9wYXJfb2NjdXBhbnQgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgT3VpIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiT3VpXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgTm9uIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTm9uXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBhbWVsaW9yZV9wYXJfb2NjdXBhbnRfb2ZfanNvb1xuICAoYW1lbGlvcmVfcGFyX29jY3VwYW50IDogYW1lbGlvcmVfcGFyX29jY3VwYW50IEpzLnQpXG4gIDogQW1lbGlvcmVQYXJPY2N1cGFudC50ID1cbiAgbWF0Y2ggYW1lbGlvcmVfcGFyX29jY3VwYW50IyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiT3VpXCIgLT4gQW1lbGlvcmVQYXJPY2N1cGFudC5PdWkgKClcbiAgfCBcIk5vblwiIC0+IEFtZWxpb3JlUGFyT2NjdXBhbnQuTm9uICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdBbWVsaW9yZVBhck9jY3VwYW50LnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIGxpbWl0ZV90cmFuY2hlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiUmV2ZW51XCJcbiAgICAgICAgLSBcIkluZmluaVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IGxpbWl0ZV90cmFuY2hlX3RvX2pzb28gOiBMaW1pdGVUcmFuY2hlLnQgLT4gbGltaXRlX3RyYW5jaGUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgUmV2ZW51IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUmV2ZW51XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGFyZykpXG4gICAgZW5kXG4gIHwgSW5maW5pIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiSW5maW5pXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBsaW1pdGVfdHJhbmNoZV9vZl9qc29vIChsaW1pdGVfdHJhbmNoZSA6IGxpbWl0ZV90cmFuY2hlIEpzLnQpXG4gIDogTGltaXRlVHJhbmNoZS50ID1cbiAgbWF0Y2ggbGltaXRlX3RyYW5jaGUjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJSZXZlbnVcIiAtPlxuICBMaW1pdGVUcmFuY2hlLlJldmVudSAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciAoSnMuVW5zYWZlLmNvZXJjZSBsaW1pdGVfdHJhbmNoZSMjLnBheWxvYWQpKVxuICB8IFwiSW5maW5pXCIgLT4gTGltaXRlVHJhbmNoZS5JbmZpbmkgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ0xpbWl0ZVRyYW5jaGUudCdcIiBjb25zKVxuXG5cbmNsYXNzIHR5cGUgbGltaXRlX3RyYW5jaGVfZGVjaW1hbCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIlJldmVudVwiXG4gICAgICAgIC0gXCJJbmZpbmlcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBsaW1pdGVfdHJhbmNoZV9kZWNpbWFsX3RvX2pzb29cbiAgOiBMaW1pdGVUcmFuY2hlRGVjaW1hbC50IC0+IGxpbWl0ZV90cmFuY2hlX2RlY2ltYWwgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgUmV2ZW51IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUmV2ZW51XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgYXJnKSlcbiAgICBlbmRcbiAgfCBJbmZpbmkgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJJbmZpbmlcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IGxpbWl0ZV90cmFuY2hlX2RlY2ltYWxfb2ZfanNvb1xuICAobGltaXRlX3RyYW5jaGVfZGVjaW1hbCA6IGxpbWl0ZV90cmFuY2hlX2RlY2ltYWwgSnMudClcbiAgOiBMaW1pdGVUcmFuY2hlRGVjaW1hbC50ID1cbiAgbWF0Y2ggbGltaXRlX3RyYW5jaGVfZGVjaW1hbCMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIlJldmVudVwiIC0+XG4gIExpbWl0ZVRyYW5jaGVEZWNpbWFsLlJldmVudSAoZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgKEpzLlVuc2FmZS5jb2VyY2UgbGltaXRlX3RyYW5jaGVfZGVjaW1hbCMjLnBheWxvYWQpKVxuICB8IFwiSW5maW5pXCIgLT4gTGltaXRlVHJhbmNoZURlY2ltYWwuSW5maW5pICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdMaW1pdGVUcmFuY2hlRGVjaW1hbC50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBwcmVzdGF0aW9uX3JlY3VlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiQWxsb2NhdGlvbnNGYW1pbGlhbGVzXCJcbiAgICAgICAgLSBcIkNvbXBsZW1lbnRGYW1pbGlhbFwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsXCJcbiAgICAgICAgLSBcIkFsbG9jYXRpb25Tb3V0aWVuRW5mYW50SGFuZGljYXBlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgcHJlc3RhdGlvbl9yZWN1ZV90b19qc29vIDogUHJlc3RhdGlvblJlY3VlLnQgLT4gcHJlc3RhdGlvbl9yZWN1ZSBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBDb21wbGVtZW50RmFtaWxpYWwgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJDb21wbGVtZW50RmFtaWxpYWxcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEFsbG9jYXRpb25Tb3V0aWVuRW5mYW50SGFuZGljYXBlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvblNvdXRpZW5FbmZhbnRIYW5kaWNhcGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHByZXN0YXRpb25fcmVjdWVfb2ZfanNvbyAocHJlc3RhdGlvbl9yZWN1ZSA6IHByZXN0YXRpb25fcmVjdWUgSnMudClcbiAgOiBQcmVzdGF0aW9uUmVjdWUudCA9XG4gIG1hdGNoIHByZXN0YXRpb25fcmVjdWUjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJBbGxvY2F0aW9uc0ZhbWlsaWFsZXNcIiAtPiBQcmVzdGF0aW9uUmVjdWUuQWxsb2NhdGlvbnNGYW1pbGlhbGVzICgpXG4gIHwgXCJDb21wbGVtZW50RmFtaWxpYWxcIiAtPiBQcmVzdGF0aW9uUmVjdWUuQ29tcGxlbWVudEZhbWlsaWFsICgpXG4gIHwgXCJBbGxvY2F0aW9uU291dGllbkZhbWlsaWFsXCIgLT5cbiAgICBQcmVzdGF0aW9uUmVjdWUuQWxsb2NhdGlvblNvdXRpZW5GYW1pbGlhbCAoKVxuICB8IFwiQWxsb2NhdGlvblNvdXRpZW5FbmZhbnRIYW5kaWNhcGVcIiAtPlxuICAgIFByZXN0YXRpb25SZWN1ZS5BbGxvY2F0aW9uU291dGllbkVuZmFudEhhbmRpY2FwZSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnUHJlc3RhdGlvblJlY3VlLnQnXCIgY29ucylcblxuXG5jbGFzcyB0eXBlIHBhcmVudF9vdV9hdXRyZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkRlbWFuZGV1ck91Q29uam9pbnRPdVBhcmVudE91VmlhUGFydHNTb2NpZXRlc1wiXG4gICAgICAgIC0gXCJBdXRyZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHBhcmVudF9vdV9hdXRyZV90b19qc29vIDogUGFyZW50T3VBdXRyZS50IC0+IHBhcmVudF9vdV9hdXRyZSBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBEZW1hbmRldXJPdUNvbmpvaW50T3VQYXJlbnRPdVZpYVBhcnRzU29jaWV0ZXMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJEZW1hbmRldXJPdUNvbmpvaW50T3VQYXJlbnRPdVZpYVBhcnRzU29jaWV0ZXNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCBhcmcpKVxuICAgIGVuZFxuICB8IEF1dHJlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQXV0cmVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHBhcmVudF9vdV9hdXRyZV9vZl9qc29vIChwYXJlbnRfb3VfYXV0cmUgOiBwYXJlbnRfb3VfYXV0cmUgSnMudClcbiAgOiBQYXJlbnRPdUF1dHJlLnQgPVxuICBtYXRjaCBwYXJlbnRfb3VfYXV0cmUjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJEZW1hbmRldXJPdUNvbmpvaW50T3VQYXJlbnRPdVZpYVBhcnRzU29jaWV0ZXNcIiAtPlxuICBQYXJlbnRPdUF1dHJlLkRlbWFuZGV1ck91Q29uam9pbnRPdVBhcmVudE91VmlhUGFydHNTb2NpZXRlcyAoZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgKEpzLlVuc2FmZS5jb2VyY2UgcGFyZW50X291X2F1dHJlIyMucGF5bG9hZCkpXG4gIHwgXCJBdXRyZVwiIC0+IFBhcmVudE91QXV0cmUuQXV0cmUgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1BhcmVudE91QXV0cmUudCdcIiBjb25zKVxuXG5cbmNsYXNzIHR5cGUgc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiUGFzRGVHYXJkZUFsdGVybmVlXCJcbiAgICAgICAgLSBcIkdhcmRlQWx0ZXJuZWVDb2VmZmljaWVudFByaXNlRW5DaGFyZ2VcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBzaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWVfdG9fanNvb1xuICA6IFNpdHVhdGlvbkdhcmRlQWx0ZXJuZWUudCAtPiBzaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgUGFzRGVHYXJkZUFsdGVybmVlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUGFzRGVHYXJkZUFsdGVybmVlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgR2FyZGVBbHRlcm5lZUNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkdhcmRlQWx0ZXJuZWVDb2VmZmljaWVudFByaXNlRW5DaGFyZ2VcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlX29mX2pzb29cbiAgKHNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSA6IHNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSBKcy50KVxuICA6IFNpdHVhdGlvbkdhcmRlQWx0ZXJuZWUudCA9XG4gIG1hdGNoIHNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIlBhc0RlR2FyZGVBbHRlcm5lZVwiIC0+IFNpdHVhdGlvbkdhcmRlQWx0ZXJuZWUuUGFzRGVHYXJkZUFsdGVybmVlICgpXG4gIHwgXCJHYXJkZUFsdGVybmVlQ29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlXCIgLT5cbiAgU2l0dWF0aW9uR2FyZGVBbHRlcm5lZS5HYXJkZUFsdGVybmVlQ29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlIChkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciAoSnMuVW5zYWZlLmNvZXJjZSBzaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWUjIy5wYXlsb2FkKSlcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1NpdHVhdGlvbkdhcmRlQWx0ZXJuZWUudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgcGFyZW50ZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkFzY2VuZGFudFwiXG4gICAgICAgIC0gXCJEZXNjZW5kYW50XCJcbiAgICAgICAgLSBcIkNvbGxhdGVyYWxEZXV4aWVtZVRyb2lzaWVtZURlZ3JlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgcGFyZW50ZV90b19qc29vIDogUGFyZW50ZS50IC0+IHBhcmVudGUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgQXNjZW5kYW50IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQXNjZW5kYW50XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgRGVzY2VuZGFudCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkRlc2NlbmRhbnRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBDb2xsYXRlcmFsRGV1eGllbWVUcm9pc2llbWVEZWdyZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkNvbGxhdGVyYWxEZXV4aWVtZVRyb2lzaWVtZURlZ3JlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBwYXJlbnRlX29mX2pzb28gKHBhcmVudGUgOiBwYXJlbnRlIEpzLnQpIDogUGFyZW50ZS50ID1cbiAgbWF0Y2ggcGFyZW50ZSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkFzY2VuZGFudFwiIC0+IFBhcmVudGUuQXNjZW5kYW50ICgpXG4gIHwgXCJEZXNjZW5kYW50XCIgLT4gUGFyZW50ZS5EZXNjZW5kYW50ICgpXG4gIHwgXCJDb2xsYXRlcmFsRGV1eGllbWVUcm9pc2llbWVEZWdyZVwiIC0+XG4gICAgUGFyZW50ZS5Db2xsYXRlcmFsRGV1eGllbWVUcm9pc2llbWVEZWdyZSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnUGFyZW50ZS50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBkYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2dyb3NzZXNzZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkRhdGVEZU5haXNzYW5jZVwiXG4gICAgICAgIC0gXCJBdmFudFByZW1pZXJKb3VyTW9pc0NpdmlsVHJvaXNpZW1lTW9pc0RlR3Jvc3Nlc3NlXCJcbiAgICAgICAgLSBcIkFwcmVzUHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2llbWVNb2lzRGVHcm9zc2Vzc2VcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBkYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2dyb3NzZXNzZV90b19qc29vXG4gIDogRGF0ZURlTmFpc3NhbmNlT3VNb2lzRGVHcm9zc2Vzc2UudCAtPiBkYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2dyb3NzZXNzZSBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBEYXRlRGVOYWlzc2FuY2UgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJEYXRlRGVOYWlzc2FuY2VcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChkYXRlX3RvX2pzb28gYXJnKSlcbiAgICBlbmRcbiAgfCBBdmFudFByZW1pZXJKb3VyTW9pc0NpdmlsVHJvaXNpZW1lTW9pc0RlR3Jvc3Nlc3NlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQXZhbnRQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzaWVtZU1vaXNEZUdyb3NzZXNzZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEFwcmVzUHJlbWllckpvdXJNb2lzQ2l2aWxUcm9pc2llbWVNb2lzRGVHcm9zc2Vzc2UgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBcHJlc1ByZW1pZXJKb3VyTW9pc0NpdmlsVHJvaXNpZW1lTW9pc0RlR3Jvc3Nlc3NlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBkYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2dyb3NzZXNzZV9vZl9qc29vXG4gIChkYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2dyb3NzZXNzZVxuICAgIDogZGF0ZV9kZV9uYWlzc2FuY2Vfb3VfbW9pc19kZV9ncm9zc2Vzc2UgSnMudClcbiAgOiBEYXRlRGVOYWlzc2FuY2VPdU1vaXNEZUdyb3NzZXNzZS50ID1cbiAgbWF0Y2ggZGF0ZV9kZV9uYWlzc2FuY2Vfb3VfbW9pc19kZV9ncm9zc2Vzc2UjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJEYXRlRGVOYWlzc2FuY2VcIiAtPlxuICBEYXRlRGVOYWlzc2FuY2VPdU1vaXNEZUdyb3NzZXNzZS5EYXRlRGVOYWlzc2FuY2UgKGRhdGVfb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBkYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2dyb3NzZXNzZSMjLnBheWxvYWQpKVxuICB8IFwiQXZhbnRQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzaWVtZU1vaXNEZUdyb3NzZXNzZVwiIC0+XG4gICAgRGF0ZURlTmFpc3NhbmNlT3VNb2lzRGVHcm9zc2Vzc2UuQXZhbnRQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzaWVtZU1vaXNEZUdyb3NzZXNzZSAoKVxuICB8IFwiQXByZXNQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzaWVtZU1vaXNEZUdyb3NzZXNzZVwiIC0+XG4gICAgRGF0ZURlTmFpc3NhbmNlT3VNb2lzRGVHcm9zc2Vzc2UuQXByZXNQcmVtaWVySm91ck1vaXNDaXZpbFRyb2lzaWVtZU1vaXNEZUdyb3NzZXNzZSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnRGF0ZURlTmFpc3NhbmNlT3VNb2lzRGVHcm9zc2Vzc2UudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgem9uZV9kX2hhYml0YXRpb24gPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJab25lMVwiXG4gICAgICAgIC0gXCJab25lMlwiXG4gICAgICAgIC0gXCJab25lM1wiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHpvbmVfZF9oYWJpdGF0aW9uX3RvX2pzb28gOiBab25lREhhYml0YXRpb24udCAtPiB6b25lX2RfaGFiaXRhdGlvbiBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBab25lMSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlpvbmUxXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgWm9uZTIgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJab25lMlwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFpvbmUzIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiWm9uZTNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHpvbmVfZF9oYWJpdGF0aW9uX29mX2pzb28gKHpvbmVfZF9oYWJpdGF0aW9uIDogem9uZV9kX2hhYml0YXRpb24gSnMudClcbiAgOiBab25lREhhYml0YXRpb24udCA9XG4gIG1hdGNoIHpvbmVfZF9oYWJpdGF0aW9uIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiWm9uZTFcIiAtPiBab25lREhhYml0YXRpb24uWm9uZTEgKClcbiAgfCBcIlpvbmUyXCIgLT4gWm9uZURIYWJpdGF0aW9uLlpvbmUyICgpXG4gIHwgXCJab25lM1wiIC0+IFpvbmVESGFiaXRhdGlvbi5ab25lMyAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnWm9uZURIYWJpdGF0aW9uLnQnXCIgY29ucylcblxuXG5jbGFzcyB0eXBlIHZlcnNlbWVudF9hID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiQmFpbGxldXJcIlxuICAgICAgICAtIFwiQmVuZWZpY2lhaXJlXCJcbiAgICAgICAgLSBcIkV0YWJsaXNzZW1lbnRIYWJpbGl0ZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHZlcnNlbWVudF9hX3RvX2pzb28gOiBWZXJzZW1lbnRBLnQgLT4gdmVyc2VtZW50X2EgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgQmFpbGxldXIgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJCYWlsbGV1clwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEJlbmVmaWNpYWlyZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkJlbmVmaWNpYWlyZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEV0YWJsaXNzZW1lbnRIYWJpbGl0ZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkV0YWJsaXNzZW1lbnRIYWJpbGl0ZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgdmVyc2VtZW50X2Ffb2ZfanNvbyAodmVyc2VtZW50X2EgOiB2ZXJzZW1lbnRfYSBKcy50KSA6IFZlcnNlbWVudEEudCA9XG4gIG1hdGNoIHZlcnNlbWVudF9hIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiQmFpbGxldXJcIiAtPiBWZXJzZW1lbnRBLkJhaWxsZXVyICgpXG4gIHwgXCJCZW5lZmljaWFpcmVcIiAtPiBWZXJzZW1lbnRBLkJlbmVmaWNpYWlyZSAoKVxuICB8IFwiRXRhYmxpc3NlbWVudEhhYmlsaXRlXCIgLT4gVmVyc2VtZW50QS5FdGFibGlzc2VtZW50SGFiaWxpdGUgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1ZlcnNlbWVudEEudCdcIiBjb25zKVxuXG5cbmNsYXNzIHR5cGUgZGVwZW5zZV9sb2dlbWVudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIlRvdGFsQW5udWVsRWNoZWFuY2VzXCJcbiAgICAgICAgLSBcIk1lbnN1YWxpdGVcIlxuICAgICAgICAtIFwiTG95ZXJcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBkZXBlbnNlX2xvZ2VtZW50X3RvX2pzb28gOiBEZXBlbnNlTG9nZW1lbnQudCAtPiBkZXBlbnNlX2xvZ2VtZW50IEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IFRvdGFsQW5udWVsRWNoZWFuY2VzIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiVG90YWxBbm51ZWxFY2hlYW5jZXNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgYXJnKSlcbiAgICBlbmRcbiAgfCBNZW5zdWFsaXRlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTWVuc3VhbGl0ZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBhcmcpKVxuICAgIGVuZFxuICB8IExveWVyIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTG95ZXJcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgYXJnKSlcbiAgICBlbmRcblxubGV0IGRlcGVuc2VfbG9nZW1lbnRfb2ZfanNvbyAoZGVwZW5zZV9sb2dlbWVudCA6IGRlcGVuc2VfbG9nZW1lbnQgSnMudClcbiAgOiBEZXBlbnNlTG9nZW1lbnQudCA9XG4gIG1hdGNoIGRlcGVuc2VfbG9nZW1lbnQjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJUb3RhbEFubnVlbEVjaGVhbmNlc1wiIC0+XG4gIERlcGVuc2VMb2dlbWVudC5Ub3RhbEFubnVlbEVjaGVhbmNlcyAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciAoSnMuVW5zYWZlLmNvZXJjZSBkZXBlbnNlX2xvZ2VtZW50IyMucGF5bG9hZCkpXG4gIHwgXCJNZW5zdWFsaXRlXCIgLT5cbiAgRGVwZW5zZUxvZ2VtZW50Lk1lbnN1YWxpdGUgKG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgKEpzLlVuc2FmZS5jb2VyY2UgZGVwZW5zZV9sb2dlbWVudCMjLnBheWxvYWQpKVxuICB8IFwiTG95ZXJcIiAtPlxuICBEZXBlbnNlTG9nZW1lbnQuTG95ZXIgKG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgKEpzLlVuc2FmZS5jb2VyY2UgZGVwZW5zZV9sb2dlbWVudCMjLnBheWxvYWQpKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnRGVwZW5zZUxvZ2VtZW50LnQnXCIgY29ucylcblxuXG5jbGFzcyB0eXBlIG1vZGVfb2NjdXBhdGlvbl9pbXBheWUgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJJbXBheWVMb3llclwiXG4gICAgICAgIC0gXCJJbXBheWVQcmV0XCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV90b19qc29vXG4gIDogTW9kZU9jY3VwYXRpb25JbXBheWUudCAtPiBtb2RlX29jY3VwYXRpb25faW1wYXllIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IEltcGF5ZUxveWVyIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiSW1wYXllTG95ZXJcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBJbXBheWVQcmV0IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiSW1wYXllUHJldFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV9vZl9qc29vXG4gIChtb2RlX29jY3VwYXRpb25faW1wYXllIDogbW9kZV9vY2N1cGF0aW9uX2ltcGF5ZSBKcy50KVxuICA6IE1vZGVPY2N1cGF0aW9uSW1wYXllLnQgPVxuICBtYXRjaCBtb2RlX29jY3VwYXRpb25faW1wYXllIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiSW1wYXllTG95ZXJcIiAtPiBNb2RlT2NjdXBhdGlvbkltcGF5ZS5JbXBheWVMb3llciAoKVxuICB8IFwiSW1wYXllUHJldFwiIC0+IE1vZGVPY2N1cGF0aW9uSW1wYXllLkltcGF5ZVByZXQgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ01vZGVPY2N1cGF0aW9uSW1wYXllLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIHR5cGVfZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIlBhc0VsaWdpYmxlXCJcbiAgICAgICAgLSBcIkFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZVwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgdHlwZV9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X3RvX2pzb29cbiAgOiBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQudCAtPiB0eXBlX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgUGFzRWxpZ2libGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJQYXNFbGlnaWJsZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCB0eXBlX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfb2ZfanNvb1xuICAodHlwZV9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50XG4gICAgOiB0eXBlX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQgSnMudClcbiAgOiBUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQudCA9XG4gIG1hdGNoIHR5cGVfZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudCMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIlBhc0VsaWdpYmxlXCIgLT4gVHlwZUVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LlBhc0VsaWdpYmxlICgpXG4gIHwgXCJBbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGVcIiAtPlxuICAgIFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGUgKClcbiAgfCBcIkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGVcIiAtPlxuICAgIFR5cGVFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdUeXBlRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgYWNjb3JkX2ZpbmFuY2VtZW50X3JlcHJlc2VudGFudF9ldGF0X291dHJlX21lciA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkFjY29yZFwiXG4gICAgICAgIC0gXCJQYXNkQWNjb3JkXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgYWNjb3JkX2ZpbmFuY2VtZW50X3JlcHJlc2VudGFudF9ldGF0X291dHJlX21lcl90b19qc29vXG4gIDogQWNjb3JkRmluYW5jZW1lbnRSZXByZXNlbnRhbnRFdGF0T3V0cmVNZXIudCAtPiBhY2NvcmRfZmluYW5jZW1lbnRfcmVwcmVzZW50YW50X2V0YXRfb3V0cmVfbWVyIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IEFjY29yZCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFjY29yZFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKGRhdGVfdG9fanNvbyBhcmcpKVxuICAgIGVuZFxuICB8IFBhc2RBY2NvcmQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJQYXNkQWNjb3JkXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBhY2NvcmRfZmluYW5jZW1lbnRfcmVwcmVzZW50YW50X2V0YXRfb3V0cmVfbWVyX29mX2pzb29cbiAgKGFjY29yZF9maW5hbmNlbWVudF9yZXByZXNlbnRhbnRfZXRhdF9vdXRyZV9tZXJcbiAgICA6IGFjY29yZF9maW5hbmNlbWVudF9yZXByZXNlbnRhbnRfZXRhdF9vdXRyZV9tZXIgSnMudClcbiAgOiBBY2NvcmRGaW5hbmNlbWVudFJlcHJlc2VudGFudEV0YXRPdXRyZU1lci50ID1cbiAgbWF0Y2ggYWNjb3JkX2ZpbmFuY2VtZW50X3JlcHJlc2VudGFudF9ldGF0X291dHJlX21lciMjLmtpbmQgfD4gSnMudG9fc3RyaW5nXG4gICAgd2l0aFxuICB8IFwiQWNjb3JkXCIgLT5cbiAgQWNjb3JkRmluYW5jZW1lbnRSZXByZXNlbnRhbnRFdGF0T3V0cmVNZXIuQWNjb3JkIChkYXRlX29mX2pzb28gKEpzLlVuc2FmZS5jb2VyY2UgYWNjb3JkX2ZpbmFuY2VtZW50X3JlcHJlc2VudGFudF9ldGF0X291dHJlX21lciMjLnBheWxvYWQpKVxuICB8IFwiUGFzZEFjY29yZFwiIC0+IEFjY29yZEZpbmFuY2VtZW50UmVwcmVzZW50YW50RXRhdE91dHJlTWVyLlBhc2RBY2NvcmQgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ0FjY29yZEZpbmFuY2VtZW50UmVwcmVzZW50YW50RXRhdE91dHJlTWVyLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50XCJcbiAgICAgICAgLSBcIkFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZVwiXG4gICAgICAgIC0gXCJBbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF90b19qc29vXG4gIDogVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50IC0+IHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbGxvY2F0aW9uTG9nZW1lbnRTb2NpYWxlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vZl9qc29vXG4gICh0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IDogdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCBKcy50KVxuICA6IFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9XG4gIG1hdGNoIHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50XCIgLT5cbiAgICBUeXBlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LkFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQgKClcbiAgfCBcIkFsbG9jYXRpb25Mb2dlbWVudEZhbWlsaWFsZVwiIC0+XG4gICAgVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC5BbGxvY2F0aW9uTG9nZW1lbnRGYW1pbGlhbGUgKClcbiAgfCBcIkFsbG9jYXRpb25Mb2dlbWVudFNvY2lhbGVcIiAtPlxuICAgIFR5cGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQuQWxsb2NhdGlvbkxvZ2VtZW50U29jaWFsZSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnVHlwZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudC50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBzaXR1YXRpb25fZmFtaWxpYWxlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiQ2VsaWJhdGFpcmVcIlxuICAgICAgICAtIFwiTWFyaWVzXCJcbiAgICAgICAgLSBcIlBhY3Nlc1wiXG4gICAgICAgIC0gXCJDb25jdWJpbnNcIlxuICAgICAgICAtIFwiQ2VsaWJhdGFpcmVTZXBhcmVEZUZhaXRcIlxuICAgICAgICAtIFwiQ29uY3ViaW5hZ2VEb250U2VwYXJlRGVGYWl0XCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgc2l0dWF0aW9uX2ZhbWlsaWFsZV90b19qc29vXG4gIDogU2l0dWF0aW9uRmFtaWxpYWxlLnQgLT4gc2l0dWF0aW9uX2ZhbWlsaWFsZSBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBDZWxpYmF0YWlyZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkNlbGliYXRhaXJlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgTWFyaWVzIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTWFyaWVzXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoZGF0ZV90b19qc29vIGFyZykpXG4gICAgZW5kXG4gIHwgUGFjc2VzIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUGFjc2VzXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQ29uY3ViaW5zIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQ29uY3ViaW5zXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQ2VsaWJhdGFpcmVTZXBhcmVEZUZhaXQgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJDZWxpYmF0YWlyZVNlcGFyZURlRmFpdFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IENvbmN1YmluYWdlRG9udFNlcGFyZURlRmFpdCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkNvbmN1YmluYWdlRG9udFNlcGFyZURlRmFpdFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuXG5sZXQgc2l0dWF0aW9uX2ZhbWlsaWFsZV9vZl9qc29vXG4gIChzaXR1YXRpb25fZmFtaWxpYWxlIDogc2l0dWF0aW9uX2ZhbWlsaWFsZSBKcy50KSA6IFNpdHVhdGlvbkZhbWlsaWFsZS50ID1cbiAgbWF0Y2ggc2l0dWF0aW9uX2ZhbWlsaWFsZSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkNlbGliYXRhaXJlXCIgLT4gU2l0dWF0aW9uRmFtaWxpYWxlLkNlbGliYXRhaXJlICgpXG4gIHwgXCJNYXJpZXNcIiAtPlxuICBTaXR1YXRpb25GYW1pbGlhbGUuTWFyaWVzIChkYXRlX29mX2pzb28gKEpzLlVuc2FmZS5jb2VyY2Ugc2l0dWF0aW9uX2ZhbWlsaWFsZSMjLnBheWxvYWQpKVxuICB8IFwiUGFjc2VzXCIgLT4gU2l0dWF0aW9uRmFtaWxpYWxlLlBhY3NlcyAoKVxuICB8IFwiQ29uY3ViaW5zXCIgLT4gU2l0dWF0aW9uRmFtaWxpYWxlLkNvbmN1YmlucyAoKVxuICB8IFwiQ2VsaWJhdGFpcmVTZXBhcmVEZUZhaXRcIiAtPlxuICAgIFNpdHVhdGlvbkZhbWlsaWFsZS5DZWxpYmF0YWlyZVNlcGFyZURlRmFpdCAoKVxuICB8IFwiQ29uY3ViaW5hZ2VEb250U2VwYXJlRGVGYWl0XCIgLT5cbiAgICBTaXR1YXRpb25GYW1pbGlhbGUuQ29uY3ViaW5hZ2VEb250U2VwYXJlRGVGYWl0ICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdTaXR1YXRpb25GYW1pbGlhbGUudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgdHlwZV9sb2dlbWVudF9mb3llciA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkxvZ2VtZW50UGVyc29ubmVzQWdlZXNPdUhhbmRpY2FwZWVzXCJcbiAgICAgICAgLSBcIlJlc2lkZW5jZVNvY2lhbGVcIlxuICAgICAgICAtIFwiRm95ZXJKZXVuZXNUcmF2YWlsbGV1cnNPdU1pZ3JhbnRzQ29udmVudGlvbm5lTDM1M18yQXZhbnQxOTk1XCJcbiAgICAgICAgLSBcIkF1dHJlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgdHlwZV9sb2dlbWVudF9mb3llcl90b19qc29vXG4gIDogVHlwZUxvZ2VtZW50Rm95ZXIudCAtPiB0eXBlX2xvZ2VtZW50X2ZveWVyIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IExvZ2VtZW50UGVyc29ubmVzQWdlZXNPdUhhbmRpY2FwZWVzIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTG9nZW1lbnRQZXJzb25uZXNBZ2Vlc091SGFuZGljYXBlZXNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBSZXNpZGVuY2VTb2NpYWxlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUmVzaWRlbmNlU29jaWFsZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEZveWVySmV1bmVzVHJhdmFpbGxldXJzT3VNaWdyYW50c0NvbnZlbnRpb25uZUwzNTNfMkF2YW50MTk5NSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkZveWVySmV1bmVzVHJhdmFpbGxldXJzT3VNaWdyYW50c0NvbnZlbnRpb25uZUwzNTNfMkF2YW50MTk5NVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEF1dHJlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQXV0cmVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IHR5cGVfbG9nZW1lbnRfZm95ZXJfb2ZfanNvb1xuICAodHlwZV9sb2dlbWVudF9mb3llciA6IHR5cGVfbG9nZW1lbnRfZm95ZXIgSnMudCkgOiBUeXBlTG9nZW1lbnRGb3llci50ID1cbiAgbWF0Y2ggdHlwZV9sb2dlbWVudF9mb3llciMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkxvZ2VtZW50UGVyc29ubmVzQWdlZXNPdUhhbmRpY2FwZWVzXCIgLT5cbiAgICBUeXBlTG9nZW1lbnRGb3llci5Mb2dlbWVudFBlcnNvbm5lc0FnZWVzT3VIYW5kaWNhcGVlcyAoKVxuICB8IFwiUmVzaWRlbmNlU29jaWFsZVwiIC0+IFR5cGVMb2dlbWVudEZveWVyLlJlc2lkZW5jZVNvY2lhbGUgKClcbiAgfCBcIkZveWVySmV1bmVzVHJhdmFpbGxldXJzT3VNaWdyYW50c0NvbnZlbnRpb25uZUwzNTNfMkF2YW50MTk5NVwiIC0+XG4gICAgVHlwZUxvZ2VtZW50Rm95ZXIuRm95ZXJKZXVuZXNUcmF2YWlsbGV1cnNPdU1pZ3JhbnRzQ29udmVudGlvbm5lTDM1M18yQXZhbnQxOTk1ICgpXG4gIHwgXCJBdXRyZVwiIC0+IFR5cGVMb2dlbWVudEZveWVyLkF1dHJlICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdUeXBlTG9nZW1lbnRGb3llci50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llciA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTXCJcbiAgICAgICAgLSBcIkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTUmVoYWJpbGl0ZWVcIlxuICAgICAgICAtIFwiUGVyc29ubmVzQWdlZXNTZWxvbjNEZUQ4NDJfMTZcIlxuICAgICAgICAtIFwiQXV0cmVzUGVyc29ubmVzXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfdG9fanNvb1xuICA6IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50IC0+IGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IEV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBFdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VU1JlaGFiaWxpdGVlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVNSZWhhYmlsaXRlZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFBlcnNvbm5lc0FnZWVzU2Vsb24zRGVEODQyXzE2IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUGVyc29ubmVzQWdlZXNTZWxvbjNEZUQ4NDJfMTZcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBdXRyZXNQZXJzb25uZXMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBdXRyZXNQZXJzb25uZXNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcblxubGV0IGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX29mX2pzb29cbiAgKGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyXG4gICAgOiBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llciBKcy50KVxuICA6IENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50ID1cbiAgbWF0Y2ggY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIjIy5raW5kXG4gICAgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTXCIgLT5cbiAgICBDYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIuRXR1ZGlhbnRMb2dlRW5DaGFtYnJlQ1JPVVMgKClcbiAgfCBcIkV0dWRpYW50TG9nZUVuQ2hhbWJyZUNST1VTUmVoYWJpbGl0ZWVcIiAtPlxuICAgIENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5FdHVkaWFudExvZ2VFbkNoYW1icmVDUk9VU1JlaGFiaWxpdGVlICgpXG4gIHwgXCJQZXJzb25uZXNBZ2Vlc1NlbG9uM0RlRDg0Ml8xNlwiIC0+XG4gICAgQ2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckFsbG9jYXRpb25Mb2dlbWVudEZveWVyLlBlcnNvbm5lc0FnZWVzU2Vsb24zRGVEODQyXzE2ICgpXG4gIHwgXCJBdXRyZXNQZXJzb25uZXNcIiAtPlxuICAgIENhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci5BdXRyZXNQZXJzb25uZXMgKClcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ0NhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJBbGxvY2F0aW9uTG9nZW1lbnRGb3llci50J1wiXG4gICAgICAgIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIlBlcnNvbm5lU2V1bGVcIlxuICAgICAgICAtIFwiQ291cGxlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfdG9fanNvb1xuICA6IFNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFQTC50IC0+IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IFBlcnNvbm5lU2V1bGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJQZXJzb25uZVNldWxlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgQ291cGxlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQ291cGxlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbF9vZl9qc29vXG4gIChzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbCA6IHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIEpzLnQpXG4gIDogU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQgPVxuICBtYXRjaCBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbCMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIlBlcnNvbm5lU2V1bGVcIiAtPiBTaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBUEwuUGVyc29ubmVTZXVsZSAoKVxuICB8IFwiQ291cGxlXCIgLT4gU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLkNvdXBsZSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnU2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQVBMLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIGNvbGxlY3Rpdml0ZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkd1YWRlbG91cGVcIlxuICAgICAgICAtIFwiR3V5YW5lXCJcbiAgICAgICAgLSBcIk1hcnRpbmlxdWVcIlxuICAgICAgICAtIFwiTGFSZXVuaW9uXCJcbiAgICAgICAgLSBcIlNhaW50QmFydGhlbGVteVwiXG4gICAgICAgIC0gXCJTYWludE1hcnRpblwiXG4gICAgICAgIC0gXCJNZXRyb3BvbGVcIlxuICAgICAgICAtIFwiU2FpbnRQaWVycmVFdE1pcXVlbG9uXCJcbiAgICAgICAgLSBcIk1heW90dGVcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBjb2xsZWN0aXZpdGVfdG9fanNvbyA6IENvbGxlY3Rpdml0ZS50IC0+IGNvbGxlY3Rpdml0ZSBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBHdWFkZWxvdXBlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiR3VhZGVsb3VwZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IEd1eWFuZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkd1eWFuZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IE1hcnRpbmlxdWUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJNYXJ0aW5pcXVlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgTGFSZXVuaW9uIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTGFSZXVuaW9uXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgU2FpbnRCYXJ0aGVsZW15IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiU2FpbnRCYXJ0aGVsZW15XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgU2FpbnRNYXJ0aW4gYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJTYWludE1hcnRpblwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IE1ldHJvcG9sZSBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk1ldHJvcG9sZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IFNhaW50UGllcnJlRXRNaXF1ZWxvbiBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlNhaW50UGllcnJlRXRNaXF1ZWxvblwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKCBhcmcpKVxuICAgIGVuZFxuICB8IE1heW90dGUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJNYXlvdHRlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBjb2xsZWN0aXZpdGVfb2ZfanNvbyAoY29sbGVjdGl2aXRlIDogY29sbGVjdGl2aXRlIEpzLnQpXG4gIDogQ29sbGVjdGl2aXRlLnQgPVxuICBtYXRjaCBjb2xsZWN0aXZpdGUjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJHdWFkZWxvdXBlXCIgLT4gQ29sbGVjdGl2aXRlLkd1YWRlbG91cGUgKClcbiAgfCBcIkd1eWFuZVwiIC0+IENvbGxlY3Rpdml0ZS5HdXlhbmUgKClcbiAgfCBcIk1hcnRpbmlxdWVcIiAtPiBDb2xsZWN0aXZpdGUuTWFydGluaXF1ZSAoKVxuICB8IFwiTGFSZXVuaW9uXCIgLT4gQ29sbGVjdGl2aXRlLkxhUmV1bmlvbiAoKVxuICB8IFwiU2FpbnRCYXJ0aGVsZW15XCIgLT4gQ29sbGVjdGl2aXRlLlNhaW50QmFydGhlbGVteSAoKVxuICB8IFwiU2FpbnRNYXJ0aW5cIiAtPiBDb2xsZWN0aXZpdGUuU2FpbnRNYXJ0aW4gKClcbiAgfCBcIk1ldHJvcG9sZVwiIC0+IENvbGxlY3Rpdml0ZS5NZXRyb3BvbGUgKClcbiAgfCBcIlNhaW50UGllcnJlRXRNaXF1ZWxvblwiIC0+IENvbGxlY3Rpdml0ZS5TYWludFBpZXJyZUV0TWlxdWVsb24gKClcbiAgfCBcIk1heW90dGVcIiAtPiBDb2xsZWN0aXZpdGUuTWF5b3R0ZSAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnQ29sbGVjdGl2aXRlLnQnXCIgY29ucylcblxuXG5jbGFzcyB0eXBlIHNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiQXZhbnRcIlxuICAgICAgICAtIFwiUGVuZGFudFwiXG4gICAgICAgIC0gXCJBcHJlc1wiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlX3RvX2pzb29cbiAgOiBTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUudCAtPiBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZSBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBBdmFudCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkF2YW50XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgUGVuZGFudCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIlBlbmRhbnRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBcHJlcyBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkFwcmVzXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZV9vZl9qc29vXG4gIChzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZSA6IHNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlIEpzLnQpXG4gIDogU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLnQgPVxuICBtYXRjaCBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkF2YW50XCIgLT4gU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkF2YW50ICgpXG4gIHwgXCJQZW5kYW50XCIgLT4gU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLlBlbmRhbnQgKClcbiAgfCBcIkFwcmVzXCIgLT4gU2l0dWF0aW9uT2JsaWdhdGlvblNjb2xhaXJlLkFwcmVzICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdTaXR1YXRpb25PYmxpZ2F0aW9uU2NvbGFpcmUudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgY29udmVudGlvbl9iYWlsbGV1cl9zb2NpYWwgPVxuICBvYmplY3RcbiAgICBtZXRob2QgY29udmVudGlvbm5lTGl2cmVJSUlUaXRyZVZDaGFwSUlJOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZWR1Y3Rpb25Mb3llclNvbGlkYXJpdGVQZXJjdWU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBjb252ZW50aW9uX2JhaWxsZXVyX3NvY2lhbF90b19qc29vIChjb252ZW50aW9uX2JhaWxsZXVyX3NvY2lhbFxuICAgIDogQ29udmVudGlvbkJhaWxsZXVyU29jaWFsLnQpIDogY29udmVudGlvbl9iYWlsbGV1cl9zb2NpYWwgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgY29udmVudGlvbm5lTGl2cmVJSUlUaXRyZVZDaGFwSUlJID1cbiAgICAgICAgSnMuYm9vbCBjb252ZW50aW9uX2JhaWxsZXVyX3NvY2lhbC5jb252ZW50aW9ubmVfbGl2cmVfSUlJX3RpdHJlX1ZfY2hhcF9JSUlcbiAgICAgIHZhbCByZWR1Y3Rpb25Mb3llclNvbGlkYXJpdGVQZXJjdWUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY29udmVudGlvbl9iYWlsbGV1cl9zb2NpYWwucmVkdWN0aW9uX2xveWVyX3NvbGlkYXJpdGVfcGVyY3VlXG4gICAgICBlbmRcbiAgbGV0IGNvbnZlbnRpb25fYmFpbGxldXJfc29jaWFsX29mX2pzb29cbiAgICAoY29udmVudGlvbl9iYWlsbGV1cl9zb2NpYWwgOiBjb252ZW50aW9uX2JhaWxsZXVyX3NvY2lhbCBKcy50KSA6XG4gICAgQ29udmVudGlvbkJhaWxsZXVyU29jaWFsLnQgPVxuICAgIHtcbiAgICAgIGNvbnZlbnRpb25uZV9saXZyZV9JSUlfdGl0cmVfVl9jaGFwX0lJSSA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBjb252ZW50aW9uX2JhaWxsZXVyX3NvY2lhbCMjLmNvbnZlbnRpb25uZUxpdnJlSUlJVGl0cmVWQ2hhcElJSTtcbiAgICAgIHJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX3BlcmN1ZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjb252ZW50aW9uX2JhaWxsZXVyX3NvY2lhbCMjLnJlZHVjdGlvbkxveWVyU29saWRhcml0ZVBlcmN1ZVxuICAgIH1cblxuY2xhc3MgdHlwZSBjb252ZW50aW9uX2Ffbl9oX2EgPVxuICBvYmplY3RcbiAgICBtZXRob2QgY29udmVudGlvbm5lTGl2cmVJSUlUaXRyZUlJQ2hhcElTZWMzOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNvbnZlbnRpb25fYV9uX2hfYV90b19qc29vIChjb252ZW50aW9uX2Ffbl9oX2EgOiBDb252ZW50aW9uQU5IQS50KVxuICAgIDogY29udmVudGlvbl9hX25faF9hIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGNvbnZlbnRpb25uZUxpdnJlSUlJVGl0cmVJSUNoYXBJU2VjMyA9XG4gICAgICAgIEpzLmJvb2wgY29udmVudGlvbl9hX25faF9hLmNvbnZlbnRpb25uZV9saXZyZV9JSUlfdGl0cmVfSUlfY2hhcF9JX3NlY18zXG4gICAgICBlbmRcbiAgbGV0IGNvbnZlbnRpb25fYV9uX2hfYV9vZl9qc29vXG4gICAgKGNvbnZlbnRpb25fYV9uX2hfYSA6IGNvbnZlbnRpb25fYV9uX2hfYSBKcy50KSA6IENvbnZlbnRpb25BTkhBLnQgPVxuICAgIHtcbiAgICAgIGNvbnZlbnRpb25uZV9saXZyZV9JSUlfdGl0cmVfSUlfY2hhcF9JX3NlY18zID1cbiAgICAgICAgSnMudG9fYm9vbCBjb252ZW50aW9uX2Ffbl9oX2EjIy5jb252ZW50aW9ubmVMaXZyZUlJSVRpdHJlSUlDaGFwSVNlYzNcbiAgICB9XG5cbmNsYXNzIHR5cGUgcGVyc29ubmVfc291c19sb2NhdGlvbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBkYXRlTmFpc3NhbmNlUGVyc29ubmVTb3VzTG9jYXRpb246XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvbmZvcm1lQXJ0aWNsZUw0NDIxOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHBlcnNvbm5lX3NvdXNfbG9jYXRpb25fdG9fanNvbyAocGVyc29ubmVfc291c19sb2NhdGlvblxuICAgIDogUGVyc29ubmVTb3VzTG9jYXRpb24udCkgOiBwZXJzb25uZV9zb3VzX2xvY2F0aW9uIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGRhdGVOYWlzc2FuY2VQZXJzb25uZVNvdXNMb2NhdGlvbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBwZXJzb25uZV9zb3VzX2xvY2F0aW9uLmRhdGVfbmFpc3NhbmNlX3BlcnNvbm5lX3NvdXNfbG9jYXRpb25cbiAgICAgIHZhbCBjb25mb3JtZUFydGljbGVMNDQyMSA9XG4gICAgICAgIEpzLmJvb2wgcGVyc29ubmVfc291c19sb2NhdGlvbi5jb25mb3JtZV9hcnRpY2xlX2w0NDJfMVxuICAgICAgZW5kXG4gIGxldCBwZXJzb25uZV9zb3VzX2xvY2F0aW9uX29mX2pzb29cbiAgICAocGVyc29ubmVfc291c19sb2NhdGlvbiA6IHBlcnNvbm5lX3NvdXNfbG9jYXRpb24gSnMudCkgOlxuICAgIFBlcnNvbm5lU291c0xvY2F0aW9uLnQgPVxuICAgIHtcbiAgICAgIGRhdGVfbmFpc3NhbmNlX3BlcnNvbm5lX3NvdXNfbG9jYXRpb24gPVxuICAgICAgICBkYXRlX29mX2pzb29cbiAgICAgICAgICBwZXJzb25uZV9zb3VzX2xvY2F0aW9uIyMuZGF0ZU5haXNzYW5jZVBlcnNvbm5lU291c0xvY2F0aW9uO1xuICAgICAgY29uZm9ybWVfYXJ0aWNsZV9sNDQyXzEgPVxuICAgICAgICBKcy50b19ib29sIHBlcnNvbm5lX3NvdXNfbG9jYXRpb24jIy5jb25mb3JtZUFydGljbGVMNDQyMVxuICAgIH1cblxuY2xhc3MgdHlwZSBjb25kaXRpb25zX2V0cmFuZ2VycyA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBzYXRpc2ZhaXRDb25kaXRpb25zTDUxMjJDb2RlU2VjdXJpdGVTb2NpYWxlOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgc2F0aXNmYWl0QXJ0NE9yZG9ubmFuY2UyMDAyTWF5b3R0ZTogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBjb25kaXRpb25zX2V0cmFuZ2Vyc190b19qc29vIChjb25kaXRpb25zX2V0cmFuZ2Vyc1xuICAgIDogQ29uZGl0aW9uc0V0cmFuZ2Vycy50KSA6IGNvbmRpdGlvbnNfZXRyYW5nZXJzIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIHNhdGlzZmFpdENvbmRpdGlvbnNMNTEyMkNvZGVTZWN1cml0ZVNvY2lhbGUgPVxuICAgICAgICBKcy5ib29sIGNvbmRpdGlvbnNfZXRyYW5nZXJzLnNhdGlzZmFpdF9jb25kaXRpb25zX2w1MTJfMl9jb2RlX3NlY3VyaXRlX3NvY2lhbGVcbiAgICAgIHZhbCBzYXRpc2ZhaXRBcnQ0T3Jkb25uYW5jZTIwMDJNYXlvdHRlID1cbiAgICAgICAgSnMuYm9vbCBjb25kaXRpb25zX2V0cmFuZ2Vycy5zYXRpc2ZhaXRfYXJ0XzRfb3Jkb25uYW5jZV8yMDAyX21heW90dGVcbiAgICAgIGVuZFxuICBsZXQgY29uZGl0aW9uc19ldHJhbmdlcnNfb2ZfanNvb1xuICAgIChjb25kaXRpb25zX2V0cmFuZ2VycyA6IGNvbmRpdGlvbnNfZXRyYW5nZXJzIEpzLnQpIDpcbiAgICBDb25kaXRpb25zRXRyYW5nZXJzLnQgPVxuICAgIHtcbiAgICAgIHNhdGlzZmFpdF9jb25kaXRpb25zX2w1MTJfMl9jb2RlX3NlY3VyaXRlX3NvY2lhbGUgPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY29uZGl0aW9uc19ldHJhbmdlcnMjIy5zYXRpc2ZhaXRDb25kaXRpb25zTDUxMjJDb2RlU2VjdXJpdGVTb2NpYWxlO1xuICAgICAgc2F0aXNmYWl0X2FydF80X29yZG9ubmFuY2VfMjAwMl9tYXlvdHRlID1cbiAgICAgICAgSnMudG9fYm9vbCBjb25kaXRpb25zX2V0cmFuZ2VycyMjLnNhdGlzZmFpdEFydDRPcmRvbm5hbmNlMjAwMk1heW90dGVcbiAgICB9XG5cbmNsYXNzIHR5cGUgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZTogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBlbGlnaWJpbGl0ZTogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgbm9tYnJlUGVyc29ubmVzQUNoYXJnZVByaXNlc0VuQ29tcHRlOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb2VmZmljZW50c0VuZmFudHNHYXJkZUFsdGVybmVlUHJpc0VuQ29tcHRlOlxuICAgICAgSnMubnVtYmVyIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X3RvX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50XG4gICAgOiBFbGlnaWJpbGl0ZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQudClcbiAgICA6IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBkYXRlQ291cmFudGUgPVxuICAgICAgICBkYXRlX3RvX2pzb28gZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50LmRhdGVfY291cmFudGVcbiAgICAgIHZhbCBlbGlnaWJpbGl0ZSA9XG4gICAgICAgIEpzLmJvb2wgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50LmVsaWdpYmlsaXRlXG4gICAgICB2YWwgbm9tYnJlUGVyc29ubmVzQUNoYXJnZVByaXNlc0VuQ29tcHRlID1cbiAgICAgICAgaW50ZWdlcl90b19pbnQgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50Lm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZVxuICAgICAgdmFsIGNvZWZmaWNlbnRzRW5mYW50c0dhcmRlQWx0ZXJuZWVQcmlzRW5Db21wdGUgPVxuICAgICAgICBKcy5hcnJheSBAQCBBcnJheS5tYXAgKGZ1biB4IC0+IEpzLm51bWJlcl9vZl9mbG9hdCBAQCBkZWNpbWFsX3RvX2Zsb2F0IHgpIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXG4gICAgICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9vZl9qc29vXG4gICAgKGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudFxuICAgICAgOiBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQgSnMudCkgOlxuICAgIEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudC50ID1cbiAgICB7XG4gICAgICBkYXRlX2NvdXJhbnRlID1cbiAgICAgICAgZGF0ZV9vZl9qc29vIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudCMjLmRhdGVDb3VyYW50ZTtcbiAgICAgIGVsaWdpYmlsaXRlID1cbiAgICAgICAgSnMudG9fYm9vbCBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQjIy5lbGlnaWJpbGl0ZTtcbiAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZSA9XG4gICAgICAgIGludGVnZXJfb2ZfaW50XG4gICAgICAgICAgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50XG4gICAgICAgICAgIyMubm9tYnJlUGVyc29ubmVzQUNoYXJnZVByaXNlc0VuQ29tcHRlO1xuICAgICAgY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZSA9XG4gICAgICAgIEFycmF5Lm1hcCAoZnVuIHggLT4gZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgeCkgQEAgSnMudG9fYXJyYXlcbiAgICAgICAgICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRcbiAgICAgICAgICAjIy5jb2VmZmljZW50c0VuZmFudHNHYXJkZUFsdGVybmVlUHJpc0VuQ29tcHRlXG4gICAgfVxuXG5jbGFzcyB0eXBlIGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBlbGlnaWJpbGl0ZTogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbW9udGFudFByaW1lRGVtZW5hZ2VtZW50OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X3RvX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50IDogRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50LnQpXG4gICAgOiBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZWxpZ2liaWxpdGUgPSBKcy5ib29sIGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudC5lbGlnaWJpbGl0ZVxuICAgICAgdmFsIG1vbnRhbnRQcmltZURlbWVuYWdlbWVudCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnQubW9udGFudF9wcmltZV9kZW1lbmFnZW1lbnRcbiAgICAgIGVuZFxuICBsZXQgZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X29mX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50XG4gICAgICA6IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudCBKcy50KSA6XG4gICAgRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50LnQgPVxuICAgIHtcbiAgICAgIGVsaWdpYmlsaXRlID0gSnMudG9fYm9vbCBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnQjIy5lbGlnaWJpbGl0ZTtcbiAgICAgIG1vbnRhbnRfcHJpbWVfZGVtZW5hZ2VtZW50ID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudCMjLm1vbnRhbnRQcmltZURlbWVuYWdlbWVudFxuICAgIH1cblxuY2xhc3MgdHlwZSBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIG1vbnRhbnQ6XG4gICAgICAodW5pdCwgIEpzLm51bWJlciBKcy50IC0+IEpzLm51bWJlciBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgZW5kXG4gIGxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X3RvX2pzb29cbiAgICAoY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICAgIDogQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQpXG4gICAgOiBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgbWV0aG9kIG1vbnRhbnQgPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBfIChmdW5jdGlvbl9pbnB1dDA6IEpzLm51bWJlciBKcy50KSAtPlxuICAgICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCAoY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudC5tb250YW50IFxuICAgICAgICAgIChtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgICBmdW5jdGlvbl9pbnB1dDApKSlcbiAgICAgIGVuZFxuICBsZXQgY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vZl9qc29vXG4gICAgKGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgICAgIDogY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCBKcy50KSA6XG4gICAgQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQgPVxuICAgIHtcbiAgICAgIG1vbnRhbnQgPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAnbW9udGFudCcgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBtb250YW50Rm9yZmFpdGFpcmVDaGFyZ2VzRDgyMzE2OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHBsYWZvbmRMb3llckQ4MjMxNjI6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcGFydGljaXBhdGlvbk1pbmltYWxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHRhdXhDb21wb3NpdGlvbkZhbWlsaWFsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBwYXJ0aWNpcGF0aW9uUGVyc29ubmVsbGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWlkZUZpbmFsZUZvcm11bGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGU6XG4gICAgICAodW5pdCwgIEpzLm51bWJlciBKcy50IC0+IEpzLm51bWJlciBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfdG9fanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZcbiAgICA6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRMb2NhdGlmLnQpXG4gICAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbW9udGFudEZvcmZhaXRhaXJlQ2hhcmdlc0Q4MjMxNiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYubW9udGFudF9mb3JmYWl0YWlyZV9jaGFyZ2VzX2Q4MjNfMTZcbiAgICAgIHZhbCBwbGFmb25kTG95ZXJEODIzMTYyID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZi5wbGFmb25kX2xveWVyX2Q4MjNfMTZfMlxuICAgICAgdmFsIHBhcnRpY2lwYXRpb25NaW5pbWFsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYucGFydGljaXBhdGlvbl9taW5pbWFsZVxuICAgICAgdmFsIHRhdXhDb21wb3NpdGlvbkZhbWlsaWFsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBkZWNpbWFsX3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZi50YXV4X2NvbXBvc2l0aW9uX2ZhbWlsaWFsZVxuICAgICAgdmFsIHBhcnRpY2lwYXRpb25QZXJzb25uZWxsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYucGFydGljaXBhdGlvbl9wZXJzb25uZWxsZVxuICAgICAgdmFsIGFpZGVGaW5hbGVGb3JtdWxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZi5haWRlX2ZpbmFsZV9mb3JtdWxlXG4gICAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGUgPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBfIChmdW5jdGlvbl9pbnB1dDA6IEpzLm51bWJlciBKcy50KSAtPlxuICAgICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgXG4gICAgICAgICAgKG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICAgIGZ1bmN0aW9uX2lucHV0MCkpKVxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfb2ZfanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZcbiAgICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmIEpzLnQpIDpcbiAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZi50ID1cbiAgICB7XG4gICAgICBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZcbiAgICAgICAgICAjIy5tb250YW50Rm9yZmFpdGFpcmVDaGFyZ2VzRDgyMzE2O1xuICAgICAgcGxhZm9uZF9sb3llcl9kODIzXzE2XzIgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmIyMucGxhZm9uZExveWVyRDgyMzE2MjtcbiAgICAgIHBhcnRpY2lwYXRpb25fbWluaW1hbGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmIyMucGFydGljaXBhdGlvbk1pbmltYWxlO1xuICAgICAgdGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGUgPVxuICAgICAgICBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZlxuICAgICAgICAgICMjLnRhdXhDb21wb3NpdGlvbkZhbWlsaWFsZTtcbiAgICAgIHBhcnRpY2lwYXRpb25fcGVyc29ubmVsbGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmXG4gICAgICAgICAgIyMucGFydGljaXBhdGlvblBlcnNvbm5lbGxlO1xuICAgICAgYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYjIy5haWRlRmluYWxlRm9ybXVsZTtcbiAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAndHJhaXRlbWVudF9haWRlX2ZpbmFsZScgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSA9XG4gIG9iamVjdCBtZXRob2QgbW9udGFudDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV90b19qc29vXG4gICAgKGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSA6IENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZS50KVxuICAgIDogY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1vbnRhbnQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlLm1vbnRhbnRcbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX29mX2pzb29cbiAgICAoY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXG4gICAgICA6IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSBKcy50KSA6XG4gICAgQ2FsY3VsRXF1aXZhbGVuY2VMb3llck1pbmltYWxlLnQgPVxuICAgIHtcbiAgICAgIG1vbnRhbnQgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlIyMubW9udGFudFxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXIgPVxuICBvYmplY3QgbWV0aG9kIG5Ob21icmVQYXJ0c0Q4MzIyNTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl90b19qc29vXG4gICAgKGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llciA6IENhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVyLnQpXG4gICAgOiBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXIgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbk5vbWJyZVBhcnRzRDgzMjI1ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyLm5fbm9tYnJlX3BhcnRzX2Q4MzJfMjVcbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX29mX2pzb29cbiAgICAoY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyXG4gICAgICA6IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llciBKcy50KSA6XG4gICAgQ2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXIudCA9XG4gICAge1xuICAgICAgbl9ub21icmVfcGFydHNfZDgzMl8yNSA9XG4gICAgICAgIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyIyMubk5vbWJyZVBhcnRzRDgzMjI1XG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIgPVxuICBvYmplY3RcbiAgICBtZXRob2QgY29lZmZpY2llbnRNdWx0aXBsaWNhdGV1ckQ4MzIyNTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb2VmZmljaWVudFJEODMyMjU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgbk5vbWJyZVBhcnRzRDgzMjI1OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGVxdWl2YWxlbmNlTG95ZXJFbGlnaWJsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBwbGFmb25kRXF1aXZhbGVuY2VMb3llckVsaWdpYmxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb2VmZmljaWVudFByaXNlRW5DaGFyZ2VEODMyMjU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWlkZUZpbmFsZUZvcm11bGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGU6XG4gICAgICAodW5pdCwgIEpzLm51bWJlciBKcy50IC0+IEpzLm51bWJlciBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX3RvX2pzb29cbiAgICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llclxuICAgIDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVyLnQpXG4gICAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGNvZWZmaWNpZW50TXVsdGlwbGljYXRldXJEODMyMjUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llci5jb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzI1XG4gICAgICB2YWwgY29lZmZpY2llbnRSRDgzMjI1ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIuY29lZmZpY2llbnRfcl9kODMyXzI1XG4gICAgICB2YWwgbk5vbWJyZVBhcnRzRDgzMjI1ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llci5uX25vbWJyZV9wYXJ0c19kODMyXzI1XG4gICAgICB2YWwgZXF1aXZhbGVuY2VMb3llckVsaWdpYmxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIuZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGVcbiAgICAgIHZhbCBwbGFmb25kRXF1aXZhbGVuY2VMb3llckVsaWdpYmxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIucGxhZm9uZF9lcXVpdmFsZW5jZV9sb3llcl9lbGlnaWJsZVxuICAgICAgdmFsIGVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyLmVxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlXG4gICAgICB2YWwgY29lZmZpY2llbnRQcmlzZUVuQ2hhcmdlRDgzMjI1ID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llci5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VfZDgzMl8yNVxuICAgICAgdmFsIGFpZGVGaW5hbGVGb3JtdWxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIuYWlkZV9maW5hbGVfZm9ybXVsZVxuICAgICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gXyAoZnVuY3Rpb25faW5wdXQwOiBKcy5udW1iZXIgSnMudCkgLT5cbiAgICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIudHJhaXRlbWVudF9haWRlX2ZpbmFsZSBcbiAgICAgICAgICAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgICAgZnVuY3Rpb25faW5wdXQwKSkpXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfb2ZfanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyXG4gICAgICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIgSnMudCkgOlxuICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRGb3llci50ID1cbiAgICB7XG4gICAgICBjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMyXzI1ID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJcbiAgICAgICAgICAjIy5jb2VmZmljaWVudE11bHRpcGxpY2F0ZXVyRDgzMjI1O1xuICAgICAgY29lZmZpY2llbnRfcl9kODMyXzI1ID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIjIy5jb2VmZmljaWVudFJEODMyMjU7XG4gICAgICBuX25vbWJyZV9wYXJ0c19kODMyXzI1ID1cbiAgICAgICAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyIyMubk5vbWJyZVBhcnRzRDgzMjI1O1xuICAgICAgZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llciMjLmVxdWl2YWxlbmNlTG95ZXJFbGlnaWJsZTtcbiAgICAgIHBsYWZvbmRfZXF1aXZhbGVuY2VfbG95ZXJfZWxpZ2libGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llclxuICAgICAgICAgICMjLnBsYWZvbmRFcXVpdmFsZW5jZUxveWVyRWxpZ2libGU7XG4gICAgICBlcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyIyMuZXF1aXZhbGVuY2VMb3llck1pbmltYWxlO1xuICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMjUgPVxuICAgICAgICBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJcbiAgICAgICAgICAjIy5jb2VmZmljaWVudFByaXNlRW5DaGFyZ2VEODMyMjU7XG4gICAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIjIy5haWRlRmluYWxlRm9ybXVsZTtcbiAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAndHJhaXRlbWVudF9haWRlX2ZpbmFsZScgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZSA9XG4gIG9iamVjdCBtZXRob2Qgbk5vbWJyZVBhcnRzRDgzMjExOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX3RvX2pzb29cbiAgICAoY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlXG4gICAgOiBDYWxjdWxOb21icmVQYXJ0c0FjY2Vzc2lvblByb3ByaWV0ZS50KVxuICAgIDogY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG5Ob21icmVQYXJ0c0Q4MzIxMSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBkZWNpbWFsX3RvX2Zsb2F0IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZS5uX25vbWJyZV9wYXJ0c19kODMyXzExXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9vZl9qc29vXG4gICAgKGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICAgICAgOiBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGUgSnMudCkgOlxuICAgIENhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlLnQgPVxuICAgIHtcbiAgICAgIG5fbm9tYnJlX3BhcnRzX2Q4MzJfMTEgPVxuICAgICAgICBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZSMjLm5Ob21icmVQYXJ0c0Q4MzIxMVxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUgPVxuICBvYmplY3RcbiAgICBtZXRob2QgbWVuc3VhbGl0ZUVsaWdpYmxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG1lbnN1YWxpdGVNaW5pbWFsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb2VmZmljaWVudFByaXNlRW5DaGFyZ2VEODMyMTA6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWlkZUZpbmFsZUZvcm11bGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGU6XG4gICAgICAodW5pdCwgIEpzLm51bWJlciBKcy50IC0+IEpzLm51bWJlciBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfdG9fanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVcbiAgICA6IENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudClcbiAgICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtZW5zdWFsaXRlRWxpZ2libGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlLm1lbnN1YWxpdGVfZWxpZ2libGVcbiAgICAgIHZhbCBtZW5zdWFsaXRlTWluaW1hbGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlLm1lbnN1YWxpdGVfbWluaW1hbGVcbiAgICAgIHZhbCBjb2VmZmljaWVudFByaXNlRW5DaGFyZ2VEODMyMTAgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUuY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTBcbiAgICAgIHZhbCBhaWRlRmluYWxlRm9ybXVsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUuYWlkZV9maW5hbGVfZm9ybXVsZVxuICAgICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gXyAoZnVuY3Rpb25faW5wdXQwOiBKcy5udW1iZXIgSnMudCkgLT5cbiAgICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZS50cmFpdGVtZW50X2FpZGVfZmluYWxlIFxuICAgICAgICAgIChtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgICBmdW5jdGlvbl9pbnB1dDApKSlcbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX29mX2pzb29cbiAgICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gICAgICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSBKcy50KSA6XG4gICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50ID1cbiAgICB7XG4gICAgICBtZW5zdWFsaXRlX2VsaWdpYmxlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICAgICAgICAgICMjLm1lbnN1YWxpdGVFbGlnaWJsZTtcbiAgICAgIG1lbnN1YWxpdGVfbWluaW1hbGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gICAgICAgICAgIyMubWVuc3VhbGl0ZU1pbmltYWxlO1xuICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4MzJfMTAgPVxuICAgICAgICBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICAgICAgICAgICMjLmNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZUQ4MzIxMDtcbiAgICAgIGFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gICAgICAgICAgIyMuYWlkZUZpbmFsZUZvcm11bGU7XG4gICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ3RyYWl0ZW1lbnRfYWlkZV9maW5hbGUnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIlxuICAgIH1cblxuY2xhc3MgdHlwZSB0cmFpdGVtZW50X2Zvcm11bGVfYWlkZV9maW5hbGUgPVxuICBvYmplY3RcbiAgICBtZXRob2QgYWlkZUZpbmFsZUZvcm11bGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGU6XG4gICAgICAodW5pdCwgIEpzLm51bWJlciBKcy50IC0+IEpzLm51bWJlciBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgZW5kXG4gIGxldCB0cmFpdGVtZW50X2Zvcm11bGVfYWlkZV9maW5hbGVfdG9fanNvbyAodHJhaXRlbWVudF9mb3JtdWxlX2FpZGVfZmluYWxlXG4gICAgOiBUcmFpdGVtZW50Rm9ybXVsZUFpZGVGaW5hbGUudCkgOiB0cmFpdGVtZW50X2Zvcm11bGVfYWlkZV9maW5hbGUgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgYWlkZUZpbmFsZUZvcm11bGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgdHJhaXRlbWVudF9mb3JtdWxlX2FpZGVfZmluYWxlLmFpZGVfZmluYWxlX2Zvcm11bGVcbiAgICAgIG1ldGhvZCB0cmFpdGVtZW50QWlkZUZpbmFsZSA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIF8gKGZ1bmN0aW9uX2lucHV0MDogSnMubnVtYmVyIEpzLnQpIC0+XG4gICAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0ICh0cmFpdGVtZW50X2Zvcm11bGVfYWlkZV9maW5hbGUudHJhaXRlbWVudF9haWRlX2ZpbmFsZSBcbiAgICAgICAgICAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgICAgZnVuY3Rpb25faW5wdXQwKSkpXG4gICAgICBlbmRcbiAgbGV0IHRyYWl0ZW1lbnRfZm9ybXVsZV9haWRlX2ZpbmFsZV9vZl9qc29vXG4gICAgKHRyYWl0ZW1lbnRfZm9ybXVsZV9haWRlX2ZpbmFsZSA6IHRyYWl0ZW1lbnRfZm9ybXVsZV9haWRlX2ZpbmFsZSBKcy50KSA6XG4gICAgVHJhaXRlbWVudEZvcm11bGVBaWRlRmluYWxlLnQgPVxuICAgIHtcbiAgICAgIGFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgdHJhaXRlbWVudF9mb3JtdWxlX2FpZGVfZmluYWxlIyMuYWlkZUZpbmFsZUZvcm11bGU7XG4gICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ3RyYWl0ZW1lbnRfYWlkZV9maW5hbGUnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIlxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGFpZGVGaW5hbGVGb3JtdWxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlOlxuICAgICAgKHVuaXQsICBKcy5udW1iZXIgSnMudCAtPiBKcy5udW1iZXIgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gIGVuZFxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF90b19qc29vXG4gICAgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQgOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50LnQpXG4gICAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGFpZGVGaW5hbGVGb3JtdWxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQuYWlkZV9maW5hbGVfZm9ybXVsZVxuICAgICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gXyAoZnVuY3Rpb25faW5wdXQwOiBKcy5udW1iZXIgSnMudCkgLT5cbiAgICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQudHJhaXRlbWVudF9haWRlX2ZpbmFsZSBcbiAgICAgICAgICAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgICAgZnVuY3Rpb25faW5wdXQwKSkpXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfb2ZfanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50XG4gICAgICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQgSnMudCkgOlxuICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQudCA9XG4gICAge1xuICAgICAgYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50IyMuYWlkZUZpbmFsZUZvcm11bGU7XG4gICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ3RyYWl0ZW1lbnRfYWlkZV9maW5hbGUnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIlxuICAgIH1cblxuY2xhc3MgdHlwZSBpbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBhbmNpZW5Mb3llclByaW5jaXBhbDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBhbmNpZW5uZUFsbG9jYXRpb25Mb2dlbWVudDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGluZm9zX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80X3RvX2pzb29cbiAgICAoaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQgOiBJbmZvc0NoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LnQpXG4gICAgOiBpbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBhbmNpZW5Mb3llclByaW5jaXBhbCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBpbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNC5hbmNpZW5fbG95ZXJfcHJpbmNpcGFsXG4gICAgICB2YWwgYW5jaWVubmVBbGxvY2F0aW9uTG9nZW1lbnQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQuYW5jaWVubmVfYWxsb2NhdGlvbl9sb2dlbWVudFxuICAgICAgZW5kXG4gIGxldCBpbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9vZl9qc29vXG4gICAgKGluZm9zX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80XG4gICAgICA6IGluZm9zX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IEpzLnQpIDpcbiAgICBJbmZvc0NoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LnQgPVxuICAgIHtcbiAgICAgIGFuY2llbl9sb3llcl9wcmluY2lwYWwgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQjIy5hbmNpZW5Mb3llclByaW5jaXBhbDtcbiAgICAgIGFuY2llbm5lX2FsbG9jYXRpb25fbG9nZW1lbnQgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQjIy5hbmNpZW5uZUFsbG9jYXRpb25Mb2dlbWVudFxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGFpZGVGaW5hbGVGb3JtdWxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlOlxuICAgICAgKHVuaXQsICBKcy5udW1iZXIgSnMudCAtPiBKcy5udW1iZXIgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gICAgbWV0aG9kIG1vbnRhbnRGb3JmYWl0YWlyZUNoYXJnZXNEODIzMTY6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcGxhZm9uZExveWVyRDgyMzE2MjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBwYXJ0aWNpcGF0aW9uTWluaW1hbGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdGF1eENvbXBvc2l0aW9uRmFtaWxpYWxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHBhcnRpY2lwYXRpb25QZXJzb25uZWxsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfdG9fanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZi50KVxuICAgIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBhaWRlRmluYWxlRm9ybXVsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmLmFpZGVfZmluYWxlX2Zvcm11bGVcbiAgICAgIG1ldGhvZCB0cmFpdGVtZW50QWlkZUZpbmFsZSA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIF8gKGZ1bmN0aW9uX2lucHV0MDogSnMubnVtYmVyIEpzLnQpIC0+XG4gICAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmLnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgXG4gICAgICAgICAgKG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICAgIGZ1bmN0aW9uX2lucHV0MCkpKVxuICAgICAgdmFsIG1vbnRhbnRGb3JmYWl0YWlyZUNoYXJnZXNEODIzMTYgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZi5tb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNlxuICAgICAgdmFsIHBsYWZvbmRMb3llckQ4MjMxNjIgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZi5wbGFmb25kX2xveWVyX2Q4MjNfMTZfMlxuICAgICAgdmFsIHBhcnRpY2lwYXRpb25NaW5pbWFsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmLnBhcnRpY2lwYXRpb25fbWluaW1hbGVcbiAgICAgIHZhbCB0YXV4Q29tcG9zaXRpb25GYW1pbGlhbGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmLnRhdXhfY29tcG9zaXRpb25fZmFtaWxpYWxlXG4gICAgICB2YWwgcGFydGljaXBhdGlvblBlcnNvbm5lbGxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWYucGFydGljaXBhdGlvbl9wZXJzb25uZWxsZVxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX29mX2pzb29cbiAgICAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZlxuICAgICAgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmIEpzLnQpIDpcbiAgICBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRMb2NhdGlmLnQgPVxuICAgIHtcbiAgICAgIGFpZGVfZmluYWxlX2Zvcm11bGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZiMjLmFpZGVGaW5hbGVGb3JtdWxlO1xuICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICd0cmFpdGVtZW50X2FpZGVfZmluYWxlJyB0cmFuc2xhdGlvbiBpc24ndCB5ZXQgc3VwcG9ydGVkLi4uXCI7XG4gICAgICBtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgyM18xNiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmXG4gICAgICAgICAgIyMubW9udGFudEZvcmZhaXRhaXJlQ2hhcmdlc0Q4MjMxNjtcbiAgICAgIHBsYWZvbmRfbG95ZXJfZDgyM18xNl8yID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWYjIy5wbGFmb25kTG95ZXJEODIzMTYyO1xuICAgICAgcGFydGljaXBhdGlvbl9taW5pbWFsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmIyMucGFydGljaXBhdGlvbk1pbmltYWxlO1xuICAgICAgdGF1eF9jb21wb3NpdGlvbl9mYW1pbGlhbGUgPVxuICAgICAgICBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWYjIy50YXV4Q29tcG9zaXRpb25GYW1pbGlhbGU7XG4gICAgICBwYXJ0aWNpcGF0aW9uX3BlcnNvbm5lbGxlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWYjIy5wYXJ0aWNpcGF0aW9uUGVyc29ubmVsbGVcbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBtZW5zdWFsaXRlRWxpZ2libGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbWVuc3VhbGl0ZU1pbmltYWxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBhaWRlRmluYWxlRm9ybXVsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0cmFpdGVtZW50QWlkZUZpbmFsZTpcbiAgICAgICh1bml0LCAgSnMubnVtYmVyIEpzLnQgLT4gSnMubnVtYmVyIEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICBlbmRcbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfdG9fanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gICAgOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUudClcbiAgICA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbWVuc3VhbGl0ZUVsaWdpYmxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUubWVuc3VhbGl0ZV9lbGlnaWJsZVxuICAgICAgdmFsIG1lbnN1YWxpdGVNaW5pbWFsZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlLm1lbnN1YWxpdGVfbWluaW1hbGVcbiAgICAgIHZhbCBjb2VmZmljaWVudFByaXNlRW5DaGFyZ2UgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlLmNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZVxuICAgICAgdmFsIGFpZGVGaW5hbGVGb3JtdWxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUuYWlkZV9maW5hbGVfZm9ybXVsZVxuICAgICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gXyAoZnVuY3Rpb25faW5wdXQwOiBKcy5udW1iZXIgSnMudCkgLT5cbiAgICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUudHJhaXRlbWVudF9haWRlX2ZpbmFsZSBcbiAgICAgICAgICAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgICAgZnVuY3Rpb25faW5wdXQwKSkpXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfb2ZfanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gICAgICA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUgSnMudCkgOlxuICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZS50ID1cbiAgICB7XG4gICAgICBtZW5zdWFsaXRlX2VsaWdpYmxlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUjIy5tZW5zdWFsaXRlRWxpZ2libGU7XG4gICAgICBtZW5zdWFsaXRlX21pbmltYWxlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUjIy5tZW5zdWFsaXRlTWluaW1hbGU7XG4gICAgICBjb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2UgPVxuICAgICAgICBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVcbiAgICAgICAgICAjIy5jb2VmZmljaWVudFByaXNlRW5DaGFyZ2U7XG4gICAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGUjIy5haWRlRmluYWxlRm9ybXVsZTtcbiAgICAgIHRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAndHJhaXRlbWVudF9haWRlX2ZpbmFsZScgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBlcXVpdmFsZW5jZUxveWVyOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG1vbnRhbnRGb3JmYWl0YWlyZUNoYXJnZXM6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG95ZXJNaW5pbWFsOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGFpZGVGaW5hbGVGb3JtdWxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlOlxuICAgICAgKHVuaXQsICBKcy5udW1iZXIgSnMudCAtPiBKcy5udW1iZXIgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfdG9fanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llciA6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVyLnQpXG4gICAgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llciBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBjb2VmZmljaWVudFByaXNlRW5DaGFyZ2UgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llci5jb2VmZmljaWVudF9wcmlzZV9lbl9jaGFyZ2VcbiAgICAgIHZhbCBlcXVpdmFsZW5jZUxveWVyID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyLmVxdWl2YWxlbmNlX2xveWVyXG4gICAgICB2YWwgbW9udGFudEZvcmZhaXRhaXJlQ2hhcmdlcyA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llci5tb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNcbiAgICAgIHZhbCBsb3llck1pbmltYWwgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXIubG95ZXJfbWluaW1hbFxuICAgICAgdmFsIGFpZGVGaW5hbGVGb3JtdWxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyLmFpZGVfZmluYWxlX2Zvcm11bGVcbiAgICAgIG1ldGhvZCB0cmFpdGVtZW50QWlkZUZpbmFsZSA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIF8gKGZ1bmN0aW9uX2lucHV0MDogSnMubnVtYmVyIEpzLnQpIC0+XG4gICAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llci50cmFpdGVtZW50X2FpZGVfZmluYWxlIFxuICAgICAgICAgIChtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgICBmdW5jdGlvbl9pbnB1dDApKSlcbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfb2ZfanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llclxuICAgICAgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llciBKcy50KSA6XG4gICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIudCA9XG4gICAge1xuICAgICAgY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlID1cbiAgICAgICAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llciMjLmNvZWZmaWNpZW50UHJpc2VFbkNoYXJnZTtcbiAgICAgIGVxdWl2YWxlbmNlX2xveWVyID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyIyMuZXF1aXZhbGVuY2VMb3llcjtcbiAgICAgIG1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlcyA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llciMjLm1vbnRhbnRGb3JmYWl0YWlyZUNoYXJnZXM7XG4gICAgICBsb3llcl9taW5pbWFsID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyIyMubG95ZXJNaW5pbWFsO1xuICAgICAgYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llciMjLmFpZGVGaW5hbGVGb3JtdWxlO1xuICAgICAgdHJhaXRlbWVudF9haWRlX2ZpbmFsZSA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICd0cmFpdGVtZW50X2FpZGVfZmluYWxlJyB0cmFuc2xhdGlvbiBpc24ndCB5ZXQgc3VwcG9ydGVkLi4uXCJcbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQgPVxuICBvYmplY3RcbiAgICBtZXRob2QgYWlkZUZpbmFsZUZvcm11bGU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHJhaXRlbWVudEFpZGVGaW5hbGU6XG4gICAgICAodW5pdCwgIEpzLm51bWJlciBKcy50IC0+IEpzLm51bWJlciBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgZW5kXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF90b19qc29vIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudFxuICAgIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50LnQpIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgYWlkZUZpbmFsZUZvcm11bGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQuYWlkZV9maW5hbGVfZm9ybXVsZVxuICAgICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gXyAoZnVuY3Rpb25faW5wdXQwOiBKcy5udW1iZXIgSnMudCkgLT5cbiAgICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50LnRyYWl0ZW1lbnRfYWlkZV9maW5hbGUgXG4gICAgICAgICAgKG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICAgIGZ1bmN0aW9uX2lucHV0MCkpKVxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9vZl9qc29vXG4gICAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50IDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQgSnMudCkgOlxuICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudC50ID1cbiAgICB7XG4gICAgICBhaWRlX2ZpbmFsZV9mb3JtdWxlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50IyMuYWlkZUZpbmFsZUZvcm11bGU7XG4gICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ3RyYWl0ZW1lbnRfYWlkZV9maW5hbGUnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIlxuICAgIH1cblxuY2xhc3MgdHlwZSBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGFnZU91dmVydHVyZURyb2l0OlxuICAgICAgUnVudGltZV9qc29vLlJ1bnRpbWUuZHVyYXRpb24gSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV90b19qc29vIChvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlXG4gICAgOiBPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZS50KSA6IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGUgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgYWdlT3V2ZXJ0dXJlRHJvaXQgPVxuICAgICAgICBkdXJhdGlvbl90b19qc29vIG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGUuYWdlX291dmVydHVyZV9kcm9pdFxuICAgICAgZW5kXG4gIGxldCBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX29mX2pzb29cbiAgICAob3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZSA6IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGUgSnMudCkgOlxuICAgIE91dmVydHVyZURyb2l0c1JldHJhaXRlLnQgPVxuICAgIHtcbiAgICAgIGFnZV9vdXZlcnR1cmVfZHJvaXQgPVxuICAgICAgICBkdXJhdGlvbl9vZl9qc29vIG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGUjIy5hZ2VPdXZlcnR1cmVEcm9pdFxuICAgIH1cblxuY2xhc3MgdHlwZSBpbXBheWVfZGVwZW5zZV9sb2dlbWVudCA9XG4gIG9iamVjdCBtZXRob2QgbW9udGFudEltcGF5ZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X3RvX2pzb28gKGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50XG4gICAgOiBJbXBheWVEZXBlbnNlTG9nZW1lbnQudCkgOiBpbXBheWVfZGVwZW5zZV9sb2dlbWVudCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtb250YW50SW1wYXllID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50Lm1vbnRhbnRfaW1wYXllXG4gICAgICBlbmRcbiAgbGV0IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X29mX2pzb29cbiAgICAoaW1wYXllX2RlcGVuc2VfbG9nZW1lbnQgOiBpbXBheWVfZGVwZW5zZV9sb2dlbWVudCBKcy50KSA6XG4gICAgSW1wYXllRGVwZW5zZUxvZ2VtZW50LnQgPVxuICAgIHtcbiAgICAgIG1vbnRhbnRfaW1wYXllID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50IyMubW9udGFudEltcGF5ZVxuICAgIH1cblxuY2xhc3MgdHlwZSBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGVsaWdpYmlsaXRlOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBhaWRlRmluYWxlRm9ybXVsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0cmFpdGVtZW50QWlkZUZpbmFsZTpcbiAgICAgICh1bml0LCAgSnMubnVtYmVyIEpzLnQgLT4gSnMubnVtYmVyIEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICAgIG1ldGhvZCBjb2VmZmljZW50c0VuZmFudHNHYXJkZUFsdGVybmVlUHJpc0VuQ29tcHRlOlxuICAgICAgSnMubnVtYmVyIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF90b19qc29vIChjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50XG4gICAgOiBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50LnQpIDogY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBlbGlnaWJpbGl0ZSA9IEpzLmJvb2wgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudC5lbGlnaWJpbGl0ZVxuICAgICAgdmFsIGFpZGVGaW5hbGVGb3JtdWxlID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnQuYWlkZV9maW5hbGVfZm9ybXVsZVxuICAgICAgbWV0aG9kIHRyYWl0ZW1lbnRBaWRlRmluYWxlID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gXyAoZnVuY3Rpb25faW5wdXQwOiBKcy5udW1iZXIgSnMudCkgLT5cbiAgICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgKGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnQudHJhaXRlbWVudF9haWRlX2ZpbmFsZSBcbiAgICAgICAgICAobW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgICAgZnVuY3Rpb25faW5wdXQwKSkpXG4gICAgICB2YWwgY29lZmZpY2VudHNFbmZhbnRzR2FyZGVBbHRlcm5lZVByaXNFbkNvbXB0ZSA9XG4gICAgICAgIEpzLmFycmF5IEBAIEFycmF5Lm1hcCAoZnVuIHggLT4gSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgeCkgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudC5jb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfb2ZfanNvb1xuICAgIChjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50IDogY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudCBKcy50KSA6XG4gICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudC50ID1cbiAgICB7XG4gICAgICBlbGlnaWJpbGl0ZSA9IEpzLnRvX2Jvb2wgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudCMjLmVsaWdpYmlsaXRlO1xuICAgICAgYWlkZV9maW5hbGVfZm9ybXVsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50IyMuYWlkZUZpbmFsZUZvcm11bGU7XG4gICAgICB0cmFpdGVtZW50X2FpZGVfZmluYWxlID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ3RyYWl0ZW1lbnRfYWlkZV9maW5hbGUnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIjtcbiAgICAgIGNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGUgPVxuICAgICAgICBBcnJheS5tYXAgKGZ1biB4IC0+IGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIHgpIEBAIEpzLnRvX2FycmF5XG4gICAgICAgICAgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudFxuICAgICAgICAgICMjLmNvZWZmaWNlbnRzRW5mYW50c0dhcmRlQWx0ZXJuZWVQcmlzRW5Db21wdGVcbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBlbGlnaWJpbGl0ZTogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWlkZUZpbmFsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfdG9fanNvb1xuICAgIChjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlXG4gICAgOiBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZS50KVxuICAgIDogY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZSBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBlbGlnaWJpbGl0ZSA9XG4gICAgICAgIEpzLmJvb2wgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZS5lbGlnaWJpbGl0ZVxuICAgICAgdmFsIGFpZGVGaW5hbGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZS5haWRlX2ZpbmFsZVxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX29mX2pzb29cbiAgICAoY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZVxuICAgICAgOiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlIEpzLnQpIDpcbiAgICBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZS50ID1cbiAgICB7XG4gICAgICBlbGlnaWJpbGl0ZSA9XG4gICAgICAgIEpzLnRvX2Jvb2wgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZSMjLmVsaWdpYmlsaXRlO1xuICAgICAgYWlkZV9maW5hbGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZSMjLmFpZGVGaW5hbGVcbiAgICB9XG5cbmNsYXNzIHR5cGUgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyA9XG4gIG9iamVjdCBtZXRob2QgbW9udGFudDogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvb1xuICAgIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gICAgOiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzLnQpXG4gICAgOiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1vbnRhbnQgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlcy5tb250YW50XG4gICAgICBlbmRcbiAgbGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvb1xuICAgIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gICAgICA6IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgSnMudCkgOlxuICAgIEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXMudCA9XG4gICAge1xuICAgICAgbW9udGFudCA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIyMubW9udGFudFxuICAgIH1cblxuY2xhc3MgdHlwZSB2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2EgPVxuICBvYmplY3QgbWV0aG9kIGVzdEluZmVyaWV1ck91RWdhbDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCB2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2FfdG9fanNvb1xuICAgICh2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2FcbiAgICA6IFZlcmlmaWNhdGlvbkFnZUluZmVyaWV1ck91RWdhbEEudClcbiAgICA6IHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYSBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBlc3RJbmZlcmlldXJPdUVnYWwgPVxuICAgICAgICBKcy5ib29sIHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYS5lc3RfaW5mZXJpZXVyX291X2VnYWxcbiAgICAgIGVuZFxuICBsZXQgdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hX29mX2pzb29cbiAgICAodmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hXG4gICAgICA6IHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYSBKcy50KSA6XG4gICAgVmVyaWZpY2F0aW9uQWdlSW5mZXJpZXVyT3VFZ2FsQS50ID1cbiAgICB7XG4gICAgICBlc3RfaW5mZXJpZXVyX291X2VnYWwgPVxuICAgICAgICBKcy50b19ib29sIHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYSMjLmVzdEluZmVyaWV1ck91RWdhbFxuICAgIH1cblxuY2xhc3MgdHlwZSB2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hID1cbiAgb2JqZWN0IG1ldGhvZCBlc3RTdXBlcmlldXI6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYV90b19qc29vICh2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hXG4gICAgOiBWZXJpZmljYXRpb25BZ2VTdXBlcmlldXJBLnQpIDogdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYSBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBlc3RTdXBlcmlldXIgPSBKcy5ib29sIHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2EuZXN0X3N1cGVyaWV1clxuICAgICAgZW5kXG4gIGxldCB2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX29mX2pzb29cbiAgICAodmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYSA6IHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2EgSnMudCkgOlxuICAgIFZlcmlmaWNhdGlvbkFnZVN1cGVyaWV1ckEudCA9XG4gICAge2VzdF9zdXBlcmlldXIgPSBKcy50b19ib29sIHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2EjIy5lc3RTdXBlcmlldXJcbiAgICB9XG5cbmNsYXNzIHR5cGUgc21pYyA9XG4gIG9iamVjdCBtZXRob2QgYnJ1dEhvcmFpcmU6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBzbWljX3RvX2pzb28gKHNtaWMgOiBTbWljLnQpIDogc21pYyBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBicnV0SG9yYWlyZSA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBzbWljLmJydXRfaG9yYWlyZVxuICAgICAgZW5kXG4gIGxldCBzbWljX29mX2pzb28gKHNtaWMgOiBzbWljIEpzLnQpIDogU21pYy50ID1cbiAgICB7XG4gICAgICBicnV0X2hvcmFpcmUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgc21pYyMjLmJydXRIb3JhaXJlXG4gICAgfVxuXG5jbGFzcyB0eXBlIG5ldWZfb3VfYW5jaWVuID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiTmV1ZlwiXG4gICAgICAgIC0gXCJBbmNpZW5cIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBuZXVmX291X2FuY2llbl90b19qc29vIDogTmV1Zk91QW5jaWVuLnQgLT4gbmV1Zl9vdV9hbmNpZW4gSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgTmV1ZiBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk5ldWZcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBBbmNpZW4gYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBbmNpZW5cIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChhbWVsaW9yZV9wYXJfb2NjdXBhbnRfdG9fanNvbyBhcmcpKVxuICAgIGVuZFxuXG5sZXQgbmV1Zl9vdV9hbmNpZW5fb2ZfanNvbyAobmV1Zl9vdV9hbmNpZW4gOiBuZXVmX291X2FuY2llbiBKcy50KVxuICA6IE5ldWZPdUFuY2llbi50ID1cbiAgbWF0Y2ggbmV1Zl9vdV9hbmNpZW4jIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJOZXVmXCIgLT4gTmV1Zk91QW5jaWVuLk5ldWYgKClcbiAgfCBcIkFuY2llblwiIC0+XG4gIE5ldWZPdUFuY2llbi5BbmNpZW4gKGFtZWxpb3JlX3Bhcl9vY2N1cGFudF9vZl9qc29vIChKcy5VbnNhZmUuY29lcmNlIG5ldWZfb3VfYW5jaWVuIyMucGF5bG9hZCkpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdOZXVmT3VBbmNpZW4udCdcIiBjb25zKVxuXG5cbmNsYXNzIHR5cGUgdHJhbmNoZV9yZXZlbnUgPVxuICBvYmplY3RcbiAgICBtZXRob2QgaGF1dDogbGltaXRlX3RyYW5jaGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGJhczogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0YXV4OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgdHJhbmNoZV9yZXZlbnVfdG9fanNvbyAodHJhbmNoZV9yZXZlbnUgOiBUcmFuY2hlUmV2ZW51LnQpXG4gICAgOiB0cmFuY2hlX3JldmVudSBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBoYXV0ID0gbGltaXRlX3RyYW5jaGVfdG9fanNvbyB0cmFuY2hlX3JldmVudS5oYXV0XG4gICAgICB2YWwgYmFzID0gSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IHRyYW5jaGVfcmV2ZW51LmJhc1xuICAgICAgdmFsIHRhdXggPSBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCB0cmFuY2hlX3JldmVudS50YXV4XG4gICAgICBlbmRcbiAgbGV0IHRyYW5jaGVfcmV2ZW51X29mX2pzb28gKHRyYW5jaGVfcmV2ZW51IDogdHJhbmNoZV9yZXZlbnUgSnMudCkgOlxuICAgIFRyYW5jaGVSZXZlbnUudCA9XG4gICAge1xuICAgICAgaGF1dCA9IGxpbWl0ZV90cmFuY2hlX29mX2pzb28gdHJhbmNoZV9yZXZlbnUjIy5oYXV0O1xuICAgICAgYmFzID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIHRyYW5jaGVfcmV2ZW51IyMuYmFzO1xuICAgICAgdGF1eCA9IGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIHRyYW5jaGVfcmV2ZW51IyMudGF1eFxuICAgIH1cblxuY2xhc3MgdHlwZSB0cmFuY2hlX3JldmVudV9kZWNpbWFsID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGhhdXQ6IGxpbWl0ZV90cmFuY2hlX2RlY2ltYWwgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGJhczogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0YXV4OiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgdHJhbmNoZV9yZXZlbnVfZGVjaW1hbF90b19qc29vICh0cmFuY2hlX3JldmVudV9kZWNpbWFsXG4gICAgOiBUcmFuY2hlUmV2ZW51RGVjaW1hbC50KSA6IHRyYW5jaGVfcmV2ZW51X2RlY2ltYWwgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgaGF1dCA9IGxpbWl0ZV90cmFuY2hlX2RlY2ltYWxfdG9fanNvbyB0cmFuY2hlX3JldmVudV9kZWNpbWFsLmhhdXRcbiAgICAgIHZhbCBiYXMgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCB0cmFuY2hlX3JldmVudV9kZWNpbWFsLmJhc1xuICAgICAgdmFsIHRhdXggPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgZGVjaW1hbF90b19mbG9hdCB0cmFuY2hlX3JldmVudV9kZWNpbWFsLnRhdXhcbiAgICAgIGVuZFxuICBsZXQgdHJhbmNoZV9yZXZlbnVfZGVjaW1hbF9vZl9qc29vXG4gICAgKHRyYW5jaGVfcmV2ZW51X2RlY2ltYWwgOiB0cmFuY2hlX3JldmVudV9kZWNpbWFsIEpzLnQpIDpcbiAgICBUcmFuY2hlUmV2ZW51RGVjaW1hbC50ID1cbiAgICB7XG4gICAgICBoYXV0ID0gbGltaXRlX3RyYW5jaGVfZGVjaW1hbF9vZl9qc29vIHRyYW5jaGVfcmV2ZW51X2RlY2ltYWwjIy5oYXV0O1xuICAgICAgYmFzID1cbiAgICAgICAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXIgdHJhbmNoZV9yZXZlbnVfZGVjaW1hbCMjLmJhcztcbiAgICAgIHRhdXggPVxuICAgICAgICBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciB0cmFuY2hlX3JldmVudV9kZWNpbWFsIyMudGF1eFxuICAgIH1cblxuY2xhc3MgdHlwZSBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBkYXRlTmFpc3NhbmNlOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlc3NvdXJjZXM6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYXNjZW5kYW50RGVzY2VuZGFudENvbGxhdGVyYWxEZXV4aWVtZVRyb2lzaWVtZURlZ3JlOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcGFyZW50ZTogcGFyZW50ZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgaW5jYXBhY2l0ZTgwUG91cmNlbnRPdVJlc3RyaWN0aW9uRW1wbG9pOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYmVuZWZpY2lhaXJlTDE2MTE5TDM1MThMNjQzM1NlY3U6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHRpdHVsYWlyZUFsbG9jYXRpb25QZXJzb25uZUFnZWU6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2VfdG9fanNvbyAoYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2VcbiAgICA6IEF1dHJlUGVyc29ubmVBQ2hhcmdlLnQpIDogYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZGF0ZU5haXNzYW5jZSA9IGRhdGVfdG9fanNvbyBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZS5kYXRlX25haXNzYW5jZVxuICAgICAgdmFsIHJlc3NvdXJjZXMgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UucmVzc291cmNlc1xuICAgICAgdmFsIGFzY2VuZGFudERlc2NlbmRhbnRDb2xsYXRlcmFsRGV1eGllbWVUcm9pc2llbWVEZWdyZSA9XG4gICAgICAgIEpzLmJvb2wgYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UuYXNjZW5kYW50X2Rlc2NlbmRhbnRfY29sbGF0ZXJhbF9kZXV4aWVtZV90cm9pc2llbWVfZGVncmVcbiAgICAgIHZhbCBwYXJlbnRlID0gcGFyZW50ZV90b19qc29vIGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlLnBhcmVudGVcbiAgICAgIHZhbCBpbmNhcGFjaXRlODBQb3VyY2VudE91UmVzdHJpY3Rpb25FbXBsb2kgPVxuICAgICAgICBKcy5ib29sIGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlLmluY2FwYWNpdGVfODBfcG91cmNlbnRfb3VfcmVzdHJpY3Rpb25fZW1wbG9pXG4gICAgICB2YWwgYmVuZWZpY2lhaXJlTDE2MTE5TDM1MThMNjQzM1NlY3UgPVxuICAgICAgICBKcy5ib29sIGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlLmJlbmVmaWNpYWlyZV9sMTYxXzE5X2wzNTFfOF9sNjQzXzNfc2VjdVxuICAgICAgdmFsIHRpdHVsYWlyZUFsbG9jYXRpb25QZXJzb25uZUFnZWUgPVxuICAgICAgICBKcy5ib29sIGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlLnRpdHVsYWlyZV9hbGxvY2F0aW9uX3BlcnNvbm5lX2FnZWVcbiAgICAgIGVuZFxuICBsZXQgYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2Vfb2ZfanNvb1xuICAgIChhdXRyZV9wZXJzb25uZV9hX2NoYXJnZSA6IGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlIEpzLnQpIDpcbiAgICBBdXRyZVBlcnNvbm5lQUNoYXJnZS50ID1cbiAgICB7XG4gICAgICBkYXRlX25haXNzYW5jZSA9IGRhdGVfb2ZfanNvbyBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZSMjLmRhdGVOYWlzc2FuY2U7XG4gICAgICByZXNzb3VyY2VzID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlIyMucmVzc291cmNlcztcbiAgICAgIGFzY2VuZGFudF9kZXNjZW5kYW50X2NvbGxhdGVyYWxfZGV1eGllbWVfdHJvaXNpZW1lX2RlZ3JlID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlXG4gICAgICAgICAgIyMuYXNjZW5kYW50RGVzY2VuZGFudENvbGxhdGVyYWxEZXV4aWVtZVRyb2lzaWVtZURlZ3JlO1xuICAgICAgcGFyZW50ZSA9IHBhcmVudGVfb2ZfanNvbyBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZSMjLnBhcmVudGU7XG4gICAgICBpbmNhcGFjaXRlXzgwX3BvdXJjZW50X291X3Jlc3RyaWN0aW9uX2VtcGxvaSA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBhdXRyZV9wZXJzb25uZV9hX2NoYXJnZSMjLmluY2FwYWNpdGU4MFBvdXJjZW50T3VSZXN0cmljdGlvbkVtcGxvaTtcbiAgICAgIGJlbmVmaWNpYWlyZV9sMTYxXzE5X2wzNTFfOF9sNjQzXzNfc2VjdSA9XG4gICAgICAgIEpzLnRvX2Jvb2wgYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2UjIy5iZW5lZmljaWFpcmVMMTYxMTlMMzUxOEw2NDMzU2VjdTtcbiAgICAgIHRpdHVsYWlyZV9hbGxvY2F0aW9uX3BlcnNvbm5lX2FnZWUgPVxuICAgICAgICBKcy50b19ib29sIGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlIyMudGl0dWxhaXJlQWxsb2NhdGlvblBlcnNvbm5lQWdlZVxuICAgIH1cblxuY2xhc3MgdHlwZSBkYXRlX25haXNzYW5jZV90cm9pc2llbWVfb3VfZGVybmllcl9wbHVzX2VuZmFudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIk1vaW5zRGVUcm9pc0VuZmFudHNcIlxuICAgICAgICAtIFwiUGx1c0RlVHJvaXNFbmZhbnRzXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2Rlcm5pZXJfcGx1c19lbmZhbnRfdG9fanNvb1xuICA6IERhdGVOYWlzc2FuY2VUcm9pc2llbWVPdURlcm5pZXJQbHVzRW5mYW50LnQgLT4gZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2Rlcm5pZXJfcGx1c19lbmZhbnQgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgTW9pbnNEZVRyb2lzRW5mYW50cyBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIk1vaW5zRGVUcm9pc0VuZmFudHNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0ICggYXJnKSlcbiAgICBlbmRcbiAgfCBQbHVzRGVUcm9pc0VuZmFudHMgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJQbHVzRGVUcm9pc0VuZmFudHNcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChkYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2dyb3NzZXNzZV90b19qc29vIGFyZykpXG4gICAgZW5kXG5cbmxldCBkYXRlX25haXNzYW5jZV90cm9pc2llbWVfb3VfZGVybmllcl9wbHVzX2VuZmFudF9vZl9qc29vXG4gIChkYXRlX25haXNzYW5jZV90cm9pc2llbWVfb3VfZGVybmllcl9wbHVzX2VuZmFudFxuICAgIDogZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2Rlcm5pZXJfcGx1c19lbmZhbnQgSnMudClcbiAgOiBEYXRlTmFpc3NhbmNlVHJvaXNpZW1lT3VEZXJuaWVyUGx1c0VuZmFudC50ID1cbiAgbWF0Y2ggZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2Rlcm5pZXJfcGx1c19lbmZhbnQjIy5raW5kXG4gICAgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIk1vaW5zRGVUcm9pc0VuZmFudHNcIiAtPlxuICAgIERhdGVOYWlzc2FuY2VUcm9pc2llbWVPdURlcm5pZXJQbHVzRW5mYW50Lk1vaW5zRGVUcm9pc0VuZmFudHMgKClcbiAgfCBcIlBsdXNEZVRyb2lzRW5mYW50c1wiIC0+XG4gIERhdGVOYWlzc2FuY2VUcm9pc2llbWVPdURlcm5pZXJQbHVzRW5mYW50LlBsdXNEZVRyb2lzRW5mYW50cyAoZGF0ZV9kZV9uYWlzc2FuY2Vfb3VfbW9pc19kZV9ncm9zc2Vzc2Vfb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBkYXRlX25haXNzYW5jZV90cm9pc2llbWVfb3VfZGVybmllcl9wbHVzX2VuZmFudCMjLnBheWxvYWQpKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnRGF0ZU5haXNzYW5jZVRyb2lzaWVtZU91RGVybmllclBsdXNFbmZhbnQudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBlbGlnaWJpbGl0ZTpcbiAgICAgIHR5cGVfZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgbm9tYnJlUGVyc29ubmVzQUNoYXJnZVByaXNlc0VuQ29tcHRlOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb2VmZmljZW50c0VuZmFudHNHYXJkZUFsdGVybmVlUHJpc0VuQ29tcHRlOlxuICAgICAgSnMubnVtYmVyIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF90b19qc29vXG4gICAgKGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQgOiBFbGlnaWJpbGl0ZUFsbG9jYXRpb25Mb2dlbWVudC50KVxuICAgIDogZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBlbGlnaWJpbGl0ZSA9XG4gICAgICAgIHR5cGVfZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF90b19qc29vIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQuZWxpZ2liaWxpdGVcbiAgICAgIHZhbCBub21icmVQZXJzb25uZXNBQ2hhcmdlUHJpc2VzRW5Db21wdGUgPVxuICAgICAgICBpbnRlZ2VyX3RvX2ludCBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50Lm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZVxuICAgICAgdmFsIGNvZWZmaWNlbnRzRW5mYW50c0dhcmRlQWx0ZXJuZWVQcmlzRW5Db21wdGUgPVxuICAgICAgICBKcy5hcnJheSBAQCBBcnJheS5tYXAgKGZ1biB4IC0+IEpzLm51bWJlcl9vZl9mbG9hdCBAQCBkZWNpbWFsX3RvX2Zsb2F0IHgpIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQuY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlcm5lZV9wcmlzX2VuX2NvbXB0ZVxuICAgICAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X29mX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudCA6IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQgSnMudCkgOlxuICAgIEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50LnQgPVxuICAgIHtcbiAgICAgIGVsaWdpYmlsaXRlID1cbiAgICAgICAgdHlwZV9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X29mX2pzb29cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50IyMuZWxpZ2liaWxpdGU7XG4gICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX3ByaXNlc19lbl9jb21wdGUgPVxuICAgICAgICBpbnRlZ2VyX29mX2ludFxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRcbiAgICAgICAgICAjIy5ub21icmVQZXJzb25uZXNBQ2hhcmdlUHJpc2VzRW5Db21wdGU7XG4gICAgICBjb2VmZmljZW50c19lbmZhbnRzX2dhcmRlX2FsdGVybmVlX3ByaXNfZW5fY29tcHRlID1cbiAgICAgICAgQXJyYXkubWFwIChmdW4geCAtPiBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlciB4KSBAQCBKcy50b19hcnJheVxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRcbiAgICAgICAgICAjIy5jb2VmZmljZW50c0VuZmFudHNHYXJkZUFsdGVybmVlUHJpc0VuQ29tcHRlXG4gICAgfVxuXG5jbGFzcyB0eXBlIHByZXQgPVxuICBvYmplY3RcbiAgICBtZXRob2QgdHlwZVByZXQ6IHR5cGVfcHJldCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZVNpZ25hdHVyZTogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0aXR1bGFpcmVQcmV0OiB0aXR1bGFpcmVfcHJldCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWNjb3JkRmluYW5jZW1lbnRSZXByZXNlbnRhbnRFdGF0T3V0cmVNZXI6XG4gICAgICBhY2NvcmRfZmluYW5jZW1lbnRfcmVwcmVzZW50YW50X2V0YXRfb3V0cmVfbWVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHByZXRfdG9fanNvbyAocHJldCA6IFByZXQudCkgOiBwcmV0IEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIHR5cGVQcmV0ID0gdHlwZV9wcmV0X3RvX2pzb28gcHJldC50eXBlX3ByZXRcbiAgICAgIHZhbCBkYXRlU2lnbmF0dXJlID0gZGF0ZV90b19qc29vIHByZXQuZGF0ZV9zaWduYXR1cmVcbiAgICAgIHZhbCB0aXR1bGFpcmVQcmV0ID0gdGl0dWxhaXJlX3ByZXRfdG9fanNvbyBwcmV0LnRpdHVsYWlyZV9wcmV0XG4gICAgICB2YWwgYWNjb3JkRmluYW5jZW1lbnRSZXByZXNlbnRhbnRFdGF0T3V0cmVNZXIgPVxuICAgICAgICBhY2NvcmRfZmluYW5jZW1lbnRfcmVwcmVzZW50YW50X2V0YXRfb3V0cmVfbWVyX3RvX2pzb28gcHJldC5hY2NvcmRfZmluYW5jZW1lbnRfcmVwcmVzZW50YW50X0V0YXRfb3V0cmVfbWVyXG4gICAgICBlbmRcbiAgbGV0IHByZXRfb2ZfanNvbyAocHJldCA6IHByZXQgSnMudCkgOiBQcmV0LnQgPVxuICAgIHtcbiAgICAgIHR5cGVfcHJldCA9IHR5cGVfcHJldF9vZl9qc29vIHByZXQjIy50eXBlUHJldDtcbiAgICAgIGRhdGVfc2lnbmF0dXJlID0gZGF0ZV9vZl9qc29vIHByZXQjIy5kYXRlU2lnbmF0dXJlO1xuICAgICAgdGl0dWxhaXJlX3ByZXQgPSB0aXR1bGFpcmVfcHJldF9vZl9qc29vIHByZXQjIy50aXR1bGFpcmVQcmV0O1xuICAgICAgYWNjb3JkX2ZpbmFuY2VtZW50X3JlcHJlc2VudGFudF9FdGF0X291dHJlX21lciA9XG4gICAgICAgIGFjY29yZF9maW5hbmNlbWVudF9yZXByZXNlbnRhbnRfZXRhdF9vdXRyZV9tZXJfb2ZfanNvb1xuICAgICAgICAgIHByZXQjIy5hY2NvcmRGaW5hbmNlbWVudFJlcHJlc2VudGFudEV0YXRPdXRyZU1lclxuICAgIH1cblxuY2xhc3MgdHlwZSBsb2dlbWVudF9mb3llciA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCB0eXBlVXNlcjogdHlwZV9sb2dlbWVudF9mb3llciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG9nZW1lbnRGb3llckpldW5lc1RyYXZhaWxsZXVyczogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVtcGxpdENvbmRpdGlvbnNSODMyMjE6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvbnZlbnRpb25uZUxpdnJlSUlJVGl0cmVWQ2hhcElJSTogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY29udmVudGlvbm5lU2Vsb25SZWdsZXNEcm9tOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlQ29udmVudGlvbm5lbWVudDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb25zdHJ1aXRBcHBsaWNhdGlvbkxvaTE5NTcxMklJSTogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVkZXZhbmNlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJEODQyMTY6XG4gICAgICBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYmVuZWZpY2lhaXJlQWlkZUFkdWx0ZU91RW5mYW50SGFuZGljYXBlczpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGxvZ2VtZW50TWV1YmxlRDg0MjI6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGxvZ2VtZW50RXN0Q2hhbWJyZTogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY29sb2NhdGlvbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBsb2dlbWVudF9mb3llcl90b19qc29vIChsb2dlbWVudF9mb3llciA6IExvZ2VtZW50Rm95ZXIudClcbiAgICA6IGxvZ2VtZW50X2ZveWVyIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIHR5cGVVc2VyID0gdHlwZV9sb2dlbWVudF9mb3llcl90b19qc29vIGxvZ2VtZW50X2ZveWVyLnR5cGVfdXNlclxuICAgICAgdmFsIGxvZ2VtZW50Rm95ZXJKZXVuZXNUcmF2YWlsbGV1cnMgPVxuICAgICAgICBKcy5ib29sIGxvZ2VtZW50X2ZveWVyLmxvZ2VtZW50X2ZveWVyX2pldW5lc190cmF2YWlsbGV1cnNcbiAgICAgIHZhbCByZW1wbGl0Q29uZGl0aW9uc1I4MzIyMSA9XG4gICAgICAgIEpzLmJvb2wgbG9nZW1lbnRfZm95ZXIucmVtcGxpdF9jb25kaXRpb25zX3I4MzJfMjFcbiAgICAgIHZhbCBjb252ZW50aW9ubmVMaXZyZUlJSVRpdHJlVkNoYXBJSUkgPVxuICAgICAgICBKcy5ib29sIGxvZ2VtZW50X2ZveWVyLmNvbnZlbnRpb25uZV9saXZyZV9JSUlfdGl0cmVfVl9jaGFwX0lJSVxuICAgICAgdmFsIGNvbnZlbnRpb25uZVNlbG9uUmVnbGVzRHJvbSA9XG4gICAgICAgIEpzLmJvb2wgbG9nZW1lbnRfZm95ZXIuY29udmVudGlvbm5lX3NlbG9uX3JlZ2xlc19kcm9tXG4gICAgICB2YWwgZGF0ZUNvbnZlbnRpb25uZW1lbnQgPVxuICAgICAgICBkYXRlX3RvX2pzb28gbG9nZW1lbnRfZm95ZXIuZGF0ZV9jb252ZW50aW9ubmVtZW50XG4gICAgICB2YWwgY29uc3RydWl0QXBwbGljYXRpb25Mb2kxOTU3MTJJSUkgPVxuICAgICAgICBKcy5ib29sIGxvZ2VtZW50X2ZveWVyLmNvbnN0cnVpdF9hcHBsaWNhdGlvbl9sb2lfMTk1N18xMl9JSUlcbiAgICAgIHZhbCByZWRldmFuY2UgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgbG9nZW1lbnRfZm95ZXIucmVkZXZhbmNlXG4gICAgICB2YWwgY2F0ZWdvcmllRXF1aXZhbGVuY2VMb3llckQ4NDIxNiA9XG4gICAgICAgIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX3RvX2pzb28gbG9nZW1lbnRfZm95ZXIuY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZcbiAgICAgIHZhbCBiZW5lZmljaWFpcmVBaWRlQWR1bHRlT3VFbmZhbnRIYW5kaWNhcGVzID1cbiAgICAgICAgSnMuYm9vbCBsb2dlbWVudF9mb3llci5iZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNcbiAgICAgIHZhbCBsb2dlbWVudE1ldWJsZUQ4NDIyID0gSnMuYm9vbCBsb2dlbWVudF9mb3llci5sb2dlbWVudF9tZXVibGVfZDg0Ml8yXG4gICAgICB2YWwgbG9nZW1lbnRFc3RDaGFtYnJlID0gSnMuYm9vbCBsb2dlbWVudF9mb3llci5sb2dlbWVudF9lc3RfY2hhbWJyZVxuICAgICAgdmFsIGNvbG9jYXRpb24gPSBKcy5ib29sIGxvZ2VtZW50X2ZveWVyLmNvbG9jYXRpb25cbiAgICAgIGVuZFxuICBsZXQgbG9nZW1lbnRfZm95ZXJfb2ZfanNvbyAobG9nZW1lbnRfZm95ZXIgOiBsb2dlbWVudF9mb3llciBKcy50KSA6XG4gICAgTG9nZW1lbnRGb3llci50ID1cbiAgICB7XG4gICAgICB0eXBlX3VzZXIgPSB0eXBlX2xvZ2VtZW50X2ZveWVyX29mX2pzb28gbG9nZW1lbnRfZm95ZXIjIy50eXBlVXNlcjtcbiAgICAgIGxvZ2VtZW50X2ZveWVyX2pldW5lc190cmF2YWlsbGV1cnMgPVxuICAgICAgICBKcy50b19ib29sIGxvZ2VtZW50X2ZveWVyIyMubG9nZW1lbnRGb3llckpldW5lc1RyYXZhaWxsZXVycztcbiAgICAgIHJlbXBsaXRfY29uZGl0aW9uc19yODMyXzIxID1cbiAgICAgICAgSnMudG9fYm9vbCBsb2dlbWVudF9mb3llciMjLnJlbXBsaXRDb25kaXRpb25zUjgzMjIxO1xuICAgICAgY29udmVudGlvbm5lX2xpdnJlX0lJSV90aXRyZV9WX2NoYXBfSUlJID1cbiAgICAgICAgSnMudG9fYm9vbCBsb2dlbWVudF9mb3llciMjLmNvbnZlbnRpb25uZUxpdnJlSUlJVGl0cmVWQ2hhcElJSTtcbiAgICAgIGNvbnZlbnRpb25uZV9zZWxvbl9yZWdsZXNfZHJvbSA9XG4gICAgICAgIEpzLnRvX2Jvb2wgbG9nZW1lbnRfZm95ZXIjIy5jb252ZW50aW9ubmVTZWxvblJlZ2xlc0Ryb207XG4gICAgICBkYXRlX2NvbnZlbnRpb25uZW1lbnQgPVxuICAgICAgICBkYXRlX29mX2pzb28gbG9nZW1lbnRfZm95ZXIjIy5kYXRlQ29udmVudGlvbm5lbWVudDtcbiAgICAgIGNvbnN0cnVpdF9hcHBsaWNhdGlvbl9sb2lfMTk1N18xMl9JSUkgPVxuICAgICAgICBKcy50b19ib29sIGxvZ2VtZW50X2ZveWVyIyMuY29uc3RydWl0QXBwbGljYXRpb25Mb2kxOTU3MTJJSUk7XG4gICAgICByZWRldmFuY2UgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgbG9nZW1lbnRfZm95ZXIjIy5yZWRldmFuY2U7XG4gICAgICBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDg0Ml8xNiA9XG4gICAgICAgIGNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX29mX2pzb29cbiAgICAgICAgICBsb2dlbWVudF9mb3llciMjLmNhdGVnb3JpZUVxdWl2YWxlbmNlTG95ZXJEODQyMTY7XG4gICAgICBiZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXMgPVxuICAgICAgICBKcy50b19ib29sIGxvZ2VtZW50X2ZveWVyIyMuYmVuZWZpY2lhaXJlQWlkZUFkdWx0ZU91RW5mYW50SGFuZGljYXBlcztcbiAgICAgIGxvZ2VtZW50X21ldWJsZV9kODQyXzIgPVxuICAgICAgICBKcy50b19ib29sIGxvZ2VtZW50X2ZveWVyIyMubG9nZW1lbnRNZXVibGVEODQyMjtcbiAgICAgIGxvZ2VtZW50X2VzdF9jaGFtYnJlID0gSnMudG9fYm9vbCBsb2dlbWVudF9mb3llciMjLmxvZ2VtZW50RXN0Q2hhbWJyZTtcbiAgICAgIGNvbG9jYXRpb24gPSBKcy50b19ib29sIGxvZ2VtZW50X2ZveWVyIyMuY29sb2NhdGlvblxuICAgIH1cblxuY2xhc3MgdHlwZSBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBpZGVudGlmaWFudDogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgb2JsaWdhdGlvblNjb2xhaXJlOlxuICAgICAgc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlbXVuZXJhdGlvbk1lbnN1ZWxsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlRGVOYWlzc2FuY2U6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYURlamFPdXZlcnREcm9pdEF1eEFsbG9jYXRpb25zRmFtaWxpYWxlczpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvbyAoZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNcbiAgICA6IEVuZmFudFByZXN0YXRpb25zRmFtaWxpYWxlcy50KSA6IGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGlkZW50aWZpYW50ID1cbiAgICAgICAgaW50ZWdlcl90b19pbnQgZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMuaWRlbnRpZmlhbnRcbiAgICAgIHZhbCBvYmxpZ2F0aW9uU2NvbGFpcmUgPVxuICAgICAgICBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZV90b19qc29vIGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLm9ibGlnYXRpb25fc2NvbGFpcmVcbiAgICAgIHZhbCByZW11bmVyYXRpb25NZW5zdWVsbGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMucmVtdW5lcmF0aW9uX21lbnN1ZWxsZVxuICAgICAgdmFsIGRhdGVEZU5haXNzYW5jZSA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy5kYXRlX2RlX25haXNzYW5jZVxuICAgICAgdmFsIGFEZWphT3V2ZXJ0RHJvaXRBdXhBbGxvY2F0aW9uc0ZhbWlsaWFsZXMgPVxuICAgICAgICBKcy5ib29sIGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLmFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgICAgIGVuZFxuICBsZXQgZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvb1xuICAgIChlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyA6IGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIEpzLnQpIDpcbiAgICBFbmZhbnRQcmVzdGF0aW9uc0ZhbWlsaWFsZXMudCA9XG4gICAge1xuICAgICAgaWRlbnRpZmlhbnQgPSBpbnRlZ2VyX29mX2ludCBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyMjLmlkZW50aWZpYW50O1xuICAgICAgb2JsaWdhdGlvbl9zY29sYWlyZSA9XG4gICAgICAgIHNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlX29mX2pzb29cbiAgICAgICAgICBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyMjLm9ibGlnYXRpb25TY29sYWlyZTtcbiAgICAgIHJlbXVuZXJhdGlvbl9tZW5zdWVsbGUgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMjIy5yZW11bmVyYXRpb25NZW5zdWVsbGU7XG4gICAgICBkYXRlX2RlX25haXNzYW5jZSA9XG4gICAgICAgIGRhdGVfb2ZfanNvbyBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyMjLmRhdGVEZU5haXNzYW5jZTtcbiAgICAgIGFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNcbiAgICAgICAgICAjIy5hRGVqYU91dmVydERyb2l0QXV4QWxsb2NhdGlvbnNGYW1pbGlhbGVzXG4gICAgfVxuXG5jbGFzcyB0eXBlIHR5cGVfYmFpbGxldXIgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJCYWlsbGV1clNvY2lhbFwiXG4gICAgICAgIC0gXCJCYWlsbGV1clByaXZlQXZlY0NvbnZlbnRpb25uZW1lbnRTb2NpYWxcIlxuICAgICAgICAtIFwiQmFpbGxldXJQcml2ZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHR5cGVfYmFpbGxldXJfdG9fanNvbyA6IFR5cGVCYWlsbGV1ci50IC0+IHR5cGVfYmFpbGxldXIgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgQmFpbGxldXJTb2NpYWwgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJCYWlsbGV1clNvY2lhbFwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKGNvbnZlbnRpb25fYmFpbGxldXJfc29jaWFsX3RvX2pzb28gYXJnKSlcbiAgICBlbmRcbiAgfCBCYWlsbGV1clByaXZlQXZlY0NvbnZlbnRpb25uZW1lbnRTb2NpYWwgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJCYWlsbGV1clByaXZlQXZlY0NvbnZlbnRpb25uZW1lbnRTb2NpYWxcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChjb252ZW50aW9uX2Ffbl9oX2FfdG9fanNvbyBhcmcpKVxuICAgIGVuZFxuICB8IEJhaWxsZXVyUHJpdmUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJCYWlsbGV1clByaXZlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCB0eXBlX2JhaWxsZXVyX29mX2pzb28gKHR5cGVfYmFpbGxldXIgOiB0eXBlX2JhaWxsZXVyIEpzLnQpXG4gIDogVHlwZUJhaWxsZXVyLnQgPVxuICBtYXRjaCB0eXBlX2JhaWxsZXVyIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiQmFpbGxldXJTb2NpYWxcIiAtPlxuICBUeXBlQmFpbGxldXIuQmFpbGxldXJTb2NpYWwgKGNvbnZlbnRpb25fYmFpbGxldXJfc29jaWFsX29mX2pzb28gKEpzLlVuc2FmZS5jb2VyY2UgdHlwZV9iYWlsbGV1ciMjLnBheWxvYWQpKVxuICB8IFwiQmFpbGxldXJQcml2ZUF2ZWNDb252ZW50aW9ubmVtZW50U29jaWFsXCIgLT5cbiAgVHlwZUJhaWxsZXVyLkJhaWxsZXVyUHJpdmVBdmVjQ29udmVudGlvbm5lbWVudFNvY2lhbCAoY29udmVudGlvbl9hX25faF9hX29mX2pzb28gKEpzLlVuc2FmZS5jb2VyY2UgdHlwZV9iYWlsbGV1ciMjLnBheWxvYWQpKVxuICB8IFwiQmFpbGxldXJQcml2ZVwiIC0+IFR5cGVCYWlsbGV1ci5CYWlsbGV1clByaXZlICgpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdUeXBlQmFpbGxldXIudCdcIiBjb25zKVxuXG5cbmNsYXNzIHR5cGUgbG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnMgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJOb25cIlxuICAgICAgICAtIFwiT3VpXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgbG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnNfdG9fanNvb1xuICA6IExvdWVPdVNvdXNMb3VlQURlc1RpZXJzLnQgLT4gbG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnMgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgTm9uIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTm9uXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgT3VpIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiT3VpXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAocGVyc29ubmVfc291c19sb2NhdGlvbl90b19qc29vIGFyZykpXG4gICAgZW5kXG5cbmxldCBsb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVyc19vZl9qc29vXG4gIChsb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVycyA6IGxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzIEpzLnQpXG4gIDogTG91ZU91U291c0xvdWVBRGVzVGllcnMudCA9XG4gIG1hdGNoIGxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiTm9uXCIgLT4gTG91ZU91U291c0xvdWVBRGVzVGllcnMuTm9uICgpXG4gIHwgXCJPdWlcIiAtPlxuICBMb3VlT3VTb3VzTG91ZUFEZXNUaWVycy5PdWkgKHBlcnNvbm5lX3NvdXNfbG9jYXRpb25fb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBsb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVycyMjLnBheWxvYWQpKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnTG91ZU91U291c0xvdWVBRGVzVGllcnMudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgbmF0aW9uYWxpdGUgPVxuICBvYmplY3RcbiAgICBtZXRob2Qga2luZCA6XG4gICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgICAoKiogRXhwZWN0cyBvbmUgb2Y6XG4gICAgICAgIC0gXCJGcmFuY2Fpc2VcIlxuICAgICAgICAtIFwiRXRyYW5nZXJlXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgbmF0aW9uYWxpdGVfdG9fanNvbyA6IE5hdGlvbmFsaXRlLnQgLT4gbmF0aW9uYWxpdGUgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgRnJhbmNhaXNlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRnJhbmNhaXNlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG4gIHwgRXRyYW5nZXJlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRXRyYW5nZXJlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoY29uZGl0aW9uc19ldHJhbmdlcnNfdG9fanNvbyBhcmcpKVxuICAgIGVuZFxuXG5sZXQgbmF0aW9uYWxpdGVfb2ZfanNvbyAobmF0aW9uYWxpdGUgOiBuYXRpb25hbGl0ZSBKcy50KSA6IE5hdGlvbmFsaXRlLnQgPVxuICBtYXRjaCBuYXRpb25hbGl0ZSMjLmtpbmQgfD4gSnMudG9fc3RyaW5nIHdpdGhcbiAgfCBcIkZyYW5jYWlzZVwiIC0+IE5hdGlvbmFsaXRlLkZyYW5jYWlzZSAoKVxuICB8IFwiRXRyYW5nZXJlXCIgLT5cbiAgTmF0aW9uYWxpdGUuRXRyYW5nZXJlIChjb25kaXRpb25zX2V0cmFuZ2Vyc19vZl9qc29vIChKcy5VbnNhZmUuY29lcmNlIG5hdGlvbmFsaXRlIyMucGF5bG9hZCkpXG4gIHwgY29ucyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJVbmV4cGVjdGVkICclcycga2luZCBmb3IgdGhlIGVudW1lcmF0aW9uICdOYXRpb25hbGl0ZS50J1wiIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkNoYW5nZW1lbnRcIlxuICAgICAgICAtIFwiUGFzRGVDaGFuZ2VtZW50XCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfdG9fanNvb1xuICA6IENoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LnQgLT4gY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQgSnMudFxuICA9IGZ1bmN0aW9uXG4gIHwgQ2hhbmdlbWVudCBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkNoYW5nZW1lbnRcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChpbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF90b19qc29vIGFyZykpXG4gICAgZW5kXG4gIHwgUGFzRGVDaGFuZ2VtZW50IGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUGFzRGVDaGFuZ2VtZW50XCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAoIGFyZykpXG4gICAgZW5kXG5cbmxldCBjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9vZl9qc29vXG4gIChjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNCA6IGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IEpzLnQpXG4gIDogQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQudCA9XG4gIG1hdGNoIGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80IyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiQ2hhbmdlbWVudFwiIC0+XG4gIENoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LkNoYW5nZW1lbnQgKGluZm9zX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80X29mX2pzb28gKEpzLlVuc2FmZS5jb2VyY2UgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQjIy5wYXlsb2FkKSlcbiAgfCBcIlBhc0RlQ2hhbmdlbWVudFwiIC0+IENoYW5nZW1lbnRMb2dlbWVudEQ4NDI0LlBhc0RlQ2hhbmdlbWVudCAoKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnQ2hhbmdlbWVudExvZ2VtZW50RDg0MjQudCdcIlxuICAgICAgICBjb25zKVxuXG5cbmNsYXNzIHR5cGUgaW5mb3JtYXRpb25zX3ByaW1lX2RlX2RlbWVuYWdlbWVudCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBub21icmVFbmZhbnRzQU5haXRyZUFwcmVzVHJvaXNpZW1lTW9pc0dyb3NzZXNzZTpcbiAgICAgIGludCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVOYWlzc2FuY2VUcm9pc2llbWVFbmZhbnRPdURlcm5pZXJTaVBsdXM6XG4gICAgICBkYXRlX25haXNzYW5jZV90cm9pc2llbWVfb3VfZGVybmllcl9wbHVzX2VuZmFudCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBpbmZvcm1hdGlvbnNfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X3RvX2pzb29cbiAgICAoaW5mb3JtYXRpb25zX3ByaW1lX2RlX2RlbWVuYWdlbWVudCA6IEluZm9ybWF0aW9uc1ByaW1lRGVEZW1lbmFnZW1lbnQudClcbiAgICA6IGluZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZW1lbnQgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbm9tYnJlRW5mYW50c0FOYWl0cmVBcHJlc1Ryb2lzaWVtZU1vaXNHcm9zc2Vzc2UgPVxuICAgICAgICBpbnRlZ2VyX3RvX2ludCBpbmZvcm1hdGlvbnNfcHJpbWVfZGVfZGVtZW5hZ2VtZW50Lm5vbWJyZV9lbmZhbnRzX2FfbmFpdHJlX2FwcmVzX3Ryb2lzaWVtZV9tb2lzX2dyb3NzZXNzZVxuICAgICAgdmFsIGRhdGVOYWlzc2FuY2VUcm9pc2llbWVFbmZhbnRPdURlcm5pZXJTaVBsdXMgPVxuICAgICAgICBkYXRlX25haXNzYW5jZV90cm9pc2llbWVfb3VfZGVybmllcl9wbHVzX2VuZmFudF90b19qc29vIGluZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZW1lbnQuZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX2VuZmFudF9vdV9kZXJuaWVyX3NpX3BsdXNcbiAgICAgIGVuZFxuICBsZXQgaW5mb3JtYXRpb25zX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9vZl9qc29vXG4gICAgKGluZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZW1lbnRcbiAgICAgIDogaW5mb3JtYXRpb25zX3ByaW1lX2RlX2RlbWVuYWdlbWVudCBKcy50KSA6XG4gICAgSW5mb3JtYXRpb25zUHJpbWVEZURlbWVuYWdlbWVudC50ID1cbiAgICB7XG4gICAgICBub21icmVfZW5mYW50c19hX25haXRyZV9hcHJlc190cm9pc2llbWVfbW9pc19ncm9zc2Vzc2UgPVxuICAgICAgICBpbnRlZ2VyX29mX2ludFxuICAgICAgICAgIGluZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZW1lbnRcbiAgICAgICAgICAjIy5ub21icmVFbmZhbnRzQU5haXRyZUFwcmVzVHJvaXNpZW1lTW9pc0dyb3NzZXNzZTtcbiAgICAgIGRhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZV9lbmZhbnRfb3VfZGVybmllcl9zaV9wbHVzID1cbiAgICAgICAgZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2Rlcm5pZXJfcGx1c19lbmZhbnRfb2ZfanNvb1xuICAgICAgICAgIGluZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZW1lbnRcbiAgICAgICAgICAjIy5kYXRlTmFpc3NhbmNlVHJvaXNpZW1lRW5mYW50T3VEZXJuaWVyU2lQbHVzXG4gICAgfVxuXG5jbGFzcyB0eXBlIHByb3ByaWV0YWlyZSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBtZW5zdWFsaXRlUHJpbmNpcGFsZTogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjaGFyZ2VzTWVuc3VlbGxlc1ByZXQ6IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUVudHJlZUxvZ2VtZW50OiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTU6XG4gICAgICB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1OlxuICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG9jYWxIYWJpdGVQcmVtaWVyZUZvaXNCZW5lZmljaWFpcmU6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvcHJvcHJpZXRlOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25SODIyMTExMzE3OiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBhbmNpZW5uZXRlTG9nZW1lbnQ6IG5ldWZfb3VfYW5jaWVuIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBwcmV0OiBwcmV0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBvcGVyYXRpb25zTG9nZW1lbnRFdm9sdXRpZnNTb2NpYXV4QWNjZXNzaW9uUHJvcHJpZXRlQWlkZWVFdGF0OlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBwcm9wcmlldGFpcmVfdG9fanNvbyAocHJvcHJpZXRhaXJlIDogUHJvcHJpZXRhaXJlLnQpXG4gICAgOiBwcm9wcmlldGFpcmUgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbWVuc3VhbGl0ZVByaW5jaXBhbGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgcHJvcHJpZXRhaXJlLm1lbnN1YWxpdGVfcHJpbmNpcGFsZVxuICAgICAgdmFsIGNoYXJnZXNNZW5zdWVsbGVzUHJldCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBwcm9wcmlldGFpcmUuY2hhcmdlc19tZW5zdWVsbGVzX3ByZXRcbiAgICAgIHZhbCBkYXRlRW50cmVlTG9nZW1lbnQgPSBkYXRlX3RvX2pzb28gcHJvcHJpZXRhaXJlLmRhdGVfZW50cmVlX2xvZ2VtZW50XG4gICAgICB2YWwgdHlwZVRyYXZhdXhMb2dlbWVudEQ4MzIxNSA9XG4gICAgICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1X3RvX2pzb28gcHJvcHJpZXRhaXJlLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1XG4gICAgICB2YWwgdHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1ID1cbiAgICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNV90b19qc29vIHByb3ByaWV0YWlyZS50eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81XG4gICAgICB2YWwgbG9jYWxIYWJpdGVQcmVtaWVyZUZvaXNCZW5lZmljaWFpcmUgPVxuICAgICAgICBKcy5ib29sIHByb3ByaWV0YWlyZS5sb2NhbF9oYWJpdGVfcHJlbWllcmVfZm9pc19iZW5lZmljaWFpcmVcbiAgICAgIHZhbCBjb3Byb3ByaWV0ZSA9IEpzLmJvb2wgcHJvcHJpZXRhaXJlLmNvcHJvcHJpZXRlXG4gICAgICB2YWwgc2l0dWF0aW9uUjgyMjExMTMxNyA9IEpzLmJvb2wgcHJvcHJpZXRhaXJlLnNpdHVhdGlvbl9yODIyXzExXzEzXzE3XG4gICAgICB2YWwgYW5jaWVubmV0ZUxvZ2VtZW50ID1cbiAgICAgICAgbmV1Zl9vdV9hbmNpZW5fdG9fanNvbyBwcm9wcmlldGFpcmUuYW5jaWVubmV0ZV9sb2dlbWVudFxuICAgICAgdmFsIHByZXQgPSBwcmV0X3RvX2pzb28gcHJvcHJpZXRhaXJlLnByZXRcbiAgICAgIHZhbCBvcGVyYXRpb25zTG9nZW1lbnRFdm9sdXRpZnNTb2NpYXV4QWNjZXNzaW9uUHJvcHJpZXRlQWlkZWVFdGF0ID1cbiAgICAgICAgSnMuYm9vbCBwcm9wcmlldGFpcmUub3BlcmF0aW9uc19sb2dlbWVudF9ldm9sdXRpZnNfc29jaWF1eF9hY2Nlc3Npb25fcHJvcHJpZXRlX2FpZGVlX0V0YXRcbiAgICAgIGVuZFxuICBsZXQgcHJvcHJpZXRhaXJlX29mX2pzb28gKHByb3ByaWV0YWlyZSA6IHByb3ByaWV0YWlyZSBKcy50KSA6XG4gICAgUHJvcHJpZXRhaXJlLnQgPVxuICAgIHtcbiAgICAgIG1lbnN1YWxpdGVfcHJpbmNpcGFsZSA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBwcm9wcmlldGFpcmUjIy5tZW5zdWFsaXRlUHJpbmNpcGFsZTtcbiAgICAgIGNoYXJnZXNfbWVuc3VlbGxlc19wcmV0ID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIHByb3ByaWV0YWlyZSMjLmNoYXJnZXNNZW5zdWVsbGVzUHJldDtcbiAgICAgIGRhdGVfZW50cmVlX2xvZ2VtZW50ID0gZGF0ZV9vZl9qc29vIHByb3ByaWV0YWlyZSMjLmRhdGVFbnRyZWVMb2dlbWVudDtcbiAgICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1ID1cbiAgICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTVfb2ZfanNvb1xuICAgICAgICAgIHByb3ByaWV0YWlyZSMjLnR5cGVUcmF2YXV4TG9nZW1lbnREODMyMTU7XG4gICAgICB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfcjg0Ml81ID1cbiAgICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNV9vZl9qc29vXG4gICAgICAgICAgcHJvcHJpZXRhaXJlIyMudHlwZVRyYXZhdXhMb2dlbWVudFI4NDI1O1xuICAgICAgbG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlID1cbiAgICAgICAgSnMudG9fYm9vbCBwcm9wcmlldGFpcmUjIy5sb2NhbEhhYml0ZVByZW1pZXJlRm9pc0JlbmVmaWNpYWlyZTtcbiAgICAgIGNvcHJvcHJpZXRlID0gSnMudG9fYm9vbCBwcm9wcmlldGFpcmUjIy5jb3Byb3ByaWV0ZTtcbiAgICAgIHNpdHVhdGlvbl9yODIyXzExXzEzXzE3ID0gSnMudG9fYm9vbCBwcm9wcmlldGFpcmUjIy5zaXR1YXRpb25SODIyMTExMzE3O1xuICAgICAgYW5jaWVubmV0ZV9sb2dlbWVudCA9XG4gICAgICAgIG5ldWZfb3VfYW5jaWVuX29mX2pzb28gcHJvcHJpZXRhaXJlIyMuYW5jaWVubmV0ZUxvZ2VtZW50O1xuICAgICAgcHJldCA9IHByZXRfb2ZfanNvbyBwcm9wcmlldGFpcmUjIy5wcmV0O1xuICAgICAgb3BlcmF0aW9uc19sb2dlbWVudF9ldm9sdXRpZnNfc29jaWF1eF9hY2Nlc3Npb25fcHJvcHJpZXRlX2FpZGVlX0V0YXQgPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgcHJvcHJpZXRhaXJlXG4gICAgICAgICAgIyMub3BlcmF0aW9uc0xvZ2VtZW50RXZvbHV0aWZzU29jaWF1eEFjY2Vzc2lvblByb3ByaWV0ZUFpZGVlRXRhdFxuICAgIH1cblxuY2xhc3MgdHlwZSBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGFnZUw1MTIzMjogUnVudGltZV9qc29vLlJ1bnRpbWUuZHVyYXRpb24gSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRyb2l0T3V2ZXJ0OlxuICAgICAgKHVuaXQsICBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyBKcy50IC0+IGJvb2wgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gICAgbWV0aG9kIGNvbmRpdGlvbnNIb3JzQWdlOlxuICAgICAgKHVuaXQsICBlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyBKcy50IC0+IGJvb2wgSnMudCkgSnMubWV0aF9jYWxsYmFjayBKcy5tZXRoXG4gICAgbWV0aG9kIHJlZ2ltZU91dHJlTWVyTDc1MTE6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc190b19qc29vXG4gICAgKGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgOiBFbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlcy50KVxuICAgIDogZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBhZ2VMNTEyMzIgPVxuICAgICAgICBkdXJhdGlvbl90b19qc29vIGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMuYWdlX2w1MTJfM18yXG4gICAgICBtZXRob2QgZHJvaXRPdXZlcnQgPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBfIChmdW5jdGlvbl9pbnB1dDA6IGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIEpzLnQpIC0+XG4gICAgICAgICAgSnMuYm9vbCAoZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy5kcm9pdF9vdXZlcnQgKGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX29mX2pzb29cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25faW5wdXQwKSkpXG4gICAgICBtZXRob2QgY29uZGl0aW9uc0hvcnNBZ2UgPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBfIChmdW5jdGlvbl9pbnB1dDA6IGVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIEpzLnQpIC0+XG4gICAgICAgICAgSnMuYm9vbCAoZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcy5jb25kaXRpb25zX2hvcnNfYWdlIFxuICAgICAgICAgIChlbmZhbnRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19vZl9qc29vXG4gICAgICAgICAgICBmdW5jdGlvbl9pbnB1dDApKSlcbiAgICAgIHZhbCByZWdpbWVPdXRyZU1lckw3NTExID1cbiAgICAgICAgSnMuYm9vbCBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzLnJlZ2ltZV9vdXRyZV9tZXJfbDc1MV8xXG4gICAgICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvb1xuICAgIChlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzXG4gICAgICA6IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMgSnMudCkgOlxuICAgIEVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzLnQgPVxuICAgIHtcbiAgICAgIGFnZV9sNTEyXzNfMiA9XG4gICAgICAgIGR1cmF0aW9uX29mX2pzb28gZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyMjLmFnZUw1MTIzMjtcbiAgICAgIGRyb2l0X291dmVydCA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICdkcm9pdF9vdXZlcnQnIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIjtcbiAgICAgIGNvbmRpdGlvbnNfaG9yc19hZ2UgPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAnY29uZGl0aW9uc19ob3JzX2FnZScgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiO1xuICAgICAgcmVnaW1lX291dHJlX21lcl9sNzUxXzEgPVxuICAgICAgICBKcy50b19ib29sIGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXMjIy5yZWdpbWVPdXRyZU1lckw3NTExXG4gICAgfVxuXG5jbGFzcyB0eXBlIGRlbWFuZGV1ciA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBkYXRlTmFpc3NhbmNlOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG5hdGlvbmFsaXRlOiBuYXRpb25hbGl0ZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcGVyc29ubmVIZWJlcmdlZUNlbnRyZVNvaW5MTDE2MjIyM1NlY3VyaXRlU29jaWFsZTpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGVzdE5vblNhbGFyaWVBZ3JpY29sZUw3ODE4TDc4MTQ2Q29kZVJ1cmFsOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbWFnaXN0cmF0Rm9uY3Rpb25uYWlyZUNlbnRyZUludGVyZXRzTWF0ZXJpZWxzRmFtaWxpYXV4SG9yc01heW90dGU6XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGRlbWFuZGV1cl90b19qc29vIChkZW1hbmRldXIgOiBEZW1hbmRldXIudCkgOiBkZW1hbmRldXIgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZGF0ZU5haXNzYW5jZSA9IGRhdGVfdG9fanNvbyBkZW1hbmRldXIuZGF0ZV9uYWlzc2FuY2VcbiAgICAgIHZhbCBuYXRpb25hbGl0ZSA9IG5hdGlvbmFsaXRlX3RvX2pzb28gZGVtYW5kZXVyLm5hdGlvbmFsaXRlXG4gICAgICB2YWwgcGVyc29ubmVIZWJlcmdlZUNlbnRyZVNvaW5MTDE2MjIyM1NlY3VyaXRlU29jaWFsZSA9XG4gICAgICAgIEpzLmJvb2wgZGVtYW5kZXVyLnBlcnNvbm5lX2hlYmVyZ2VlX2NlbnRyZV9zb2luX2xfTDE2Ml8yMl8zX3NlY3VyaXRlX3NvY2lhbGVcbiAgICAgIHZhbCBlc3ROb25TYWxhcmllQWdyaWNvbGVMNzgxOEw3ODE0NkNvZGVSdXJhbCA9XG4gICAgICAgIEpzLmJvb2wgZGVtYW5kZXVyLmVzdF9ub25fc2FsYXJpZV9hZ3JpY29sZV9sNzgxXzhfbF83ODFfNDZfY29kZV9ydXJhbFxuICAgICAgdmFsIG1hZ2lzdHJhdEZvbmN0aW9ubmFpcmVDZW50cmVJbnRlcmV0c01hdGVyaWVsc0ZhbWlsaWF1eEhvcnNNYXlvdHRlID1cbiAgICAgICAgSnMuYm9vbCBkZW1hbmRldXIubWFnaXN0cmF0X2ZvbmN0aW9ubmFpcmVfY2VudHJlX2ludGVyZXRzX21hdGVyaWVsc19mYW1pbGlhdXhfaG9yc19tYXlvdHRlXG4gICAgICBlbmRcbiAgbGV0IGRlbWFuZGV1cl9vZl9qc29vIChkZW1hbmRldXIgOiBkZW1hbmRldXIgSnMudCkgOiBEZW1hbmRldXIudCA9XG4gICAge1xuICAgICAgZGF0ZV9uYWlzc2FuY2UgPSBkYXRlX29mX2pzb28gZGVtYW5kZXVyIyMuZGF0ZU5haXNzYW5jZTtcbiAgICAgIG5hdGlvbmFsaXRlID0gbmF0aW9uYWxpdGVfb2ZfanNvbyBkZW1hbmRldXIjIy5uYXRpb25hbGl0ZTtcbiAgICAgIHBlcnNvbm5lX2hlYmVyZ2VlX2NlbnRyZV9zb2luX2xfTDE2Ml8yMl8zX3NlY3VyaXRlX3NvY2lhbGUgPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgZGVtYW5kZXVyIyMucGVyc29ubmVIZWJlcmdlZUNlbnRyZVNvaW5MTDE2MjIyM1NlY3VyaXRlU29jaWFsZTtcbiAgICAgIGVzdF9ub25fc2FsYXJpZV9hZ3JpY29sZV9sNzgxXzhfbF83ODFfNDZfY29kZV9ydXJhbCA9XG4gICAgICAgIEpzLnRvX2Jvb2wgZGVtYW5kZXVyIyMuZXN0Tm9uU2FsYXJpZUFncmljb2xlTDc4MThMNzgxNDZDb2RlUnVyYWw7XG4gICAgICBtYWdpc3RyYXRfZm9uY3Rpb25uYWlyZV9jZW50cmVfaW50ZXJldHNfbWF0ZXJpZWxzX2ZhbWlsaWF1eF9ob3JzX21heW90dGUgPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgZGVtYW5kZXVyXG4gICAgICAgICAgIyMubWFnaXN0cmF0Rm9uY3Rpb25uYWlyZUNlbnRyZUludGVyZXRzTWF0ZXJpZWxzRmFtaWxpYXV4SG9yc01heW90dGVcbiAgICB9XG5cbmNsYXNzIHR5cGUgZW5mYW50X2FfY2hhcmdlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGlkZW50aWZpYW50OiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBuYXRpb25hbGl0ZTogbmF0aW9uYWxpdGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGFEZWphT3V2ZXJ0RHJvaXRBdXhBbGxvY2F0aW9uc0ZhbWlsaWFsZXM6XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlRGVOYWlzc2FuY2U6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVtdW5lcmF0aW9uTWVuc3VlbGxlOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG9ibGlnYXRpb25TY29sYWlyZTpcbiAgICAgIHNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25HYXJkZUFsdGVybmVlOlxuICAgICAgc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBldHVkZXNBcHByZW50aXNzYWdlU3RhZ2VGb3JtYXRpb25Qcm9JbXBvc3NpYmlsaXRlVHJhdmFpbDpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgZW5mYW50X2FfY2hhcmdlX3RvX2pzb28gKGVuZmFudF9hX2NoYXJnZSA6IEVuZmFudEFDaGFyZ2UudClcbiAgICA6IGVuZmFudF9hX2NoYXJnZSBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBpZGVudGlmaWFudCA9IGludGVnZXJfdG9faW50IGVuZmFudF9hX2NoYXJnZS5pZGVudGlmaWFudFxuICAgICAgdmFsIG5hdGlvbmFsaXRlID0gbmF0aW9uYWxpdGVfdG9fanNvbyBlbmZhbnRfYV9jaGFyZ2UubmF0aW9uYWxpdGVcbiAgICAgIHZhbCBhRGVqYU91dmVydERyb2l0QXV4QWxsb2NhdGlvbnNGYW1pbGlhbGVzID1cbiAgICAgICAgSnMuYm9vbCBlbmZhbnRfYV9jaGFyZ2UuYV9kZWphX291dmVydF9kcm9pdF9hdXhfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xuICAgICAgdmFsIGRhdGVEZU5haXNzYW5jZSA9IGRhdGVfdG9fanNvbyBlbmZhbnRfYV9jaGFyZ2UuZGF0ZV9kZV9uYWlzc2FuY2VcbiAgICAgIHZhbCByZW11bmVyYXRpb25NZW5zdWVsbGUgPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgZW5mYW50X2FfY2hhcmdlLnJlbXVuZXJhdGlvbl9tZW5zdWVsbGVcbiAgICAgIHZhbCBvYmxpZ2F0aW9uU2NvbGFpcmUgPVxuICAgICAgICBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZV90b19qc29vIGVuZmFudF9hX2NoYXJnZS5vYmxpZ2F0aW9uX3Njb2xhaXJlXG4gICAgICB2YWwgc2l0dWF0aW9uR2FyZGVBbHRlcm5lZSA9XG4gICAgICAgIHNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZV90b19qc29vIGVuZmFudF9hX2NoYXJnZS5zaXR1YXRpb25fZ2FyZGVfYWx0ZXJuZWVcbiAgICAgIHZhbCBldHVkZXNBcHByZW50aXNzYWdlU3RhZ2VGb3JtYXRpb25Qcm9JbXBvc3NpYmlsaXRlVHJhdmFpbCA9XG4gICAgICAgIEpzLmJvb2wgZW5mYW50X2FfY2hhcmdlLmV0dWRlc19hcHByZW50aXNzYWdlX3N0YWdlX2Zvcm1hdGlvbl9wcm9faW1wb3NzaWJpbGl0ZV90cmF2YWlsXG4gICAgICBlbmRcbiAgbGV0IGVuZmFudF9hX2NoYXJnZV9vZl9qc29vIChlbmZhbnRfYV9jaGFyZ2UgOiBlbmZhbnRfYV9jaGFyZ2UgSnMudCkgOlxuICAgIEVuZmFudEFDaGFyZ2UudCA9XG4gICAge1xuICAgICAgaWRlbnRpZmlhbnQgPSBpbnRlZ2VyX29mX2ludCBlbmZhbnRfYV9jaGFyZ2UjIy5pZGVudGlmaWFudDtcbiAgICAgIG5hdGlvbmFsaXRlID0gbmF0aW9uYWxpdGVfb2ZfanNvbyBlbmZhbnRfYV9jaGFyZ2UjIy5uYXRpb25hbGl0ZTtcbiAgICAgIGFfZGVqYV9vdXZlcnRfZHJvaXRfYXV4X2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgPVxuICAgICAgICBKcy50b19ib29sIGVuZmFudF9hX2NoYXJnZSMjLmFEZWphT3V2ZXJ0RHJvaXRBdXhBbGxvY2F0aW9uc0ZhbWlsaWFsZXM7XG4gICAgICBkYXRlX2RlX25haXNzYW5jZSA9IGRhdGVfb2ZfanNvbyBlbmZhbnRfYV9jaGFyZ2UjIy5kYXRlRGVOYWlzc2FuY2U7XG4gICAgICByZW11bmVyYXRpb25fbWVuc3VlbGxlID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGVuZmFudF9hX2NoYXJnZSMjLnJlbXVuZXJhdGlvbk1lbnN1ZWxsZTtcbiAgICAgIG9ibGlnYXRpb25fc2NvbGFpcmUgPVxuICAgICAgICBzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZV9vZl9qc29vXG4gICAgICAgICAgZW5mYW50X2FfY2hhcmdlIyMub2JsaWdhdGlvblNjb2xhaXJlO1xuICAgICAgc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlID1cbiAgICAgICAgc2l0dWF0aW9uX2dhcmRlX2FsdGVybmVlX29mX2pzb29cbiAgICAgICAgICBlbmZhbnRfYV9jaGFyZ2UjIy5zaXR1YXRpb25HYXJkZUFsdGVybmVlO1xuICAgICAgZXR1ZGVzX2FwcHJlbnRpc3NhZ2Vfc3RhZ2VfZm9ybWF0aW9uX3Byb19pbXBvc3NpYmlsaXRlX3RyYXZhaWwgPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgZW5mYW50X2FfY2hhcmdlXG4gICAgICAgICAgIyMuZXR1ZGVzQXBwcmVudGlzc2FnZVN0YWdlRm9ybWF0aW9uUHJvSW1wb3NzaWJpbGl0ZVRyYXZhaWxcbiAgICB9XG5cbmNsYXNzIHR5cGUgbG9jYXRpb24gPVxuICBvYmplY3RcbiAgICBtZXRob2QgYmFpbGxldXI6IHR5cGVfYmFpbGxldXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGxveWVyUHJpbmNpcGFsOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGJlbmVmaWNpYWlyZUFpZGVBZHVsdGVPdUVuZmFudEhhbmRpY2FwZXM6XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBsb2dlbWVudEVzdENoYW1icmU6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvbG9jYXRpb246IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGFnZWVzT3VIYW5kaWNhcEFkdWx0ZXNIZWJlcmdlZXNPbmVyZXV4UGFydGljdWxpZXJzOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG9nZW1lbnRNZXVibGVEODQyMjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY2hhbmdlbWVudExvZ2VtZW50RDg0MjQ6XG4gICAgICBjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBsb2NhdGlvbl90b19qc29vIChsb2NhdGlvbiA6IExvY2F0aW9uLnQpIDogbG9jYXRpb24gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgYmFpbGxldXIgPSB0eXBlX2JhaWxsZXVyX3RvX2pzb28gbG9jYXRpb24uYmFpbGxldXJcbiAgICAgIHZhbCBsb3llclByaW5jaXBhbCA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBsb2NhdGlvbi5sb3llcl9wcmluY2lwYWxcbiAgICAgIHZhbCBiZW5lZmljaWFpcmVBaWRlQWR1bHRlT3VFbmZhbnRIYW5kaWNhcGVzID1cbiAgICAgICAgSnMuYm9vbCBsb2NhdGlvbi5iZW5lZmljaWFpcmVfYWlkZV9hZHVsdGVfb3VfZW5mYW50X2hhbmRpY2FwZXNcbiAgICAgIHZhbCBsb2dlbWVudEVzdENoYW1icmUgPSBKcy5ib29sIGxvY2F0aW9uLmxvZ2VtZW50X2VzdF9jaGFtYnJlXG4gICAgICB2YWwgY29sb2NhdGlvbiA9IEpzLmJvb2wgbG9jYXRpb24uY29sb2NhdGlvblxuICAgICAgdmFsIGFnZWVzT3VIYW5kaWNhcEFkdWx0ZXNIZWJlcmdlZXNPbmVyZXV4UGFydGljdWxpZXJzID1cbiAgICAgICAgSnMuYm9vbCBsb2NhdGlvbi5hZ2Vlc19vdV9oYW5kaWNhcF9hZHVsdGVzX2hlYmVyZ2Vlc19vbmVyZXV4X3BhcnRpY3VsaWVyc1xuICAgICAgdmFsIGxvZ2VtZW50TWV1YmxlRDg0MjIgPSBKcy5ib29sIGxvY2F0aW9uLmxvZ2VtZW50X21ldWJsZV9kODQyXzJcbiAgICAgIHZhbCBjaGFuZ2VtZW50TG9nZW1lbnREODQyNCA9XG4gICAgICAgIGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80X3RvX2pzb28gbG9jYXRpb24uY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRcbiAgICAgIGVuZFxuICBsZXQgbG9jYXRpb25fb2ZfanNvbyAobG9jYXRpb24gOiBsb2NhdGlvbiBKcy50KSA6IExvY2F0aW9uLnQgPVxuICAgIHtcbiAgICAgIGJhaWxsZXVyID0gdHlwZV9iYWlsbGV1cl9vZl9qc29vIGxvY2F0aW9uIyMuYmFpbGxldXI7XG4gICAgICBsb3llcl9wcmluY2lwYWwgPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgbG9jYXRpb24jIy5sb3llclByaW5jaXBhbDtcbiAgICAgIGJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlcyA9XG4gICAgICAgIEpzLnRvX2Jvb2wgbG9jYXRpb24jIy5iZW5lZmljaWFpcmVBaWRlQWR1bHRlT3VFbmZhbnRIYW5kaWNhcGVzO1xuICAgICAgbG9nZW1lbnRfZXN0X2NoYW1icmUgPSBKcy50b19ib29sIGxvY2F0aW9uIyMubG9nZW1lbnRFc3RDaGFtYnJlO1xuICAgICAgY29sb2NhdGlvbiA9IEpzLnRvX2Jvb2wgbG9jYXRpb24jIy5jb2xvY2F0aW9uO1xuICAgICAgYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnMgPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgbG9jYXRpb24jIy5hZ2Vlc091SGFuZGljYXBBZHVsdGVzSGViZXJnZWVzT25lcmV1eFBhcnRpY3VsaWVycztcbiAgICAgIGxvZ2VtZW50X21ldWJsZV9kODQyXzIgPSBKcy50b19ib29sIGxvY2F0aW9uIyMubG9nZW1lbnRNZXVibGVEODQyMjtcbiAgICAgIGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80ID1cbiAgICAgICAgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfb2ZfanNvbyBsb2NhdGlvbiMjLmNoYW5nZW1lbnRMb2dlbWVudEQ4NDI0XG4gICAgfVxuXG5jbGFzcyB0eXBlIHBlcnNvbm5lX2FfY2hhcmdlID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiRW5mYW50QUNoYXJnZVwiXG4gICAgICAgIC0gXCJBdXRyZVBlcnNvbm5lQUNoYXJnZVwiICopXG4gICAgXG4gICAgbWV0aG9kIHBheWxvYWQgOiBKcy5VbnNhZmUuYW55IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxubGV0IHBlcnNvbm5lX2FfY2hhcmdlX3RvX2pzb28gOiBQZXJzb25uZUFDaGFyZ2UudCAtPiBwZXJzb25uZV9hX2NoYXJnZSBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBFbmZhbnRBQ2hhcmdlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiRW5mYW50QUNoYXJnZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKGVuZmFudF9hX2NoYXJnZV90b19qc29vIGFyZykpXG4gICAgZW5kXG4gIHwgQXV0cmVQZXJzb25uZUFDaGFyZ2UgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBdXRyZVBlcnNvbm5lQUNoYXJnZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlX3RvX2pzb28gYXJnKSlcbiAgICBlbmRcblxubGV0IHBlcnNvbm5lX2FfY2hhcmdlX29mX2pzb28gKHBlcnNvbm5lX2FfY2hhcmdlIDogcGVyc29ubmVfYV9jaGFyZ2UgSnMudClcbiAgOiBQZXJzb25uZUFDaGFyZ2UudCA9XG4gIG1hdGNoIHBlcnNvbm5lX2FfY2hhcmdlIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiRW5mYW50QUNoYXJnZVwiIC0+XG4gIFBlcnNvbm5lQUNoYXJnZS5FbmZhbnRBQ2hhcmdlIChlbmZhbnRfYV9jaGFyZ2Vfb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBwZXJzb25uZV9hX2NoYXJnZSMjLnBheWxvYWQpKVxuICB8IFwiQXV0cmVQZXJzb25uZUFDaGFyZ2VcIiAtPlxuICBQZXJzb25uZUFDaGFyZ2UuQXV0cmVQZXJzb25uZUFDaGFyZ2UgKGF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlX29mX2pzb28gKEpzLlVuc2FmZS5jb2VyY2UgcGVyc29ubmVfYV9jaGFyZ2UjIy5wYXlsb2FkKSlcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ1BlcnNvbm5lQUNoYXJnZS50J1wiIGNvbnMpXG5cblxuY2xhc3MgdHlwZSBjYXRlZ29yaWVfY2FsY3VsX2FfcF9sID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGtpbmQgOlxuICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgICAgKCoqIEV4cGVjdHMgb25lIG9mOlxuICAgICAgICAtIFwiTG9jYXRpb25cIlxuICAgICAgICAtIFwiQWNjZXNzaW9uUHJvcHJpZXRlXCJcbiAgICAgICAgLSBcIkxvZ2VtZW50Rm95ZXJcIiAqKVxuICAgIFxuICAgIG1ldGhvZCBwYXlsb2FkIDogSnMuVW5zYWZlLmFueSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbmxldCBjYXRlZ29yaWVfY2FsY3VsX2FfcF9sX3RvX2pzb29cbiAgOiBDYXRlZ29yaWVDYWxjdWxBUEwudCAtPiBjYXRlZ29yaWVfY2FsY3VsX2FfcF9sIEpzLnRcbiAgPSBmdW5jdGlvblxuICB8IExvY2F0aW9uIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTG9jYXRpb25cIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChsb2NhdGlvbl90b19qc29vIGFyZykpXG4gICAgZW5kXG4gIHwgQWNjZXNzaW9uUHJvcHJpZXRlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiQWNjZXNzaW9uUHJvcHJpZXRlXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAocHJvcHJpZXRhaXJlX3RvX2pzb28gYXJnKSlcbiAgICBlbmRcbiAgfCBMb2dlbWVudEZveWVyIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiTG9nZW1lbnRGb3llclwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKGxvZ2VtZW50X2ZveWVyX3RvX2pzb28gYXJnKSlcbiAgICBlbmRcblxubGV0IGNhdGVnb3JpZV9jYWxjdWxfYV9wX2xfb2ZfanNvb1xuICAoY2F0ZWdvcmllX2NhbGN1bF9hX3BfbCA6IGNhdGVnb3JpZV9jYWxjdWxfYV9wX2wgSnMudClcbiAgOiBDYXRlZ29yaWVDYWxjdWxBUEwudCA9XG4gIG1hdGNoIGNhdGVnb3JpZV9jYWxjdWxfYV9wX2wjIy5raW5kIHw+IEpzLnRvX3N0cmluZyB3aXRoXG4gIHwgXCJMb2NhdGlvblwiIC0+XG4gIENhdGVnb3JpZUNhbGN1bEFQTC5Mb2NhdGlvbiAobG9jYXRpb25fb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBjYXRlZ29yaWVfY2FsY3VsX2FfcF9sIyMucGF5bG9hZCkpXG4gIHwgXCJBY2Nlc3Npb25Qcm9wcmlldGVcIiAtPlxuICBDYXRlZ29yaWVDYWxjdWxBUEwuQWNjZXNzaW9uUHJvcHJpZXRlIChwcm9wcmlldGFpcmVfb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBjYXRlZ29yaWVfY2FsY3VsX2FfcF9sIyMucGF5bG9hZCkpXG4gIHwgXCJMb2dlbWVudEZveWVyXCIgLT5cbiAgQ2F0ZWdvcmllQ2FsY3VsQVBMLkxvZ2VtZW50Rm95ZXIgKGxvZ2VtZW50X2ZveWVyX29mX2pzb28gKEpzLlVuc2FmZS5jb2VyY2UgY2F0ZWdvcmllX2NhbGN1bF9hX3BfbCMjLnBheWxvYWQpKVxuICB8IGNvbnMgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiVW5leHBlY3RlZCAnJXMnIGtpbmQgZm9yIHRoZSBlbnVtZXJhdGlvbiAnQ2F0ZWdvcmllQ2FsY3VsQVBMLnQnXCJcbiAgICAgICAgY29ucylcblxuXG5jbGFzcyB0eXBlIG1vZGVfb2NjdXBhdGlvbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBraW5kIDpcbiAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICAgICgqKiBFeHBlY3RzIG9uZSBvZjpcbiAgICAgICAgLSBcIkxvY2F0YWlyZVwiXG4gICAgICAgIC0gXCJSZXNpZGVudExvZ2VtZW50Rm95ZXJcIlxuICAgICAgICAtIFwiQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvblwiXG4gICAgICAgIC0gXCJTb3VzTG9jYXRhaXJlXCJcbiAgICAgICAgLSBcIkxvY2F0aW9uQWNjZXNzaW9uXCIgKilcbiAgICBcbiAgICBtZXRob2QgcGF5bG9hZCA6IEpzLlVuc2FmZS5hbnkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG5sZXQgbW9kZV9vY2N1cGF0aW9uX3RvX2pzb28gOiBNb2RlT2NjdXBhdGlvbi50IC0+IG1vZGVfb2NjdXBhdGlvbiBKcy50XG4gID0gZnVuY3Rpb25cbiAgfCBMb2NhdGFpcmUgYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJMb2NhdGFpcmVcIlxuICAgICAgdmFsIHBheWxvYWQgPSBKcy5VbnNhZmUuY29lcmNlIChKcy5VbnNhZmUuaW5qZWN0IChsb2NhdGlvbl90b19qc29vIGFyZykpXG4gICAgZW5kXG4gIHwgUmVzaWRlbnRMb2dlbWVudEZveWVyIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiUmVzaWRlbnRMb2dlbWVudEZveWVyXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAobG9nZW1lbnRfZm95ZXJfdG9fanNvbyBhcmcpKVxuICAgIGVuZFxuICB8IEFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gYXJnIC0+IG9iamVjdCVqc1xuICAgICAgdmFsIGtpbmQgPSBKcy5zdHJpbmcgXCJBY2Nlc3Npb25Qcm9wcmlldGVMb2NhbFVzYWdlRXhjbHVzaWZIYWJpdGF0aW9uXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAocHJvcHJpZXRhaXJlX3RvX2pzb28gYXJnKSlcbiAgICBlbmRcbiAgfCBTb3VzTG9jYXRhaXJlIGFyZyAtPiBvYmplY3QlanNcbiAgICAgIHZhbCBraW5kID0gSnMuc3RyaW5nIFwiU291c0xvY2F0YWlyZVwiXG4gICAgICB2YWwgcGF5bG9hZCA9IEpzLlVuc2FmZS5jb2VyY2UgKEpzLlVuc2FmZS5pbmplY3QgKGxvY2F0aW9uX3RvX2pzb28gYXJnKSlcbiAgICBlbmRcbiAgfCBMb2NhdGlvbkFjY2Vzc2lvbiBhcmcgLT4gb2JqZWN0JWpzXG4gICAgICB2YWwga2luZCA9IEpzLnN0cmluZyBcIkxvY2F0aW9uQWNjZXNzaW9uXCJcbiAgICAgIHZhbCBwYXlsb2FkID0gSnMuVW5zYWZlLmNvZXJjZSAoSnMuVW5zYWZlLmluamVjdCAocHJvcHJpZXRhaXJlX3RvX2pzb28gYXJnKSlcbiAgICBlbmRcblxubGV0IG1vZGVfb2NjdXBhdGlvbl9vZl9qc29vIChtb2RlX29jY3VwYXRpb24gOiBtb2RlX29jY3VwYXRpb24gSnMudClcbiAgOiBNb2RlT2NjdXBhdGlvbi50ID1cbiAgbWF0Y2ggbW9kZV9vY2N1cGF0aW9uIyMua2luZCB8PiBKcy50b19zdHJpbmcgd2l0aFxuICB8IFwiTG9jYXRhaXJlXCIgLT5cbiAgTW9kZU9jY3VwYXRpb24uTG9jYXRhaXJlIChsb2NhdGlvbl9vZl9qc29vIChKcy5VbnNhZmUuY29lcmNlIG1vZGVfb2NjdXBhdGlvbiMjLnBheWxvYWQpKVxuICB8IFwiUmVzaWRlbnRMb2dlbWVudEZveWVyXCIgLT5cbiAgTW9kZU9jY3VwYXRpb24uUmVzaWRlbnRMb2dlbWVudEZveWVyIChsb2dlbWVudF9mb3llcl9vZl9qc29vIChKcy5VbnNhZmUuY29lcmNlIG1vZGVfb2NjdXBhdGlvbiMjLnBheWxvYWQpKVxuICB8IFwiQWNjZXNzaW9uUHJvcHJpZXRlTG9jYWxVc2FnZUV4Y2x1c2lmSGFiaXRhdGlvblwiIC0+XG4gIE1vZGVPY2N1cGF0aW9uLkFjY2Vzc2lvblByb3ByaWV0ZUxvY2FsVXNhZ2VFeGNsdXNpZkhhYml0YXRpb24gKHByb3ByaWV0YWlyZV9vZl9qc29vIChKcy5VbnNhZmUuY29lcmNlIG1vZGVfb2NjdXBhdGlvbiMjLnBheWxvYWQpKVxuICB8IFwiU291c0xvY2F0YWlyZVwiIC0+XG4gIE1vZGVPY2N1cGF0aW9uLlNvdXNMb2NhdGFpcmUgKGxvY2F0aW9uX29mX2pzb28gKEpzLlVuc2FmZS5jb2VyY2UgbW9kZV9vY2N1cGF0aW9uIyMucGF5bG9hZCkpXG4gIHwgXCJMb2NhdGlvbkFjY2Vzc2lvblwiIC0+XG4gIE1vZGVPY2N1cGF0aW9uLkxvY2F0aW9uQWNjZXNzaW9uIChwcm9wcmlldGFpcmVfb2ZfanNvbyAoSnMuVW5zYWZlLmNvZXJjZSBtb2RlX29jY3VwYXRpb24jIy5wYXlsb2FkKSlcbiAgfCBjb25zIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICBcIlVuZXhwZWN0ZWQgJyVzJyBraW5kIGZvciB0aGUgZW51bWVyYXRpb24gJ01vZGVPY2N1cGF0aW9uLnQnXCIgY29ucylcblxuXG5jbGFzcyB0eXBlIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZTogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBlbGlnaWJpbGl0ZTogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgbm9tYnJlUGVyc29ubmVzQUNoYXJnZVByaXNlc0VuQ29tcHRlOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjb2VmZmljZW50c0VuZmFudHNHYXJkZUFsdGVybmVlUHJpc0VuQ29tcHRlOlxuICAgICAgSnMubnVtYmVyIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvbmRpdGlvbjJSODIzNDpcbiAgICAgICh1bml0LCAgcGVyc29ubmVfYV9jaGFyZ2UgSnMudCAtPiBib29sIEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X3RvX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgICA6IEVsaWdpYmlsaXRlQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50LnQpXG4gICAgOiBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBkYXRlQ291cmFudGUgPVxuICAgICAgICBkYXRlX3RvX2pzb28gZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQuZGF0ZV9jb3VyYW50ZVxuICAgICAgdmFsIGVsaWdpYmlsaXRlID1cbiAgICAgICAgSnMuYm9vbCBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudC5lbGlnaWJpbGl0ZVxuICAgICAgdmFsIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VQcmlzZXNFbkNvbXB0ZSA9XG4gICAgICAgIGludGVnZXJfdG9faW50IGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50Lm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfcHJpc2VzX2VuX2NvbXB0ZVxuICAgICAgdmFsIGNvZWZmaWNlbnRzRW5mYW50c0dhcmRlQWx0ZXJuZWVQcmlzRW5Db21wdGUgPVxuICAgICAgICBKcy5hcnJheSBAQCBBcnJheS5tYXAgKGZ1biB4IC0+IEpzLm51bWJlcl9vZl9mbG9hdCBAQCBkZWNpbWFsX3RvX2Zsb2F0IHgpIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50LmNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGVcbiAgICAgIG1ldGhvZCBjb25kaXRpb24yUjgyMzQgPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBfIChmdW5jdGlvbl9pbnB1dDA6IHBlcnNvbm5lX2FfY2hhcmdlIEpzLnQpIC0+XG4gICAgICAgICAgSnMuYm9vbCAoZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQuY29uZGl0aW9uXzJfcjgyM180IFxuICAgICAgICAgIChwZXJzb25uZV9hX2NoYXJnZV9vZl9qc29vXG4gICAgICAgICAgICBmdW5jdGlvbl9pbnB1dDApKSlcbiAgICAgIGVuZFxuICBsZXQgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb2ZfanNvb1xuICAgIChlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICAgICAgOiBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCBKcy50KSA6XG4gICAgRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQudCA9XG4gICAge1xuICAgICAgZGF0ZV9jb3VyYW50ZSA9XG4gICAgICAgIGRhdGVfb2ZfanNvbyBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCMjLmRhdGVDb3VyYW50ZTtcbiAgICAgIGVsaWdpYmlsaXRlID1cbiAgICAgICAgSnMudG9fYm9vbCBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCMjLmVsaWdpYmlsaXRlO1xuICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fY29tcHRlID1cbiAgICAgICAgaW50ZWdlcl9vZl9pbnRcbiAgICAgICAgICBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICAgICAgICAgICMjLm5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VQcmlzZXNFbkNvbXB0ZTtcbiAgICAgIGNvZWZmaWNlbnRzX2VuZmFudHNfZ2FyZGVfYWx0ZXJuZWVfcHJpc19lbl9jb21wdGUgPVxuICAgICAgICBBcnJheS5tYXAgKGZ1biB4IC0+IGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyIHgpIEBAIEpzLnRvX2FycmF5XG4gICAgICAgICAgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgICAgICAgICAjIy5jb2VmZmljZW50c0VuZmFudHNHYXJkZUFsdGVybmVlUHJpc0VuQ29tcHRlO1xuICAgICAgY29uZGl0aW9uXzJfcjgyM180ID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ2NvbmRpdGlvbl8yX3I4MjNfNCcgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiXG4gICAgfVxuXG5jbGFzcyB0eXBlIGxvZ2VtZW50ID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIHJlc2lkZW5jZVByaW5jaXBhbGU6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG1vZGVPY2N1cGF0aW9uOiBtb2RlX29jY3VwYXRpb24gSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHByb3ByaWV0YWlyZTogcGFyZW50X291X2F1dHJlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBsb3VlT3VTb3VzTG91ZUFEZXNUaWVyczpcbiAgICAgIGxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB1c3VmcnVpdDogcGFyZW50X291X2F1dHJlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBsb2dlbWVudERlY2VudEw4OTQ2MjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgc3VyZmFjZU1DYXJyZXM6IGludCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHpvbmU6IHpvbmVfZF9oYWJpdGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGxvZ2VtZW50X3RvX2pzb28gKGxvZ2VtZW50IDogTG9nZW1lbnQudCkgOiBsb2dlbWVudCBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCByZXNpZGVuY2VQcmluY2lwYWxlID0gSnMuYm9vbCBsb2dlbWVudC5yZXNpZGVuY2VfcHJpbmNpcGFsZVxuICAgICAgdmFsIG1vZGVPY2N1cGF0aW9uID0gbW9kZV9vY2N1cGF0aW9uX3RvX2pzb28gbG9nZW1lbnQubW9kZV9vY2N1cGF0aW9uXG4gICAgICB2YWwgcHJvcHJpZXRhaXJlID0gcGFyZW50X291X2F1dHJlX3RvX2pzb28gbG9nZW1lbnQucHJvcHJpZXRhaXJlXG4gICAgICB2YWwgbG91ZU91U291c0xvdWVBRGVzVGllcnMgPVxuICAgICAgICBsb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVyc190b19qc29vIGxvZ2VtZW50LmxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzXG4gICAgICB2YWwgdXN1ZnJ1aXQgPSBwYXJlbnRfb3VfYXV0cmVfdG9fanNvbyBsb2dlbWVudC51c3VmcnVpdFxuICAgICAgdmFsIGxvZ2VtZW50RGVjZW50TDg5NDYyID0gSnMuYm9vbCBsb2dlbWVudC5sb2dlbWVudF9kZWNlbnRfbDg5XzQ2MlxuICAgICAgdmFsIHN1cmZhY2VNQ2FycmVzID0gaW50ZWdlcl90b19pbnQgbG9nZW1lbnQuc3VyZmFjZV9tX2NhcnJlc1xuICAgICAgdmFsIHpvbmUgPSB6b25lX2RfaGFiaXRhdGlvbl90b19qc29vIGxvZ2VtZW50LnpvbmVcbiAgICAgIGVuZFxuICBsZXQgbG9nZW1lbnRfb2ZfanNvbyAobG9nZW1lbnQgOiBsb2dlbWVudCBKcy50KSA6IExvZ2VtZW50LnQgPVxuICAgIHtcbiAgICAgIHJlc2lkZW5jZV9wcmluY2lwYWxlID0gSnMudG9fYm9vbCBsb2dlbWVudCMjLnJlc2lkZW5jZVByaW5jaXBhbGU7XG4gICAgICBtb2RlX29jY3VwYXRpb24gPSBtb2RlX29jY3VwYXRpb25fb2ZfanNvbyBsb2dlbWVudCMjLm1vZGVPY2N1cGF0aW9uO1xuICAgICAgcHJvcHJpZXRhaXJlID0gcGFyZW50X291X2F1dHJlX29mX2pzb28gbG9nZW1lbnQjIy5wcm9wcmlldGFpcmU7XG4gICAgICBsb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVycyA9XG4gICAgICAgIGxvdWVfb3Vfc291c19sb3VlX2FfZGVzX3RpZXJzX29mX2pzb29cbiAgICAgICAgICBsb2dlbWVudCMjLmxvdWVPdVNvdXNMb3VlQURlc1RpZXJzO1xuICAgICAgdXN1ZnJ1aXQgPSBwYXJlbnRfb3VfYXV0cmVfb2ZfanNvbyBsb2dlbWVudCMjLnVzdWZydWl0O1xuICAgICAgbG9nZW1lbnRfZGVjZW50X2w4OV80NjIgPSBKcy50b19ib29sIGxvZ2VtZW50IyMubG9nZW1lbnREZWNlbnRMODk0NjI7XG4gICAgICBzdXJmYWNlX21fY2FycmVzID0gaW50ZWdlcl9vZl9pbnQgbG9nZW1lbnQjIy5zdXJmYWNlTUNhcnJlcztcbiAgICAgIHpvbmUgPSB6b25lX2RfaGFiaXRhdGlvbl9vZl9qc29vIGxvZ2VtZW50IyMuem9uZVxuICAgIH1cblxuY2xhc3MgdHlwZSBtZW5hZ2UgPVxuICBvYmplY3RcbiAgICBtZXRob2QgcHJlc3RhdGlvbnNSZWN1ZXM6XG4gICAgICBwcmVzdGF0aW9uX3JlY3VlIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGxvZ2VtZW50OiBsb2dlbWVudCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcGVyc29ubmVzQUNoYXJnZTpcbiAgICAgIHBlcnNvbm5lX2FfY2hhcmdlIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG5vbWJyZUF1dHJlc09jY3VwYW50c0xvZ2VtZW50OiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25GYW1pbGlhbGU6IHNpdHVhdGlvbl9mYW1pbGlhbGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvbmRpdGlvblJhdHRhY2hlRm95ZXJGaXNjYWxQYXJlbnRJZmk6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGVuZmFudEFOYWl0cmVBcHJlc1F1YXRyaWVtZU1vaXNHcm9zc2Vzc2U6XG4gICAgICBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBwZXJzb25uZXNBZ2Vlc0hhbmRpY2FwZWVzRm95ZXJSODQ0NDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzaWRlbmNlOiBjb2xsZWN0aXZpdGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgbWVuYWdlX3RvX2pzb28gKG1lbmFnZSA6IE1lbmFnZS50KSA6IG1lbmFnZSBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBwcmVzdGF0aW9uc1JlY3VlcyA9XG4gICAgICAgIEpzLmFycmF5IEBAIEFycmF5Lm1hcCAoZnVuIHggLT4gcHJlc3RhdGlvbl9yZWN1ZV90b19qc29vIHgpIG1lbmFnZS5wcmVzdGF0aW9uc19yZWN1ZXNcbiAgICAgIHZhbCBsb2dlbWVudCA9IGxvZ2VtZW50X3RvX2pzb28gbWVuYWdlLmxvZ2VtZW50XG4gICAgICB2YWwgcGVyc29ubmVzQUNoYXJnZSA9XG4gICAgICAgIEpzLmFycmF5IEBAIEFycmF5Lm1hcCAoZnVuIHggLT4gcGVyc29ubmVfYV9jaGFyZ2VfdG9fanNvbyB4KSBtZW5hZ2UucGVyc29ubmVzX2FfY2hhcmdlXG4gICAgICB2YWwgbm9tYnJlQXV0cmVzT2NjdXBhbnRzTG9nZW1lbnQgPVxuICAgICAgICBpbnRlZ2VyX3RvX2ludCBtZW5hZ2Uubm9tYnJlX2F1dHJlc19vY2N1cGFudHNfbG9nZW1lbnRcbiAgICAgIHZhbCBzaXR1YXRpb25GYW1pbGlhbGUgPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX3RvX2pzb28gbWVuYWdlLnNpdHVhdGlvbl9mYW1pbGlhbGVcbiAgICAgIHZhbCBjb25kaXRpb25SYXR0YWNoZUZveWVyRmlzY2FsUGFyZW50SWZpID1cbiAgICAgICAgSnMuYm9vbCBtZW5hZ2UuY29uZGl0aW9uX3JhdHRhY2hlX2ZveWVyX2Zpc2NhbF9wYXJlbnRfaWZpXG4gICAgICB2YWwgZW5mYW50QU5haXRyZUFwcmVzUXVhdHJpZW1lTW9pc0dyb3NzZXNzZSA9XG4gICAgICAgIEpzLmJvb2wgbWVuYWdlLmVuZmFudF9hX25haXRyZV9hcHJlc19xdWF0cmllbWVfbW9pc19ncm9zc2Vzc2VcbiAgICAgIHZhbCBwZXJzb25uZXNBZ2Vlc0hhbmRpY2FwZWVzRm95ZXJSODQ0NCA9XG4gICAgICAgIEpzLmJvb2wgbWVuYWdlLnBlcnNvbm5lc19hZ2Vlc19oYW5kaWNhcGVlc19mb3llcl9yODQ0XzRcbiAgICAgIHZhbCByZXNpZGVuY2UgPSBjb2xsZWN0aXZpdGVfdG9fanNvbyBtZW5hZ2UucmVzaWRlbmNlXG4gICAgICBlbmRcbiAgbGV0IG1lbmFnZV9vZl9qc29vIChtZW5hZ2UgOiBtZW5hZ2UgSnMudCkgOiBNZW5hZ2UudCA9XG4gICAge1xuICAgICAgcHJlc3RhdGlvbnNfcmVjdWVzID1cbiAgICAgICAgQXJyYXkubWFwIChmdW4geCAtPiBwcmVzdGF0aW9uX3JlY3VlX29mX2pzb28geCkgQEAgSnMudG9fYXJyYXlcbiAgICAgICAgICBtZW5hZ2UjIy5wcmVzdGF0aW9uc1JlY3VlcztcbiAgICAgIGxvZ2VtZW50ID0gbG9nZW1lbnRfb2ZfanNvbyBtZW5hZ2UjIy5sb2dlbWVudDtcbiAgICAgIHBlcnNvbm5lc19hX2NoYXJnZSA9XG4gICAgICAgIEFycmF5Lm1hcCAoZnVuIHggLT4gcGVyc29ubmVfYV9jaGFyZ2Vfb2ZfanNvbyB4KSBAQCBKcy50b19hcnJheVxuICAgICAgICAgIG1lbmFnZSMjLnBlcnNvbm5lc0FDaGFyZ2U7XG4gICAgICBub21icmVfYXV0cmVzX29jY3VwYW50c19sb2dlbWVudCA9XG4gICAgICAgIGludGVnZXJfb2ZfaW50IG1lbmFnZSMjLm5vbWJyZUF1dHJlc09jY3VwYW50c0xvZ2VtZW50O1xuICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZSA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfb2ZfanNvbyBtZW5hZ2UjIy5zaXR1YXRpb25GYW1pbGlhbGU7XG4gICAgICBjb25kaXRpb25fcmF0dGFjaGVfZm95ZXJfZmlzY2FsX3BhcmVudF9pZmkgPVxuICAgICAgICBKcy50b19ib29sIG1lbmFnZSMjLmNvbmRpdGlvblJhdHRhY2hlRm95ZXJGaXNjYWxQYXJlbnRJZmk7XG4gICAgICBlbmZhbnRfYV9uYWl0cmVfYXByZXNfcXVhdHJpZW1lX21vaXNfZ3Jvc3Nlc3NlID1cbiAgICAgICAgSnMudG9fYm9vbCBtZW5hZ2UjIy5lbmZhbnRBTmFpdHJlQXByZXNRdWF0cmllbWVNb2lzR3Jvc3Nlc3NlO1xuICAgICAgcGVyc29ubmVzX2FnZWVzX2hhbmRpY2FwZWVzX2ZveWVyX3I4NDRfNCA9XG4gICAgICAgIEpzLnRvX2Jvb2wgbWVuYWdlIyMucGVyc29ubmVzQWdlZXNIYW5kaWNhcGVlc0ZveWVyUjg0NDQ7XG4gICAgICByZXNpZGVuY2UgPSBjb2xsZWN0aXZpdGVfb2ZfanNvbyBtZW5hZ2UjIy5yZXNpZGVuY2VcbiAgICB9XG5cbmNsYXNzIHR5cGUgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgbWVuYWdlSW46IG1lbmFnZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGVtYW5kZXVySW46IGRlbWFuZGV1ciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY29uZGl0aW9uTG9nZW1lbnRSZXNpZGVuY2VQcmluY2lwYWxlSW46XG4gICAgICAodW5pdCwgIHVuaXQgLT4gYm9vbCBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgICBtZXRob2QgY29uZGl0aW9uTG9nZW1lbnRTdXJmYWNlSW46XG4gICAgICAodW5pdCwgIHVuaXQgLT4gYm9vbCBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgICBtZXRob2QgZGF0ZUVudHJlZVZpZ3VldXJEaWZmZXJlZUNjaEluOlxuICAgICAgKHVuaXQsICB1bml0IC0+IEpzLmpzX3N0cmluZyBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbl90b19qc29vXG4gICAgKGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luXG4gICAgOiBFbGlnaWJpbGl0ZUFpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnQpXG4gICAgOiBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtZW5hZ2VJbiA9XG4gICAgICAgIG1lbmFnZV90b19qc29vIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLm1lbmFnZV9pblxuICAgICAgdmFsIGRlbWFuZGV1ckluID1cbiAgICAgICAgZGVtYW5kZXVyX3RvX2pzb28gZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uZGVtYW5kZXVyX2luXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgbWV0aG9kIGNvbmRpdGlvbkxvZ2VtZW50UmVzaWRlbmNlUHJpbmNpcGFsZUluID0gSnMud3JhcF9tZXRoX2NhbGxiYWNrXG4gICAgICAgIChcbiAgICAgICAgICBmdW4gXyAoZnVuY3Rpb25faW5wdXQwOiB1bml0KSAtPlxuICAgICAgICAgIEpzLmJvb2wgKGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luLmNvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcHJpbmNpcGFsZV9pbiBcbiAgICAgICAgICAoXG4gICAgICAgICAgICBmdW5jdGlvbl9pbnB1dDApKSlcbiAgICAgIG1ldGhvZCBjb25kaXRpb25Mb2dlbWVudFN1cmZhY2VJbiA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIF8gKGZ1bmN0aW9uX2lucHV0MDogdW5pdCkgLT5cbiAgICAgICAgICBKcy5ib29sIChlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5jb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV9pbiBcbiAgICAgICAgICAoXG4gICAgICAgICAgICBmdW5jdGlvbl9pbnB1dDApKSlcbiAgICAgIG1ldGhvZCBkYXRlRW50cmVlVmlndWV1ckRpZmZlcmVlQ2NoSW4gPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBfIChmdW5jdGlvbl9pbnB1dDA6IHVuaXQpIC0+XG4gICAgICAgICAgZGF0ZV90b19qc29vIChlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5kYXRlX2VudHJlZV92aWd1ZXVyX2RpZmZlcmVlX2NjaF9pbiBcbiAgICAgICAgICAoXG4gICAgICAgICAgICBmdW5jdGlvbl9pbnB1dDApKSlcbiAgICAgIGVuZFxuICBsZXQgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5fb2ZfanNvb1xuICAgIChlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pblxuICAgICAgOiBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiBKcy50KSA6XG4gICAgRWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnRJbi50ID1cbiAgICB7XG4gICAgICBtZW5hZ2VfaW4gPVxuICAgICAgICBtZW5hZ2Vfb2ZfanNvbyBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiMjLm1lbmFnZUluO1xuICAgICAgZGVtYW5kZXVyX2luID1cbiAgICAgICAgZGVtYW5kZXVyX29mX2pzb29cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiMjLmRlbWFuZGV1ckluO1xuICAgICAgZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvb1xuICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICBjb25kaXRpb25fbG9nZW1lbnRfcmVzaWRlbmNlX3ByaW5jaXBhbGVfaW4gPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAnY29uZGl0aW9uX2xvZ2VtZW50X3Jlc2lkZW5jZV9wcmluY2lwYWxlX2luJyB0cmFuc2xhdGlvbiBpc24ndCB5ZXQgc3VwcG9ydGVkLi4uXCI7XG4gICAgICBjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV9pbiA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICdjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZV9pbicgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiO1xuICAgICAgZGF0ZV9lbnRyZWVfdmlndWV1cl9kaWZmZXJlZV9jY2hfaW4gPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAnZGF0ZV9lbnRyZWVfdmlndWV1cl9kaWZmZXJlZV9jY2hfaW4nIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIlxuICAgIH1cblxuY2xhc3MgdHlwZSBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgbWVuYWdlSW46IG1lbmFnZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGVtYW5kZXVySW46IGRlbWFuZGV1ciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW5fdG9fanNvb1xuICAgIChlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW5cbiAgICA6IEVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluLnQpXG4gICAgOiBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbWVuYWdlSW4gPVxuICAgICAgICBtZW5hZ2VfdG9fanNvbyBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4ubWVuYWdlX2luXG4gICAgICB2YWwgZGVtYW5kZXVySW4gPVxuICAgICAgICBkZW1hbmRldXJfdG9fanNvbyBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4uZGVtYW5kZXVyX2luXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIGVuZFxuICBsZXQgZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luX29mX2pzb29cbiAgICAoZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luXG4gICAgICA6IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiBKcy50KSA6XG4gICAgRWxpZ2liaWxpdGVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4udCA9XG4gICAge1xuICAgICAgbWVuYWdlX2luID1cbiAgICAgICAgbWVuYWdlX29mX2pzb28gZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIyMubWVuYWdlSW47XG4gICAgICBkZW1hbmRldXJfaW4gPVxuICAgICAgICBkZW1hbmRldXJfb2ZfanNvb1xuICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiMjLmRlbWFuZGV1ckluO1xuICAgICAgZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvb1xuICAgICAgICAgIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiMjLmRhdGVDb3VyYW50ZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbWVuYWdlSW46IG1lbmFnZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGVtYW5kZXVySW46IGRlbWFuZGV1ciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYmVuZWZpY2llQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEluOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW5fdG9fanNvb1xuICAgIChlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIDogRWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnRJbi50KVxuICAgIDogZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIHZhbCBtZW5hZ2VJbiA9XG4gICAgICAgIG1lbmFnZV90b19qc29vIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4ubWVuYWdlX2luXG4gICAgICB2YWwgZGVtYW5kZXVySW4gPVxuICAgICAgICBkZW1hbmRldXJfdG9fanNvbyBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLmRlbWFuZGV1cl9pblxuICAgICAgdmFsIGJlbmVmaWNpZUFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbiA9XG4gICAgICAgIEpzLmJvb2wgZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5iZW5lZmljaWVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luXG4gICAgICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW5fb2ZfanNvb1xuICAgIChlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luXG4gICAgICA6IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4gSnMudCkgOlxuICAgIEVsaWdpYmlsaXRlQWxsb2NhdGlvbkxvZ2VtZW50SW4udCA9XG4gICAge1xuICAgICAgZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvbyBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICBtZW5hZ2VfaW4gPVxuICAgICAgICBtZW5hZ2Vfb2ZfanNvbyBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIyMubWVuYWdlSW47XG4gICAgICBkZW1hbmRldXJfaW4gPVxuICAgICAgICBkZW1hbmRldXJfb2ZfanNvbyBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIyMuZGVtYW5kZXVySW47XG4gICAgICBiZW5lZmljaWVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW5cbiAgICAgICAgICAjIy5iZW5lZmljaWVBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGluZm9ybWF0aW9uc0luOlxuICAgICAgaW5mb3JtYXRpb25zX3ByaW1lX2RlX2RlbWVuYWdlbWVudCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUVtbWVuYWdlbWVudEluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG1lbmFnZUluOiBtZW5hZ2UgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRlbWFuZGV1ckluOiBkZW1hbmRldXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRlcGVuc2VzSnVzdGlmaWVlc1JlZWxsZW1lbnRFbmdhZ2Vlc0luOlxuICAgICAgSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbl90b19qc29vXG4gICAgKGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pblxuICAgIDogRWxpZ2liaWxpdGVQcmltZURlRGVtZW5hZ2VtZW50SW4udClcbiAgICA6IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBpbmZvcm1hdGlvbnNJbiA9XG4gICAgICAgIGluZm9ybWF0aW9uc19wcmltZV9kZV9kZW1lbmFnZW1lbnRfdG9fanNvbyBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4uaW5mb3JtYXRpb25zX2luXG4gICAgICB2YWwgZGF0ZUVtbWVuYWdlbWVudEluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbi5kYXRlX2VtbWVuYWdlbWVudF9pblxuICAgICAgdmFsIG1lbmFnZUluID1cbiAgICAgICAgbWVuYWdlX3RvX2pzb28gZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luLm1lbmFnZV9pblxuICAgICAgdmFsIGRlbWFuZGV1ckluID1cbiAgICAgICAgZGVtYW5kZXVyX3RvX2pzb28gZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luLmRlbWFuZGV1cl9pblxuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICB2YWwgZGVwZW5zZXNKdXN0aWZpZWVzUmVlbGxlbWVudEVuZ2FnZWVzSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luLmRlcGVuc2VzX2p1c3RpZmllZXNfcmVlbGxlbWVudF9lbmdhZ2Vlc19pblxuICAgICAgZW5kXG4gIGxldCBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW5fb2ZfanNvb1xuICAgIChlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW5cbiAgICAgIDogZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luIEpzLnQpIDpcbiAgICBFbGlnaWJpbGl0ZVByaW1lRGVEZW1lbmFnZW1lbnRJbi50ID1cbiAgICB7XG4gICAgICBpbmZvcm1hdGlvbnNfaW4gPVxuICAgICAgICBpbmZvcm1hdGlvbnNfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X29mX2pzb29cbiAgICAgICAgICBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4jIy5pbmZvcm1hdGlvbnNJbjtcbiAgICAgIGRhdGVfZW1tZW5hZ2VtZW50X2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luIyMuZGF0ZUVtbWVuYWdlbWVudEluO1xuICAgICAgbWVuYWdlX2luID1cbiAgICAgICAgbWVuYWdlX29mX2pzb28gZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luIyMubWVuYWdlSW47XG4gICAgICBkZW1hbmRldXJfaW4gPVxuICAgICAgICBkZW1hbmRldXJfb2ZfanNvbyBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4jIy5kZW1hbmRldXJJbjtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb28gZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICBkZXBlbnNlc19qdXN0aWZpZWVzX3JlZWxsZW1lbnRfZW5nYWdlZXNfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luXG4gICAgICAgICAgIyMuZGVwZW5zZXNKdXN0aWZpZWVzUmVlbGxlbWVudEVuZ2FnZWVzSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBsaWV1SW46IGNvbGxlY3Rpdml0ZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luX3RvX2pzb29cbiAgICAoY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pblxuICAgIDogQ29udHJpYnV0aW9uc1NvY2lhbGVzQWlkZXNQZXJzb25uZWxsZUxvZ2VtZW50SW4udClcbiAgICA6IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICB2YWwgbGlldUluID1cbiAgICAgICAgY29sbGVjdGl2aXRlX3RvX2pzb28gY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbi5saWV1X2luXG4gICAgICBlbmRcbiAgbGV0IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5fb2ZfanNvb1xuICAgIChjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luXG4gICAgICA6IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4gSnMudCkgOlxuICAgIENvbnRyaWJ1dGlvbnNTb2NpYWxlc0FpZGVzUGVyc29ubmVsbGVMb2dlbWVudEluLnQgPVxuICAgIHtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb29cbiAgICAgICAgICBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luXG4gICAgICAgICAgIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICBsaWV1X2luID1cbiAgICAgICAgY29sbGVjdGl2aXRlX29mX2pzb29cbiAgICAgICAgICBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIyMubGlldUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBsb3llclByaW5jaXBhbEJhc2VJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYmVuZWZpY2lhaXJlQWlkZUFkdWx0ZU91RW5mYW50SGFuZGljYXBlc0luOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbjpcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB6b25lSW46IHpvbmVfZF9oYWJpdGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBsb2dlbWVudEVzdENoYW1icmVJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWdlZXNPdUhhbmRpY2FwQWR1bHRlc0hlYmVyZ2Vlc09uZXJldXhQYXJ0aWN1bGllcnNJbjpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHR5cGVBaWRlSW46IHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvbG9jYXRpb25JbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVkdWN0aW9uTG95ZXJTb2xpZGFyaXRlSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG9nZW1lbnRNZXVibGVEODQyMkluOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNpZGVuY2VJbjogY29sbGVjdGl2aXRlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbl90b19qc29vXG4gICAgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgIDogQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudExvY2F0aWZJbi50KVxuICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGxveWVyUHJpbmNpcGFsQmFzZUluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5sb3llcl9wcmluY2lwYWxfYmFzZV9pblxuICAgICAgdmFsIHJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luXG4gICAgICB2YWwgYmVuZWZpY2lhaXJlQWlkZUFkdWx0ZU91RW5mYW50SGFuZGljYXBlc0luID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzX2luXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIHZhbCBub21icmVQZXJzb25uZXNBQ2hhcmdlSW4gPVxuICAgICAgICBpbnRlZ2VyX3RvX2ludCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pblxuICAgICAgdmFsIHNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXG4gICAgICB2YWwgem9uZUluID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uem9uZV9pblxuICAgICAgdmFsIGxvZ2VtZW50RXN0Q2hhbWJyZUluID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4ubG9nZW1lbnRfZXN0X2NoYW1icmVfaW5cbiAgICAgIHZhbCBhZ2Vlc091SGFuZGljYXBBZHVsdGVzSGViZXJnZWVzT25lcmV1eFBhcnRpY3VsaWVyc0luID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4uYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfaW5cbiAgICAgIHZhbCB0eXBlQWlkZUluID1cbiAgICAgICAgdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF90b19qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi50eXBlX2FpZGVfaW5cbiAgICAgIHZhbCBjb2xvY2F0aW9uSW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbi5jb2xvY2F0aW9uX2luXG4gICAgICB2YWwgcmVkdWN0aW9uTG95ZXJTb2xpZGFyaXRlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLnJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX2luXG4gICAgICB2YWwgbG9nZW1lbnRNZXVibGVEODQyMkluID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4ubG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl9pblxuICAgICAgdmFsIHJlc2lkZW5jZUluID1cbiAgICAgICAgY29sbGVjdGl2aXRlX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luLnJlc2lkZW5jZV9pblxuICAgICAgZW5kXG4gIGxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW5fb2ZfanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW5cbiAgICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luIEpzLnQpIDpcbiAgICBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZkluLnQgPVxuICAgIHtcbiAgICAgIGxveWVyX3ByaW5jaXBhbF9iYXNlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgICAgICAgICMjLmxveWVyUHJpbmNpcGFsQmFzZUluO1xuICAgICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgICAgICAgICMjLnJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNJbjtcbiAgICAgIGJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc19pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW5cbiAgICAgICAgICAjIy5iZW5lZmljaWFpcmVBaWRlQWR1bHRlT3VFbmZhbnRIYW5kaWNhcGVzSW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICBub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luID1cbiAgICAgICAgaW50ZWdlcl9vZl9pbnRcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW5cbiAgICAgICAgICAjIy5ub21icmVQZXJzb25uZXNBQ2hhcmdlSW47XG4gICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbF9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luXG4gICAgICAgICAgIyMuc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW47XG4gICAgICB6b25lX2luID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbiMjLnpvbmVJbjtcbiAgICAgIGxvZ2VtZW50X2VzdF9jaGFtYnJlX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgICAgICAgICMjLmxvZ2VtZW50RXN0Q2hhbWJyZUluO1xuICAgICAgYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX2luXG4gICAgICAgICAgIyMuYWdlZXNPdUhhbmRpY2FwQWR1bHRlc0hlYmVyZ2Vlc09uZXJldXhQYXJ0aWN1bGllcnNJbjtcbiAgICAgIHR5cGVfYWlkZV9pbiA9XG4gICAgICAgIHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbiMjLnR5cGVBaWRlSW47XG4gICAgICBjb2xvY2F0aW9uX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbiMjLmNvbG9jYXRpb25JbjtcbiAgICAgIHJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgICAgICAgICMjLnJlZHVjdGlvbkxveWVyU29saWRhcml0ZUluO1xuICAgICAgbG9nZW1lbnRfbWV1YmxlX2Q4NDJfMl9pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW5cbiAgICAgICAgICAjIy5sb2dlbWVudE1ldWJsZUQ4NDIySW47XG4gICAgICByZXNpZGVuY2VfaW4gPVxuICAgICAgICBjb2xsZWN0aXZpdGVfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pbiMjLnJlc2lkZW5jZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgY29uZGl0aW9uMkR1ODMyMjVJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgbk5vbWJyZVBhcnRzRDgzMjI1SW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW5fdG9fanNvb1xuICAgIChjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW5cbiAgICA6IENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLnQpXG4gICAgOiBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIHZhbCByZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2luLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pblxuICAgICAgdmFsIGNvbmRpdGlvbjJEdTgzMjI1SW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW5cbiAgICAgIHZhbCBuTm9tYnJlUGFydHNEODMyMjVJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBkZWNpbWFsX3RvX2Zsb2F0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbi5uX25vbWJyZV9wYXJ0c19kODMyXzI1X2luXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbl9vZl9qc29vXG4gICAgKGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pblxuICAgICAgOiBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW4gSnMudCkgOlxuICAgIENhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZUluLnQgPVxuICAgIHtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb28gY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2luIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICByZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2luIyMucmVzc291cmNlc01lbmFnZUFycm9uZGllc0luO1xuICAgICAgY29uZGl0aW9uXzJfZHVfODMyXzI1X2luID1cbiAgICAgICAgSnMudG9fYm9vbCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW4jIy5jb25kaXRpb24yRHU4MzIyNUluO1xuICAgICAgbl9ub21icmVfcGFydHNfZDgzMl8yNV9pbiA9XG4gICAgICAgIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2luIyMubk5vbWJyZVBhcnRzRDgzMjI1SW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvbmRpdGlvbjJEdTgzMjI1SW46IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW46XG4gICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbGltaXRhdGlvbk1ham9yYXRpb25QZXJzb25uZXNBQ2hhcmdlSW46XG4gICAgICAodW5pdCwgIHVuaXQgLT4gYm9vbCBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgZW5kXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW5fdG9fanNvb1xuICAgIChjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW5cbiAgICA6IENhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4udClcbiAgICA6IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIGNvbmRpdGlvbjJEdTgzMjI1SW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbi5jb25kaXRpb25fMl9kdV84MzJfMjVfaW5cbiAgICAgIHZhbCBub21icmVQZXJzb25uZXNBQ2hhcmdlSW4gPVxuICAgICAgICBpbnRlZ2VyX3RvX2ludCBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pblxuICAgICAgdmFsIHNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfdG9fanNvbyBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXG4gICAgICBtZXRob2QgbGltaXRhdGlvbk1ham9yYXRpb25QZXJzb25uZXNBQ2hhcmdlSW4gPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBfIChmdW5jdGlvbl9pbnB1dDA6IHVuaXQpIC0+XG4gICAgICAgICAgSnMuYm9vbCAoY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX2luLmxpbWl0YXRpb25fbWFqb3JhdGlvbl9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gXG4gICAgICAgICAgKFxuICAgICAgICAgICAgZnVuY3Rpb25faW5wdXQwKSkpXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbl9vZl9qc29vXG4gICAgKGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pblxuICAgICAgOiBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW4gSnMudCkgOlxuICAgIENhbGN1bE5vbWJyZVBhcnRMb2dlbWVudEZveWVySW4udCA9XG4gICAge1xuICAgICAgZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvbyBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW4jIy5kYXRlQ291cmFudGVJbjtcbiAgICAgIGNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2wgY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX2luIyMuY29uZGl0aW9uMkR1ODMyMjVJbjtcbiAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICBpbnRlZ2VyX29mX2ludFxuICAgICAgICAgIGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbiMjLm5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjtcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfaW5cbiAgICAgICAgICAjIy5zaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbjtcbiAgICAgIGxpbWl0YXRpb25fbWFqb3JhdGlvbl9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAnbGltaXRhdGlvbl9tYWpvcmF0aW9uX3BlcnNvbm5lc19hX2NoYXJnZV9pbicgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgcmVzaWRlbmNlSW46IGNvbGxlY3Rpdml0ZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG9nZW1lbnRGb3llckpldW5lc1RyYXZhaWxsZXVyc0luOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0eXBlTG9nZW1lbnRGb3llckluOiB0eXBlX2xvZ2VtZW50X2ZveWVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlQ29udmVudGlvbm5lbWVudEluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBub21icmVQZXJzb25uZXNBQ2hhcmdlSW46IGludCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluOlxuICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHpvbmVJbjogem9uZV9kX2hhYml0YXRpb24gSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlZGV2YW5jZUluOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvbmRpdGlvbjJEdTgzMjI1SW46XG4gICAgICAodW5pdCwgIHVuaXQgLT4gYm9vbCBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgICBtZXRob2QgbGltaXRhdGlvbk1ham9yYXRpb25QZXJzb25uZXNBQ2hhcmdlSW46XG4gICAgICAodW5pdCwgIHVuaXQgLT4gYm9vbCBKcy50KSBKcy5tZXRoX2NhbGxiYWNrIEpzLm1ldGhcbiAgICBtZXRob2Qgbk5vbWJyZVBhcnRzRDgzMjI1SW46XG4gICAgICAodW5pdCwgIHVuaXQgLT4gSnMubnVtYmVyIEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICBlbmRcbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW5fdG9fanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luXG4gICAgOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXJJbi50KVxuICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCByZXNpZGVuY2VJbiA9XG4gICAgICAgIGNvbGxlY3Rpdml0ZV90b19qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4ucmVzaWRlbmNlX2luXG4gICAgICB2YWwgbG9nZW1lbnRGb3llckpldW5lc1RyYXZhaWxsZXVyc0luID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luLmxvZ2VtZW50X2ZveWVyX2pldW5lc190cmF2YWlsbGV1cnNfaW5cbiAgICAgIHZhbCB0eXBlTG9nZW1lbnRGb3llckluID1cbiAgICAgICAgdHlwZV9sb2dlbWVudF9mb3llcl90b19qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4udHlwZV9sb2dlbWVudF9mb3llcl9pblxuICAgICAgdmFsIGRhdGVDb252ZW50aW9ubmVtZW50SW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5kYXRlX2NvbnZlbnRpb25uZW1lbnRfaW5cbiAgICAgIHZhbCByZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW5cbiAgICAgIHZhbCBub21icmVQZXJzb25uZXNBQ2hhcmdlSW4gPVxuICAgICAgICBpbnRlZ2VyX3RvX2ludCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luLm5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW5cbiAgICAgIHZhbCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW5cbiAgICAgIHZhbCB6b25lSW4gPVxuICAgICAgICB6b25lX2RfaGFiaXRhdGlvbl90b19qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4uem9uZV9pblxuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIHJlZGV2YW5jZUluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4ucmVkZXZhbmNlX2luXG4gICAgICBtZXRob2QgY29uZGl0aW9uMkR1ODMyMjVJbiA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIF8gKGZ1bmN0aW9uX2lucHV0MDogdW5pdCkgLT5cbiAgICAgICAgICBKcy5ib29sIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luLmNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiBcbiAgICAgICAgICAoXG4gICAgICAgICAgICBmdW5jdGlvbl9pbnB1dDApKSlcbiAgICAgIG1ldGhvZCBsaW1pdGF0aW9uTWFqb3JhdGlvblBlcnNvbm5lc0FDaGFyZ2VJbiA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIF8gKGZ1bmN0aW9uX2lucHV0MDogdW5pdCkgLT5cbiAgICAgICAgICBKcy5ib29sIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luLmxpbWl0YXRpb25fbWFqb3JhdGlvbl9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gXG4gICAgICAgICAgKFxuICAgICAgICAgICAgZnVuY3Rpb25faW5wdXQwKSkpXG4gICAgICBtZXRob2Qgbk5vbWJyZVBhcnRzRDgzMjI1SW4gPSBKcy53cmFwX21ldGhfY2FsbGJhY2tcbiAgICAgICAgKFxuICAgICAgICAgIGZ1biBfIChmdW5jdGlvbl9pbnB1dDA6IHVuaXQpIC0+XG4gICAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIGRlY2ltYWxfdG9fZmxvYXQgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4ubl9ub21icmVfcGFydHNfZDgzMl8yNV9pbiBcbiAgICAgICAgICAoXG4gICAgICAgICAgICBmdW5jdGlvbl9pbnB1dDApKSlcbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbl9vZl9qc29vXG4gICAgKGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW5cbiAgICAgIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbiBKcy50KSA6XG4gICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEZveWVySW4udCA9XG4gICAge1xuICAgICAgcmVzaWRlbmNlX2luID1cbiAgICAgICAgY29sbGVjdGl2aXRlX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luIyMucmVzaWRlbmNlSW47XG4gICAgICBsb2dlbWVudF9mb3llcl9qZXVuZXNfdHJhdmFpbGxldXJzX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW5cbiAgICAgICAgICAjIy5sb2dlbWVudEZveWVySmV1bmVzVHJhdmFpbGxldXJzSW47XG4gICAgICB0eXBlX2xvZ2VtZW50X2ZveWVyX2luID1cbiAgICAgICAgdHlwZV9sb2dlbWVudF9mb3llcl9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbiMjLnR5cGVMb2dlbWVudEZveWVySW47XG4gICAgICBkYXRlX2NvbnZlbnRpb25uZW1lbnRfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luXG4gICAgICAgICAgIyMuZGF0ZUNvbnZlbnRpb25uZW1lbnRJbjtcbiAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luXG4gICAgICAgICAgIyMucmVzc291cmNlc01lbmFnZUFycm9uZGllc0luO1xuICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgIGludGVnZXJfb2ZfaW50XG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pblxuICAgICAgICAgICMjLm5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjtcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luXG4gICAgICAgICAgIyMuc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW47XG4gICAgICB6b25lX2luID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4jIy56b25lSW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgcmVkZXZhbmNlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW4jIy5yZWRldmFuY2VJbjtcbiAgICAgIGNvbmRpdGlvbl8yX2R1XzgzMl8yNV9pbiA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICdjb25kaXRpb25fMl9kdV84MzJfMjVfaW4nIHRyYW5zbGF0aW9uIGlzbid0IHlldCBzdXBwb3J0ZWQuLi5cIjtcbiAgICAgIGxpbWl0YXRpb25fbWFqb3JhdGlvbl9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPSBmYWlsd2l0aCBcIlRoZSBmdW5jdGlvbiAnbGltaXRhdGlvbl9tYWpvcmF0aW9uX3BlcnNvbm5lc19hX2NoYXJnZV9pbicgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiO1xuICAgICAgbl9ub21icmVfcGFydHNfZDgzMl8yNV9pbiA9IGZhaWx3aXRoIFwiVGhlIGZ1bmN0aW9uICduX25vbWJyZV9wYXJ0c19kODMyXzI1X2luJyB0cmFuc2xhdGlvbiBpc24ndCB5ZXQgc3VwcG9ydGVkLi4uXCJcbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW46XG4gICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5fdG9fanNvb1xuICAgIChjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICA6IENhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlSW4udClcbiAgICA6IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBub21icmVQZXJzb25uZXNBQ2hhcmdlSW4gPVxuICAgICAgICBpbnRlZ2VyX3RvX2ludCBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pblxuICAgICAgdmFsIHNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfdG9fanNvbyBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbl9vZl9qc29vXG4gICAgKGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgOiBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4gSnMudCkgOlxuICAgIENhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlSW4udCA9XG4gICAge1xuICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgIGludGVnZXJfb2ZfaW50XG4gICAgICAgICAgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMubm9tYnJlUGVyc29ubmVzQUNoYXJnZUluO1xuICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLnNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBtZW5zdWFsaXRlUHJpbmNpcGFsZUluOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBub21icmVQZXJzb25uZXNBQ2hhcmdlSW46IGludCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluOlxuICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHR5cGVUcmF2YXV4TG9nZW1lbnRJbjpcbiAgICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlU2lnbmF0dXJlUHJldEluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGxvY2FsSGFiaXRlUHJlbWllcmVGb2lzQmVuZWZpY2lhaXJlSW46IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVFbnRyZWVMb2dlbWVudEluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvcHJvcHJpZXRlSW46IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHNpdHVhdGlvblI4MjIxMTEzMTdJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgem9uZUluOiB6b25lX2RfaGFiaXRhdGlvbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgdHlwZVByZXRJbjogdHlwZV9wcmV0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBhbmNpZW5uZXRlTG9nZW1lbnRJbjogbmV1Zl9vdV9hbmNpZW4gSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlc2lkZW5jZUluOiBjb2xsZWN0aXZpdGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luX3RvX2pzb29cbiAgICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50QWNjZXNzaW9uUHJvcHJpZXRlSW4udClcbiAgICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtZW5zdWFsaXRlUHJpbmNpcGFsZUluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5tZW5zdWFsaXRlX3ByaW5jaXBhbGVfaW5cbiAgICAgIHZhbCByZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLnJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pblxuICAgICAgdmFsIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbiA9XG4gICAgICAgIGludGVnZXJfdG9faW50IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luXG4gICAgICB2YWwgc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW4gPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbF90b19qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5zaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW5cbiAgICAgIHZhbCB0eXBlVHJhdmF1eExvZ2VtZW50SW4gPVxuICAgICAgICB0eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNV90b19qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi50eXBlX3RyYXZhdXhfbG9nZW1lbnRfaW5cbiAgICAgIHZhbCBkYXRlU2lnbmF0dXJlUHJldEluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5kYXRlX3NpZ25hdHVyZV9wcmV0X2luXG4gICAgICB2YWwgbG9jYWxIYWJpdGVQcmVtaWVyZUZvaXNCZW5lZmljaWFpcmVJbiA9XG4gICAgICAgIEpzLmJvb2wgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLmxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZV9pblxuICAgICAgdmFsIGRhdGVFbnRyZWVMb2dlbWVudEluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5kYXRlX2VudHJlZV9sb2dlbWVudF9pblxuICAgICAgdmFsIGNvcHJvcHJpZXRlSW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5jb3Byb3ByaWV0ZV9pblxuICAgICAgdmFsIHNpdHVhdGlvblI4MjIxMTEzMTdJbiA9XG4gICAgICAgIEpzLmJvb2wgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLnNpdHVhdGlvbl9yODIyXzExXzEzXzE3X2luXG4gICAgICB2YWwgem9uZUluID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uem9uZV9pblxuICAgICAgdmFsIHR5cGVQcmV0SW4gPVxuICAgICAgICB0eXBlX3ByZXRfdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4udHlwZV9wcmV0X2luXG4gICAgICB2YWwgYW5jaWVubmV0ZUxvZ2VtZW50SW4gPVxuICAgICAgICBuZXVmX291X2FuY2llbl90b19qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5hbmNpZW5uZXRlX2xvZ2VtZW50X2luXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIHZhbCByZXNpZGVuY2VJbiA9XG4gICAgICAgIGNvbGxlY3Rpdml0ZV90b19qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5yZXNpZGVuY2VfaW5cbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luX29mX2pzb29cbiAgICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiBKcy50KSA6XG4gICAgQ2FsY3VsQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnQgPVxuICAgIHtcbiAgICAgIG1lbnN1YWxpdGVfcHJpbmNpcGFsZV9pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5tZW5zdWFsaXRlUHJpbmNpcGFsZUluO1xuICAgICAgcmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLnJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNJbjtcbiAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICBpbnRlZ2VyX29mX2ludFxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLm5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjtcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5zaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbjtcbiAgICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9pbiA9XG4gICAgICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9kODMyXzE1X29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy50eXBlVHJhdmF1eExvZ2VtZW50SW47XG4gICAgICBkYXRlX3NpZ25hdHVyZV9wcmV0X2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMuZGF0ZVNpZ25hdHVyZVByZXRJbjtcbiAgICAgIGxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZV9pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5sb2NhbEhhYml0ZVByZW1pZXJlRm9pc0JlbmVmaWNpYWlyZUluO1xuICAgICAgZGF0ZV9lbnRyZWVfbG9nZW1lbnRfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5kYXRlRW50cmVlTG9nZW1lbnRJbjtcbiAgICAgIGNvcHJvcHJpZXRlX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLmNvcHJvcHJpZXRlSW47XG4gICAgICBzaXR1YXRpb25fcjgyMl8xMV8xM18xN19pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5zaXR1YXRpb25SODIyMTExMzE3SW47XG4gICAgICB6b25lX2luID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiMjLnpvbmVJbjtcbiAgICAgIHR5cGVfcHJldF9pbiA9XG4gICAgICAgIHR5cGVfcHJldF9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMudHlwZVByZXRJbjtcbiAgICAgIGFuY2llbm5ldGVfbG9nZW1lbnRfaW4gPVxuICAgICAgICBuZXVmX291X2FuY2llbl9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMuYW5jaWVubmV0ZUxvZ2VtZW50SW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICByZXNpZGVuY2VfaW4gPVxuICAgICAgICBjb2xsZWN0aXZpdGVfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLnJlc2lkZW5jZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgbW9kZU9jY3VwYXRpb25JbjogbW9kZV9vY2N1cGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0eXBlQWlkZUluOiB0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzTWVuYWdlU2Fuc0Fycm9uZGlJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25GYW1pbGlhbGVJbjogc2l0dWF0aW9uX2ZhbWlsaWFsZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB6b25lSW46IHpvbmVfZF9oYWJpdGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNpZGVuY2VJbjogY29sbGVjdGl2aXRlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW5fdG9fanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luXG4gICAgOiBDYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50SW4udClcbiAgICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbW9kZU9jY3VwYXRpb25JbiA9XG4gICAgICAgIG1vZGVfb2NjdXBhdGlvbl90b19qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4ubW9kZV9vY2N1cGF0aW9uX2luXG4gICAgICB2YWwgdHlwZUFpZGVJbiA9XG4gICAgICAgIHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLnR5cGVfYWlkZV9pblxuICAgICAgdmFsIHJlc3NvdXJjZXNNZW5hZ2VTYW5zQXJyb25kaUluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4ucmVzc291cmNlc19tZW5hZ2Vfc2Fuc19hcnJvbmRpX2luXG4gICAgICB2YWwgc2l0dWF0aW9uRmFtaWxpYWxlSW4gPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX3RvX2pzb28gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi5zaXR1YXRpb25fZmFtaWxpYWxlX2luXG4gICAgICB2YWwgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluID1cbiAgICAgICAgaW50ZWdlcl90b19pbnQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luXG4gICAgICB2YWwgem9uZUluID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLnpvbmVfaW5cbiAgICAgIHZhbCBkYXRlQ291cmFudGVJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIHZhbCByZXNpZGVuY2VJbiA9XG4gICAgICAgIGNvbGxlY3Rpdml0ZV90b19qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4ucmVzaWRlbmNlX2luXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW5fb2ZfanNvb1xuICAgIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luXG4gICAgICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4gSnMudCkgOlxuICAgIENhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRJbi50ID1cbiAgICB7XG4gICAgICBtb2RlX29jY3VwYXRpb25faW4gPVxuICAgICAgICBtb2RlX29jY3VwYXRpb25fb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4jIy5tb2RlT2NjdXBhdGlvbkluO1xuICAgICAgdHlwZV9haWRlX2luID1cbiAgICAgICAgdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiMjLnR5cGVBaWRlSW47XG4gICAgICByZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pblxuICAgICAgICAgICMjLnJlc3NvdXJjZXNNZW5hZ2VTYW5zQXJyb25kaUluO1xuICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9pbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4jIy5zaXR1YXRpb25GYW1pbGlhbGVJbjtcbiAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICBpbnRlZ2VyX29mX2ludFxuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4jIy5ub21icmVQZXJzb25uZXNBQ2hhcmdlSW47XG4gICAgICB6b25lX2luID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4jIy56b25lSW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4jIy5kYXRlQ291cmFudGVJbjtcbiAgICAgIHJlc2lkZW5jZV9pbiA9XG4gICAgICAgIGNvbGxlY3Rpdml0ZV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiMjLnJlc2lkZW5jZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgbG95ZXJQcmluY2lwYWxJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYmVuZWZpY2lhaXJlQWlkZUFkdWx0ZU91RW5mYW50SGFuZGljYXBlc0luOlxuICAgICAgYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbjpcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB6b25lSW46IHpvbmVfZF9oYWJpdGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBsb2dlbWVudEVzdENoYW1icmVJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWdlZXNPdUhhbmRpY2FwQWR1bHRlc0hlYmVyZ2Vlc09uZXJldXhQYXJ0aWN1bGllcnNJbjpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHR5cGVBaWRlSW46IHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvbG9jYXRpb25JbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVkdWN0aW9uTG95ZXJTb2xpZGFyaXRlSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbG9nZW1lbnRNZXVibGVEODQyMkluOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNpZGVuY2VJbjogY29sbGVjdGl2aXRlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjaGFuZ2VtZW50TG9nZW1lbnREODQyNEluOlxuICAgICAgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbl90b19qc29vXG4gICAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW5cbiAgICA6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWZJbi50KVxuICAgIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBsb3llclByaW5jaXBhbEluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4ubG95ZXJfcHJpbmNpcGFsX2luXG4gICAgICB2YWwgcmVzc291cmNlc01lbmFnZUFycm9uZGllc0luID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4ucmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2luXG4gICAgICB2YWwgYmVuZWZpY2lhaXJlQWlkZUFkdWx0ZU91RW5mYW50SGFuZGljYXBlc0luID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLmJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbmZhbnRfaGFuZGljYXBlc19pblxuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbiA9XG4gICAgICAgIGludGVnZXJfdG9faW50IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pblxuICAgICAgdmFsIHNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblxuICAgICAgdmFsIHpvbmVJbiA9XG4gICAgICAgIHpvbmVfZF9oYWJpdGF0aW9uX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi56b25lX2luXG4gICAgICB2YWwgbG9nZW1lbnRFc3RDaGFtYnJlSW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4ubG9nZW1lbnRfZXN0X2NoYW1icmVfaW5cbiAgICAgIHZhbCBhZ2Vlc091SGFuZGljYXBBZHVsdGVzSGViZXJnZWVzT25lcmV1eFBhcnRpY3VsaWVyc0luID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLmFnZWVzX291X2hhbmRpY2FwX2FkdWx0ZXNfaGViZXJnZWVzX29uZXJldXhfcGFydGljdWxpZXJzX2luXG4gICAgICB2YWwgdHlwZUFpZGVJbiA9XG4gICAgICAgIHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLnR5cGVfYWlkZV9pblxuICAgICAgdmFsIGNvbG9jYXRpb25JbiA9XG4gICAgICAgIEpzLmJvb2wgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5jb2xvY2F0aW9uX2luXG4gICAgICB2YWwgcmVkdWN0aW9uTG95ZXJTb2xpZGFyaXRlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5yZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9pblxuICAgICAgdmFsIGxvZ2VtZW50TWV1YmxlRDg0MjJJbiA9XG4gICAgICAgIEpzLmJvb2wgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbi5sb2dlbWVudF9tZXVibGVfZDg0Ml8yX2luXG4gICAgICB2YWwgcmVzaWRlbmNlSW4gPVxuICAgICAgICBjb2xsZWN0aXZpdGVfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luLnJlc2lkZW5jZV9pblxuICAgICAgdmFsIGNoYW5nZW1lbnRMb2dlbWVudEQ4NDI0SW4gPVxuICAgICAgICBjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4uY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfaW5cbiAgICAgIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbl9vZl9qc29vXG4gICAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW5cbiAgICAgIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbiBKcy50KSA6XG4gICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50TG9jYXRpZkluLnQgPVxuICAgIHtcbiAgICAgIGxveWVyX3ByaW5jaXBhbF9pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luIyMubG95ZXJQcmluY2lwYWxJbjtcbiAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luIyMucmVzc291cmNlc01lbmFnZUFycm9uZGllc0luO1xuICAgICAgYmVuZWZpY2lhaXJlX2FpZGVfYWR1bHRlX291X2VuZmFudF9oYW5kaWNhcGVzX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW5cbiAgICAgICAgICAjIy5iZW5lZmljaWFpcmVBaWRlQWR1bHRlT3VFbmZhbnRIYW5kaWNhcGVzSW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4jIy5kYXRlQ291cmFudGVJbjtcbiAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICBpbnRlZ2VyX29mX2ludFxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4jIy5ub21icmVQZXJzb25uZXNBQ2hhcmdlSW47XG4gICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hcGxfaW4gPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbF9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgICAgICAgICMjLnNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluO1xuICAgICAgem9uZV9pbiA9XG4gICAgICAgIHpvbmVfZF9oYWJpdGF0aW9uX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luIyMuem9uZUluO1xuICAgICAgbG9nZW1lbnRfZXN0X2NoYW1icmVfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbiMjLmxvZ2VtZW50RXN0Q2hhbWJyZUluO1xuICAgICAgYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlcmdlZXNfb25lcmV1eF9wYXJ0aWN1bGllcnNfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pblxuICAgICAgICAgICMjLmFnZWVzT3VIYW5kaWNhcEFkdWx0ZXNIZWJlcmdlZXNPbmVyZXV4UGFydGljdWxpZXJzSW47XG4gICAgICB0eXBlX2FpZGVfaW4gPVxuICAgICAgICB0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luIyMudHlwZUFpZGVJbjtcbiAgICAgIGNvbG9jYXRpb25faW4gPVxuICAgICAgICBKcy50b19ib29sIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4jIy5jb2xvY2F0aW9uSW47XG4gICAgICByZWR1Y3Rpb25fbG95ZXJfc29saWRhcml0ZV9pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luIyMucmVkdWN0aW9uTG95ZXJTb2xpZGFyaXRlSW47XG4gICAgICBsb2dlbWVudF9tZXVibGVfZDg0Ml8yX2luID1cbiAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4jIy5sb2dlbWVudE1ldWJsZUQ4NDIySW47XG4gICAgICByZXNpZGVuY2VfaW4gPVxuICAgICAgICBjb2xsZWN0aXZpdGVfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4jIy5yZXNpZGVuY2VJbjtcbiAgICAgIGNoYW5nZW1lbnRfbG9nZW1lbnRfZDg0Ml80X2luID1cbiAgICAgICAgY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzRfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4jIy5jaGFuZ2VtZW50TG9nZW1lbnREODQyNEluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgcmVzc291cmNlc01lbmFnZUFycm9uZGllc0Jhc2VJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBub21icmVQZXJzb25uZXNBQ2hhcmdlSW46IGludCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluOlxuICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHpvbmVJbjogem9uZV9kX2hhYml0YXRpb24gSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlc2lkZW5jZUluOiBjb2xsZWN0aXZpdGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG1lbnN1YWxpdGVQcmluY2lwYWxlSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgc2l0dWF0aW9uUjgyMjExMTMxN0luOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlU2lnbmF0dXJlUHJldEluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHR5cGVUcmF2YXV4TG9nZW1lbnRJbjpcbiAgICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGxvY2FsSGFiaXRlUHJlbWllcmVGb2lzQmVuZWZpY2lhaXJlSW46IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRhdGVFbnRyZWVMb2dlbWVudEluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNoYXJnZXNNZW5zdWVsbGVzUHJldEluOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGNvcHJvcHJpZXRlSW46IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG9wZXJhdGlvbnNMb2dlbWVudEV2b2x1dGlmc1NvY2lhdXhBY2Nlc3Npb25Qcm9wcmlldGVBaWRlZUV0YXRJbjpcbiAgICAgIGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbl90b19qc29vXG4gICAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICA6IENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnQpXG4gICAgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIHJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNCYXNlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfYmFzZV9pblxuICAgICAgdmFsIG5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbiA9XG4gICAgICAgIGludGVnZXJfdG9faW50IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pblxuICAgICAgdmFsIHNpdHVhdGlvbkZhbWlsaWFsZUNhbGN1bEFwbEluID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblxuICAgICAgdmFsIHpvbmVJbiA9XG4gICAgICAgIHpvbmVfZF9oYWJpdGF0aW9uX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi56b25lX2luXG4gICAgICB2YWwgcmVzaWRlbmNlSW4gPVxuICAgICAgICBjb2xsZWN0aXZpdGVfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLnJlc2lkZW5jZV9pblxuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIG1lbnN1YWxpdGVQcmluY2lwYWxlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5tZW5zdWFsaXRlX3ByaW5jaXBhbGVfaW5cbiAgICAgIHZhbCBzaXR1YXRpb25SODIyMTExMzE3SW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uc2l0dWF0aW9uX3I4MjJfMTFfMTNfMTdfaW5cbiAgICAgIHZhbCBkYXRlU2lnbmF0dXJlUHJldEluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uZGF0ZV9zaWduYXR1cmVfcHJldF9pblxuICAgICAgdmFsIHR5cGVUcmF2YXV4TG9nZW1lbnRJbiA9XG4gICAgICAgIHR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzVfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLnR5cGVfdHJhdmF1eF9sb2dlbWVudF9pblxuICAgICAgdmFsIGxvY2FsSGFiaXRlUHJlbWllcmVGb2lzQmVuZWZpY2lhaXJlSW4gPVxuICAgICAgICBKcy5ib29sIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4ubG9jYWxfaGFiaXRlX3ByZW1pZXJlX2ZvaXNfYmVuZWZpY2lhaXJlX2luXG4gICAgICB2YWwgZGF0ZUVudHJlZUxvZ2VtZW50SW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbi5kYXRlX2VudHJlZV9sb2dlbWVudF9pblxuICAgICAgdmFsIGNoYXJnZXNNZW5zdWVsbGVzUHJldEluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4uY2hhcmdlc19tZW5zdWVsbGVzX3ByZXRfaW5cbiAgICAgIHZhbCBjb3Byb3ByaWV0ZUluID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLmNvcHJvcHJpZXRlX2luXG4gICAgICB2YWwgb3BlcmF0aW9uc0xvZ2VtZW50RXZvbHV0aWZzU29jaWF1eEFjY2Vzc2lvblByb3ByaWV0ZUFpZGVlRXRhdEluID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luLm9wZXJhdGlvbnNfbG9nZW1lbnRfZXZvbHV0aWZzX3NvY2lhdXhfYWNjZXNzaW9uX3Byb3ByaWV0ZV9haWRlZV9FdGF0X2luXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5fb2ZfanNvb1xuICAgIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4gSnMudCkgOlxuICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZUluLnQgPVxuICAgIHtcbiAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19iYXNlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5yZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzQmFzZUluO1xuICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgIGludGVnZXJfb2ZfaW50XG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLm5vbWJyZVBlcnNvbm5lc0FDaGFyZ2VJbjtcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMuc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW47XG4gICAgICB6b25lX2luID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4jIy56b25lSW47XG4gICAgICByZXNpZGVuY2VfaW4gPVxuICAgICAgICBjb2xsZWN0aXZpdGVfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4jIy5yZXNpZGVuY2VJbjtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICBtZW5zdWFsaXRlX3ByaW5jaXBhbGVfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLm1lbnN1YWxpdGVQcmluY2lwYWxlSW47XG4gICAgICBzaXR1YXRpb25fcjgyMl8xMV8xM18xN19pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMuc2l0dWF0aW9uUjgyMjExMTMxN0luO1xuICAgICAgZGF0ZV9zaWduYXR1cmVfcHJldF9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgICAgICAgICAjIy5kYXRlU2lnbmF0dXJlUHJldEluO1xuICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X2luID1cbiAgICAgICAgdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4NDJfNV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLnR5cGVUcmF2YXV4TG9nZW1lbnRJbjtcbiAgICAgIGxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbmVmaWNpYWlyZV9pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMubG9jYWxIYWJpdGVQcmVtaWVyZUZvaXNCZW5lZmljaWFpcmVJbjtcbiAgICAgIGRhdGVfZW50cmVlX2xvZ2VtZW50X2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLmRhdGVFbnRyZWVMb2dlbWVudEluO1xuICAgICAgY2hhcmdlc19tZW5zdWVsbGVzX3ByZXRfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICAgICAgICAgICMjLmNoYXJnZXNNZW5zdWVsbGVzUHJldEluO1xuICAgICAgY29wcm9wcmlldGVfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiMjLmNvcHJvcHJpZXRlSW47XG4gICAgICBvcGVyYXRpb25zX2xvZ2VtZW50X2V2b2x1dGlmc19zb2NpYXV4X2FjY2Vzc2lvbl9wcm9wcmlldGVfYWlkZWVfRXRhdF9pbiA9XG4gICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gICAgICAgICAgIyMub3BlcmF0aW9uc0xvZ2VtZW50RXZvbHV0aWZzU29jaWF1eEFjY2Vzc2lvblByb3ByaWV0ZUFpZGVlRXRhdEluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIHR5cGVMb2dlbWVudEZveWVySW46IHR5cGVfbG9nZW1lbnRfZm95ZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGxvZ2VtZW50Rm95ZXJKZXVuZXNUcmF2YWlsbGV1cnNJbjogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvbnZlbnRpb25uZW1lbnRJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNpZGVuY2VJbjogY29sbGVjdGl2aXRlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZWRldmFuY2VJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzTWVuYWdlQXJyb25kaWVzSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25GYW1pbGlhbGVDYWxjdWxBcGxJbjpcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FfcF9sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB6b25lSW46IHpvbmVfZF9oYWJpdGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBjYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyRDg0MjE2SW46XG4gICAgICBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbl90b19qc29vXG4gICAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luIDogQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXJJbi50KVxuICAgIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgdHlwZUxvZ2VtZW50Rm95ZXJJbiA9XG4gICAgICAgIHR5cGVfbG9nZW1lbnRfZm95ZXJfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi50eXBlX2xvZ2VtZW50X2ZveWVyX2luXG4gICAgICB2YWwgbG9nZW1lbnRGb3llckpldW5lc1RyYXZhaWxsZXVyc0luID1cbiAgICAgICAgSnMuYm9vbCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi5sb2dlbWVudF9mb3llcl9qZXVuZXNfdHJhdmFpbGxldXJzX2luXG4gICAgICB2YWwgZGF0ZUNvbnZlbnRpb25uZW1lbnRJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi5kYXRlX2NvbnZlbnRpb25uZW1lbnRfaW5cbiAgICAgIHZhbCByZXNpZGVuY2VJbiA9XG4gICAgICAgIGNvbGxlY3Rpdml0ZV90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luLnJlc2lkZW5jZV9pblxuICAgICAgdmFsIHJlZGV2YW5jZUluID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luLnJlZGV2YW5jZV9pblxuICAgICAgdmFsIHJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi5yZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfaW5cbiAgICAgIHZhbCBub21icmVQZXJzb25uZXNBQ2hhcmdlSW4gPVxuICAgICAgICBpbnRlZ2VyX3RvX2ludCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbi5ub21icmVfcGVyc29ubmVzX2FfY2hhcmdlX2luXG4gICAgICB2YWwgc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW4gPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3BfbF90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luLnNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbF9pblxuICAgICAgdmFsIHpvbmVJbiA9XG4gICAgICAgIHpvbmVfZF9oYWJpdGF0aW9uX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4uem9uZV9pblxuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIHZhbCBjYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyRDg0MjE2SW4gPVxuICAgICAgICBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luLmNhdGVnb3JpZV9lcXVpdmFsZW5jZV9sb3llcl9kODQyXzE2X2luXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luX29mX2pzb29cbiAgICAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW5cbiAgICAgIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4gSnMudCkgOlxuICAgIENhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEZveWVySW4udCA9XG4gICAge1xuICAgICAgdHlwZV9sb2dlbWVudF9mb3llcl9pbiA9XG4gICAgICAgIHR5cGVfbG9nZW1lbnRfZm95ZXJfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luIyMudHlwZUxvZ2VtZW50Rm95ZXJJbjtcbiAgICAgIGxvZ2VtZW50X2ZveWVyX2pldW5lc190cmF2YWlsbGV1cnNfaW4gPVxuICAgICAgICBKcy50b19ib29sXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW5cbiAgICAgICAgICAjIy5sb2dlbWVudEZveWVySmV1bmVzVHJhdmFpbGxldXJzSW47XG4gICAgICBkYXRlX2NvbnZlbnRpb25uZW1lbnRfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbiMjLmRhdGVDb252ZW50aW9ubmVtZW50SW47XG4gICAgICByZXNpZGVuY2VfaW4gPVxuICAgICAgICBjb2xsZWN0aXZpdGVfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luIyMucmVzaWRlbmNlSW47XG4gICAgICByZWRldmFuY2VfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4jIy5yZWRldmFuY2VJbjtcbiAgICAgIHJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllc19pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbiMjLnJlc3NvdXJjZXNNZW5hZ2VBcnJvbmRpZXNJbjtcbiAgICAgIG5vbWJyZV9wZXJzb25uZXNfYV9jaGFyZ2VfaW4gPVxuICAgICAgICBpbnRlZ2VyX29mX2ludFxuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luIyMubm9tYnJlUGVyc29ubmVzQUNoYXJnZUluO1xuICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYXBsX2luID1cbiAgICAgICAgc2l0dWF0aW9uX2ZhbWlsaWFsZV9jYWxjdWxfYV9wX2xfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luIyMuc2l0dWF0aW9uRmFtaWxpYWxlQ2FsY3VsQXBsSW47XG4gICAgICB6b25lX2luID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luIyMuem9uZUluO1xuICAgICAgZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2Q4NDJfMTZfaW4gPVxuICAgICAgICBjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl9vZl9qc29vXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW5cbiAgICAgICAgICAjIy5jYXRlZ29yaWVFcXVpdmFsZW5jZUxveWVyRDg0MjE2SW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgbW9kZU9jY3VwYXRpb25JbjogbW9kZV9vY2N1cGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzTWVuYWdlU2Fuc0Fycm9uZGlJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBzaXR1YXRpb25GYW1pbGlhbGVJbjogc2l0dWF0aW9uX2ZhbWlsaWFsZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2Qgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB6b25lSW46IHpvbmVfZF9oYWJpdGF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCB0eXBlQWlkZUluOiB0eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNpZGVuY2VJbjogY29sbGVjdGl2aXRlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luX3RvX2pzb28gKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luXG4gICAgOiBDYWxjdWxBbGxvY2F0aW9uTG9nZW1lbnRJbi50KSA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1vZGVPY2N1cGF0aW9uSW4gPVxuICAgICAgICBtb2RlX29jY3VwYXRpb25fdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5tb2RlX29jY3VwYXRpb25faW5cbiAgICAgIHZhbCByZXNzb3VyY2VzTWVuYWdlU2Fuc0Fycm9uZGlJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5yZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfaW5cbiAgICAgIHZhbCBzaXR1YXRpb25GYW1pbGlhbGVJbiA9XG4gICAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfdG9fanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbi5zaXR1YXRpb25fZmFtaWxpYWxlX2luXG4gICAgICB2YWwgbm9tYnJlUGVyc29ubmVzQUNoYXJnZUluID1cbiAgICAgICAgaW50ZWdlcl90b19pbnQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4ubm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pblxuICAgICAgdmFsIHpvbmVJbiA9XG4gICAgICAgIHpvbmVfZF9oYWJpdGF0aW9uX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4uem9uZV9pblxuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLmRhdGVfY291cmFudGVfaW5cbiAgICAgIHZhbCB0eXBlQWlkZUluID1cbiAgICAgICAgdHlwZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF90b19qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luLnR5cGVfYWlkZV9pblxuICAgICAgdmFsIHJlc2lkZW5jZUluID1cbiAgICAgICAgY29sbGVjdGl2aXRlX3RvX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4ucmVzaWRlbmNlX2luXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luX29mX2pzb29cbiAgICAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4gOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiBKcy50KSA6XG4gICAgQ2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50SW4udCA9XG4gICAge1xuICAgICAgbW9kZV9vY2N1cGF0aW9uX2luID1cbiAgICAgICAgbW9kZV9vY2N1cGF0aW9uX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiMjLm1vZGVPY2N1cGF0aW9uSW47XG4gICAgICByZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGlfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4jIy5yZXNzb3VyY2VzTWVuYWdlU2Fuc0Fycm9uZGlJbjtcbiAgICAgIHNpdHVhdGlvbl9mYW1pbGlhbGVfaW4gPVxuICAgICAgICBzaXR1YXRpb25fZmFtaWxpYWxlX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiMjLnNpdHVhdGlvbkZhbWlsaWFsZUluO1xuICAgICAgbm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9pbiA9XG4gICAgICAgIGludGVnZXJfb2ZfaW50XG4gICAgICAgICAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4jIy5ub21icmVQZXJzb25uZXNBQ2hhcmdlSW47XG4gICAgICB6b25lX2luID1cbiAgICAgICAgem9uZV9kX2hhYml0YXRpb25fb2ZfanNvbyBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiMjLnpvbmVJbjtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb28gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4jIy5kYXRlQ291cmFudGVJbjtcbiAgICAgIHR5cGVfYWlkZV9pbiA9XG4gICAgICAgIHR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIyMudHlwZUFpZGVJbjtcbiAgICAgIHJlc2lkZW5jZV9pbiA9XG4gICAgICAgIGNvbGxlY3Rpdml0ZV9vZl9qc29vIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIyMucmVzaWRlbmNlSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbiA9XG4gIG9iamVjdCBtZXRob2QgZGF0ZU5haXNzYW5jZUFzc3VyZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbl90b19qc29vIChvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luXG4gICAgOiBPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZUluLnQpIDogb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbiBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBkYXRlTmFpc3NhbmNlQXNzdXJlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbi5kYXRlX25haXNzYW5jZV9hc3N1cmVfaW5cbiAgICAgIGVuZFxuICBsZXQgb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbl9vZl9qc29vXG4gICAgKG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW4gOiBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luIEpzLnQpIDpcbiAgICBPdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZUluLnQgPVxuICAgIHtcbiAgICAgIGRhdGVfbmFpc3NhbmNlX2Fzc3VyZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvbyBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luIyMuZGF0ZU5haXNzYW5jZUFzc3VyZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIG1vZGVPY2N1cGF0aW9uSW46IG1vZGVfb2NjdXBhdGlvbiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYWlkZVZlcnNlZUluOiB2ZXJzZW1lbnRfYSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgbW9udGFudEFwbEluOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG1vbnRhbnRDaGFyZ2VzSW46IEpzLm51bWJlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGVwZW5zZUxvZ2VtZW50SW46IGRlcGVuc2VfbG9nZW1lbnQgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIG1vbnRhbnREZXR0ZUluOiBKcy5udW1iZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuICBsZXQgaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW5fdG9fanNvbyAoaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW5cbiAgICA6IEltcGF5ZURlcGVuc2VMb2dlbWVudEluLnQpIDogaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbW9kZU9jY3VwYXRpb25JbiA9XG4gICAgICAgIG1vZGVfb2NjdXBhdGlvbl90b19qc29vIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luLm1vZGVfb2NjdXBhdGlvbl9pblxuICAgICAgdmFsIGFpZGVWZXJzZWVJbiA9XG4gICAgICAgIHZlcnNlbWVudF9hX3RvX2pzb28gaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4uYWlkZV92ZXJzZWVfaW5cbiAgICAgIHZhbCBtb250YW50QXBsSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4ubW9udGFudF9hcGxfaW5cbiAgICAgIHZhbCBtb250YW50Q2hhcmdlc0luID1cbiAgICAgICAgSnMubnVtYmVyX29mX2Zsb2F0IEBAIG1vbmV5X3RvX2Zsb2F0IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luLm1vbnRhbnRfY2hhcmdlc19pblxuICAgICAgdmFsIGRlcGVuc2VMb2dlbWVudEluID1cbiAgICAgICAgZGVwZW5zZV9sb2dlbWVudF90b19qc29vIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luLmRlcGVuc2VfbG9nZW1lbnRfaW5cbiAgICAgIHZhbCBtb250YW50RGV0dGVJbiA9XG4gICAgICAgIEpzLm51bWJlcl9vZl9mbG9hdCBAQCBtb25leV90b19mbG9hdCBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbi5tb250YW50X2RldHRlX2luXG4gICAgICBlbmRcbiAgbGV0IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luX29mX2pzb29cbiAgICAoaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4gOiBpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbiBKcy50KSA6XG4gICAgSW1wYXllRGVwZW5zZUxvZ2VtZW50SW4udCA9XG4gICAge1xuICAgICAgbW9kZV9vY2N1cGF0aW9uX2luID1cbiAgICAgICAgbW9kZV9vY2N1cGF0aW9uX29mX2pzb28gaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4jIy5tb2RlT2NjdXBhdGlvbkluO1xuICAgICAgYWlkZV92ZXJzZWVfaW4gPVxuICAgICAgICB2ZXJzZW1lbnRfYV9vZl9qc29vIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luIyMuYWlkZVZlcnNlZUluO1xuICAgICAgbW9udGFudF9hcGxfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4jIy5tb250YW50QXBsSW47XG4gICAgICBtb250YW50X2NoYXJnZXNfaW4gPVxuICAgICAgICBtb25leV9vZl9kZWNpbWFsIEBAIGRlY2ltYWxfb2ZfZmxvYXQgQEAgSnMuZmxvYXRfb2ZfbnVtYmVyXG4gICAgICAgICAgaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4jIy5tb250YW50Q2hhcmdlc0luO1xuICAgICAgZGVwZW5zZV9sb2dlbWVudF9pbiA9XG4gICAgICAgIGRlcGVuc2VfbG9nZW1lbnRfb2ZfanNvb1xuICAgICAgICAgIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luIyMuZGVwZW5zZUxvZ2VtZW50SW47XG4gICAgICBtb250YW50X2RldHRlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luIyMubW9udGFudERldHRlSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBtZW5hZ2VJbjogbWVuYWdlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkZW1hbmRldXJJbjogZGVtYW5kZXVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzTWVuYWdlUHJpc2VzRW5Db21wdGVJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW5fdG9fanNvb1xuICAgIChjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luIDogQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLnQpXG4gICAgOiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1lbmFnZUluID0gbWVuYWdlX3RvX2pzb28gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbi5tZW5hZ2VfaW5cbiAgICAgIHZhbCBkZW1hbmRldXJJbiA9XG4gICAgICAgIGRlbWFuZGV1cl90b19qc29vIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4uZGVtYW5kZXVyX2luXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICB2YWwgcmVzc291cmNlc01lbmFnZVByaXNlc0VuQ29tcHRlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbi5yZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlX2luXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW5fb2ZfanNvb1xuICAgIChjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luIDogY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbiBKcy50KSA6XG4gICAgQ2FsY3VsZXR0ZUFpZGVzQXVMb2dlbWVudEluLnQgPVxuICAgIHtcbiAgICAgIG1lbmFnZV9pbiA9IG1lbmFnZV9vZl9qc29vIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4jIy5tZW5hZ2VJbjtcbiAgICAgIGRlbWFuZGV1cl9pbiA9XG4gICAgICAgIGRlbWFuZGV1cl9vZl9qc29vIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4jIy5kZW1hbmRldXJJbjtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb28gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbiMjLmRhdGVDb3VyYW50ZUluO1xuICAgICAgcmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvbXB0ZV9pbiA9XG4gICAgICAgIG1vbmV5X29mX2RlY2ltYWwgQEAgZGVjaW1hbF9vZl9mbG9hdCBAQCBKcy5mbG9hdF9vZl9udW1iZXJcbiAgICAgICAgICBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luIyMucmVzc291cmNlc01lbmFnZVByaXNlc0VuQ29tcHRlSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBtZW5hZ2VJbjogbWVuYWdlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkZW1hbmRldXJJbjogZGVtYW5kZXVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCByZXNzb3VyY2VzTWVuYWdlUHJpc2VzRW5Db21wdGVJbjogSnMubnVtYmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW5fdG9fanNvb1xuICAgIChjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luXG4gICAgOiBDYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZUluLnQpXG4gICAgOiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG1lbmFnZUluID1cbiAgICAgICAgbWVuYWdlX3RvX2pzb28gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbi5tZW5hZ2VfaW5cbiAgICAgIHZhbCBkZW1hbmRldXJJbiA9XG4gICAgICAgIGRlbWFuZGV1cl90b19qc29vIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4uZGVtYW5kZXVyX2luXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICB2YWwgcmVzc291cmNlc01lbmFnZVByaXNlc0VuQ29tcHRlSW4gPVxuICAgICAgICBKcy5udW1iZXJfb2ZfZmxvYXQgQEAgbW9uZXlfdG9fZmxvYXQgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pbi5yZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlX2luXG4gICAgICBlbmRcbiAgbGV0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW5fb2ZfanNvb1xuICAgIChjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luXG4gICAgICA6IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4gSnMudCkgOlxuICAgIENhbGN1bGV0dGVBaWRlc0F1TG9nZW1lbnRHYXJkZUFsdGVybmVlSW4udCA9XG4gICAge1xuICAgICAgbWVuYWdlX2luID1cbiAgICAgICAgbWVuYWdlX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luIyMubWVuYWdlSW47XG4gICAgICBkZW1hbmRldXJfaW4gPVxuICAgICAgICBkZW1hbmRldXJfb2ZfanNvb1xuICAgICAgICAgIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4jIy5kZW1hbmRldXJJbjtcbiAgICAgIGRhdGVfY291cmFudGVfaW4gPVxuICAgICAgICBkYXRlX29mX2pzb29cbiAgICAgICAgICBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luIyMuZGF0ZUNvdXJhbnRlSW47XG4gICAgICByZXNzb3VyY2VzX21lbmFnZV9wcmlzZXNfZW5fY29tcHRlX2luID1cbiAgICAgICAgbW9uZXlfb2ZfZGVjaW1hbCBAQCBkZWNpbWFsX29mX2Zsb2F0IEBAIEpzLmZsb2F0X29mX251bWJlclxuICAgICAgICAgIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW5cbiAgICAgICAgICAjIy5yZXNzb3VyY2VzTWVuYWdlUHJpc2VzRW5Db21wdGVJblxuICAgIH1cblxuY2xhc3MgdHlwZSBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luID1cbiAgb2JqZWN0IG1ldGhvZCBkYXRlQ291cmFudGVJbjogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5fdG9fanNvb1xuICAgIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luXG4gICAgOiBCYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzSW4udClcbiAgICA6IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICBlbmRcbiAgbGV0IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5fb2ZfanNvb1xuICAgIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luXG4gICAgICA6IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudCkgOlxuICAgIEJhc2VNZW5zdWVsbGVBbGxvY2F0aW9uc0ZhbWlsaWFsZXNJbi50ID1cbiAgICB7XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiMjLmRhdGVDb3VyYW50ZUluXG4gICAgfVxuXG5jbGFzcyB0eXBlIHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYV9pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBkYXRlTmFpc3NhbmNlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYW5uZWVzSW46IFJ1bnRpbWVfanNvby5SdW50aW1lLmR1cmF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYV9pbl90b19qc29vXG4gICAgKHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYV9pblxuICAgIDogVmVyaWZpY2F0aW9uQWdlSW5mZXJpZXVyT3VFZ2FsQUluLnQpXG4gICAgOiB2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2FfaW4gSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgZGF0ZU5haXNzYW5jZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYV9pbi5kYXRlX25haXNzYW5jZV9pblxuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYV9pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICB2YWwgYW5uZWVzSW4gPVxuICAgICAgICBkdXJhdGlvbl90b19qc29vIHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYV9pbi5hbm5lZXNfaW5cbiAgICAgIGVuZFxuICBsZXQgdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hX2luX29mX2pzb29cbiAgICAodmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hX2luXG4gICAgICA6IHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYV9pbiBKcy50KSA6XG4gICAgVmVyaWZpY2F0aW9uQWdlSW5mZXJpZXVyT3VFZ2FsQUluLnQgPVxuICAgIHtcbiAgICAgIGRhdGVfbmFpc3NhbmNlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vXG4gICAgICAgICAgdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hX2luIyMuZGF0ZU5haXNzYW5jZUluO1xuICAgICAgZGF0ZV9jb3VyYW50ZV9pbiA9XG4gICAgICAgIGRhdGVfb2ZfanNvbyB2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2FfaW4jIy5kYXRlQ291cmFudGVJbjtcbiAgICAgIGFubmVlc19pbiA9XG4gICAgICAgIGR1cmF0aW9uX29mX2pzb28gdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hX2luIyMuYW5uZWVzSW5cbiAgICB9XG5cbmNsYXNzIHR5cGUgdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYV9pbiA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBkYXRlTmFpc3NhbmNlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgYW5uZWVzSW46IFJ1bnRpbWVfanNvby5SdW50aW1lLmR1cmF0aW9uIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcbiAgbGV0IHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfaW5fdG9fanNvb1xuICAgICh2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX2luIDogVmVyaWZpY2F0aW9uQWdlU3VwZXJpZXVyQUluLnQpXG4gICAgOiB2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGRhdGVOYWlzc2FuY2VJbiA9XG4gICAgICAgIGRhdGVfdG9fanNvbyB2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX2luLmRhdGVfbmFpc3NhbmNlX2luXG4gICAgICB2YWwgZGF0ZUNvdXJhbnRlSW4gPVxuICAgICAgICBkYXRlX3RvX2pzb28gdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYV9pbi5kYXRlX2NvdXJhbnRlX2luXG4gICAgICB2YWwgYW5uZWVzSW4gPVxuICAgICAgICBkdXJhdGlvbl90b19qc29vIHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfaW4uYW5uZWVzX2luXG4gICAgICBlbmRcbiAgbGV0IHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfaW5fb2ZfanNvb1xuICAgICh2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX2luIDogdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYV9pbiBKcy50KSA6XG4gICAgVmVyaWZpY2F0aW9uQWdlU3VwZXJpZXVyQUluLnQgPVxuICAgIHtcbiAgICAgIGRhdGVfbmFpc3NhbmNlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vIHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfaW4jIy5kYXRlTmFpc3NhbmNlSW47XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vIHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfaW4jIy5kYXRlQ291cmFudGVJbjtcbiAgICAgIGFubmVlc19pbiA9IGR1cmF0aW9uX29mX2pzb28gdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYV9pbiMjLmFubmVlc0luXG4gICAgfVxuXG5jbGFzcyB0eXBlIHNtaWNfaW4gPVxuICBvYmplY3RcbiAgICBtZXRob2QgZGF0ZUNvdXJhbnRlSW46IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgcmVzaWRlbmNlSW46IGNvbGxlY3Rpdml0ZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG4gIGxldCBzbWljX2luX3RvX2pzb28gKHNtaWNfaW4gOiBTbWljSW4udCkgOiBzbWljX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID0gZGF0ZV90b19qc29vIHNtaWNfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIHJlc2lkZW5jZUluID0gY29sbGVjdGl2aXRlX3RvX2pzb28gc21pY19pbi5yZXNpZGVuY2VfaW5cbiAgICAgIGVuZFxuICBsZXQgc21pY19pbl9vZl9qc29vIChzbWljX2luIDogc21pY19pbiBKcy50KSA6IFNtaWNJbi50ID1cbiAgICB7XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID0gZGF0ZV9vZl9qc29vIHNtaWNfaW4jIy5kYXRlQ291cmFudGVJbjtcbiAgICAgIHJlc2lkZW5jZV9pbiA9IGNvbGxlY3Rpdml0ZV9vZl9qc29vIHNtaWNfaW4jIy5yZXNpZGVuY2VJblxuICAgIH1cblxuY2xhc3MgdHlwZSBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGRhdGVDb3VyYW50ZUluOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIHJlc2lkZW5jZUluOiBjb2xsZWN0aXZpdGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGFnZUw1MTIzMkluOlxuICAgICAgKHVuaXQsICB1bml0IC0+IFJ1bnRpbWVfanNvby5SdW50aW1lLmR1cmF0aW9uIEpzLnQpIEpzLm1ldGhfY2FsbGJhY2sgSnMubWV0aFxuICBlbmRcbiAgbGV0IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW5fdG9fanNvb1xuICAgIChlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luXG4gICAgOiBFbGlnaWJpbGl0ZVByZXN0YXRpb25zRmFtaWxpYWxlc0luLnQpXG4gICAgOiBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIGRhdGVDb3VyYW50ZUluID1cbiAgICAgICAgZGF0ZV90b19qc29vIGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4uZGF0ZV9jb3VyYW50ZV9pblxuICAgICAgdmFsIHJlc2lkZW5jZUluID1cbiAgICAgICAgY29sbGVjdGl2aXRlX3RvX2pzb28gZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbi5yZXNpZGVuY2VfaW5cbiAgICAgIG1ldGhvZCBhZ2VMNTEyMzJJbiA9IEpzLndyYXBfbWV0aF9jYWxsYmFja1xuICAgICAgICAoXG4gICAgICAgICAgZnVuIF8gKGZ1bmN0aW9uX2lucHV0MDogdW5pdCkgLT5cbiAgICAgICAgICBkdXJhdGlvbl90b19qc29vIChlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luLmFnZV9sNTEyXzNfMl9pbiBcbiAgICAgICAgICAoXG4gICAgICAgICAgICBmdW5jdGlvbl9pbnB1dDApKSlcbiAgICAgIGVuZFxuICBsZXQgZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbl9vZl9qc29vXG4gICAgKGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgICAgIDogZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50KSA6XG4gICAgRWxpZ2liaWxpdGVQcmVzdGF0aW9uc0ZhbWlsaWFsZXNJbi50ID1cbiAgICB7XG4gICAgICBkYXRlX2NvdXJhbnRlX2luID1cbiAgICAgICAgZGF0ZV9vZl9qc29vIGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4jIy5kYXRlQ291cmFudGVJbjtcbiAgICAgIHJlc2lkZW5jZV9pbiA9XG4gICAgICAgIGNvbGxlY3Rpdml0ZV9vZl9qc29vXG4gICAgICAgICAgZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiMjLnJlc2lkZW5jZUluO1xuICAgICAgYWdlX2w1MTJfM18yX2luID0gZmFpbHdpdGggXCJUaGUgZnVuY3Rpb24gJ2FnZV9sNTEyXzNfMl9pbicgdHJhbnNsYXRpb24gaXNuJ3QgeWV0IHN1cHBvcnRlZC4uLlwiXG4gICAgfVxuXG5cblxuXG5sZXQgY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICAoY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiA6IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4gSnMudClcbiAgOiBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50IEpzLnQgPVxuICBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luXG4gIHw+IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5fb2ZfanNvb1xuICB8PiBjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50XG4gIHw+IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfdG9fanNvb1xuXG5cbmxldCBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVcbiAgKGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbiA6IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbiBKcy50KVxuICA6IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSBKcy50ID1cbiAgY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltYWxlX2luXG4gIHw+IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZV9pbl9vZl9qc29vXG4gIHw+IGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZVxuICB8PiBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfdG9fanNvb1xuXG5cbmxldCBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJcbiAgKGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbiA6IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbiBKcy50KVxuICA6IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llciBKcy50ID1cbiAgY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX2luXG4gIHw+IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llcl9pbl9vZl9qc29vXG4gIHw+IGNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mb3llclxuICB8PiBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJfdG9fanNvb1xuXG5cbmxldCBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVcbiAgKGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiA6IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiBKcy50KVxuICA6IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZSBKcy50ID1cbiAgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlX2luXG4gIHw+IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbl9vZl9qc29vXG4gIHw+IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICB8PiBjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl9wcm9wcmlldGVfdG9fanNvb1xuXG5cbmxldCBvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlXG4gIChvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luIDogb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbiBKcy50KVxuICA6IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGUgSnMudCA9XG4gIG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVfaW5cbiAgfD4gb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbl9vZl9qc29vXG4gIHw+IG91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGVcbiAgfD4gb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV90b19qc29vXG5cblxubGV0IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50XG4gIChpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9pbiA6IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luIEpzLnQpXG4gIDogaW1wYXllX2RlcGVuc2VfbG9nZW1lbnQgSnMudCA9XG4gIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luXG4gIHw+IGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luX29mX2pzb29cbiAgfD4gaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRcbiAgfD4gaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfdG9fanNvb1xuXG5cbmxldCBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gIChiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIDogYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiBKcy50KVxuICA6IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMgSnMudCA9XG4gIGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5cbiAgfD4gYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbl9vZl9qc29vXG4gIHw+IGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNcbiAgfD4gYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc190b19qc29vXG5cblxubGV0IHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYVxuICAodmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hX2luIDogdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hX2luIEpzLnQpXG4gIDogdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hIEpzLnQgPVxuICB2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV9lZ2FsX2FfaW5cbiAgfD4gdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hX2luX29mX2pzb29cbiAgfD4gdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hXG4gIHw+IHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYV90b19qc29vXG5cblxubGV0IHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FcbiAgKHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfaW4gOiB2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX2luIEpzLnQpXG4gIDogdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYSBKcy50ID1cbiAgdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYV9pblxuICB8PiB2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX2luX29mX2pzb29cbiAgfD4gdmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYVxuICB8PiB2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX3RvX2pzb29cblxuXG5sZXQgc21pYyAoc21pY19pbiA6IHNtaWNfaW4gSnMudClcbiAgOiBzbWljIEpzLnQgPVxuICBzbWljX2luIHw+IHNtaWNfaW5fb2ZfanNvbyB8PiBzbWljIHw+IHNtaWNfdG9fanNvb1xuXG5cbmxldCBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyXG4gIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2ZveWVyX2luIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbiBKcy50KVxuICA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIgSnMudCA9XG4gIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJfaW5cbiAgfD4gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbl9vZl9qc29vXG4gIHw+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJcbiAgfD4gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl90b19qc29vXG5cblxubGV0IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luIEpzLnQpXG4gIDogY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlIEpzLnQgPVxuICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW5cbiAgfD4gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luX29mX2pzb29cbiAgfD4gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlXG4gIHw+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV90b19qc29vXG5cblxubGV0IGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNcbiAgKGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4gOiBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luIEpzLnQpXG4gIDogZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlcyBKcy50ID1cbiAgZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pblxuICB8PiBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luX29mX2pzb29cbiAgfD4gZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc1xuICB8PiBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzX3RvX2pzb29cblxuXG5sZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmXG4gIChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4gOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4gSnMudClcbiAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYgSnMudCA9XG4gIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZl9pblxuICB8PiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW5fb2ZfanNvb1xuICB8PiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZcbiAgfD4gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9sb2NhdGlmX3RvX2pzb29cblxuXG5sZXQgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJcbiAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveWVyX2luIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4gSnMudClcbiAgOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llciBKcy50ID1cbiAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW5cbiAgfD4gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW5fb2ZfanNvb1xuICB8PiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llclxuICB8PiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llcl90b19qc29vXG5cblxubGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVcbiAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVfaW4gOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luIEpzLnQpXG4gIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSBKcy50ID1cbiAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pblxuICB8PiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luX29mX2pzb29cbiAgfD4gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICB8PiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX3RvX2pzb29cblxuXG5sZXQgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgKGVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlX2xvZ2VtZW50X2luIDogZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4gSnMudClcbiAgOiBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCBKcy50ID1cbiAgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5cbiAgfD4gZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW5fb2ZfanNvb1xuICB8PiBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudFxuICB8PiBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF90b19qc29vXG5cblxubGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZcbiAgKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZfaW4gOiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luIEpzLnQpXG4gIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZiBKcy50ID1cbiAgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pblxuICB8PiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX2luX29mX2pzb29cbiAgfD4gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZlxuICB8PiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2NhdGlmX3RvX2pzb29cblxuXG5sZXQgY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudFxuICAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiA6IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4gSnMudClcbiAgOiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50IEpzLnQgPVxuICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luXG4gIHw+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW5fb2ZfanNvb1xuICB8PiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50XG4gIHw+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfdG9fanNvb1xuXG5cbmxldCBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRcbiAgKGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbiA6IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbiBKcy50KVxuICA6IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudCBKcy50ID1cbiAgZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtZW50X2luXG4gIHw+IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudF9pbl9vZl9qc29vXG4gIHw+IGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudFxuICB8PiBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfdG9fanNvb1xuXG5cbmxldCBlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50XG4gIChlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIDogZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiBKcy50KVxuICA6IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQgSnMudCA9XG4gIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRfaW5cbiAgfD4gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbl9vZl9qc29vXG4gIHw+IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRcbiAgfD4gZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF90b19qc29vXG5cblxubGV0IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudFxuICAoZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIDogZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luIEpzLnQpXG4gIDogZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50IEpzLnQgPVxuICBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW5cbiAgfD4gZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2luX29mX2pzb29cbiAgfD4gZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50XG4gIHw+IGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF90b19qc29vXG5cblxubGV0IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50XG4gIChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiA6IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIEpzLnQpXG4gIDogY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQgSnMudCA9XG4gIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luXG4gIHw+IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luX29mX2pzb29cbiAgfD4gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRcbiAgfD4gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfdG9fanNvb1xuXG5cbmxldCBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50XG4gIChjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2luIDogY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbiBKcy50KVxuICA6IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnQgSnMudCA9XG4gIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW5cbiAgfD4gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pbl9vZl9qc29vXG4gIHw+IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRcbiAgfD4gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF90b19qc29vXG5cblxubGV0IGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVcbiAgKGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4gOiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luIEpzLnQpXG4gIDogY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZSBKcy50ID1cbiAgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pblxuICB8PiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luX29mX2pzb29cbiAgfD4gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZVxuICB8PiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX3RvX2pzb29cblxuXG5sZXQgXyA9XG4gICBKcy5leHBvcnQgXCJBaWRlc0xvZ2VtZW50TGliXCJcbiAgICAob2JqZWN0JWpzXG4gICAgICBcbiAgICAgIG1ldGhvZCBjb250cmlidXRpb25zU29jaWFsZXNBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQgOiAoY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudF9pbiBKcy50IC0+IGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgICAgIFxuICAgICAgbWV0aG9kIGNhbGN1bEVxdWl2YWxlbmNlTG95ZXJNaW5pbWFsZSA6IChjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGVfaW4gSnMudCAtPiBjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW1hbGUgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZVxuICAgICAgXG4gICAgICBtZXRob2QgY2FsY3VsTm9tYnJlUGFydExvZ2VtZW50Rm95ZXIgOiAoY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyX2luIEpzLnQgLT4gY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZveWVyIEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm95ZXJcbiAgICAgIFxuICAgICAgbWV0aG9kIGNhbGN1bE5vbWJyZVBhcnRzQWNjZXNzaW9uUHJvcHJpZXRlIDogKGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZV9pbiBKcy50IC0+IGNhbGN1bF9ub21icmVfcGFydHNfYWNjZXNzaW9uX3Byb3ByaWV0ZSBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fcHJvcHJpZXRlXG4gICAgICBcbiAgICAgIG1ldGhvZCBvdXZlcnR1cmVEcm9pdHNSZXRyYWl0ZSA6IChvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luIEpzLnQgLT4gb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZSBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgb3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZVxuICAgICAgXG4gICAgICBtZXRob2QgaW1wYXllRGVwZW5zZUxvZ2VtZW50IDogKGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50X2luIEpzLnQgLT4gaW1wYXllX2RlcGVuc2VfbG9nZW1lbnQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50XG4gICAgICBcbiAgICAgIG1ldGhvZCBiYXNlTWVuc3VlbGxlQWxsb2NhdGlvbnNGYW1pbGlhbGVzIDogKGJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudCAtPiBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzIEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gICAgICBcbiAgICAgIG1ldGhvZCB2ZXJpZmljYXRpb25BZ2VJbmZlcmlldXJPdUVnYWxBIDogKHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYV9pbiBKcy50IC0+IHZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291X2VnYWxfYSBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfZWdhbF9hXG4gICAgICBcbiAgICAgIG1ldGhvZCB2ZXJpZmljYXRpb25BZ2VTdXBlcmlldXJBIDogKHZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfaW4gSnMudCAtPiB2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hIEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayB2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hXG4gICAgICBcbiAgICAgIG1ldGhvZCBzbWljIDogKHNtaWNfaW4gSnMudCAtPiBzbWljIEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBzbWljXG4gICAgICBcbiAgICAgIG1ldGhvZCBjYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50Rm95ZXIgOiAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9mb3llcl9pbiBKcy50IC0+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXIgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfZm95ZXJcbiAgICAgIFxuICAgICAgbWV0aG9kIGNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnRBY2Nlc3Npb25Qcm9wcmlldGUgOiAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luIEpzLnQgLT4gY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlIEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFja1xuICAgICAgICBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2FjY2Vzc2lvbl9wcm9wcmlldGVcbiAgICAgIFxuICAgICAgbWV0aG9kIGVsaWdpYmlsaXRlUHJlc3RhdGlvbnNGYW1pbGlhbGVzIDogKGVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfaW4gSnMudCAtPiBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGlhbGVzXG4gICAgICBcbiAgICAgIG1ldGhvZCBjYWxjdWxBaWRlUGVyc29ubmFsaXNlZUxvZ2VtZW50TG9jYXRpZiA6IChjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWZfaW4gSnMudCAtPiBjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2VtZW50X2xvY2F0aWYgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfbG9jYXRpZlxuICAgICAgXG4gICAgICBtZXRob2QgY2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50Rm95ZXIgOiAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJfaW4gSnMudCAtPiBjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3llciBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95ZXJcbiAgICAgIFxuICAgICAgbWV0aG9kIGNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudEFjY2Vzc2lvblByb3ByaWV0ZSA6IChjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2Nlc3Npb25fcHJvcHJpZXRlX2luIEpzLnQgLT4gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZSBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjZXNzaW9uX3Byb3ByaWV0ZVxuICAgICAgXG4gICAgICBtZXRob2QgZWxpZ2liaWxpdGVBaWRlc1BlcnNvbm5lbGxlTG9nZW1lbnQgOiAoZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRfaW4gSnMudCAtPiBlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV9sb2dlbWVudCBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbnRcbiAgICAgIFxuICAgICAgbWV0aG9kIGNhbGN1bEFsbG9jYXRpb25Mb2dlbWVudExvY2F0aWYgOiAoY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jYXRpZl9pbiBKcy50IC0+IGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWYgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvY2F0aWZcbiAgICAgIFxuICAgICAgbWV0aG9kIGNhbGN1bEFpZGVQZXJzb25uYWxpc2VlTG9nZW1lbnQgOiAoY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudF9pbiBKcy50IC0+IGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRcbiAgICAgIFxuICAgICAgbWV0aG9kIGVsaWdpYmlsaXRlUHJpbWVEZURlbWVuYWdlbWVudCA6IChlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnRfaW4gSnMudCAtPiBlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW1lbnQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbWVudFxuICAgICAgXG4gICAgICBtZXRob2QgZWxpZ2liaWxpdGVBbGxvY2F0aW9uTG9nZW1lbnQgOiAoZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVudF9pbiBKcy50IC0+IGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbnRcbiAgICAgIFxuICAgICAgbWV0aG9kIGVsaWdpYmlsaXRlQWlkZVBlcnNvbm5hbGlzZWVMb2dlbWVudCA6IChlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnRfaW4gSnMudCAtPiBlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZW1lbnQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlbWVudFxuICAgICAgXG4gICAgICBtZXRob2QgY2FsY3VsQWxsb2NhdGlvbkxvZ2VtZW50IDogKGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luIEpzLnQgLT4gY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQgSnMudCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICBKcy53cmFwX2NhbGxiYWNrIGNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50XG4gICAgICBcbiAgICAgIG1ldGhvZCBjYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50IDogKGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfaW4gSnMudCAtPiBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50IEpzLnQpIEpzLmNhbGxiYWNrID1cbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayBjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50XG4gICAgICBcbiAgICAgIG1ldGhvZCBjYWxjdWxldHRlQWlkZXNBdUxvZ2VtZW50R2FyZGVBbHRlcm5lZSA6IChjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlX2luIEpzLnQgLT4gY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZSBKcy50KSBKcy5jYWxsYmFjayA9XG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZVxuICAgICAgXG4gICAgZW5kKSIsIigqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVuY2ggbGF3IGxpYnJhcnksIGEgY29sbGVjdGlvbiBvZiBmdW5jdGlvbnMgZm9yXG4gICBjb21wdXRpbmcgRnJlbmNoIHRheGVzIGFuZCBiZW5lZml0cyBkZXJpdmVkIGZyb20gQ2F0YWxhIHByb2dyYW1zLiBDb3B5cmlnaHRcbiAgIChDKSAyMDIxIElucmlhLCBjb250cmlidXRvcjogRGVuaXMgTWVyaWdvdXggPGRlbmlzLm1lcmlnb3V4QGlucmlhLmZyPiwgRW1pbGVcbiAgIFJvbGxleSA8ZW1pbGUucm9sbGV5QHR1dGEuaW8+XG5cbiAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90XG4gICB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZlxuICAgdGhlIExpY2Vuc2UgYXRcblxuICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVFxuICAgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlXG4gICBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlclxuICAgdGhlIExpY2Vuc2UuICopXG5cbm9wZW4gSnNfb2Zfb2NhbWxcbm9wZW4gTGF3X3NvdXJjZVxub3BlbiBSdW50aW1lX2pzb28uUnVudGltZVxubW9kdWxlIEFGID0gQWxsb2NhdGlvbnNfZmFtaWxpYWxlc1xubW9kdWxlIEFGX3dlYiA9IEFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfYXBpX3dlYlxubW9kdWxlIEFMID0gQWlkZXNfbG9nZW1lbnRcbm1vZHVsZSBBTF93ZWIgPSBBaWRlc19sb2dlbWVudF9hcGlfd2ViXG5cbmxldCBfID1cbiAgSnMuZXhwb3J0X2FsbFxuICAgIChvYmplY3QlanNcbiAgICAgICB2YWwgZXZlbnRzTWFuYWdlciA9IGV2ZW50X21hbmFnZXJcblxuICAgICAgIG1ldGhvZCBjb21wdXRlQWxsb2NhdGlvbnNGYW1pbGlhbGVzXG4gICAgICAgICAgIDogKEFGX3dlYi5pbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19pbiAtPiBmbG9hdCkgSnMuY2FsbGJhY2sgPVxuICAgICAgICAgSnMud3JhcF9jYWxsYmFjayAoZnVuIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luIC0+XG4gICAgICAgICAgICAgZXhlY3V0ZV9vcl90aHJvd19lcnJvciAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPVxuICAgICAgICAgICAgICAgICAgIGludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2luXG4gICAgICAgICAgICAgICAgICAgfD4gQUZfd2ViLmludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbGVzXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIHJlc3VsdCMjLmlNb250YW50VmVyc2UpKVxuXG4gICAgICAgbWV0aG9kIGNvbXB1dGVBaWRlc0F1TG9nZW1lbnRcbiAgICAgICAgICAgOiAoQUxfd2ViLmNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4gLT4gZmxvYXQpXG4gICAgICAgICAgICAgSnMuY2FsbGJhY2sgPVxuICAgICAgICAgSnMud3JhcF9jYWxsYmFjayAoZnVuIGNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZ2FyZGVfYWx0ZXJuZWVfaW4gLT5cbiAgICAgICAgICAgICBleGVjdXRlX29yX3Rocm93X2Vycm9yIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgICAgICAgICAgICAgY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nYXJkZV9hbHRlcm5lZV9pblxuICAgICAgICAgICAgICAgICAgIHw+IEFMX3dlYi5jYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2dhcmRlX2FsdGVybmVlXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIHJlc3VsdCMjLmFpZGVGaW5hbGUpKVxuICAgIGVuZClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogRW5zdXJlIHRoYXQgW2F0X2V4aXRdIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIGF0IHRoZSBlbmQgb2YgZXZlcnkgcHJvZ3JhbSAqKVxuXG5sZXQgXyA9IGRvX2F0X2V4aXQoKVxuIl19 \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLjAsImZpbGUiOiJhcGlfd2ViLmJjLmpzIiwic291cmNlUm9vdCI6IiIsIm5hbWVzIjpbIk9iamVjdCIsImdsb2JhbFRoaXMiLCJ0aGlzIiwiZ2V0IiwiX1RfIiwiZ2xvYmFsIiwic2VsZiIsImNhbWxfaW50NjRfaXNfemVybyIsIngiLCJjYW1sX3N0cl9yZXBlYXQiLCJuIiwicyIsInIiLCJsIiwiY2FtbF9pbnQ2NF9vZmZzZXQiLCJNYXRoIiwiY2FtbF9yYWlzZV9jb25zdGFudCIsInRhZyIsImNhbWxfZ2xvYmFsX2RhdGEiLCJjYW1sX3JhaXNlX3plcm9fZGl2aWRlIiwiTWxJbnQ2NCIsImxvIiwibWkiLCJoaSIsInhoaSIsImgiLCJzaWduIiwib2Zmc2V0IiwibW9kdWx1cyIsImRpdmlzb3IiLCJxdW90aWVudCIsInkiLCJxIiwiY2FtbF9pbnQ2NF9vZl9pbnQzMiIsImNhbWxfaW50NjRfdG9faW50MzIiLCJjYW1sX2ludDY0X2lzX25lZ2F0aXZlIiwiY2FtbF9pbnQ2NF9uZWciLCJjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMiLCJhIiwiaSIsImxlbiIsImYiLCJTdHJpbmciLCJudWxsIiwiY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyIsImNhbWxfanNieXRlc19vZl9zdHJpbmciLCJjYW1sX3JhaXNlX3dpdGhfYXJnIiwiYXJnIiwianNvb19pc19hc2NpaSIsImNhbWxfdXRmMTZfb2ZfdXRmOCIsImIiLCJ0IiwiYyIsImMxIiwiYzIiLCJ2IiwiaiIsIk1sQnl0ZXMiLCJjb250ZW50cyIsImxlbmd0aCIsImNvbnRlbnQiLCJjYW1sX2J5dGVzX29mX2pzYnl0ZXMiLCJjYW1sX3N0cmluZ19vZl9qc2J5dGVzIiwiY2FtbF9yYWlzZV93aXRoX3N0cmluZyIsIm1zZyIsImNhbWxfaW52YWxpZF9hcmd1bWVudCIsImNhbWxfcGFyc2VfZm9ybWF0IiwiZm10IiwiY2FtbF9maW5pc2hfZm9ybWF0dGluZyIsInJhd2J1ZmZlciIsImJ1ZmZlciIsImNhbWxfaW50NjRfZm9ybWF0Iiwid2Jhc2UiLCJjdnRibCIsInAiLCJjYW1sX2V4cG0xX2Zsb2F0IiwiY2FtbF9tbF9jb25kaXRpb25fYnJvYWRjYXN0IiwiY2FtbF9qc3N0cmluZ19vZl9zdHJpbmciLCJmc19ub2RlX3N1cHBvcnRlZCIsIm1ha2VfcGF0aF9pc19hYnNvbHV0ZSIsInBvc2l4IiwicGF0aCIsIndpbjMyIiwic3BsaXREZXZpY2VSZSIsInJlc3VsdCIsImRldmljZSIsImlzVW5jIiwiQm9vbGVhbiIsInJvb3QiLCJzZXAiLCJwYXRoX2lzX2Fic29sdXRlIiwiY2FtbF90cmFpbGluZ19zbGFzaCIsIm5hbWUiLCJjYW1sX2N1cnJlbnRfZGlyIiwiY2FtbF9tYWtlX3BhdGgiLCJjb21wMCIsImNvbXAiLCJuY29tcCIsImNhbWxfdXRmOF9vZl91dGYxNiIsImQiLCJjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nIiwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmciLCJ1bml4X2Vycm9yIiwibWFrZV91bml4X2Vycl9hcmdzIiwiY29kZSIsInN5c2NhbGwiLCJlcnJubyIsInZhcmlhbnQiLCJhcmdzIiwiY2FtbF9uYW1lZF92YWx1ZXMiLCJjYW1sX25hbWVkX3ZhbHVlIiwibm0iLCJjYW1sX3JhaXNlX3dpdGhfYXJncyIsImNhbWxfaXNfbWxfYnl0ZXMiLCJjYW1sX2lzX21sX3N0cmluZyIsImNhbWxfYnl0ZXNfb2ZfYXJyYXkiLCJVaW50OEFycmF5IiwiY2FtbF9ieXRlc19vZl9zdHJpbmciLCJjYW1sX3JhaXNlX3N5c19lcnJvciIsImNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlIiwiY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5IiwiY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyIsImNhbWxfY3JlYXRlX2J5dGVzIiwiY2FtbF9tbF9ieXRlc19sZW5ndGgiLCJjYW1sX2JsaXRfYnl0ZXMiLCJzMSIsImkxIiwiczIiLCJpMiIsIk1sRmlsZSIsIk1sRmFrZUZpbGUiLCJvbGQiLCJidWYiLCJwb3MiLCJjbGVuIiwibmV3X3N0ciIsIm9sZF9kYXRhIiwiZGF0YSIsIk1sRmFrZUZkIiwiZmlsZSIsImZsYWdzIiwidW5kZWZpbmVkIiwiTWxGYWtlRGV2aWNlIiwicmVzIiwiU3ltYm9sIiwibmFtZV9zbGFzaCIsIm1vZGUiLCJyYWlzZV91bml4IiwicGFyZW50IiwiUmVnRXhwIiwic2VlbiIsIm0iLCJlbnRyeSIsIm9rIiwiQXJyYXkiLCJieXRlcyIsImNhbWxfbWxfc3RyaW5nX2xlbmd0aCIsImNhbWxfYnl0ZXNfdW5zYWZlX2dldCIsImNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQiLCJjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyIsImNhbWxfYnl0ZXNfYm91bmRfZXJyb3IiLCJjYW1sX2J5dGVzX3Vuc2FmZV9zZXQiLCJjYW1sX2J5dGVzX3NldCIsIk1sTm9kZUZkIiwiZmQiLCJyZXF1aXJlIiwiZXJyIiwiYnVmX29mZnNldCIsInJlYWQiLCJNbE5vZGVEZXZpY2UiLCJjb25zdHMiLCJrZXkiLCJpc0NoYXJhY3RlckRldmljZSIsIm8iLCJqc19zdGF0cyIsInRvX2RpciIsInRhcmdldCIsImxpbmsiLCJmaWxlX2tpbmQiLCJjYW1sX2dldF9yb290IiwiY2FtbF9mYWlsd2l0aCIsImNhbWxfcm9vdCIsImpzb29fbW91bnRfcG9pbnQiLCJyZXNvbHZlX2ZzX2RldmljZSIsImNhbWxfc3lzX2lzX2RpcmVjdG9yeSIsImNhbWxfcmFpc2Vfbm90X2ZvdW5kIiwiY2FtbF9zeXNfZ2V0ZW52IiwicHJvY2VzcyIsInNoaWZ0X3JpZ2h0X25hdCIsIm5hdDEiLCJvZnMxIiwibGVuMSIsIm5hdDIiLCJvZnMyIiwibmJpdHMiLCJ3cmFwIiwiY2FtbF9ncl9zdGF0ZSIsImNhbWxfZ3Jfc3RhdGVfZ2V0IiwiY2FtbF9ncl9wb2ludF9jb2xvciIsImltIiwiTWxPYmplY3RUYWJsZSIsIk5haXZlTG9va3VwIiwib2JqcyIsImNhbWxfc3lzX3JlbmFtZSIsIm9fcm9vdCIsIm5fcm9vdCIsImNhbWxfbG9nMTBfZmxvYXQiLCJjYW1sX3J1bnRpbWVfd2FybmluZ3MiLCJjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzIiwiYm9vbCIsImNhbWxfY2xhc3NpZnlfZmxvYXQiLCJpc0Zpbml0ZSIsImlzTmFOIiwiY2FtbF9tbF9jaGFubmVscyIsImNhbWxfcmVmaWxsIiwiY2hhbiIsInN0ciIsInN0cl9hIiwibnJlYWQiLCJjYW1sX2FycmF5X2JvdW5kX2Vycm9yIiwiY2FtbF9tbF9pbnB1dF9zY2FuX2xpbmUiLCJjaGFuaWQiLCJwcmV2X21heCIsImNhbWxfZ2NfbWlub3IiLCJ1bml0IiwiYmlnSW50IiwiQkFTRSIsIkxPR19CQVNFIiwiTUFYX0lOVCIsIk1BWF9JTlRfQVJSIiwic21hbGxUb0FycmF5IiwiREVGQVVMVF9BTFBIQUJFVCIsIkJpZ0ludCIsImpvb19nbG9iYWxfb2JqZWN0Iiwic3VwcG9ydHNOYXRpdmVCaWdJbnQiLCJJbnRlZ2VyIiwicmFkaXgiLCJhbHBoYWJldCIsImNhc2VTZW5zaXRpdmUiLCJwYXJzZVZhbHVlIiwicGFyc2VCYXNlIiwiQmlnSW50ZWdlciIsInZhbHVlIiwiU21hbGxJbnRlZ2VyIiwiTmF0aXZlQmlnSW50IiwiaXNQcmVjaXNlIiwiYXJyYXlUb1NtYWxsIiwiYXJyIiwidHJpbSIsImNvbXBhcmVBYnMiLCJjcmVhdGVBcnJheSIsInRydW5jYXRlIiwiYWRkIiwibF9hIiwibF9iIiwiY2FycnkiLCJiYXNlIiwic3VtIiwiYWRkQW55IiwiYWRkU21hbGwiLCJzdWJ0cmFjdCIsImFfbCIsImJfbCIsImJvcnJvdyIsImRpZmZlcmVuY2UiLCJzdWJ0cmFjdEFueSIsInN1YnRyYWN0U21hbGwiLCJzbWFsbCIsIm11bHRpcGx5TG9uZyIsInByb2R1Y3QiLCJhX2kiLCJiX2oiLCJtdWx0aXBseVNtYWxsIiwic2hpZnRMZWZ0IiwibXVsdGlwbHlLYXJhdHN1YmEiLCJhYyIsImJkIiwiYWJjZCIsInVzZUthcmF0c3ViYSIsImwxIiwibDIiLCJhYnMiLCJtdWx0aXBseVNtYWxsQW5kQXJyYXkiLCJzcXVhcmUiLCJhX2oiLCJkaXZNb2QxIiwiZGl2aXNvck1vc3RTaWduaWZpY2FudERpZ2l0IiwibGFtYmRhIiwicmVtYWluZGVyIiwicXVvdGllbnREaWdpdCIsInNoaWZ0IiwiZGl2TW9kU21hbGwiLCJkaXZNb2QyIiwicGFydCIsImd1ZXNzIiwieGxlbiIsImhpZ2h4IiwiaGlnaHkiLCJjaGVjayIsImRpdk1vZEFueSIsIkVycm9yIiwiY29tcGFyaXNvbiIsInFTaWduIiwibW9kIiwibVNpZ24iLCJfMCIsIl8xIiwiXzIiLCJleHAiLCJJbmZpbml0eSIsImlzQmFzaWNQcmltZSIsIm1pbGxlclJhYmluVGVzdCIsIm5QcmV2Iiwic3RyaWN0IiwiaXNQcmltZSIsImJpdHMiLCJsb2dOIiwiaXRlcmF0aW9ucyIsIm5ld1QiLCJuZXdSIiwibGFzdFQiLCJsYXN0UiIsInBvd2Vyc09mVHdvIiwicG93ZXJzMkxlbmd0aCIsImhpZ2hlc3RQb3dlcjIiLCJzaGlmdF9pc1NtYWxsIiwicmVtUXVvIiwiYml0d2lzZSIsImZuIiwieFNpZ24iLCJ5U2lnbiIsInhSZW0iLCJ5UmVtIiwieERpZ2l0IiwieURpZ2l0IiwieERpdk1vZCIsInlEaXZNb2QiLCJMT0JNQVNLX0kiLCJMT0JNQVNLX0JJIiwicm91Z2hMT0IiLCJpbnRlZ2VyTG9nYXJpdGhtIiwidG1wIiwiZSIsIm1heCIsIm1pbiIsImdjZCIsImxjbSIsInJhbmRCZXR3ZWVuIiwibG93IiwiaGlnaCIsInJhbmdlIiwiZGlnaXRzIiwidG9CYXNlIiwicmVzdHJpY3RlZCIsInRvcCIsImRpZ2l0IiwidGV4dCIsImFic0Jhc2UiLCJhbHBoYWJldFZhbHVlcyIsImlzTmVnYXRpdmUiLCJzdGFydCIsInBhcnNlQmFzZUZyb21BcnJheSIsInZhbCIsInBvdyIsInN0cmluZ2lmeSIsIm5lZyIsIk51bWJlciIsIm91dCIsImxlZnQiLCJkaXZtb2QiLCJ0b0Jhc2VTdHJpbmciLCJ6ZXJvcyIsInBhcnNlSW50IiwicGFyc2VTdHJpbmdWYWx1ZSIsInNwbGl0IiwiZGVjaW1hbFBsYWNlIiwiaXNWYWxpZCIsInBhcnNlTnVtYmVyVmFsdWUiLCJtbF96X25vcm1hbGl6ZSIsIm1sX3pfcG93IiwiejEiLCJtbF96X3Jvb3QiLCJ6IiwiemVybyIsIm9uZSIsImVuZCIsImFucyIsInR3byIsIm1pZCIsInBvIiwibWxfel9yb290cmVtIiwiY2FtbF9tbF9jb25kaXRpb25fbmV3IiwiY2FtbF9pbnQ2NF9vZl9ieXRlcyIsImNhbWxfYmFfdWludDhfZ2V0NjQiLCJiYSIsImkwIiwib2ZzIiwiYjEiLCJiMiIsImIzIiwiYjQiLCJiNSIsImI2IiwiYjciLCJiOCIsImNhbWxfaW50NjRfdG9fYnl0ZXMiLCJjYW1sX2ludDY0X21hcnNoYWwiLCJ3cml0ZXIiLCJzaXplcyIsImNhbWxfYmFfbnVtX2RpbXMiLCJjYW1sX3JldHVybl9leG5fY29uc3RhbnQiLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiY2FtbF9jcmVhdGVfZmlsZSIsImpzb29fY3JlYXRlX2ZpbGUiLCJjYW1sX2ZzX2luaXQiLCJjYW1sX3BhcnNlcl90cmFjZSIsImNhbWxfc2V0X3BhcnNlcl90cmFjZSIsIm9sZGZsYWciLCJjYW1sX2xpc3Rfb2ZfanNfYXJyYXkiLCJjYW1sX211bCIsImNhbWxfaGFzaF9taXhfaW50IiwibnVtX2RpZ2l0c19uYXQiLCJuYXQiLCJjYW1sX2hhc2hfbmF0IiwiY2FtbF9jYWxsX2dlbiIsImFyZ3NMZW4iLCJleHRyYV9hcmdzIiwiYXJndW1lbnRzIiwibmFyZ3MiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzIiwiY2FtbF9zeXNfY2hkaXIiLCJkaXIiLCJjYW1sX29ial90YWciLCJGdW5jdGlvbiIsImNhbWxfb2JqX3VwZGF0ZV90YWciLCJjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW5fIiwiY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuIiwiY2FtbF9sYXp5X3VwZGF0ZV90b19mb3JjaW5nIiwiZmllbGQwIiwiY2FtbF9nY19jb3VudGVycyIsIm1sX3pfZGl2IiwiejIiLCJtbF96X3NpZ24iLCJtbF96X2FkZCIsIm1sX3pfY2RpdiIsInoxX3BvcyIsInoyX3BvcyIsImNhbWxfZ3Jfc3luY2hyb25pemUiLCJjYW1sX3VuaXhfY2xvc2VkaXIiLCJkaXJfaGFuZGxlIiwiY2FtbF91bml4X29wZW5kaXIiLCJjYW1sX3VuaXhfcmV3aW5kZGlyIiwibmV3X2Rpcl9oYW5kbGUiLCJjYW1sX3JhaXNlX2VuZF9vZl9maWxlIiwiY2FtbF91bml4X3JlYWRkaXIiLCJjYW1sX3VuaXhfZmluZGZpcnN0IiwicGF0aF9qcyIsImZpcnN0X2VudHJ5IiwibG9nMl9vayIsImpzb29fZmxvb3JfbG9nMiIsImNhbWxfaW50MzJfYml0c19vZl9mbG9hdCIsImZsb2F0MzJhIiwiRmxvYXQzMkFycmF5IiwiaW50MzJhIiwiSW50MzJBcnJheSIsImNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpIiwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0IiwiayIsInIzIiwicjIiLCJyMSIsImNhbWxfYmFfc2VyaWFsaXplIiwic3oiLCJjb21wbGV4IiwiY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudCIsImtpbmQiLCJjYW1sX2JhX2NyZWF0ZV9idWZmZXIiLCJzaXplIiwidmlldyIsIkZsb2F0NjRBcnJheSIsIkludDhBcnJheSIsIkludDE2QXJyYXkiLCJVaW50MTZBcnJheSIsImNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyIsImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyIsIk5hTiIsImNhbWxfYmFfZ2V0X3NpemUiLCJkaW1zIiwibl9kaW1zIiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkiLCJjYW1sX2ludDY0X2hpMzIiLCJjYW1sX2ludDY0X2xvMzIiLCJjYW1sX2JhX2N1c3RvbV9uYW1lIiwiTWxfQmlnYXJyYXkiLCJsYXlvdXQiLCJyZSIsInRvdGFsIiwiazEiLCJrMiIsIk1sX0JpZ2FycmF5X2NfMV8xIiwiY2FtbF9iYV9jcmVhdGVfdW5zYWZlIiwic2l6ZV9wZXJfZWxlbWVudCIsImNhbWxfYmFfZGVzZXJpYWxpemUiLCJyZWFkZXIiLCJudW1fZGltcyIsInNpemVfZGltIiwic2l6ZV9kaW1faGkiLCJzaXplX2RpbV9sbyIsInNpeHR5IiwiaW50NjQiLCJjYW1sX2JhX2NvbXBhcmUiLCJjYW1sX2hhc2hfbWl4X2ludDY0IiwiY2FtbF9oYXNoX21peF9mbG9hdCIsInYwIiwiY2FtbF9iYV9oYXNoIiwibnVtX2VsdHMiLCJ3IiwiY2FtbF9pbnQzMl91bm1hcnNoYWwiLCJjYW1sX25hdGl2ZWludF91bm1hcnNoYWwiLCJjYW1sX2ludDY0X3VubWFyc2hhbCIsImNhbWxfaW50NjRfY29tcGFyZSIsImNhbWxfaW50NjRfaGFzaCIsImNhbWxfY3VzdG9tX29wcyIsImNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbSIsImNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbSIsIm51bSIsImN1c3RvbSIsInN3YXAiLCJjYW1sX2NvbXBhcmVfdmFsX3RhZyIsImNhbWxfaW50X2NvbXBhcmUiLCJjYW1sX2J5dGVzX2NvbXBhcmUiLCJjYW1sX3N0cmluZ19jb21wYXJlIiwiY2FtbF9jb21wYXJlX3ZhbCIsInN0YWNrIiwidGFnX2EiLCJ0YWdfYiIsImNhbWxfZ3JlYXRlcnRoYW4iLCJkaXZfaGVscGVyIiwiZGl2X2RpZ2l0X25hdCIsIm5hdHEiLCJvZnNxIiwibmF0ciIsIm9mc3IiLCJyZW0iLCJudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXQiLCJzaGlmdF9sZWZ0X25hdCIsIk1sTmF0IiwiY3JlYXRlX25hdCIsInNldF90b196ZXJvX25hdCIsImluY3JfbmF0IiwiY2FycnlfaW4iLCJhZGRfbmF0IiwibGVuMiIsIm5hdF9vZl9hcnJheSIsIm11bHRfZGlnaXRfbmF0IiwibmF0MyIsIm9mczMiLCJ4MSIsIngyIiwieDMiLCJkZWNyX25hdCIsInN1Yl9uYXQiLCJjb21wYXJlX25hdCIsImRpdl9uYXQiLCJxdW8iLCJjYW1sX2JhX2JsaXQiLCJzcmMiLCJkc3QiLCJpc19kaWdpdF9pbnQiLCJjYW1sX2ludDY0X2RpdiIsImNhbWxfanNfaHRtbF9lbnRpdGllcyIsImVudGl0eSIsInRlbXAiLCJkb2N1bWVudCIsImNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQiLCJjYW1sX2ludDY0X29mX2Zsb2F0IiwiY2FtbF9tbF9jaGFubmVsX3NpemVfNjQiLCJjYW1sX2JhX3NldF8yIiwibWxfel9vZl9pbnQ2NCIsImk2NCIsIm1sX3pfa3JvbmVja2VyIiwiY2FtbF9hcmd2IiwibWFpbiIsImFyZ3YiLCJhcmdzMiIsImNhbWxfZXhlY3V0YWJsZV9uYW1lIiwiY2FtbF9qc19ldmFsX3N0cmluZyIsImV2YWwiLCJzZXJpYWxpemVfbmF0IiwiY2FtbF9tZW1wcm9mX3NldCIsIl9jb250cm9sIiwibWxfel9uZWciLCJjYW1sX3N5c19leGl0IiwiY2FtbF9jaGFubmVsX2Rlc2NyaXB0b3IiLCJjYW1sX2pzX2Zyb21fYXJyYXkiLCJjYW1sX2JhX3Jlc2hhcGUiLCJ2aW5kIiwibmV3X2RpbSIsImNhbWxfb29fbGFzdF9pZCIsImNhbWxfc2V0X29vX2lkIiwiY2FtbF9ncl9maWxsX3JlY3QiLCJjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYSIsInN0cjEiLCJwb3MxIiwiYmEyIiwicG9zMiIsInNsaWNlIiwiY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlIiwianNuYW1lIiwiY2FtbF9nZXRfZ2xvYmFsX2RhdGEiLCJjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkIiwiY2FtbF9iYV91aW50OF9nZXQxNiIsIm1sX3pfb2ZfaW50MzIiLCJjYW1sX2NvbXBhcmUiLCJjYW1sX01ENVRyYW5zZm9ybSIsInh4IiwiZmYiLCJnZyIsImhoIiwiaWkiLCJjYW1sX01ENVVwZGF0ZSIsImN0eCIsImlucHV0IiwiaW5wdXRfbGVuIiwiaW5fYnVmIiwiaW5wdXRfcG9zIiwibWlzc2luZyIsImNhbWxfZnJlc2hfb29faWQiLCJjYW1sX2ludDY0X3RvX2Zsb2F0IiwiY2FtbF9iYV9nZXRfMSIsImNhbWxfYmlnc3RyaW5nX21lbWNtcCIsImNhbWxfbmV3X3N0cmluZyIsImNhbWxfZXJmX2Zsb2F0IiwiYTEiLCJhMiIsImEzIiwiYTQiLCJhNSIsImNhbWxfYmFfdWludDhfZ2V0MzIiLCJjYW1sX3Jhd19iYWNrdHJhY2VfbGVuZ3RoIiwibWxfel9zaGlmdF9yaWdodCIsImFtdCIsImNhbWxfc3RyX2luaXRpYWxpemUiLCJjYW1sX29ial9ibG9jayIsImNhbWxfZ3JfY2xlYXJfZ3JhcGgiLCJiaWdzdHJpbmdfdG9fYXJyYXlfYnVmZmVyIiwiYnMiLCJjYW1sX3N5c19jb25zdF9uYWtlZF9wb2ludGVyc19jaGVja2VkIiwiX3VuaXQiLCJseG9yX2RpZ2l0X25hdCIsImNhbWxfb2JqX2FkZF9vZmZzZXQiLCJjYW1sX2ZpbmFsX3JlbGVhc2UiLCJjYW1sX2pzX3RvX2FycmF5IiwibWxfel9sb2dvciIsImNhbWxfZ3JfcGxvdCIsImNvbG9yIiwiY2FtbF9ieXRlc19zZXQxNiIsImkxNiIsImNhbWxfc3RyaW5nX3NldDE2IiwiY2FtbF9ieXRlc19zZXQ2NCIsImNhbWxfaW50NjRfYnN3YXAiLCJtbF96X2ZpdHNfaW50IiwibWxfel9maXRzX2ludDMyIiwiY2FtbF9nY19tYWpvciIsIm1sX3pfc2hpZnRfbGVmdCIsImNhbWxfbGV4X2FycmF5IiwiY2FtbF9sZXhfZW5naW5lIiwidGJsIiwic3RhcnRfc3RhdGUiLCJsZXhidWYiLCJsZXhfYnVmZmVyIiwibGV4X2J1ZmZlcl9sZW4iLCJsZXhfc3RhcnRfcG9zIiwibGV4X2N1cnJfcG9zIiwibGV4X2xhc3RfcG9zIiwibGV4X2xhc3RfYWN0aW9uIiwibGV4X2VvZl9yZWFjaGVkIiwibGV4X2Jhc2UiLCJsZXhfYmFja3RyayIsImxleF9kZWZhdWx0IiwibGV4X3RyYW5zIiwibGV4X2NoZWNrIiwic3RhdGUiLCJiYWNrdHJrIiwiY2FtbF9zeXNfZmlsZV9leGlzdHMiLCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90IiwiY2FtbF9hcnJheV9zdWIiLCJjYW1sX2J5dGVzX2VxdWFsIiwiY2FtbF9ncl9zaXplX3giLCJjYW1sX21sX2RlYnVnX2luZm9fc3RhdHVzIiwiY2FtbF9hdG9taWNfZmV0Y2hfYWRkIiwicmVmIiwib3NfdHlwZSIsImNhbWxfc3lzX2NvbnN0X29zdHlwZV9jeWd3aW4iLCJjYW1sX2Nvc2hfZmxvYXQiLCJNbE11dGV4IiwiY2FtbF9tbF9tdXRleF9uZXciLCJjYW1sX2VwaGVfa2V5X29mZnNldCIsImNhbWxfZXBoZV9jaGVja19rZXkiLCJ3ZWFrIiwiY2FtbF9oYXNoX21peF9maW5hbCIsImNhbWxfZ3JfdGV4dF9zaXplIiwidHh0IiwiY2FtbF9sZXhfcnVuX21lbSIsIm1lbSIsImN1cnJfcG9zIiwiY2FtbF9sZXhfcnVuX3RhZyIsImNhbWxfbmV3X2xleF9lbmdpbmUiLCJsZXhfbWVtIiwibGV4X2Jhc2VfY29kZSIsImxleF9iYWNrdHJrX2NvZGUiLCJsZXhfZGVmYXVsdF9jb2RlIiwibGV4X3RyYW5zX2NvZGUiLCJsZXhfY2hlY2tfY29kZSIsImxleF9jb2RlIiwicGNfb2ZmIiwicHN0YXRlIiwiYmFzZV9jb2RlIiwiY2FtbF9iYV91aW50OF9zZXQ2NCIsIm1sX3pfcG9wY291bnQiLCJjYW1sX3N5c19leGVjdXRhYmxlX25hbWUiLCJjYW1sX2xlc3NlcXVhbCIsImNhbWxfYWNvc2hfZmxvYXQiLCJjYW1sX01ENUluaXQiLCJBcnJheUJ1ZmZlciIsImIzMiIsIlVpbnQzMkFycmF5IiwiY2FtbF9tbF9mbHVzaCIsImNhbWxfc2Vla19vdXQiLCJjYW1sX21sX3NlZWtfb3V0XzY0IiwiY29tcGFyZV9uYXRfcmVhbCIsImNhbWxfZ2Nfc2V0IiwiY2FtbF9qc19nZXQiLCJjYW1sX3VuaXhfaXNhdHR5IiwiZmlsZURlc2NyaXB0b3IiLCJ0dHkiLCJjYW1sX21sX3NldF9idWZmZXJlZCIsImNhbWxfZ2NfY29tcGFjdGlvbiIsImNhbWxfZXBoZV9nZXRfa2V5IiwiY2FtbF91bml4X2xvY2FsdGltZSIsIkRhdGUiLCJkX251bSIsImphbnVhcnlmaXJzdCIsImRveSIsImphbiIsImp1bCIsInN0ZFRpbWV6b25lT2Zmc2V0IiwiY2FtbF91bml4X21rdGltZSIsInRtIiwidG0yIiwianNvb196X29mX2pzX3N0cmluZ19iYXNlIiwiYmMiLCJtbF96X29mX3N1YnN0cmluZ19iYXNlIiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYSIsImNhbWxfc3lzX2ZkcyIsImNhbWxfc3lzX2Nsb3NlIiwiY2FtbF9tbF9jbG9zZV9jaGFubmVsIiwiY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2UiLCJleG4iLCJmb3JjZSIsImNhbWxfYXRvbWljX2V4Y2hhbmdlIiwiY2FtbF9zeXNfaXNhdHR5IiwiX2NoYW4iLCJpc19kaWdpdF96ZXJvIiwiY2FtbF91bml4X2xzdGF0IiwiY2FtbF91bml4X2xzdGF0XzY0IiwiY2FtbF9qc19zZXQiLCJtbF96X2djZGV4dF9pbnRlcm4iLCJsYXN0eCIsImxhc3R5IiwibWxfel90ZXN0Yml0IiwiY2FtbF9hcnJheV9nZXQiLCJhcnJheSIsImluZGV4IiwiY2FtbF91bml4X3JtZGlyIiwiY2FtbF9sb2cyX2Zsb2F0IiwiY2FtbF9nY19odWdlX2ZhbGxiYWNrX2NvdW50IiwibWxfel9jb25ncnVlbnQiLCJjYW1sX3NwYWNldGltZV9vbmx5X3dvcmtzX2Zvcl9uYXRpdmVfY29kZSIsImNhbWxfaW50NjRfc3ViIiwiY2FtbF9zZWVrX2luIiwiY2FtbF9tbF9zZWVrX2luXzY0IiwiY2FtbF9kb21haW5faWQiLCJjYW1sX21sX211dGV4X3VubG9jayIsImNhbWxfZG9tYWluX2xhdGVzdF9pZHgiLCJjYW1sX2RvbWFpbl9zcGF3biIsIm11dGV4IiwiaWQiLCJjYW1sX3VuaXhfbWtkaXIiLCJwZXJtIiwiY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0IiwiY2FtbF9ub3RlcXVhbCIsIm1sX3pfYWJzIiwiY2FtbF9zeXNfY29uc3RfaW50X3NpemUiLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFjayIsImNhbWxfaXNfanMiLCJjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcndhcmQiLCJjYW1sX2JhX2RpbSIsImNhbWxfYmFfZGltXzEiLCJtbF96X3NxcnQiLCJjYW1sX2pzX21ldGhfY2FsbCIsIm1sX3pfbHVjbnVtIiwiY2FtbF9lcGhlX2RhdGFfb2Zmc2V0IiwiY2FtbF93ZWFrX2NyZWF0ZSIsImNhbWxfZXBoZV9jcmVhdGUiLCJjYW1sX2pzX3RvX2J5dGVfc3RyaW5nIiwibWxfel9wcm9iYWJfcHJpbWUiLCJjYW1sX3RyYW1wb2xpbmUiLCJjYW1sX21heWJlX3ByaW50X3N0YXRzIiwiY2FtbF9ieXRlc19nZXQ2NCIsImNhbWxfdW5peF9oYXNfc3ltbGluayIsIm1sX3pfcmVtIiwiY2FtbF9lcGhlX3NldF9rZXkiLCJjYW1sX2VwaGVfdW5zZXRfa2V5IiwiY291bnQiLCJjYW1sX3dlYWtfc2V0IiwiY2FtbF9zeXNfcmVtb3ZlIiwiY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IiLCJjYW1sX3N0cmluZ19nZXQzMiIsImNhbWxfYnl0ZXNfZ2V0IiwiY2FtbF9oeXBvdF9mbG9hdCIsIm1sX3pfZmFjTSIsImN1cnJlbnQiLCJjYW1sX2pzX2NhbGwiLCJjYW1sX3N5c19jb25zdF9tYXhfd29zaXplIiwiY2FtbF91bml4X2luZXRfYWRkcl9vZl9zdHJpbmciLCJtbF96X211bF9vdmVyZmxvd3MiLCJtbF96X3RvX2ludCIsImNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyIiwiY2FtbF9oYXNoX21peF9qc2J5dGVzIiwiY2FtbF9tbF9ieXRlc19jb250ZW50IiwiY2FtbF9oYXNoX21peF9ieXRlcyIsImNhbWxfYnl0ZXNfbGVzc3RoYW4iLCJjYW1sX2VyZmNfZmxvYXQiLCJjYW1sX2dyX2ZpbGxfcG9seSIsImFyIiwiY2FtbF9nY19xdWlja19zdGF0IiwibWxfel9mYWMiLCJjYW1sX21sX2lucHV0X2NoYXIiLCJjYW1sX21sX2lucHV0X2ludCIsImNhbWxfZ3JfZGlzcGxheV9tb2RlIiwibWxfel9kaXZpc2libGUiLCJjYW1sX29ial9yZWFjaGFibGVfd29yZHMiLCJudGhfZGlnaXRfbmF0IiwiY2FtbF9hcnJheV9ibGl0IiwiY2FtbF9mbG9hdF9vZl9zdHJpbmciLCJtMyIsIm1hbnRpc3NhIiwiZXhwb25lbnQiLCJjYW1sX3N5c19nZXRjd2QiLCJjYW1sX2ludDY0X2FkZCIsImNhbWxfaW50NjRfbXVsIiwiY2FtbF9pbnQ2NF91bHQiLCJjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UiLCJjYW1sX3BhcnNlX2RpZ2l0IiwiY2FtbF9pbnQ2NF9vZl9zdHJpbmciLCJiYXNlNjQiLCJ0aHJlc2hvbGQiLCJjYW1sX2JhX3NldF8xIiwiY2FtbF9pbnQ2NF94b3IiLCJjYW1sX2ludDY0X29yIiwiY2FtbF9seG1fbmV4dCIsInNoaWZ0X2wiLCJzaGlmdF9yIiwib3IiLCJ4b3IiLCJtdWwiLCJyb3RsIiwic2V0IiwiTSIsImRhYmEiLCJxMCIsInExIiwic3QiLCJ4MCIsImNhbWxfc3lzX2NvbnN0X2JpZ19lbmRpYW4iLCJjYW1sX2xpc3RfdG9fanNfYXJyYXkiLCJjYW1sX2xlZ2FjeV9jdXN0b21fY29kZSIsImNhbWxfb3V0cHV0X3ZhbCIsIldyaXRlciIsIm5vX3NoYXJpbmciLCJjbG9zdXJlcyIsImNvbnNvbGUiLCJpbnRlcm5fb2JqX3RhYmxlIiwibWVtbyIsImV4aXN0aW5nX29mZnNldCIsImV4dGVybl9yZWMiLCJvcHMiLCJzel8zMl82NCIsImhlYWRlcl9wb3MiLCJvbGRfcG9zIiwidHlwZV9vZl92IiwiY2FtbF9zdHJpbmdfb2ZfYXJyYXkiLCJjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmciLCJjYW1sX3JhaXNlX25vdF9hX2RpciIsImNhbWxfc3lzX3N5c3RlbV9jb21tYW5kIiwiY21kIiwiY2hpbGRfcHJvY2VzcyIsImNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uIiwiY2FtbF91bml4X2dldHVpZCIsImRlc2VyaWFsaXplX25hdCIsImluaXRpYWxpemVfbmF0IiwibWxfel9zdWNjIiwiY2FtbF9ncl9vcGVuX3N1YndpbmRvdyIsImNhbWxfbWFyc2hhbF9kYXRhX3NpemUiLCJnZXQzMiIsIk1sU3RyaW5nUmVhZGVyIiwiY2FtbF9mbG9hdF9vZl9ieXRlcyIsImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIiLCJfbWFnaWMiLCJfYmxvY2tfbGVuIiwibnVtX29iamVjdHMiLCJfc2l6ZV8zMiIsIl9zaXplXzY0Iiwib2JqX2NvdW50ZXIiLCJpbnRlcm5fcmVjIiwiaGVhZGVyIiwiZXhwZWN0ZWRfc2l6ZSIsImNhbWxfc3RyaW5nX29mX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZSIsImJsb2NrIiwiY2FtbF9pbnB1dF92YWx1ZV90b19vdXRzaWRlX2hlYXAiLCJjYW1sX2F0b21pY19jYXMiLCJjYW1sX2NvcHlzaWduX2Zsb2F0IiwiY2FtbF9ncl9zZXRfdGV4dF9zaXplIiwiY2FtbF9hdG9taWNfbG9hZCIsImNhbWxfTUQ1RmluYWwiLCJjYW1sX21kNV9ieXRlcyIsImNhbWxfYmFfc2V0X2dlbmVyaWMiLCJjYW1sX21sX2NvbmRpdGlvbl93YWl0IiwibXV0ZXh0IiwiY2FtbF9ieXRlc19sZXNzZXF1YWwiLCJjYW1sX3N0cmluZ19sZXNzZXF1YWwiLCJjYW1sX3N0cmluZ19ncmVhdGVyZXF1YWwiLCJjYW1sX25leHRhZnRlcl9mbG9hdCIsImNhbWxfZ3Jfc2l6ZV95IiwibWxfel9mYWMyIiwiY2FtbF9wb3NfaW4iLCJjYW1sX21sX3Bvc19pbiIsImNhbWxfaW50NjRfYW5kIiwiY2FtbF9zeXNfY29uc3Rfd29yZF9zaXplIiwibWxfel9iaW4iLCJjb2VmZiIsImNhbWxfdW5peF91bmxpbmsiLCJjYW1sX3N5c19vcGVuX2Zvcl9ub2RlIiwiZnMiLCJmZDIiLCJNbEZha2VGZF9vdXQiLCJjYW1sX3N5c19vcGVuX2ludGVybmFsIiwiaWR4IiwiY2FtbF9zeXNfb3BlbiIsIl9wZXJtcyIsIm1sX3pfZ2NkIiwibWxfel9tdWwiLCJtbF96X2hhbWRpc3QiLCJjYW1sX3N0cmluZ19nZXQiLCJyZV9tYXRjaCIsInJlX3dvcmRfbGV0dGVycyIsIm9wY29kZXMiLCJpc193b3JkX2xldHRlciIsImluX2JpdHNldCIsInJlX21hdGNoX2ltcGwiLCJwYXJ0aWFsIiwicHJvZyIsImNwb29sIiwibm9ybXRhYmxlIiwibnVtZ3JvdXBzIiwibnVtcmVnaXN0ZXJzIiwic3RhcnRjaGFycyIsInBjIiwicXVpdCIsImdyb3VwcyIsInJlX3JlZ2lzdGVyIiwiYmFja3RyYWNrIiwiaXRlbSIsInB1c2giLCJhY2NlcHQiLCJnIiwicHJlZml4X21hdGNoIiwib3AiLCJzYXJnIiwidWFyZyIsImdyb3VwIiwicmVfc2VhcmNoX2JhY2t3YXJkIiwibWxfel9sb2dhbmQiLCJjYW1sX2pzX2Zyb21fc3RyaW5nIiwiY2FtbF9iYV9zdWIiLCJjaGFuZ2VkX2RpbSIsIm5ld19kaW1zIiwibmV3X2RhdGEiLCJjYW1sX2djX2Z1bGxfbWFqb3IiLCJjYW1sX21sX211dGV4X3RyeV9sb2NrIiwiY2FtbF9ieXRlc19zZXQzMiIsImkzMiIsImNhbWxfZ3Jfc2lnaW9fc2lnbmFsIiwiY2FtbF9iYV91aW50OF9zZXQzMiIsIm1sX3pfZGl2X3JlbSIsImNhbWxfc3lzX2NvbnN0X29zdHlwZV91bml4IiwiY2FtbF91bml4X2dtdGltZSIsImNhbWxfc2lnbmJpdF9mbG9hdCIsImNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgiLCJjYW1sX2dyX3NldF9mb250IiwiY2FtbF9ncl9zZXRfY29sb3IiLCJjb252ZXJ0IiwibnVtYmVyIiwiY19zdHIiLCJjYW1sX2dyX21vdmV0byIsImNhbWxfZ3JfcmVzaXplX3dpbmRvdyIsImNhbWxfZ3Jfc3RhdGVfaW5pdCIsImNhbWxfZ3JfY3VycmVudF94IiwiY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5IiwidGEiLCJjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXkiLCJjYW1sX21sX3NlZWtfb3V0IiwiY2FtbF9qc190eXBlb2YiLCJjYW1sX2hhc2hfbWl4X3N0cmluZyIsImNhbWxfc3RyaW5nX2hhc2giLCJjYW1sX3Jlc3RvcmVfcmF3X2JhY2t0cmFjZSIsImJ0IiwiY2FtbF9ncl9saW5ldG8iLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja191bnNhZmUiLCJjYW1sX2JhX2RpbV8zIiwiY2FtbF9pc19zcGVjaWFsX2V4Y2VwdGlvbiIsImNhbWxfZm9ybWF0X2V4Y2VwdGlvbiIsImJ1Y2tldCIsImNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uIiwiaGFuZGxlciIsImF0X2V4aXQiLCJjYW1sX2VwaGVfY2hlY2tfZGF0YSIsImNhbWxfYnl0ZXNfZ2V0MTYiLCJjYW1sX29ial9tYWtlX2ZvcndhcmQiLCJjYW1sX2pzX2Zyb21fYm9vbCIsImNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZSIsImNhbWxfZXhwMl9mbG9hdCIsImNhbWxfZ3JfY2xvc2VfZ3JhcGgiLCJjYW1sX21sX2RvbWFpbl9jcHVfcmVsYXgiLCJjYW1sX2NyZWF0ZV9zdHJpbmciLCJjYW1sX21sX2lucHV0X2Jsb2NrIiwiYXZhaWwiLCJjYW1sX21kNV9jaGFuIiwidG9yZWFkIiwiY2FtbF9hdGFuaF9mbG9hdCIsImNhbWxfbWxfY29uZGl0aW9uX3NpZ25hbCIsImNhbWxfdW5peF9maW5kbmV4dCIsImNhbWxfbWxfb3V0cHV0X2J5dGVzIiwiY2FtbF9tbF9vdXRwdXQiLCJjYW1sX21sX2RvbWFpbl9pZCIsImNhbWxfZXBoZV9nZXRfZGF0YSIsImNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlIiwiY2FtbF90cmFtcG9saW5lX3JldHVybiIsImNhbWxfbWxfaXNfYnVmZmVyZWQiLCJjYW1sX2FycmF5X2FwcGVuZCIsImNhbWxfdW5peF9nZXR0aW1lb2ZkYXkiLCJjYW1sX3VuaXhfdGltZSIsImNhbWxfbWxfc2V0X2NoYW5uZWxfcmVmaWxsIiwibWxfel9uZXh0cHJpbWUiLCJjYW1sX2ZpbGxfYnl0ZXMiLCJjYW1sX2pzX2V4cHIiLCJjYW1sX21sX3J1bnRpbWVfd2FybmluZ3NfZW5hYmxlZCIsIm1sX3pfc3ViIiwibWxfel9mZGl2IiwibWxfel90b19iaXRzIiwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXMiLCJjYW1sX2V2ZW50bG9nX3Jlc3VtZSIsImNhbWxfaGFzaF91bml2X3BhcmFtIiwibGltaXQiLCJvYmoiLCJoYXNoX2FjY3UiLCJoYXNoX2F1eCIsImpzYnl0ZXMiLCJjYW1sX21kNV9zdHJpbmciLCJjYW1sX3N0cmluZ19lcXVhbCIsImNhbWxfYXJyYXlfb2Zfc3RyaW5nIiwibWxfel9kaXZleGFjdCIsImNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlciIsInJlX3JlcGxhY2VtZW50X3RleHQiLCJyZXBsIiwib3JpZyIsImN1ciIsImNhbWxfcHVyZV9qc19leHByIiwiY2FtbF9ibGl0X3N0cmluZyIsImJsaXRfbmF0IiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyIsImJhMSIsImJ5dGVzMiIsImNhbWxfdW5peF9zdGF0IiwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSIsImpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuIiwiY2FtbF91bml4X3N0YXRfNjQiLCJjYW1sX3RvX2pzX3N0cmluZyIsImNhbWxfbWxfbXV0ZXhfbG9jayIsInJlX3NlYXJjaF9mb3J3YXJkIiwiY2FtbF9ibGl0X3N0cmluZ190b19iaWdzdHJpbmciLCJjYW1sX21ha2VfdmVjdCIsImluaXQiLCJjYW1sX21sX3NlZWtfaW4iLCJjYW1sX3N5c19yZWFkX2RpcmVjdG9yeSIsImNhbWxfbWxfb3V0cHV0X2NoYXIiLCJjYW1sX3N5c19jb25zdF9vc3R5cGVfd2luMzIiLCJjYW1sX29ial9pc19ibG9jayIsImNhbWxfb2JqX3NldF9yYXdfZmllbGQiLCJjYW1sX2pzX3ZhciIsImNhbWxfdHJ1bmNfZmxvYXQiLCJjYW1sX3phcml0aF9tYXJzaGFsIiwiY2FtbF9lcGhlX3Vuc2V0X2RhdGEiLCJjYW1sX2VwaGVfc2V0X2RhdGEiLCJjYW1sX2VwaGVfYmxpdF9kYXRhIiwiY2FtbF9pc19wcmludGFibGUiLCJjYW1sX2FycmF5X29mX2J5dGVzIiwiY2FtbF9lcXVhbCIsInJlX3BhcnRpYWxfbWF0Y2giLCJjYW1sX3N5c19yYW5kb21fc2VlZCIsImJ1ZmYiLCJub3ciLCJhbGxfZmluYWxpemVycyIsImNhbWxfZmluYWxfcmVnaXN0ZXJfY2FsbGVkX3dpdGhvdXRfdmFsdWUiLCJjYiIsImNhbWxfYmFfZ2V0XzIiLCJjYW1sX2JhX3VpbnQ4X3NldDE2IiwiY2FtbF9sYXp5X3Jlc2V0X3RvX2xhenkiLCJjYW1sX2pzX2RlbGV0ZSIsImNhbWxfaW50X29mX3N0cmluZyIsImNhbWxfbGlzdF9tb3VudF9wb2ludCIsInByZXYiLCJjYW1sX21hcnNoYWxfY29uc3RhbnRzIiwiY2FtbF9vYmpfcmF3X2ZpZWxkIiwiY2FtbF9qc19lcXVhbHMiLCJjYW1sX29ial9jb21wYXJlX2FuZF9zd2FwIiwiYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5IiwibWxfel9maXRzX25hdGl2ZWludCIsImNhbWxfZ3JfYXJjX2F1eCIsImN4IiwiY3kiLCJyeSIsInJ4Iiwicm90IiwieFBvcyIsInlQb3MiLCJ4UG9zX3ByZXYiLCJ5UG9zX3ByZXYiLCJzcGFjZSIsImRlbHRhIiwiY2FtbF9ncl9maWxsX2FyYyIsImNhbWxfYmFfc2xpY2UiLCJudW1faW5kcyIsInN1Yl9kaW1zIiwibWxfel9vZl9uYXRpdmVpbnQiLCJjYW1sX2JhX2tpbmQiLCJjYW1sX2pzX2Z1bl9jYWxsIiwiY2FtbF9nY19tYWpvcl9zbGljZSIsIndvcmsiLCJtbF96X2ludmVydCIsIm1sX3pfcG93bSIsInozIiwiaW52IiwibWxfel9wb3dtX3NlYyIsImNhbWxfanNfcHVyZV9leHByIiwiY29tcGFyZV9kaWdpdHNfbmF0IiwiY2FtbF9tbF9pbnB1dCIsImNhbWxfZ3Jfd2FpdF9ldmVudCIsIl9ldmwiLCJjYW1sX2dyX3NpZ2lvX2hhbmRsZXIiLCJjYW1sX2hhc2hfbWl4X2JpZ3N0cmluZyIsImNhbWxfcmVjb3JkX2JhY2t0cmFjZSIsImNhbWxfdW5peF9jbGVhbnVwIiwiY2FtbF9zeXNfY29uc3RfYmFja2VuZF90eXBlIiwiY2FtbF9zeXNfZ2V0X2NvbmZpZyIsImNhbWxfb2JqX2lzX3NoYXJlZCIsImNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3QiLCJjYW1sX2FzaW5oX2Zsb2F0IiwibWxfel9oYXNoIiwiYWNjIiwiY2FtbF9wb3Nfb3V0IiwiYmlnc3RyaW5nX29mX2FycmF5X2J1ZmZlciIsImFiIiwiY2FtbF9tb2QiLCJjYW1sX2JhX2luaXQiLCJjYW1sX3VuaXhfZmlsZWRlc2NyX29mX2ZkIiwicmVfc3RyaW5nX21hdGNoIiwiQmlnU3RyaW5nUmVhZGVyIiwiY2FtbF9ncl9kdW1wX2ltYWdlIiwiY2FtbF9iYV9nZXRfZ2VuZXJpYyIsImNhbWxfdW5peF9zdGFydHVwIiwiY2FtbF9nZXRfZXhjZXB0aW9uX2JhY2t0cmFjZSIsImNhbWxfZm9ybWF0X2Zsb2F0IiwidG9GaXhlZCIsImRwIiwicHJlYyIsImNhbWxfbW91bnRfYXV0b2xvYWQiLCJtbF96X2VxdWFsIiwibWxfel9maXRzX2ludDY0IiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYSIsImNhbWxfYmxpdF9iaWdzdHJpbmdfdG9fYmlnc3RyaW5nIiwibWxfel9zcXJ0X3JlbSIsImRpZmYiLCJjYW1sX3N0cmluZ19sZXNzdGhhbiIsImNhbWxfc3RyaW5nX2dyZWF0ZXJ0aGFuIiwiY2FtbF9kaXYiLCJjYW1sX29ial9kdXAiLCJjYW1sX2VwaGVfZ2V0X2RhdGFfY29weSIsImNhbWxfbWVtcHJvZl9zdGFydCIsInJhdGUiLCJzdGFja19zaXplIiwidHJhY2tlciIsIm1sX3pfcGVyZmVjdF9zcXVhcmUiLCJjYW1sX3N5c19nZXRfYXJndiIsImNhbWxfbWxfZG9tYWluX3NldF9uYW1lIiwiX25hbWUiLCJjYW1sX2pzX3RvX2Jvb2wiLCJjYW1sX2dyX2NyZWF0ZV9pbWFnZSIsImNhbWxfZXBoZV9nZXRfa2V5X2NvcHkiLCJjYW1sX2xlc3N0aGFuIiwiY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdCIsIm1sX3pfdG9fbmF0aXZlaW50IiwiY2FtbF9yZWdpc3Rlcl9nbG9iYWwiLCJuYW1lX29wdCIsIm11bHRfbmF0IiwibGVuMyIsInNxdWFyZV9uYXQiLCJjYW1sX2pzX2Zyb21fZmxvYXQiLCJjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlIiwiY2FtbF9nY19zdGF0IiwiY2FtbF9nZXRfbWFqb3JfY3JlZGl0IiwiY2FtbF9zeXNfbW9kaWZ5X2FyZ3YiLCJjYW1sX21ldGhvZF9jYWNoZSIsImNhbWxfZ2V0X3B1YmxpY19tZXRob2QiLCJjYWNoZWlkIiwibWV0aHMiLCJsaSIsImNhbWxfanNfZ2V0X2NvbnNvbGUiLCJjYW1sX3N5c191bnNhZmVfZ2V0ZW52IiwiY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW4iLCJyZWZpbGwiLCJjaGFubmVsIiwiYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5IiwiY2FtbF9yb3VuZF9mbG9hdCIsIm1sX3pfb2ZfYml0cyIsImJhc2UxIiwiY2FtbF9vanNfbmV3X2FyciIsIkYiLCJjb21wbGVtZW50X25hdCIsIm1sX3pfbG9neG9yIiwiY2FtbF9kb21haW5fZGxzIiwiY2FtbF9kb21haW5fZGxzX3NldCIsImNhbWxfbGF6eV9yZWFkX3Jlc3VsdCIsImNhbWxfanNfcmVnZXhwcyIsImNhbWxfanNfaHRtbF9lc2NhcGUiLCJjYW1sX2JhX2RpbV8yIiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfYXJndW1lbnRzIiwiY2FtbF9zaW5oX2Zsb2F0IiwiY2FtbF9sZGV4cF9mbG9hdCIsImNhbWxfZ3Jfc3RhdGVfc2V0IiwiY2FtbF96YXJpdGhfdW5tYXJzaGFsIiwibmVnYXRlIiwibWxfel90cmFpbGluZ196ZXJvcyIsImNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3QiLCJhcml0eSIsImNhbWxfZ2NfbWlub3Jfd29yZHMiLCJjYW1sX2dldF9jdXJyZW50X2NhbGxzdGFjayIsImxhbmRfZGlnaXRfbmF0IiwiY2FtbF9pbnQ2NF9tb2QiLCJjYW1sX29ial9zZXRfdGFnIiwiY2FtbF9pbnQzMl9ic3dhcCIsImNhbWxfYmFfc2V0XzMiLCJtbF96X2phY29iaSIsIm4xIiwibWxfel9sZWdlbmRyZSIsImNhbWxfanNfaW5zdGFuY2VvZiIsImNhbWxfZ2V0X21ham9yX2J1Y2tldCIsImNhbWxfYmxpdF9iaWdzdHJpbmdfdG9fc3RyaW5nIiwic2V0X2RpZ2l0X25hdF9uYXRpdmUiLCJudGhfZGlnaXRfbmF0X25hdGl2ZSIsImNhbWxfc3RyaW5nX3NldDY0IiwiY2FtbF9ncl9zdGF0ZV9jcmVhdGUiLCJjYW52YXMiLCJjb250ZXh0IiwiY2FtbF9qc193cmFwX2NhbGxiYWNrIiwiY2FtbF9ncl9kcmF3X2FyYyIsImNhbWxfYmFfbWFwX2ZpbGUiLCJ2ZmQiLCJzaGFyZWQiLCJjYW1sX2JhX21hcF9maWxlX2J5dGVjb2RlIiwiYXJnbiIsImNhbWxfYmFfY3JlYXRlX2Zyb20iLCJkYXRhMSIsImRhdGEyIiwianN0eXAiLCJjYW1sX3RhbmhfZmxvYXQiLCJjYW1sX2dyX2RyYXdfc3RyIiwiZHgiLCJjYW1sX2dyX2RyYXdfc3RyaW5nIiwibWxfel9wcmltb3JpYWwiLCJjYW1sX2dyX2RyYXdfY2hhciIsImNhbWxfdW5tb3VudCIsIm1sX3pfZmliIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3N0cmluZyIsImNhbWxfbWxfcG9zX2luXzY0IiwiY2FtbF9ncl9kcmF3X2ltYWdlIiwiaW1hZ2UiLCJjYW1sX3JlZ2lzdGVyX2NoYW5uZWxfZm9yX3NwYWNldGltZSIsIl9jaGFubmVsIiwiY2FtbF9zdHJpbmdfc2V0IiwiY2FtbF9zeXNfcm1kaXIiLCJjYW1sX3VuaXhfc3ltbGluayIsInNyY19yb290IiwiZHN0X3Jvb3QiLCJjYW1sX21sX3Bvc19vdXQiLCJjYW1sX3NwYWNldGltZV9lbmFibGVkIiwiY2FtbF9ieXRlc19ub3RlcXVhbCIsImNhbWxfcnVudGltZV9wYXJhbWV0ZXJzIiwiY2FtbF9qc19vYmplY3QiLCJjYW1sX2JhX2NyZWF0ZSIsImRpbXNfbWwiLCJjYW1sX2dyX3JlbWVtYmVyX21vZGUiLCJjYW1sX2ZtYV9mbG9hdCIsIlNQTElUIiwiTUlOX1ZBTFVFIiwiRVBTSUxPTiIsIkMiLCJBIiwiQiIsIm11bHRpcGx5IiwiYXQiLCJhaGkiLCJhbG8iLCJiaGkiLCJibG8iLCJhZGp1c3QiLCJzY2FsZSIsInhzIiwieXMiLCJ6cyIsInh5IiwidSIsImNhbWxfcmVjb21tZW5kZWRfZG9tYWluX2NvdW50IiwiY2FtbF9ic3dhcDE2IiwiY2FtbF9tbF9zZXRfYmluYXJ5X21vZGUiLCJjYW1sX2ZpbmFsX3JlZ2lzdGVyIiwiY2FtbF9ncl9kcmF3X3JlY3QiLCJjYW1sX3N0cmluZ19nZXQxNiIsImNhbWxfb3V0cHV0X3ZhbHVlIiwiY2FtbF9iYV9nZXRfMyIsImNhbWxfZXBoZV9ibGl0X2tleSIsIm1sX3pfdG9faW50MzIiLCJjYW1sX2luaXRpYWxfdGltZSIsImNhbWxfc3lzX3RpbWUiLCJjYW1sX3N5c190aW1lX2luY2x1ZGVfY2hpbGRyZW4iLCJjYW1sX2NoZWNrX2JvdW5kIiwiY2FtbF91bml4X2dldHB3dWlkIiwibWxfel9jb21wYXJlIiwiY2FtbF9oYXNoIiwic2VlZCIsInF1ZXVlIiwicmQiLCJ3ciIsImNhbWxfYmFfdG9fdHlwZWRfYXJyYXkiLCJjYW1sX2RvbWFpbl9kbHNfZ2V0IiwiY2FtbF9ieXRlc19nZXQzMiIsImNhbWxfZnJleHBfZmxvYXQiLCJtbF96X3ByZWQiLCJjYW1sX3N0cmluZ19nZXQ2NCIsImNhbWxfanNfZXJyb3Jfb3B0aW9uX29mX2V4Y2VwdGlvbiIsImNhbWxfbWxfcG9zX291dF82NCIsIm1sX3pfZXh0cmFjdCIsIm1sX3pfcmVtb3ZlIiwibWxfel9vZl9mbG9hdCIsImYxIiwibWxfel9sb2dub3QiLCJjYW1sX3VuaXhfZmluZGNsb3NlIiwiY2FtbF9ncl9jbG9zZV9zdWJ3aW5kb3ciLCJjYW1sX2Zsb2F0YXJyYXlfYmxpdCIsImNhbWxfZ2V0X21pbm9yX2ZyZWUiLCJjYW1sX3NldF9zdGF0aWNfZW52IiwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0IiwiY2FtbF9qc19uZXciLCJjYW1sX2dyX2N1cnJlbnRfeSIsImNhbWxfZm9ybWF0X2ludCIsImNhbWxfb2JqX3RydW5jYXRlIiwiY2FtbF9qc190b19zdHJpbmciLCJpc19kaWdpdF9vZGQiLCJjYW1sX3J1bnRpbWVfdmFyaWFudCIsImNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dCIsImJ1ZmZlcmVkIiwiY2FtbF9hcnJheV9jb25jYXQiLCJjYW1sX2dyX29wZW5fZ3JhcGgiLCJpbmZvIiwic3BlY3MiLCJzdGF0dXMiLCJ3aW4iLCJkb2MiLCJ0aXRsZSIsImJvZHkiLCJjYW1sX21ha2VfZmxvYXRfdmVjdCIsImNhbWxfY2JydF9mbG9hdCIsImNhbWxfbWVtcHJvZl9zdG9wIiwiY2FtbF9ldmVudGxvZ19wYXVzZSIsImNhbWxfZ3JlYXRlcmVxdWFsIiwibWxfel9udW1iaXRzIiwidXBwZXJCb3VuZCIsImNhbWxfZ2V0X2V4Y2VwdGlvbl9yYXdfYmFja3RyYWNlIiwiY2FtbF9sb2cxcF9mbG9hdCIsImNhbWxfbGF6eV9tYWtlX2ZvcndhcmQiLCJsb3JfZGlnaXRfbmF0IiwiY2FtbF9ncl9ibGl0X2ltYWdlIiwiaW0yIiwiY2FtbF9ncl93aW5kb3dfaWQiLCJjYW1sX2pzX29uX2llIiwidWEiLCJjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0IiwiY2FtbF9iYV9sYXlvdXQiLCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZSIsImNhbWxfYXJyYXlfc2V0IiwibmV3dmFsIiwiY2FtbF9hbGxvY19zdGFjayIsInJldCIsImNhbWxfYnl0ZXNfZ3JlYXRlcmVxdWFsIiwibWxfel9wZXJmZWN0X3Bvd2VyIiwibG9nMnoiLCJ6cCIsInNldF9kaWdpdF9uYXQiLCJtbF96X2luaXQiLCJjYW1sX2dyX2RvY19vZl9zdGF0ZSIsImNhbWxfbWxfb3V0cHV0X2ludCIsImNhbWxfb2JqX3dpdGhfdGFnIiwiY2FtbF9tbF9jaGFubmVsX3NpemUiLCJjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdCIsImNhbWxfaGV4c3RyaW5nX29mX2Zsb2F0Iiwic3R5bGUiLCJleHBfc2lnbiIsInNpZ25fc3RyIiwiY3N0IiwieF9zdHIiLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3QiLCJtbF96X2Zvcm1hdCIsImNhcyIsIndpZHRoIiwiYWx0IiwicGFkIiwicHJlZml4IiwicHJlIiwibWxfel90b19pbnQ2NCIsIm1hc2siLCJtbF96X3NpemUiLCJjYW1sX3VuaXhfcmVhZGxpbmsiLCJjYW1sX2JhY2t0cmFjZV9zdGF0dXMiLCJjYW1sX3N5c19hcmd2IiwiY2FtbF9pbnN0YWxsX3NpZ25hbF9oYW5kbGVyIiwiY2FtbF9iYV9maWxsIiwiY2FtbF9tb2RmX2Zsb2F0IiwiY2FtbF9nY19nZXQiLCJjYW1sX2Zsb2F0X2NvbXBhcmUiLCJtbF96X3NoaWZ0X3JpZ2h0X3RydW5jIiwiY2FtbF9zdHJpbmdfc2V0MzIiLCJjYW1sX3BhcnNlX2VuZ2luZSIsInRhYmxlcyIsImVudiIsIkVSUkNPREUiLCJsb29wIiwidGVzdHNoaWZ0Iiwic2hpZnRfcmVjb3ZlciIsInJlZHVjZSIsIlJFQURfVE9LRU4iLCJSQUlTRV9QQVJTRV9FUlJPUiIsIkdST1dfU1RBQ0tTXzEiLCJHUk9XX1NUQUNLU18yIiwiQ09NUFVURV9TRU1BTlRJQ19BQ1RJT04iLCJDQUxMX0VSUk9SX0ZVTkNUSU9OIiwiZW52X3Nfc3RhY2siLCJlbnZfdl9zdGFjayIsImVudl9zeW1iX3N0YXJ0X3N0YWNrIiwiZW52X3N5bWJfZW5kX3N0YWNrIiwiZW52X3N0YWNrc2l6ZSIsImVudl9zdGFja2Jhc2UiLCJlbnZfY3Vycl9jaGFyIiwiZW52X2x2YWwiLCJlbnZfc3ltYl9zdGFydCIsImVudl9zeW1iX2VuZCIsImVudl9hc3AiLCJlbnZfcnVsZV9sZW4iLCJlbnZfcnVsZV9udW1iZXIiLCJlbnZfc3AiLCJlbnZfc3RhdGUiLCJlbnZfZXJyZmxhZyIsInRibF90cmFuc2xfY29uc3QiLCJ0YmxfdHJhbnNsX2Jsb2NrIiwidGJsX2xocyIsInRibF9sZW4iLCJ0YmxfZGVmcmVkIiwidGJsX2Rnb3RvIiwidGJsX3NpbmRleCIsInRibF9yaW5kZXgiLCJ0YmxfZ2luZGV4IiwidGJsX3RhYmxlc2l6ZSIsInRibF90YWJsZSIsInRibF9jaGVjayIsInRibF9uYW1lc19jb25zdCIsInRibF9uYW1lc19ibG9jayIsImxvZyIsInRva2VuX25hbWUiLCJuYW1lcyIsInByaW50X3Rva2VuIiwidG9rIiwidG9rZW4iLCJuMiIsInN0YXRlMSIsInNwIiwiZXJyZmxhZyIsImFzcCIsImNhbWxfdXBkYXRlX2R1bW15IiwiY2FtbF9hcnJheV9maWxsIiwiY2FtbF9zeXNfbWtkaXIiLCJjYW1sX3N0cmluZ19ub3RlcXVhbCIsImNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW4iLCJjYW1sX2dyX21ha2VfaW1hZ2UiLCJjYW1sX21sX3NldF9jaGFubmVsX291dHB1dCIsImNhbWxfcmVhZF9maWxlX2NvbnRlbnQiLCJjYW1sX2pzX3RvX2Zsb2F0IiwiY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciIsIm9yaWdpbiIsImV2ZW50IiwiZXJyX25vX3ByZWQiLCJlcnJfbm9fc3VjYyIsInplcm8kMiIsIm9uZSQyIiwibWludXNfb25lJDIiLCJtaW5faW50JDIiLCJtYXhfaW50JDIiLCJkdW1teV9wb3MiLCJ6ZXJvX3BvcyIsInN1Yl9mb3JtYXQiLCJmb3JtYXR0aW5nX2xpdCIsImxvY2ZtdCIsIm51bGwkMCIsImN1cnJlbnRfZGlyX25hbWUiLCJwYXJlbnRfZGlyX25hbWUiLCJkaXJfc2VwIiwicXVvdGVxdW90ZSIsIm51bGwkMSIsImN1cnJlbnRfZGlyX25hbWUkMCIsInBhcmVudF9kaXJfbmFtZSQwIiwiZGlyX3NlcCQwIiwibnVsbCQyIiwiY3VycmVudF9kaXJfbmFtZSQxIiwicGFyZW50X2Rpcl9uYW1lJDEiLCJkaXJfc2VwJDEiLCJ6ZXJvJDQiLCJvbmUkNCIsImkiLCJlcmFzZV9yZWwiLCJyZXN0IiwicmVzdCQwIiwicmVzdCQxIiwicmVzdCQyIiwicmVzdCQzIiwicmVzdCQ0IiwicmVzdCQ1IiwicmVzdCQ2IiwicmVzdCQ3IiwidHkiLCJyZXN0JDgiLCJ0eTEiLCJyZXN0JDkiLCJyZXN0JDEwIiwicmVzdCQxMSIsInJlc3QkMTIiLCJyZXN0JDEzIiwiY29uY2F0X2ZtdHR5IiwiZm10dHkxIiwiZm10dHkyIiwidHkyIiwiY29uY2F0X2ZtdCIsImZtdDEiLCJmbXQyIiwicGFkIiwicGFkJDAiLCJwcmVjIiwicGFkJDEiLCJpY29udiIsInByZWMkMCIsInBhZCQyIiwiaWNvbnYkMCIsInByZWMkMSIsInBhZCQzIiwiaWNvbnYkMSIsInByZWMkMiIsInBhZCQ0IiwiaWNvbnYkMiIsInByZWMkMyIsInBhZCQ1IiwiZmNvbnYiLCJwYWQkNiIsInN0ciIsImNociIsImZtdHR5IiwicGFkJDciLCJmbXR0eSQwIiwicGFkJDgiLCJyZXN0JDE0IiwicmVzdCQxNSIsInJlc3QkMTYiLCJmbXRpbmdfbGl0IiwicmVzdCQxNyIsImZtdGluZ19nZW4iLCJyZXN0JDE4IiwicmVzdCQxOSIsImNoYXJfc2V0Iiwid2lkdGhfb3B0IiwicmVzdCQyMCIsImNvdW50ZXIiLCJyZXN0JDIxIiwicmVzdCQyMiIsImlnbiIsInJlc3QkMjMiLCJmIiwiYXJpdHkiLCJ2IiwiciIsImN1ciIsInNlZW4iLCJuIiwiZmFpbHdpdGgiLCJzIiwiaW52YWxpZF9hcmciLCJtaW4iLCJ4IiwieSIsIm1heCIsImFicyIsImxub3QiLCJpbmZpbml0eSIsIm5lZ19pbmZpbml0eSIsIm5hbiIsIm1heF9mbG9hdCIsIm1pbl9mbG9hdCIsImVwc2lsb24iLCJtYXhfaW50IiwibWluX2ludCIsInMxIiwiczIiLCJsMSIsImwyIiwiY2hhcl9vZl9pbnQiLCJzdHJpbmdfb2ZfYm9vbCIsImIiLCJib29sX29mX3N0cmluZyIsImJvb2xfb2Zfc3RyaW5nX29wdCIsInN0cmluZ19vZl9pbnQiLCJpbnRfb2Zfc3RyaW5nX29wdCIsInZhbGlkX2Zsb2F0X2xleGVtIiwibCIsImkkMCIsInRvX3N0cmluZyIsIm9mX3N0cmluZ19vcHQiLCJhcHBlbmQiLCJ0bCIsImhkIiwic3RkaW4iLCJzdGRvdXQiLCJzdGRlcnIiLCJvcGVuX2dlbiIsIm1vZGUiLCJwZXJtIiwibmFtZSIsImMiLCJvcGVuX3RleHQiLCJvcGVuX2JpbiIsImZsdXNoX2FsbCIsIml0ZXIiLCJhIiwib3V0cHV0X2J5dGVzIiwib2MiLCJvdXRwdXRfc3RyaW5nIiwib3V0cHV0Iiwib2ZzIiwibGVuIiwib3V0cHV0X3N1YnN0cmluZyIsIm91dHB1dF92YWx1ZSIsImNoYW4iLCJjbG9zZSIsImNsb3NlX25vZXJyIiwib3Blbl9nZW4kMCIsIm9wZW5fdGV4dCQwIiwib3Blbl9iaW4kMCIsImlucHV0IiwiaWMiLCJ1bnNhZmVfcmVhbGx5X2lucHV0Iiwib2ZzJDAiLCJsZW4kMCIsImxlbiQxIiwib2ZzJDEiLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfc3RyaW5nIiwiaW5wdXRfbGluZSIsImJ1aWxkX3Jlc3VsdCIsImJ1ZiIsImFjY3UiLCJiZWciLCJhY2N1JDAiLCJyZXMiLCJjbG9zZV9ub2VyciQwIiwicHJpbnRfY2hhciIsInByaW50X3N0cmluZyIsInByaW50X2J5dGVzIiwicHJpbnRfaW50IiwicHJpbnRfZmxvYXQiLCJwcmludF9lbmRsaW5lIiwicHJpbnRfbmV3bGluZSIsInByZXJyX2NoYXIiLCJwcmVycl9zdHJpbmciLCJwcmVycl9ieXRlcyIsInByZXJyX2ludCIsInByZXJyX2Zsb2F0IiwicHJlcnJfZW5kbGluZSIsInByZXJyX25ld2xpbmUiLCJyZWFkX2xpbmUiLCJyZWFkX2ludCIsInJlYWRfaW50X29wdCIsInJlYWRfZmxvYXQiLCJyZWFkX2Zsb2F0X29wdCIsInN0cmluZ19vZl9mb3JtYXQiLCJzeW1ib2wiLCJzdHIyIiwic3RyMSIsImV4aXRfZnVuY3Rpb24iLCJhdF9leGl0IiwiZl95ZXRfdG9fcnVuIiwib2xkX2V4aXQiLCJuZXdfZXhpdCQwIiwibmV3X2V4aXQiLCJzdWNjZXNzIiwiZG9fYXRfZXhpdCIsImV4aXQiLCJyZXRjb2RlIiwic2V0X2JpbmFyeV9tb2RlIiwiY2xvc2UkMCIsImluX2NoYW5uZWxfbGVuZ3RoIiwicG9zX2luIiwic2Vla19pbiIsImlucHV0X3ZhbHVlIiwiaW5wdXRfYmluYXJ5X2ludCIsImlucHV0X2J5dGUiLCJpbnB1dF9jaGFyIiwic2V0X2JpbmFyeV9tb2RlJDAiLCJvdXRfY2hhbm5lbF9sZW5ndGgiLCJwb3Nfb3V0Iiwic2Vla19vdXQiLCJvdXRwdXRfYmluYXJ5X2ludCIsIm91dHB1dF9ieXRlIiwib3V0cHV0X2NoYXIiLCJmbHVzaCIsImxlZnQiLCJyaWdodCIsImlzX2xlZnQiLCJpc19yaWdodCIsImZpbmRfbGVmdCIsImZpbmRfcmlnaHQiLCJtYXBfbGVmdCIsImUiLCJtYXBfcmlnaHQiLCJtYXAiLCJ2JDAiLCJmb2xkIiwiZXF1YWwiLCJlMSIsImUyIiwidjIiLCJ2MiQwIiwiY29tcGFyZSIsIm1hdGNoJDEiLCJpc19ibG9jayIsImRvdWJsZV9maWVsZCIsInNldF9kb3VibGVfZmllbGQiLCJmaXJzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3IiLCJsYXN0X25vbl9jb25zdGFudF9jb25zdHJ1Y3Rvcl8iLCJsYXp5X3RhZyIsImNsb3N1cmVfdGFnIiwib2JqZWN0X3RhZyIsImluZml4X3RhZyIsImZvcndhcmRfdGFnIiwibm9fc2Nhbl90YWciLCJhYnN0cmFjdF90YWciLCJzdHJpbmdfdGFnIiwiZG91YmxlX3RhZyIsImRvdWJsZV9hcnJheV90YWciLCJjdXN0b21fdGFnIiwiaW50X3RhZyIsIm91dF9vZl9oZWFwX3RhZyIsInVuYWxpZ25lZF90YWciLCJpbmZvIiwib2JqIiwic3RhcnRfZW52Iiwib2ZfdmFsIiwic2xvdCIsImlkIiwiZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIiwiZXh0ZW5zaW9uX25hbWUiLCJleHRlbnNpb25faWQiLCJtYXhfZXBoZV9sZW5ndGgiLCJjcmVhdGUiLCJsZW5ndGgiLCJyYWlzZV9pZl9pbnZhbGlkX29mZnNldCIsIm8iLCJtc2ciLCJnZXRfa2V5IiwiZ2V0X2tleV9jb3B5Iiwic2V0X2tleSIsInVuc2V0X2tleSIsImNoZWNrX2tleSIsImJsaXRfa2V5IiwibzEiLCJvMiIsInJhaXNlX3VuZGVmaW5lZCIsImZvcmNlX2xhenlfYmxvY2siLCJibGsiLCJjbG9zdXJlIiwicmVzdWx0IiwiZm9yY2VfdmFsX2xhenlfYmxvY2siLCJmb3JjZSIsImx6diIsInQiLCJmb3JjZV92YWwiLCJ0b19sYXp5IiwiZnJvbV92YWwiLCJpc192YWwiLCJtYXAkMCIsIm1hcF92YWwiLCJlbXB0eSIsInJldHVybiQwIiwiY29ucyIsIm5leHQiLCJhcHBlbmQkMCIsInNlcTEiLCJzZXEyIiwibWFwJDEiLCJzZXEiLCJmaWx0ZXJfbWFwIiwic2VxJDAiLCJmaWx0ZXIiLCJjb25jYXQiLCJmbGF0X21hcCIsImZvbGRfbGVmdCIsImFjYyIsImFjYyQwIiwiYWNjJDEiLCJ1bmZvbGQiLCJ1IiwidSQwIiwiaXNfZW1wdHkiLCJ4cyIsInVuY29ucyIsInhzJDAiLCJsZW5ndGgkMCIsInhzJDEiLCJpdGVyaSIsImZvbGRfbGVmdGkiLCJhY2N1JDEiLCJmb3JfYWxsIiwicCIsImV4aXN0cyIsImZpbmQiLCJmaW5kX21hcCIsIml0ZXIyIiwieXMiLCJ5cyQwIiwieXMkMSIsImZvbGRfbGVmdDIiLCJmb3JfYWxsMiIsImV4aXN0czIiLCJlcXVhbCQwIiwiZXEiLCJjb21wYXJlJDAiLCJjbXAiLCJpbml0X2F1eCIsImoiLCJpbml0IiwicmVwZWF0IiwiZm9yZXZlciIsImN5Y2xlX25vbmVtcHR5IiwiY3ljbGUiLCJpdGVyYXRlMSIsIml0ZXJhdGUiLCJtYXBpX2F1eCIsIm1hcGkiLCJ0YWlsX3NjYW4iLCJzJDAiLCJzY2FuIiwidGFrZV9hdXgiLCJ0YWtlIiwiZHJvcCIsIm4kMCIsIm4kMSIsInRha2Vfd2hpbGUiLCJkcm9wX3doaWxlIiwibm9kZSIsImdyb3VwIiwiZmFpbHVyZSIsIm1lbW9pemUiLCJvbmNlIiwiYWN0aW9uIiwiemlwIiwibWFwMiIsImludGVybGVhdmUiLCJzb3J0ZWRfbWVyZ2UxIiwic29ydGVkX21lcmdlIiwibWFwX2ZzdCIsInh5cyIsInh5cyQwIiwibWFwX3NuZCIsInVuemlwIiwiZmlsdGVyX21hcF9maW5kX2xlZnRfbWFwIiwiZmlsdGVyX21hcF9maW5kX3JpZ2h0X21hcCIsInoiLCJwYXJ0aXRpb25fbWFwIiwicGFydGl0aW9uIiwicGVlbCIsInhzcyIsInRyYW5zcG9zZSIsInRhaWxzIiwiaGVhZHMiLCJyZW1haW5kZXJzIiwieHNzJDAiLCJ0YWlscyQwIiwiaGVhZHMkMCIsIm1hcF9wcm9kdWN0IiwicHJvZHVjdCIsIm9mX2Rpc3BlbnNlciIsIml0IiwidG9fZGlzcGVuc2VyIiwiaW50cyIsIm5vbmUiLCJzb21lIiwidmFsdWUiLCJkZWZhdWx0JDAiLCJnZXQkMCIsImJpbmQiLCJqb2luIiwibWFwJDIiLCJmb2xkJDAiLCJpdGVyJDAiLCJpc19ub25lIiwiaXNfc29tZSIsImVxdWFsJDEiLCJvMCIsInYxIiwidjAiLCJjb21wYXJlJDEiLCJ0b19yZXN1bHQiLCJ0b19saXN0IiwidG9fc2VxIiwib2siLCJlcnJvciIsInZhbHVlJDAiLCJnZXRfb2siLCJnZXRfZXJyb3IiLCJiaW5kJDAiLCJqb2luJDAiLCJtYXAkMyIsIm1hcF9lcnJvciIsImZvbGQkMSIsIml0ZXIkMSIsIml0ZXJfZXJyb3IiLCJpc19vayIsImlzX2Vycm9yIiwiZXF1YWwkMiIsInIwIiwicjEiLCJjb21wYXJlJDIiLCJ0b19vcHRpb24iLCJ0b19saXN0JDAiLCJ0b19zZXEkMCIsImVxdWFsJDMiLCJjb21wYXJlJDMiLCJ0b19mbG9hdCIsInRvX3N0cmluZyQwIiwiZXNjYXBlZCIsImxvd2VyY2FzZSIsInVwcGVyY2FzZSIsImxvd2VyY2FzZV9hc2NpaSIsInVwcGVyY2FzZV9hc2NpaSIsImNvbXBhcmUkNCIsImMxIiwiYzIiLCJlcXVhbCQ0IiwibWluJDAiLCJtYXgkMCIsImxvX2JvdW5kIiwiaGlfYm91bmQiLCJib20iLCJyZXAiLCJzdWNjIiwicHJlZCIsImlzX3ZhbGlkIiwib2ZfaW50IiwiaXNfY2hhciIsIm9mX2NoYXIiLCJ0b19jaGFyIiwidW5zYWZlX3RvX2NoYXIiLCJlcXVhbCQ1IiwiY29tcGFyZSQ1IiwiaGFzaCIsInV0Zl9kZWNvZGVfaXNfdmFsaWQiLCJkIiwidXRmX2RlY29kZV9sZW5ndGgiLCJ1dGZfZGVjb2RlX3VjaGFyIiwidXRmX2RlY29kZSIsImRlY19pbnZhbGlkIiwidXRmXzhfYnl0ZV9sZW5ndGgiLCJ1dGZfMTZfYnl0ZV9sZW5ndGgiLCJsZW5ndGgkMSIsInBhcmFtJDAiLCJjb25zJDAiLCJudGgiLCJsJDAiLCJsJDEiLCJudGhfb3B0IiwicmV2X2FwcGVuZCIsImwxJDAiLCJsMiQwIiwibDEkMSIsImwyJDEiLCJyZXYiLCJpbml0X2F1eCQwIiwicGFyYW0iLCJhMiIsImExIiwicGFpciIsIngkMCIsInJ5IiwicngiLCJ0MiIsImgyIiwidDEiLCJoMSIsInNvcnQiLCJ4MiIsIngxIiwidGwkMSIsIngzIiwieDIkMCIsIngxJDAiLCJuMSIsIm4yIiwicmV2X3NvcnQiLCJ0bCQwIiwiYyQwIiwiYyQxIiwiYyQyIiwiYyQzIiwiYyQ0IiwiYyQ1IiwiYyQ2IiwiYWNjdSQyIiwiYXV4IiwidGFpbCIsImRpcmVjdCIsImRlcHRoIiwiemVybyIsIm9uZSIsIm1pbnVzX29uZSIsImFicyQwIiwibWF4X2ludCQwIiwibWluX2ludCQwIiwibG9nbm90IiwiZXF1YWwkNyIsImNvbXBhcmUkNyIsIm1pbiQxIiwibWF4JDEiLCJ0b19zdHJpbmckMSIsInN5bWJvbCQwIiwiZHN0b2ZmIiwic3Jjb2ZmIiwiY3B5bGVuIiwib2ZzMSIsIm9mczIiLCJzZXAiLCJzZXBsZW4iLCJkc3QiLCJpc19zcGFjZSIsImFwcGx5MSIsInByZWZpeCIsImxlbl9zIiwibGVuX3ByZSIsInN1ZmZpeCIsImxlbl9zdWYiLCJkaWZmIiwiaW5kZXhfcmVjIiwibGltIiwiaSQxIiwiaW5kZXhfcmVjX29wdCIsInJpbmRleF9yZWMiLCJyaW5kZXhfcmVjX29wdCIsIm5ld19sZW4iLCJuZXdfYnVmIiwiZ2V0JDEiLCJzZXQkMCIsImRlY19yZXQiLCJub3RfaW5feDgwX3RvX3hCRiIsIm5vdF9pbl94QTBfdG9feEJGIiwibm90X2luX3g4MF90b194OUYiLCJub3RfaW5feDkwX3RvX3hCRiIsIm5vdF9pbl94ODBfdG9feDhGIiwidXRmXzhfdWNoYXJfMyIsImIwIiwiYjEiLCJiMiIsInV0Zl84X3VjaGFyXzQiLCJiMyIsImkkNCIsImIxJDEiLCJpJDUiLCJiMiQxIiwiaSQ2IiwiaSQxMCIsImIxJDMiLCJpJDExIiwiYjIkMyIsImkkMTIiLCJiMyQxIiwiaSQ3IiwiYjEkMiIsImkkOCIsImIyJDIiLCJpJDkiLCJiMyQwIiwiaSQxMyIsImIxJDQiLCJpJDE0IiwiYjIkNCIsImkkMiIsImIxJDAiLCJpJDMiLCJiMiQwIiwiaSQxNSIsImIxJDUiLCJzZXQiLCJsYXN0IiwibGFzdCQwIiwibGFzdCQxIiwibGFzdCQzIiwibGFzdCQyIiwibGFzdCQ0IiwibGFzdCQ1IiwiaGkiLCJsbyIsImlzX3NwYWNlJDAiLCJpbmRleF9yZWMkMCIsImluZGV4X3JlY19vcHQkMCIsInJpbmRleF9yZWMkMCIsInJpbmRleF9yZWNfb3B0JDAiLCJnIiwiZXF1YWwkMTAiLCJjb21wYXJlJDEwIiwidG9fc3RyaW5nJDIiLCJ0b19idWZmZXIiLCJidWZmIiwiZmxhZ3MiLCJoZWFkZXJfc2l6ZSIsImRhdGFfc2l6ZSIsInRvdGFsX3NpemUiLCJmcm9tX2J5dGVzIiwiZnJvbV9zdHJpbmciLCJzeCIsInN5IiwibGEiLCJsYiIsInJlcyQwIiwibGlzdF9sZW5ndGgiLCJwYXJhbSQxIiwiaGQkMCIsImlucHV0X2FycmF5IiwiZWx0Iiwib3V0cHV0X2FycmF5IiwiZWx0JDAiLCJhY2MkMiIsImEwIiwiYmkiLCJhaSIsIm5hIiwibmIiLCJtYXhzb24iLCJpMzEiLCJ0cmlja2xlZG93biIsInRyaWNrbGUiLCJidWJibGVkb3duIiwiYnViYmxlIiwiZSQwIiwiZmF0aGVyIiwibWVyZ2UiLCJzcmMxb2ZzIiwic3JjMWxlbiIsInNyYzIiLCJzcmMyb2ZzIiwic3JjMmxlbiIsImRzdG9mcyIsInNyYzFyIiwic3JjMnIiLCJzMiQxIiwiczEkMSIsImkxIiwiaTIiLCJpMiQwIiwiZCQwIiwiczIkMCIsImkxJDAiLCJkJDEiLCJzMSQwIiwiaXNvcnR0byIsInNyY29mcyIsInNvcnR0byIsInplcm8kMCIsIm9uZSQwIiwibWludXNfb25lJDAiLCJpc19maW5pdGUiLCJpc19pbmZpbml0ZSIsImlzX25hbiIsInBpIiwiaXNfaW50ZWdlciIsInN1Y2MkMCIsInByZWQkMCIsImVxdWFsJDExIiwibWluJDIiLCJtYXgkMiIsIm1pbl9tYXgiLCJtaW5fbnVtIiwibWF4X251bSIsIm1pbl9tYXhfbnVtIiwiaGFzaCQwIiwidW5zYWZlX2ZpbGwiLCJjaGVjayIsIm1ha2UkMiIsImluaXQkNCIsImFwcGVuZCQyIiwiY29uY2F0JDMiLCJobGVuIiwic3ViJDIiLCJjb3B5JDIiLCJmaWxsJDEiLCJibGl0JDIiLCJzcmMiLCJzb2ZzIiwiZG9mcyIsInRvX2xpc3QkMiIsIm9mX2xpc3QkMCIsImgiLCJpdGVyJDYiLCJpdGVyMiQyIiwibWFwJDgiLCJtYXAyJDIiLCJpdGVyaSQ0IiwibWFwaSQ0IiwiZm9sZF9sZWZ0JDQiLCJmb2xkX3JpZ2h0JDMiLCJleGlzdHMkNCIsImZvcl9hbGwkNCIsIm1lbSQxIiwibWVtX2llZWUiLCJzb3J0JDAiLCJzdGFibGVfc29ydCIsInRvX3NlcSQ1IiwidG9fc2VxaSQyIiwib2Zfc2VxJDMiLCJtYXBfdG9fYXJyYXkiLCJtYXBfZnJvbV9hcnJheSIsInplcm8kMSIsIm9uZSQxIiwibWludXNfb25lJDEiLCJzdWNjJDEiLCJwcmVkJDEiLCJhYnMkMSIsIm1pbl9pbnQkMSIsIm1heF9pbnQkMSIsImxvZ25vdCQwIiwidW5zaWduZWRfdG9faW50IiwidG9fc3RyaW5nJDMiLCJvZl9zdHJpbmdfb3B0JDAiLCJjb21wYXJlJDExIiwiZXF1YWwkMTIiLCJ1bnNpZ25lZF9jb21wYXJlIiwibSIsIm1pbiQzIiwibWF4JDMiLCJ1bnNpZ25lZF9kaXYiLCJxIiwidW5zaWduZWRfcmVtIiwic3VjYyQyIiwicHJlZCQyIiwiYWJzJDIiLCJsb2dub3QkMSIsIm1heF9pbnQkMyIsInVuc2lnbmVkX3RvX2ludCQwIiwidG9fc3RyaW5nJDQiLCJvZl9zdHJpbmdfb3B0JDEiLCJjb21wYXJlJDEyIiwiZXF1YWwkMTMiLCJ1bnNpZ25lZF9jb21wYXJlJDAiLCJtaW4kNCIsIm1heCQ0IiwidW5zaWduZWRfZGl2JDAiLCJ1bnNpZ25lZF9yZW0kMCIsInplcm8kMyIsIm9uZSQzIiwibWludXNfb25lJDMiLCJzdWNjJDMiLCJwcmVkJDMiLCJhYnMkMyIsIm1pbl9pbnQkMyIsIm1heF9pbnQkNCIsImxvZ25vdCQyIiwidW5zaWduZWRfdG9faW50JDEiLCJ0b19zdHJpbmckNSIsIm9mX3N0cmluZ19vcHQkMiIsImNvbXBhcmUkMTMiLCJlcXVhbCQxNCIsInVuc2lnbmVkX2NvbXBhcmUkMSIsIm1pbiQ1IiwibWF4JDUiLCJ1bnNpZ25lZF9kaXYkMSIsInVuc2lnbmVkX3JlbSQxIiwiZW5naW5lIiwidGJsIiwic3RhdGUiLCJuZXdfZW5naW5lIiwiZnJvbV9mdW5jdGlvbiIsIm9wdCIsInN0aCIsIndpdGhfcG9zaXRpb25zIiwiYXV4X2J1ZmZlciIsImxleGJ1ZiIsInJlYWQiLCJuZXdsZW4iLCJuZXdidWYiLCJmcm9tX2NoYW5uZWwiLCJmcm9tX3N0cmluZyQwIiwic2V0X3Bvc2l0aW9uIiwicG9zaXRpb24iLCJzZXRfZmlsZW5hbWUiLCJmbmFtZSIsImxleGVtZSIsInN1Yl9sZXhlbWUiLCJzdWJfbGV4ZW1lX29wdCIsInN1Yl9sZXhlbWVfY2hhciIsInN1Yl9sZXhlbWVfY2hhcl9vcHQiLCJsZXhlbWVfY2hhciIsImxleGVtZV9zdGFydCIsImxleGVtZV9lbmQiLCJsZXhlbWVfc3RhcnRfcCIsImxleGVtZV9lbmRfcCIsIm5ld19saW5lIiwibGNwIiwiZmx1c2hfaW5wdXQiLCJlbnYiLCJncm93X3N0YWNrcyIsIm9sZHNpemUiLCJuZXdzaXplIiwibmV3X3MiLCJuZXdfdiIsIm5ld19zdGFydCIsIm5ld19lbmQiLCJjbGVhcl9wYXJzZXIiLCJjdXJyZW50X2xvb2thaGVhZF9mdW4iLCJ5eXBhcnNlIiwidGFibGVzIiwic3RhcnQiLCJsZXhlciIsImluaXRfYXNwIiwiaW5pdF9zcCIsImluaXRfc3RhY2tiYXNlIiwiaW5pdF9zdGF0ZSIsImluaXRfY3Vycl9jaGFyIiwiaW5pdF9sdmFsIiwiaW5pdF9lcnJmbGFnIiwiY21kIiwiYXJnIiwiYXJnJDAiLCJhcmckMSIsImNtZCQwIiwiZXhuIiwiY3Vycl9jaGFyIiwidG9rIiwicGVla192YWwiLCJzeW1ib2xfc3RhcnRfcG9zIiwic3QiLCJlbiIsInN5bWJvbF9lbmRfcG9zIiwicmhzX3N0YXJ0X3BvcyIsInJoc19lbmRfcG9zIiwic3ltYm9sX3N0YXJ0Iiwic3ltYm9sX2VuZCIsInJoc19zdGFydCIsInJoc19lbmQiLCJpc19jdXJyZW50X2xvb2thaGVhZCIsInBhcnNlX2Vycm9yIiwiaGVpZ2h0IiwiaGwiLCJoJDAiLCJociIsImJhbCIsImxyIiwibHYiLCJsbCIsImxyciIsImxydiIsImxybCIsInJyIiwicnYiLCJybCIsInJsciIsInJsdiIsInJsbCIsImFkZCIsInNpbmdsZXRvbiIsImFkZF9taW5fZWxlbWVudCIsImFkZF9tYXhfZWxlbWVudCIsInJoIiwibGgiLCJtaW5fZWx0IiwibWluX2VsdF9vcHQiLCJtYXhfZWx0IiwibWF4X2VsdF9vcHQiLCJyZW1vdmVfbWluX2VsdCIsInIkMCIsInNwbGl0IiwicHJlcyIsInByZXMkMCIsIm1lbSIsInJlbW92ZSIsInVuaW9uIiwicjIiLCJyMiQwIiwicjEkMCIsImludGVyIiwic3BsaXRfYmlzIiwiZGlzam9pbnQiLCJjb25zX2VudW0iLCJzJDEiLCJlJDEiLCJlMiQyIiwiZTEkMiIsImUyJDAiLCJlMSQwIiwiZTIkMSIsImUxJDEiLCJzdWJzZXQiLCJwdiIsImxmIiwibHQiLCJyZiIsInJ0IiwiY2FyZGluYWwiLCJlbGVtZW50c19hdXgiLCJlbGVtZW50cyIsImZpbmRfZmlyc3QiLCJmaW5kX2ZpcnN0X29wdCIsImZpbmRfbGFzdCIsImZpbmRfbGFzdF9vcHQiLCJmaW5kX29wdCIsInRyeV9qb2luIiwidiQxIiwib2ZfbGlzdCIsInN1YiIsImwkMyIsIngwIiwibCQ0IiwieDAkMCIsImwkNSIsIngwJDEiLCJubCIsIm1pZCIsImwkMiIsIng0IiwiYWRkX3NlcSIsIm9mX3NlcSIsInNlcV9vZl9lbnVtIiwic25vY19lbnVtIiwicmV2X3NlcV9vZl9lbnVtIiwidG9fcmV2X3NlcSIsInRvX3NlcV9mcm9tIiwibG93IiwibGQiLCJscmQiLCJyZCIsInJsZCIsImRhdGEiLCJtaW5fYmluZGluZyIsIm1pbl9iaW5kaW5nX29wdCIsIm1heF9iaW5kaW5nIiwibWF4X2JpbmRpbmdfb3B0IiwicmVtb3ZlX21pbl9iaW5kaW5nIiwidXBkYXRlIiwiZGF0YSQwIiwibSQwIiwiYWRkX21pbl9iaW5kaW5nIiwiayIsImFkZF9tYXhfYmluZGluZyIsImNvbmNhdF9vcl9qb2luIiwiZDEiLCJkMiIsImQyJDAiLCJkMSQwIiwiZDIkMSIsImQxJDEiLCJwdmQiLCJmdmQiLCJtJDEiLCJtMSIsIm0yIiwiYmluZGluZ3NfYXV4IiwiYmluZGluZ3MiLCJjcmVhdGUkMCIsImNsZWFyIiwiY29weSQzIiwicHVzaCIsInBvcCIsInBvcF9vcHQiLCJ0b3AiLCJ0b3Bfb3B0IiwiaXNfZW1wdHkkMCIsImxlbmd0aCQyIiwiaXRlciQ3IiwiZm9sZCQyIiwidG9fc2VxJDYiLCJvZl9zZXEkNCIsImNyZWF0ZSQxIiwiY2xlYXIkMCIsImNlbGwiLCJwZWVrIiwiY29udGVudCIsInBlZWtfb3B0IiwidGFrZSQwIiwidGFrZV9vcHQiLCJjb3B5JDQiLCJxX3JlcyIsInByZXYiLCJpc19lbXB0eSQxIiwibGVuZ3RoJDMiLCJpdGVyJDgiLCJmb2xkJDMiLCJ0cmFuc2ZlciIsInExIiwicTIiLCJ0b19zZXEkNyIsImFkZF9zZXEkMCIsIm9mX3NlcSQ1IiwiY291bnQiLCJmaWxsX2J1ZmYiLCJnZXRfZGF0YSIsImQxMSIsImEkMCIsImEkMSIsInBlZWtfZGF0YSIsInBlZWskMCIsImp1bmtfZGF0YSIsImp1bmsiLCJuZ2V0X2RhdGEiLCJhbCIsIm5wZWVrIiwiZW1wdHkkMiIsIml0ZXIkOSIsInN0cm0iLCJmcm9tIiwib2ZfbGlzdCQxIiwib2Zfc3RyaW5nIiwib2ZfYnl0ZXMkMCIsIm9mX2NoYW5uZWwiLCJpYXBwIiwiaWNvbnMiLCJpc2luZyIsImxhcHAiLCJsY29ucyIsImxzaW5nIiwic2VtcHR5Iiwic2xhenkiLCJkdW1wIiwiZHVtcF9kYXRhIiwiY3JlYXRlJDIiLCJjb250ZW50cyIsInRvX2J5dGVzJDAiLCJzdWIkMyIsImJsaXQkMyIsIm50aCQwIiwibGVuZ3RoJDQiLCJjbGVhciQxIiwicmVzZXQiLCJyZXNpemUiLCJtb3JlIiwib2xkX3BvcyIsIm9sZF9sZW4iLCJuZXdfYnVmZmVyIiwiYWRkX2NoYXIiLCJwb3MiLCJ1Y2hhcl91dGZfOF9ieXRlX2xlbmd0aF9tYXgiLCJ1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4IiwiYWRkX3V0Zl84X3VjaGFyIiwiYWRkX3V0Zl8xNmJlX3VjaGFyIiwiYWRkX3V0Zl8xNmxlX3VjaGFyIiwiYWRkX3N1YnN0cmluZyIsIm9mZnNldCIsIm5ld19wb3NpdGlvbiIsImFkZF9zdWJieXRlcyIsImFkZF9zdHJpbmciLCJhZGRfYnl0ZXMiLCJhZGRfYnVmZmVyIiwiYnMiLCJhZGRfY2hhbm5lbCIsImFscmVhZHlfcmVhZCIsInRvX3JlYWQiLCJhbHJlYWR5X3JlYWQkMCIsInRvX3JlYWQkMCIsIm91dHB1dF9idWZmZXIiLCJhZGRfc3Vic3RpdHV0ZSIsImxpbSQxIiwicHJldmlvdXMiLCJjdXJyZW50Iiwib3BlbmluZyIsImxpbSQwIiwic3RvcCIsImskMiIsImskMCIsImskMSIsIm5leHRfaSIsImlkZW50IiwidHJ1bmNhdGUiLCJ0b19zZXEkOCIsInRvX3NlcWkkMyIsImFkZF9zZXEkMSIsIm9mX3NlcSQ2IiwiYWRkX2ludDgiLCJhZGRfaW50MTZfbmUiLCJhZGRfaW50MzJfbmUiLCJhZGRfaW50NjRfbmUiLCJhZGRfaW50MTZfbGUiLCJhZGRfaW50MTZfYmUiLCJhZGRfaW50MzJfbGUiLCJhZGRfaW50MzJfYmUiLCJhZGRfaW50NjRfbGUiLCJhZGRfaW50NjRfYmUiLCJjcmVhdGVfY2hhcl9zZXQiLCJhZGRfaW5fY2hhcl9zZXQiLCJzdHJfaW5kIiwibWFzayIsImZyZWV6ZV9jaGFyX3NldCIsInJldl9jaGFyX3NldCIsImNoYXJfc2V0JDAiLCJpc19pbl9jaGFyX3NldCIsInBhZF9vZl9wYWRfb3B0IiwicGFkX29wdCIsIndpZHRoIiwicGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IiwiZm10IiwicGFkX29wdCQwIiwicGFkX29wdCQxIiwicGFkX29wdCQyIiwicGFkX29wdCQzIiwicGFkX29wdCQ0IiwicHJlY19vcHQiLCJwYWRfb3B0JDUiLCJuZGVjIiwicGFkX29wdCQ2IiwicGFkX29wdCQ3IiwicGFkX29wdCQ4IiwiZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24iLCJidWZmZXJfY3JlYXRlIiwiaW5pdF9zaXplIiwiYnVmZmVyX2NoZWNrX3NpemUiLCJvdmVyaGVhZCIsIm1pbl9sZW4iLCJuZXdfc3RyIiwiYnVmZmVyX2FkZF9jaGFyIiwiYnVmZmVyX2FkZF9zdHJpbmciLCJzdHJfbGVuIiwiYnVmZmVyX2NvbnRlbnRzIiwiY2hhcl9vZl9pY29udiIsImNoYXJfb2ZfZmNvbnYiLCJjRiIsImJwcmludF9wYWR0eSIsInBhZHR5IiwiYnByaW50X2lnbm9yZWRfZmxhZyIsImlnbl9mbGFnIiwiYnByaW50X3BhZF9vcHQiLCJicHJpbnRfcGFkZGluZyIsInBhZHR5JDAiLCJicHJpbnRfcHJlY2lzaW9uIiwiYnByaW50X2ljb252X2ZsYWciLCJicHJpbnRfYWx0aW50X2ZtdCIsImJwcmludF9mY29udl9mbGFnIiwic3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0Iiwic3RyJDAiLCJicHJpbnRfY2hhcl9saXRlcmFsIiwiYnByaW50X3N0cmluZ19saXRlcmFsIiwiYnByaW50X2ZtdHR5Iiwic3ViX2ZtdHR5Iiwic3ViX2ZtdHR5JDAiLCJpbnRfb2ZfY3VzdG9tX2FyaXR5Iiwic3RyaW5nX29mX2ZtdCIsImZtdGl0ZXIiLCJmbXQkMCIsImlnbl9mbGFnJDAiLCJjaHIkMCIsInN0ciQxIiwiaXNfYWxvbmUkMCIsImlzX2Fsb25lIiwiYWZ0ZXIiLCJiZWZvcmUiLCJqJDAiLCJqJDEiLCJmbXQkMSIsInN5bW0iLCJmbXR0eV9yZWxfZGV0IiwiZGUiLCJlZCIsImFmIiwiZmEiLCJkZSQwIiwiZWQkMCIsImFmJDAiLCJmYSQwIiwiZGUkMSIsImVkJDEiLCJhZiQxIiwiZmEkMSIsImRlJDIiLCJlZCQyIiwiYWYkMiIsImZhJDIiLCJkZSQzIiwiZWQkMyIsImFmJDMiLCJmYSQzIiwiZGUkNCIsImVkJDQiLCJhZiQ0IiwiZmEkNCIsImRlJDUiLCJlZCQ1IiwiYWYkNSIsImZhJDUiLCJkZSQ2IiwiZWQkNiIsImFmJDYiLCJmYSQ2IiwiZGUkNyIsImVkJDciLCJhZiQ3IiwiZmEkNyIsImRlJDgiLCJlZCQ4IiwiYWYkOCIsImZhJDgiLCJ0cmFucyIsImpkIiwiZGoiLCJnYSIsImFnIiwiZGUkOSIsImVkJDkiLCJhZiQ5IiwiZmEkOSIsImRlJDEwIiwiZWQkMTAiLCJhZiQxMCIsImZhJDEwIiwiZGUkMTEiLCJlZCQxMSIsImFmJDExIiwiZmEkMTEiLCJkZSQxMiIsImVkJDEyIiwiYWYkMTIiLCJmYSQxMiIsImRlJDEzIiwiZWQkMTMiLCJhZiQxMyIsImZhJDEzIiwicmVzdDIiLCJyZXN0MiQwIiwicmVzdDIkMSIsInJlc3QyJDIiLCJyZXN0MiQzIiwicmVzdDIkNCIsInJlc3QyJDUiLCJyZXN0MiQ2IiwicmVzdDIkNyIsInR5MiQwIiwicmVzdDIkOCIsInR5MjIiLCJ0eTIxIiwiZjQiLCJmMiIsInJlc3QyJDkiLCJyZXN0MiQxMCIsInJlc3QyJDExIiwicmVzdDIkMTIiLCJyZXN0MiQxMyIsImZtdHR5X29mX3BhZGRpbmdfZm10dHkiLCJmbXR0eV9vZl9jdXN0b20iLCJhcml0eSQwIiwiZm10dHlfb2ZfZm10IiwidHlfcmVzdCIsInByZWNfdHkiLCJmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkiLCJ0eV9yZXN0JDAiLCJwcmVjX3R5JDAiLCJ0eV9yZXN0JDEiLCJwcmVjX3R5JDEiLCJ0eV9yZXN0JDIiLCJwcmVjX3R5JDIiLCJ0eV9yZXN0JDMiLCJwcmVjX3R5JDMiLCJmbXR0eSQxIiwiZm10dHkkMiIsImZtdHR5JDMiLCJ0eSQwIiwiZm10dHkkNCIsImZtdHR5JDUiLCJ0eXBlX3BhZGRpbmciLCJ3IiwidHlwZV9wYWRwcmVjIiwidHlwZV9mb3JtYXQiLCJ0eXBlX2Zvcm1hdF9nZW4iLCJ0eXBlX2lnbm9yZWRfcGFyYW1fb25lIiwiZm10dHlfcmVzdCIsImZtdF9yZXN0IiwiZm10dHlfcmVzdCQwIiwiZm10X3Jlc3QkMCIsImZtdF9yZXN0JDEiLCJmbXR0eV9yZXN0JDEiLCJmbXQkMiIsImZtdF9yZXN0JDIiLCJmbXR0eV9yZXN0JDIiLCJmbXQkMyIsImZtdF9yZXN0JDMiLCJmbXR0eV9yZXN0JDMiLCJmbXQkNCIsImZtdF9yZXN0JDQiLCJmbXR0eV9yZXN0JDQiLCJmbXQkNSIsImZtdF9yZXN0JDUiLCJmbXR0eV9yZXN0JDUiLCJwcmVjJDQiLCJmbXR0eSQ2IiwiZm10JDYiLCJmbXRfcmVzdCQ2IiwicHJlYyQ1IiwiZm10dHlfcmVzdCQ2IiwicHJlYyQ2IiwiZm10dHkkNyIsImZtdCQ3IiwiZm10X3Jlc3QkNyIsInByZWMkNyIsImZtdHR5X3Jlc3QkNyIsInByZWMkOCIsImZtdHR5JDgiLCJmbXQkOCIsImZtdF9yZXN0JDgiLCJmbXR0eV9yZXN0JDgiLCJmbXR0eSQ5IiwiZm10JDkiLCJmbXRfcmVzdCQ5IiwiZm10dHkkMTAiLCJmbXQkMTAiLCJmbXRfcmVzdCQxMCIsImZtdHR5JDExIiwiZm10JDExIiwiZm10X3Jlc3QkMTEiLCJmbXR0eSQxMiIsImZtdCQxMiIsImZtdHR5X3Jlc3QkOSIsImZtdF9yZXN0JDEyIiwiZm10dHkkMTMiLCJmbXQkMTMiLCJmbXR0eV9yZXN0JDEwIiwic3ViX2ZtdHR5MSIsImZtdF9yZXN0JDEzIiwic3ViX2ZtdHR5JDEiLCJmbXR0eSQxNCIsImZtdCQxNCIsImZtdHR5X3Jlc3QkMTEiLCJmbXRfcmVzdCQxNCIsImZtdHR5JDE1IiwiZm10JDE1IiwiZm10dHlfcmVzdCQxMiIsImZtdF9yZXN0JDE1IiwiZm10dHkkMTYiLCJmbXQkMTYiLCJmbXRfcmVzdCQxNiIsImZtdHR5JDE3IiwiZm10JDE3IiwiZm10X3Jlc3QkMTciLCJmb3JtYXR0aW5nX2dlbiIsImZtdHR5MyIsImZtdDMiLCJmbXQxJDAiLCJmbXR0eTIkMCIsImZtdDIkMCIsImZtdHR5MyQwIiwiZm10MyQwIiwiZm10dHlfcmVzdCQxMyIsImZtdF9yZXN0JDE4IiwiZm10dHkkMTgiLCJmbXQkMTgiLCJmbXR0eV9yZXN0JDE0IiwiZm10X3Jlc3QkMTkiLCJmbXR0eSQxOSIsImZtdCQxOSIsImZtdHR5X3Jlc3QkMTUiLCJmbXRfcmVzdCQyMCIsImZtdHR5JDIwIiwiZm10JDIwIiwiZm10dHlfcmVzdCQxNiIsImZtdHR5JDIxIiwiZm10JDIxIiwic3ViX2ZtdHR5JDIiLCJzdWJfZm10dHkkMyIsInR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aSIsImZtdHR5JDIyIiwiZm10JDIyIiwic3ViX2ZtdHR5JDQiLCJzdWJfZm10dHlfcmVzdCIsInN1Yl9mbXR0eV9yZXN0JDAiLCJzdWJfZm10dHlfcmVzdCQxIiwic3ViX2ZtdHR5X3Jlc3QkMiIsInN1Yl9mbXR0eV9yZXN0JDMiLCJzdWJfZm10dHlfcmVzdCQ0Iiwic3ViX2ZtdHR5X3Jlc3QkNSIsInN1Yl9mbXR0eV9yZXN0JDYiLCJzdWJfZm10dHlfcmVzdCQ3Iiwic3ViX2ZtdHR5X3Jlc3QkOCIsInN1Yl9mbXR0eV9yZXN0JDkiLCJzdWJfZm10dHlfcmVzdCQxMCIsInN1Yl9mbXR0eV9yZXN0JDExIiwic3ViX2ZtdHR5X3Jlc3QkMTIiLCJzdWJfZm10dHlfcmVzdCQxMyIsInN1Yl9mbXR0eV9yZXN0JDE0Iiwic3ViMl9mbXR0eSIsInN1Yl9mbXR0eV9yZXN0JDE1Iiwic3ViMl9mbXR0eSQwIiwic3ViX2ZtdHR5X3Jlc3QkMTYiLCJzdWIyX2ZtdHR5JDEiLCJzdWIxX2ZtdHR5Iiwic3ViX2ZtdHR5X3Jlc3QkMTciLCJzdWIyX2ZtdHR5JDIiLCJzdWIxX2ZtdHR5JDAiLCJzdWJfZm10dHlfcmVzdCQxOCIsInN1Yl9mbXR0eV9yZXN0JDE5Iiwic3ViX2ZtdHR5X3Jlc3QkMjAiLCJzdWJfZm10dHlfcmVzdCQyMSIsInN1Yl9mbXR0eV9yZXN0JDIyIiwic3ViX2ZtdHR5X3Jlc3QkMjMiLCJzdWJfZm10dHlfcmVzdCQyNCIsInN1Yl9mbXR0eV9yZXN0JDI1Iiwic3ViX2ZtdHR5X3Jlc3QkMjYiLCJyZWNhc3QiLCJmaXhfcGFkZGluZyIsIndpZHRoJDAiLCJmaXhfaW50X3ByZWNpc2lvbiIsInJlcyQxIiwic3RyaW5nX3RvX2NhbWxfc3RyaW5nIiwiZm9ybWF0X29mX2Zjb252Iiwic3ltYiIsInRyYW5zZm9ybV9pbnRfYWx0IiwiZGlnaXRzIiwicHV0IiwiY29udmVydF9pbnQiLCJjb252ZXJ0X2ludDMyIiwiY29udmVydF9uYXRpdmVpbnQiLCJjb252ZXJ0X2ludDY0IiwiY29udmVydF9mbG9hdCIsImhleCIsInNpZ24iLCJjYW1sX3NwZWNpYWxfdmFsIiwic3RyaW5nX29mX2ZtdHR5IiwibWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24iLCJtYWtlX3ByaW50ZiIsInAkMCIsInAkMSIsIm1ha2VfcGFkZGluZyIsIm5ld19hY2MiLCJtYWtlX3ByaW50ZiQwIiwiYWNjJDMiLCJhY2MkNCIsImskMyIsImthY2MiLCJrJDQiLCJtYWtlX2lnbm9yZWRfcGFyYW0kMCIsIm1ha2VfY3VzdG9tJDAiLCJtYWtlX2ludmFsaWRfYXJnIiwibWFrZV9mcm9tX2ZtdHR5JDAiLCJtYWtlX2Zyb21fZm10dHkiLCJtYWtlX2N1c3RvbSIsIm1ha2VfaWdub3JlZF9wYXJhbSIsImZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIiwibWFrZV9pcHJpbnRmIiwibWFrZV9pcHJpbnRmJDAiLCJrb2MiLCJyZXN0JDI0IiwicmVzdCQyNSIsImZuX29mX2N1c3RvbV9hcml0eSQwIiwiZm5fb2ZfY3VzdG9tX2FyaXR5Iiwib3V0cHV0X2FjYyIsInAkMiIsInAkMyIsInAkNCIsImJ1ZnB1dF9hY2MiLCJzdHJwdXRfYWNjIiwiZmFpbHdpdGhfbWVzc2FnZSIsIm9wZW5fYm94X29mX3N0cmluZyIsImludmFsaWRfYm94IiwicGFyc2Vfc3BhY2VzIiwicGFyc2VfbHdvcmQiLCJwYXJzZV9pbnQiLCJ3c3RhcnQiLCJ3ZW5kIiwiYm94X25hbWUiLCJuc3RhcnQiLCJuZW5kIiwiaW5kZW50IiwiZXhwX2VuZCIsImJveF90eXBlIiwibWFrZV9wYWRkaW5nX2ZtdF9lYmIiLCJtYWtlX3BhZHByZWNfZm10X2ViYiIsImZtdF9lYmJfb2Zfc3RyaW5nIiwibGVnYWN5X2JlaGF2aW9yIiwiZmxhZyIsImxlZ2FjeV9iZWhhdmlvciQwIiwiaW52YWxpZF9mb3JtYXRfbWVzc2FnZSIsInVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCIsImVuZF9pbmQiLCJpbnZhbGlkX2Zvcm1hdF93aXRob3V0IiwiZXhwZWN0ZWRfY2hhcmFjdGVyIiwiZXhwZWN0ZWQiLCJhZGRfbGl0ZXJhbCIsImxpdF9zdGFydCIsInNpemUiLCJwYXJzZSIsInN0cl9pbmQkMiIsInBhcnNlX2ZsYWdzIiwic3RyX2luZCQwIiwicGFyc2VfdGFnIiwicGFyc2VfZ29vZF9icmVhayIsInBhcnNlX21hZ2ljX3NpemUiLCJzdHJfaW5kJDEiLCJwYXJzZV9jb252ZXJzaW9uIiwicGN0X2luZCIsInBsdXMiLCJzcGFjZSIsInBhZHByZWMiLCJwbHVzX3VzZWQiLCJoYXNoX3VzZWQiLCJzcGFjZV91c2VkIiwiaWduX3VzZWQiLCJwYWRfdXNlZCIsInByZWNfdXNlZCIsImdldF9wbHVzIiwiZ2V0X2hhc2giLCJnZXRfc3BhY2UiLCJnZXRfaWduIiwiZ2V0X3BhZCIsImdldF9wcmVjIiwiZ2V0X3BhZHByZWMiLCJnZXRfaW50X3BhZCIsImluY29tcGF0aWJsZV9mbGFnIiwiY2hlY2tfbm9fMCIsIm9wdF9vZl9wYWQiLCJ3aWR0aCQxIiwiZ2V0X3BhZF9vcHQiLCJnZXRfcGFkcHJlY19vcHQiLCJmbXRfcmVzdWx0Iiwic3ViX2VuZCIsInNlYXJjaF9zdWJmb3JtYXRfZW5kIiwic3ViX2ZtdCIsImlnbm9yZWQkMiIsImNvdW50ZXIkMCIsImlnbm9yZWQkNiIsImlnbm9yZWQkNyIsImFkZF9yYW5nZSIsImZhaWxfc2luZ2xlX3BlcmNlbnQiLCJwYXJzZV9jaGFyX3NldF9jb250ZW50IiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciQwIiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciIsInJldmVyc2UiLCJuZXh0X2luZCIsImNoYXJfc2V0JDEiLCJpZ25vcmVkJDkiLCJjaGFyX2Zvcm1hdCIsImZtdF9yZXN0JDIxIiwiZm10X3Jlc3QkMjIiLCJwYWQkOSIsImZtdF9yZXN0JDIzIiwiaWdub3JlZCQxMCIsImZtdF9yZXN0JDI0IiwicGFkJDEwIiwiZm10X3Jlc3QkMjUiLCJzdWJfZW5kJDAiLCJzdWJfZm10JDAiLCJmbXRfcmVzdCQyNiIsImlnbm9yZWQkMTEiLCJpZ25vcmVkJDMiLCJzeW1iJDAiLCJpZ25vcmVkJDUiLCJjb21wdXRlX2ludF9jb252IiwiaWdub3JlZCQ4Iiwic3BhY2UkMSIsImhhc2gkMSIsInBsdXMkMiIsImtpbmQiLCJpZ25vcmVkJDQiLCJpZ25vcmVkIiwiaWdub3JlZCQwIiwiaWdub3JlZCQxIiwicGx1cyQwIiwic3BhY2UkMCIsInBsdXMkMSIsImlnbiQwIiwicGFyc2VfYWZ0ZXJfcHJlY2lzaW9uIiwibWludXMiLCJwYXJzZV9jb252IiwicGFyc2VfYWZ0ZXJfcGFkZGluZyIsInBhcnNlX2xpdGVyYWwiLCJwYXJzZV9wb3NpdGl2ZSIsIm5ld19pbmQiLCJtaW51cyQwIiwic2V0X2ZsYWciLCJzdHJfaW5kJDMiLCJzdHJfaW5kJDQiLCJzdHJfaW5kJDUiLCJpc19vcGVuX3RhZyIsImluZCIsInN1Yl9zdHIiLCJzdWJfZm9ybWF0JDAiLCJmb3JtYXR0aW5nJDAiLCJmb3JtYXR0aW5nIiwic3RyX2luZF8xIiwicGFyc2VfaW50ZWdlciIsInN0cl9pbmRfMiIsInN0cl9pbmRfMyIsImZvcm1hdHRpbmdfbGl0JDAiLCJzdHJfaW5kXzQiLCJzdHJfaW5kXzUiLCJzdWJfZW5kJDEiLCJzdWJfZW5kJDIiLCJzdHJfaW5kJDYiLCJzdHJfaW5kJDciLCJvcHRpb24iLCJzdWJmbXQiLCJmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5IiwiZm9ybWF0X29mX3N0cmluZ19mb3JtYXQiLCJrZnByaW50ZiIsImticHJpbnRmIiwiaWtmcHJpbnRmIiwiZnByaW50ZiIsImJwcmludGYiLCJpZnByaW50ZiIsImlicHJpbnRmIiwicHJpbnRmIiwiZXByaW50ZiIsImtzcHJpbnRmIiwic3ByaW50ZiIsImFzc29jMyIsInkyIiwieTEiLCJzcGxpdCQxIiwibWFrZV9zeW1saXN0IiwiaGVscF9hY3Rpb24iLCJhZGRfaGVscCIsInNwZWNsaXN0IiwiYWRkMiIsInVzYWdlX2IiLCJlcnJtc2ciLCJkb2MiLCJzcGVjIiwia2V5IiwidXNhZ2Vfc3RyaW5nIiwidXNhZ2UiLCJib29sX29mX3N0cmluZ19vcHQkMCIsImludF9vZl9zdHJpbmdfb3B0JDAiLCJmbG9hdF9vZl9zdHJpbmdfb3B0IiwicGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfIiwiYWxsb3dfZXhwYW5kIiwiYXJndiIsImFub25mdW4iLCJpbml0cG9zIiwiY29udmVydF9lcnJvciIsInByb2duYW1lIiwiZm9sbG93JDAiLCJrZXl3b3JkIiwibm9fYXJnJDAiLCJmb2xsb3ciLCJub19hcmciLCJnZXRfYXJnJDAiLCJnZXRfYXJnIiwiY29uc3VtZV9hcmckMCIsImNvbnN1bWVfYXJnIiwidHJlYXRfYWN0aW9uJDAiLCJ0cmVhdF9hY3Rpb24iLCJmJDAiLCJmJDEiLCJyJDEiLCJmJDIiLCJyJDIiLCJhcmckMiIsImYkMyIsImFyZyQzIiwieCQxIiwiciQzIiwiYXJnJDQiLCJ4JDIiLCJzcGVjcyIsImYkNCIsImFyZyQ1IiwiZiQ1IiwiZiQ2IiwiZiQ3IiwiYXJnJDYiLCJuZXdhcmciLCJwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pYyIsInBhcnNlX2FyZ3ZfZHluYW1pYyIsImN1cnJlbnQkMCIsInBhcnNlX2FyZ3YiLCJtc2ckMCIsIm1zZyQxIiwicGFyc2VfZHluYW1pYyIsInBhcnNlX2V4cGFuZCIsInNlY29uZF93b3JkIiwibG9vcCIsIm1heF9hcmdfbGVuIiwia3dkIiwicmVwbGFjZV9sZWFkaW5nX3RhYiIsImFsaWduIiwibGltaXQiLCJjb21wbGV0ZWQiLCJrc2QiLCJjdXRjb2wkMCIsInNwYWNlcyQwIiwiY3V0Y29sIiwia3dkX2xlbiIsInNwYWNlcyIsInJlYWRfYXV4IiwidHJpbSIsImZpbGUiLCJ3b3JkcyIsInN0YXNoIiwid29yZCIsInJlYWRfYXJnIiwicmVhZF9hcmcwIiwid3JpdGVfYXV4IiwiYXJncyIsIndyaXRlX2FyZyIsIndyaXRlX2FyZzAiLCJwcmludGVycyIsImZpZWxkIiwib3RoZXJfZmllbGRzIiwidXNlX3ByaW50ZXJzIiwiY29udiIsInRvX3N0cmluZ19kZWZhdWx0IiwiY2hhciQwIiwibGluZSIsImNoYXIkMSIsImxpbmUkMCIsImZpbGUkMCIsImNoYXIkMiIsImxpbmUkMSIsImZpbGUkMSIsImNvbnN0cnVjdG9yIiwidG9fc3RyaW5nJDYiLCJwcmludCIsImZjdCIsImNhdGNoJDAiLCJyYXdfYmFja3RyYWNlX2VudHJpZXMiLCJidCIsImNvbnZlcnRfcmF3X2JhY2t0cmFjZSIsImZvcm1hdF9iYWNrdHJhY2Vfc2xvdCIsImlzX3JhaXNlIiwicHJpbnRfcmF3X2JhY2t0cmFjZSIsIm91dGNoYW4iLCJyYXdfYmFja3RyYWNlIiwiYmFja3RyYWNlIiwicHJpbnRfYmFja3RyYWNlIiwicmF3X2JhY2t0cmFjZV90b19zdHJpbmciLCJiYWNrdHJhY2Vfc2xvdF9pc19yYWlzZSIsImJhY2t0cmFjZV9zbG90X2lzX2lubGluZSIsImJhY2t0cmFjZV9zbG90X2xvY2F0aW9uIiwiYmFja3RyYWNlX3Nsb3RfZGVmbmFtZSIsImJhY2t0cmFjZV9zbG90cyIsImJhY2t0cmFjZV9zbG90c19vZl9yYXdfZW50cnkiLCJlbnRyeSIsInJhd19iYWNrdHJhY2VfbGVuZ3RoIiwiZ2V0X2JhY2t0cmFjZSIsInJlZ2lzdGVyX3ByaW50ZXIiLCJmbiIsIm9sZF9wcmludGVycyIsIm5ld19wcmludGVycyIsImV4bl9zbG90IiwiZXhuX3Nsb3RfaWQiLCJleG5fc2xvdF9uYW1lIiwiZXJyb3JzIiwiZGVmYXVsdF91bmNhdWdodF9leGNlcHRpb25faGFuIiwic3RhdHVzIiwidW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIiLCJzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIiLCJlbXB0eV9iYWNrdHJhY2UiLCJoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uIiwiZGVidWdnZXJfaW5fdXNlIiwiZXhuJDAiLCJyYXdfYmFja3RyYWNlJDAiLCJjb25zdCQwIiwiZmxpcCIsIm5lZ2F0ZSIsInByb3RlY3QiLCJmaW5hbGx5JDAiLCJ3b3JrIiwiZmluYWxseV9ub19leG4iLCJ3b3JrX2V4biIsIndvcmtfYnQiLCJwcmludF9zdGF0IiwiYWxsb2NhdGVkX2J5dGVzIiwibWEiLCJwcm8iLCJtaSIsImNyZWF0ZV9hbGFybSIsImRlbGV0ZV9hbGFybSIsIm51bGxfdHJhY2tlciIsInNhbXBsaW5nX3JhdGUiLCJ0cmFja2VyIiwiY2FsbHN0YWNrX3NpemUiLCJzdHJpbmciLCJieXRlcyIsInN1YnN0cmluZyIsInN1YmJ5dGVzIiwiZmlsZW5hbWUiLCJvdXRwdXQkMCIsImRpZ2VzdCIsImlucHV0JDAiLCJjaGFyX2hleCIsInRvX2hleCIsImZyb21faGV4IiwiZGlnaXQiLCJuZXdfc3RhdGUiLCJhc3NpZ24iLCJzdDEiLCJzdDIiLCJmdWxsX2luaXQiLCJzZWVkIiwic2VlZCQwIiwibWFrZSQzIiwibWFrZV9zZWxmX2luaXQiLCJjb3B5JDUiLCJiaXRzIiwiY3VydmFsIiwibmV3dmFsIiwibmV3dmFsMzAiLCJpbnRhdXgiLCJpbnQkMCIsImJvdW5kIiwiZnVsbF9pbnQiLCJicG9zIiwiYnBvcyQwIiwiaW50MzIiLCJpbnQ2NCIsIm5hdGl2ZWludCIsImZsb2F0JDAiLCJib29sIiwiYml0czMyIiwiYml0czY0IiwibmF0aXZlYml0cyIsImJpdHMkMCIsImludCQxIiwiZnVsbF9pbnQkMCIsImludDMyJDAiLCJuYXRpdmVpbnQkMCIsImludDY0JDAiLCJmbG9hdCQxIiwic2NhbGUiLCJib29sJDAiLCJiaXRzMzIkMCIsImJpdHM2NCQwIiwibmF0aXZlYml0cyQwIiwiZnVsbF9pbml0JDAiLCJpbml0JDUiLCJzZWxmX2luaXQiLCJnZXRfc3RhdGUiLCJzZXRfc3RhdGUiLCJvbmdvaW5nX3RyYXZlcnNhbCIsImZsaXBfb25nb2luZ190cmF2ZXJzYWwiLCJwYXJhbXMiLCJyYW5kb21pemVkX2RlZmF1bHQiLCJyYW5kb21pemVkIiwicmFuZG9taXplIiwiaXNfcmFuZG9taXplZCIsInBybmciLCJwb3dlcl8yX2Fib3ZlIiwiY3JlYXRlJDMiLCJpbml0aWFsX3NpemUiLCJyYW5kb20iLCJjbGVhciQyIiwicmVzZXQkMCIsImNvcHlfYnVja2V0bGlzdCIsImtleSQwIiwibmV4dCQwIiwiY29weSQ2IiwibGVuZ3RoJDUiLCJpbnNlcnRfYWxsX2J1Y2tldHMiLCJpbmRleGZ1biIsImlucGxhY2UiLCJvZGF0YSIsIm5kYXRhIiwibnNpemUiLCJuZGF0YV90YWlsIiwiY2VsbCQwIiwibmlkeCIsIm1hdGNoIiwibWF0Y2gkMCIsInJlc2l6ZSQwIiwib3NpemUiLCJpdGVyJDEwIiwiZG9fYnVja2V0Iiwib2xkX3RyYXYiLCJmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IiwiZmlsdGVyX21hcF9pbnBsYWNlIiwiZm9sZCQ0IiwiYiQwIiwiYnVja2V0X2xlbmd0aCIsInN0YXRzIiwibWJsIiwiaGlzdG8iLCJ0b19zZXEkOSIsInRibF9kYXRhIiwiYnVjayIsImJ1Y2skMCIsImJ1Y2skMSIsInRvX3NlcV9rZXlzIiwidG9fc2VxX3ZhbHVlcyIsImtleV9pbmRleCIsImJ1Y2tldCIsImsxIiwibmV4dDEiLCJrMiIsIm5leHQyIiwiazMiLCJkMyIsIm5leHQzIiwiZmluZF9hbGwiLCJmaW5kX2luX2J1Y2tldCIsInJlcGxhY2UiLCJyZXBsYWNlX3NlcSIsImNvcHkiLCJzeiIsImhhc2hfcGFyYW0iLCJzZWVkZWRfaGFzaCIsImFkZCQwIiwiZmluZCQxIiwiZmluZF9vcHQkMSIsImZpbmRfYWxsJDAiLCJtZW0kMiIsImFkZF9zZXEkMiIsIm9mX3NlcSQ3IiwicmVidWlsZCIsIndlYWtfY3JlYXRlIiwibGVuZ3RoJDYiLCJyYWlzZV9pZl9pbnZhbGlkX29mZnNldCQwIiwic2V0JDEiLCJnZXQkMiIsImdldF9jb3B5IiwiY2hlY2skMCIsImJsaXQkNCIsImZpbGwkMiIsImFyIiwiZW1wdHlidWNrZXQiLCJnZXRfaW5kZXgiLCJzeiQwIiwic3okMSIsImNvdW50X2J1Y2tldCIsImFkZF9hdXgiLCJzZXR0ZXIiLCJpbmRleCIsImJ1Y2tldCQwIiwiaGFzaGVzIiwibmV3c3oiLCJuZXdidWNrZXQkMCIsIm5ld2hhc2hlcyIsImhidWNrZXQiLCJwcmV2X2xlbiIsImxpdmUiLCJqJDIiLCJuZXdidWNrZXQiLCJuZXd0Iiwib2IiLCJvaCIsInNldHRlciQwIiwibmkiLCJmaW5kX29yIiwiaWZub3Rmb3VuZCIsImZpbmRfc2hhZG93IiwiaWZmb3VuZCIsImxlbnMiLCJ0b3RsZW4iLCJpZCQwIiwidW5rbm93biIsInBwX2VucXVldWUiLCJ0b2tlbiIsInBwX2luZmluaXR5IiwicHBfb3V0cHV0X3N0cmluZyIsInBwX291dHB1dF9uZXdsaW5lIiwiZm9ybWF0X3BwX3RleHQiLCJ0ZXh0IiwiZm9ybWF0X3N0cmluZyIsImJyZWFrX25ld19saW5lIiwicmVhbF9pbmRlbnQiLCJicmVha19saW5lIiwiYnJlYWtfc2FtZV9saW5lIiwiZm9ybWF0X3BwX3Rva2VuIiwic2l6ZSQwIiwidGFicyIsImFkZF90YWIiLCJscyIsInRhZ19uYW1lIiwibWFya2VyIiwiYnJlYWtzIiwiZml0cyIsIm9mZiIsImJveF90eXBlJDAiLCJvZmYkMCIsImluc2VydGlvbl9wb2ludCIsInRhYnMkMCIsImZpcnN0IiwiaGVhZCIsInRhYiIsIm9mZiQxIiwiaW5zZXJ0aW9uX3BvaW50JDAiLCJ3aWR0aCQyIiwiYm94X3R5cGUkMSIsInRib3giLCJ0YWdfbmFtZSQwIiwibWFya2VyJDAiLCJhZHZhbmNlX2xlZnQiLCJwZW5kaW5nX2NvdW50IiwiZW5xdWV1ZV9hZHZhbmNlIiwiZW5xdWV1ZV9zdHJpbmdfYXMiLCJpbml0aWFsaXplX3NjYW5fc3RhY2siLCJzdGFjayIsInF1ZXVlX2VsZW0iLCJzZXRfc2l6ZSIsImxlZnRfdG90YWwiLCJzY2FuX3B1c2giLCJlbGVtIiwicHBfb3Blbl9ib3hfZ2VuIiwiYnJfdHkiLCJwcF9jbG9zZV9ib3giLCJwcF9vcGVuX3N0YWciLCJwcF9jbG9zZV9zdGFnIiwicHBfb3Blbl90YWciLCJwcF9jbG9zZV90YWciLCJwcF9zZXRfcHJpbnRfdGFncyIsInBwX3NldF9tYXJrX3RhZ3MiLCJwcF9nZXRfcHJpbnRfdGFncyIsInBwX2dldF9tYXJrX3RhZ3MiLCJwcF9zZXRfdGFncyIsInBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbiIsInBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbiIsInBjdCIsInBvdCIsIm1jdCIsIm1vdCIsInBwX3Jpbml0IiwicHBfZmx1c2hfcXVldWUiLCJwcF9wcmludF9hc19zaXplIiwicHBfcHJpbnRfYXMiLCJpc2l6ZSIsInBwX3ByaW50X3N0cmluZyIsInBwX3ByaW50X2J5dGVzIiwicHBfcHJpbnRfaW50IiwicHBfcHJpbnRfZmxvYXQiLCJwcF9wcmludF9ib29sIiwicHBfcHJpbnRfY2hhciIsInBwX29wZW5faGJveCIsInBwX29wZW5fdmJveCIsInBwX29wZW5faHZib3giLCJwcF9vcGVuX2hvdmJveCIsInBwX29wZW5fYm94IiwicHBfcHJpbnRfbmV3bGluZSIsInBwX3ByaW50X2ZsdXNoIiwicHBfZm9yY2VfbmV3bGluZSIsInBwX3ByaW50X2lmX25ld2xpbmUiLCJwcF9wcmludF9jdXN0b21fYnJlYWsiLCJwcF9wcmludF9icmVhayIsInBwX3ByaW50X3NwYWNlIiwicHBfcHJpbnRfY3V0IiwicHBfb3Blbl90Ym94IiwicHBfY2xvc2VfdGJveCIsInBwX3ByaW50X3RicmVhayIsInBwX3ByaW50X3RhYiIsInBwX3NldF90YWIiLCJwcF9zZXRfbWF4X2JveGVzIiwicHBfZ2V0X21heF9ib3hlcyIsInBwX292ZXJfbWF4X2JveGVzIiwicHBfc2V0X2VsbGlwc2lzX3RleHQiLCJwcF9nZXRfZWxsaXBzaXNfdGV4dCIsInBwX2xpbWl0IiwicHBfc2V0X21heF9pbmRlbnQiLCJwcF9nZXRfbWF4X2luZGVudCIsInBwX3NldF9tYXJnaW4iLCJuZXdfbWF4X2luZGVudCIsInZhbGlkYXRlX2dlb21ldHJ5IiwibWFyZ2luIiwibWF4X2luZGVudCIsImNoZWNrX2dlb21ldHJ5IiwiZ2VvbWV0cnkiLCJwcF9nZXRfbWFyZ2luIiwicHBfc2V0X2Z1bGxfZ2VvbWV0cnkiLCJwcF9zZXRfZ2VvbWV0cnkiLCJwcF9zYWZlX3NldF9nZW9tZXRyeSIsInBwX2dldF9nZW9tZXRyeSIsInBwX3VwZGF0ZV9nZW9tZXRyeSIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsInBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsImRpc3BsYXlfbmV3bGluZSIsImJsYW5rX2xpbmUiLCJkaXNwbGF5X2luZGVudCIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwiLCJkZWZhdWx0X3BwX21hcmtfb3Blbl90YWciLCJkZWZhdWx0X3BwX21hcmtfY2xvc2VfdGFnIiwiZGVmYXVsdF9wcF9wcmludF9vcGVuX3RhZyIsImRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnIiwicHBfbWFrZV9mb3JtYXR0ZXIiLCJwcF9xdWV1ZSIsInN5c190b2siLCJzY2FuX3N0YWNrIiwiZm9ybWF0dGVyX29mX291dF9mdW5jdGlvbnMiLCJvdXRfZnVucyIsIm1ha2VfZm9ybWF0dGVyIiwicHBmIiwiZm9ybWF0dGVyX29mX291dF9jaGFubmVsIiwiZm9ybWF0dGVyX29mX2J1ZmZlciIsInBwX2J1ZmZlcl9zaXplIiwicHBfbWFrZV9idWZmZXIiLCJzdGRidWYiLCJzdGRfZm9ybWF0dGVyIiwiZXJyX2Zvcm1hdHRlciIsInN0cl9mb3JtYXR0ZXIiLCJmbHVzaF9idWZmZXJfZm9ybWF0dGVyIiwiZmx1c2hfc3RyX2Zvcm1hdHRlciIsIm1ha2Vfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsImNsZWFyX3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJzb2IiLCJnZXRfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsImZsdXNoX3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJpdGVtcyIsImFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSIsIml0ZW0iLCJmb3JtYXR0ZXJfb2Zfc3ltYm9saWNfb3V0cHV0X2IiLCJvcGVuX2hib3giLCJvcGVuX3Zib3giLCJvcGVuX2h2Ym94Iiwib3Blbl9ob3Zib3giLCJvcGVuX2JveCIsImNsb3NlX2JveCIsIm9wZW5fdGFnIiwiY2xvc2VfdGFnIiwib3Blbl9zdGFnIiwiY2xvc2Vfc3RhZyIsInByaW50X2FzIiwicHJpbnRfc3RyaW5nJDAiLCJwcmludF9ieXRlcyQwIiwicHJpbnRfaW50JDAiLCJwcmludF9mbG9hdCQwIiwicHJpbnRfY2hhciQwIiwicHJpbnRfYm9vbCIsInByaW50X2JyZWFrIiwicHJpbnRfY3V0IiwicHJpbnRfc3BhY2UiLCJmb3JjZV9uZXdsaW5lIiwicHJpbnRfZmx1c2giLCJwcmludF9uZXdsaW5lJDAiLCJwcmludF9pZl9uZXdsaW5lIiwib3Blbl90Ym94IiwiY2xvc2VfdGJveCIsInByaW50X3RicmVhayIsInNldF90YWIiLCJwcmludF90YWIiLCJzZXRfbWFyZ2luIiwiZ2V0X21hcmdpbiIsInNldF9tYXhfaW5kZW50IiwiZ2V0X21heF9pbmRlbnQiLCJzZXRfZ2VvbWV0cnkiLCJzYWZlX3NldF9nZW9tZXRyeSIsImdldF9nZW9tZXRyeSIsInVwZGF0ZV9nZW9tZXRyeSIsInNldF9tYXhfYm94ZXMiLCJnZXRfbWF4X2JveGVzIiwib3Zlcl9tYXhfYm94ZXMiLCJzZXRfZWxsaXBzaXNfdGV4dCIsImdldF9lbGxpcHNpc190ZXh0Iiwic2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCIsInNldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMiLCJnZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIiwic2V0X3ByaW50X3RhZ3MiLCJnZXRfcHJpbnRfdGFncyIsInNldF9tYXJrX3RhZ3MiLCJnZXRfbWFya190YWdzIiwic2V0X3RhZ3MiLCJwcF9wcmludF9saXN0IiwicHBfdiIsIm9wdCQwIiwicHBfc2VwIiwidnMiLCJvcHQkMSIsInBwX3ByaW50X3NlcSIsInNlcSQxIiwic2VxJDIiLCJwcF9wcmludF90ZXh0IiwicHBfcHJpbnRfb3B0aW9uIiwicHBfcHJpbnRfcmVzdWx0IiwicHBfcHJpbnRfZWl0aGVyIiwiY29tcHV0ZV90YWciLCJ0YWdfYWNjIiwib3V0cHV0X2Zvcm1hdHRpbmdfbGl0Iiwib3V0cHV0X2FjYyQwIiwiYnR5IiwicCQ1IiwicCQ2Iiwic3RycHV0X2FjYyQwIiwic2l6ZSQxIiwia2ZwcmludGYkMCIsImlrZnByaW50ZiQwIiwiaWZwcmludGYkMCIsImZwcmludGYkMCIsInByaW50ZiQwIiwiZXByaW50ZiQwIiwia2RwcmludGYiLCJkcHJpbnRmIiwia3ByaW50ZiIsInNwcmludGYkMCIsImthc3ByaW50ZiIsImFzcHJpbnRmIiwiZmx1c2hfc3RhbmRhcmRfZm9ybWF0dGVycyIsInBwX3NldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdSIsInBwX2dldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdSIsInNldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdCIsImdldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdCIsImJwcmludGYkMCIsInBwX3NldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsInN0cmluZ2lmeSIsInBwX2dldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsImZ1bnMiLCJtYXJrX29wZW5fdGFnIiwibWFya19jbG9zZV90YWciLCJwcmludF9vcGVuX3RhZyIsInByaW50X2Nsb3NlX3RhZyIsInNldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsIm51bGxfY2hhciIsIm5leHRfY2hhciIsImliIiwicGVla19jaGFyIiwiY2hlY2tlZF9wZWVrX2NoYXIiLCJlbmRfb2ZfaW5wdXQiLCJiZWdpbm5pbmdfb2ZfaW5wdXQiLCJuYW1lX29mX2lucHV0IiwiY2hhcl9jb3VudCIsInJlc2V0X3Rva2VuIiwiaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIiLCJ0b2tlbl9zdHJpbmciLCJ0b2tlbl9idWZmZXIiLCJza2lwX2NoYXIiLCJpZ25vcmVfY2hhciIsInN0b3JlX2NoYXIiLCJkZWZhdWx0X3Rva2VuX2J1ZmZlcl9zaXplIiwiY3JlYXRlJDQiLCJpbmFtZSIsImZyb21fc3RyaW5nJDEiLCJmcm9tX2Z1bmN0aW9uJDAiLCJzY2FuX2Nsb3NlX2F0X2VuZCIsInNjYW5fcmFpc2VfYXRfZW5kIiwiZnJvbV9pYyIsInNjYW5fY2xvc2VfaWMiLCJlb2YiLCJzdGRpYiIsIm9wZW5faW5fZmlsZSIsIm9wZW5faW4iLCJmcm9tX2ZpbGUiLCJmcm9tX2ZpbGVfYmluIiwiZnJvbV9jaGFubmVsJDAiLCJjbG9zZV9pbiIsImljJDAiLCJtZW1vIiwibWVtb19mcm9tX2ljIiwibWVtb19mcm9tX2NoYW5uZWwiLCJiYWRfaW5wdXQiLCJiYWRfaW5wdXRfZXNjYXBlIiwiYmFkX3Rva2VuX2xlbmd0aCIsIm1lc3NhZ2UiLCJiYWRfZmxvYXQiLCJiYWRfaGV4X2Zsb2F0IiwiY2hhcmFjdGVyX21pc21hdGNoIiwiY2kiLCJjaGVja190aGlzX2NoYXIiLCJjaGVja19jaGFyIiwidG9rZW5fY2hhciIsInRva2VuX2Jvb2wiLCJpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciIsInRva2VuX2ludF9saXRlcmFsIiwidG9rZW5fZmxvYXQiLCJzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciIsInNjYW5fdW5zaWduZWRfZGVjaW1hbF9pbnQiLCJzY2FuX2RpZ2l0X3BsdXMiLCJiYXNpcyIsImRpZ2l0cCIsIndpZHRoJDMiLCJpc19iaW5hcnlfZGlnaXQiLCJzY2FuX2JpbmFyeV9pbnQiLCJpc19vY3RhbF9kaWdpdCIsInNjYW5fb2N0YWxfaW50IiwiaXNfaGV4YV9kaWdpdCIsInNjYW5faGV4YWRlY2ltYWxfaW50Iiwic2Nhbl9zaWduIiwic2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsIiwic2Nhbl9pbnRfY29udmVyc2lvbiIsInNjYW5fZnJhY3Rpb25hbF9wYXJ0Iiwic2Nhbl9leHBvbmVudF9wYXJ0Iiwic2Nhbl9mbG9hdCIsInByZWNpc2lvbiIsInByZWNpc2lvbiQwIiwiY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmciLCJzY2FuX2hleF9mbG9hdCIsIndpZHRoJDQiLCJ3aWR0aCQ1Iiwid2lkdGgkNiIsIndpZHRoJDEwIiwid2lkdGgkNyIsIndpZHRoJDgiLCJ3aWR0aCQ5Iiwic2Nhbl9jYW1sX2Zsb2F0X3Jlc3QiLCJ3aWR0aF9wcmVjaXNpb24iLCJmcmFjX3dpZHRoIiwic2Nhbl9jYW1sX2Zsb2F0Iiwic2Nhbl9zdHJpbmciLCJzdHAiLCJzY2FuX2NoYXIiLCJoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmciLCJzY2FuX2JhY2tzbGFzaF9jaGFyIiwiYzAiLCJnZXRfZGlnaXQiLCJnZXRfZGlnaXQkMCIsImMxJDAiLCJjMiQwIiwic2Nhbl9jYW1sX2NoYXIiLCJmaW5kX3N0b3AiLCJzY2FuX2NhbWxfc3RyaW5nIiwiZmluZF9zdG9wJDAiLCJza2lwX3NwYWNlcyIsInNjYW5fY2hhcnNfaW5fY2hhcl9zZXQiLCJzY2FuX2luZGljIiwic2Nhbl9jaGFycyIsInNjYW5mX2JhZF9pbnB1dCIsImdldF9jb3VudGVyIiwid2lkdGhfb2ZfcGFkX29wdCIsInN0b3BwZXJfb2ZfZm9ybWF0dGluZ19saXQiLCJmbXRpbmciLCJ0YWtlX2Zvcm1hdF9yZWFkZXJzJDAiLCJ0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzJDAiLCJyZWFkZXIiLCJuZXdfayIsInJlYWRlcnNfcmVzdCIsInRha2VfZm9ybWF0X3JlYWRlcnMiLCJmbXQkMjMiLCJmbXQkMjQiLCJmbXQkMjUiLCJ0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIiwicGFkX3ByZWNfc2NhbmYiLCJyZWFkZXJzIiwibWFrZV9zY2FuZiIsInNjYW4kMCIsInN0cl9yZXN0Iiwic2NhbiQxIiwic2NhbiQyIiwic2NhbiQzIiwic2NhbiQ0IiwiY29udiQwIiwic2NhbiQ1IiwiY29udiQxIiwic2NhbiQ2IiwiY29udiQyIiwic2NhbiQ3Iiwic2NhbiQ4IiwiZm10aW5nX2xpdCQwIiwic3RwJDAiLCJzJDIiLCJzdHJfcmVzdCQwIiwicmVzdCQyNiIsImFyZ19yZXN0Iiwia3NjYW5mIiwiZWYiLCJhcHBseSIsImFyZ3MkMCIsImV4YyIsImJzY2FuZiIsImtzc2NhbmYiLCJzc2NhbmYiLCJzY2FuZiIsImJzY2FuZl9mb3JtYXQiLCJmb3JtYXQiLCJzc2NhbmZfZm9ybWF0IiwiZm9ybWF0X2Zyb21fc3RyaW5nIiwidW5lc2NhcGVkIiwia2ZzY2FuZiIsImZzY2FuZiIsInJlZ2lzdGVyIiwicmVnaXN0ZXJfZXhjZXB0aW9uIiwibyQwIiwicGFyYW1zJDAiLCJpbml0aWFsX29iamVjdF9zaXplIiwiZHVtbXlfaXRlbSIsInRhZyIsImNvbXBhcmUkMTQiLCJjb21wYXJlJDE1IiwiY29tcGFyZSQxNiIsImR1bW15X3RhYmxlIiwidGFibGVfY291bnQiLCJkdW1teV9tZXQiLCJmaXRfc2l6ZSIsIm5ld190YWJsZSIsInB1Yl9sYWJlbHMiLCJtZXRob2RzIiwicmVzaXplJDEiLCJhcnJheSIsIm5ld19zaXplIiwib2xkX3NpemUiLCJuZXdfYnVjayIsIm1ldGhvZF9jb3VudCIsImluc3RfdmFyX2NvdW50IiwibmV3X21ldGhvZCIsInRhYmxlIiwiZ2V0X21ldGhvZF9sYWJlbCIsImxhYmVsIiwiZ2V0X21ldGhvZF9sYWJlbHMiLCJuYW1lcyIsInNldF9tZXRob2QiLCJlbGVtZW50IiwiZ2V0X21ldGhvZCIsInRvX2xpc3QkMyIsImFyciIsIm5hcnJvdyIsInZhcnMiLCJ2aXJ0X21ldGhzIiwiY29uY3JfbWV0aHMiLCJ2YXJzJDAiLCJ2aXJ0X21ldGhzJDAiLCJjb25jcl9tZXRocyQwIiwidmlydF9tZXRoX2xhYnMiLCJjb25jcl9tZXRoX2xhYnMiLCJsYWIiLCJ0dmFycyIsImJ5X25hbWUiLCJieV9sYWJlbCIsIm1ldCIsImhtIiwid2lkZW4iLCJzYXZlZF92YXJzIiwic2F2ZWRfaGlkZGVuX21ldGhzIiwibmV3X3Nsb3QiLCJuZXdfdmFyaWFibGUiLCJ0b19hcnJheSIsIm5ld19tZXRob2RzX3ZhcmlhYmxlcyIsIm1ldGhzIiwidmFscyIsIm1ldGhzJDAiLCJubWV0aHMiLCJudmFscyIsImdldF92YXJpYWJsZSIsImdldF92YXJpYWJsZXMiLCJhZGRfaW5pdGlhbGl6ZXIiLCJjcmVhdGVfdGFibGUiLCJwdWJsaWNfbWV0aG9kcyIsInRhZ3MiLCJpbml0X2NsYXNzIiwiaW5oZXJpdHMiLCJjbGEiLCJzdXBlciQwIiwibm0iLCJtYWtlX2NsYXNzIiwicHViX21ldGhzIiwiY2xhc3NfaW5pdCIsImVudl9pbml0IiwibWFrZV9jbGFzc19zdG9yZSIsImluaXRfdGFibGUiLCJkdW1teV9jbGFzcyIsImxvYyIsInVuZGVmIiwiY3JlYXRlX29iamVjdCIsImNyZWF0ZV9vYmplY3Rfb3B0Iiwib2JqXzAiLCJpdGVyX2YiLCJydW5faW5pdGlhbGl6ZXJzIiwiaW5pdHMiLCJydW5faW5pdGlhbGl6ZXJzX29wdCIsImNyZWF0ZV9vYmplY3RfYW5kX3J1bl9pbml0aWFsaSIsImdldF9kYXRhJDAiLCJidWlsZF9wYXRoIiwia2V5cyIsImxvb2t1cF90YWJsZXMiLCJyb290IiwidGFibGVzJDIiLCJ0YWJsZXMkMCIsInRhYmxlcyQxIiwibmV3X2NhY2hlIiwic2V0X21ldGhvZHMiLCJjbG8iLCJjbG8kMCIsIm4kMiIsIm4kMyIsIm4kNCIsIm4kNSIsIm4kNiIsIngkMyIsIm4kNyIsIngkNCIsIm4kOCIsIm4kOSIsIngkNSIsImYkOCIsImUkMiIsIm4kMTAiLCJ4JDYiLCJmJDkiLCJuJDExIiwieCQ3IiwibiQxMiIsIngkOCIsIm4kMTMiLCJuJDE0IiwiZSQzIiwibiQxNSIsIm0kMiIsIngkOSIsIm0kMyIsIm4kMTYiLCJtJDQiLCJlJDQiLCJuJDE3IiwibSQ1IiwibiQxOCIsInN0YXRzJDAiLCJpbml0X21vZF9ibG9jayIsImNvbXBzJDAiLCJtb2R1Iiwic2hhcGUiLCJmbiQwIiwiY29tcHMiLCJpbml0X21vZCIsInVwZGF0ZV9tb2RfYmxvY2siLCJjbCIsInVwZGF0ZV9tb2QiLCJpbml0aWFsX2J1ZmZlciIsImJ1ZmZlciIsImJ1ZnBvcyIsInJlc2V0X2J1ZmZlciIsInN0b3JlIiwibmV3YnVmZmVyIiwiZ2V0X3N0cmluZyIsIm1ha2VfbGV4ZXIiLCJrZXl3b3JkcyIsImt3ZF90YWJsZSIsImlkZW50X29yX2tleXdvcmQiLCJrZXl3b3JkX29yX2Vycm9yIiwiZW5kX2V4cG9uZW50X3BhcnQiLCJleHBvbmVudF9wYXJ0IiwibnVtYmVyIiwiaWRlbnQyIiwibmVnX251bWJlciIsIm5leHRfdG9rZW4kMCIsImVzY2FwZSIsIm1heWJlX2NvbW1lbnQiLCJjb21tZW50IiwibmV4dF90b2tlbiIsImhrZXkiLCJjbGVhbiIsImluc2VydF9idWNrZXQiLCJjb250YWluZXIiLCJyZW1vdmVfYnVja2V0IiwiaGsiLCJyZXBsYWNlX2J1Y2tldCIsIm5ld19kIiwiYnVja2V0X2xlbmd0aF9hbGl2ZSIsInN0YXRzX2FsaXZlIiwiY3JlYXRlJDUiLCJnZXRfa2V5JDAiLCJnZXRfa2V5X2NvcHkkMCIsInNldF9rZXkkMCIsInVuc2V0X2tleSQwIiwiY2hlY2tfa2V5JDAiLCJibGl0X2tleSQwIiwiZ2V0X2RhdGEkMSIsImdldF9kYXRhX2NvcHkiLCJzZXRfZGF0YSIsInVuc2V0X2RhdGEiLCJjaGVja19kYXRhIiwiYmxpdF9kYXRhIiwibWFrZSQ0IiwiZXBoIiwicXVlcnkiLCJzZXRfa2V5X2RhdGEiLCJtYWtlJDUiLCJhZGQkMSIsInRlc3Rfa2V5IiwicmVtb3ZlJDAiLCJmaW5kJDIiLCJsZW5ndGgkNyIsImNsZWFyJDMiLCJjcmVhdGUkNiIsImdldF9rZXkxIiwiZ2V0X2tleTFfY29weSIsInNldF9rZXkxIiwidW5zZXRfa2V5MSIsImNoZWNrX2tleTEiLCJnZXRfa2V5MiIsImdldF9rZXkyX2NvcHkiLCJzZXRfa2V5MiIsInVuc2V0X2tleTIiLCJjaGVja19rZXkyIiwiYmxpdF9rZXkxIiwiYmxpdF9rZXkyIiwiYmxpdF9rZXkxMiIsImdldF9kYXRhJDIiLCJnZXRfZGF0YV9jb3B5JDAiLCJzZXRfZGF0YSQwIiwidW5zZXRfZGF0YSQwIiwiY2hlY2tfZGF0YSQwIiwiYmxpdF9kYXRhJDAiLCJtYWtlJDYiLCJrZXkxIiwia2V5MiIsInF1ZXJ5JDAiLCJrMiQwIiwiazEkMCIsIm1ha2UkNyIsImFkZCQyIiwidGVzdF9rZXlzIiwicmVtb3ZlJDEiLCJmaW5kJDMiLCJsZW5ndGgkOCIsImNsZWFyJDQiLCJjcmVhdGUkNyIsImxlbmd0aCQ5IiwiZ2V0X2tleSQxIiwiZ2V0X2tleV9jb3B5JDEiLCJzZXRfa2V5JDEiLCJ1bnNldF9rZXkkMSIsImNoZWNrX2tleSQxIiwiYmxpdF9rZXkkMSIsImdldF9kYXRhJDMiLCJnZXRfZGF0YV9jb3B5JDEiLCJzZXRfZGF0YSQxIiwidW5zZXRfZGF0YSQxIiwiY2hlY2tfZGF0YSQxIiwiYmxpdF9kYXRhJDEiLCJtYWtlJDgiLCJxdWVyeSQxIiwia2kiLCJrMCIsIm1ha2UkOSIsImFkZCQzIiwidGVzdF9rZXlzJDAiLCJyZW1vdmUkMiIsImZpbmQkNCIsImxlbmd0aCQxMCIsImNsZWFyJDUiLCJnZW5lcmljX2Jhc2VuYW1lIiwiaXNfZGlyX3NlcCIsImdlbmVyaWNfZGlybmFtZSIsImlzX3JlbGF0aXZlIiwiaXNfaW1wbGljaXQiLCJjaGVja19zdWZmaXgiLCJzdWZmIiwiY2hvcF9zdWZmaXhfb3B0IiwibGVuX2YiLCJxdW90ZSIsInF1b3RlX2NvbW1hbmQiLCJiYXNlbmFtZSIsImRpcm5hbWUiLCJpc19kaXJfc2VwJDAiLCJpc19yZWxhdGl2ZSQwIiwiaXNfaW1wbGljaXQkMCIsImNoZWNrX3N1ZmZpeCQwIiwiY2hvcF9zdWZmaXhfb3B0JDAiLCJ0ZW1wX2Rpcl9uYW1lIiwicXVvdGUkMCIsImFkZF9icyIsImxvb3AkMCIsImxvb3BfYnMiLCJxdW90ZV9jbWRfZmlsZW5hbWUiLCJxdW90ZV9jb21tYW5kJDAiLCJkcml2ZV9hbmRfcGF0aCIsImRpcm5hbWUkMCIsInBhdGgiLCJkcml2ZSIsImRpciIsImJhc2VuYW1lJDAiLCJiYXNlbmFtZSQxIiwiZGlybmFtZSQxIiwibnVsbCQzIiwiY3VycmVudF9kaXJfbmFtZSQyIiwicGFyZW50X2Rpcl9uYW1lJDIiLCJkaXJfc2VwJDIiLCJpc19kaXJfc2VwJDEiLCJpc19yZWxhdGl2ZSQxIiwiaXNfaW1wbGljaXQkMSIsImNoZWNrX3N1ZmZpeCQxIiwiY2hvcF9zdWZmaXhfb3B0JDEiLCJ0ZW1wX2Rpcl9uYW1lJDAiLCJxdW90ZSQxIiwicXVvdGVfY29tbWFuZCQxIiwiYmFzZW5hbWUkMiIsImRpcm5hbWUkMiIsImNvbmNhdCQ0IiwiY2hvcF9zdWZmaXgiLCJleHRlbnNpb25fbGVuIiwiZXh0ZW5zaW9uIiwiY2hvcF9leHRlbnNpb24iLCJyZW1vdmVfZXh0ZW5zaW9uIiwicHJuZyQwIiwidGVtcF9maWxlX25hbWUiLCJ0ZW1wX2RpciIsInJuZCIsImN1cnJlbnRfdGVtcF9kaXJfbmFtZSIsInNldF90ZW1wX2Rpcl9uYW1lIiwiZ2V0X3RlbXBfZGlyX25hbWUiLCJ0ZW1wX2ZpbGUiLCJ0cnlfbmFtZSIsImNvdW50ZXIkMSIsIm9wZW5fdGVtcF9maWxlIiwic3RoJDAiLCJwZXJtcyIsInN0aCQxIiwiYWRkJDQiLCJzdWIkNCIsIm5lZyIsImNvbmoiLCJtdWwiLCJkaXYiLCJpbnYiLCJub3JtMiIsIm5vcm0iLCJxJDAiLCJwb2xhciIsInNxcnQiLCJ3JDAiLCJleHAiLCJsb2ciLCJwb3ciLCJmbG9hdDMyIiwiZmxvYXQ2NCIsImludDhfc2lnbmVkIiwiaW50OF91bnNpZ25lZCIsImludDE2X3NpZ25lZCIsImludDE2X3Vuc2lnbmVkIiwiaW50MzIkMSIsImludDY0JDEiLCJpbnQkMiIsIm5hdGl2ZWludCQxIiwiY29tcGxleDMyIiwiY29tcGxleDY0Iiwia2luZF9zaXplX2luX2J5dGVzIiwiY19sYXlvdXQiLCJmb3J0cmFuX2xheW91dCIsImNsb29wIiwiaWR4IiwiY29sIiwiZmxvb3AiLCJpbml0JDYiLCJsYXlvdXQiLCJkaW1zIiwiZGxlbiIsInNpemVfaW5fYnl0ZXMiLCJjcmVhdGUkOCIsImdldCQzIiwic2V0JDIiLCJzaXplX2luX2J5dGVzJDAiLCJvZl92YWx1ZSIsImNyZWF0ZSQ5IiwiZGltIiwic2l6ZV9pbl9ieXRlcyQxIiwic2xpY2UiLCJpbml0JDciLCJvZl9hcnJheSIsImJhIiwiY3JlYXRlJDEwIiwiZGltMSIsImRpbTIiLCJzaXplX2luX2J5dGVzJDIiLCJzbGljZV9sZWZ0Iiwic2xpY2VfcmlnaHQiLCJpbml0JDgiLCJvZl9hcnJheSQwIiwicm93IiwiY3JlYXRlJDExIiwiZGltMyIsInNpemVfaW5fYnl0ZXMkMyIsInNsaWNlX2xlZnRfMSIsInNsaWNlX3JpZ2h0XzEiLCJzbGljZV9sZWZ0XzIiLCJzbGljZV9yaWdodF8yIiwiaW5pdCQ5Iiwib2ZfYXJyYXkkMSIsImFycmF5MF9vZl9nZW5hcnJheSIsImFycmF5MV9vZl9nZW5hcnJheSIsImFycmF5Ml9vZl9nZW5hcnJheSIsImFycmF5M19vZl9nZW5hcnJheSIsInJlc2hhcGVfMCIsInJlc2hhcGVfMSIsInJlc2hhcGVfMiIsInJlc2hhcGVfMyIsIndpdGhfb3BlbiIsIm9wZW5mdW4iLCJ3aXRoX29wZW5fYmluIiwid2l0aF9vcGVuX3RleHQiLCJ3aXRoX29wZW5fZ2VuIiwic2VlayIsImxlbmd0aCQxMSIsImlucHV0X2NoYXIkMCIsImlucHV0X2J5dGUkMCIsImlucHV0X2xpbmUkMCIsInJlYWxseV9pbnB1dCQwIiwicmVhbGx5X2lucHV0X3N0cmluZyQwIiwicmVhZF91cHRvIiwiZW5zdXJlIiwibmV3X2xlbiQwIiwibmV3X2xlbiQxIiwiaW5wdXRfYWxsIiwiY2h1bmtfc2l6ZSIsImluaXRpYWxfc2l6ZSQwIiwiaW5pdGlhbF9zaXplJDEiLCJucmVhZCIsImJ1ZiQwIiwiYnVmJDEiLCJyZW0iLCJ3aXRoX29wZW4kMCIsIndpdGhfb3Blbl9iaW4kMCIsIndpdGhfb3Blbl90ZXh0JDAiLCJ3aXRoX29wZW5fZ2VuJDAiLCJzZWVrJDAiLCJwb3MkMCIsImxlbmd0aCQxMiIsImZvcm1hdF9wZXJpb2QiLCJmbXQiLCJwIiwibWFrZV9wZXJpb2QiLCJ5ZWFycyIsIm1vbnRocyIsImRheXMiLCJhZGRfcGVyaW9kcyIsImQxIiwiZDIiLCJzdWJfcGVyaW9kcyIsIm11bF9wZXJpb2QiLCJtIiwicGVyaW9kX3RvX2RheXMiLCJpc19sZWFwX3llYXIiLCJ5ZWFyIiwiZGF5c19pbl9tb250aCIsIm1vbnRoIiwiaXNfdmFsaWRfZGF0ZSIsImQiLCJtYWtlX2RhdGUiLCJkYXkiLCJhZGRfbW9udGhzX3RvX2ZpcnN0X29mX21vbnRoX2QiLCJ5ZWFyJDAiLCJtb250aHMkMCIsIm5ld19tb250aCIsIm1vbnRocyQxIiwieWVhciQxIiwibW9udGhzJDIiLCJ5ZWFyJDIiLCJhZGRfZGF0ZXMiLCJvcHQiLCJzdGgiLCJyb3VuZCIsIm5ld19tb250aCQwIiwibmV3X3llYXIkMCIsIm5ld19kYXRlIiwibmV3X3llYXIiLCJkJDAiLCJkYXlzX2luX2RfbW9udGgiLCJuZXdfZGF5IiwibmV3X21vbnRoJDEiLCJuZXdfeWVhciQxIiwiZGF5cyQwIiwiZCQxIiwibmV3X21vbnRoJDIiLCJuZXdfeWVhciQyIiwiZGF5cyQxIiwiZCQyIiwiY29tcGFyZV9kYXRlcyIsImZvcm1hdF9kYXRlIiwiZmlyc3RfZGF5X29mX21vbnRoIiwibGFzdF9kYXlfb2ZfbW9udGgiLCJkYXlzX21vbnRoIiwibmVnX3BlcmlvZCIsInN1Yl9kYXRlcyIsImNtcCIsIm5ld19kMl9tb250aCIsIm5ld19kMl95ZWFyIiwibmV3X2QyIiwiZGF0ZV90b195bWQiLCJwZXJpb2RfdG9feW1kcyIsInN0cmVhbSQxIiwic3RyZWFtJDAiLCJzdHJlYW0iLCJ2ZXJzaW9uIiwib2NhbWxfbGV4X3RhYmxlcyIsIm9jYW1sX2xleF90YWJsZXMkMCIsIm9jYW1sX2xleF90YWJsZXMkMSIsImpzb25fZXJyb3IiLCJzIiwidXRmOF9vZl9jb2RlIiwiYnVmIiwieCIsImFkZCIsIm1heGJpdHMiLCJuIiwidXRmOF9vZl9zdXJyb2dhdGVfcGFpciIsImkiLCJqIiwiaGlnaDEwIiwibG93MTAiLCJpbml0X2xleGVyIiwiZm5hbWUiLCJvcHQiLCJzdGgiLCJsbnVtIiwiYnVmJDAiLCJidWYkMSIsImhleCIsIndyaXRlX3NwZWNpYWwiLCJzcmMiLCJzdGFydCIsInN0b3AiLCJvYiIsInN0ciIsImZpbmlzaF9zdHJpbmciLCJleGMiLCJ3cml0ZV9zdHJpbmciLCJjIiwianNvbl9zdHJpbmdfb2Zfc3RyaW5nIiwid3JpdGVfbnVsbCIsIndyaXRlX2Jvb2wiLCJ3cml0ZV9kaWdpdHMiLCJkIiwid3JpdGVfaW50IiwiZmxvYXRfbmVlZHNfcGVyaW9kIiwid3JpdGVfZmxvYXQiLCJzMSIsIndyaXRlX25vcm1hbF9mbG9hdF9wcmVjIiwic2lnbmlmaWNhbnRfZmlndXJlcyIsIndyaXRlX2Zsb2F0X3ByZWMiLCJ3cml0ZV9zdGRfZmxvYXQiLCJ3cml0ZV9zdGRfZmxvYXRfcHJlYyIsIndyaXRlX2ludGxpdCIsIndyaXRlX2Zsb2F0bGl0Iiwid3JpdGVfc3RyaW5nbGl0IiwiaXRlcjIiLCJmX2VsdCIsImZfc2VwIiwibCQwIiwieSQwIiwibCIsInkiLCJ3cml0ZV92YXJpYW50IiwibyIsIndyaXRlX3QiLCJ3cml0ZV90dXBsZSIsIndyaXRlX2xpc3QiLCJ3cml0ZV9hc3NvYyIsImIiLCJsJDEiLCJzJDAiLCJzJDEiLCJmIiwicyQyIiwicyQzIiwid3JpdGVfc3RkX3ZhcmlhbnQiLCJ3cml0ZV9zdGRfanNvbiIsIndyaXRlX3N0ZF90dXBsZSIsInRvX2J1ZmZlciIsInN1ZiIsInN0aCQwIiwic3RkIiwidG9fc3RyaW5nIiwibGVuIiwib2IkMCIsInRvX2NoYW5uZWwiLCJvYyIsInRvX291dHB1dCIsIm91dCIsInRvX2ZpbGUiLCJmaWxlIiwiZSIsInNlcV90b19idWZmZXIiLCJzdCIsInNlcV90b19zdHJpbmciLCJzZXFfdG9fY2hhbm5lbCIsInNlcSIsImpzb24iLCJzZXFfdG9fZmlsZSIsInNvcnQiLCJ2IiwiayIsImEiLCJ2JDAiLCJsJDIiLCJwcCIsImZtdCIsInhzIiwic2VwIiwidmFsdWUiLCJrZXkiLCJ4cyQwIiwieCQwIiwidHVwIiwibmFtZSIsIngkMSIsIngkMiIsIngkMyIsIngkNCIsIngkNSIsIngkNiIsInNob3ciLCJlcXVhbCIsImEkMCIsImIkMCIsImIkMSIsImEkMSIsInlzIiwiY29tcGFyZV9rZXlzIiwia2V5JDAiLCJ5cyQwIiwidmFsdWUkMCIsInJlc3VsdCIsInlzJDEiLCJ4cyQxIiwiYiQyIiwiYSQyIiwibmFtZSQwIiwiYiQzIiwiYSQzIiwicmVzdWx0JDAiLCJiJDQiLCJhJDQiLCJiJDUiLCJhJDUiLCJiJDYiLCJhJDYiLCJiJDciLCJhJDciLCJiJDgiLCJhJDgiLCJwcF9saXN0IiwicHB4IiwicHBfc2VwIiwiaXNfYXRvbSIsImZvcm1hdCIsImluc2lkZV9ib3giLCJyZXByZXNlbnRhdGlvbiIsIm9wIiwieCQ3IiwicHAkMCIsInByZXR0eV9wcmludCIsInByZXR0eV90b19zdHJpbmciLCJwcmV0dHlfdG9fY2hhbm5lbCIsImhleCQwIiwid3JpdGVfc3BlY2lhbCQwIiwiZmluaXNoX3N0cmluZyQwIiwid3JpdGVfc3RyaW5nJDAiLCJqc29uX3N0cmluZ19vZl9zdHJpbmckMCIsIndyaXRlX251bGwkMCIsIndyaXRlX2Jvb2wkMCIsIndyaXRlX2RpZ2l0cyQwIiwid3JpdGVfaW50JDAiLCJmbG9hdF9uZWVkc19wZXJpb2QkMCIsIndyaXRlX2Zsb2F0JDAiLCJ3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyQwIiwid3JpdGVfZmxvYXRfcHJlYyQwIiwid3JpdGVfc3RkX2Zsb2F0JDAiLCJ3cml0ZV9zdGRfZmxvYXRfcHJlYyQwIiwiaXRlcjIkMCIsImZfc2VwJDAiLCJ3cml0ZV9saXN0JDAiLCJ3cml0ZV90JDAiLCJ3cml0ZV9hc3NvYyQwIiwid3JpdGVfc3RkX2pzb24kMCIsInRvX2J1ZmZlciQwIiwidG9fc3RyaW5nJDAiLCJ0b19jaGFubmVsJDAiLCJ0b19vdXRwdXQkMCIsInRvX2ZpbGUkMCIsInNlcV90b19idWZmZXIkMCIsInNlcV90b19zdHJpbmckMCIsInNlcV90b19jaGFubmVsJDAiLCJzZXFfdG9fZmlsZSQwIiwic29ydCQwIiwicHBfbGlzdCQwIiwiaXNfYXRvbSQwIiwiZm9ybWF0JDAiLCJwcCQxIiwicHAkMiIsInNob3ckMCIsImVxdWFsJDAiLCJwcmV0dHlfcHJpbnQkMCIsInByZXR0eV90b19zdHJpbmckMCIsInByZXR0eV90b19jaGFubmVsJDAiLCJoZXgkMSIsImN1c3RvbV9lcnJvciIsImRlc2NyIiwibGV4YnVmIiwib2ZmcyIsImJvbCIsInBvczEiLCJwb3MyIiwiZmlsZV9saW5lIiwiYnl0ZXMiLCJtc2ciLCJsZXhlcl9lcnJvciIsInJlYWRfanVuayIsImxvbmdfZXJyb3IiLCJqdW5rIiwiZXh0cmFfanVuayIsIm1pbjEwIiwibWF4MTAiLCJleHRyYWN0X3Bvc2l0aXZlX2ludCIsImV4dHJhY3RfbmVnYXRpdmVfaW50IiwibmV3bGluZSIsImFkZF9sZXhlbWUiLCJyZWFkX2pzb24kMiIsIm9jYW1sX2xleF9yZWFkX2pzb25fcmVjIiwib2NhbWxfbGV4X3N0YXRlIiwib2NhbWxfbGV4X3N0YXRlJDAiLCJvY2FtbF9sZXhfc3RhdGUkMSIsImZpbmlzaF9zdHJpbmckMSIsImFjYyIsInJlYWRfc3BhY2UiLCJyZWFkX29iamVjdF9lbmQiLCJmaWVsZF9uYW1lIiwicmVhZF9pZGVudCIsInJlYWRfY29sb24iLCJyZWFkX2pzb24iLCJyZWFkX29iamVjdF9zZXAiLCJmaWVsZF9uYW1lJDAiLCJhY2MkMCIsInJlYWRfYXJyYXlfZW5kIiwicmVhZF9hcnJheV9zZXAiLCJmaW5pc2hfY29tbWVudCIsImZpbmlzaF9lc2NhcGVkX2NoYXIiLCJtYXBfc3RyaW5nIiwiYyQwIiwib2NhbWxfbGV4X3N0YXRlJDIiLCJjJDEiLCJkJDAiLCJmaW5pc2hfc3RyaW5nbGl0IiwiZmluaXNoX3ZhcmlhbnQiLCJyZWFkX2d0IiwicmVhZF9sdCIsInJlYWRfY29tbWEiLCJzdGFydF9hbnlfdmFyaWFudCIsInJlYWRfZW9mIiwicmVhZF9udWxsIiwicmVhZF9udWxsX2lmX3Bvc3NpYmxlIiwicmVhZF9ib29sIiwib2NhbWxfbGV4X3JlYWRfaW50X3JlYyIsInJlYWRfaW50Iiwib2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIiwicmVhZF9pbnQzMiIsIm9jYW1sX2xleF9yZWFkX2ludDY0X3JlYyIsInJlYWRfaW50NjQiLCJvY2FtbF9sZXhfcmVhZF9udW1iZXJfcmVjIiwicmVhZF9udW1iZXIiLCJyZWFkX3N0cmluZyIsIm1hcF9pZGVudCIsIm9jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyIsInJlYWRfY2VsbCIsImluaXRfYWNjIiwicmVhZF9zZXF1ZW5jZSIsIm9jYW1sX2xleF9yZWFkX2xpc3RfcmV2X3JlYyIsInJlYWRfbGlzdF9yZXYiLCJyZWFkX3R1cGxlIiwicmVhZF90dXBsZV9lbmQiLCJyZWFkX3R1cGxlX2VuZDIiLCJyZWFkX3R1cGxlX3NlcCIsInJlYWRfdHVwbGVfc2VwMiIsIm9jYW1sX2xleF9yZWFkX2Fic3RyYWN0X2ZpZWxkcyIsInJlYWRfa2V5IiwicmVhZF9maWVsZCIsInJlYWRfYWJzdHJhY3RfZmllbGRzIiwicmVhZF9sY3VybCIsInN0YXJ0X2FueV90dXBsZSIsInJlYWRfbHBhciIsInJlYWRfcnBhciIsInJlYWRfbGJyIiwicmVhZF9yYnIiLCJmaW5pc2hfc2tpcF9zdHJpbmdsaXQiLCJza2lwX2pzb24kMiIsIm9jYW1sX2xleF9za2lwX2pzb25fcmVjIiwic2tpcF9pZGVudCIsInNraXBfanNvbiIsImZpbmlzaF9za2lwX3ZhcmlhbnQiLCJmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCIsImJ1ZmZlcl9qc29uJDIiLCJvY2FtbF9sZXhfYnVmZmVyX2pzb25fcmVjIiwiYnVmZmVyX3NwYWNlIiwiYnVmZmVyX29iamVjdF9lbmQiLCJidWZmZXJfaWRlbnQiLCJidWZmZXJfY29sb24iLCJidWZmZXJfanNvbiIsImJ1ZmZlcl9vYmplY3Rfc2VwIiwiYnVmZmVyX2FycmF5X2VuZCIsImJ1ZmZlcl9hcnJheV9zZXAiLCJmaW5pc2hfYnVmZmVyX2NvbW1lbnQiLCJyZWFkX2ludDgiLCJyZWFkX2xpc3QiLCJyZWFkX2FycmF5IiwidGwiLCJyIiwicmVhZF9maWVsZHMiLCJmcm9tX2xleGJ1ZiIsImZyb21fc3RyaW5nJDAiLCJmcm9tX2NoYW5uZWwkMCIsImljIiwiZnJvbV9maWxlIiwic2VxX2Zyb21fbGV4YnVmIiwiZmluIiwiZmluX2UiLCJzZXFfZnJvbV9zdHJpbmciLCJzZXFfZnJvbV9jaGFubmVsIiwic2VxX2Zyb21fZmlsZSIsImZuYW1lJDAiLCJsaW5lc2VxX2Zyb21fY2hhbm5lbCIsImxudW0wIiwibGluZSIsImxpbmVzZXFfZnJvbV9maWxlIiwicHJldHRpZnkiLCJjb21wYWN0IiwidHlwZXJyIiwianMiLCJhc3NvYyIsIm9iaiIsIm1lbWJlciIsImluZGV4Iiwid3JhcHBlZF9pbmRleCIsIm1hcCIsInRvX2Fzc29jIiwidG9fb3B0aW9uIiwidG9fYm9vbCIsInRvX2Jvb2xfb3B0aW9uIiwidG9fbnVtYmVyIiwidG9fbnVtYmVyX29wdGlvbiIsInRvX2Zsb2F0IiwidG9fZmxvYXRfb3B0aW9uIiwidG9faW50IiwidG9faW50X29wdGlvbiIsInRvX2xpc3QiLCJ0b19zdHJpbmckMSIsInRvX3N0cmluZ19vcHRpb24iLCJjb252ZXJ0X2VhY2giLCJmaWx0ZXJfbWFwIiwiZmxhdHRlbiIsImwyIiwiZmlsdGVyX2luZGV4IiwiZmlsdGVyX2xpc3QiLCJmaWx0ZXJfbWVtYmVyIiwiZmlsdGVyX2Fzc29jIiwiZmlsdGVyX2Jvb2wiLCJmaWx0ZXJfaW50IiwiZmlsdGVyX2Zsb2F0IiwiZmlsdGVyX251bWJlciIsImZpbHRlcl9zdHJpbmciLCJrZXlzIiwidmFsdWVzIiwiY29tYmluZSIsImZpcnN0Iiwic2Vjb25kIiwidG9fYmFzaWMiLCJoZXgkMiIsIndyaXRlX3NwZWNpYWwkMSIsImZpbmlzaF9zdHJpbmckMiIsIndyaXRlX3N0cmluZyQxIiwianNvbl9zdHJpbmdfb2Zfc3RyaW5nJDEiLCJ3cml0ZV9udWxsJDEiLCJ3cml0ZV9ib29sJDEiLCJ3cml0ZV9kaWdpdHMkMSIsIndyaXRlX2ludCQxIiwiZmxvYXRfbmVlZHNfcGVyaW9kJDEiLCJ3cml0ZV9mbG9hdCQxIiwid3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMkMSIsIndyaXRlX2Zsb2F0X3ByZWMkMSIsIndyaXRlX3N0ZF9mbG9hdCQxIiwid3JpdGVfc3RkX2Zsb2F0X3ByZWMkMSIsIndyaXRlX2ludGxpdCQwIiwiaXRlcjIkMSIsImZfc2VwJDEiLCJ3cml0ZV92YXJpYW50JDAiLCJ3cml0ZV90JDEiLCJ3cml0ZV90dXBsZSQwIiwid3JpdGVfbGlzdCQxIiwid3JpdGVfYXNzb2MkMSIsIndyaXRlX3N0ZF92YXJpYW50JDAiLCJ3cml0ZV9zdGRfanNvbiQxIiwid3JpdGVfc3RkX3R1cGxlJDAiLCJ0b19idWZmZXIkMSIsInRvX3N0cmluZyQyIiwidG9fY2hhbm5lbCQxIiwidG9fb3V0cHV0JDEiLCJ0b19maWxlJDEiLCJzZXFfdG9fYnVmZmVyJDEiLCJzZXFfdG9fc3RyaW5nJDEiLCJzZXFfdG9fY2hhbm5lbCQxIiwic2VxX3RvX2ZpbGUkMSIsInNvcnQkMSIsInBwX2xpc3QkMSIsImlzX2F0b20kMSIsImZvcm1hdCQxIiwicHAkMyIsInBwJDQiLCJzaG93JDEiLCJlcXVhbCQxIiwicHJldHR5X3ByaW50JDEiLCJwcmV0dHlfdG9fc3RyaW5nJDEiLCJwcmV0dHlfdG9fY2hhbm5lbCQxIiwiaGV4JDMiLCJjdXN0b21fZXJyb3IkMCIsImxleGVyX2Vycm9yJDAiLCJyZWFkX2p1bmskMCIsImxvbmdfZXJyb3IkMCIsIm1pbjEwJDAiLCJtYXgxMCQwIiwiZXh0cmFjdF9wb3NpdGl2ZV9pbnQkMCIsImV4dHJhY3RfbmVnYXRpdmVfaW50JDAiLCJuZXdsaW5lJDAiLCJhZGRfbGV4ZW1lJDAiLCJyZWFkX2pzb24kMyIsIm9jYW1sX2xleF9yZWFkX2pzb25fcmVjJDAiLCJmaW5pc2hfc3RyaW5nJDMiLCJyZWFkX3NwYWNlJDAiLCJyZWFkX29iamVjdF9lbmQkMCIsInJlYWRfaWRlbnQkMCIsInJlYWRfY29sb24kMCIsInJlYWRfanNvbiQwIiwicmVhZF9vYmplY3Rfc2VwJDAiLCJyZWFkX2FycmF5X2VuZCQwIiwicmVhZF9hcnJheV9zZXAkMCIsImFjYyQxIiwicmVhZF90dXBsZV9lbmQkMCIsInJlYWRfdHVwbGVfc2VwJDAiLCJjb25zIiwiZmluaXNoX3ZhcmlhbnQkMCIsImZpbmlzaF9jb21tZW50JDAiLCJmaW5pc2hfZXNjYXBlZF9jaGFyJDAiLCJtYXBfc3RyaW5nJDAiLCJmaW5pc2hfc3RyaW5nbGl0JDAiLCJyZWFkX2d0JDAiLCJyZWFkX2x0JDAiLCJyZWFkX2NvbW1hJDAiLCJzdGFydF9hbnlfdmFyaWFudCQwIiwicmVhZF9lb2YkMCIsInJlYWRfbnVsbCQwIiwicmVhZF9udWxsX2lmX3Bvc3NpYmxlJDAiLCJyZWFkX2Jvb2wkMCIsIm9jYW1sX2xleF9yZWFkX2ludF9yZWMkMCIsInJlYWRfaW50JDAiLCJvY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMkMCIsInJlYWRfaW50MzIkMCIsIm9jYW1sX2xleF9yZWFkX2ludDY0X3JlYyQwIiwicmVhZF9pbnQ2NCQwIiwib2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyQwIiwicmVhZF9udW1iZXIkMCIsInJlYWRfc3RyaW5nJDAiLCJtYXBfaWRlbnQkMCIsIm9jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyQwIiwicmVhZF9zZXF1ZW5jZSQwIiwib2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjJDAiLCJyZWFkX2xpc3RfcmV2JDAiLCJvY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMiLCJwb3MiLCJyZWFkX3R1cGxlJDAiLCJyZWFkX3R1cGxlX2VuZDIkMCIsInJlYWRfdHVwbGVfc2VwMiQwIiwib2NhbWxfbGV4X3JlYWRfYWJzdHJhY3RfZmllbGRzJDAiLCJyZWFkX2Fic3RyYWN0X2ZpZWxkcyQwIiwicmVhZF9sY3VybCQwIiwic3RhcnRfYW55X3R1cGxlJDAiLCJyZWFkX2xwYXIkMCIsInJlYWRfcnBhciQwIiwicmVhZF9sYnIkMCIsInJlYWRfcmJyJDAiLCJmaW5pc2hfc2tpcF92YXJpYW50JDAiLCJza2lwX2pzb24kMCIsImZpbmlzaF9za2lwX3N0cmluZ2xpdCQwIiwic2tpcF9qc29uJDMiLCJvY2FtbF9sZXhfc2tpcF9qc29uX3JlYyQwIiwic2tpcF9pZGVudCQwIiwiZmluaXNoX2J1ZmZlcl92YXJpYW50IiwiYnVmZmVyX2pzb24kMCIsImJ1ZmZlcl9zcGFjZSQwIiwiZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQkMCIsImJ1ZmZlcl9qc29uJDMiLCJvY2FtbF9sZXhfYnVmZmVyX2pzb25fcmVjJDAiLCJidWZmZXJfb2JqZWN0X2VuZCQwIiwiYnVmZmVyX2lkZW50JDAiLCJidWZmZXJfY29sb24kMCIsImJ1ZmZlcl9vYmplY3Rfc2VwJDAiLCJidWZmZXJfYXJyYXlfZW5kJDAiLCJidWZmZXJfYXJyYXlfc2VwJDAiLCJidWZmZXJfdHVwbGVfZW5kIiwiYnVmZmVyX3R1cGxlX3NlcCIsImZpbmlzaF9idWZmZXJfY29tbWVudCQwIiwianVuayQwIiwicmVhZF9pbnQ4JDAiLCJyZWFkX2xpc3QkMCIsInJlYWRfYXJyYXkkMCIsInJlYWRfZmllbGRzJDAiLCJmcm9tX2xleGJ1ZiQwIiwiZnJvbV9zdHJpbmckMiIsImZyb21fY2hhbm5lbCQyIiwiZnJvbV9maWxlJDAiLCJzZXFfZnJvbV9sZXhidWYkMCIsInNlcV9mcm9tX3N0cmluZyQwIiwic2VxX2Zyb21fY2hhbm5lbCQwIiwic2VxX2Zyb21fZmlsZSQwIiwibGluZXNlcV9mcm9tX2NoYW5uZWwkMCIsImxpbmVzZXFfZnJvbV9maWxlJDAiLCJwcmV0dGlmeSQwIiwiY29tcGFjdCQwIiwidHlwZXJyJDAiLCJhc3NvYyQwIiwibWVtYmVyJDAiLCJpbmRleCQwIiwibWFwJDAiLCJ0b19hc3NvYyQwIiwidG9fb3B0aW9uJDAiLCJ0b19ib29sJDAiLCJ0b19ib29sX29wdGlvbiQwIiwidG9fbnVtYmVyJDAiLCJ0b19udW1iZXJfb3B0aW9uJDAiLCJ0b19mbG9hdCQwIiwidG9fZmxvYXRfb3B0aW9uJDAiLCJ0b19pbnQkMCIsInRvX2ludF9vcHRpb24kMCIsInRvX2xpc3QkMCIsInRvX3N0cmluZyQzIiwidG9fc3RyaW5nX29wdGlvbiQwIiwiY29udmVydF9lYWNoJDAiLCJmaWx0ZXJfbWFwJDAiLCJmbGF0dGVuJDAiLCJmaWx0ZXJfaW5kZXgkMCIsImZpbHRlcl9saXN0JDAiLCJmaWx0ZXJfbWVtYmVyJDAiLCJmaWx0ZXJfYXNzb2MkMCIsImZpbHRlcl9ib29sJDAiLCJmaWx0ZXJfaW50JDAiLCJmaWx0ZXJfZmxvYXQkMCIsImZpbHRlcl9udW1iZXIkMCIsImZpbHRlcl9zdHJpbmckMCIsImtleXMkMCIsInZhbHVlcyQwIiwiY29tYmluZSQwIiwiaGV4JDQiLCJ3cml0ZV9zcGVjaWFsJDIiLCJmaW5pc2hfc3RyaW5nJDQiLCJ3cml0ZV9zdHJpbmckMiIsImpzb25fc3RyaW5nX29mX3N0cmluZyQyIiwid3JpdGVfbnVsbCQyIiwid3JpdGVfYm9vbCQyIiwid3JpdGVfaW50bGl0JDEiLCJ3cml0ZV9mbG9hdGxpdCQwIiwid3JpdGVfc3RyaW5nbGl0JDAiLCJpdGVyMiQyIiwiZl9zZXAkMiIsIndyaXRlX3ZhcmlhbnQkMSIsIndyaXRlX3QkMiIsIndyaXRlX3R1cGxlJDEiLCJ3cml0ZV9saXN0JDIiLCJ3cml0ZV9hc3NvYyQyIiwid3JpdGVfc3RkX3ZhcmlhbnQkMSIsIndyaXRlX3N0ZF9qc29uJDIiLCJ3cml0ZV9zdGRfdHVwbGUkMSIsInRvX2J1ZmZlciQyIiwidG9fc3RyaW5nJDQiLCJ0b19jaGFubmVsJDIiLCJ0b19vdXRwdXQkMiIsInRvX2ZpbGUkMiIsInNlcV90b19idWZmZXIkMiIsInNlcV90b19zdHJpbmckMiIsInNlcV90b19jaGFubmVsJDIiLCJzZXFfdG9fZmlsZSQyIiwic29ydCQyIiwicHBfbGlzdCQyIiwiaXNfYXRvbSQyIiwiZm9ybWF0JDIiLCJwcCQ1IiwicHAkNiIsInNob3ckMiIsImVxdWFsJDIiLCJwcmV0dHlfcHJpbnQkMiIsInByZXR0eV90b19zdHJpbmckMiIsInByZXR0eV90b19jaGFubmVsJDIiLCJoZXgkNSIsImN1c3RvbV9lcnJvciQxIiwibGV4ZXJfZXJyb3IkMSIsInJlYWRfanVuayQxIiwibG9uZ19lcnJvciQxIiwibWluMTAkMSIsIm1heDEwJDEiLCJleHRyYWN0X3Bvc2l0aXZlX2ludCQxIiwibWFrZV9wb3NpdGl2ZV9pbnQiLCJleHRyYWN0X25lZ2F0aXZlX2ludCQxIiwibWFrZV9uZWdhdGl2ZV9pbnQiLCJuZXdsaW5lJDEiLCJhZGRfbGV4ZW1lJDEiLCJyZWFkX2pzb24kNCIsIm9jYW1sX2xleF9yZWFkX2pzb25fcmVjJDEiLCJmaW5pc2hfc3RyaW5nbGl0JDEiLCJyZWFkX3NwYWNlJDEiLCJyZWFkX29iamVjdF9lbmQkMSIsInJlYWRfaWRlbnQkMSIsInJlYWRfY29sb24kMSIsInJlYWRfanNvbiQxIiwicmVhZF9vYmplY3Rfc2VwJDEiLCJyZWFkX2FycmF5X2VuZCQxIiwicmVhZF9hcnJheV9zZXAkMSIsInJlYWRfdHVwbGVfZW5kJDEiLCJyZWFkX3R1cGxlX3NlcCQxIiwiZmluaXNoX3ZhcmlhbnQkMSIsImZpbmlzaF9jb21tZW50JDEiLCJmaW5pc2hfc3RyaW5nJDUiLCJmaW5pc2hfZXNjYXBlZF9jaGFyJDEiLCJtYXBfc3RyaW5nJDEiLCJyZWFkX2d0JDEiLCJyZWFkX2x0JDEiLCJyZWFkX2NvbW1hJDEiLCJzdGFydF9hbnlfdmFyaWFudCQxIiwicmVhZF9lb2YkMSIsInJlYWRfbnVsbCQxIiwicmVhZF9udWxsX2lmX3Bvc3NpYmxlJDEiLCJyZWFkX2Jvb2wkMSIsIm9jYW1sX2xleF9yZWFkX2ludF9yZWMkMSIsInJlYWRfaW50JDEiLCJvY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMkMSIsInJlYWRfaW50MzIkMSIsIm9jYW1sX2xleF9yZWFkX2ludDY0X3JlYyQxIiwicmVhZF9pbnQ2NCQxIiwib2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyQxIiwicmVhZF9udW1iZXIkMSIsInJlYWRfc3RyaW5nJDEiLCJtYXBfaWRlbnQkMSIsIm9jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyQxIiwicmVhZF9zZXF1ZW5jZSQxIiwib2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjJDEiLCJyZWFkX2xpc3RfcmV2JDEiLCJvY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMkMCIsInJlYWRfdHVwbGUkMSIsInJlYWRfdHVwbGVfZW5kMiQxIiwicmVhZF90dXBsZV9zZXAyJDEiLCJvY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHMkMSIsInJlYWRfYWJzdHJhY3RfZmllbGRzJDEiLCJyZWFkX2xjdXJsJDEiLCJzdGFydF9hbnlfdHVwbGUkMSIsInJlYWRfbHBhciQxIiwicmVhZF9ycGFyJDEiLCJyZWFkX2xiciQxIiwicmVhZF9yYnIkMSIsImZpbmlzaF9za2lwX3ZhcmlhbnQkMSIsInNraXBfanNvbiQxIiwiZmluaXNoX3NraXBfc3RyaW5nbGl0JDEiLCJza2lwX2pzb24kNCIsIm9jYW1sX2xleF9za2lwX2pzb25fcmVjJDEiLCJza2lwX2lkZW50JDEiLCJmaW5pc2hfYnVmZmVyX3ZhcmlhbnQkMCIsImJ1ZmZlcl9qc29uJDEiLCJidWZmZXJfc3BhY2UkMSIsImZpbmlzaF9idWZmZXJfc3RyaW5nbGl0JDEiLCJidWZmZXJfanNvbiQ0Iiwib2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyQxIiwiYnVmZmVyX29iamVjdF9lbmQkMSIsImJ1ZmZlcl9pZGVudCQxIiwiYnVmZmVyX2NvbG9uJDEiLCJidWZmZXJfb2JqZWN0X3NlcCQxIiwiYnVmZmVyX2FycmF5X2VuZCQxIiwiYnVmZmVyX2FycmF5X3NlcCQxIiwiYnVmZmVyX3R1cGxlX2VuZCQwIiwiYnVmZmVyX3R1cGxlX3NlcCQwIiwiZmluaXNoX2J1ZmZlcl9jb21tZW50JDEiLCJqdW5rJDEiLCJyZWFkX2ludDgkMSIsInJlYWRfbGlzdCQxIiwicmVhZF9hcnJheSQxIiwicmVhZF9maWVsZHMkMSIsImZyb21fbGV4YnVmJDEiLCJmcm9tX3N0cmluZyQ0IiwiZnJvbV9jaGFubmVsJDQiLCJmcm9tX2ZpbGUkMSIsInNlcV9mcm9tX2xleGJ1ZiQxIiwic2VxX2Zyb21fc3RyaW5nJDEiLCJzZXFfZnJvbV9jaGFubmVsJDEiLCJzZXFfZnJvbV9maWxlJDEiLCJsaW5lc2VxX2Zyb21fY2hhbm5lbCQxIiwibGluZXNlcV9mcm9tX2ZpbGUkMSIsInByZXR0aWZ5JDEiLCJjb21wYWN0JDEiLCJ5b2pzb25fb2ZfdW5pdCIsInlvanNvbl9vZl9ib29sIiwiYiIsInlvanNvbl9vZl9zdHJpbmciLCJzdHIiLCJ5b2pzb25fb2ZfYnl0ZXMiLCJieXRlcyIsInlvanNvbl9vZl9jaGFyIiwiYyIsInlvanNvbl9vZl9pbnQiLCJuIiwieW9qc29uX29mX2Zsb2F0IiwieW9qc29uX29mX2ludDMyIiwieW9qc29uX29mX2ludDY0IiwieW9qc29uX29mX25hdGl2ZWludCIsInlvanNvbl9vZl9yZWYiLCJ5b2pzb25fb2ZfYSIsInJmIiwieW9qc29uX29mX2xhenlfdCIsImx2IiwieW9qc29uX29mX29wdGlvbiIsIngiLCJ5b2pzb25fb2ZfcGFpciIsInlvanNvbl9vZl9iIiwiYSIsInlvanNvbl9vZl90cmlwbGUiLCJ5b2pzb25fb2ZfYyIsInlvanNvbl9vZl9saXN0IiwibHN0IiwieW9qc29uX29mX2FycmF5IiwiYXIiLCJsc3RfcmVmIiwiaSIsInlvanNvbl9vZl9oYXNodGJsIiwieW9qc29uX29mX2tleSIsInlvanNvbl9vZl92YWwiLCJodGJsIiwiY29sbCIsImsiLCJ2IiwiYWNjIiwieW9qc29uX29mX29wYXF1ZSIsInlvanNvbl9vZl9mdW4iLCJyZWNvcmRfY2hlY2tfZXh0cmFfZmllbGRzIiwib2ZfeW9qc29uX2Vycm9yX2V4biIsImV4YyIsInlvanNvbiIsIm9mX3lvanNvbl9lcnJvciIsIndoYXQiLCJ1bml0X29mX3lvanNvbiIsImJvb2xfb2ZfeW9qc29uIiwic3RyaW5nX29mX3lvanNvbiIsImJ5dGVzX29mX3lvanNvbiIsImNoYXJfb2ZfeW9qc29uIiwiaW50X29mX3lvanNvbiIsImZsb2F0X29mX3lvanNvbiIsImludDMyX29mX3lvanNvbiIsImludDY0X29mX3lvanNvbiIsIm5hdGl2ZWludF9vZl95b2pzb24iLCJyZWZfb2ZfeW9qc29uIiwiYV9vZl95b2pzb24iLCJsYXp5X3Rfb2ZfeW9qc29uIiwib3B0aW9uX29mX3lvanNvbiIsInBhaXJfb2ZfeW9qc29uIiwiYl9vZl95b2pzb24iLCJiX3lvanNvbiIsImFfeW9qc29uIiwidHJpcGxlX29mX3lvanNvbiIsImNfb2ZfeW9qc29uIiwiY195b2pzb24iLCJsaXN0X29mX3lvanNvbiIsInJldl9sc3QiLCJhcnJheV9vZl95b2pzb24iLCJ0IiwiaCIsImxlbiIsInJlcyIsInQkMCIsImgkMCIsImhhc2h0Ymxfb2ZfeW9qc29uIiwia2V5X29mX3lvanNvbiIsInZhbF9vZl95b2pzb24iLCJhY3QiLCJ2X3lvanNvbiIsImtfeW9qc29uIiwib3BhcXVlX29mX3lvanNvbiIsImZ1bl9vZl95b2pzb24iLCJzcHJpbnRmIiwidHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkIiwibG9jIiwic3RhZ19ub19hcmdzIiwic3RhZ19pbmNvcnJlY3Rfbl9hcmdzIiwidGFnIiwibXNnIiwic3RhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9zdW0iLCJlbXB0eV9saXN0X2ludmFsaWRfc3VtIiwidW5leHBlY3RlZF9zdGFnIiwicmVjb3JkX3N1cGVyZmx1b3VzX2ZpZWxkcyIsInJldl9mbGRfbmFtZXMiLCJmbGRfbmFtZXNfc3RyIiwicmVjb3JkX2R1cGxpY2F0ZV9maWVsZHMiLCJyZWNvcmRfZXh0cmFfZmllbGRzIiwicmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCIsInBhcmFtJDEiLCJmaWVsZCIsInBhcmFtJDIiLCJyZWNvcmRfdW5kZWZpbmVkX2VsZW1lbnRzIiwidW5kZWZpbmVkJDAiLCJyZWNvcmRfbGlzdF9pbnN0ZWFkX2F0b20iLCJyZWNvcmRfcG9seV9maWVsZF92YWx1ZSIsIm5vX3ZhcmlhbnRfbWF0Y2giLCJub19tYXRjaGluZ192YXJpYW50X2ZvdW5kIiwicHRhZ19ub19hcmdzIiwicHRhZ19pbmNvcnJlY3Rfbl9hcmdzIiwiY25zdHIiLCJwdGFnX3Rha2VzX2FyZ3MiLCJuZXN0ZWRfbGlzdF9pbnZhbGlkX3BvbHlfdmFyIiwiZW1wdHlfbGlzdF9pbnZhbGlkX3BvbHlfdmFyIiwiZW1wdHlfdHlwZSIsInN5bWJvbCIsInlvanNvbl9vZl9pb19pbnB1dCIsInlvanNvbl9vZl9pb19sb2ciLCJ2X2lvX291dHB1dCIsInZfaW9faW5wdXQiLCJhcmciLCJibmRzIiwiYXJnJDAiLCJibmRzJDAiLCJ5b2pzb25fb2Zfc291cmNlX3Bvc2l0aW9uIiwidl9sYXdfaGVhZGluZ3MiLCJ2X2VuZF9jb2x1bW4iLCJ2X2VuZF9saW5lIiwidl9zdGFydF9jb2x1bW4iLCJ2X3N0YXJ0X2xpbmUiLCJ2X2ZpbGVuYW1lIiwiYXJnJDEiLCJibmRzJDEiLCJhcmckMiIsImJuZHMkMiIsImFyZyQzIiwiYm5kcyQzIiwiYXJnJDQiLCJibmRzJDQiLCJtb25leV9vZl9jZW50c19zdHJpbmciLCJjZW50cyIsIm1vbmV5X29mX3VuaXRzX2ludCIsInVuaXRzIiwibW9uZXlfb2ZfY2VudHNfaW50ZWdlciIsIm1vbmV5X3RvX2Zsb2F0IiwibSIsIm1vbmV5X29mX2RlY2ltYWwiLCJkIiwibW9uZXlfdG9fc3RyaW5nIiwibW9uZXlfdG9fY2VudHMiLCJtb25leV9yb3VuZCIsImRlY2ltYWxfb2Zfc3RyaW5nIiwiZGVjaW1hbF90b19mbG9hdCIsImRlY2ltYWxfb2ZfZmxvYXQiLCJkZWNpbWFsX29mX2ludGVnZXIiLCJkZWNpbWFsX3RvX3N0cmluZyIsIm1heF9wcmVjX2RpZ2l0cyIsImkiLCJzaWduIiwibiIsImludF9wYXJ0IiwibiQwIiwiZGlnaXRzIiwibGVhZGluZ196ZXJvZXMiLCJkaWdpdCIsIm51bV9sZWFkaW5nX3plcm9lcyIsImkkMCIsImZtdCIsImRlY2ltYWxfcm91bmQiLCJxIiwiZGVjaW1hbF9vZl9tb25leSIsImludGVnZXJfb2Zfc3RyaW5nIiwicyIsImludGVnZXJfdG9fc3RyaW5nIiwiaW50ZWdlcl90b19pbnQiLCJpbnRlZ2VyX29mX2ludCIsImludGVnZXJfZXhwb25lbnRpYXRpb24iLCJlIiwiaW50ZWdlcl9sb2cyIiwieWVhcl9vZl9kYXRlIiwieSIsIm1vbnRoX251bWJlcl9vZl9kYXRlIiwiaXNfbGVhcF95ZWFyIiwieSQwIiwiZGF5X29mX21vbnRoX29mX2RhdGUiLCJkJDAiLCJkYXRlX29mX251bWJlcnMiLCJ5ZWFyIiwibW9udGgiLCJkYXkiLCJkYXRlX3RvX3N0cmluZyIsImZpcnN0X2RheV9vZl9tb250aCIsImxhc3RfZGF5X29mX21vbnRoIiwiZHVyYXRpb25fb2ZfbnVtYmVycyIsImR1cmF0aW9uX3RvX3N0cmluZyIsImR1cmF0aW9uX3RvX3llYXJzX21vbnRoc19kYXlzIiwieW9qc29uX29mX3J1bnRpbWVfdmFsdWUiLCJ2MCQ0IiwidjAkNSIsInYwJDYiLCJ2MCIsInYwJDciLCJ2MCQwIiwidjAkOCIsInYwJDEiLCJ2MCQ5IiwidjAkMiIsInYwJDEwIiwidjAkMyIsInYxIiwidjAkMTEiLCJ2MCQxMiIsInYxJDAiLCJ2MCQxMyIsInYwJDE0IiwidjEkMSIsInYxJDIiLCJ2MSQzIiwidjAkMTUiLCJ2MCQxNiIsInYxJDQiLCJ2MCQxNyIsInYwJDE4IiwidW5lbWJlZGRhYmxlIiwiZW1iZWRfdW5pdCIsImVtYmVkX2Jvb2wiLCJ4IiwiZW1iZWRfbW9uZXkiLCJlbWJlZF9pbnRlZ2VyIiwiZW1iZWRfZGVjaW1hbCIsImVtYmVkX2RhdGUiLCJlbWJlZF9kdXJhdGlvbiIsImVtYmVkX2FycmF5IiwiZiIsInlvanNvbl9vZl9pbmZvcm1hdGlvbiIsInYiLCJ5b2pzb25fb2ZfZXZlbnQiLCJ5b2pzb25fb2ZfdmFyX2RlZiIsInlvanNvbl9vZl9mdW5fY2FsbCIsInZfYm9keSIsInZfaW5wdXRzIiwidl9uYW1lIiwidl9mdW5fY2FsbHMiLCJ2X3ZhbHVlIiwidl9pbyIsInZfcG9zIiwidl9vdXRwdXQiLCJ2X2Z1bl9pbnB1dHMiLCJ2X2Z1bl9uYW1lIiwibG9nX3JlZiIsInJlc2V0X2xvZyIsInJldHJpZXZlX2xvZyIsImxvZ19iZWdpbl9jYWxsIiwiaW5mbyIsImxvZ19lbmRfY2FsbCIsImxvZ192YXJpYWJsZV9kZWZpbml0aW9uIiwiaW8iLCJlbWJlZCIsImxvZ19kZWNpc2lvbl90YWtlbiIsInBvcyIsInBwX2V2ZW50cyIsIm9wdCIsInBwZiIsImV2ZW50cyIsInN0aCIsImlzX2ZpcnN0X2NhbGwiLCJmb3JtYXRfdmFyX2RlZiIsInZhciQwIiwiZm9ybWF0X3Bvc19vcHQiLCJmb3JtYXRfdmFsdWUiLCJmb3JtYXRfdmFyX2RlZnMiLCJmb3JtYXRfdmFyX2RlZl93aXRoX2Z1bl9jYWxscyIsInZhcl93aXRoX2Z1biIsImZ1bl9jYWxsIiwiZm9ybWF0X2V2ZW50IiwieCQwIiwieCQxIiwieCQyIiwieCQzIiwieCQ0IiwibmFtZSIsImF0dHJzIiwibmFtZSQwIiwidmFsdWUiLCJlbHRzIiwidmFyX2RlZl93aXRoX2Z1biIsIm91dHB1dCIsImJvZHkiLCJmdW5faW5wdXRzIiwiZnVuX25hbWUiLCJib2R5JDAiLCJpbnB1dHMiLCJlbXB0eSIsImVtcHR5X2N0eCIsInJhd19ldmVudF90b19zdHJpbmciLCJuYW1lJDEiLCJ0YWtlX3doaWxlIiwicCIsImwiLCJ0IiwiaCIsInJlc3QiLCJ0JDAiLCJwYXJzZV9yYXdfZXZlbnRzIiwicmF3X2V2ZW50cyIsIm5iX3Jhd19ldmVudHMiLCJpc19mdW5jdGlvbl9jYWxsIiwiaW5mb3MiLCJpc192YXJfZGVmIiwicGFyc2VfZXZlbnRzIiwiY3R4IiwiY3R4JDAiLCJ2YXJfbmFtZSIsImJvZHlfY3R4IiwibHMkMCIsImN0eCQxIiwicmVzdCQwIiwicmVzdCQxIiwiY3R4JDIiLCJpbmZvcyQwIiwicGFyc2VfZnVuX2NhbGwiLCJyZXN0JDIiLCJjdHgkMyIsInJlc3QkMyIsInZhcl9kb3Rfc3Vic2NvcGVfdmFyX25hbWUiLCJscyIsImN0eCQ0IiwiaW5mb3MkMSIsInJhd19ldmVudHMkMCIsImZ1bl9jYWxscyIsInJlc3QkNCIsImluZm9zJDIiLCJmdW5fY2FsbCQwIiwiZnVuX2NhbGxzJDAiLCJmdW5fY2FsbHMkMSIsInJlc3QkNiIsInZhbHVlJDAiLCJpbyQwIiwibmFtZSQyIiwidmFyX2NvbXAiLCJyZXN0JDUiLCJjdHgkNiIsImN0eCQ1IiwiYm9keV9yZXYiLCJ2YXJfZGVmIiwib3V0cHV0JDAiLCJtc2ciLCJoYW5kbGVfZGVmYXVsdCIsImV4Y2VwdGlvbnMiLCJqdXN0IiwiY29ucyIsImFjYyIsImV4Y2VwdCIsIm5ld192YWwiLCJoYW5kbGVfZGVmYXVsdF9vcHQiLCJiIiwibm9faW5wdXQiLCJjb21wYXJlX3BlcmlvZHMiLCJwMSIsInAyIiwicDFfZGF5cyIsInAyX2RheXMiLCJlcXVhbF9wZXJpb2RzIiwib19ub3QiLCJvX2xlbmd0aCIsImEiLCJvX21pbnVzX2ludCIsImkxIiwib19taW51c19yYXQiLCJvX21pbnVzX21vbiIsIm0xIiwib19taW51c19kdXIiLCJvX2FuZCIsIm9fb3IiLCJvX3hvciIsIm9fZXEiLCJvX21hcCIsIm9fcmVkdWNlIiwiZGZ0IiwibGVuIiwiciIsIm9fY29uY2F0Iiwib19maWx0ZXIiLCJvX2FkZF9pbnRfaW50IiwiaTIiLCJvX2FkZF9yYXRfcmF0Iiwib19hZGRfbW9uX21vbiIsIm0yIiwib19hZGRfZGF0X2R1ciIsImRhIiwiZHUiLCJvX2FkZF9kdXJfZHVyIiwib19zdWJfaW50X2ludCIsIm9fc3ViX3JhdF9yYXQiLCJvX3N1Yl9tb25fbW9uIiwib19zdWJfZGF0X2RhdCIsIm9fc3ViX2RhdF9kdXIiLCJkYXQiLCJkdXIiLCJvX3N1Yl9kdXJfZHVyIiwib19tdWx0X2ludF9pbnQiLCJvX211bHRfcmF0X3JhdCIsIm9fbXVsdF9tb25fcmF0IiwiaTFfYWJzIiwiaTJfYWJzIiwic2lnbl9pbnQiLCJyYXRfcmVzdWx0IiwicmVtYWluZGVyIiwicmVzIiwib19tdWx0X2R1cl9pbnQiLCJvX2Rpdl9pbnRfaW50Iiwib19kaXZfcmF0X3JhdCIsIm9fZGl2X21vbl9tb24iLCJvX2Rpdl9tb25fcmF0IiwicjEiLCJvX2Rpdl9kdXJfZHVyIiwiZDEiLCJkMiIsIm9fbHRfaW50X2ludCIsIm9fbHRfcmF0X3JhdCIsIm9fbHRfbW9uX21vbiIsIm9fbHRfZHVyX2R1ciIsIm9fbHRfZGF0X2RhdCIsIm9fbHRlX2ludF9pbnQiLCJvX2x0ZV9yYXRfcmF0Iiwib19sdGVfbW9uX21vbiIsIm9fbHRlX2R1cl9kdXIiLCJvX2x0ZV9kYXRfZGF0Iiwib19ndF9pbnRfaW50Iiwib19ndF9yYXRfcmF0Iiwib19ndF9tb25fbW9uIiwib19ndF9kdXJfZHVyIiwib19ndF9kYXRfZGF0Iiwib19ndGVfaW50X2ludCIsIm9fZ3RlX3JhdF9yYXQiLCJvX2d0ZV9tb25fbW9uIiwib19ndGVfZHVyX2R1ciIsIm9fZ3RlX2RhdF9kYXQiLCJvX2VxX2ludF9pbnQiLCJvX2VxX3JhdF9yYXQiLCJvX2VxX21vbl9tb24iLCJvX2VxX2R1cl9kdXIiLCJvX2VxX2RhdF9kYXQiLCJvX2ZvbGQiLCJvX25vdCQwIiwib19sZW5ndGgkMCIsIm9fdG9yYXRfaW50Iiwib190b3JhdF9tb24iLCJvX3RvbW9uZXlfcmF0Iiwib19nZXREYXkiLCJvX2dldE1vbnRoIiwib19nZXRZZWFyIiwib19maXJzdERheU9mTW9udGgiLCJvX2xhc3REYXlPZk1vbnRoIiwib19yb3VuZF9tb24iLCJvX3JvdW5kX3JhdCIsIm9fbWludXNfaW50JDAiLCJvX21pbnVzX3JhdCQwIiwib19taW51c19tb24kMCIsIm9fbWludXNfZHVyJDAiLCJvX2FuZCQwIiwib19vciQwIiwib194b3IkMCIsIm9fZXEkMCIsIm9fbWFwJDAiLCJvX3JlZHVjZSQwIiwib19jb25jYXQkMCIsIm9fZmlsdGVyJDAiLCJvX2FkZF9pbnRfaW50JDAiLCJvX2FkZF9yYXRfcmF0JDAiLCJvX2FkZF9tb25fbW9uJDAiLCJvX2FkZF9kYXRfZHVyJDAiLCJvX2FkZF9kdXJfZHVyJDAiLCJvX3N1Yl9pbnRfaW50JDAiLCJvX3N1Yl9yYXRfcmF0JDAiLCJvX3N1Yl9tb25fbW9uJDAiLCJvX3N1Yl9kYXRfZGF0JDAiLCJvX3N1Yl9kYXRfZHVyJDAiLCJvX3N1Yl9kdXJfZHVyJDAiLCJvX211bHRfaW50X2ludCQwIiwib19tdWx0X3JhdF9yYXQkMCIsIm9fbXVsdF9tb25fcmF0JDAiLCJvX211bHRfZHVyX2ludCQwIiwib19kaXZfaW50X2ludCQwIiwib19kaXZfcmF0X3JhdCQwIiwib19kaXZfbW9uX21vbiQwIiwib19kaXZfbW9uX3JhdCQwIiwib19kaXZfZHVyX2R1ciQwIiwib19sdF9pbnRfaW50JDAiLCJvX2x0X3JhdF9yYXQkMCIsIm9fbHRfbW9uX21vbiQwIiwib19sdF9kdXJfZHVyJDAiLCJvX2x0X2RhdF9kYXQkMCIsIm9fbHRlX2ludF9pbnQkMCIsIm9fbHRlX3JhdF9yYXQkMCIsIm9fbHRlX21vbl9tb24kMCIsIm9fbHRlX2R1cl9kdXIkMCIsIm9fbHRlX2RhdF9kYXQkMCIsIm9fZ3RfaW50X2ludCQwIiwib19ndF9yYXRfcmF0JDAiLCJvX2d0X21vbl9tb24kMCIsIm9fZ3RfZHVyX2R1ciQwIiwib19ndF9kYXRfZGF0JDAiLCJvX2d0ZV9pbnRfaW50JDAiLCJvX2d0ZV9yYXRfcmF0JDAiLCJvX2d0ZV9tb25fbW9uJDAiLCJvX2d0ZV9kdXJfZHVyJDAiLCJvX2d0ZV9kYXRfZGF0JDAiLCJvX2VxX2ludF9pbnQkMCIsIm9fZXFfcmF0X3JhdCQwIiwib19lcV9tb25fbW9uJDAiLCJvX2VxX2R1cl9kdXIkMCIsIm9fZXFfZGF0X2RhdCQwIiwib19mb2xkJDAiLCJ2ZXJzaW9uIiwiZ2l0X3ZlcnNpb24iLCJyYWlzZSIsImV4biIsIm1vZHVsZSIsImdsb2JhbFRoaXMiLCJzeW1ib2wiLCJ4IiwieSIsInN5bWJvbCQwIiwic3ltYm9sJDEiLCJzeW1ib2wkMiIsInN5bWJvbCQzIiwic3ltYm9sJDQiLCJjb21wYXJlIiwiZXF1YWwiLCJtYXgiLCJtaW4iLCJlcXVhbCQwIiwiZXF1YWwkMSIsInN5bWJvbCQ1Iiwic3ltYm9sJDYiLCJzeW1ib2wkNyIsInN5bWJvbCQ4Iiwic3ltYm9sJDkiLCJzeW1ib2wkMTAiLCJjb21wYXJlJDIiLCJlcXVhbCQyIiwibWF4JDAiLCJtaW4kMCIsImdsb2JhbCIsIm5vX2hhbmRsZXIiLCJudWxsIiwidW5kZWZpbmVkIiwicmV0dXJuJDAiLCJtYXAkMCIsImYiLCJiaW5kIiwidGVzdCIsIml0ZXIkMCIsImNhc2UkMCIsImciLCJnZXQiLCJvcHRpb24iLCJ4JDAiLCJ0b19vcHRpb24iLCJyZXR1cm4kMSIsIm1hcCQxIiwiYmluZCQwIiwidGVzdCQwIiwiaXRlciQxIiwiY2FzZSQxIiwiZ2V0JDAiLCJvcHRpb24kMCIsInRvX29wdGlvbiQwIiwiY29lcmNlIiwiY29lcmNlX29wdCIsIm5mYyIsIm5mZCIsIm5ma2MiLCJuZmtkIiwic3RyaW5nX2NvbnN0ciIsIm9iamVjdF9rZXlzIiwiYXJyYXlfbGVuZ3RoIiwiYXJyYXlfZ2V0IiwiYXJyYXlfc2V0IiwiYXJyYXlfbWFwIiwiYSIsImlkeCIsImFycmF5X21hcGkiLCJzdHJfYXJyYXkiLCJtYXRjaF9yZXN1bHQiLCJtYXRoIiwiZXJyb3JfY29uc3RyIiwibmFtZSIsImUiLCJtZXNzYWdlIiwic3RhY2siLCJ0b19zdHJpbmciLCJyYWlzZV9qc19lcnJvciIsInN0cmluZ19vZl9lcnJvciIsIkpTT04iLCJkZWNvZGVVUkkiLCJzIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiZW5jb2RlVVJJIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiZXNjYXBlIiwidW5lc2NhcGUiLCJpc05hTiIsImkiLCJwYXJzZUludCIsInMkMCIsInBhcnNlRmxvYXQiLCJleHBvcnRfanMiLCJmaWVsZCIsImpzb29fZXhwb3J0cyIsImV4cG9ydCQwIiwiZXhwb3J0X2FsbCIsIm9iaiIsImtleSIsImxpc3Rfb2Zfbm9kZUxpc3QiLCJub2RlTGlzdCIsImxlbmd0aCIsImFjYyIsImkkMCIsImFjYyQwIiwiaSQxIiwiZGlzY29ubmVjdGVkIiwicHJlY2VkaW5nIiwiZm9sbG93aW5nIiwiY29udGFpbnMkMCIsImNvbnRhaW5lZF9ieSIsImltcGxlbWVudGF0aW9uX3NwZWNpZmljIiwiaGFzIiwidCIsIm1hc2siLCJhZGQiLCJhcHBlbmRDaGlsZCIsInAiLCJuIiwicmVtb3ZlQ2hpbGQiLCJyZXBsYWNlQ2hpbGQiLCJvIiwiaW5zZXJ0QmVmb3JlIiwibm9kZVR5cGUiLCJjYXN0IiwiZWxlbWVudCIsInRleHQiLCJhdHRyIiwiaGFuZGxlciIsInJlcyIsImV2ZW50IiwiZnVsbF9oYW5kbGVyIiwidGhpcyQwIiwiaW52b2tlX2hhbmRsZXIiLCJldmVudFRhcmdldCIsIm1ha2UkMCIsImFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyIsImNhcHR1cmUiLCJvbmNlIiwicGFzc2l2ZSIsIml0ZXIiLCJiIiwiYWRkRXZlbnRMaXN0ZW5lciIsInR5cCIsImgiLCJjYXB0IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImlkIiwicHJldmVudERlZmF1bHQiLCJjcmVhdGVDdXN0b21FdmVudCIsImJ1YmJsZXMiLCJjYW5jZWxhYmxlIiwiZGV0YWlsIiwib3B0X2l0ZXIiLCJhcnJheUJ1ZmZlciIsImludDhBcnJheV9pbkJ1ZmZlciIsImludDE2QXJyYXlfaW5CdWZmZXIiLCJ1aW50MTZBcnJheV9pbkJ1ZmZlciIsImludDMyQXJyYXlfaW5CdWZmZXIiLCJ1aW50MzJBcnJheV9pbkJ1ZmZlciIsImZsb2F0MzJBcnJheV9pbkJ1ZmZlciIsImZsb2F0NjRBcnJheV9pbkJ1ZmZlciIsInNldCIsImdldCQxIiwidW5zYWZlX2dldCIsImRhdGFWaWV3Iiwib2ZfYXJyYXlCdWZmZXIiLCJhYiIsInVpbnQ4IiwiZmlsdGVyX21hcCIsInEiLCJ2IiwidiQwIiwiYmxvYl9yYXciLCJjb250ZW50VHlwZSIsImVuZGluZ3MiLCJvcHRpb25zIiwib3B0aW9ucyQwIiwiYmxvYl9mcm9tX3N0cmluZyIsImJsb2JfZnJvbV9hbnkiLCJsIiwiYSQwIiwibCQwIiwiZmlsZW5hbWUiLCJmaWxlIiwibmFtZSQwIiwiZG9jX2NvbnN0ciIsImRvY3VtZW50IiwiYmxvYiIsInN0cmluZyIsImFycmF5QnVmZmVyJDAiLCJsb2Fkc3RhcnQiLCJwcm9ncmVzcyIsImFib3J0IiwiZXJyb3IiLCJsb2FkIiwibG9hZGVuZCIsImZpbGVSZWFkZXIiLCJvbklFIiwiY2xpY2siLCJjb3B5JDAiLCJjdXQiLCJwYXN0ZSIsImRibGNsaWNrIiwibW91c2Vkb3duIiwibW91c2V1cCIsIm1vdXNlb3ZlciIsIm1vdXNlbW92ZSIsIm1vdXNlb3V0Iiwia2V5cHJlc3MiLCJrZXlkb3duIiwia2V5dXAiLCJtb3VzZXdoZWVsIiwid2hlZWwiLCJET01Nb3VzZVNjcm9sbCIsInRvdWNoc3RhcnQiLCJ0b3VjaG1vdmUiLCJ0b3VjaGVuZCIsInRvdWNoY2FuY2VsIiwiZHJhZ3N0YXJ0IiwiZHJhZ2VuZCIsImRyYWdlbnRlciIsImRyYWdvdmVyIiwiZHJhZ2xlYXZlIiwiZHJhZyIsImRyb3AiLCJoYXNoY2hhbmdlIiwiY2hhbmdlIiwiaW5wdXQiLCJ0aW1ldXBkYXRlIiwic3VibWl0Iiwic2Nyb2xsIiwiZm9jdXMiLCJibHVyIiwibG9hZCQwIiwidW5sb2FkIiwiYmVmb3JldW5sb2FkIiwicmVzaXplIiwib3JpZW50YXRpb25jaGFuZ2UiLCJwb3BzdGF0ZSIsImVycm9yJDAiLCJhYm9ydCQwIiwic2VsZWN0Iiwib25saW5lIiwib2ZmbGluZSIsImNoZWNraW5nIiwibm91cGRhdGUiLCJkb3dubG9hZGluZyIsInByb2dyZXNzJDAiLCJ1cGRhdGVyZWFkeSIsImNhY2hlZCIsIm9ic29sZXRlIiwiZG9tQ29udGVudExvYWRlZCIsImFuaW1hdGlvbnN0YXJ0IiwiYW5pbWF0aW9uZW5kIiwiYW5pbWF0aW9uaXRlcmF0aW9uIiwiYW5pbWF0aW9uY2FuY2VsIiwidHJhbnNpdGlvbnJ1biIsInRyYW5zaXRpb25zdGFydCIsInRyYW5zaXRpb25lbmQiLCJ0cmFuc2l0aW9uY2FuY2VsIiwiY2FucGxheSIsImNhbnBsYXl0aHJvdWdoIiwiZHVyYXRpb25jaGFuZ2UiLCJlbXB0aWVkIiwiZW5kZWQiLCJnb3Rwb2ludGVyY2FwdHVyZSIsImxvYWRlZGRhdGEiLCJsb2FkZWRtZXRhZGF0YSIsImxvYWRzdGFydCQwIiwibG9zdHBvaW50ZXJjYXB0dXJlIiwibWVzc2FnZSQwIiwicGF1c2UiLCJwbGF5IiwicGxheWluZyIsInBvaW50ZXJlbnRlciIsInBvaW50ZXJjYW5jZWwiLCJwb2ludGVyZG93biIsInBvaW50ZXJsZWF2ZSIsInBvaW50ZXJtb3ZlIiwicG9pbnRlcm91dCIsInBvaW50ZXJvdmVyIiwicG9pbnRlcnVwIiwicmF0ZWNoYW5nZSIsInNlZWtlZCIsInNlZWtpbmciLCJzdGFsbGVkIiwic3VzcGVuZCIsInZvbHVtZWNoYW5nZSIsIndhaXRpbmciLCJtYWtlJDEiLCJkIiwibG9jYXRpb25fb3JpZ2luIiwibG9jIiwiZ2V0RWxlbWVudEJ5SWQiLCJwbm9kZSIsImdldEVsZW1lbnRCeUlkX2V4biIsImdldEVsZW1lbnRCeUlkX29wdCIsImdldEVsZW1lbnRCeUlkX2NvZXJjZSIsImNyZWF0ZUVsZW1lbnQiLCJ1bnNhZmVDcmVhdGVFbGVtZW50IiwiZG9jIiwiY3JlYXRlRWxlbWVudFN5bnRheCIsInVuc2FmZUNyZWF0ZUVsZW1lbnRFeCIsInR5cGUiLCJlbHQiLCJlbCIsImNyZWF0ZUh0bWwiLCJjcmVhdGVIZWFkIiwiY3JlYXRlTGluayIsImNyZWF0ZVRpdGxlIiwiY3JlYXRlTWV0YSIsImNyZWF0ZUJhc2UiLCJjcmVhdGVTdHlsZSIsImNyZWF0ZUJvZHkiLCJjcmVhdGVGb3JtIiwiY3JlYXRlT3B0Z3JvdXAiLCJjcmVhdGVPcHRpb24iLCJjcmVhdGVTZWxlY3QiLCJjcmVhdGVJbnB1dCIsImNyZWF0ZVRleHRhcmVhIiwiY3JlYXRlQnV0dG9uIiwiY3JlYXRlTGFiZWwiLCJjcmVhdGVGaWVsZHNldCIsImNyZWF0ZUxlZ2VuZCIsImNyZWF0ZVVsIiwiY3JlYXRlT2wiLCJjcmVhdGVEbCIsImNyZWF0ZUxpIiwiY3JlYXRlRGl2IiwiY3JlYXRlRW1iZWQiLCJjcmVhdGVQIiwiY3JlYXRlSDEiLCJjcmVhdGVIMiIsImNyZWF0ZUgzIiwiY3JlYXRlSDQiLCJjcmVhdGVINSIsImNyZWF0ZUg2IiwiY3JlYXRlUSIsImNyZWF0ZUJsb2NrcXVvdGUiLCJjcmVhdGVQcmUiLCJjcmVhdGVCciIsImNyZWF0ZUhyIiwiY3JlYXRlSW5zIiwiY3JlYXRlRGVsIiwiY3JlYXRlQSIsImNyZWF0ZUltZyIsImNyZWF0ZU9iamVjdCIsImNyZWF0ZVBhcmFtIiwiY3JlYXRlTWFwIiwiY3JlYXRlQXJlYSIsImNyZWF0ZVNjcmlwdCIsImNyZWF0ZVRhYmxlIiwiY3JlYXRlQ2FwdGlvbiIsImNyZWF0ZUNvbCIsImNyZWF0ZUNvbGdyb3VwIiwiY3JlYXRlVGhlYWQiLCJjcmVhdGVUZm9vdCIsImNyZWF0ZVRib2R5IiwiY3JlYXRlVHIiLCJjcmVhdGVUaCIsImNyZWF0ZVRkIiwiY3JlYXRlU3ViIiwiY3JlYXRlU3VwIiwiY3JlYXRlU3BhbiIsImNyZWF0ZVR0IiwiY3JlYXRlSSIsImNyZWF0ZUIiLCJjcmVhdGVCaWciLCJjcmVhdGVTbWFsbCIsImNyZWF0ZUVtIiwiY3JlYXRlU3Ryb25nIiwiY3JlYXRlQ2l0ZSIsImNyZWF0ZURmbiIsImNyZWF0ZUNvZGUiLCJjcmVhdGVTYW1wIiwiY3JlYXRlS2JkIiwiY3JlYXRlVmFyIiwiY3JlYXRlQWJiciIsImNyZWF0ZURkIiwiY3JlYXRlRHQiLCJjcmVhdGVOb3NjcmlwdCIsImNyZWF0ZUFkZHJlc3MiLCJjcmVhdGVGcmFtZXNldCIsImNyZWF0ZUZyYW1lIiwiY3JlYXRlSWZyYW1lIiwiY3JlYXRlQXVkaW8iLCJjcmVhdGVWaWRlbyIsImNyZWF0ZUNhbnZhcyIsImh0bWxfZWxlbWVudCIsImVsZW1lbnQkMCIsInVuc2FmZUNvZXJjZSIsInRhZyIsImFyZWEiLCJiYXNlIiwiYmxvY2txdW90ZSIsImJvZHkiLCJiciIsImJ1dHRvbiIsImNhbnZhcyIsImNhcHRpb24iLCJjb2wiLCJjb2xncm91cCIsImRlbCIsImRpdiIsImRsIiwiZmllbGRzZXQiLCJlbWJlZCIsImZvcm0iLCJmcmFtZXNldCIsImZyYW1lIiwiaDEiLCJoMiIsImgzIiwiaDQiLCJoNSIsImg2IiwiaGVhZCIsImhyIiwiaHRtbCIsImlmcmFtZSIsImltZyIsImlucHV0JDAiLCJpbnMiLCJsYWJlbCIsImxlZ2VuZCIsImxpIiwibGluayIsIm1hcCQyIiwibWV0YSIsIm9iamVjdCIsIm9sIiwib3B0Z3JvdXAiLCJvcHRpb24kMSIsInBhcmFtIiwicHJlIiwic2NyaXB0Iiwic2VsZWN0JDAiLCJzdHlsZSIsInRhYmxlIiwidGJvZHkiLCJ0ZCIsInRleHRhcmVhIiwidGZvb3QiLCJ0aCIsInRoZWFkIiwidGl0bGUiLCJ0ciIsInVsIiwiYXVkaW8iLCJ2aWRlbyIsInVuc2FmZUNvZXJjZUV2ZW50IiwiY29uc3RyIiwiZXYiLCJtb3VzZUV2ZW50Iiwia2V5Ym9hcmRFdmVudCIsIndoZWVsRXZlbnQiLCJtb3VzZVNjcm9sbEV2ZW50IiwicG9wU3RhdGVFdmVudCIsIm1lc3NhZ2VFdmVudCIsImV2ZW50UmVsYXRlZFRhcmdldCIsImV2ZW50QWJzb2x1dGVQb3NpdGlvbiIsImV2ZW50QWJzb2x1dGVQb3NpdGlvbiQwIiwiZWxlbWVudENsaWVudFBvc2l0aW9uIiwiZ2V0RG9jdW1lbnRTY3JvbGwiLCJidXR0b25QcmVzc2VkIiwiYWRkTW91c2V3aGVlbEV2ZW50TGlzdGVuZXJXaXRoIiwiZHgiLCJkeSIsImFkZE1vdXNld2hlZWxFdmVudExpc3RlbmVyIiwidHJ5X2tleV9jb2RlX2xlZnQiLCJ0cnlfa2V5X2NvZGVfcmlnaHQiLCJ0cnlfa2V5X2NvZGVfbnVtcGFkIiwidHJ5X2tleV9jb2RlX25vcm1hbCIsIm1ha2VfdW5pZGVudGlmaWVkIiwicnVuX25leHQiLCJ2YWx1ZSIsInN5bWJvbCQxMSIsIm9mX2V2ZW50IiwiZXZ0IiwiY2hhcl9vZl9pbnQiLCJlbXB0eV9zdHJpbmciLCJub25lIiwib2ZfZXZlbnQkMCIsImVsZW1lbnQkMSIsInRhZ2dlZCIsIm9wdF90YWdnZWQiLCJ0YWdnZWRFdmVudCIsIm9wdF90YWdnZWRFdmVudCIsInN0b3BQcm9wYWdhdGlvbiIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImMiLCJyZXEiLCJjYWxsYmFjayIsIm5vdyIsImxhc3QiLCJkdCIsImR0JDAiLCJoYXNQdXNoU3RhdGUiLCJoYXNQbGFjZWhvbGRlciIsImhhc1JlcXVpcmVkIiwib3ZlcmZsb3dfbGltaXQiLCJzZXRUaW1lb3V0IiwibG9vcCIsInN0ZXAiLCJyZW1haW4iLCJzdGVwJDAiLCJjYiIsImNsZWFyVGltZW91dCIsImpzX2FycmF5X29mX2NvbGxlY3Rpb24iLCJmb3JtRGF0YSIsImZvcm1EYXRhX2Zvcm0iLCJmaWx0ZXJfbWFwJDAiLCJoYXZlX2NvbnRlbnQiLCJmb3JtX2VsZW1lbnRzIiwiaSQyIiwidiQyIiwic3RoIiwibmFtZSQxIiwibGlzdCIsInYkMSIsImFwcGVuZCIsImZvcm1fY29udGVudHMiLCJmb3JtX2VsdCIsImVtcHR5X2Zvcm1fY29udGVudHMiLCJwb3N0X2Zvcm1fY29udGVudHMiLCJjb250ZW50cyIsImdldF9mb3JtX2NvbnRlbnRzIiwicmVhZHlzdGF0ZWNoYW5nZSIsImxvYWRzdGFydCQxIiwicHJvZ3Jlc3MkMSIsImFib3J0JDEiLCJlcnJvciQxIiwibG9hZCQxIiwidGltZW91dCIsImxvYWRlbmQkMCIsImNyZWF0ZSIsImltcG9ydF9zY3JpcHRzIiwic2NyaXB0cyIsInNldF9vbm1lc3NhZ2UiLCJqc19oYW5kbGVyIiwicG9zdF9tZXNzYWdlIiwid2ViU29ja2V0IiwiaXNfc3VwcG9ydGVkIiwiZGVmYXVsdENvbnRleHRBdHRyaWJ1dGVzIiwid2ViZ2xjb250ZXh0bG9zdCIsIndlYmdsY29udGV4dHJlc3RvcmVkIiwid2ViZ2xjb250ZXh0Y3JlYXRpb25lcnJvciIsImdldENvbnRleHQiLCJjdHgiLCJnZXRDb250ZXh0V2l0aEF0dHJpYnV0ZXMiLCJyZWdleHAiLCJyZWdleHBfY2FzZV9mb2xkIiwicmVnZXhwX3dpdGhfZmxhZyIsImJsdW50X3N0cl9hcnJheV9nZXQiLCJzdHJpbmdfbWF0Y2giLCJyIiwic2VhcmNoX2ZvcndhcmQiLCJtYXRjaGVkX3N0cmluZyIsIm1hdGNoZWRfZ3JvdXAiLCJxdW90ZV9yZXBsIiwiZ2xvYmFsX3JlcGxhY2UiLCJzX2J5IiwicmVwbGFjZV9maXJzdCIsImZsYWdzIiwibGlzdF9vZl9qc19hcnJheSIsImlkeCQxIiwiYWNjdSIsImlkeCQwIiwiYWNjdSQwIiwic3BsaXQiLCJib3VuZGVkX3NwbGl0IiwicXVvdGUiLCJyZWdleHBfc3RyaW5nIiwicmVnZXhwX3N0cmluZ19jYXNlX2ZvbGQiLCJpbnRlcnJ1cHQiLCJwbHVzX3JlIiwidXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmciLCJ1cmxkZWNvZGUiLCJ1cmxlbmNvZGUiLCJvcHQiLCJ3aXRoX3BsdXMiLCJkZWZhdWx0X2h0dHBfcG9ydCIsImRlZmF1bHRfaHR0cHNfcG9ydCIsInBhdGhfb2ZfcGF0aF9zdHJpbmciLCJhdXgiLCJqIiwid29yZCIsImVuY29kZV9hcmd1bWVudHMiLCJkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZyIsImxlbiIsImRlY29kZV9hcmd1bWVudHMiLCJ1cmxfb2ZfanNfc3RyaW5nIiwicHJvdF9zdHJpbmciLCJzc2wiLCJwYXRoX3N0ciIsInVybCIsInVybF9vZl9zdHJpbmciLCJzdHJpbmdfb2ZfdXJsIiwiZnJhZyIsImFyZ3MiLCJwYXRoIiwicG9ydCIsImhvc3QiLCJmcmFnJDAiLCJhcmdzJDAiLCJwYXRoJDAiLCJwb3J0JDAiLCJob3N0JDAiLCJmcmFnJDEiLCJhcmdzJDEiLCJwYXRoJDEiLCJwcm90b2NvbCIsInBhdGhfc3RyaW5nIiwiYXJndW1lbnRzJDAiLCJnZXRfZnJhZ21lbnQiLCJzZXRfZnJhZ21lbnQiLCJnZXQkMiIsInNldCQwIiwidSIsImFzX3N0cmluZyIsInVwZGF0ZV9maWxlIiwiY29udGVudCIsIm9jIiwic2V0X2NoYW5uZWxfZmx1c2hlciIsIm91dF9jaGFubmVsIiwiZiQwIiwic2V0X2NoYW5uZWxfZmlsbGVyIiwiaW5fY2hhbm5lbCIsIm1vdW50IiwicHJlZml4IiwidW5tb3VudCIsImpzX29mX29jYW1sX3ZlcnNpb24iLCJlbXB0eV9yZXNpemVfb2JzZXJ2ZXJfb3B0aW9ucyIsImlzX3N1cHBvcnRlZCQwIiwib2JzZXJ2ZSIsIm5vZGUiLCJib3giLCJib3gkMCIsImlzX3N1cHBvcnRlZCQxIiwib2JzZXJ2ZSQwIiwiZW50cnlfdHlwZXMiLCJlbXB0eV9tdXRhdGlvbl9vYnNlcnZlcl9pbml0IiwiaXNfc3VwcG9ydGVkJDIiLCJvYnNlcnZlJDEiLCJjaGlsZF9saXN0IiwiYXR0cmlidXRlcyIsImNoYXJhY3Rlcl9kYXRhIiwic3VidHJlZSIsImF0dHJpYnV0ZV9vbGRfdmFsdWUiLCJjaGFyYWN0ZXJfZGF0YV9vbGRfdmFsdWUiLCJhdHRyaWJ1dGVfZmlsdGVyIiwiY3JlYXRlJDAiLCJhZGQkMCIsImsiLCJyZW1vdmUiLCJmaW5kIiwia2V5cyIsInJldml2ZXIiLCJ1bnNhZmVfaW5wdXQiLCJtbEludDY0X2NvbnN0ciIsIm91dHB1dCIsInN0cmluZ19vZl9uYW1lIiwibmFtZV9vZl9zdHJpbmciLCJyZ2Jfb2ZfbmFtZSIsInJnYiIsImhzbCIsInN0cmluZ19vZl90IiwiYiQwIiwiZyQwIiwiciQwIiwiYiQxIiwiZyQxIiwiciQxIiwiYiQyIiwiZyQyIiwiciQyIiwiYSQxIiwiaCQwIiwiaGV4X29mX3JnYiIsImJsdWUiLCJncmVlbiIsInJlZCIsImluX3JhbmdlIiwianNfdF9vZl9qc19zdHJpbmciLCJqcyIsIm1sIiwiZmFpbCIsInJlX3JnYiIsInJlX3JnYl9wY3QiLCJyZV9oc2wiLCJpX29mX3NfbyIsImZfb2ZfcyIsImFscGhhIiwicmVkJDAiLCJncmVlbiQwIiwiYmx1ZSQwIiwiYWxwaGEkMCIsInJlZCQxIiwiZ3JlZW4kMSIsImJsdWUkMSIsImFscGhhJDEiLCJzdHJpbmdfb2ZfdCQwIiwiZiQxIiwiZiQyIiwiZiQzIiwiZiQ0IiwiZiQ1IiwiZiQ2IiwiZiQ3IiwiZiQ4IiwiZiQ5IiwiZiQxMCIsImYkMTEiLCJmJDEyIiwianMkMCIsIm1sJDAiLCJyZSIsInN0cmluZ19vZl90JDEiLCJqcyQxIiwibWwkMSIsImxpc3RlbiIsInRhcmdldCIsImNyZWF0ZUVsZW1lbnQkMCIsInVuc2FmZUNyZWF0ZUVsZW1lbnQkMCIsImNyZWF0ZUEkMCIsImNyZWF0ZUFsdEdseXBoIiwiY3JlYXRlQWx0R2x5cGhEZWYiLCJjcmVhdGVBbHRHbHlwaEl0ZW0iLCJjcmVhdGVBbmltYXRlIiwiY3JlYXRlQW5pbWF0ZUNvbG9yIiwiY3JlYXRlQW5pbWF0ZU1vdGlvbiIsImNyZWF0ZUFuaW1hdGVUcmFuc2Zvcm0iLCJjcmVhdGVDaXJjbGUiLCJjcmVhdGVDbGlwUGF0aCIsImNyZWF0ZUN1cnNvciIsImNyZWF0ZURlZnMiLCJjcmVhdGVEZXNjIiwiY3JlYXRlRWxsaXBzZSIsImNyZWF0ZUZpbHRlciIsImNyZWF0ZUZvbnQiLCJjcmVhdGVGb250RmFjZSIsImNyZWF0ZUZvbnRGYWNlRm9ybWF0IiwiY3JlYXRlRm9udEZhY2VOYW1lIiwiY3JlYXRlRm9udEZhY2VTcmMiLCJjcmVhdGVGb250RmFjZVVyaSIsImNyZWF0ZUZvcmVpZ25PYmplY3QiLCJjcmVhdGVHIiwiY3JlYXRlR2x5cGgiLCJjcmVhdGVHbHlwaFJlZiIsImNyZWF0ZWhrZXJuIiwiY3JlYXRlSW1hZ2UiLCJjcmVhdGVMaW5lRWxlbWVudCIsImNyZWF0ZUxpbmVhckVsZW1lbnQiLCJjcmVhdGVNYXNrIiwiY3JlYXRlTWV0YURhdGEiLCJjcmVhdGVNaXNzaW5nR2x5cGgiLCJjcmVhdGVNUGF0aCIsImNyZWF0ZVBhdGgiLCJjcmVhdGVQYXR0ZXJuIiwiY3JlYXRlUG9seWdvbiIsImNyZWF0ZVBvbHlsaW5lIiwiY3JlYXRlUmFkaWFsZ3JhZGllbnQiLCJjcmVhdGVSZWN0IiwiY3JlYXRlU2NyaXB0JDAiLCJjcmVhdGVTZXQiLCJjcmVhdGVTdG9wIiwiY3JlYXRlU3R5bGUkMCIsImNyZWF0ZVN2ZyIsImNyZWF0ZVN3aXRjaCIsImNyZWF0ZVN5bWJvbCIsImNyZWF0ZVRleHRFbGVtZW50IiwiY3JlYXRlVGV4dHBhdGgiLCJjcmVhdGVUaXRsZSQwIiwiY3JlYXRlVHJlZiIsImNyZWF0ZVRzcGFuIiwiY3JlYXRlVXNlIiwiY3JlYXRlVmlldyIsImNyZWF0ZXZrZXJuIiwic3ZnX2VsZW1lbnQiLCJkb2N1bWVudCQwIiwiZ2V0RWxlbWVudEJ5SWQkMCIsImVsZW1lbnQkMiIsInVuc2FmZUNvZXJjZSQwIiwiYWx0R2x5cGgiLCJhbHRHbHlwaERlZiIsImFsdEdseXBoSXRlbSIsImFuaW1hdGUiLCJhbmltYXRlQ29sb3IiLCJhbmltYXRlTW90aW9uIiwiYW5pbWF0ZVRyYW5zZm9ybSIsImNpcmNsZSIsImNsaXBQYXRoIiwiY3Vyc29yIiwiZGVmcyIsImRlc2MiLCJlbGxpcHNlIiwiZmlsdGVyIiwiZm9udCIsImZvbnRGYWNlIiwiZm9udEZhY2VGb3JtYXQiLCJmb250RmFjZU5hbWUiLCJmb250RmFjZVNyYyIsImZvbnRGYWNlVXJpIiwiZm9yZWlnbk9iamVjdCIsImdseXBoIiwiZ2x5cGhSZWYiLCJoa2VybiIsImltYWdlIiwibGluZUVsZW1lbnQiLCJsaW5lYXJFbGVtZW50IiwibWV0YURhdGEiLCJtaXNzaW5nR2x5cGgiLCJtUGF0aCIsInBhdHRlcm4iLCJwb2x5Z29uIiwicG9seWxpbmUiLCJyYWRpYWxncmFkaWVudCIsInJlY3QiLCJzY3JpcHQkMCIsInNldCQxIiwic3RvcCIsInN0eWxlJDAiLCJzdmciLCJzd2l0Y2gkMCIsInN5bWJvbCQxMiIsInRleHRFbGVtZW50IiwidGV4dHBhdGgiLCJ0aXRsZSQwIiwidHJlZiIsInRzcGFuIiwidXNlIiwidmlldyIsInZrZXJuIiwid2l0aENyZWRlbnRpYWxzIiwiZXZlbnRTb3VyY2UiLCJldmVudFNvdXJjZV9vcHRpb25zIiwiY29uc29sZSIsImVtcHR5X3Bvc2l0aW9uX29wdGlvbnMiLCJnZW9sb2NhdGlvbiIsImlzX3N1cHBvcnRlZCQzIiwiZW1wdHlfaW50ZXJzZWN0aW9uX29ic2VydmVyX29wIiwiaW50ZXJzZWN0aW9uT2JzZXJ2ZXJfdW5zYWZlIiwiaXNfc3VwcG9ydGVkJDQiLCJvYmplY3Rfb3B0aW9ucyIsIm9wdGlvbnMkMSIsIm9wdGlvbnMkMiIsImludGwiLCJjb2xsYXRvcl9jb25zdHIiLCJkYXRlVGltZUZvcm1hdF9jb25zdHIiLCJudW1iZXJGb3JtYXRfY29uc3RyIiwicGx1cmFsUnVsZXNfY29uc3RyIiwiaXNfc3VwcG9ydGVkJDUiLCJkdXJhdGlvbl9vZl9qc29vIiwiZCIsImR1cmF0aW9uX3RvX2pzb28iLCJkYXlzIiwibW9udGhzIiwieWVhcnMiLCJkYXRlX29mX2pzb28iLCJkJDAiLCJkJDEiLCJkYXkiLCJtb250aCIsInllYXIiLCJkYXRlX3RvX2pzb28iLCJldnQiLCJwb3MiLCJ2IiwiaW8iLCJpbmZvIiwiZXZlbnQiLCJldmVudF9tYW5hZ2VyIiwiZXhlY3V0ZV9vcl90aHJvd19lcnJvciIsImYiLCJ0aHJvd19lcnJvciIsImRlc2NyIiwicG9zJDAiLCJwb3MkMSIsImVtYmVkX3ByaXNlX2VuX2NoYXJnZSIsIngiLCJ4JDAiLCJ4JDEiLCJ4JDIiLCJ4JDMiLCJ4JDQiLCJlbWJlZF9zaXR1YXRpb25fb2JsaWdhdGlvbl9zY28iLCJlbWJlZF9wcmlzZV9lbl9jb21wdGUiLCJlbWJlZF92ZXJzZW1lbnRfYWxsb2NhdGlvbnMiLCJlbWJlZF9jb2xsZWN0aXZpdGUiLCJ4JDUiLCJ4JDYiLCJ4JDciLCJ4JDgiLCJlbWJlZF9hbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXYiLCJlbWJlZF92ZXJpZmljYXRpb25fYWdlX2luZmVyaWUiLCJlbWJlZF92ZXJpZmljYXRpb25fYWdlX3N1cGVyaWUiLCJlbWJlZF9zbWljIiwiZW1iZWRfYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvIiwiZW1iZWRfaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhIiwiZW1iZWRfZW5mYW50X2VudHJlZSIsImVtYmVkX2VuZmFudCIsImVtYmVkX2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMiLCJlbWJlZF9lbmZhbnRfbGVfcGx1c19hZ2UiLCJlbWJlZF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIiwiZW1iZWRfcHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pIiwiZW1iZWRfYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2JDAiLCJlbWJlZF9lbmZhbnRfbGVfcGx1c19hZ2VfaW4iLCJlbWJlZF9hbGxvY2F0aW9uc19mYW1pbGlhbGVzX2kiLCJlbWJlZF92ZXJpZmljYXRpb25fYWdlX2luZmVyaWUkMCIsImVtYmVkX3ZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZSQwIiwiZW1iZWRfc21pY19pbiIsImVtYmVkX2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpbyQwIiwiZW1iZWRfaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhJDAiLCJhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDAiLCJhZ2VfbWluaW11bV9hbGluZWFfMV9sNTIxXzMiLCJlbmZhbnRfbGVfcGx1c19hZ2UiLCJlbmZhbnRfbGVfcGx1c19hZ2VfaW4iLCJlbmZhbnRzIiwicG90ZW50aWVsX3BsdXNfYWdlXzEiLCJwb3RlbnRpZWxfcGx1c19hZ2VfMiIsImxlX3BsdXNfYWdlIiwidmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfIiwiZGF0ZV9uYWlzc2FuY2UiLCJkYXRlX2NvdXJhbnRlIiwiYW5uZWVzIiwiZXN0X2luZmVyaWV1cl9vdV9lZ2FsIiwidmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYSIsInZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfaSIsImVzdF9zdXBlcmlldXIiLCJzbWljIiwic21pY19pbiIsInJlc2lkZW5jZSIsImJydXRfaG9yYWlyZSIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSIsIm1vbnRhbnQiLCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzIiwicHJlc3RhdGlvbnNfZmFtaWxpYWxlc19pbiIsImFnZV9sNTEyXzNfMiIsInNtaWNfZG90X2RhdGVfY291cmFudGUiLCJzbWljX2RvdF9yZXNpZGVuY2UiLCJyZXN1bHQiLCJzbWljX2RvdF9icnV0X2hvcmFpcmUiLCJyZWdpbWVfb3V0cmVfbWVyX2w3NTFfMSIsInBsYWZvbmRfbDUxMl8zXzIiLCJlbmZhbnQiLCJjb25kaXRpb25zX2hvcnNfYWdlIiwiZHJvaXRfb3V2ZXJ0IiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlcyIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW4iLCJwZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm0iLCJwZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3Blcm0kMCIsInJlc3NvdXJjZXNfbWVuYWdlIiwiZW5mYW50c19hX2NoYXJnZSIsImF2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8xZSIsInByaXNlX2VuX2NvbXB0ZSIsInZlcnNlbWVudCIsIm5vbWJyZV9lbmZhbnRzX2FsaW5lYV8yX2w1MjFfMyIsIm5vbWJyZV9lbmZhbnRzX2FsaW5lYV8yX2w1MjFfMSIsInZlcnNpb25fYXZyaWxfMjAwOF9kb3RfYWdlX21pbiIsImJtYWZfZG90X2RhdGVfY291cmFudGUiLCJyZXN1bHQkMCIsImJtYWZfZG90X21vbnRhbnQiLCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9kYXQiLCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9yZXMiLCJyZXN1bHQkMSIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2RybyIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2NvbiIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X2FnZSIsInByZXN0YXRpb25zX2ZhbWlsaWFsZXNfZG90X3JlZyIsImVuZmFudF9sZV9wbHVzX2FnZV9kb3RfZW5mYW50cyIsInJlc3VsdCQyIiwiZW5mYW50X2xlX3BsdXNfYWdlX2RvdF9sZV9wbHVzIiwiZW5mYW50c19hX2NoYXJnZV9kcm9pdF9vdXZlcnRfIiwiZXN0X2VuZmFudF9sZV9wbHVzX2FnZSIsInBsYWZvbmRfaV9pX2Q1MjFfMyIsInBsYWZvbmRfaV9kNTIxXzMiLCJkcm9pdF9vdXZlcnRfY29tcGxlbWVudCIsImRyb2l0X291dmVydF9mb3JmYWl0YWlyZSIsIm1vbnRhbnRfaW5pdGlhbF9iYXNlX3F1YXRyaWVtZSIsIm1vbnRhbnRfaW5pdGlhbF9iYXNlX3Ryb2lzaWVtZSIsIm5vbWJyZV90b3RhbF9lbmZhbnRzIiwic3VtMSIsInN1bTIiLCJub21icmVfbW95ZW5fZW5mYW50cyIsIm1vbnRhbnRfaW5pdGlhbF9iYXNlX3ByZW1pZXJfZSIsImRyb2l0X291dmVydF9iYXNlIiwiZHJvaXRfb3V2ZXJ0X21ham9yYXRpb24iLCJhbGxvY2F0aW9uIiwiY29tcGxlbWVudF9kZWdyZXNzaWYiLCJtb250YW50X3ZlcnNlX2ZvcmZhaXRhaXJlX3Bhcl8iLCJtb250YW50X2luaXRpYWxfYmFzZV90cm9pc2llbWUkMCIsIm1vbnRhbnRfaW5pdGlhbF9iYXNlX2RldXhpZW1lXyIsInJhcHBvcnRfZW5mYW50c190b3RhbF9tb3llbiIsIm1vbnRhbnRfaW5pdGlhbF9tZXRyb3BvbGVfbWFqbyIsIm1vbnRhbnRfdmVyc2VfZm9yZmFpdGFpcmUiLCJtb250YW50X2luaXRpYWxfYmFzZSIsIm1vbnRhbnRfaW5pdGlhbF9tYWpvcmF0aW9uIiwibW9udGFudF92ZXJzZV9jb21wbGVtZW50X3BvdXJfIiwibW9udGFudF9hdmVjX2dhcmRlX2FsdGVybmVlX2JhIiwibW9udGFudF9hdmVjX2dhcmRlX2FsdGVybmVlX21hIiwibW9udGFudF92ZXJzZV9iYXNlIiwibW9udGFudF92ZXJzZV9tYWpvcmF0aW9uIiwibW9udGFudF9iYXNlX2NvbXBsZW1lbnRfcG91cl9iIiwibW9udGFudF92ZXJzZV9jb21wbGVtZW50X3BvdXJfJDAiLCJtb250YW50X3ZlcnNlIiwiaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsIiwiaV9kYXRlX2NvdXJhbnRlIiwiaV9lbmZhbnRzIiwiaV9yZXNzb3VyY2VzX21lbmFnZSIsImlfcmVzaWRlbmNlIiwiaV9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3BlIiwiaV9wZXJzb25uZV9jaGFyZ2VfZWZmZWN0aXZlX3BlJDAiLCJpX2F2YWl0X2VuZmFudF9hX2NoYXJnZV9hdmFudF8iLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9wZXIiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzX2RvdF9wZXIkMCIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X3JlcyIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfZG90X3JlcyQwIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfZGF0IiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfZW5mIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfYXZhIiwiYWxsb2NhdGlvbnNfZmFtaWxpYWxlc19kb3RfbW9uIiwiaV9tb250YW50X3ZlcnNlIiwicHJpc2VfZW5fY2hhcmdlX3RvX2pzb28iLCJhcmciLCJhcmckMCIsImFyZyQxIiwiYXJnJDIiLCJhcmckMyIsInByaXNlX2VuX2NoYXJnZV9vZl9qc29vIiwicHJpc2VfZW5fY2hhcmdlIiwiY29ucyIsInNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlXyIsInNpdHVhdGlvbl9vYmxpZ2F0aW9uX3Njb2xhaXJlXyQwIiwic2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmUiLCJwcmlzZV9lbl9jb21wdGVfdG9fanNvbyIsInByaXNlX2VuX2NvbXB0ZV9vZl9qc29vIiwidmVyc2VtZW50X2FsbG9jYXRpb25zX3RvX2pzb28iLCJ2ZXJzZW1lbnRfYWxsb2NhdGlvbnNfb2ZfanNvbyIsInZlcnNlbWVudF9hbGxvY2F0aW9ucyIsImNvbGxlY3Rpdml0ZV90b19qc29vIiwiYXJnJDQiLCJhcmckNSIsImFyZyQ2IiwiYXJnJDciLCJjb2xsZWN0aXZpdGVfb2ZfanNvbyIsImNvbGxlY3Rpdml0ZSIsImFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMCQwIiwiYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwJDEiLCJ2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV8kMCIsInZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291XyQxIiwidmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYV90IiwidmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYV9vIiwic21pY190b19qc29vIiwic21pY19vZl9qc29vIiwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtJDAiLCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW0kMSIsImludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbCQwIiwiaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsJDEiLCJlbmZhbnRfZW50cmVlX3RvX2pzb28iLCJlbmZhbnRfZW50cmVlIiwiZW5mYW50X2VudHJlZV9vZl9qc29vIiwiZW5mYW50X3RvX2pzb28iLCJlbmZhbnRfb2ZfanNvbyIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfdG9fanNvbyIsImZ1bmN0aW9uX2lucHV0MCIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfb2ZfanNvbyIsImVuZmFudF9sZV9wbHVzX2FnZV90b19qc29vIiwiZW5mYW50X2xlX3BsdXNfYWdlX29mX2pzb28iLCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzX3RvX2pzb28iLCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzX29mX2pzb28iLCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luX3RvX2oiLCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2luX29mX2oiLCJhbGxvY2F0aW9uX2ZhbWlsaWFsZXNfYXZyaWwyMDAkMiIsImFsbG9jYXRpb25fZmFtaWxpYWxlc19hdnJpbDIwMCQzIiwiZW5mYW50X2xlX3BsdXNfYWdlX2luX3RvX2pzb28iLCJlbmZhbnRfbGVfcGx1c19hZ2VfaW5fb2ZfanNvbyIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5fdG9faiIsImFsbG9jYXRpb25zX2ZhbWlsaWFsZXNfaW5fb2ZfaiIsInZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291XyQyIiwidmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfJDMiLCJ2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX2kkMCIsInNtaWNfaW5fdG9fanNvbyIsInNtaWNfaW5fb2ZfanNvbyIsImJhc2VfbWVuc3VlbGxlX2FsbG9jYXRpb25zX2ZhbSQyIiwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtJDMiLCJpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWwkMiIsImludGVyZmFjZV9hbGxvY2F0aW9uc19mYW1pbGlhbCQzIiwiYWxsb2NhdGlvbl9mYW1pbGlhbGVzX2F2cmlsMjAwJDQiLCJlbmZhbnRfbGVfcGx1c19hZ2UkMCIsInZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291XyQ0IiwidmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYSQwIiwic21pYyQwIiwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtJDQiLCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzJDAiLCJhbGxvY2F0aW9uc19mYW1pbGlhbGVzJDAiLCJpbnRlcmZhY2VfYWxsb2NhdGlvbnNfZmFtaWxpYWwkNCIsImVtYmVkX3R5cGVfcHJldCIsImVtYmVkX3RpdHVsYWlyZV9wcmV0IiwiZW1iZWRfdHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4IiwiZW1iZWRfdHlwZV90cmF2YXV4X2xvZ2VtZW50X3I4IiwiZW1iZWRfYW1lbGlvcmVfcGFyX29jY3VwYW50IiwiZW1iZWRfbGltaXRlX3RyYW5jaGUiLCJlbWJlZF9saW1pdGVfdHJhbmNoZV9kZWNpbWFsIiwiZW1iZWRfcHJlc3RhdGlvbl9yZWN1ZSIsImVtYmVkX3BhcmVudF9vdV9hdXRyZSIsImVtYmVkX3NpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSIsImVtYmVkX3BhcmVudGUiLCJlbWJlZF9kYXRlX2RlX25haXNzYW5jZV9vdV9tb2kiLCJlbWJlZF96b25lX2RfaGFiaXRhdGlvbiIsImVtYmVkX3ZlcnNlbWVudF9hIiwiZW1iZWRfZGVwZW5zZV9sb2dlbWVudCIsImVtYmVkX21vZGVfb2NjdXBhdGlvbl9pbXBheWUiLCJlbWJlZF90eXBlX2VsaWdpYmlsaXRlX2FsbG9jYXQiLCJlbWJlZF9hY2NvcmRfZmluYW5jZW1lbnRfcmVwcmUiLCJlbWJlZF90eXBlX2FpZGVzX3BlcnNvbm5lbGxlX2wiLCJlbWJlZF9zaXR1YXRpb25fZmFtaWxpYWxlIiwiZW1iZWRfdHlwZV9sb2dlbWVudF9mb3llciIsImVtYmVkX2NhdGVnb3JpZV9lcXVpdmFsZW5jZV9sbyIsImVtYmVkX3NpdHVhdGlvbl9mYW1pbGlhbGVfY2FsYyIsImVtYmVkX2NvbGxlY3Rpdml0ZSQwIiwiZW1iZWRfc2l0dWF0aW9uX29ibGlnYXRpb25fc2NvJDAiLCJlbWJlZF9jb252ZW50aW9uX2JhaWxsZXVyX3NvY2kiLCJlbWJlZF9jb252ZW50aW9uX2Ffbl9oX2EiLCJlbWJlZF9wZXJzb25uZV9zb3VzX2xvY2F0aW9uIiwiZW1iZWRfY29uZGl0aW9uc19ldHJhbmdlcnMiLCJlbWJlZF9lbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm4iLCJlbWJlZF9lbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW0iLCJlbWJlZF9jb250cmlidXRpb25zX3NvY2lhbGVzX2EiLCJlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2UiLCJlbWJlZF9jYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXIiLCJlbWJlZF9jYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW0iLCJlbWJlZF9jYWxjdWxfYWlkZV9wZXJzb25uYWxpc2UkMCIsImVtYmVkX2NhbGN1bF9ub21icmVfcGFydHNfYWNjZSIsImVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZSQxIiwiZW1iZWRfdHJhaXRlbWVudF9mb3JtdWxlX2FpZGVfIiwiZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlJDIiLCJlbWJlZF9pbmZvc19jaGFuZ2VtZW50X2xvZ2VtZW4iLCJlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWUiLCJlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWUkMCIsImVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZSQxIiwiZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lJDIiLCJlbWJlZF9vdXZlcnR1cmVfZHJvaXRzX3JldHJhaXQiLCJlbWJlZF9pbXBheWVfZGVwZW5zZV9sb2dlbWVudCIsImVtYmVkX2NhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZSIsImVtYmVkX2NhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZSQwIiwiZW1iZWRfYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvJDEiLCJlbWJlZF92ZXJpZmljYXRpb25fYWdlX2luZmVyaWUkMSIsImVtYmVkX3ZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZSQxIiwiZW1iZWRfc21pYyQwIiwiZW1iZWRfbmV1Zl9vdV9hbmNpZW4iLCJlbWJlZF90cmFuY2hlX3JldmVudSIsImVtYmVkX3RyYW5jaGVfcmV2ZW51X2RlY2ltYWwiLCJlbWJlZF9hdXRyZV9wZXJzb25uZV9hX2NoYXJnZSIsImVtYmVkX2RhdGVfbmFpc3NhbmNlX3Ryb2lzaWVtZSIsImVtYmVkX2VsaWdpYmlsaXRlX2FsbG9jYXRpb25fbCIsImVtYmVkX3ByZXQiLCJlbWJlZF9sb2dlbWVudF9mb3llciIsImVtYmVkX2VuZmFudF9wcmVzdGF0aW9uc19mYW1pbCIsImVtYmVkX3R5cGVfYmFpbGxldXIiLCJlbWJlZF9sb3VlX291X3NvdXNfbG91ZV9hX2Rlc18iLCJlbWJlZF9uYXRpb25hbGl0ZSIsImVtYmVkX2NoYW5nZW1lbnRfbG9nZW1lbnRfZDg0MiIsImVtYmVkX2luZm9ybWF0aW9uc19wcmltZV9kZV9kZSIsImVtYmVkX3Byb3ByaWV0YWlyZSIsImVtYmVkX2VsaWdpYmlsaXRlX3ByZXN0YXRpb25zXyIsImVtYmVkX2RlbWFuZGV1ciIsImVtYmVkX2VuZmFudF9hX2NoYXJnZSIsImVtYmVkX2xvY2F0aW9uIiwiZW1iZWRfcGVyc29ubmVfYV9jaGFyZ2UiLCJlbWJlZF9jYXRlZ29yaWVfY2FsY3VsX2FfcF9sIiwiZW1iZWRfbW9kZV9vY2N1cGF0aW9uIiwiZW1iZWRfZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29uIiwiZW1iZWRfbG9nZW1lbnQiLCJlbWJlZF9tZW5hZ2UiLCJlbWJlZF9lbGlnaWJpbGl0ZV9haWRlc19wZXJzb24kMCIsImVtYmVkX2VsaWdpYmlsaXRlX2FpZGVfcGVyc29ubiQwIiwiZW1iZWRfZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sJDAiLCJlbWJlZF9lbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW0kMCIsImVtYmVkX2NvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYSQwIiwiZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlJDMiLCJlbWJlZF9jYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXIkMCIsImVtYmVkX2NhbGN1bF9ub21icmVfcGFydF9sb2dlbSQwIiwiZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlJDQiLCJlbWJlZF9jYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2UkMCIsImVtYmVkX2NhbGN1bF9haWRlX3BlcnNvbm5hbGlzZSQ1IiwiZW1iZWRfY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlJDYiLCJlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWUkMyIsImVtYmVkX2NhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZSQ0IiwiZW1iZWRfY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lJDUiLCJlbWJlZF9jYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWUkNiIsImVtYmVkX291dmVydHVyZV9kcm9pdHNfcmV0cmFpdCQwIiwiZW1iZWRfaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfIiwiZW1iZWRfY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlJDEiLCJlbWJlZF9jYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2UkMiIsImVtYmVkX2Jhc2VfbWVuc3VlbGxlX2FsbG9jYXRpbyQyIiwiZW1iZWRfdmVyaWZpY2F0aW9uX2FnZV9pbmZlcmllJDIiLCJlbWJlZF92ZXJpZmljYXRpb25fYWdlX3N1cGVyaWUkMiIsImVtYmVkX3NtaWNfaW4kMCIsImVtYmVkX2VsaWdpYmlsaXRlX3ByZXN0YXRpb25zXyQwIiwiY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wIiwibGlldSIsImV4b25lcmVfY3NnIiwidGF1eF9jcmRzIiwiYWlkZV9maW5hbGUiLCJjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW0iLCJyZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXMiLCJjb25kaXRpb25fMl9kdV84MzJfMjUiLCJuX25vbWJyZV9wYXJ0c19kODMyXzI1IiwibW9udGFudF9mb3JmYWl0YWlyZV9kODMyXzI2IiwidHJhbmNoZXNfcmV2ZW51c19kODMyXzI2IiwidHJhbmNoZSIsInRyYW5jaGVfaGF1dCIsInRyYW5jaGVzX3JldmVudXNfZDgzMl8yNl9tdWx0aSIsInJlc3NvdXJjZXNfbWVuYWdlX2Fycm9uZGllcyQwIiwiY2FsY3VsX25vbWJyZV9wYXJ0X2xvZ2VtZW50X2ZvIiwibm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZSIsInNpdHVhdGlvbl9mYW1pbGlhbGVfY2FsY3VsX2FwbCIsImxpbWl0YXRpb25fbWFqb3JhdGlvbl9wZXJzb25uZSIsImxpbWl0YXRpb25fbWFqb3JhdGlvbl9wZXJzb25uZSQwIiwibl9ub21icmVfcGFydHNfZDgzMl8yNV9iYXNlIiwibl9ub21icmVfcGFydHNfZDgzMl8yNV9tYWpvcmF0IiwiY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fIiwibl9ub21icmVfcGFydHNfZDgzMl8xMSIsIm91dmVydHVyZV9kcm9pdHNfcmV0cmFpdGUiLCJvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX2luIiwiZGF0ZV9uYWlzc2FuY2VfYXNzdXJlIiwiYWdlX291dmVydHVyZV9kcm9pdCIsImltcGF5ZV9kZXBlbnNlX2xvZ2VtZW50IiwiaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW4iLCJtb2RlX29jY3VwYXRpb24iLCJhaWRlX3ZlcnNlZSIsIm1vbnRhbnRfYXBsIiwibW9udGFudF9jaGFyZ2VzIiwiZGVwZW5zZV9sb2dlbWVudCIsIm1vbnRhbnRfZGV0dGUiLCJtb2RlX29jY3VwYXRpb25faW1wYXllIiwiZGVwZW5zZV9sb2dlbWVudF9icnV0ZSIsInRvdGFsX2VjaGVhbmNlcyIsIm1lbnN1YWxpdGUiLCJsb3llciIsInRvdGFsIiwibW9udGFudF9sb3llciIsImRlcGVuc2VfbG9nZW1lbnRfbmV0dGUiLCJlY2hlYW5jZV9wcmV0X25ldHRlIiwibWVuc3VhbGl0ZV9uZXR0ZSIsImVjaGVhbmNlX3ByZXRfYnJ1dGUiLCJtZW5zdWFsaXRlX2JydXRlIiwibG95ZXJfbmV0IiwibG95ZXJfYnJ1dCIsInNldWlsX2ltcGF5ZV9kZXBlbnNlX2RlX2xvZ2VtZSIsIm1vbnRhbnRfaW1wYXllIiwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtJDUiLCJ2ZXJpZmljYXRpb25fYWdlX2luZmVyaWV1cl9vdV8kNSIsInZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2EkMSIsInNtaWMkMSIsImFycm9uZGlfY2VudGFpbmVfc3VwZXJpZXVyZSIsInRyYWl0ZW1lbnRfbnVsX3RvdXRfbGVfdGVtcHMiLCJtb250ZWVfZW5fY2hhcmdlX3NhaW50X3BpZXJyZV8iLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UiLCJsb2dlbWVudF9mb3llcl9qZXVuZXNfdHJhdmFpbGwiLCJ0eXBlX2xvZ2VtZW50X2ZveWVyIiwiZGF0ZV9jb252ZW50aW9ubmVtZW50Iiwiem9uZSIsInJlZGV2YW5jZSIsImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X2RhdCIsImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X2xpZSIsImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfZG90X21vbiIsIm1vbnRhbnRfbWluaW1hbF9haWRlX2Q4MjNfMjQiLCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMjQiLCJwbGFmb25kX2VxdWl2YWxlbmNlX2xveWVyX2VsaWciLCJjb2VmZmljaWVudF9yX2Q4MzJfMjUiLCJjb25kaXRpb25fMl9kdV84MzJfMjUkMCIsInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfbWlub3JhdCIsImVxdWl2YWxlbmNlX2xveWVyX2VsaWdpYmxlIiwiY2FsY3VsX25vbWJyZV9wYXJ0c19kb3RfZGF0ZV9jIiwiY2FsY3VsX25vbWJyZV9wYXJ0c19kb3RfY29uZGl0IiwiY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbm9tYnJlIiwiY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfc2l0dWF0IiwiY2FsY3VsX25vbWJyZV9wYXJ0c19kb3RfbGltaXRhIiwiY2FsY3VsX25vbWJyZV9wYXJ0c19kb3Rfbl9ub21iIiwibW9udGFudF9mb3JmYWl0YWlyZV9kODMyXzI3IiwiY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzIiwiYWxsb2NhdGlvbl9tZW5zdWVsbGUiLCJkZXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMjciLCJuX25vbWJyZV9wYXJ0c19kODMyXzI1JDAiLCJkZXBlbnNlX25ldHRlX21pbmltYWxlIiwiYWJhdHRlbWVudF9kZXBlbnNlX25ldHRlX21pbmltIiwiY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltJDAiLCJjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW0kMSIsImNhbGN1bF9lcXVpdmFsZW5jZV9sb3llcl9taW5pbSQyIiwiY2FsY3VsX2VxdWl2YWxlbmNlX2xveWVyX21pbmltJDMiLCJjYWxjdWxfZXF1aXZhbGVuY2VfbG95ZXJfbWluaW0kNCIsImRlbm9taW5hdGV1ciIsImRlbm9taW5hdGV1ciQwIiwiY29lZmZpY2llbnRfcHJpc2VfZW5fY2hhcmdlX2Q4IiwiYWlkZV9maW5hbGUkMCIsImFpZGVfZmluYWxlJDEiLCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX2FiYXR0ZW0iLCJlcXVpdmFsZW5jZV9sb3llcl9taW5pbWFsZSIsImNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kOCQwIiwiY3JkcyIsImFpZGVfZmluYWxlX21vaW5zX2NyZHNfYXJyb25kaSIsInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfY29udHJpYiIsImNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZV9kOCQxIiwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9tb250YW50IiwiYWlkZV9maW5hbGVfZm9ybXVsZSIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQwIiwibWVuc3VhbGl0ZV9wcmluY2lwYWxlIiwidHlwZV90cmF2YXV4X2xvZ2VtZW50IiwiZGF0ZV9zaWduYXR1cmVfcHJldCIsImxvY2FsX2hhYml0ZV9wcmVtaWVyZV9mb2lzX2JlbiIsImRhdGVfZW50cmVlX2xvZ2VtZW50IiwiY29wcm9wcmlldGUiLCJzaXR1YXRpb25fcjgyMl8xMV8xM18xNyIsInR5cGVfcHJldCIsImFuY2llbm5ldGVfbG9nZW1lbnQiLCJ0YXV4X2ZyYW5jc192ZXJzX2V1cm9zIiwidGF1eF90cmFuY2hlX3N1cGVyaWV1cmVfZDgzMl8xIiwidGF1eF90cmFuY2hlX2luZmVyaWV1cmVfZDgzMl8xIiwibW9udGFudF9saW1pdGVfdHJhbmNoZXNfZDgzMl8xIiwiY29lZmZpY2llbnRfbXVsdGlwbGljYXRldXJfZDgzJDAiLCJhbWVsaW9yZV9wYXJfb2NjdXBhbnQiLCJjb2VmZmljaWVudF9tdWx0aXBsaWNhdGV1cl9kODMkMSIsIm1vbnRhbnRfbWluaW1hbF9haWRlX2Q4MzJfMTAiLCJtb250YW50X2ZvcmZhaXRhaXJlX2Q4MzJfMTAiLCJtb250YW50X2ZvcmZhaXRhaXJlX2NoYXJnZXNfZDgiLCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4MzIiLCJyZXNzb3VyY2VzX21lbmFnZV9hdmVjX2Q4MzJfMTgiLCJkZXBlbnNlX25ldHRlX21pbmltYWxlX2Q4MzJfMTAiLCJwbGFmb25kX3NpZ25hdHVyZSIsInBsYWZvbmRfZW50cmVlIiwicGxhZm9uZF9tZW5zdWFsaXRlX2Q4MzJfMTBfM19iIiwicGxhZm9uZF9tZW5zdWFsaXRlX2Q4MzJfMTBfM19jIiwibW9udGFudF9saW1pdGVfdHJhbmNoZXNfZDgzMl8xJDAiLCJtZW5zdWFsaXRlX21pbmltYWxlIiwibWVuc3VhbGl0ZV9lbGlnaWJsZSIsImVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaSIsImFnZV9sNTEyXzNfMiQwIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDEiLCJsb3llcl9wcmluY2lwYWxfYmFzZSIsImJlbmVmaWNpYWlyZV9haWRlX2FkdWx0ZV9vdV9lbiIsImxvZ2VtZW50X2VzdF9jaGFtYnJlIiwiYWdlZXNfb3VfaGFuZGljYXBfYWR1bHRlc19oZWJlIiwidHlwZV9haWRlIiwiY29sb2NhdGlvbiIsInJlZHVjdGlvbl9sb3llcl9zb2xpZGFyaXRlIiwibG9nZW1lbnRfbWV1YmxlX2Q4NDJfMiIsImZyYWN0aW9uX2w4MzJfMyIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDgyM18xNiIsIm11bHRpcGxpY2F0ZXVyX21ham9yYXRpb25fY2hhciIsIm1vbnRhbnRfbWluaW1hbF9haWRlX2Q4MjNfMTYiLCJsb3llcl9wcmluY2lwYWxfYXZlY19yZWR1Y3Rpb24iLCJ0YXV4X2NvbXBvc2l0aW9uX2ZhbWlsaWFsZSIsIm11bHRpcGxpY2F0ZXVyX21ham9yYXRpb25fcjAiLCJtdWx0aXBsaWNhdGV1cl9tYWpvcmF0aW9uX2xveWUiLCJtdWx0aXBsaWNhdGV1cl9tYWpvcmF0aW9uX3BsYWYiLCJsaW1pdGUiLCJhYmF0dGVtZW50X2ZvcmZhaXRhaXJlX2Q4MjNfMTciLCJsb3llcl9yZWZlcmVuY2UiLCJwbGFmb25kX2xveWVyX2Q4MjNfMTZfMiIsInBsYWZvbmRfc3VwcHJlc3Npb25fZDgyM18xNiIsInBsYWZvbmRfZGVncmVzc2l2aXRlX2Q4MjNfMTYiLCJsb3llcl9lbGlnaWJsZSIsInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfZGltaW51ZSIsInBhcnRpY2lwYXRpb25fbWluaW1hbGUiLCJyYXBwb3J0X2xveWVycyIsInRhdXhfbG95ZXJfZWxpZ2libGVfZm9ybXVsZSIsInRhdXhfbG95ZXJfZWxpZ2libGVfdGF1eF9hcnJvbiIsInRyYWl0ZW1lbnRfYWlkZV9maW5hbGVfcmVkdWN0aSIsInRhdXhfcHJpc2VfY29tcHRlX3Jlc3NvdXJjZXMiLCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlX21vbnRlZV8iLCJwYXJ0aWNpcGF0aW9uX3Jlc3NvdXJjZXMiLCJwYXJ0aWNpcGF0aW9uX3Jlc3NvdXJjZXMkMCIsInBhcnRpY2lwYXRpb25fcGVyc29ubmVsbGUiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3kiLCJjYXRlZ29yaWVfZXF1aXZhbGVuY2VfbG95ZXJfZDgiLCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF8iLCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF8kMCIsImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90XyQxIiwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfJDIiLCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF8kMyIsImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90XyQ0IiwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfJDUiLCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF8kNiIsImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90XyQ3IiwiY2FsY3VsX2FwbF9sb2dlbWVudF9mb3llcl9kb3RfJDgiLCJjYWxjdWxfYXBsX2xvZ2VtZW50X2ZveWVyX2RvdF8kOSIsImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90XyQxMCIsImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90XyQxMSIsImNhbGN1bF9hcGxfbG9nZW1lbnRfZm95ZXJfZG90XyQxMiIsIm1vbnRhbnRfbWluaW1hbF9kZXBlbnNlX25ldHRlXyIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml8xNSIsIm1vbnRhbnRfbWluaW1hbF9haWRlX2Q4NDJfMTUiLCJlcXVpdmFsZW5jZV9sb3llciIsImNvZWZmaWNpZW50X3ByaXNlX2VuX2NoYXJnZSIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfY2hhcmdlcyIsImxveWVyX21pbmltYWwiLCJhYmF0dGVtZW50IiwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9kZXBlbnNlIiwidHJhaXRlbWVudF9haWRlX2ZpbmFsZV9yZWRldmFuIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjIiwicmVzc291cmNlc19tZW5hZ2VfYXJyb25kaWVzX2JhIiwiY2hhcmdlc19tZW5zdWVsbGVzX3ByZXQiLCJvcGVyYXRpb25zX2xvZ2VtZW50X2V2b2x1dGlmc18iLCJjb2VmZmljaWVudF9kODQyXzEyIiwiY29lZmZpY2llbnRfZDg0Ml8xMSIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml8xMiIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml8xMSIsIm1vbnRhbnRfbWluaW1hbF9haWRlX2Q4NDJfNiIsIm1vbnRhbnRfZm9yZmFpdGFpcmVfZDg0Ml82IiwiY29uZGl0aW9uX2Q4NDJfMTFfMyIsImRhdGVfY2FsY3VsIiwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODQyIiwic2V1aWxfbWluaW1hbF9yZXNzb3VyY2VzX21lbmFnIiwiY2FsY3VsX3BsYWZvbmRfbWVuc3VhbGl0ZV9kODQyJDAiLCJyZXNzb3VyY2VzX21lbmFnZV9hcnJvbmRpZXNfc2UiLCJjYWxjdWxfcGxhZm9uZF9tZW5zdWFsaXRlX2Q4NDIkMSIsInNldWlsX21pbmltYWxfZGVwZW5zZV9uZXR0ZV9taSIsInBsYWZvbmRfbWVuc3VhbGl0ZV9kODQyXzYiLCJkZXBlbnNlX25ldHRlX21pbmltYWxlJDAiLCJlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV8iLCJtZW5hZ2UiLCJkZW1hbmRldXIiLCJjb25kaXRpb25fbG9nZW1lbnRfcmVzaWRlbmNlX3AiLCJjb25kaXRpb25fbG9nZW1lbnRfc3VyZmFjZSIsImRhdGVfZW50cmVlX3ZpZ3VldXJfZGlmZmVyZWVfYyIsImRhdGVfZW50cmVlX3ZpZ3VldXJfZGlmZmVyZWVfYyQwIiwic2V1aWxfbDgyMl8zX3BhcnRzX3Byb3ByaWV0ZSIsInNldWlsX2w4MjJfM19wYXJ0c191c3VmcnVpdCIsInVzdWZydWl0X291X3Byb3ByaWV0ZV9mYW1pbGxlIiwibm9tYnJlX3BlcnNvbm5lc19sb2dlbWVudCIsInNlcHRpZW1lX2FsaW5lYV9sODIzXzFfYXBwbGljYSIsImNvbmRpdGlvbl9ub25fb3V2ZXJ0dXJlX2w4MjJfOSIsImNvbmRpdGlvbl9ub25fb3V2ZXJ0dXJlX2w4MjJfOCIsImNvbmRpdGlvbl9sb2dlbWVudF9yZXNpZGVuY2VfcCQwIiwib3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9kb3RfIiwib3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9kb3RfJDAiLCJjb25kaXRpb25zIiwiY29uZGl0aW9uX25hdGlvbmFsaXRlIiwicGxhZm9uZF9pbmRpdmlkdWVsX2w4MTVfOV9zZWN1IiwicGVyc29ubmUiLCJjb25kaXRpb25fbG9nZW1lbnRfbG9jYXRpb25fdGkiLCJwcmVzdGF0aW9uc19mYW1pbGlhbGVzX2RvdF9hZ2UkMCIsInVzdWZydWl0X291X3Byb3ByaWV0ZV9mYW1pbGxlJDAiLCJwYXJ0cyIsInBhcnRzJDAiLCJwYXJ0cyQxIiwicGFydHMkMiIsImNvbmRpdGlvbl9sb2dlbWVudF9tb2RlX29jY3VwYSIsImNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlX21pbiIsImNvbmRpdGlvbl9sb2dlbWVudF9zdXJmYWNlJDAiLCJhZ2VfbDE2MV8xN18yX3NlY3UiLCJjb25kaXRpb25fb3V2ZXJ0dXJlX2w4MjJfMTBfcGUiLCJhZ2VfbDM1MV84XzFfc2VjdSIsImVsaWdpYmlsaXRlX2xvZ2VtZW50IiwicGVyc29ubmVfYV9jaGFyZ2UiLCJwYXJlbnQiLCJjb25kaXRpb25fMl9yODIzXzQiLCJlbGlnaWJpbGl0ZSIsInByaXNlX2VuX2NvbXB0ZV9wZXJzb25uZV9hX2NoYSIsInBlcnNvbm5lc19hX2NoYXJnZV9wcmlzZXNfZW5fYyIsImNvZWZmIiwiY29lZmZpY2VudHNfZW5mYW50c19nYXJkZV9hbHRlIiwibm9tYnJlX3BlcnNvbm5lc19hX2NoYXJnZV9wcmlzIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jIiwibG95ZXJfcHJpbmNpcGFsIiwiY2hhbmdlbWVudF9sb2dlbWVudF9kODQyXzQiLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2xveWVyX3AiLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3Jlc3NvdXIiLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2JlbmVmaWMiLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2RhdGVfY28iLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X25vbWJyZV8iLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3NpdHVhdGkiLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3pvbmUiLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2xvZ2VtZW4iLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2FnZWVzX28iLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3R5cGVfYWkiLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2NvbG9jYXQiLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X3JlZHVjdGkiLCJjYWxjdWxfYXBsX2xvY2F0aWZfZG90X2xvZ2VtZW4kMCIsImNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfcmVzaWRlbiIsImNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfbW9udGFudCIsImNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfcGxhZm9uZCIsImNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfcGFydGljaSIsImNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfdGF1eF9jbyIsImNhbGN1bF9hcGxfbG9jYXRpZl9kb3RfcGFydGljaSQwIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF9haWRlX2ZpIiwiY2FsY3VsX2FwbF9sb2NhdGlmX2RvdF90cmFpdGVtIiwiaW5mb3MiLCJ0cmFpdGVtZW50X2FpZGVfZmluYWxlIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDIiLCJyZXNzb3VyY2VzX21lbmFnZV9zYW5zX2Fycm9uZGkiLCJzaXR1YXRpb25fZmFtaWxpYWxlIiwibG9jYXRpb24iLCJsb2dlbWVudGZveWVyIiwicHJvcHJpZXRhaXJlIiwibG9jYXRpb24kMCIsInByb3ByaWV0YWlyZSQwIiwiY2F0ZWdvcmllX2NhbGN1bF9hcGwiLCJyZXNzb3VyY2VzX21lbmFnZV9hdmVjX2Fycm9uZGkiLCJiYWlsbGV1ciIsInBhcmFtMCIsInRyYWl0ZW1lbnRfZm9ybXVsZSIsInRyYWl0ZW1lbnRfZm9ybXVsZSQwIiwibG9nZW1lbnRfZm95ZXIiLCJyZXN1bHQkMyIsInJlc3VsdCQ0IiwidHJhaXRlbWVudF9mb3JtdWxlJDEiLCJzb3VzX2NhbGN1bF90cmFpdGVtZW50IiwiZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtIiwiaW5mb3JtYXRpb25zIiwiZGF0ZV9lbW1lbmFnZW1lbnQiLCJkZXBlbnNlc19qdXN0aWZpZWVzX3JlZWxsZW1lbnQiLCJkZWxhaV9hcHJlc19lbW1lbmFnZW1lbnRfbDgyM18iLCJjb25kaXRpb25fcmFuZ19lbmZhbnQiLCJlbGlnaWJpbGl0ZV9hcGxfZG90X21lbmFnZSIsImVsaWdpYmlsaXRlX2FwbF9kb3RfZGVtYW5kZXVyIiwiZWxpZ2liaWxpdGVfYXBsX2RvdF9kYXRlX2NvdXJhIiwiZWxpZ2liaWxpdGVfYXBsX2RvdF9jb25kaXRpb25fIiwiZWxpZ2liaWxpdGVfYXBsX2RvdF9jb25kaXRpb25fJDAiLCJlbGlnaWJpbGl0ZV9hcGxfZG90X2RhdGVfZW50cmUiLCJlbGlnaWJpbGl0ZV9hcGxfZG90X2RhdGVfY291cmEkMCIsImVsaWdpYmlsaXRlX2FwbF9kb3RfZWxpZ2liaWxpdCIsImRhdGVfbmFpc3NhbmNlX291X2dyb3NzZXNzZSIsImNvbmRpdGlvbl9wZXJpb2RlX2RlbWVuYWdlbWVudCIsInBsYWZvbmRfZDgyM18yMiIsIm1vbnRhbnRfcHJpbWVfZGVtZW5hZ2VtZW50IiwiZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVuIiwiYmVuZWZpY2llX2FpZGVfcGVyc29ubmFsaXNlZV9sIiwiZHVyZWVfbDg0MV8xXzMiLCJsXzg0MV8xXzZfYXBwbGljYWJsZSIsImxfODQxXzFfMl9hcHBsaWNhYmxlIiwibF84NDFfMV8xX2FwcGxpY2FibGUiLCJjb25kaXRpb25fYWNjZXNzaW9uX3Byb3ByaWV0ZSIsImVsaWdpYmlsaXRlX2NvbW11bmVfZG90X21lbmFnZSIsImVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2RlbWFuZCIsImVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2RhdGVfYyIsImVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdCIsImVsaWdpYmlsaXRlX2NvbW11bmVfZG90X2NvbmRpdCQwIiwiZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZGF0ZV9lIiwiZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfZWxpZ2liIiwiZWxpZ2liaWxpdGVfY29tbXVuZV9kb3Rfbm9tYnJlIiwiZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29lZmZpIiwiZWxpZ2liaWxpdGVfY29tbXVuZV9kb3RfY29uZGl0JDEiLCJlbGlnaWJpbGl0ZV9kaXNwb3NpdGlvbnNfY29tbXUiLCJhY2MiLCJwcmVzdGF0aW9uIiwiZGF0ZV9tYXJpYWdlIiwiZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVuJDAiLCJkYXRlX2FjY29yZCIsImVsaWdpYmlsaXRlX2w4NDFfMiIsImVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZSIsInByZXQiLCJjYXJhY3RlcmlzdGlxdWVzX3ByZXRfbDgzMV8xXzEiLCJjYXJhY3RlcmlzdGlxdWVzX3ByZXRfbDgzMV8xXzYiLCJsb2dlbWVudF9zaXR1ZV9jb21tdW5lX2Rlc2VxdWkiLCJwcm9wcmlldGUiLCJjb252ZW50aW9uIiwiY29udmVudGlvbiQwIiwiY29uZGl0aW9uX2xvZ2VtZW50X2JhaWxsZXVyIiwicHJvcHJpZXRlJDAiLCJjb25kaXRpb25fbG9nZW1lbnRfcHJldCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfaW4iLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50IiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pIiwicmVzc291cmNlc19tZW5hZ2VfcHJpc2VzX2VuX2NvIiwiZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVuJDEiLCJlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW4kMiIsImVsaWdpYmlsaXRlX2FsbG9jYXRpb25fbG9nZW1lbiQzIiwiZWxpZ2liaWxpdGVfYWxsb2NhdGlvbl9sb2dlbWVuJDQiLCJlbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvZ2VtZW4kNSIsImVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZSQwIiwiZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlJDEiLCJlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWUkMiIsImVsaWdpYmlsaXRlX2FpZGVfcGVyc29ubmFsaXNlZSQzIiwiZWxpZ2liaWxpdGVfYWlkZV9wZXJzb25uYWxpc2VlJDQiLCJlbGlnaWJpbGl0ZV9haWRlX3BlcnNvbm5hbGlzZWUkNSIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdCQwIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90JDEiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3QkMiIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdCQzIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90JDQiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3QkNSIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2RvdCQ2IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZG90JDciLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9kb3QkOCIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQzIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDQiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkNSIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQ2IiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDciLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkOCIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQ5IiwiYWlkZV9maW5hbGVfYXBsIiwiYWlkZV9maW5hbGVfYWwiLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2ciLCJtZW5hZ2Vfc2Fuc19lbmZhbnRzX2dhcmRlX2FsdGUiLCJjYWxjdWxldHRlX2RvdF9tZW5hZ2UiLCJjYWxjdWxldHRlX2RvdF9kZW1hbmRldXIiLCJjYWxjdWxldHRlX2RvdF9kYXRlX2NvdXJhbnRlIiwiY2FsY3VsZXR0ZV9kb3RfcmVzc291cmNlc19tZW5hIiwiY2FsY3VsZXR0ZV9kb3RfZWxpZ2liaWxpdGUiLCJjYWxjdWxldHRlX2RvdF9haWRlX2ZpbmFsZV9mb3IiLCJjYWxjdWxldHRlX2RvdF90cmFpdGVtZW50X2FpZGUiLCJjYWxjdWxldHRlX2RvdF9jb2VmZmljZW50c19lbmYiLCJjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWUiLCJjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWUkMCIsImNhbGN1bGV0dGVfc2Fuc19nYXJkZV9hbHRlcm5lZSQxIiwiY2FsY3VsZXR0ZV9zYW5zX2dhcmRlX2FsdGVybmVlJDIiLCJjYWxjdWxldHRlX3NhbnNfZ2FyZGVfYWx0ZXJuZWUkMyIsInR5cGVfcHJldF90b19qc29vIiwidHlwZV9wcmV0X29mX2pzb28iLCJ0aXR1bGFpcmVfcHJldF90b19qc29vIiwidGl0dWxhaXJlX3ByZXRfb2ZfanNvbyIsInRpdHVsYWlyZV9wcmV0IiwidHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTVfIiwidHlwZV90cmF2YXV4X2xvZ2VtZW50X2Q4MzJfMTVfJDAiLCJ0eXBlX3RyYXZhdXhfbG9nZW1lbnRfZDgzMl8xNSIsInR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzVfdCIsInR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzVfbyIsInR5cGVfdHJhdmF1eF9sb2dlbWVudF9yODQyXzUiLCJhbWVsaW9yZV9wYXJfb2NjdXBhbnRfdG9fanNvbyIsImFtZWxpb3JlX3Bhcl9vY2N1cGFudF9vZl9qc29vIiwibGltaXRlX3RyYW5jaGVfdG9fanNvbyIsImxpbWl0ZV90cmFuY2hlX29mX2pzb28iLCJsaW1pdGVfdHJhbmNoZSIsImxpbWl0ZV90cmFuY2hlX2RlY2ltYWxfdG9fanNvbyIsImxpbWl0ZV90cmFuY2hlX2RlY2ltYWxfb2ZfanNvbyIsImxpbWl0ZV90cmFuY2hlX2RlY2ltYWwiLCJwcmVzdGF0aW9uX3JlY3VlX3RvX2pzb28iLCJwcmVzdGF0aW9uX3JlY3VlX29mX2pzb28iLCJwcmVzdGF0aW9uX3JlY3VlIiwicGFyZW50X291X2F1dHJlX3RvX2pzb28iLCJwYXJlbnRfb3VfYXV0cmVfb2ZfanNvbyIsInBhcmVudF9vdV9hdXRyZSIsInNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZV90b19qcyIsInNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZV9vZl9qcyIsInNpdHVhdGlvbl9nYXJkZV9hbHRlcm5lZSIsInBhcmVudGVfdG9fanNvbyIsInBhcmVudGVfb2ZfanNvbyIsInBhcmVudGUiLCJkYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2ciLCJkYXRlX2RlX25haXNzYW5jZV9vdV9tb2lzX2RlX2ckMCIsInpvbmVfZF9oYWJpdGF0aW9uX3RvX2pzb28iLCJ6b25lX2RfaGFiaXRhdGlvbl9vZl9qc29vIiwiem9uZV9kX2hhYml0YXRpb24iLCJ2ZXJzZW1lbnRfYV90b19qc29vIiwidmVyc2VtZW50X2Ffb2ZfanNvbyIsInZlcnNlbWVudF9hIiwiZGVwZW5zZV9sb2dlbWVudF90b19qc29vIiwiZGVwZW5zZV9sb2dlbWVudF9vZl9qc29vIiwibW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV90b19qc29vIiwibW9kZV9vY2N1cGF0aW9uX2ltcGF5ZV9vZl9qc29vIiwidHlwZV9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvIiwidHlwZV9lbGlnaWJpbGl0ZV9hbGxvY2F0aW9uX2xvJDAiLCJhY2NvcmRfZmluYW5jZW1lbnRfcmVwcmVzZW50YW4iLCJhY2NvcmRfZmluYW5jZW1lbnRfcmVwcmVzZW50YW4kMCIsInR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbiIsInR5cGVfYWlkZXNfcGVyc29ubmVsbGVfbG9nZW1lbiQwIiwic2l0dWF0aW9uX2ZhbWlsaWFsZV90b19qc29vIiwic2l0dWF0aW9uX2ZhbWlsaWFsZV9vZl9qc29vIiwidHlwZV9sb2dlbWVudF9mb3llcl90b19qc29vIiwidHlwZV9sb2dlbWVudF9mb3llcl9vZl9qc29vIiwiY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsIiwiY2F0ZWdvcmllX2VxdWl2YWxlbmNlX2xveWVyX2FsJDAiLCJzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3AiLCJzaXR1YXRpb25fZmFtaWxpYWxlX2NhbGN1bF9hX3AkMCIsImNvbGxlY3Rpdml0ZV90b19qc29vJDAiLCJjb2xsZWN0aXZpdGVfb2ZfanNvbyQwIiwic2l0dWF0aW9uX29ibGlnYXRpb25fc2NvbGFpcmVfJDEiLCJzaXR1YXRpb25fb2JsaWdhdGlvbl9zY29sYWlyZV8kMiIsImNvbnZlbnRpb25fYmFpbGxldXJfc29jaWFsX3RvXyIsImNvbnZlbnRpb25fYmFpbGxldXJfc29jaWFsIiwiY29udmVudGlvbl9iYWlsbGV1cl9zb2NpYWxfb2ZfIiwiY29udmVudGlvbl9hX25faF9hX3RvX2pzb28iLCJjb252ZW50aW9uX2Ffbl9oX2EiLCJjb252ZW50aW9uX2Ffbl9oX2Ffb2ZfanNvbyIsInBlcnNvbm5lX3NvdXNfbG9jYXRpb25fdG9fanNvbyIsInBlcnNvbm5lX3NvdXNfbG9jYXRpb24iLCJwZXJzb25uZV9zb3VzX2xvY2F0aW9uX29mX2pzb28iLCJjb25kaXRpb25zX2V0cmFuZ2Vyc190b19qc29vIiwiY29uZGl0aW9uc19ldHJhbmdlcnMiLCJjb25kaXRpb25zX2V0cmFuZ2Vyc19vZl9qc29vIiwiZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtJDAiLCJlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW0kMSIsImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcCQwIiwiY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wJDEiLCJjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm8kMCIsImNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mbyQxIiwiY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fJDAiLCJjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl8kMSIsInRyYWl0ZW1lbnRfZm9ybXVsZV9haWRlX2ZpbmFsZSIsInRyYWl0ZW1lbnRfZm9ybXVsZV9haWRlX2ZpbmFsZSQwIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDEwIiwiaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyIiwiaW5mb3NfY2hhbmdlbWVudF9sb2dlbWVudF9kODQyJDAiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2MkMCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvYyQxIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfYWNjJDAiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2MkMSIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2ZveSQwIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95JDEiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF90b18iLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9vZl8iLCJvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX3RvX2oiLCJvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlX29mX2oiLCJpbXBheWVfZGVwZW5zZV9sb2dlbWVudF90b19qc28iLCJpbXBheWVfZGVwZW5zZV9sb2dlbWVudF9vZl9qc28iLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X3QiLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X28iLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2ckMCIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZyQxIiwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtJDYiLCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW0kNyIsInZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291XyQ2IiwidmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfJDciLCJ2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX3QkMCIsInZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfbyQwIiwic21pY190b19qc29vJDAiLCJzbWljX29mX2pzb28kMCIsIm5ldWZfb3VfYW5jaWVuX3RvX2pzb28iLCJuZXVmX291X2FuY2llbl9vZl9qc29vIiwibmV1Zl9vdV9hbmNpZW4iLCJ0cmFuY2hlX3JldmVudV90b19qc29vIiwidHJhbmNoZV9yZXZlbnUiLCJ0cmFuY2hlX3JldmVudV9vZl9qc29vIiwidHJhbmNoZV9yZXZlbnVfZGVjaW1hbF90b19qc29vIiwidHJhbmNoZV9yZXZlbnVfZGVjaW1hbCIsInRyYW5jaGVfcmV2ZW51X2RlY2ltYWxfb2ZfanNvbyIsImF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlX3RvX2pzbyIsImF1dHJlX3BlcnNvbm5lX2FfY2hhcmdlIiwiYXV0cmVfcGVyc29ubmVfYV9jaGFyZ2Vfb2ZfanNvIiwiZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2RlIiwiZGF0ZV9uYWlzc2FuY2VfdHJvaXNpZW1lX291X2RlJDAiLCJwcmV0X3RvX2pzb28iLCJwcmV0X29mX2pzb28iLCJsb2dlbWVudF9mb3llcl90b19qc29vIiwibG9nZW1lbnRfZm95ZXJfb2ZfanNvbyIsImVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzXyIsImVuZmFudF9wcmVzdGF0aW9uc19mYW1pbGlhbGVzIiwiZW5mYW50X3ByZXN0YXRpb25zX2ZhbWlsaWFsZXNfJDAiLCJ0eXBlX2JhaWxsZXVyX3RvX2pzb28iLCJ0eXBlX2JhaWxsZXVyX29mX2pzb28iLCJ0eXBlX2JhaWxsZXVyIiwibG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnNfIiwibG91ZV9vdV9zb3VzX2xvdWVfYV9kZXNfdGllcnNfJDAiLCJsb3VlX291X3NvdXNfbG91ZV9hX2Rlc190aWVycyIsIm5hdGlvbmFsaXRlX3RvX2pzb28iLCJuYXRpb25hbGl0ZV9vZl9qc29vIiwibmF0aW9uYWxpdGUiLCJjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF90b18iLCJjaGFuZ2VtZW50X2xvZ2VtZW50X2Q4NDJfNF9vZl8iLCJpbmZvcm1hdGlvbnNfcHJpbWVfZGVfZGVtZW5hZ2UiLCJpbmZvcm1hdGlvbnNfcHJpbWVfZGVfZGVtZW5hZ2UkMCIsInByb3ByaWV0YWlyZV90b19qc29vIiwicHJvcHJpZXRhaXJlX29mX2pzb28iLCJlbGlnaWJpbGl0ZV9wcmVzdGF0aW9uc19mYW1pbGkkMCIsImVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaSQxIiwiZGVtYW5kZXVyX3RvX2pzb28iLCJkZW1hbmRldXJfb2ZfanNvbyIsImVuZmFudF9hX2NoYXJnZV90b19qc29vIiwiZW5mYW50X2FfY2hhcmdlIiwiZW5mYW50X2FfY2hhcmdlX29mX2pzb28iLCJsb2NhdGlvbl90b19qc29vIiwibG9jYXRpb25fb2ZfanNvbyIsInBlcnNvbm5lX2FfY2hhcmdlX3RvX2pzb28iLCJwZXJzb25uZV9hX2NoYXJnZV9vZl9qc29vIiwiY2F0ZWdvcmllX2NhbGN1bF9hX3BfbF90b19qc29vIiwiY2F0ZWdvcmllX2NhbGN1bF9hX3BfbF9vZl9qc29vIiwiY2F0ZWdvcmllX2NhbGN1bF9hX3BfbCIsIm1vZGVfb2NjdXBhdGlvbl90b19qc29vIiwibW9kZV9vY2N1cGF0aW9uX29mX2pzb28iLCJlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV8kMCIsImVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlXyQxIiwibG9nZW1lbnRfdG9fanNvbyIsImxvZ2VtZW50IiwibG9nZW1lbnRfb2ZfanNvbyIsIm1lbmFnZV90b19qc29vIiwibWVuYWdlX29mX2pzb28iLCJlbGlnaWJpbGl0ZV9haWRlc19wZXJzb25uZWxsZV8kMiIsImVsaWdpYmlsaXRlX2FpZGVzX3BlcnNvbm5lbGxlXyQzIiwiZWxpZ2liaWxpdGVfcHJpbWVfZGVfZGVtZW5hZ2VtJDIiLCJlbGlnaWJpbGl0ZV9wcmltZV9kZV9kZW1lbmFnZW0kMyIsImNvbnRyaWJ1dGlvbnNfc29jaWFsZXNfYWlkZXNfcCQyIiwiY29udHJpYnV0aW9uc19zb2NpYWxlc19haWRlc19wJDMiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMTEiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMTIiLCJjYWxjdWxfbm9tYnJlX3BhcnRfbG9nZW1lbnRfZm8kMiIsImNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mbyQzIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDEzIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDE0IiwiY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fJDIiLCJjYWxjdWxfbm9tYnJlX3BhcnRzX2FjY2Vzc2lvbl8kMyIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQxNSIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQxNiIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQxNyIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQxOCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2xvYyQyIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfbG9jJDMiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9hY2MkMiIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjYyQzIiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnRfZm95JDIiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3kkMyIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luXyIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2luXyQwIiwib3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbl90Iiwib3V2ZXJ0dXJlX2Ryb2l0c19yZXRyYWl0ZV9pbl9vIiwiaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW5fdG9fIiwiaW1wYXllX2RlcGVuc2VfbG9nZW1lbnRfaW5fb2ZfIiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9pJDAiLCJjYWxjdWxldHRlX2FpZGVzX2F1X2xvZ2VtZW50X2ckMiIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZyQzIiwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtJDgiLCJiYXNlX21lbnN1ZWxsZV9hbGxvY2F0aW9uc19mYW0kOSIsInZlcmlmaWNhdGlvbl9hZ2VfaW5mZXJpZXVyX291XyQ4IiwidmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfJDkiLCJ2ZXJpZmljYXRpb25fYWdlX3N1cGVyaWV1cl9hX2kkMSIsInZlcmlmaWNhdGlvbl9hZ2Vfc3VwZXJpZXVyX2FfaSQyIiwic21pY19pbl90b19qc29vJDAiLCJzbWljX2luX29mX2pzb28kMCIsImVsaWdpYmlsaXRlX3ByZXN0YXRpb25zX2ZhbWlsaSQyIiwiZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpJDMiLCJjb250cmlidXRpb25zX3NvY2lhbGVzX2FpZGVzX3AkNCIsImNhbGN1bF9ub21icmVfcGFydF9sb2dlbWVudF9mbyQ0IiwiY2FsY3VsX25vbWJyZV9wYXJ0c19hY2Nlc3Npb25fJDQiLCJvdXZlcnR1cmVfZHJvaXRzX3JldHJhaXRlJDAiLCJpbXBheWVfZGVwZW5zZV9sb2dlbWVudCQwIiwiYmFzZV9tZW5zdWVsbGVfYWxsb2NhdGlvbnNfZmFtJDEwIiwidmVyaWZpY2F0aW9uX2FnZV9pbmZlcmlldXJfb3VfJDEwIiwidmVyaWZpY2F0aW9uX2FnZV9zdXBlcmlldXJfYSQyIiwic21pYyQyIiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDE5IiwiY2FsY3VsX2FpZGVfcGVyc29ubmFsaXNlZV9sb2dlJDIwIiwiZWxpZ2liaWxpdGVfcHJlc3RhdGlvbnNfZmFtaWxpJDQiLCJjYWxjdWxfYWlkZV9wZXJzb25uYWxpc2VlX2xvZ2UkMjEiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9mb3kkNCIsImNhbGN1bF9hbGxvY2F0aW9uX2xvZ2VtZW50X2FjYyQ0IiwiZWxpZ2liaWxpdGVfYWlkZXNfcGVyc29ubmVsbGVfJDQiLCJjYWxjdWxfYWxsb2NhdGlvbl9sb2dlbWVudF9sb2MkNCIsImNhbGN1bF9haWRlX3BlcnNvbm5hbGlzZWVfbG9nZSQyMiIsImVsaWdpYmlsaXRlX3ByaW1lX2RlX2RlbWVuYWdlbSQ0IiwiY2FsY3VsX2FsbG9jYXRpb25fbG9nZW1lbnQkMCIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnQkMCIsImNhbGN1bGV0dGVfYWlkZXNfYXVfbG9nZW1lbnRfZyQ0IiwiY2FsY3VsZXR0ZV9haWRlc19hdV9sb2dlbWVudF9nIiwiaW50ZXJmYWNlX2FsbG9jYXRpb25zX2ZhbWlsaWFsIl0sInNvdXJjZXMiOlsiIiwiL2J1aWx0aW4vK2ludDY0LmpzIiwiL2J1aWx0aW4vK21sQnl0ZXMuanMiLCIvYnVpbHRpbi8rZmFpbC5qcyIsIi9idWlsdGluLytzdGRsaWIuanMiLCIvYnVpbHRpbi8rZm9ybWF0LmpzIiwiL2J1aWx0aW4vK2llZWVfNzU0LmpzIiwiL2J1aWx0aW4vK2VmZmVjdC5qcyIsIi9idWlsdGluLytmc19ub2RlLmpzIiwiL2J1aWx0aW4vK2ZzLmpzIiwiL2J1aWx0aW4vK3VuaXguanMiLCIvYnVpbHRpbi8rc3lzLmpzIiwiL2J1aWx0aW4vK2ZzX2Zha2UuanMiLCIvYnVpbHRpbi8rbmF0LmpzIiwiL2J1aWx0aW4vK2dyYXBoaWNzLmpzIiwiL2J1aWx0aW4vK21hcnNoYWwuanMiLCIvYnVpbHRpbi8raW8uanMiLCIvYnVpbHRpbi8rZ2MuanMiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL3phcml0aF9zdHVic19qcy9iaWdpbnRlZ2VyLmpzIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi96YXJpdGhfc3R1YnNfanMvcnVudGltZS5qcyIsIi9idWlsdGluLytiaWdhcnJheS5qcyIsIi9idWlsdGluLytqc2xpYi5qcyIsIi9idWlsdGluLytwYXJzaW5nLmpzIiwiL2J1aWx0aW4vK2ludHMuanMiLCIvYnVpbHRpbi8raGFzaC5qcyIsIi9idWlsdGluLytvYmouanMiLCIvYnVpbHRpbi8rZG9tYWluLmpzIiwiL2J1aWx0aW4vK2NvbXBhcmUuanMiLCIvYnVpbHRpbi8ranNsaWJfanNfb2Zfb2NhbWwuanMiLCIvYnVpbHRpbi8rYmlnc3RyaW5nLmpzIiwiL2J1aWx0aW4vK21kNS5qcyIsIi9idWlsdGluLytiYWNrdHJhY2UuanMiLCIvYnVpbHRpbi8rc3RyLmpzIiwiL2J1aWx0aW4vK2xleGluZy5qcyIsIi9idWlsdGluLythcnJheS5qcyIsIi9idWlsdGluLytzeW5jLmpzIiwiL2J1aWx0aW4vK3dlYWsuanMiLCIvYnVpbHRpbi8rcHJuZy5qcyIsIi9idWlsdGluLytiaWdzdHJpbmctY3N0cnVjdC5qcyIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvdWNoYXIubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL29jYW1sL2ludDY0Lm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9sZXhpbmcubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL29jYW1sL2NhbWxpbnRlcm5hbEZvcm1hdC5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvcHJpbnRleGMubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL29jYW1sL2ZpbGVuYW1lLm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9jb21wbGV4Lm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL29jYW1sL2NhbWxpbnRlcm5hbEF0b21pYy5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvc3RkbGliLm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9wZXJ2YXNpdmVzLm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9mbG9hdC5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvcmFuZG9tLm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9saXN0Lm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9pbl9jaGFubmVsLm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9vdXRfY2hhbm5lbC5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvZWl0aGVyLm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9uYXRpdmVpbnQubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL29jYW1sL29iai5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvY2FtbGludGVybmFsTGF6eS5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvbGF6eS5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvc2VxLm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9vcHRpb24ubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL29jYW1sL3Jlc3VsdC5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvYm9vbC5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvY2hhci5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvYnl0ZXMubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL29jYW1sL2ludC5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvc3RyaW5nLm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC91bml0Lm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9tYXJzaGFsLm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9hcnJheS5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvaW50MzIubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL29jYW1sL3BhcnNpbmcubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL29jYW1sL3NldC5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvbWFwLm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9zdGFjay5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvcXVldWUubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL29jYW1sL3N0cmVhbS5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvYnVmZmVyLm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9wcmludGYubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL29jYW1sL2FyZy5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvZnVuLm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9nYy5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvZGlnZXN0Lm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9oYXNodGJsLm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC93ZWFrLm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9mb3JtYXQubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL29jYW1sL3NjYW5mLm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9jYWxsYmFjay5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvY2FtbGludGVybmFsT08ubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL29jYW1sL2NhbWxpbnRlcm5hbE1vZC5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvb2NhbWwvZ2VubGV4Lm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9lcGhlbWVyb24ubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL29jYW1sL2JpZ2FycmF5Lm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9kYXRlc19jYWxjL2RhdGVzLm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi95b2pzb24veW9qc29uLm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9wcHhfeW9qc29uX2NvbnZfbGliL3lvanNvbl9jb252Lm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9wcHhfeW9qc29uX2NvbnZfbGliL3lvanNvbl9jb252X2Vycm9yLm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9wcHhfeW9qc29uX2NvbnZfbGliL3BweF95b2pzb25fY29udl9saWIubWwiLCIvd29ya3NwYWNlX3Jvb3QvcnVudGltZXMvb2NhbWwvcnVudGltZS5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvanNfb2Zfb2NhbWwtY29tcGlsZXIvcnVudGltZS9qc29vX3J1bnRpbWUubWwiLCIiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL2pzX29mX29jYW1sL2ltcG9ydC5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvanNfb2Zfb2NhbWwvanMubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL2pzX29mX29jYW1sL2RvbV9odG1sLm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9qc19vZl9vY2FtbC9kb20ubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL2pzX29mX29jYW1sL3R5cGVkX2FycmF5Lm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9qc19vZl9vY2FtbC9maWxlLm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9qc19vZl9vY2FtbC9mb3JtLm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9qc19vZl9vY2FtbC94bWxIdHRwUmVxdWVzdC5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvanNfb2Zfb2NhbWwvd29ya2VyLm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9qc19vZl9vY2FtbC93ZWJTb2NrZXRzLm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9qc19vZl9vY2FtbC93ZWJHTC5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvanNfb2Zfb2NhbWwvcmVnZXhwLm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9qc19vZl9vY2FtbC91cmwubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL2pzX29mX29jYW1sL3N5c19qcy5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvanNfb2Zfb2NhbWwvcmVzaXplT2JzZXJ2ZXIubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL2pzX29mX29jYW1sL3BlcmZvcm1hbmNlT2JzZXJ2ZXIubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL2pzX29mX29jYW1sL211dGF0aW9uT2JzZXJ2ZXIubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL2pzX29mX29jYW1sL2pzdGFibGUubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL2pzX29mX29jYW1sL2pzb24ubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL2pzX29mX29jYW1sL2NTUy5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvanNfb2Zfb2NhbWwvZG9tX2V2ZW50cy5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvanNfb2Zfb2NhbWwvZG9tX3N2Zy5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvanNfb2Zfb2NhbWwvZXZlbnRTb3VyY2UubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL2pzX29mX29jYW1sL2ZpcmVidWcubWwiLCIvaG9tZS9kZW5pcy8ub3BhbS9jYXRhbGEvbGliL2pzX29mX29jYW1sL2dlb2xvY2F0aW9uLm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9qc19vZl9vY2FtbC9pbnRlcnNlY3Rpb25PYnNlcnZlci5tbCIsIi9ob21lL2RlbmlzLy5vcGFtL2NhdGFsYS9saWIvanNfb2Zfb2NhbWwvaW50bC5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9ydW50aW1lcy9qc29vL3J1bnRpbWUubWwiLCIvd29ya3NwYWNlX3Jvb3QvZnJlbmNoX2xhdy9vY2FtbC9sYXdfc291cmNlL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXMubWwiLCIvd29ya3NwYWNlX3Jvb3QvZnJlbmNoX2xhdy9vY2FtbC9sYXdfc291cmNlL2FsbG9jYXRpb25zX2ZhbWlsaWFsZXNfYXBpX3dlYi5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9mcmVuY2hfbGF3L29jYW1sL2xhd19zb3VyY2UvYWlkZXNfbG9nZW1lbnQubWwiLCIvd29ya3NwYWNlX3Jvb3QvZnJlbmNoX2xhdy9vY2FtbC9sYXdfc291cmNlL2FpZGVzX2xvZ2VtZW50X2FwaV93ZWIubWwiLCIvd29ya3NwYWNlX3Jvb3QvZnJlbmNoX2xhdy9vY2FtbC9hcGlfd2ViLm1sIiwiL2hvbWUvZGVuaXMvLm9wYW0vY2F0YWxhL2xpYi9vY2FtbC9zdGRfZXhpdC5tbCJdLCJtYXBwaW5ncyI6Ijs7QUFDQSxDQUFDLFNBQVVBO0lBQ1QsT0FBT0M7Ozs7S0FDTEM7T0FDRTtRQUNDO1VBQXNCRiw4Q0FFaEJHO1FBQ0hDO0lBRVIsU0FBU0Q7TUFDUCxJQUFJRSxPQUFTSCxRQUFRSTtNQUNyQixvQkFBb0JEO01BQ3BCLE9BQU9MLG9CQUNULENBYkQ7R0FjQ0E7Ozs7SUMyTkYsU0FBU08sbUJBQW1CQyxHQUFLLFNBQVEsVUFBWTtJQ3pMckQsU0FBU0MsZ0JBQWdCQyxFQUFHQztNQUMxQixHQUFHRCxPQUFRO01BQ1gsR0FBSUMsU0FBVSxPQUFRLFNBQVNEO01BQy9CLElBQU0sS0FBUTtNQUNkO09BQVEsQ0FDTixHQUFJQSxNQUFPLEtBQUtDO1FBQ2hCO1FBQ0EsR0FBSUQsT0FBUSxPQUFPRTtRQUNuQixLQUFLRDtRQUNMO1FBQ0EsR0FBSUUsT0FBUSxhQU1oQjtJRDdDQSxJQUFJQyxrQkFBb0I7SUVBeEIsU0FBU0Usb0JBQXFCQyxLQUFPLE1BQU1BLEdBQUs7SUMyQ2hELElBQUlDO0lESEosU0FBU0M7TUFDUCxvQkFBb0JELGtDQUN0QjtJ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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1U7Ozs7Ozs7STJCeFdEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tDa0JLQztLQUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQ3dCQUM7S0FDQUM7S0FDQUM7S0FJQUM7S0FDQUM7Ozs7S0N6QkFDO0tBbUhBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tDbzlFTUM7S0FRUUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tDbGxGZEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0NzRUVDO0tBQ0FDO0tBQ0FDO0tBQ0FDOzs7S0EvRVlDO0tBbUhaQztLQUNBQztLQUNBQztLQUNBQzs7O0tBbUlBQztLQUNBQztLQUNBQztLQUNBQzs7O0tDeFBGQztLQUNBQztLQUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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bkM4RyxPTjRjbUMsNEJBQXpCOUcsR0FBMEM7SUE3SzNDLFNDekpUNkosWUR1VVkzRixHQUF5QixxQk03Y3JDNEMsT042Y3FDLFVBQXpCNUMsR0FBNEM7SUE5Sy9DLFNDeEpUNEYsY0R1VWNwRjtNQUNoQixjTS9jRW9DLE9OOGNjcEM7TUFDUSxvQk0vY3RCb0M7TU4rYytDLHFCTS9jL0NBLE9OK2MyRDtJQWhMbEQsU0N2SlRpRDtNRHdVbUIsb0JNaGRuQmpELFdOZ2Q0QyxxQk1oZDVDQSxPTmdkd0Q7SUFqTC9DLFNDdEpUa0QsV0QyVVc1QyxHQUFJLDJCTW5kZkwsT05tZFdLLEVBQXdCO0lBckwxQixTQ3JKVDZDLGFEMlVhdkYsR0FBSSxxQk1wZGpCcUMsT05vZGFyQyxFQUEwQjtJQXRMOUIsU0NwSlR3RixZRDJVWXhGLEdBQUksb0JNcmRoQnFDLE9OcWRZckMsRUFBeUI7SUF2TDVCLFNDbkpUeUYsVUQyVVVuSztNQUF5QixxQk10ZG5DK0csT05zZG1DLDRCQUF6Qi9HLEdBQTBDO0lBeEwzQyxTQ2xKVG9LLFlEMlVZbEcsR0FBeUIscUJNdmRyQzZDLE9OdWRxQyxVQUF6QjdDLEdBQTRDO0lBekwvQyxTQ2pKVG1HLGNEMlVjM0Y7TUFDaEIsY016ZEVxQyxPTndkY3JDO01BQ1Esb0JNemR0QnFDO01OeWQrQyxxQk16ZC9DQSxPTnlkMkQ7SUEzTGxELFNDaEpUdUQ7TUQ0VW1CLG9CTTFkbkJ2RCxXTjBkNEMscUJNMWQ1Q0EsT04wZHdEO0lBNUwvQyxTQy9JVHdELGlCRCtVZSxjTS9kZnpELFFOK2RlLGtCSy9kZkQsTUwrZDZDO0lBaE1wQyxTQzlJVDJELGdCRCtVd0MsMEJBQWIsYUFBYTtJQWpNL0IsU0M3SVRDLG9CRCtVbUMsc0NBQWE7SUFsTXZDLFNDNUlUQyxrQkQrVTRDLDRCQUFiLGFBQWE7SUFuTW5DLFNDM0lUQyxzQkQrVXVDLGtDQUFhO0lBcE0zQyxTQ2hGVEMsd0JYNU9MLElVMGhCcUNoSTtJQTlOdkIsU0M1RVRpSTtNRGtUTTtPQUZzQ0M7T0FBTnJKO09BQWhCc0o7T0FBTnZKO09BRVYsU0FGZ0J1SixLQUVULFVBRitCRDtNQUN0QyxxQkFEVXRKLEtBQXNCQztJQVF0QixJQUFoQnVKLGlCTWpmQXpEO0lOaWZnQixTQ3RUaEIwRCxRRHdUWS9HO01BQ2Q7UUFFbUI7O1NBQ0osU0FOYjhHO1NBTWE7bUJBRFhFLGFBQ0FDO3FCQUNBRTtjQUNDLG1CQUhESCxrQkFHcUQsV0FOM0NoSDtjQU0rQyxrQkFGekRpSCxXQUdTO21CQUZURTtTQURXLG9CQURYSCxhQUNBQztTQUtVLHdCQVhaSCxjQU1FRyxTQUNBRTtTQUlVLFNBQVZDO1FBQVU7b0JBQ2U7SUFaWCxTQ3BUaEJDLGtCRGtVZ0Isa0JBZGhCUCxtQkFjeUQ7SUFkekMsU0N2VGhCUSxLRHVVS0M7TUFDUCxjQUNBLDZCQUZPQSxRQUVTO0lBRVY7c0RDeFVKRjtJRDZVb0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0M5aUJwRDVHO09BQ0FGOzs7Ozs7Ozs7Ozs7OztPQVNBRztPQUNBRztPQTZCQUM7T0V5Q1FRO09GdkNSQztPQUlBUjtPQ2xDQUM7T0FDQUM7T0FDQUM7T0FNQUM7T0FDQUM7T0FDQUM7O09EbUdBTztPQUVBQztPQUVBRztPQURBRDtPQUVBRTtPQUVBQztPQ3JHQUk7T0FEQUM7T0VRQUM7T0N4QkFHO09DQUFDO09BQ0FDO09MaUlBMEM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FFQUU7T0FEQUQ7T0FHQUc7T0FEQUQ7T0toSkFyRDtPQURBQztPQUVBTjtPQXFCQTBGO09BQ0FuRjtPQUNBa0Y7T0FFQTdFO09BQ0FGO09BQ0FHO09BQ0FHO09BSkF3RTtPTDhJQUQ7T0FDQXRFO09BQ0FxRTtPQUNBRDtPQUNBRDtPS3ZKQWpFO09BQ0FDO09BU0ErRDtPRC9CQTdEO09BREFDO09BRUFGO09Ka0xBNkQ7T0FDQWpEO09JOUlBVDtPSmdKQU87T0FDQUM7T0FDQWlEO09BQ0FEO09BQ0FEO09BQ0FEO09BQ0FEO09BQ0FEO09JektBRDtPQUNBbkM7T0F5SEFrQzs7T0orREFkO09BSUFDO09BQ0FXO09BQ0FQO09BQ0E1RTtPRHNMSXFDO09DckxKNkM7SUQ2VW9EOzs7OztPQzlpQnBENUc7T0FDQUY7O09BU0FHO09BQ0FHO09BNkJBQztPRXlDUVE7T0Z2Q1JDO09BSUFSO09DbENBQztPQUNBQztPQUNBQztPQU1BQztPQUNBQztPQUNBQzs7T0RtR0FPO09BRUFDO09BQ0FFO09BQ0FDO09BQ0FDO09BRUFDO09DckdBSTtPQURBQztPRVFBQztPQ3hCQUc7T0NBQUM7T0FDQUM7T0xpSUEwQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPS2pKQXREO09BREFDO09BRUFOO09BcUJBMEY7T0FDQW5GO09BQ0FrRjtPQUVBN0U7T0FDQUY7T0FDQUc7T0FDQUc7T0FKQXdFO09MOElBRDtPQUNBdEU7T0FDQXFFO09BQ0FEO09BQ0FEO09LdkpBakU7T0FDQUM7T0FTQStEO09EL0JBN0Q7T0FEQUM7T0FFQUY7T0prTEE2RDtPQUNBakQ7T0k5SUFUO09KZ0pBTztPQUNBQztPQUNBaUQ7T0FDQUQ7T0FDQUQ7T0FDQUQ7T0FDQUQ7T0FDQUQ7T0l6S0FEO09BQ0FuQztPQXlIQWtDO09KK0RBZDtPQUlBQztPQUNBVztPQUNBUDtPQUNBNUU7T0FDQWtGO0lENlVvRDthTy9pQnBEb0IsS0FBS3ZJLEdBQUksVUFBSkEsRUFBVTthQUNmd0ksTUFBTXhJLEdBQUksVUFBSkEsRUFBVzthQUVqQnlJLGVBQVUseUJBRUk7YUFFZEMsZ0JBQVcseUJBRUU7YUFFYkM7TUFBWSxtQkFDSixJQUFMM0ksV0FBSyxVQUFMQSxHQUNNLFFBQUk7YUFFYjRJO01BQWEsa0JBQ0wsU0FDQyxJQUFMNUksV0FBSyxVQUFMQSxFQUFXO2FBRWY2SSxTQUFTL0ksRUFFWGdKO01qQnZDSCxTaUJ1Q0dBLE1BRFUsSUFBTDlJLEVBQ0w4SSxLQURlLHFCQURKaEosRUFDTkUsSUFDVyxPQUFoQjhJO2FBRUVDLFVBQVVqSixFQUNaZ0o7TWpCMUNILFNpQjBDR0EsS0FBZSxPQUFmQSxFQUNXLElBQUw5SSxFQUROOEksS0FDaUIscUJBRkxoSixFQUVORTthQUVKZ0osSUFBS1QsS0FBTUM7TWpCN0NoQixtQmlCOENhLElBQUx4SSxXQUFVLHFCQURSdUksS0FDRnZJO01BQ00sSUFBTGlKO01BQVcscUJBRkpULE1BRVBTO2FBRUpDLEtBQU1YLEtBQU1DO01qQmpEakIsbUJpQmtEYSxJQUFMeEksV0FBSyxrQkFERnVJLEtBQ0h2STtNQUNNLElBQUxpSjtNQUFLLGtCQUZHVCxNQUVSUzthQU1KRSxNQUFPWixLQUFNQyxNQUFNWSxHQUFHQztNQUFLLFNBQVJEOztpQkFBR0MsT0FDSixJQUFOQyxHQURVRCxNQUNKLGtCQURYZCxVQUNLZTs7aUJBRE9GO2lCQUFHQyxPQUVGLElBQU5FLEtBRlFGLE1BRUYsa0JBRlBiLFdBRUNlO01BQ3FCLFFBQUs7YUFFeENDLFFBQVNqQixLQUFNQyxNQUFNWSxHQUFHQztNQUFLLFNBQVJEOztpQkFBR0MsT0FDTixJQUFOQyxHQURZRCxNQUNOLGtCQURUZCxVQUNHZTtRQUVLO2VBSElGO2VBQUdDLE1BSVA7TUFGRyxJQUFORSxLQUZVRjtNQUVKLGtCQUZMYixXQUVEZSxLQUVJOzs7O09BaERsQmhCO09BQ0FDO09BRUFDO09BSUFDO09BSUFDO09BSUFDO09BSUFDO09BSUFFO09BSUFDO09BSUFFOzs7T0FRQUM7T0FLQUs7O0lqQjlETDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T2tCK0NLQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJbEIvQ0w7YW1CMEJzQkMsU0FBU3JHLEdBQUksbUJBQUpBLG1CQUFrQjthQVUzQnNHLGFBQWFsSixFQUFFN0UsR0FBSSxzQkFBTjZFLEVBQUU3RSxFQUF5QzthQUN4RGdPLGlCQUFpQm5KLEVBQUU3RSxFQUFFb0UsR0FDeEMsc0JBRG9DUyxFQUFFN0UsRUFBRW9FLEVBQ0Q7O0tBV3JDNko7S0FDQUM7S0FFQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FFQUM7S0FFQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FJQUM7S0FDQUM7S0FDQUM7YUF3QkVDLEtBQU1DO01BQ0EsZ0JBREFBO1FBRUk7eUNBRkpBO1NBVEcsTUFQSUQ7U0FZa0MsVUFabENBO1FBWWtDLFVBVjdDOUssTUFPQWdMO2tDQVN5QjthQU0zQkMsT0FDRXZLO01uQnZHVDtTbUJ5R1UsU0FGREEsTUFFaUIsYUFGakJBO1lBQ0F3SyxLQURBeEs7d0JBQ0F3SyxLQURBeEs7O01BTW9CLEdBQW5CLFNBTER3SyxTQUtvQixhQUxwQkE7WUFJQWxJLEtBSkFrSTt3QkFJQWxJLEtBRUc7TUFFRixvQkFKREE7ZUFKQWtJO2VBU0csMENBQXVDO2FBRTNCbEksS0FBTWtJLE1BQ3BCLE9BRG9CQSxPQUNDO2FBRVBDLEdBQUlELE1BQ2xCLE9BRGtCQSxPQUNHOzs4QkFqQnhCRCxPQWFpQmpJLEtBR0FtSTtLQUluQkM7S0FDQUM7S0FDQUM7S0FTRUM7YUFHQUMsT0FBT3JKO01BQ1QsY0FEU0EsTUFDVCxVQURTQSxLQUhQb0o7TUFLQTtNQUNGLGdDQUhTcEosRUFHRDthQUVOc0osT0FBTy9LLEdBQUksT0FBSkEsb0JBQW9DO2FBRTNDZ0wsd0JBQXdCM0MsRUFBRTRDLEVBQUVDO01BQzlCLGNBRDRCRCxNQUM1QixVQUQ0QkEsSUFDTixPQURJNUMsWUFFeEI7OEJBRjRCNkMsU0FFYjthQUdmQyxRQUFROUMsRUFBRTRDO01BQ1osd0JBRFU1QyxFQUFFNEM7TUFFWix5QkFGVTVDLEVBQUU0QyxFQUVEO2FBR1RHLGFBQWEvQyxFQUFFNEM7TUFDakIsd0JBRGU1QyxFQUFFNEM7TUFFakIsOEJBRmU1QyxFQUFFNEMsRUFFRDthQUdkSSxRQUFRaEQsRUFBRTRDLEVBQUVqTDtNQUNkLHdCQURVcUksRUFBRTRDO01BRVoseUJBRlU1QyxFQUFFNEMsRUFBRWpMLEVBRUQ7YUFHWHNMLFVBQVVqRCxFQUFFNEM7TUFDZCx3QkFEWTVDLEVBQUU0QztNQUVkLDJCQUZZNUMsRUFBRTRDLEVBRUQ7YUFHWE0sVUFBVWxELEVBQUU0QztNQUNkLHdCQURZNUMsRUFBRTRDO01BRWQsMkJBRlk1QyxFQUFFNEMsRUFFRDthQUtYTyxTQUFTN0MsR0FBRzhDLEdBQUc3QyxHQUFHOEMsR0FBR2pLO01BRUY7OztRQUZFQTs7OztRQUFUZ0s7OztVQUNhLE9BRGhCOUMsTUFBWWxILFNBQVRnSzs7OztRQUFNQzs7O1VBRUMsT0FGSjlDLE1BQU1uSCxTQUFIaUs7UUFJZixlQUprQmpLLE1BSWxCLFVBQWUsbUJBSlRrSCxHQUFHOEMsR0FBRzdDLEdBQUc4QyxHQUFHaks7UUFJbUI7TUFEckMsOENBQ3FDOzs7O09BM0N4Q3FKO09BS0FDO09BT0FJO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BT0FDOzs7Ozs7O09BMUNBWDs7O09BM0dlNUI7T0FVQUM7T0FDQUM7T0FZakJDO09BQ0FDO09BRUFDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BRUFDO09BRUFDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDOztPQUlBQztPQUNBQztPQUNBQztVQXdCRUM7O09BNEJGTTtPQUNBQztPQUNBQzs7OzthQ3RHQWUsdUJBQXNDLGVBQWU7YUFLckRDLGlCQUFrQkM7TUFDRyxJQUFuQkMsUUFEZ0JEO01BRXBCLFNBUEVGO01BT0Y7UUFFZSxJQUFUSSxPQUFTLFdBSFhEO1FBSUYsc0JBTGtCRCxJQUlkRTtRQUlKLE9BSklBO1lBR0QxRDttQ0FDSCx5QkFBb0QsTUFEakRBLENBQ3dELEVBQTNELE1BREdBLEVBRUk7YUFJUDJELHFCQUFzQkg7TUFDRCxJQUFuQkMsUUFEb0JEO01BRXhCLFNBcEJFRjtNQW1CcUIsSUFFbkJJLE9BQVMsV0FGVEQ7TUFHSixzQkFKd0JELElBR3BCRTtNQUNKLE9BRElBLE1BRUU7YUFPSkUsTUFRRUM7TUFFSixJQUFJQyxFQUFKLGFBRklEO01BRUosT0FBSUMsVUFGQUQsT0FFQUMsVUFGQUQsSUFLQyxpQkFMREEsSUFLcUI7YUNOdkJFLFVEU1dGO01BRWIsSUFBSUMsRUFBSixhQUZhRDtNQUViLE9BQUlDLFVBRlNELE9BRVRDLFVBRlNELElBS1IscUJBTFFBLElBS2dCOzs7bUJBOUMzQk4saUJBYUFJLHFCQVlBQyxNQ09BRzs7YUN5VkVDLFFEdlZRaE4sR0FDSixJQUFKVyxFQUFJLHNCQUNSLE9BRllYLEVBRVosT0FESVcsQ0FFZ0I7YUFFbEJzTSxTQUFVL007TUFDSixJQUFKNE0sRUFBSSxhQURJNU07U0FDUjRNLG9DQUlELE9BTFM1TTtNQUUwRCxzQ0FGMURBLEVBTVQ7YUFHRGdOLE9BQVE5SyxHQUFjLG9CQUFkQSxjQUFrRDthQVMxRCtLLE1BQUluTixFQUFFVztNQUNSOzs7bUNBRFFBO3FERHpETjRMLGlCQ3lETTVMO2dCQUNBLGtCQURGWCxTQUNZO2FBRWhCb04sUUFBUXBOLEVBQUVXO01BQ1QsVUFEU0E7UUFFUDsyQkFGT0E7U0FFUCxrQkFGT0Esa0JENURWNEwsaUJDNERVNUw7UUFFTywyQkFGVFg7TUFHTDs7O21DQUhPVztxREQ1RFY0TCxpQkM0RFU1TDtnQkFHQyxrQkFISFgsU0FHYTs7Ozs7T0FOckJtTjtPQVRBRDtPQVRBRDtPQXFCQUc7T0M2VEVKO09EelZGRDtPQ3lWRUM7T0RsVkZDO09BU0FDOzthQ25EQUcsYUFBVyxRQUFHO2FBRWRDLFNBQU8zTSxTQUFPLFVBQVBBLEVBRlAwTSxNQUU2QjthQUU3QkUsS0FBSzVNLEVBQUU2TSxZQUFVLFVBQVo3TSxFQUFFNk0sS0FBd0I7YUFFM0JDLFNBQU9DLEtBQUtDO01BQ1oscUJBRE9EO01BQ1A7WUFFS0YsY0FBSDdNO1FBQXFCLFVBQXJCQSxpQnRCakNYLE9zQjhCUzhNLFNBR0tELEtBSE9HO01BRVQsa0JBRlNBLE9BRzRCO2FBRXhDQyxNQUFJNU4sRUFBRTZOO01BQWUscUJBQWZBO01BQWU7UUFFSTtTQUFwQkw7U0FBSDdNO1NBQXVCLG9CdEJyQ2xDLE9zQm1DU2lOLE1BQUk1TixFQUVDd047UUFBZSxxQkFGaEJ4TixFQUVGVztNQURDLFFBQ2lDO2FBRXBDbU4sV0FBVzlOLEVBQUU2TjtNdEJ2Q3RCLElzQnVDc0JFO01BQVM7UUFBTSxxQkFBZkE7UUFBZTtVQUd4QixJQURDUCxjQUFIN00sV0FDRSxtQkFIT1gsRUFFVFc7VUFDRTtZQUVRLElBQUxDO1lBQWMsVUFBZEEsaUJ0QjVDaEIsT3NCdUNTa04sV0FBVzlOLEVBRU53TjtVQUNELElBSFNPLE1BRVJQOztRQURGLFNBSW9DO2FBRXZDUSxPQUFPaE8sRUFBRTZOO010QjlDbEIsSXNCOENrQkU7TUFBUztRQUFNLHFCQUFmQTtRQUFlO2NBRW5CUCxjQUFIN007VUFDRCxjQUhNWCxFQUVMVztXQUVVLFVBRlZBLGlCdEJoRFgsT3NCOENTcU4sT0FBT2hPLEVBRUZ3TjtjQUZJTyxNQUVKUDs7UUFERixTQUlnQjthQUVuQlMsT0FBT0o7TUFBZSxxQkFBZkE7TUFBZTtZQUVqQkwsY0FBSDdNO1FBQ0ksZ0JBREpBLGlCdEJ2RFgsT3NCcURTc04sT0FFS1Q7TUFERixRQUVtQjthQUV0QlUsU0FBU2xPLEVBQUU2TjtNQUFlLHFCQUFmQTtNQUFlO1FBR2pCO1NBREpMO1NBQUg3TTs7U0FDTyxvQnRCN0RsQixPc0IwRFN1TixTQUFTbE8sRUFFSndOO1FBQ0YsMkJBSE14TixFQUVQVztNQURDLFFBRTBCO2FBSTdCd04sVUFBVW5PLEVBQUVvTyxJQUFJUDtVQUFKUSxVQUFJTjtNQUN0QjtRQUFNLHFCQURnQkE7UUFDaEI7VUFHVTtXQURIUDtXQUFIN007V0FDTSxpQkFKQVgsRUFBRXFPLE1BR1IxTjtXQUhRME47V0FBSU4sTUFHVFA7O1FBREYsT0FGT2EsTUFLUTthQUVwQi9LLEtBQUt0RCxFQUFFNk47TXRCeEVoQixJc0J3RWdCRTtNQUNiO1FBQU0scUJBRE9BO1FBQ1A7Y0FFT1AsY0FBSDdNO1VBQ0osV0FKS1gsRUFHRFc7Y0FIR29OLE1BR0FQOztRQURGLFNBR007YUFFWGUsT0FBT3ZPLEVBQUV3TztNQUNULHFCQURPeE8sRUFBRXdPO01BQ1Q7NkJBRUtDLGVBQUg5TjtRQUFtQixVQUFuQkEsaUJ0QmxGWCxPc0IrRVM0TixPQUFPdk8sRUFHRnlPO01BREQsUUFDNkI7YUFFckNDLFNBQVNDLElBQ0wscUJBREtBLE1BQ0wsZ0JBSUc7YUFFUEMsT0FBT0Q7TUFDSCxxQkFER0E7TUFDSCxjQUNLRSxjQUFIbE8sMEJBQUdrTztNQUdQLFFBQUk7YUFXR0MsU0FBT0M7VUFQRDdKLE9BQUt5SixHQU9KSTtNQU5sQjtRQUFNLHFCQURnQko7UUFDaEI7VUFJRix5QkFMYXpKLHlCQUFLeUo7UUFHbEIsT0FIYXpKLEtBUUY7YUFVSjhKLE1BQU1oUCxFQUFFK087VUFSRGpULElBQUU2UyxHQVFESTtNQVBuQjtRQUFNLHFCQURjSjtRQUNkO2NBR0tFLGNBQUhsTztVQUNKLFdBR2FYLEVBUkNsRSxFQUlWNkU7VUFDSixRQUxjN0UsZ0JBQUU2UyxHQUlURTs7UUFEUCxTQU1ZO2FBVUxJLFdBQVdqUCxFQUFFa1AsT0FBS0g7VUFSTjdKLEtBUUNnSyxPQVJJcFQsSUFBRTZTLEdBUURJO01BUDdCO1FBQU0scUJBRHdCSjtRQUN4QjtVQUlTO1dBREpFO1dBQUhsTztXQUNPLGtCQUdPWCxFQVJDa0YsS0FBS3BKLEVBSXBCNkU7V0FDTyxJQUxhN0U7V0FBTG9KO1dBQUtwSjtXQUFFNlMsR0FJbkJFOztRQURQLE9BSG1CM0osS0FTRzthQUVwQmlLLFFBQVFDLEVBQUVUO010QnBJbkIsSXNCb0ltQkU7TUFDaEI7UUFBTSxxQkFEVUE7UUFDVjtVQUlGLElBRE9FLGNBQUhwTyxXQUNKLGdCQUxVeU8sRUFJTnpPO1VBQ0osYUFMWWtPLEtBSUxFO1VBRFA7aUJBRW1CO2FBRWpCTSxPQUFPRCxFQUFFVDtNdEIzSWxCLElzQjJJa0JFO01BQ2Y7UUFBTSxxQkFEU0E7UUFDVDtVQUlGLElBRE9FLGNBQUhwTyxXQUNKLGdCQUxTeU8sRUFJTHpPO1VBQ0osUUFGQTtVQUVBLElBTFdrTyxLQUlKRTs7UUFEUCxTQUVrQjthQUVoQk8sS0FBS0YsRUFBRVQ7TXRCbEpoQixJc0JrSmdCRTtNQUNiO1FBQU0scUJBRE9BO1FBQ1A7Y0FHS0UsY0FBSHBPO1VBQ0QsY0FMSXlPLEVBSUh6TyxHQUNRLFVBRFJBO2NBSktrTyxLQUlGRTs7UUFEUCxTQUVpQzthQUUvQlEsU0FBU3ZQLEVBQUUyTztNdEJ6SnBCLElzQnlKb0JFO01BQ2pCO1FBQU0scUJBRFdBO1FBQ1g7VUFJSSxJQURDRSxjQUFIcE8sV0FDRSxrQkFMS1gsRUFJUFc7VUFDRSxHQUdKK0wsT0FDRSxPQURGQTtVQUhJLElBTE9tQyxLQUlORTs7UUFEUCxTQU1VO2FBU1JTLE1BQU14UCxFQUFFMk8sR0FBR2M7VUFBSFosUUFBR2E7TUFDakI7UUFBTSxxQkFEUWI7UUFDUjtVQUlJLElBRENFLGNBQUhwTyxXQUNFLG1CQUxPK087VUFLUDtnQkFHS0MsZ0JBQUgvTztZQUNKLFdBVElaLEVBSUpXLEVBSUlDO2dCQVJFaU8sS0FJSEUsS0FKTVcsS0FRRkM7O1VBRFA7UUFKSixTQU9pQjthQUVmQyxXQUFXNVAsRUFBRWtGLEtBQUt5SixHQUFHYztVQUFSckssWUFBS3lKLFFBQUdhO01BQzNCO1FBQU0scUJBRGtCYjtRQUNsQjtVQUlJLElBRENFLGNBQUhwTyxXQUNFLG1CQUxpQitPO1VBS2pCO1lBSVM7YUFESkM7YUFBSC9PO2FBQ08sa0JBVEZaLEVBQUVvRixPQUlYekUsRUFJSUM7YUFST3dFO2FBQUt5SixLQUliRTthQUpnQlcsS0FRWkM7O1VBRFAsT0FQV3ZLO1FBR2YsT0FIZUEsT0FVWTthQUV6QnlLLFNBQVM3UCxFQUFFMk8sR0FBR2M7VUFBSFosUUFBR2E7TUFDcEI7UUFBTSxxQkFEV2I7UUFDWDtVQUlJLElBRENFLGNBQUhwTyxXQUNFLG1CQUxVK087VUFLVjtZQUlGLElBRE9DLGdCQUFIL08sYUFDSixnQkFUT1osRUFJUFcsRUFJSUM7WUFDSixhQVRTaU8sS0FJTkUsS0FKU1csS0FRTEM7WUFEUDs7UUFKSixTQU02QjthQUUzQkcsUUFBUTlQLEVBQUUyTyxHQUFHYztVQUFIWixRQUFHYTtNQUNuQjtRQUFNLHFCQURVYjtRQUNWO1VBSUksSUFEQ0UsY0FBSHBPLFdBQ0UsbUJBTFMrTztVQUtUO1lBSUYsSUFET0MsZ0JBQUgvTyxhQUNKLGdCQVRNWixFQUlOVyxFQUlJQztZQUNKLFFBRkE7WUFFQSxJQVRRaU8sS0FJTEUsS0FKUVcsS0FRSkM7O1VBRFA7UUFKSixTQU00QjthQUUxQkksUUFBTUMsR0FBR3JCLEdBQUdjO1VBQUhaLFFBQUdhO01BQ2xCO1FBQU0scUJBRFNiLFFBQ0gsbUJBRE1hO1FBQ047O1lBSVI7YUFEcUJDO2FBQUgvTzthQUFYbU87YUFBSHBPO2FBQ0osZ0JBTFFxUCxHQUlKclAsRUFBY0M7WUFDbEIsYUFMV2lPLEtBSUpFLEtBSk9XLEtBSU9DOzs7U0FEckI7UUFLQSxTQUFLO2FBRUhNLFVBQVFDLElBQUl2QixHQUFHYztVQUFIWixRQUFHYTtNQUNyQjtRQUFNLHFCQURZYixRQUNOLG1CQURTYTtRQUNUOzs7WUFJQSxJQURhQyxnQkFBSC9PLGFBQ1YsYUFMRXNQLFNBSVF0UDtZQUNWLFNBQUpzQyxPQUxVMkwsVUFBR2EsS0FJSUM7WUFFTixPQURYek07VUFLSjtRQUZBLG9CQUVFO2FBTUFpTixTQUFTblEsRUFBRWxFLEVBQUVzVTtNQUNuQixHQURpQnRVLElBQUVzVTtRQUNMO2NBREd0VTtTQUVKLG9CdEJyUGhCLE9zQm1QU3FVLFNBQVNuUSxPQUFJb1E7UUFFWCxxQkFGT3BRLEVBQUVsRTtNQUtmLFFBQUc7YUFFSHVVLEtBQUsvUCxFQUFFTjtNQUNULFFBRE9NO1FBSUwsaUN0QjlQTCxPc0JtUFM2UCxTQU9HblEsT0FBRk07TUFFTCxnQ0FFYzthQUVWZ1EsT0FBTzNQO01BQ0osVUFESUEsaUJ0QmhRaEIsT3NCZ1FTMlAsT0FBTzNQLFNBQ0s7YUFFWjRQLFFBQVF2UTtNQUNILG9CdEJwUWQsT3NCbVFTdVEsUUFBUXZRO01BQ1IscUJBRFFBLFVBQ087YUFNZndRLGVBQWU3QjtNQUNyQjtNQUFVLGdCQURXQSxrQnRCMVF4QixPc0IwUVM2QixlQUFlN0IsZUFDVzthQU85QjhCLE1BQU05QjtNQUNGLHFCQURFQTtNQUNGO1FBSWtCO1NBRGJFO1NBQUhsTztTQUNnQixvQnRCdlIzQixPc0IwUVM2UCxlQVFFN0I7UUFLSyxVQURMaE8saUJ0QnRSWCxPc0I4QlM4TSxTQXdQS29CO01BRFAsUUFFd0M7YUFNdEM2QixTQUFTMVEsRUFBRVc7TUFDVCxJQUFKQyxFQUFJLFdBRE9aLEVBQUVXO01BRVIsVUFETEMsaUJ0QjlSUCxPc0I2UlM4UCxTQUFTMVEsRUFDWFksU0FDa0I7YUFXcEIrUCxRQUFRM1EsRUFBRVc7TUFDTCxvQnRCM1NWLE9zQjZSUytQLFNBYUkxUSxFQUFFVztNQUNMLHNCdEIzU1YsVXNCMFNlQSxRQUNTO2FBSWZpUSxTQUFTNVEsRUFBRWxFLEVBQUU2UztNQUNiLHFCQURhQTtNQUNiO1FBSVc7U0FETkU7U0FBSGxPO2NBSlM3RTtTQUtBLG9CdEJwVHBCLE9zQitTUzhVLFNBQVM1USxPQUlKNk87UUFDRCxxQkFMSzdPLEVBQUVsRSxFQUlUNkU7TUFESixRQUVpQzthQUUxQmtRLEtBQUs3USxFQUFFMk87TUFDbEIsaUN0QnZUSCxPc0IrU1NpQyxTQU9VNVEsT0FBRTJPLFNBQ0g7YUFRVG1DLFVBQVU5USxFQUFFUSxFQUFFbU87TUFDZCxxQkFEY0E7TUFDZDtRQUlNLElBRERFLGNBQUhsTyxXQUNJLGVBTElYLEVBQUVRLEVBSVZHO1FBRUssVUFETG9RLG1CdEJwVVgsT3NCK1RTRCxVQUFVOVEsRUFLUitRLElBREdsQztNQURQLFFBRzBCO2FBRTVCbUMsS0FBS2hSLEVBQUVRLEVBQUVtTztNQUNKLG9CdEJ4VVYsT3NCK1RTbUMsVUFRQzlRLEVBQUVRLEVBQUVtTztNQUNKLHNCdEJ4VVYsVXNCdVVZbk8sUUFDZ0I7YUFLbkJ5USxTQUFTM1EsRUFBRXFPO01BQ2pCLGFBRGVyTztlQXJUYitNOztpQkEwVFEscUJBTE9zQjtpQkFLUDt1QkFHS0UsY0FBSGxPO21CQUNLLFVBRExBLEVBQ0ssU0FURkwsVUFRQXVPO2lCQURQLFFBRTJCO2FBRWpDcUMsS0FBSzVRLEVBQUVxTztNQUNULEdBRE9yTyxNQUNPLDBCQUFzQixnQkFEN0JBLEVBQUVxTyxHQUVJO2FBb0JYd0MsS0FBSzdRLEVBQUVxTztNQUNULFlBRE9yTzs7aUJBQUVxTzs7dUJBZFF5QyxJQWNWOVEsRUFkWXVPLEtBY1ZGO21CQWJUO3FCQUFNLHFCQURhRTtxQkFDYjt1QkFJRixzQkFMYXVDO3VCQUtiLFNBQUlDLElBRUYsa0JBSEt0Qzt1QkFDUCxJQUxhcUMsSUFLVEMsSUFMV3hDLEtBSVJFOztxQkFEUCxTQWlCZTtlQUxMLHlCQUtLO2FBRWJ1QyxXQUFXbEMsRUFBRVQ7TUFDYixxQkFEYUE7TUFDYjtZQUdLRSxjQUFIbE87UUFDRCxrQkFMVXlPLEVBSVR6TztxQ3RCMVhYLE9zQnNYUzJRLFdBQVdsQyxFQUlOUDs7TUFEUCxRQUU4QzthQUU1QzBDLFdBQVduQyxFQUFFVDtNdEI3WHRCLElzQjZYc0JFO01BQ25CO1FBQU0sSUFHSjJDLEtBSEksV0FEYTNDO1FBQ2IsR0FHSjJDO2NBQVN6QyxLQUFUeUMsUUFBTTdRLEVBQU42UTtVQUNLLGNBTFVwQyxFQUlUek8sUUFKV2tPLEtBSVJFO1VBQzZCLE9BRHRDeUM7UUFERSxTQUV3QzthQUV0Q0MsTUFBTXpCLEdBQUdyQjtNQUNULHFCQURTQTtNQUNUO1FBSXdEO1NBRG5ERTtTQUFIbE87U0FDc0QsZ0JBTGxEcVAsR0FJSnJQO1NBQzBDLG9CdEJ6WXJELE9zQjZYUzRRLGdCQVdLMUM7U0FDOEIsb0J0QnpZNUMsT3NCb1lTNEMsTUFBTXpCO1NBS2lCLGdCQUxqQkEsR0FJSnJQO1NBQ1Msb0J0QnpZcEIsT3NCc1hTMlEsZ0JBa0JLekM7UUFDRCx5QnRCelliLFVzQndZV2xPO01BREosUUFFcUU7O2FBeUJyRStRLGVBR0Esa0JBQWtCO2FBaUJoQkMsUUFBUWhEO01BQ2QsU0ExQmFvQztRQTJCTCxxQkFGTXBDO1FBRU4sY0FHS0UsY0FBSGxPLFdBQ0ssVUFETEEsRUFDSyxRQURGa087UUFEUCxRQUVvQjtNQTlCZCxJQU5Hck8sRUFNSCxRQURDdVE7TUFDRDtRQUxBLHNCQURHdlE7UUFDSCxvQkFER0Esa0JGN1hiK0wsaUJFNlhhL0wsS0FxQ2Q7YUFFS29SLEtBQUtqRDtNQUNYLFNBckJVM087UUFzQkYscUJBRkcyTztRQUVILGNBR0tFLGNBQUhsTyxXQUNLLFVBRExBLEVBQ0ssS0FERmtPO1FBRFAsUUFFaUI7TUF6QlIsSUFBVGdELFVBREk3UjtNQUNLO1FBS0gsSUFBSkEsRUFBSSxTQUxONlIsT0FWRkgsU0FlUSxrQkFBSjFSLElBQ0QsQ0FvQk47YUFHSzhSLElBQUluRCxHQUFHYztNQUNQLHFCQURJZDtNQUNKO1FBSUksSUFEQ0UsY0FBSGxPLFdBQ0UsbUJBTEc4TztRQUtIO2NBR0tDLGdCQUFIOU87VUFDVSxhQUxkRCxFQUlJQyxrQnRCamRmLE9zQnljU2tSLElBSUtqRCxLQUlJYTtRQURQO01BSkosUUFNNEI7YUFFMUJxQyxLQUFLL1IsRUFBRTJPLEdBQUdjO01BQ1YscUJBRE9kO01BQ1A7UUFJSSxJQURDRSxjQUFIbE8sV0FDRSxtQkFMTThPO1FBS047VUFJVztXQUROQztXQUFIOU87V0FDUyxvQnRCN2R4QixPc0JvZFNtUixLQUFLL1IsRUFJQTZPLEtBSUlhO1VBQ0QscUJBVEgxUCxFQUlIVyxFQUlJQztRQURKO01BSkosUUFNOEI7YUFFNUJvUixXQUFXckQsR0FBR2M7TUFDZCxxQkFEV2Q7TUFDWDtZQUdLRSxjQUFIbE87UUFDSyxVQURMQSxpQnRCbmVYLE9zQitkU3FSLFdBQWN2QyxHQUlUWjtNQURQLGtCQUhnQlksS0FLVTthQTRCNUJ3QyxjQUFjL0IsSUFBSXZQLEVBQUVnTyxHQUFHL04sRUFBRTZPO01BQ3hCLHNCQURhUyxJQUFJdlAsRUFBS0M7Ozs7a0JBYm5CLHFCQWFxQjZPO2tCQWJyQjt3QkFHS0MsY0FBSDlPOzJCQVVOcVIsY0FBYy9CLElBQUl2UCxFQUFFZ08sR0FWZC9OLEVBQUc4TztrQkFEUCxVQVdnQi9PLEVBQUVnTzs7Z0JBQUZoTzs7a0JBTmQscUJBTWdCZ087a0JBTmhCO3dCQUdLRSxjQUFIbE87MkJBR05zUixjQUFjL0IsSUFIUnZQLEVBQUdrTyxLQUdjak8sRUFBRTZPO2tCQUp2QixVQUlxQjdPLEVBQUU2TyxLQUlXO2FBRXBDeUMsYUFBYWhDLElBQUl2QixHQUFHYztNQUNoQixxQkFEYWQsTUFDUCxtQkFEVWM7TUFDVjs7Y0FNZUMsZ0JBQUg5TyxhQUFYaU8sY0FBSGxPO2lCQWJSc1IsY0FNYS9CLElBT0x2UCxFQUFHa08sS0FBV2pPLEVBQUc4TztZQUhsQnhNOztxQkFESCxhQUNHQTtNQUVILE9BRkdBLENBSXdCO2FBRzNCaVAsUUFBUUM7TUFDUixxQkFEUUE7TUFDUjtZQUdVQyxnQ0FBUDFSO1FBQ0ksVUFESkEsaUJ0QnJoQlosT3NCaWhCU3dSLFFBSVVFO01BRFosUUFFcUI7YUFFbkJDLFFBQVFGO01BQ1IscUJBRFFBO01BQ1I7WUFHVUMsZ0NBQUp6UjtRQUNDLFVBRERBLGlCdEI1aEJmLE9zQndoQlMwUixRQUlVRDtNQURaLFFBRXFCO2FBRXZCRSxNQUFNSDtNQUNLLG9CdEJoaUJoQixPc0J3aEJTRSxRQU9FRjtNQUNSLHlCdEJoaUJILE9zQmloQlNELFFBY0VDLGdCQUNnQjthQVFsQkkseUJBQXlCeFMsRUFBRTJPO010QnhpQnBDLElzQndpQm9DRTtNQUNqQztRQUFNLHFCQUQyQkE7UUFDM0I7VUFJSSxJQURDRSxjQUFIcE8sV0FDRSxtQkFMcUJYLEVBSXZCVztVQUNFO1lBRUYsSUFEVUM7WUFDRDtvQkFEQ0E7bUN0QjlpQnJCLE9zQndpQlM0Uix5QkFBeUJ4UyxFQUlwQitPO1VBQ0QsSUFMdUJGLEtBSXRCRTs7UUFEUCxTQU1vQzthQUVsQzBELDBCQUEwQnpTLEVBQUUyTztNdEJuakJyQyxJc0JtakJxQ0U7TUFDbEM7UUFBTSxxQkFENEJBO1FBQzVCO1VBSUksSUFEQ0UsY0FBSHBPLFdBQ0UsbUJBTHNCWCxFQUl4Qlc7VUFDRSx5QkFMd0JrTyxLQUl2QkU7VUFDRCxJQUdTMkQ7VUFDRjtrQkFERUE7O29CdEIzakJ0QixPc0JtakJTRCwwQkFBMEJ6UyxFQUlyQitPO1FBRFAsU0FNNEM7YUFFOUM0RCxjQUFjM1MsRUFBRTJPO01BRWxCLG9CdEJoa0JILE9zQm1qQlM4RCwwQkFXVXpTLEVBQUUyTztNQUNsQjs2QnRCL2pCSCxPc0J3aUJTNkQseUJBc0JVeFMsRUFBRTJPO21CQUVZO2FBRTVCaUUsVUFBVXhELEVBQUVUO01BQ2QsY0FBeUJoTyxHQUFTLHNCQUR0QnlPLEVBQ2F6TyxFQUFjO01BQTFCLG9CdEJua0JoQixPc0I4Q1NxTixZQW9oQlFXO01BQ2QseUJ0Qm5rQkgsT3NCOENTWCxPQW9oQk1vQixFQUFFVCxlQUM2QjthQVd6Q2tFLEtBQUtDO01BQ0QsNEJ0Qi9rQlQsT3NCdUNTaEYsV0FvREpjLE9BbWZLa0UsV0FDc0I7YUFFdkJDLFVBQVVEO01BQ0csZUFESEEsS0FDRztNQUNoQixZQURDRztRQUVLLFlBRkVELE9BR1Q7TUFHYSxVQU5YQyxxQnRCbGxCUCxPc0JpbEJTRixVQUNLQyxhQU1vQjtpQkFNZkUsV0FBV0o7TUFDckIscUJBRHFCQTtNQUNyQjtRQUVVLElBREpLLGVBQUp4RSxZQUNRLG1CQURSQTtRQUNRO1VBUVc7V0FQWkU7V0FBSGxPO1dBT2UsYUFYWHVTO1dBV1c7O1dBQ1csb0J0QjFtQnpDLFVzQmttQmtCckUsS0FPSW1FO1dBQ1Msb0J0QjFtQi9CLGdCc0JnbUJlRztVQVVFLHlCdEIxbUJqQixVc0JrbUJleFMsRUFPQXNTO1FBUkksSUFjVyxhQWpCWEMsWUFpQlc7UUFDTixVQURURyx1QnRCL21CZixXc0IrbUJzQkQsUUFmUEQ7TUFxQlIsaUJBdkJZRCxhQXVCVzthQWtCekJJLFlBQVl0VCxFQUFFMk8sR0FBR2M7TUFDbkIsY0FDVzlPO1FBQ1AsY0FBU0MsR0FDUCxrQkFKUVosRUFFSFcsRUFDRUMsRUFDRjtRQURQLHNCdEIxb0JQLE9zQm1DU2dOLFdBb21CYTZCLFNBS1g7TUFKVSxTQUpOcUQsVXRCcG9CZixPc0JtQ1NsRixXQW9tQlVlO01BRmhCLG9CdEJyb0JILFdzQndCS3RCLE1BNG1CVXlGOzRCdEJwb0JmLE9zQnFEUzdFLGtCQXlsQko7YUFFQXNGLFFBQVE1RSxHQUFHYztNQUNiLDRCQUFpQjlPLEVBQUVDLEdBQUssVUFBUEQsRUFBRUMsRUFBVyxFQURwQitOLEdBQUdjLEdBQ3dCO2FBRW5DK0QsYUFBYUM7TUFDZixTQUFRdlE7UUFDQSxxQkFGT3VRO1FBRVAsVUFJRixJQURHOVMsV0FDSCxVQURHQSxFQUpEdUM7UUFHRixRQUVXO01BTGpCLE9BQVFBLENBT1A7YUFFQ3dRLGFBQWEvRTtNQUNmLElBQUluTyxLQURXbU87TUFDZjtRQUVRLHFCQUZKbk87UUFFSSxjQUdLbU8sWUFBSGhPLFdBTE5ILE9BS1NtTyxhQUFIaE87UUFESixRQUdNO2FBSU5nVCxLQUFLN1g7TUFDWCxTQURXQSxVQUNGLFVBREVBLGlCdEJ6cUJkLE9zQnlxQlM2WCxpQkFDZ0I7Ozs7T0F0bEJwQmpGO09BT0FFO09BZ0JTRTtPQW5DTHhMO09BUEE2SztPQXFES2E7T0FXQUM7T0FHTEU7T0FPQUU7T0FPQUM7T0FPQUM7T0FrQkFDO09BWUFJO09BWUFDO09BV0FDO09BV0FDO09BVUFFO09BM01KNUM7T0FFQUM7T0FFQUM7T0E4TkE4QztPQTNLSTlCO09BaUxBK0I7T0FHQUM7T0FlSkU7T0F3QkFFO09BdlFJL0M7T0FtUktpRDtPQXhRTDdDO09BUEFGO09BZ1NKa0Q7T0FpQkFFO09Bc0JBQztPQVFJRztPQU9BQztPQU9BRTtPQWtEQUU7O09BU0FDO09Ba0pBbUI7T0FuakJBdEY7T0F1QkFRO09BS0FDOztPQStZQTREO09BV0FDO09BV0FDO09BdUNKRTtPQTBJQXFCO09BVEFEO09BeEdBZjs7T0ErQkFJO09BSUFDO09BaUZBWTtPQVVBRTtPQVlJQzs7UUN2cEJKQzthQUNBQyxLQUFLM1QsR0FBSSxVQUFKQSxFQUFVO2FBQ2Y0VCxNQUFNbEksRUFBR21JLFdBQVUsR0FBYm5JLEdBQW9DLElBQUwxTCxFQUEvQjBMLEtBQW9DLE9BQUwxTCxFQUFpQixPQUE3QzZULFNBQW9EO2FBQzdEQztNQUFNLFVBQW1CLElBQUw5VCxXQUFLLE9BQUxBO01BQWlCLHNDQUE0QjthQUNqRStULEtBQUtySSxFQUFFNUwsR0FBSSxHQUFONEwsR0FBNEMsSUFBTDFMLEVBQXZDMEwsS0FBNEMsa0JBQTFDNUwsRUFBcUNFLEdBQVosUUFBb0I7YUFDcERnVSxZQUFPLFVBQW1CLElBQUx0SSxXQUFLLE9BQUxBLEVBQWlCLFFBQUk7YUFDMUN1SSxNQUFJblUsRUFBRTRMLEdBQUksR0FBSkEsR0FBMEMsSUFBTDFMLEVBQXJDMEwsS0FBK0MscUJBQWpENUwsRUFBdUNFLElBQVosUUFBMkI7YUFDMURrVSxPQUFNUixLQUFNQztNdkJ6QmpCLFV1QnlCMkMsSUFBTDNULFdBQUssa0JBQTFCMlQsS0FBcUIzVCxHQUFzQixPQUFqRDBUO2FBQ05TLE9BQUtyVTtNdkIxQlYsVXVCMEJpQyxJQUFMRSxXQUFLLGtCQUF2QkYsRUFBa0JFLEdBQW1CO2FBQzFDb1UsZUFBVSxnQkFBdUM7YUFDakRDLGVBQVUsZ0JBQXVDO2FBRWpEQyxRQUFNeEUsR0FBR3lFLEdBQUdySTtNQUFLLEdBQVJxSTtXQUFHckksUUFDQXNJLEdBREF0SSxNQUNUdUksR0FETUYsd0JBQUh6RSxHQUNIMkUsR0FBU0Q7O09BQ0EsS0FGQXRJLEdBRUE7TUFDVCxRQUFLO2FBRVJ3SSxVQUFRMUUsSUFBSXVFLEdBQUdySTtNQUFLLEdBQVJxSTs7V0FBR3JJLElBQ0csSUFBTnNJLEdBREd0SSxNQUNHLGtCQURWOEQsU0FDSXdFO1FBR0U7TUFEQSxPQUhDdEksT0FJQTthQUVmeUksVUFBV2pCO012QnpDaEIsVXVCeUMrRCxJQUFMMVQsV0FBSyxVQUFMQSxHQUFsQixVQUF4QjBUO2FBQ1hrQixlQUFVLFVBQWdDLElBQUw1VSxXQUFLLFVBQUxBLEtBQVYsUUFBa0I7YUFDN0M2VTtNQUFTLFVBQXVDLElBQUw3VSxXQUFLLHNCdkIzQ3JELE9zQjBCS29OLFNDaUIyQ3BOO01BQWpCLE9EbkIxQm1OLEtDbUI0RDs7OztPQXpCNUR1RztPQUNBQztPQUNBQztPQUNBRTtPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUVBQztPQUtBSTtPQU1BQztPQUNBQztPQUNBQzs7YUN6QkFDLEdBQUc5VSxHQUFJLFVBQUpBLEVBQVE7YUFDWCtVLE1BQU1qTSxHQUFJLFVBQUpBLEVBQVc7YUFDakJrTSxRQUFNL1UsRUFBRzRUO01BQVUsU0FBYjVULE1BQWtDLElBQUxELEVBQTdCQyxLQUFrQyxPQUFMRCxFQUFvQixPQUE5QzZULFNBQXFEO2FBQzlEb0I7TUFBUyxtQkFBaUIsSUFBTGpWLFdBQUssT0FBTEE7TUFBb0IsdUNBQStCO2FBQ3hFa1Y7TUFBWSxrQkFBZ0M7TUFBWixJQUFMcE07TUFBSyxPQUFMQSxDQUE2QzthQUN4RXFNLE9BQUtsVixFQUFFSDtNQUFJLFNBQU5HLE1BQTJCLElBQUxELEVBQXRCQyxLQUEyQixrQkFBekJILEVBQW9CRSxHQUEyQixPQUFqREMsQ0FBa0Q7YUFDdkRtVixPQUE0QnRNLEdBQXJCLFNBQXFCQSxNQUFKLElBQUw3SSxFQUFTNkksS0FBSixPQUFMN0ksRUFBeUIsT0FBaEI2SSxDQUFpQjthQUM3Q3VNLE1BQUl2VixFQUFnQ2dKO014QnpCekMsU3dCeUJ5Q0EsTUFBWCxJQUFMOUksRUFBZ0I4SSxLQUFSLHFCQUF4QmhKLEVBQWdCRSxJQUFnQyxPQUFoQjhJO2FBQ3BDd00sVUFBVXhWLEVBQXNDRTtNeEIxQnJELFN3QjBCcURBLEtBQWEsT0FBYkEsRUFBZCxJQUFMOEksRUFBbUI5SSxLQUFSLHFCQUE5QkYsRUFBbUJnSjthQUM3QnlNLE9BQU1ULEdBQUlDO014QjNCZixtQndCMkJ3QyxJQUFML1UsV0FBSyxrQkFBN0I4VSxHQUF3QjlVO01BQXVCLElBQUw4STtNQUFLLGtCQUEzQ2lNLE1BQXNDak07YUFDaEQwTSxPQUFLMVY7TXhCNUJWLG1Cd0I0QitCLElBQUxFLFdBQUssa0JBQXJCRixFQUFnQkUsR0FBc0I7YUFDM0N5VixXQUFXM1Y7TXhCN0JoQixrQndCNkJzRCxTQUFkLElBQUxnSixXQUFLLGtCQUF4QmhKLEVBQW1CZ0o7YUFDOUI0TSxhQUFRLHlCQUF3QzthQUNoREMsZ0JBQVcseUJBQXdDO2FBRW5EQyxRQUFPZCxHQUFJQyxNQUFNYyxHQUFHQztNQUFLLFNBQVJEOztpQkFBR0MsT0FDTixJQUFOdEIsR0FEWXNCLE1BQ04sa0JBRFBoQixRQUNDTjs7aUJBRFNxQjtpQkFBR0MsT0FFQSxJQUFOMU0sR0FGTTBNLE1BRUEsa0JBRlRmLFdBRUczTDtNQUNSLFFBQUs7YUFFWDJNLFVBQVNqQixHQUFJQyxNQUFNYyxHQUFHQztNQUFLLFNBQVJEOztpQkFBR0MsT0FDUixJQUFOdEIsR0FEY3NCLE1BQ1Isa0JBRExoQixRQUNETjtRQUVPO2VBSElxQjtlQUFHQyxNQUlQO01BRkssSUFBTjFNLEdBRlEwTTtNQUVGLGtCQUZQZixXQUVDM0wsR0FFRTthQUVoQjRNO01BQVksbUJBQWlCLElBQUxoVyxXQUFLLFVBQUxBLEdBQXlCLFFBQUk7YUFDckRpVztNQUFVLG1CQUFpQixJQUFMalcsV0FBSyxVQUFMQSxLQUFzQixRQUFFO2FBQzlDa1c7TUFBUztRQUFpQixJQUFMbFcsV0FBSyxzQnhCOUMvQixPc0IwQktvTixTRW9CcUJwTjtNQUErQixPRnRCcERtTixLRXNCNkQ7Ozs7T0E1QjdEMkg7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FFQUM7T0FLQUc7T0FNQUM7T0FDQUM7T0FDQUM7O0lDekIrQixTQUEvQkMsbUJ6QnJCTDtJeUJxQm9DLElBQy9CQztJQUQrQixTQUcvQkMsZ0JBQVcsa0JBQWlDO0lBSGIsU0FZL0JDLG1CQUFZLG1DQUEwQztJQVp2QixtQkFZbkIsV0FBMEM7SUFadkI7OztzQnpCckJwQztPeUJxQktIO09BQ0FDOztPQUVBQztPQVNBQztJQVorQjthQ0EvQjdYLElBQUkyQjtNMUJyQlQsUTBCcUJTQSxpQkFDK0MsT0FEL0NBLEVBQ21CLGdDQUF3QzthQU8vRG1XLFFBT0F2VDtNMUJwQ0w7TTBCNkJlLFNBT1ZBO29CQUxRLDBCQUtSQTs7O29CQU5ROztvQkFNUkE7O2tCQURRO2tCQUZBO21CQURBO21CQUVBOzs7UUFHRSxJQUFKNk4sSUFBSTs4QkFBSkEsTUFETjdOO1FBQ1UsNEJBQUo2TjtNQUtKLElBQUl2USxFQUFKOzRCQUFJQTtNQUFKLHNCQUFJQSxVQU5OMEM7TUFNRSxzQkFBSTFDLFdBTk4wQztNQU1FLHNCQUFJMUMsVUFOTjBDO01BTUUsNEJBQUkxQyxFQUtjO2FBRXBCa1csVUFDQXhUO01BRFksU0FDWkE7TUFEWTs7OztzQkFDWkEsWUFJTTthQUVOeVQsVUFDQXpUO01BRFksU0FDWkE7TUFEWTs7OztzQkFDWkEsWUFJTTthQUVOMFQsZ0JBQ0ExVCxHQURrQixZQUNsQkEseUJBQ007YUFFTjJULGdCQUNBM1QsR0FEa0IsWUFDbEJBLHlCQUNNO2FBSU40VCxVQUFRQyxHQUFHQyxJQUFLLE9BQVJELEtBQUdDLE1BQXNCO2FBQ2pDQyxRQUFPRixHQUFRQyxJQUFTLGNBQWpCRCxLQUFRQyxXQUEwQjs7OztPQXJEekNyWTtPQVFBOFg7T0FvQkFDO09BT0FDO09BT0FDO09BSUFDO09BTUFDO09BQ0FHOzs7S3pCakRBQztLQUNBQztLQUNBQztLQUNBQztLQUVBQztLQUNBQzthQUVBQyxLQUFLaEo7TUFDUCxPQURPQTtlQUxMNkk7ZUFLSzdJLGNBRVMsWUFoQmRwVSxhQWNLb1UsU0FHRjthQUVIaUosS0FBS2pKO01BQ1AsT0FET0EsWUFYTDRJLFNBV0s1SSxRQUVTLFlBdEJkclUsYUFvQktxVSxTQUdGO2FBRUhrSixTQUFTNWI7TUFBSSxjQUFKQSxNQUFJLFVBQUpBOzs7OztNQUpYLFdBSXlFO2FBQ3ZFNmIsT0FBTzdiO01BQU8sZ0JBQVBBOztlVXpCUDJFO2lCVkNlLDBCQXdCUjNFLG1DQUF3RDthQUkvRDhiLFFBQVFwSixHQUFJLE9BQUpBLFdBQVc7YUFDbkJxSixRQUFRM1UsR0FBSSxPQUFKQSxDQUFlO2FBQ3ZCNFUsUUFBUXRKO01BQ1YsYUFEVUE7ZVUvQlIvTjtpQlZFMEI7Ozs2Q0E2QmxCK047Z0JBRU87YUFFZnVKLHFCQUhGLFdBQ2lCO2FBSWZDLG1CRHhETDtRQ3lES0M7YUFDQUMsV0QxREw7YUN5RWNDLG9CQUFvQkMsR0FBSSxjQUFKQSxpQkFBeUI7YUFDN0NDLGtCQUFrQkQsR0FBSSxRQUFKQSxpQkFBa0M7YUFDcERFLGlCQUFpQkYsR0FBSSxPQUFKQSxZQUFtQzthQUNwREcsV0FBV2pZLEVBQUVrTyxHQUFJLFlBQU5sTyxXQUFFa08sQ0FBOEM7YTBCb2RwRWdLLFkxQm5kNEJsWSxHQUFJLE9BQUpBLGVBQStCO2FBRTNEbVksa0JBS0ZqSztNQUx3QixRQUt4QkE7UUFITyxTQUdQQTtVQUZPLFVBRVBBO1lBRE8sV0FDUEE7Y0FBTyxhQUFQQSxFQUNLLDZCQURtQjtZQURGO1VBREE7UUFEQTtNQUROLDRCQUtDO2FBRWZrSyxtQkFHRmxLO01BSHlCLFFBR3pCQTtRQURPLFdBQ1BBLEdBQU8sYUFBUEEsRUFDSyw2QkFEbUI7UUFERjtNQUROLDRCQUdDO3VCQUpRLFdBSVI7Ozs7T0FsRWYwSTtPQUNBQztPQUlBRztPQUNBQztPQUVBQztPQUtBQztPQUtBQztPQUNBQztzQkQ1Q0w7O09DZ0RLQztPQUNBQztPQUNBQztPQUlBQztPQUVBQztPQUNBQztPQUNBQztPQWVTQztPQUVBRztPQURBRDtPQUVBRTtPMEJvZFRDO08xQmpkQUM7T0FRQUM7O2FhOURBQyxTQUFPdlc7Ozs7VUFGQyx1REFBTHdXOztRQURHLFdBR21CO2FBRXpCQyxPQUFLdFYsRUFBRW5CLEdBQUksVUFBTm1CLEVBQUVuQixFQUFRO2FBRWZNO01BQUssVUFFRyxJQUFSYSxXQUFRLE9BQVJBLEVBRE0sdUJBQ0c7YUFFVGQ7TUFBSyxVQUVHLElBQUxMLFdBQUssT0FBTEEsRUFERyx1QkFDRzthQUVUMFcsSUFFYzFXLEVBQUU5QjtNQURsQixRQUNrQkE7WUFBRnlZLE1BQUUzSDtRQUNoQjthQURjMkg7Z0JBR1RDLElBSFNELE9BR1p4VixFQUhZd1Y7cUJBQUUzSCxJQUdRLE9BQXRCN047WUFBNkIsUUFIZjZOLFlBQUYySCxJQUdUQyxJQUhXNUg7O1VBRVI7TUFISSxnQ0FLQTthQUVaNkgsUUFFYzdXLEVBQUU5QjtNQURsQixRQUNrQkE7WUFBRnlZLE1BQUUzSDtRQUNoQjthQURjMkg7Z0JBR1RDLElBSFNELE9BR1p4VixFQUhZd1Y7cUJBQUUzSCxJQUdRLFVBQXRCN047WUFBa0MsUUFIcEI2TixZQUFGMkgsSUFHVEMsSUFIVzVIOztVQUVSO01BSEksa0NBS0E7YUFJUjhILFdBQVd4WCxHQUFHQztVQUFId1gsUUFBR0M7TUFDcEI7V0FEaUJEOzJCQUdmNVYsRUFIZTRWLFFBQUdHLFFBR2xCL1YsRUFIa0I2VixNQUFIRCxVQUFHQzs7UUFFWixPQUZZQSxLQUdjO2FBRWhDRyxJQUFJblgsR0FBSSxrQkFBSkEsSUFBbUI7YUFNbkJvWCxXQUFTMWQsRUFBRXdFLEVBQUVOO01BQ25CLEdBRGlCTSxLQUFGeEUsRUFDQTtNQUVMLElBQUpxRSxFQUFJLFdBSFNILEVBQUpsRTtNQUlSLFVBRERxRSxFQUNDLFdBSlFyRSxVQUFFd0UsRUFBRU4sR0FJTTtvQkFTbEI2RCxJQUFJN0Q7TUFDWCxRQURPNkQ7UUFFUCxRQUZPQTtjQWpCZ0J1SyxNQUFJdFM7VUFDM0I7ZUFnQk8rSCxPQWpCb0IvSCxTQUZ6QnlkLElBRXFCbkw7WUFFbEIsUUFGc0J0UyxVQUVKLG9CQWVaa0UsRUFqQmdCbEUsR0FBSnNTLGVBQUl0Uzs7UUFvQnRCLG9CQUhFK0gsSUFBSTdEO01BQ0ssaUNBRUs7O01BRUwsY0FFWEcsV0FBSGlDLFdBQVksY0FBWkEsRUFBWSxRQUFUakM7TUFERyxRQUNlO21CQUliSDtNZDFGYjtRYzRGcUIsSUFBYm9DLFdBQUhtQixXQUFnQixhQUZSdkQsRUFFUnVELEdBQTRCLFVBQWhCcEQsRUFBZ0IsTUFGcEJILEVBRUxvQztNQURHO2lCQUdHdEcsRUFBRWtFO01kOUZoQjtRY2dHcUIsSUFBYm9DLFdBQUhtQixXQUFnQixhQUZMdkQsRUFBRmxFLEVBRVR5SDtRQUE4QixVQUFsQnBELEVBQWtCLElBRnJCckUsVUFBRWtFLEVBRVJvQztNQURHO29CQUdEcEMsRUFBRW9DLEdBQUksYUFBTnBDLEVBQUVvQyxFQUFjO3FCQUVicEMsRUFBRXlaOzs7O1VBR1E7V0FBYnJYO1dBQUhtQjtXQUFnQixxQkFIVnZELEVBR051RDs7bUJBQUduQjs7UUFERyxZQUdDO29CQUdBcEM7TWQ1R2Q7OztjYzhHUW9DLGFBQUhtQjtVQUFRLFdBRkN2RCxFQUVUdUQ7c0JBQUduQjs7UUFERztxQkFPQXBDLEVBQUUrWTs7OztjQUZMM1csV0FBSG1CO1VBQVEsV0FFRnZELElBRk51RDtVQUFRLDhCQUFMbkI7O1FBREcsU0FHaUI7eUJBRVRwQyxFQUFFa0YsS0FBSzlDO1VBQUxnRCxZQUFLMlQ7TUFDdkI7V0FEdUJBO1VBR0Q7V0FBakJDLElBSGtCRDtXQUdyQnhWLEVBSHFCd1Y7V0FHRCxrQkFITi9ZLEVBQUVvRixPQUdoQjdCO1dBSGdCNkI7V0FBSzJULElBR2xCQzs7UUFERyxPQUZVNVQsT0FHZ0I7d0JBRWpCcEYsRUFBRW9DLEVBQUU4QztNQUNyQixHQURtQjlDLE9BR2QyVyxJQUhjM1csS0FHakJtQixFQUhpQm5CLEtBR0wsa0JBSEdwQyxFQUdmdUQsRUFBWSxXQUhHdkQsRUFHWitZLElBSGdCN1Q7TUFFYixPQUZhQSxJQUdjO29CQUV4QmxGLEVBQUUwQixHQUFHQztNQUNoQixHQURhRDtXQUFHQztVQUdjLElBQWZ5WCxLQUhDelgsTUFHTCtYLEdBSEsvWCxNQUdUd1gsS0FITXpYLE1BR1ZpWSxHQUhValksTUFHaUIsYUFIbkIxQixFQUdSMlosR0FBUUQ7VUFBbUMsVUFBcEJ2WixFQUFvQixPQUhuQ0gsRUFHSm1aLEtBQVFDOztPQURELEtBRkV6WCxHQUVGO01BRUYsaUNBQXVCO3NCQUV4QjNCLEVBQ1UwQixHQUFHQztVQUFSdUQsT0FBS2lVLFFBQUdDO01BQ3RCO1dBRG1CRDthQUFHQztZQUdTO2FBQWhCRSxLQUhPRjthQUdYTSxHQUhXTjthQUdmQyxLQUhZRjthQUdoQlEsR0FIZ0JSO2FBR1kscUJBSnRCblosRUFJTjJaLEdBQVFELElBSEd4VTs7YUFBS2lVLEtBR1pFO2FBSGVELEtBR1BFOzs7U0FERCxLQUZRRixLQUVSLE9BRkFsVTtRQUlGLHNDQUVFO3FCQUdKbEYsRUFBRTBCLEdBQUdDO1VBQUh3WCxRQUFHQztNQUNqQjtXQURjRDthQUFHQztnQkFHRkUsS0FIRUYsUUFHTk0sR0FITU4sUUFHVkMsS0FIT0YsUUFHWFEsR0FIV1I7WUFHUSxXQUhWblosRUFHVDJaLEdBQVFEO2dCQUhHUCxLQUdQRSxLQUhVRCxLQUdGRTs7O1NBREQsS0FGR0YsS0FFSDtRQUVGLG1DQUF3QjswQkFFbkJwWixFQUFFa0YsS0FBS3hELEdBQUdDO1VBQVJ5RCxZQUFLK1QsUUFBR0M7TUFDM0I7V0FEd0JEO2FBQUdDO1lBR1E7YUFBcEJFLEtBSFlGO2FBR2hCTSxHQUhnQk47YUFHcEJDLEtBSGlCRjthQUdyQlEsR0FIcUJSO2FBR1csa0JBSGxCblosRUFBRW9GLE9BR2hCdVUsR0FBUUQ7YUFIUXRVO2FBQUsrVCxLQUdqQkU7YUFIb0JELEtBR1pFOzs7U0FERCxLQUZhRixLQUViLE9BRktoVTtRQUlQLHdDQUE2Qjt5QkFFdkJwRixFQUFFMEIsR0FBR0MsR0FBR3VEO01BQzFCLEdBRG9CeEQ7V0FBR0M7Y0FHUnlYLEtBSFF6WCxNQUdaK1gsR0FIWS9YLE1BR2hCd1gsS0FIYXpYLE1BR2pCaVksR0FIaUJqWTtVQUdVLGtCQUhaMUIsRUFHZjJaLEdBQVFELEdBQW1CLFlBSFoxWixFQUdYbVosS0FBUUMsS0FIV2xVOztPQUVaLEtBRlN2RCxHQUVULE9BRll1RDtNQUlkLHdDQUE4Qjt1QkFFNUJrSztNZGxLakI7OztVY29LYSxJQUFMaE4sYUFBSG1CLGFBQVEsZ0JBRkk2TCxFQUVaN0w7VUFBUSxxQkFBTG5CO1VBREc7O3NCQUdLZ047TWR0S2hCOzs7VWN3S2EsSUFBTGhOLGFBQUhtQixhQUFRLGdCQUZHNkwsRUFFWDdMO1VBQVEsUUFERjtVQUNFLFlBQUxuQjs7UUFERzt3QkFHT2dOLEVBQUUxTixHQUFHQztVQUFId1gsUUFBR0M7TUFDcEI7V0FEaUJEO2FBQUdDO1lBR0U7YUFBUEUsS0FIS0Y7YUFHVE0sR0FIU047YUFHYkMsS0FIVUY7YUFHZFEsR0FIY1I7YUFHSyxnQkFIUC9KLEVBR1p1SyxHQUFRRDtZQUFXLGFBSExQLEtBR1ZFLEtBSGFELEtBR0xFOzs7U0FERCxLQUZNRixLQUVOO1FBRUYsc0NBQTJCO3VCQUV6QmhLLEVBQUUxTixHQUFHQztVQUFId1gsUUFBR0M7TUFDbkI7V0FEZ0JEO2FBQUdDO1lBR0c7YUFBUEUsS0FISUY7YUFHUk0sR0FIUU47YUFHWkMsS0FIU0Y7YUFHYlEsR0FIYVI7YUFHTSxnQkFIUi9KLEVBR1h1SyxHQUFRRDtZQUFXO2dCQUhOUCxLQUdURSxLQUhZRCxLQUdKRTs7O1NBREQsS0FGS0YsS0FFTDtRQUVGLHFDQUEwQjtpQkFFNUJ6WTtNZHRMYjs7O1Vjd0xhLElBQUx5QixhQUFIbUIsYUFBUSx3QkFBUkEsRUFGUTVDO1VBRUEsUUFERjtVQUNFLFlBQUx5Qjs7UUFERztrQkFHR3pCO01kMUxkOzs7Y2M0TFF5QixhQUFIbUIsd0JBRlM1QztrQkFDSDtzQkFDSHlCOztRQURHO21CQUdJekI7TWQ5TGY7OztjY2dNWXlCLDhCQUFKTixXQUFGeUI7VUFBYyxzQkFBZEEsRUFGUzVDLEdBRTBCLE9BQWpDbUI7c0JBQUlNOztRQUREO3VCQUdRekI7TWRsTW5COzs7Y2NvTVl5Qiw4QkFBSk4sV0FBRnlCO1VBQWMsc0JBQWRBLEVBRmE1QyxHQUVzQixVQUFqQ21CO3NCQUFJTTs7UUFERDtrQkFHR3pCO01kdE1kOzs7Y2N3TVl5Qiw4QkFBSk4sV0FBRnlCO21CQUZRNUMsRUFFa0IsT0FBeEJtQjtzQkFBSU07O1FBREQ7c0JBR096QjtNZDFNbEI7OztjYzRNWXlCLDhCQUFKTixXQUFGeUI7bUJBRlk1QyxFQUVjLFVBQXhCbUI7c0JBQUlNOztRQUREO3VCQUdRekI7TWQ5TW5COzs7VWNnTm9CO1dBQUx5Qjs7V0FBVG1CO1dBQWMsd0JBQWRBLEVBRmE1QztVQUVDLFFBRFQ7VUFDUyxZQUFMeUI7O1FBREo7c0JBR096QjtNZGxObEI7OztjY29OZXlCLDhCQUFUbUIsc0JBRlk1QztrQkFDUDtzQkFDSXlCOztRQURKOzBCQUdXekI7TWR0TnRCO1ljd051QnlCLFdBQWxCd1gsY0FBQ3JXLEVBQURxVztRQUNLLDBCQURKclcsRUFGZ0I1QyxHQUVDeUIsS0FBbEJ3WCxLQUN5QyxhQUh4QmpaLEVBRUN5QjtNQURaO3lCQUlVekI7TWQzTnJCO1ljNk51QnlCLFdBQWxCd1gsY0FBQ3JXLEVBQURxVztlQUFDclcsTUFGZTVDLEVBRUV5QixLQUFsQndYLEtBQXFELFlBRnJDalosRUFFRXlCO01BRFo7b0JBR0dnTjtNZC9OZDs7O2NjaU9VaE4sYUFBTHpCO1VBQWEsY0FGSnlPLEVBRVR6TyxHQUFzQixPQUF0QkE7c0JBQUt5Qjs7UUFEQztzQkFHT2dOO01kbk9sQjs7O2NjcU9VaE4sYUFBTHpCO1VBQWEsY0FGQXlPLEVBRWJ6TyxHQUFzQixVQUF0QkE7c0JBQUt5Qjs7UUFEQzt3QkFHT3BDO01kdk9sQjs7O1VjME9rQixJQURSb0MsYUFBTHpCLGFBQ2Esa0JBSEFYLEVBRWJXO1VBQ2EsR0FDUitMLE9BQW9CLE9BQXBCQTtVQURRLFlBRFJ0Szs7UUFEQztzQkFPR2dOO01BQ1g7Ozs7O2dCQUVPaE4sV0FBTHpCO1lBQWEsY0FISnlPLEVBR1R6TztjQUFzQixjQUF0QkEsOEJBQUt5Qjs7O1VBREMsb0JBRUQ7cUJBSUdnTixFQUFFcUs7Ozs7VUFHYztXQUFyQnJYO1dBQUh6QjtXQUF3QixpQkFIaEJ5TyxJQUdSek87Ozs7bUJBQUd5Qjs7UUFERyxnQkFHRTswQkFFR3BDO01BQ2I7Ozs7O1lBR1ksSUFESG9DLFdBQUx6QixXQUNRLGlCQUpDWCxFQUdUVztZQUNRO2NBRU0seUJBQUxULDhCQUhKa0M7O1lBQ0csVUFESEE7O1VBREMsb0JBTUo7d0JBR01wQyxFQURHeVo7Ozs7VUFJRDtXQURMclg7V0FBTHpCO1dBQ1UsY0FIRlgsRUFFUlc7V0FFTyxpQkFERmdPOzttQkFEQXZNOztRQURDLGdCQUlHOzJCQUVHcEMsRUFBRWtGLEtBQUt1VTtpQkFBTHZVLHNCQUFLdVU7OztVQUlIO1dBRFhyWDtXQUFMekI7V0FDZ0IsaUJBSkpYLFNBR1pXO1dBQ2dCOzt1QkFBSmtaO2tCQUFOM0s7O21CQUREOU07O1FBRE8sOEJBSUg7eUJBRURnTixFQUFFcUs7Ozs7Y0FHUHJYLGFBQUx6QjtVQUFhLGNBSEh5TyxFQUdWek87WUFBc0IsYUFBdEJBLHlCQUFLeUI7VUFBMkMsWUFBaER6QixzQkFBS3lCOztRQURXO1FBQVQseUJBRUc7NkJBRUlnTixFQUFFcUs7Ozs7VUFJSCxJQURSclgsYUFBTHpCLGFBQ2EsaUJBSkN5TyxFQUdkek87VUFDYTtZQUNTLHlCQUFMVCw0QkFGWmtDO1VBQ1EsSUFFVSx3QkFBTCtHLGlDQUhiL0c7O1FBRFk7UUFBViwwQkFPRzs7TUFFRTtRQUdLO1NBRFZBOztTQUFKeEI7U0FBRkQ7U0FDZ0IsY0FEVnlCO1NBQ1U7O3FCQURoQnpCLEVBQ01vWixPQURKblosRUFDUWtaO01BRkwsVUFFb0M7cUJBRTlCcFksR0FBR0M7TUFDakIsR0FEY0Q7V0FBR0M7Y0FHRnlYLEtBSEV6WCxNQUdOK1gsR0FITS9YLE1BR1Z3WCxLQUhPelgsTUFHWGlZLEdBSFdqWTtVQUdvQixhQUEvQmlZLEdBQVFELElBQXVCLFFBQTNCUCxLQUFRQzs7T0FERCxLQUZHelgsR0FFSDtNQUVGLG9DQUEwQjttQkFJMUJ1TyxJQUdWeE8sR0FESUM7TUFETixHQUVFRDtXQURJQztjQUVZcVksR0FGWnJZLE1BRU1zWSxHQUZOdFksTUFFRXVZLEdBRE54WSxNQUNBeVksR0FEQXpZO1VBRUssc0JBTEt3TyxJQUlWaUssR0FBVUY7eUJBR0csTUFQSC9KLElBR1Z4TyxHQUNnQnNZO3NCQUFoQkcsR0FFYSxNQU5IakssSUFJSmdLLEdBRkZ2WTtRQUNNLE9BQVZEO01BRFUsT0FBTkMsRUFLd0I7dUJBR2hCdU8sSUFBSTlOO01BQ2xCLFNBa0JRZ1ksS0FBSzlaLEVBQUU4QjtRQUNiLFNBRFc5QjthQUFFOEI7OztjQUdFO2VBREVLO2VBQU40WDtlQUFOQyxHQUZRbFk7ZUFHRSxpQkF0Qkg4TixJQXFCUG9LLEdBQU1ELGFBQU5DLGdCQUFNRDtjQUNzQyxVQUF6QzdaLEVBRFNpQzs7a0JBRk5uQyxLQUFFOEI7Ozs7O2VBT0o7Z0JBRmNtWTtnQkFBTkM7Z0JBQU5DO2dCQUFOQyxLQUxRdFk7Z0JBT0o7Z0NBMUJHOE4sSUF3QlB3SyxLQUFNRDt1QkFNRyxXQTlCRnZLLElBd0JQd0ssS0FBWUY7eUJBT0gsV0EvQkZ0SyxJQXdCRHVLLEtBQU1EO2dDQUFOQyxRQUFOQzswQkFBTUQsUUFBTUQsTUFBWkU7d0JBQU1ELFFBQU5DLFFBQVlGO3VCQUdOLFdBM0JDdEssSUF3QkR1SyxLQUFNRDt5QkFJRCxXQTVCSnRLLElBd0JQd0ssS0FBWUY7Z0NBQVpFLFFBQU1EOzBCQUFOQyxRQUFZRixNQUFOQzt3QkFBTkMsUUFBTUQsUUFBTUQ7ZUFRTixVQVBIekosSUFEZXdKO1FBWW5CO1lBakJPamE7U0FpQlAsR0FqQk9BLElBaUJIcWE7U0FFUyxlQUZUQSxHQWpCS3ZZO1NBbUJJOztTQUNBLGlCQUZUd1ksR0FDSXhCO1NBQ0s7O1NBN0JHMVgsR0E0QlpGO1NBNUJlRyxHQTZCZkY7U0E3QmtCeUQ7UUFDMUI7YUFEb0J4RDtlQUFHQztrQkFJVHFZLEdBSlNyWSxNQUlic1ksR0FKYXRZLE1BSWpCdVksR0FKY3hZLE1BSWxCeVksR0FKa0J6WTtjQUtiLGtCQWZLd08sSUFjVmlLLEdBQVFGO2dCQUVELGNBRlBFLEdBSndCalYsTUFBTnhELEdBSWR3WSxHQUpvQmhWO2NBT2pCLGNBSEMrVSxHQUpnQi9VLE1BQUh2RCxHQUlUcVksR0FKWTlVOztxQkFHZCxXQUhReEQsR0FBTXdEOztvQkFFZCxXQUZXdkQsR0FBR3VEO3lCQTZCZDRWLE1BQ29CO01BdkNsQyxTQXdDSUQsU0FBU3ZhLEVBQUU4QjtRQUNiLFNBRFc5QjthQUFFOEI7OztjQUdFO2VBREVLO2VBQU40WDtlQUFOQyxHQUZRbFk7ZUFHRSxpQkE1Q0g4TixJQTJDUG9LLEdBQU1ELE9BQU5DLE1BQU1ELGdCQUFOQztjQUMyQyxVQUF4QzlaLEVBRFNpQzs7a0JBRk5uQyxLQUFFOEI7Ozs7O2VBT0o7Z0JBRmNtWTtnQkFBTkM7Z0JBQU5DO2dCQUFOQyxLQUxRdFk7Z0JBT0o7Z0NBaERHOE4sSUE4Q1B3SyxLQUFNRDt1QkFHQSxXQWpEQ3ZLLElBOENEdUssS0FBTUQ7d0JBQVpFLFFBQU1ELFFBQU1EO3lCQUlELFdBbERKdEssSUE4Q1B3SyxLQUFZRjswQkFBWkUsUUFBWUYsTUFBTkM7MEJBQU1ELE1BQVpFLFFBQU1EO3VCQU1HLFdBcERGdkssSUE4Q1B3SyxLQUFZRjt3QkFBTkMsUUFBTkMsUUFBWUY7eUJBT0gsV0FyREZ0SyxJQThDRHVLLEtBQU1EOzBCQUFOQyxRQUFNRCxNQUFaRTswQkFBWUYsTUFBTkMsUUFBTkM7ZUFRTSxVQVBIM0osSUFEZXdKO1FBWW5CO1lBakJPamE7U0FpQlAsR0FqQk9BLElBaUJIcWE7U0FFUyxXQUZUQSxHQWpCS3ZZO1NBbUJJOztTQUNBLGFBRlR3WSxHQUNJeEI7U0FDSzs7U0E1REQxWCxHQTJEUkY7U0EzRFdHLEdBNERYRjtTQTVEY3lEO1FBQ3RCO2FBRGdCeEQ7ZUFBR0M7a0JBSUxxWSxHQUpLclksTUFJVHNZLEdBSlN0WSxNQUlidVksR0FKVXhZLE1BSWR5WSxHQUpjelk7Y0FLVCxrQkFOS3dPLElBS1ZpSyxHQUFRRjtnQkFHRCxjQUhDQSxHQUpZL1UsTUFBSHZELEdBSUxxWSxHQUpROVU7Y0FNYixjQUZQaVYsR0FKb0JqVixNQUFOeEQsR0FJVndZLEdBSmdCaFY7O3FCQUdWLFdBSEl4RCxHQUFNd0Q7O29CQUVWLFdBRk92RCxHQUFHdUQ7eUJBNERWNFYsTUFDZ0I7TUFFcEIsSUFBTmpYLElBQU0sU0FoRVF6QjtNQWdFUixZQUFOeUIsSUFDdUIsS0FEdkJBLElBaEVjekIsT0FpRXFCO3VCQXlDM0I4TixJQUFJOU47TUFDaEIsU0FzQlFnWSxLQUFLOVosRUFBRThCO1FBQ2IsU0FEVzlCO2FBQUU4Qjs7O2NBSUM7ZUFGR0s7ZUFBTjRYO2VBQU5DLEdBRlFsWTtlQUlDLGVBM0JKOE4sSUF5QkxvSyxHQUFNRDtlQUVHLFFBQUpVLE9BRkxULFdBRUtTLE9BRkNWLE1BQU5DLGdCQUFNRDtjQUcrQyxVQUZsRDdaLEVBRFNpQzs7a0JBRk5uQyxLQUFFOEI7Ozs7O2VBVUM7Z0JBRlNtWTtnQkFBTkM7Z0JBQU5DO2dCQUFOQyxLQVJRdFk7Z0JBVUMsZUFqQ0o4TixJQStCTHdLLEtBQU1EO2VBRUcsU0FBSk87Z0JBRU07Z0NBbkNOOUssSUErQkN1SyxLQUFNRDtpQkFJRDt3QkFBSlM7dUJBSkRSO3lCQUlDUSxPQUpLVCxNQUFOQyxvQkFBTUQ7aUJBQ1R6Sjs7Z0JBS0csUUFKRGlLO2tCQWNNLElBQUpFLElBQUksV0EvQ05oTCxJQStCTHdLLEtBQVlGO2tCQWdCRCxTQUFKVTsrQkFoQkRULFFBQU5DOzttQkFrQlEsUUFGRFE7b0JBSU07b0NBbkRSaEwsSUErQkN1SyxLQUFNRDtxQkFvQkM7NEJBQUpXOzJCQXBCSFYsUUFBTkM7NkJBb0JTUzs2QkFwQkdYLE1BQU5DLFFBQU5DOzZCQUFNRCxRQUFNRCxNQUFaRTs7O2dDQUFNRCxRQUFOQyxRQUFZRjtrQkFnQkQsSUFmUnpKOztrQkFNUSxJQUFKcUssSUFBSSxXQXRDTmxMLElBK0JDdUssS0FBTUQ7a0JBT0QsU0FBSlk7K0JBUFBWLFFBQU1EOzttQkFTRSxRQUZEVztvQkFJTTtvQ0ExQ1JsTCxJQStCTHdLLEtBQVlGO3FCQVdDOzRCQUFKYTsyQkFYVFgsUUFBTUQ7NkJBV0dZOzZCQVhHYixNQUFaRSxRQUFNRDs2QkFBTkMsUUFBWUYsTUFBTkM7OztnQ0FBTkMsUUFBTUQsUUFBTUQ7a0JBT0QsSUFOUnpKO2VBd0JKLFVBeEJJQSxJQURld0o7UUEyQm5CO1lBbkNPamE7U0FtQ1AsR0FuQ09BLElBbUNIcWE7U0FFUyxlQUZUQSxHQW5DS3ZZO1NBcUNJOztTQUNBLGlCQUZUd1ksR0FDSXhCO1NBQ0s7O1NBakRHMVgsR0FnRFpGO1NBaERlRyxHQWlEZkY7U0FqRGtCeUQ7UUFDMUI7YUFEb0J4RDtlQUFHQztjQUtYLElBREVxWSxHQUpTclksTUFJYnNZLEdBSmF0WSxNQUlqQnVZLEdBSmN4WSxNQUlsQnlZLEdBSmtCelksTUFLUixhQWpCRndPLElBZ0JSaUssR0FBUUY7Y0FDRSxTQUFKL1c7Z0JBQ1UsY0FGaEJpWCxHQUp3QmpWLE1BQU54RCxHQUlkd1ksR0FKaUJ2WSxHQUlUcVksR0FKWTlVO2NBT2pCLE9BRkRoQyxHQUdDLGNBSlBpWCxHQUp3QmpWLE1BQU54RCxHQUlkd1ksR0FKb0JoVjtjQUtkLElBSUgsVUFMQytVLEdBSmdCL1UsTUFBSHZELEdBSVRxWSxHQUpZOVU7O3FCQUdkLFdBSFF4RCxHQUFNd0Q7O29CQUVkLFdBRld2RCxHQUFHdUQ7eUJBaURkNFYsTUFDb0I7TUE3RGxDLFNBOERJRCxTQUFTdmEsRUFBRThCO1FBQ2IsU0FEVzlCO2FBQUU4Qjs7O2NBSUM7ZUFGR0s7ZUFBTjRYO2VBQU5DLEdBRlFsWTtlQUlDLGVBbkVKOE4sSUFpRUxvSyxHQUFNRDtlQUVHLFFBQUpVLE9BRkxULFVBRUtTLE9BRkxULE1BQU1ELGdCQUFOQztjQUdxRCxVQUZsRDlaLEVBRFNpQzs7a0JBRk5uQyxLQUFFOEI7Ozs7O2VBVUM7Z0JBRlNtWTtnQkFBTkM7Z0JBQU5DO2dCQUFOQyxLQVJRdFk7Z0JBVUMsZUF6RUo4TixJQXVFTHdLLEtBQU1EO2VBRUcsU0FBSk87Z0JBRU07Z0NBM0VOOUssSUF1RUN1SyxLQUFNRDtpQkFJRDt3QkFBSlM7dUJBSkRSO3dCQUlDUSxPQUpEUixRQUFNRCxnQkFBTkM7aUJBQ0gxSjs7Z0JBS0csT0FKRGlLO2tCQUtNLElBQUpFLElBQUksV0E5RU5oTCxJQXVFQ3VLLEtBQU1EO2tCQU9ELFNBQUpVOytCQVBQUixRQUFNRDs7bUJBU0UsT0FGRFM7Z0NBUFBSLFFBQU1ELFFBQU1EOztvQkFXQztvQ0FsRlJ0SyxJQXVFTHdLLEtBQVlGO3FCQVdDOzRCQUFKVzsyQkFYVFQsUUFBTUQ7NEJBV0dVOzZCQVhUVCxRQUFZRixNQUFOQzs2QkFBTUQsTUFBWkUsUUFBTUQ7O2tCQU9LLElBTlIxSjs7a0JBZVEsSUFBSnFLLElBQUksV0F2Rk5sTCxJQXVFTHdLLEtBQVlGO2tCQWdCRCxTQUFKWTsrQkFoQkRYLFFBQU5DOzttQkFrQlEsT0FGRFU7Z0NBaEJEWCxRQUFOQyxRQUFZRjs7b0JBb0JDO29DQTNGUnRLLElBdUVDdUssS0FBTUQ7cUJBb0JDOzRCQUFKYTsyQkFwQkhaLFFBQU5DOzRCQW9CU1c7NkJBcEJIWixRQUFNRCxNQUFaRTs2QkFBWUYsTUFBTkMsUUFBTkM7O2tCQWdCVyxJQWZSM0o7ZUF3QkosVUF4QklBLElBRGV3SjtRQTJCbkI7WUFuQ09qYTtTQW1DUCxHQW5DT0EsSUFtQ0hxYTtTQUVTLFdBRlRBLEdBbkNLdlk7U0FxQ0k7O1NBQ0EsYUFGVHdZLEdBQ0l4QjtTQUNLOztTQXBHRDFYLEdBbUdSRjtTQW5HV0csR0FvR1hGO1NBcEdjeUQ7UUFDdEI7YUFEZ0J4RDtlQUFHQztjQUtQLElBREVxWSxHQUpLclksTUFJVHNZLEdBSlN0WSxNQUlidVksR0FKVXhZLE1BSWR5WSxHQUpjelksTUFLSixhQU5Gd08sSUFLUmlLLEdBQVFGO2NBQ0UsU0FBSi9XO2dCQUNVLGNBRmhCaVgsR0FKb0JqVixNQUFOeEQsR0FJVndZLEdBSmF2WSxHQUlMcVksR0FKUTlVO2NBT2IsUUFGRGhDLEdBSUMsY0FMQytXLEdBSlkvVSxNQUFIdkQsR0FJTHFZLEdBSlE5VTtjQUtWLElBR0gsVUFKUGlWLEdBSm9CalYsTUFBTnhELEdBSVZ3WSxHQUpnQmhWOztxQkFHVixXQUhJeEQsR0FBTXdEOztvQkFFVixXQUZPdkQsR0FBR3VEO3lCQW9HVjRWLE1BQ2dCO01BRXBCLElBQU5qWCxJQUFNLFNBeEdNekI7TUF3R04sWUFBTnlCLElBQ3VCLEtBRHZCQSxJQXhHWXpCLE9BeUd1Qjs2QkFHakJWLEdBQUdDO1VBQUh3WCxRQUFHQztNQUN6QjtXQURzQkQ7YUFBR0MsdUJBQUhDLHVCQUFHRDtVQUlkO1FBREEsT0FIY0EsVUFLa0I7aUNBR2pCaFgsRUFBRTlCO1VBQUZ5WSxNQUFFM0g7TUFDNUI7V0FEMEIySDtVQU14QixJQURLQyxJQUxtQkQ7VUFNeEIsT0FOMEIzSCxLQU94QixRQVB3QkEsWUFBRjJILElBS25CQyxJQUxxQjVIO1VBTVg7UUFIZixhQUgwQkEsbUJBT0c7cUJBVW5CcEIsR0FBR3RPLEdBQUdDO1VBQUh3WCxRQUFHQztNQUNsQjtXQURlRDthQUFHQztZQUlFO2FBQU5FLEtBSklGO2FBSVJNLEdBSlFOO2FBSVpDLEtBSlNGO2FBSWJRLEdBSmFSO2FBSUssZ0JBSlJuSixHQUlWMkosR0FBUUQ7WUFBVSxhQUpMUCxLQUlURSxLQUpZRCxLQUlKRTs7O1NBRkYsS0FGTUYsS0FFTjtRQUNhLFNBQ3FCO3VCQUVoQ2xKLElBQUl4TyxHQUFHQztVQUFId1gsUUFBR0M7TUFDckI7V0FEa0JEOzthQUFHQztZQU1YLElBRElFLEtBTE9GLFFBS1hNLEdBTFdOLFFBTVgsYUFOSWxKLFNBS0p3SjtZQUNBLFNBQUp4VyxPQU5ZaVcsVUFBR0MsS0FLUEU7WUFFRyxPQURYcFc7VUFGUTtRQURBLE9BSE9rVyxVQVFHO3NCQUlmaFg7TUFDVCxTQUFRbVosSUFBSW5aO1FBQU8sR0FBUEE7Y0FFSG9aLEtBRkdwWixLQUVSekIsRUFGUXlCO1VBRWtCLFVBQTFCekIsaUJkcGtCUCxPY2trQlc0YSxJQUVDQztRQURDLFFBQzZCO01BRnZDLHNCZGxrQkgsT2Nra0JXRCxJQURDblosUUFLSjtvQkFFSXlMO01BQ1QsU0FBUTROLE9BQU9DLE1BQU03TjtRQUNuQixTQURhNk47VUFHWDt3Q0FBbUJ0TixJQUFJek4sR0FBSyxVQUFMQSxFQUFKeU4sSUFBZSxPQUhqQlA7UUFLUixxQkFMUUE7UUFLUjtjQUVNTCxjQUFIN007VUFBaUIsVUFBakJBLEVBQWlCLE9BUGxCK2EsY0FPSWxPO1FBREYsUUFDcUM7TUFQdEQsa0JBRFNLLElBVUs7Ozs7T0F6akJaOEs7OztPQUVBRTtPQUVBblc7T0FJQUQ7T0FJQXFXO09BUUFHO09BZUFNOztPQVBBL1c7T0FFSTBXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1FjckNKeUMsT0FDQUMsTUFDQUM7YUFTQUMsTUFBSW5iLEdBQUksWUFBSkEsV0FBNEI7UUFDaENvYixxQkFDQUM7YUFJQUMsT0FBT3RiLEdBQUksT0FBSkEsTUFBaUI7YUFJeEJ1YixtQjVCdkNMO1E0QndDS0M7YUFDQUMsTUFBSXpiLEVBQUVDLEdBQVEsT0FBVkQsS0FBRUMsRUFBRkQsRUFBRUMsQ0FBK0I7YUFDckN5YixNQUFJMWIsRUFBRUMsR0FBUSxPQUFSQSxLQUFGRCxJQUFFQyxDQUErQjthQVVyQzBiLFlBQVUzYixHQUFJLG1DQUFKQSxFQUFxQjs7OztPQWxDL0JnYjtPQUNBQztPQUNBQztPQVNBQztPQUNBQztPQUNBQztPQUlBQztPQUlBQztPQUNBQztPQUNBQztPQUNBQztPQVVBQzs7b0JEWEtoYyxFQUFFNEM7TUFDRCxJQUFKMUMsRUFBSSxrQkFEREYsR0FFUCxnQkFESUUsSUFER0YsRUFBRTRDLEdBRVQsT0FESTFDLENBRUg7b0JBRU1GLEVBQUVOO01BQ0Qsd0JBRERNLEdBQ0MsS0FEREEsVUFDQzs7WUFDUnhFO1FBQ0U7VUFBZSxzQkFGYjBFLEVBQ0oxRSxFQUNpQixXQUhSa0UsRUFFVGxFO1VBQ2lCLFNBRGpCQTs7O01BR0EsT0FKSTBFLENBSUg7SUFFUztrQkFFSEE7TUFDUCw2QkFET0EsR0FFUCxvQkFESXFEO01BRUosZ0JBSE9yRCxJQUVITCxJQURBMEQ7TUFFSixPQURJMUQsQ0FFSDtJQU5TLGtCQVFFMkIsR0FBcUIsaUNBQXJCQSxHQUE2QjtJQVIvQixrQkFTRXRCLEdBQUksaUNBQUpBLEdBQTZCO0lBVC9CLGFBV0pBLEVBQUVvRCxJQUFJQztNM0JoRWY7YTJCZ0VXRCxZQUFJQyxnQ0FBTnJELEtBQU1xRCxXQUFKRDtRQUlFLElBQUp6RCxFQUFJLGtCQUpFMEQsS0FLVixnQkFMSXJELEVBQUVvRCxJQUlGekQsSUFKTTBELEtBS1YsT0FESTFEO01BRkQsNENBS0Y7SUFsQk8sb0JBb0JHMkIsRUFBRThCLElBQUlDO01BQXVCLGdDQUE3Qi9CLEVBQUU4QixJQUFJQyxLQUFzQztJQXBCL0MsU0F1QlIwWSxTQUFLaFosRUFBRXpCO01BQ1QsTUFET3lCLElBQUV6QixNQUNULEtBRFNBLFVBQ1QsTUFBSW9CO01BQUosR0FET0s7OztPQUtBO3NCQURrQiw4QkFIckJMLENBSUk7SUE1QkUsZ0JBOEJEMUMsRUFBRWlJLEtBQUtDO01BQ047NkJBQVYscUJBRFNsSSxHQUFFaUksTUFBS0M7T0FFaEIsb0JBREk3RTtNQUNKLFFBRlc0RTtXQUdFK1QsT0FIRi9ULEtBR05nVTs7V0FBUUQsU0FBUkMsU0FITWhVO01BQ0QsSUFHTmlVLE9BQVMsTUFBYixxQkFKU2xjLEtBR0ppYyxXQUZENVksTUFFUzJZO01BQ0EsT0FBVEUsT0FDZSxnQkFMVmxjLEVBR0ppYyxPQUREdGMsRUFDU3FjLE9BQ1RFO01BQ21ELE9BSG5EdmMsQ0FJSDtJQXBDUyxjQXNDSEssRUFBRW9ELElBQUlDLElBQUlYO00zQjNGcEI7YTJCMkZZVSxZQUFJQyxnQ0FBTnJELEtBQU1xRCxXQUFKRDtPQUdKLHVCQUhFcEQsRUFBRW9ELElBQUlDLElBQUlYO01BRVosOENBQ3VCO0lBekNsQixjQTJDSDFCLEdBQUdtYixLQUFLbGIsR0FBR21iLEtBQUsvWTtNM0JoRzFCOzs7UTJCZ0cwQkE7Ozs7UUFBYjhZOzs7K0JBQUhuYixNQUFnQnFDLFdBQWI4WTs7OztRQUFRQzs7OytCQUFIbmIsTUFBUW9DLFdBQUwrWTtPQUliLHVCQUpFcGIsR0FBR21iLEtBQUtsYixHQUFHbWIsS0FBSy9ZO01BR2xCLGtDQUMrQjtJQS9DMUIsZ0JBaURJckMsR0FBR21iLEtBQUtsYixHQUFHbWIsS0FBSy9ZO00zQnRHakM7OztRMkJzR2lDQTs7OztRQUFiOFk7OztnQ0FBSG5iLE1BQWdCcUMsV0FBYjhZOzs7O1FBQVFDOzs7K0JBQUhuYixNQUFRb0MsV0FBTCtZO09BSXBCLHdCQUpTcGIsR0FBR21iLEtBQUtsYixHQUFHbWIsS0FBSy9ZO01BR3pCLGtEQUNzQztJQXJEakMsZ0JBd0RIN0QsRUFBRXVEO01BQ1QsOEJBRFNBLFdBQ1Q7OztRQUE2QjtxQkFEdEJ2RCxFQUNzQixzQkFEcEJ1RCxFQUNUekg7VUFBNkIsU0FBN0JBOzs7Y0FBbUQ7SUF6RHpDLGlCQTRERmtFLEVBQUV1RDtNQUNWLDhCQURVQSxXQUNWOzs7UUFBNkI7cUJBRHJCdkQsRUFDUmxFLEVBQTZCLHNCQURuQnlILEVBQ1Z6SDtVQUE2QixTQUE3QkE7OztjQUFzRDtJQTdENUMsa0JBK0VEK2dCLElBRVB6YTtNM0J0SUwsRzJCc0lLQTtRQUFLLGdDQUZFeWEsaUJBRVB6YSxFQUFLOzs7OztjQWxCaUI7ZUFLaEJLO2VBTEs5QixnQ0FPa0JtYztlQVBQLGFBQVhuYyxJQUFpQzs7cUJBS3RDOEI7O3FCQURNOzs7VUFnQjRCLGtEQUZ4Q0w7Ozs7O29CQVBNMFk7Z0JBQ04sdUJBTGlCaUM7Z0JBTWpCO2tCQUdPRixNQVRVRSxVQUtqQiwrQkFMNkJEO2dCQU03QjtnRUFONkJBOzt5QkFJdkJoQzs7Y0FETix1QkFIaUJpQyxRQUdqQjtxQkFIaUJBO1lBQ1gsT0FEV0E7TUFVWDtJQWhGRSxlQXNGSnZiLEdBQUdDO01BQ1Q7K0JBRE1EO09BQ04sd0JBRFNDO09BR0Qsb0JBRkpDLEtBQ0FDO01BRUosZ0JBSk1ILEtBR0ZyQixJQUZBdUI7TUFJSixnQkFMU0QsS0FHTHRCLEVBRkF1QixHQUNBQztNQUdKLE9BRkl4QixDQUdIO0lBNUZTLFNBa0dSNmM7TUFBVzs7Ozs7eUJBRUQ7SUFwR0YsY0FzR0h4YztNQUNQLDZCQURPQSxHQUNQOztRQUVrQixHQURkMUUsT0FEQStILE9BRWMsK0JBSFhyRCxFQUVIMUU7VUFFRjtRQUVGLElBQUlzVSxLQUxBdk07O1VBTWMsR0FMZC9ILFFBSUFzVSxRQUNjLCtCQVBYNVAsRUFNSDRQO1lBRUY7VUFFRixPQVJJdFUsUUFJQXNVLEtBS0YsSUFYSzVQLEVBRUgxRSxNQUlBc1UsT0FKQXRVLDRCQVdHO0lBbkhHLG1CQXFIQTBFO01BQ1Ysc0NBRFVBLFdBQ1Y7O1lBQ0E2QjtRQUNFOzBDQUhRN0IsRUFFVjZCO1VBQ0U7Ozs7Ozs7Ozs7Ozs7VUFGRS9CO1VBRUYsU0FERitCOzs7TUFPQSxHQVJJL0IsU0FRSixxQkFUVUUsR0FTWSxZQVRaQTtNQUNWLElBU011USxJQUFLLGtCQVRQelE7TUFTTztNQVRYLElBU1csMEJBVkRFLFdBVUM7O1lBRVQxRTtRQUNFO3NDQWJNMEUsRUFZUjFFO1VBQ0UsU0FXRW9IOzs7Ozs7Ozs7Ozs7OztnQkFERSxzQkFiRjZOLElBVEZ6UTtnQkFzQkk7c0NBYkZ5USxJQVRGelE7OztnQkFrQkksc0JBVEZ5USxJQVRGelE7Z0JBa0JJO3NDQVRGeVEsSUFURnpROzs7Z0JBZ0JJLHNCQVBGeVEsSUFURnpRO2dCQWdCSTtzQ0FQRnlRLElBVEZ6UTs7O2dCQW9CSSxzQkFYRnlRLElBVEZ6UTtnQkFvQkk7c0NBWEZ5USxJQVRGelE7Ozs7O2FBeUJJLHNCQWhCRnlRLElBVEZ6UTthQXlCSTttQ0FoQkZ5USxJQVRGelEsV0F1QkU0QzthQUVFO21DQWhCRjZOLElBVEZ6USxZQXVCRTRDO2FBRUU7bUNBaEJGNk4sSUFURnpRLFdBdUJFNEM7OzthQVRFLHNCQUxGNk4sSUFURnpRO2FBY0k7bUNBTEZ5USxJQVRGelEsS0F1QkU0Qzs7bUJBQXFCLHNCQWRyQjZOLElBVEZ6USxLQXVCRTRDOztVQVdGO1VBdEJBLFNBREZwSDs7O01BeUJBLE9BM0JJaVYsR0E0Qkg7SUEzSk8sZUE2SkovUSxFQUFFUTtNQUNSLElBQUk0QixFQUFKLHFCQURRNUI7TUFDUixTQUFJNEIsRUFDVSxPQUZONUI7TUFDUixJQUVVLG9CQUZONEIsR0FFTSxLQUZOQSxVQUVNOztZQUNSdEc7UUFBc0I7VUFBZSxzQkFEakNxRSxFQUNKckUsRUFBcUMsV0FKakNrRSxFQUlrQixzQkFKaEJRLEVBSU4xRTtVQUFxQyxTQUFyQ0E7OztNQUNBLE9BRklxRSxDQUdIO0lBbktPLGdCQXFLSEgsRUFBRVE7TUFDVCxJQUFJNEIsRUFBSixxQkFEUzVCO01BQ1QsU0FBSTRCLEVBQ1UsT0FGTDVCO01BQ1QsSUFFVSxvQkFGTjRCLEdBRU0sS0FGTkEsVUFFTTs7WUFDUnRHO1FBQXNCO1VBQWU7WUFEakNxRSxFQUNKckUsRUFBcUMsV0FKaENrRSxFQUlMbEUsRUFBc0Isc0JBSmYwRSxFQUlQMUU7VUFBcUMsU0FBckNBOzs7TUFDQSxPQUZJcUUsQ0FHSDtJQTNLTyxxQkE2S0VILEVBQUVXLEVBQUU0QztNQUNoQixTQURjNUMsR0FDZCwwQkFEZ0I0QyxXQUNoQjs7WUFDQXpIO1FBQ0U7VUFBSyxrQkFIS2tFLEVBQ1JHLEtBRUYsc0JBSGNvRCxFQUVoQnpIO1VBQ08sU0FEUEE7OztNQUdBLE9BSklxRSxJQUlGO0lBbExRLHNCQW9MR0gsRUFBRXVELEVBQUU1QztNQUNqQixTQURpQkEsR0FDakIsMEJBRGU0QztNQUNmO1lBQ0F6SDtRQUNFO1VBQUssa0JBSE1rRSxFQUdYLHNCQUhhdUQsRUFFZnpILEdBRElxRTtVQUVHLFNBRFByRTs7O01BR0EsT0FKSXFFLElBSUY7SUF6TFEsa0JBMkxEaVAsRUFBRTVPO01BQ1gsMkJBRFdBLEdBRUUxRTtNQUNYO1dBRFdBLE1BRFR3RSxFQUVZO1FBQ04sY0FKRDhPLEVBSUYsc0JBSkk1TyxFQUVFMUUsSUFFcUI7UUFDM0IsUUFITUE7aUJBSVA7SUFqTUksbUJBbU1Bc1QsRUFBRTVPO01BQ1osMkJBRFlBLEdBRUMxRTtNQUNYO1dBRFdBLE1BRFR3RSxFQUVZO1FBQ04sY0FKQThPLEVBSUgsc0JBSks1TyxFQUVDMUU7VUFFcUIsUUFGckJBO1FBR04sU0FDRDtJQXpNSSwyQkEyTVEwRSxHQUFJLGFEN0xwQnFXLGdCQzZMZ0JyVyxFQUE4QjtJQTNNdEMsMkJBNE1RQSxHQUFJLGFEbE1wQm9XLGdCQ2tNZ0JwVyxFQUE4QjtJQTVNdEMsU0E4TVJ5YyxPQUFPamQsRUFBRVE7TUFDWCw4QkFEV0EsR0FDVSxPQURWQTtNQUVELElBQUpMLEVBQUksS0FGQ0s7TUFHTSxzQkFEWEwsSUFDVyxXQUhSSCxFQUVDLHNCQUZDUTtNQUdNLE9BRFhMLENBR0g7SUFuTk8sMEJBcU5TSyxHQUFJLGNEdk1yQnFXLGdCQ3VNaUJyVyxFQUFpQztJQXJOMUMsNEJBc05XQSxHQUFJLGNENU12Qm9XLGdCQzRNbUJwVyxFQUFpQztJQXRONUMscUJBeU5LMGMsT0FBTzFjO01BQ3RCO2tDQURzQkE7T0FDdEIsNkJBRGUwYztPQUNmLEtBQ0lFLFdBREFEO01BQUo7WUFFWXJoQjtRQUNWO2FBRFVBLE1BRFJzaEIsUUFFa0I7VUFDZix5QkFMZTVjLEVBR1YxRSxPQUVMLHNCQUxRb2hCLE9BR0hwaEI7V0FFeUM7VUFDOUMsUUFIS0E7O01BTmEsV0FVRztJQWhPbEIsbUJBbU9HdWhCLE9BQU83YztNQUNwQjtrQ0FEb0JBO09BQ3BCLDZCQURhNmM7T0FDYixLQUFJRixRQUNBRztPQURKLFVBRUlDO01BRko7WUFHWXpoQjtRQUNWO2FBRFVBLE1BRlJ3aEIsUUFHa0I7VUFDZjtrQ0FOYTljLEVBR2hCK2MsT0FDUXpoQjs7WUFFTCxzQkFOTXVoQixPQUlEdmhCO1dBRWtEO1VBQ3ZELFFBSEtBOztNQVZWLFdBY21CO0lBM09YLFNBOE9KMGhCLFVBQVVoZCxFQUFFaWQsSUFBSTNoQixFQUFFb0g7TTNCblMzQixJMkJtU3lCYjtNQUN0QjtXQURrQm9iLE9BQUlwYixJQUNMO1FBQ2pCLHlCQUZnQjdCLEVBQU02QixTQUFFYSxFQUVHLE9BRkxiO1FBRVksUUFGWkE7aUJBRXFDO0lBaFBqRCxlQW1QRjdCLEVBQUUwQyxHQUFJLGlCQUFOMUMsRUFBTSxxQkFBTkEsS0FBRTBDLEVBQThCO0lBblA5QixTQXNQSnlhLGNBQWNuZCxFQUFFaWQsSUFBSTNoQixFQUFFb0g7TTNCM1MvQixJMkIyUzZCYjtNQUMxQjtXQURzQm9iLE9BQUlwYixJQUNUO1FBQ2pCLHlCQUZvQjdCLEVBQU02QixTQUFFYSxFQUVELFVBRkRiO1FBRWEsUUFGYkE7aUJBRTBDO0lBeFAxRCxtQkEyUEU3QixFQUFFMEM7TUFBSSxxQkFBTjFDLEVBQU0scUJBQU5BLEtBQUUwQyxFQUFrQztJQTNQdEMsb0JBOFBHMUMsRUFBRTFFLEVBQUVvSDtNQUNqQixJQUFJZCxFQUFKLHFCQURhNUI7Y0FBRTFFLFFBQ1hzRyxJQURXdEcsR0FHZixpQkFIYTBFLEVBQ1Q0QixFQURXdEcsRUFBRW9IO01BRU0sa0RBQ047SUFqUVAsd0JBb1FPMUMsRUFBRTFFLEVBQUVvSDtNQUNyQixJQUFJZCxFQUFKLHFCQURpQjVCO2NBQUUxRSxRQUNmc0csSUFEZXRHLEdBS2pCLHFCQUxlMEUsRUFDYjRCLEVBRGV0RyxFQUFFb0g7TUFHbkIsa0RBRXFCO0lBelFiLFNBNFFKMGEsV0FBV3BkLEVBQUUxRSxFQUFFb0g7TTNCalV4QixJMkJpVXNCYjtNQUNuQjtnQkFEbUJBO1VBRW5CLHlCQUZpQjdCLEVBQUU2QixTQUFFYSxFQUVNLE9BRlJiO1VBRWUsUUFGZkE7O1FBQ0wsZ0JBQzBDO0lBOVE5QyxnQkFpUkQ3QixFQUFFMEM7TUFBSSxrQkFBTjFDLEVBQU0scUJBQU5BLFdBQUUwQyxFQUFpQztJQWpSbEMscUJBb1JJMUMsRUFBRTFFLEVBQUVvSDtNM0J6VXJCLFMyQnlVbUJwSCw2QkFBRjBFLE1BQUUxRSxHQUlkLGtCQUpZMEUsRUFBRTFFLEVBQUVvSDtNQUVoQixrREFFZ0I7SUF4UlIsU0EyUkoyYSxlQUFlcmQsRUFBRTFFLEVBQUVvSDtNM0JoVjVCLEkyQmdWMEJiO01BQ3ZCO2dCQUR1QkE7VUFFdkIseUJBRnFCN0IsRUFBRTZCLFNBQUVhLEVBRUUsVUFGSmI7VUFFZ0IsUUFGaEJBOztRQUNULFNBQ21EO0lBN1J2RCxvQkFnU0c3QixFQUFFMEM7TUFBSSxzQkFBTjFDLEVBQU0scUJBQU5BLFdBQUUwQyxFQUFxQztJQWhTMUMseUJBbVNRMUMsRUFBRTFFLEVBQUVvSDtNM0J4VnpCLFMyQndWdUJwSCw2QkFBRjBFLE1BQUUxRTtPQUlsQixzQkFKZ0IwRSxFQUFFMUUsRUFBRW9IO01BRXBCLGtEQUVvQjtJQXZTWix1QkEyU00xQyxFQUFFMUUsRUFBRW9IO01BQ3BCLElBQUlkLEVBQUoscUJBRGdCNUI7Y0FBRTFFLFFBQ2RzRyxJQURjdEc7T0FLaEI7U0FBVyxVQUxHMEUsRUFDWjRCLEVBRGN0RyxFQUFFb0gsR0FLUDs7OytCQUE0Qzs7TUFGdkQsa0RBRTREO0lBaFRwRCxrQkFvVEMxQyxFQUFFMEMsR0FBSSxxQkFBTjFDLElBQUUwQyxFQUF1QjtJQXBUMUIsd0JBdVRPMUMsRUFBRTFFLEVBQUVvSDtNM0I1V3hCLFEyQjRXc0JwSCw2QkFBRjBFLE1BQUUxRTtPQUlqQjtTQUFXLFdBSkkwRSxFQUFFMUUsRUFBRW9ILEdBSVI7OzsrQkFBMkM7O01BRnRELGtEQUUyRDtJQTNUbkQsbUJBZ1VDdkMsRUFBT0MsR0FBUSxrQ0FBZkQsRUFBT0MsRUFBMEI7SUFoVWxDLHVCQW9VTWljLElBQUlyYztNQUNwQjs7aUNBRG9CQTtPQUNwQiwwQkFEb0JBO01BQ3BCO1lBRUExRTtRQUNFO21DQUprQjBFLEVBR3BCMUUsT0FIZ0IrZ0I7WUFJZSxTQUgzQjFjO1lBSUssY0FMV0ssRUFHcEIxRSxXQURJc1UsT0FDSnRVO1lBRVMsT0FGVEE7Ozs7TUFGQSxTQUFJcUU7TUFRSixjQVRvQkssSUFFaEI0UCxXQU9ZO0lBN1VOLHFCQWlWRTVQLEdBQUksYUQ5VWRtVyxVQzhVVW5XLEVBQXdCO0lBalYxQixxQkFrVkVBLEdBQUksYUR0VmRrVyxVQ3NWVWxXLEVBQXdCO0lBbFYxQixvQkFvVkdBLEdBQUksY0RqVmZtVyxVQ2lWV25XLEVBQTJCO0lBcFY5QixzQkFxVktBLEdBQUksY0R6VmpCa1csVUN5VmFsVyxFQUEyQjtJQXJWaEMsa0JBeVZEQTtNQUNULFNBQVErYSxJQUFJemY7UUFDVixHQURVQSxNQUNWLHFCQUZPMEUsR0FFYztRQUVYLHFCQUpIQSxFQUNHMUUsR0FHQSxLQUhBQTtRQUlLLFVBRFQ2RSxpQjNCbFpYLE8yQitZVzRhLGdCQUltQjtNQUozQjs0QjNCL1lILE8yQitZV0EsZUFNSDtJQWhXSyxpQkFrV0EvYTtNQUNWLFNBQVErYSxJQUFJemY7UUFDVixHQURVQSxNQUNWLHFCQUZRMEUsR0FFYTtRQUVYLHFCQUpGQSxFQUNFMUUsR0FHQSxLQUhBQTtRQUlTLGFBSlRBLEVBR0o2RSxrQjNCM1pYLE8yQndaVzRhLGdCQUl1QjtNQUovQjs0QjNCeFpILE8yQndaV0EsZUFNSDtJQXpXSyxrQkEyV0R6ZjtNQUNULFlBQ2M7TUFTZDtpQkFDT29IO1VBQ0YsR0FaRDVDLFNBWUMscUJBWEQyRTtZQUdZO2FBQVY2WTtjQUFVLFVBQWQscUJBSEU3WTtZQUdZLHdCQUhaQSxZQUdFNlk7YUFDMEI7WUFEaEIsSUFFVkMsUUFBVSxPQUZWRDtZQUdKLEtBTkU3WSxTQUtFOFksVUFORnpkO1lBT0YsU0FESXlkO1VBT0QsZUFaRDlZLE9BREEzRSxLQVdHNEM7VUFFRjtrQkFDTTtRQWZGcEg7TUFXVCxXQVRJbUosU0FEQTNFLEtBZ0JTO0lBNVhILFNBNHNCSjBkLE1BblRpQmxjLEVBQUVoRyxHQUdiLHFDQUhXZ0csRUFBRWhHLEdBR2E7SUE1WjVCLGtCQThaQ2dHLEVBQUVoRyxHQUNaLHNCQURVZ0csRUFBRWhHLGNBQ2tEO0lBL1pyRCx1QkFpYU1nRyxFQUFFaEcsR0FFYix3QkFGV2dHLEVBQUVoRyxFQUVJO0lBbmFaLHVCQXFhTWdHLEVBQUVoRyxHQUNnQixxQ0FEbEJnRyxFQUFFaEcsR0FFSTtJQXZhWixzQkF5YUtnRyxFQUFFaEcsR0FDaEIsd0JBRGNnRyxFQUFFaEcsY0FDb0Q7SUExYTNELHNCQTRhS2dHLEVBQUVoRyxHQUNoQix3QkFEY2dHLEVBQUVoRyxjQUNvRDtJQTdhM0Qsc0JBK2FLZ0csRUFBRWhHLEdBQ2hCLHFCQURjZ0csRUFBRWhHLGNBQ29EO0lBaGIzRCxzQkFrYktnRyxFQUFFaEcsR0FFWix3QkFGVWdHLEVBQUVoRyxFQUVJO0lBcGJYLHNCQXNiS2dHLEVBQUVoRyxHQUNtQyx3QkFBbEIsaUJBRG5CZ0csRUFBRWhHLEdBRUk7SUF4Ylgsc0JBMGJLZ0csRUFBRWhHLEdBRVosd0JBRlVnRyxFQUFFaEcsRUFFSTtJQTViWCxzQkE4YktnRyxFQUFFaEcsR0FDbUMsd0JBQWxCLGlCQURuQmdHLEVBQUVoRyxHQUVJO0lBaGNYLFNBeXJCTm1pQixNQWxQbUJuYyxFQUFFaEcsRUFBRTZFLEdBRzNCLHdCQUh1Qm1CLEVBQUVoRyxFQUd6QixhQUgyQjZFLEdBR1E7SUExY3pCLHNCQTRjS21CLEVBQUVoRyxFQUFFNkUsR0FFZCx3QkFGVW1CLEVBQUVoRyxFQUFFNkUsRUFFSTtJQTljYixzQkFnZEttQixFQUFFaEcsRUFBRTZFLEdBQ1Esd0JBRFptQixFQUFFaEcsRUFDVSxhQURSNkUsR0FFSTtJQWxkYixzQkFvZEttQixFQUFFaEcsRUFBRTZFLEdBRWQsd0JBRlVtQixFQUFFaEcsRUFBRTZFLEVBRUk7SUF0ZGIsc0JBd2RLbUIsRUFBRWhHLEVBQUU2RTtNQUNRLHdCQURabUIsRUFBRWhHLEVBQzJCLGlCQUR6QjZFLEdBRUk7SUExZGIsc0JBNGRLbUIsRUFBRWhHLEVBQUU2RSxHQUVkLHdCQUZVbUIsRUFBRWhHLEVBQUU2RSxFQUVJO0lBOWRiLHNCQWdlS21CLEVBQUVoRyxFQUFFNkU7TUFDUSx3QkFEWm1CLEVBQUVoRyxFQUMyQixpQkFEekI2RSxHQUVJO0lBbGViO2FBNGVDdWQsUUFBUTVkLEVBQUVrTyxHM0JqaUJ4QixPQzRFYytKLFcwQnFkUWpZLEVBQUVrTyxFQUE4QztJQTVlekQsU0E4ZkMyUCxrQkFBa0JyYyxHQUFJLGNBQUpBLGdCQUFtQjtJQTlmdEMsU0ErZkNzYyxrQkFBa0J0YyxHQUFJLGNBQUpBLGdCQUFvQjtJQS9mdkMsU0FnZ0JDdWMsa0JBQWtCdmMsR0FBSSxjQUFKQSxnQkFBb0I7SUFoZ0J2QyxTQWlnQkN3YyxrQkFBa0J4YztNQUFJLFNBQUpBLFlBQUksb0JBQUpBLE9BREksV0FDb0I7SUFqZ0IzQyxTQWtnQkN5YyxrQkFBa0J6YyxHQUFJLGNBQUpBLGdCQUFrQjtJQWxnQnJDLFNBd2dCQzBjLGNBQWNDLEdBQUdDLEdBQUdDO01BQy9CLFFBRHlCRixrQkFBR0MsZ0JBQUdDLE9BR2Y7SUEzZ0JOLFNBNmdCQ0MsY0FBY0gsR0FBR0MsR0FBR0MsR0FBR0U7TUFDbEMsUUFEeUJKLGlCQUFHQyxrQkFBR0MsZ0JBQUdFLE9BSWxCO0lBamhCTix5QkFtaEJRL2MsRUFBRWhHO01BQ1gsc0JBRFNnRyxFQUFFaEcsR0FDWCx5QkFEU2dHO01BQ1QsVUFoQmdCMmM7Ozs7OztjQXNDckIsSUFBSXBjLElBdkJZdkc7Y0F1QmhCLEdBcEJBK0UsTUFvQkl3QixJQUE2QjtjQUFqQyxJQUNJcWMsR0FBSyxzQkF4Qks1YyxFQXVCVk87Y0FDbUIscUJBQW5CcWMsSUFBNkM7Y0FEakQsSUFFSWhCLElBRkFyYjtjQUVKLEdBdEJBeEIsTUFzQkk2YyxJQUE2QjtjQUZqQyxJQUdJaUIsR0FBSyxzQkExQks3YyxFQXlCVjRiO2NBQ21CLHlCQUFuQmlCO3VCQUE2Qzt1QkFDdkMsd0JBMUNXRixHQXVDakJDLEdBRUFDOztjQUdKLElBQUlHLElBN0JZaGpCO2NBNkJoQixHQTFCQStFLE1BMEJJaWUsSUFBNkI7Y0FBakMsSUFDSUMsS0FBSyxzQkE5QktqZCxFQTZCVmdkO2NBQ21CLHFCQUFuQkMsTUFBNkM7Y0FEakQsSUFFSUMsSUFGQUY7Y0FFSixHQTVCQWplLE1BNEJJbWUsSUFBNkI7Y0FGakMsSUFHSUMsS0FBSyxzQkFoQ0tuZCxFQStCVmtkO2NBQ21CLHFCQUFuQkMsTUFBNkM7Y0FIakQsSUFJSUMsSUFGQUY7Y0FFSixHQTlCQW5lLE1BOEJJcWUsSUFBNkI7Y0FKakMsSUFLSUwsR0FBSyxzQkFsQ0svYyxFQWlDVm9kO2NBQ21CLHlCQUFuQkw7dUJBQTZDO3VCQUN2Qyx3QkFsRFdKLEdBNkNqQk0sS0FFQUUsS0FFQUo7O2NBV0osSUFBSU0sS0E3Q1lyakI7Y0E2Q2hCLEdBMUNBK0UsTUEwQ0lzZSxLQUE2QjtjQUFqQyxJQUNJQyxLQUFLLHNCQTlDS3RkLEVBNkNWcWQ7Y0FDbUIscUJBQW5CQyxNQUE2QztjQURqRCxJQUVJQyxLQUZBRjtjQUVKLEdBNUNBdGUsTUE0Q0l3ZSxLQUE2QjtjQUZqQyxJQUdJQyxLQUFLLHNCQWhES3hkLEVBK0NWdWQ7Y0FDbUIscUJBQW5CQyxNQUE2QztjQUhqRCxJQUlJQyxLQUZBRjtjQUVKLEdBOUNBeGUsTUE4Q0kwZSxLQUE2QjtjQUpqQyxJQUtJQyxLQUFLLHNCQWxESzFkLEVBaURWeWQ7Y0FDbUIseUJBQW5CQzt1QkFBNkM7dUJBQ3ZDLHdCQWxFV2YsR0E2RGpCVyxLQUVBRSxLQUVBRTs7OztjQWJKLElBQUlDLElBckNZM2pCO2NBcUNoQixHQWxDQStFLE1Ba0NJNGUsSUFBNkI7Y0FBakMsSUFDSUMsS0FBSyxzQkF0Q0s1ZCxFQXFDVjJkO2NBQ21CLHFCQUFuQkMsTUFBNkM7Y0FEakQsSUFFSUMsSUFGQUY7Y0FFSixHQXBDQTVlLE1Bb0NJOGUsSUFBNkI7Y0FGakMsSUFHSUMsS0FBSyxzQkF4Q0s5ZCxFQXVDVjZkO2NBQ21CLHFCQUFuQkMsTUFBNkM7Y0FIakQsSUFJSUMsSUFGQUY7Y0FFSixHQXRDQTllLE1Bc0NJZ2YsSUFBNkI7Y0FKakMsSUFLSUMsS0FBSyxzQkExQ0toZSxFQXlDVitkO2NBQ21CLHlCQUFuQkM7dUJBQTZDO3VCQUN2Qyx3QkExRFdyQixHQXFEakJpQixLQUVBRSxLQUVBRTs7dUJBekRpQnJCO1lBMEJyQixJQUFJc0IsS0FYWWprQjtZQVdoQixHQVJBK0UsTUFRSWtmLEtBQTZCO1lBQWpDLElBQ0lDLEtBQUssc0JBWktsZSxFQVdWaWU7WUFDbUIscUJBQW5CQyxNQUE2QztZQURqRCxJQUVJQyxLQUZBRjtZQUVKLEdBVkFsZixNQVVJb2YsS0FBNkI7WUFGakMsSUFHSUMsS0FBSyxzQkFkS3BlLEVBYVZtZTtZQUNtQix5QkFBbkJDO3FCQUE2QztxQkFDdkMsd0JBOUJXekIsR0EyQmpCdUIsS0FFQUU7OztVQUdKLElBQUlDLElBakJZcmtCO1VBaUJoQixHQWRBK0UsTUFjSXNmLElBQTZCO1VBQWpDLElBQ0lDLEtBQUssc0JBbEJLdGUsRUFpQlZxZTtVQUNtQixxQkFBbkJDLE1BQTZDO1VBRGpELElBRUlDLElBRkFGO1VBRUosR0FoQkF0ZixNQWdCSXdmLElBQTZCO1VBRmpDLElBR0lDLEtBQUssc0JBcEJLeGUsRUFtQlZ1ZTtVQUNtQix5QkFBbkJDO21CQUE2QzttQkFDdkMsd0JBcENXN0IsR0FpQ2pCMkIsS0FFQUU7O3FCQW5DaUI3QixJQW9CSCxpQkFwQkdBOztVQXNCckIsSUFBSThCLEtBUFl6a0I7VUFPaEIsR0FKQStFLE1BSUkwZixLQUE2QjtVQUFqQyxJQXRCd0JDLEtBdUJmLHNCQVJLMWUsRUFPVnllO1VBQ21CLHlCQXZCQ0M7bUJBdUJ5QjttQkEvQzFDdEMsV0F3QmNPLGdCQUFHK0I7TUFtRXJCLHFCQUFhO0lBdmtCVix5QkF5a0JRMWUsRUFBRWhHLEVBSWxCMFM7TUFIRixTQUFJaVM7UTNCL25CUDtNMkIrbkJHLElBQ0k1ZixJQURKLHFCQURrQmlCO2NBSWhCME07UUFDTyxTQURQQTtVQUlPLFVBSlBBO1lBVU8sV0FWUEE7Y0FpQk8sYUFqQlBBLEVBeUJLO2NBUEgsSUFBSWtTLEtBdEJZNWtCO2NBc0JoQixPQXBCQStFLE1Bb0JJNmY7O3dCQUVILGVBeEJhNWUsRUFBRWhHLFFBSWxCMFM7d0JBcUJHLElBekJhMU0sRUFBRWhHLGlCQUlsQjBTO3dCQXNCRyxJQTFCYTFNLEVBQUVoRyxpQkFJbEIwUzt3QkF1QkcsSUEzQmExTSxFQXNCVjRlLFdBbEJObFM7O1lBV0UsSUFBSW1TLE9BZlk3a0I7WUFlaEIsT0FiQStFLE1BYUk4Zjs7c0JBRUgsZUFqQmE3ZSxFQUFFaEcsUUFJbEIwUztzQkFjRyxJQWxCYTFNLEVBQUVoRyxpQkFJbEIwUztzQkFlRyxJQW5CYTFNLEVBZVY2ZSxhQVhOblM7O1VBS0UsSUFBSW9TLE9BVFk5a0I7VUFTaEIsT0FQQStFLE1BT0krZjs7b0JBRUgsZUFYYTllLEVBQUVoRyxRQUlsQjBTO29CQVFHLElBWmExTSxFQVNWOGUsYUFMTnBTOztRQUVFLGVBTmMxTSxFQUFFaEcsRUFJbEIwUztRQUVFO01BRmMsNEJBeUJDO0lBdG1CVCx3QkF5bUJPMU07TUFBakIsNkJBQWlCQSxXQUFFaEc7TUFDakI7V0FEVytFLE1BQU0vRSxFQUNEO1FBRU0sZ0NBSFBnRyxFQUFFaEc7UUFHSzs7Ozs7O2dCQXVCbEIsSUFBSTRrQixLQTFCUzVrQjtnQkE2QlY7O21CQTdCSStFLE1BMEJINmY7OztrQkFFRCxrQkFBa0Isc0JBNUJWNWUsRUFBRWhHOzs7a0JBNkJWLGtCQUFrQixzQkE3QlZnRyxFQTBCUDRlO2tCQUtDLFFBTERBLGFBMUJTNWtCO2dCQThCUjs7Z0JBR0wsSUFBSThrQixPQWpDUzlrQjtnQkFxQ1Y7O21CQXJDSStFLE1BaUNIK2Y7OztrQkFFRCxrQkFBa0Isc0JBbkNWOWUsRUFBRWhHOzs7a0JBb0NWLGtCQUFrQixzQkFwQ1ZnRyxFQUFFaEc7OztrQkFxQ1Ysa0JBQWtCLHNCQXJDVmdHLEVBaUNQOGU7a0JBTUMsUUFOREEsZUFqQ1M5a0I7Z0JBc0NSOztnQkFXTCxJQUFJK2tCLE9BakRTL2tCO2dCQXFEVjs7bUJBckRJK0UsTUFpREhnZ0I7OztrQkFFRCxrQkFBa0Isc0JBbkRWL2UsRUFBRWhHOzs7a0JBb0RWLGtCQUFrQixzQkFwRFZnRyxFQUFFaEc7OztrQkFxRFYsa0JBQWtCLHNCQXJEVmdHLEVBaURQK2U7a0JBTUMsUUFOREEsZUFqRFMva0I7Z0JBc0RSOzs7O2dCQWJMLElBQUlnbEIsT0F6Q1NobEI7Z0JBNkNWOzttQkE3Q0krRSxNQXlDSGlnQjs7O2tCQUVELGtCQUFrQixzQkEzQ1ZoZixFQUFFaEc7OztrQkE0Q1Ysa0JBQWtCLHNCQTVDVmdHLEVBQUVoRzs7O2tCQTZDVixrQkFBa0Isc0JBN0NWZ0csRUF5Q1BnZjtrQkFNQyxRQU5EQSxlQXpDU2hsQjtnQkE4Q1I7OztjQWxDTCxJQUFJaWxCLE9BWlNqbEI7Y0FlVjs7aUJBZkkrRSxNQVlIa2dCOzs7Z0JBRUQsa0JBQWtCLHNCQWRWamYsRUFBRWhHOzs7Z0JBZVYsa0JBQWtCLHNCQWZWZ0csRUFZUGlmO2dCQUtDLFFBTERBLGVBWlNqbEI7Y0FnQlI7OztZQUdMLElBQUk2a0IsT0FuQlM3a0I7WUFzQlY7O2VBdEJJK0UsTUFtQkg4Zjs7O2NBRUQsa0JBQWtCLHNCQXJCVjdlLEVBQUVoRzs7O2NBc0JWLGtCQUFrQixzQkF0QlZnRyxFQW1CUDZlO2NBS0MsUUFMREEsZUFuQlM3a0I7WUF1QlI7OytCQW5CYSxRQUpMQTs7WUFNYixJQUFJa2xCLE9BTlNsbEI7WUFRVjs7ZUFSSStFLE1BTUhtZ0I7OztjQUVELGtCQUFrQixzQkFSVmxmLEVBTVBrZjtjQUlDLFFBSkRBLGVBTlNsbEI7WUFTUjtRQStDRixTQUVjO0lBbnFCYiw0QkF1cUJXZ0csRUFBRWhHO01BQ3ZCLElBQ0krRSxJQURKLHFCQURxQmlCO2NBQUVoRyxRQUVuQitFLE1BRm1CL0U7UUFJdkIsR0FKdUJBLE1BRW5CK0UsSUFFWTtRQUNWLElBR0pvZ0IsR0FISSxNQUxlbmYsRUFBRWhHO29CQVFyQm1sQjtVQURPLFdBQ1BBLEdBRHFCO1VBRW5CLElBQUlQLEtBVGU1a0I7VUFTbkIsR0FQQStFLE1BT0k2ZixLQUNlLG9CQVJuQjdmLE1BRm1CL0U7VUFTbkIsSUFHRTBTLEVBREksTUFYVzFNLEVBQUVoRztzQkFZakIwUztZQUVFLElBQUlDLE1BTlZ3UyxtQkFJSXpTO1lBRUUsaUJBQUlDO1VBRjZCO1FBTkosaUJBRW5Dd1M7TUFMdUIsMkNBWU47SUF0ckJULDRCQXdyQlduZixFQUFFaEcsRUFLckIwUztNQUpGLElBQ0kzTixJQURKLHFCQURxQmlCO2NBQUVoRyxRQUVuQitFLE1BRm1CL0U7Z0JBS3JCMFM7VUFDTyxXQURQQTtZQUlPLGFBSlBBLEVBV0s7WUFOSCxJQUFJa1MsS0FWZTVrQjtZQVVuQixHQVJBK0UsTUFRSTZmLEtBQ2U7WUFEbkI7YUFFQSxJQVBGbFM7YUFPRSxXQUFJQzthQUFKLFdBQUlBO1lBR0osTUFmaUIzTSxFQUFFaEcsRUFhZm1sQjtZQUVRLE1BZktuZixFQUFFaEcsVUFjZm9sQjtZQUNRO1VBUlosSUFBSVAsT0FQZTdrQjtVQU9uQixPQUxBK0UsTUFLSThmLFVBQ3VCLE1BUlY3ZSxFQUFFaEcsRUFLckIwUztRQUFnQjtNQUZPLDZDQWFOO0lBeHNCVCwyQkEyc0JPMU07TUFBakIsNkJBQWlCQSxXQUFFaEc7TUFDakI7V0FEVytFLE1BQU0vRSxFQUVEO1FBQ2hCLEdBSGlCQSxNQUFOK0UsSUFHSztRQUNWLElBRUoyTixFQUZJLE1BSlMxTSxFQUFFaEc7b0JBTWYwUztVQUFPLFdBQVBBLEVBQXFCO1VBRW5CLElBQUlrUyxLQVJTNWtCO1VBUWIsR0FSTytFLE1BUUg2ZixLQUNlO1VBRG5CLElBR0VqUyxJQURJLE1BVkszTSxFQUFFaEc7c0JBV1gyUztZQUNPLFFBWkkzUztVQVd3QjtRQVBuQyxJQUMrQixJQUxwQkE7aUJBY0k7SUF6dEJiLDRCQTZ0QldnRyxFQUFFaEc7TUFDdkIsSUFDSStFLElBREoscUJBRHFCaUI7Y0FBRWhHLFFBRW5CK0UsTUFGbUIvRTtRQUl2QixHQUp1QkEsTUFFbkIrRSxJQUVZO1FBQ1YsSUFHSm9nQixHQUhJLGlCQUxlbmYsRUFBRWhHO29CQVFyQm1sQjtVQURPLFdBQ1BBLEdBRHFCO1VBRW5CLElBQUlQLEtBVGU1a0I7VUFTbkIsR0FQQStFLE1BT0k2ZixLQUNlLG9CQVJuQjdmLE1BRm1CL0U7VUFTbkIsSUFHRTBTLEVBREksaUJBWFcxTSxFQUFFaEc7c0JBWWpCMFM7WUFFRSxJQUFJQyxNQU5Wd1MsbUJBSUl6UztZQUVFLGlCQUFJQztVQUY2QjtRQU5KLGlCQUVuQ3dTO01BTHVCLDZDQVlOO0lBNXVCVCw0QkE4dUJXbmYsRUFBRWhHLEVBS3JCMFM7TUFKRixJQUNJM04sSUFESixxQkFEcUJpQjtjQUFFaEcsUUFFbkIrRSxNQUZtQi9FO2dCQUtyQjBTO1VBQ08sV0FEUEE7WUFJTyxhQUpQQSxFQVdLO1lBTkgsSUFBSWtTLEtBVmU1a0I7WUFVbkIsR0FSQStFLE1BUUk2ZixLQUNlO1lBRG5CO2FBRUEsSUFQRmxTO2FBT0UsV0FBSUM7YUFBSixXQUFJQTtZQUdKLGlCQWZpQjNNLEVBQUVoRyxFQWFmbWxCO1lBRVEsaUJBZktuZixFQUFFaEcsVUFjZm9sQjtZQUNRO1VBUlosSUFBSVAsT0FQZTdrQjtVQU9uQixPQUxBK0UsTUFLSThmLFVBQ3VCLGlCQVJWN2UsRUFBRWhHLEVBS3JCMFM7UUFBZ0I7TUFGTyw2Q0FhTjtJQTl2QlQsMkJBaXdCTzFNO01BQWpCLDZCQUFpQkEsV0FBRWhHO01BQ2pCO1dBRFcrRSxNQUFNL0UsRUFFRDtRQUNoQixHQUhpQkEsTUFBTitFLElBR0s7UUFDVixJQUVKMk4sRUFGSSxpQkFKUzFNLEVBQUVoRztvQkFNZjBTO1VBQU8sV0FBUEEsRUFBcUI7VUFFbkIsSUFBSWtTLEtBUlM1a0I7VUFRYixHQVJPK0UsTUFRSDZmLEtBQ2U7VUFEbkIsSUFHRWpTLElBREksaUJBVkszTSxFQUFFaEc7c0JBV1gyUztZQUNPLFFBWkkzUztVQVd3QjtRQVBuQyxJQUMrQixJQUxwQkE7aUJBY0k7SUEvd0JiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0JFYkh3RSxFQUFFNEMsR0FDVCxtQ0FETzVDLEVBQUU0QyxHQUNRO29CQUNWNUMsRUFBRU4sR0FDVCxtQ0FET00sRUFBRU4sR0FDUTtvQkFFVlE7TUFDUCxpQ0FBTyxxQkFEQUEsSUFDYzttQkFHZkEsRUFBRW9ELElBQUlDO01BQ1osZ0NBQU0scUJBREFyRCxHQUFFb0QsSUFBSUMsS0FDZ0I7c0JBc0JuQmdaLElBRVB6YTtNN0IxRUwsRzZCMEVLQTtRQUFLLGlDQUZFeWEsaUJBRVB6YSxFQUFLOzs7OztjQWxCaUI7ZUFLaEJLO2VBTEs5QixpQ0FPa0JtYztlQVBQLGFBQVhuYyxJQUFpQzs7cUJBS3RDOEI7O3FCQURNOzs7VUFnQjhCLGtEQUYxQ0w7Ozs7O29CQVBNMFk7Z0JBQ04sd0JBTGlCaUM7Z0JBTWpCO2tCQUdPRixNQVRVRSxVQUtqQixnQ0FMNkJEO2dCQU03QjtpRUFONkJBOzt5QkFJdkJoQzs7Y0FETix3QkFIaUJpQyxRQUdqQjt3Q0FIaUJBO01BVVg7b0JBU0QvYyxFQUFFUTtNQUNULCtCQURTQSxXQUNUOzs7UUFBNkI7cUJBRHRCUixFQUNzQix1QkFEcEJRLEVBQ1QxRTtVQUE2QixTQUE3QkE7OztjQUFvRDtxQkFHNUNrRSxFQUFFUTtNQUNWLCtCQURVQSxXQUNWOzs7UUFBNkI7cUJBRHJCUixFQUNSbEUsRUFBNkIsdUJBRG5CMEUsRUFDVjFFO1VBQTZCLFNBQTdCQTs7O2NBQXNEO21CQUVoRGtFLEVBQUVRO01BQ1Isa0NBRE1SLEVBQ0UscUJBREFRLElBQ2M7b0JBQ2ZSLEVBQUVRO01BQ1QsbUNBRE9SLEVBQ0UscUJBREFRLElBQ2M7MEJBQ1ZSLEVBQUVXLEVBQUU0QztNQUNGLG9CQURGdkQsRUFDRSxxQkFEQVcsR0FBRTRDLEVBQ087eUJBQ1p2RCxFQUFFdUQsRUFBRTVDO01BQ0EsbUJBREpYLEVBQUV1RCxFQUNFLHFCQURBNUMsR0FDTztzQkFDZFgsRUFBRVEsR0FDQSxnQkFERlIsRUFDRSxxQkFEQVEsR0FDTzt1QkFDUlIsRUFBRVEsR0FDQSxpQkFERlIsRUFDRSxxQkFEQVEsR0FDTzthQU1qQjJnQjtNQUFXOzs7Ozt5QkFFRDtvQkFFTDNnQjtNQUNKLHFCQURJQSxTQUNRLE9BRFJBO01BRThCOztRQUE3QixXQUFILHVCQUZFQTs7O1FBRThCLGtDQUY5QkE7T0FJRixPQUpFQTtNQUdJLGlDQUFRLHFCQUhaQSxJQUlEO3VCQUdtQkE7TUFBekIsNEJBQXlCQSxHQUFJMUU7TUFDM0I7V0FEeUJ3RSxLQUFFeEUsRUFDWixPQURRMEU7UUFFckIsaUNBRnFCQSxFQUFJMUUsR0FFekI7Ozs7OztTQUVRLHNDQUFXLHFCQUpFMEU7UUFFckIsSUFHTyxJQUxrQjFFO2lCQU9FO2FBR3pCc2xCLFlBQVU1Z0IsRUFBRWlkLElBQUkzaEIsRUFBRW9IO003Qi9IM0IsSTZCK0h5QmI7TUFDdEI7V0FEa0JvYixPQUFJcGIsSUFDTDtRQUNqQiwwQkFGZ0I3QixFQUFNNkIsU0FBRWEsRUFFRyxPQUZMYjtRQUVZLFFBRlpBO2lCQUVxQztxQkFHbkQ3QixFQUFFMEMsR0FBSSxtQkFBTjFDLEVBQU0sc0JBQU5BLEtBQUUwQyxFQUE4QjthQUdsQ21lLGdCQUFjN2dCLEVBQUVpZCxJQUFJM2hCLEVBQUVvSDtNN0J2SS9CLEk2QnVJNkJiO01BQzFCO1dBRHNCb2IsT0FBSXBiLElBQ1Q7UUFDakIsMEJBRm9CN0IsRUFBTTZCLFNBQUVhLEVBRUQsVUFGRGI7UUFFYSxRQUZiQTtpQkFFMEM7eUJBR3hEN0IsRUFBRTBDO01BQUksdUJBQU4xQyxFQUFNLHNCQUFOQSxLQUFFMEMsRUFBa0M7MEJBR25DMUMsRUFBRTFFLEVBQUVvSDtNQUNqQixJQUFJZCxFQUFKLHNCQURhNUI7Y0FBRTFFLFFBQ1hzRyxJQURXdEcsR0FHYixtQkFIVzBFLEVBQ1Q0QixFQURXdEcsRUFBRW9IO01BRU0sb0RBQ0o7OEJBR0YxQyxFQUFFMUUsRUFBRW9IO01BQ3JCLElBQUlkLEVBQUosc0JBRGlCNUI7Y0FBRTFFLFFBQ2ZzRyxJQURldEcsR0FLakIsdUJBTGUwRSxFQUNiNEIsRUFEZXRHLEVBQUVvSDtNQUduQixvREFFcUI7YUFHakJvZSxhQUFXOWdCLEVBQUUxRSxFQUFFb0g7TTdCN0p4QixJNkI2SnNCYjtNQUNuQjtnQkFEbUJBO1VBRW5CLDBCQUZpQjdCLEVBQUU2QixTQUFFYSxFQUVNLE9BRlJiO1VBRWUsUUFGZkE7O1FBQ0wsZ0JBQzBDO3NCQUcvQzdCLEVBQUUwQztNQUFJLG9CQUFOMUMsRUFBTSxzQkFBTkEsV0FBRTBDLEVBQWlDOzJCQUc5QjFDLEVBQUUxRSxFQUFFb0g7TTdCcktyQixTNkJxS21CcEgsOEJBQUYwRSxNQUFFMUU7T0FJZCxvQkFKWTBFLEVBQUUxRSxFQUFFb0g7TUFFaEIsb0RBRWdCO2FBR1pxZSxpQkFBZS9nQixFQUFFMUUsRUFBRW9IO003QjVLNUIsSTZCNEswQmI7TUFDdkI7Z0JBRHVCQTtVQUV2QiwwQkFGcUI3QixFQUFFNkIsU0FBRWEsRUFFRSxVQUZKYjtVQUVnQixRQUZoQkE7O1FBQ1QsU0FDbUQ7MEJBR3BEN0IsRUFBRTBDO01BQUksd0JBQU4xQyxFQUFNLHNCQUFOQSxXQUFFMEMsRUFBcUM7K0JBR2xDMUMsRUFBRTFFLEVBQUVvSDtNN0JwTHpCLFM2Qm9MdUJwSCw4QkFBRjBFLE1BQUUxRTtPQUlsQix3QkFKZ0IwRSxFQUFFMUUsRUFBRW9IO01BRXBCLG9EQUVvQjs2QkFHTjFDLEVBQUUxRSxFQUFFb0g7TUFDcEIsSUFBSWQsRUFBSixzQkFEZ0I1QjtjQUFFMUUsUUFDZHNHLElBRGN0RztPQUtoQjtTQUFXLFlBTEcwRSxFQUNaNEIsRUFEY3RHLEVBQUVvSCxHQUtQOzs7K0JBQTRDOztNQUZ2RCxvREFFNEQ7d0JBR25EMUMsRUFBRTBDLEdBQUksdUJBQU4xQyxJQUFFMEMsRUFBdUI7OEJBR25CMUMsRUFBRTFFLEVBQUVvSDtNN0J0TXhCLFE2QnNNc0JwSCw4QkFBRjBFLE1BQUUxRTtPQUlqQjtTQUFXLGFBSkkwRSxFQUFFMUUsRUFBRW9ILEdBSVI7OzsrQkFBMkM7O01BRnRELG9EQUUyRDsrQkFFM0MxQztNQUNsQiw4Q0FBa0IscUJBREFBLElBQ2M7K0JBQ2RBO01BQ2xCLDhDQUFrQixxQkFEQUEsSUFDYztnQ0FDYkE7TUFDbkIsNkNBQW1CLHFCQURBQSxJQUNjO2tDQUNaQTtNQUNyQiwrQ0FBcUIscUJBREFBLElBQ2M7MkJBR3BCMGMsT0FBTzFjO01BQ3RCO21DQURzQkE7T0FDdEIsOEJBRGUwYztPQUNmLEtBQ0lFLFdBREFEO01BQUo7WUFFWXJoQjtRQUNWO2FBRFVBLE1BRFJzaEIsUUFFa0I7VUFDZiwwQkFMZTVjLEVBR1YxRSxPQUVMLHVCQUxRb2hCLE9BR0hwaEI7V0FFeUM7VUFDOUMsUUFIS0E7O01BTlosV0FVNEI7eUJBR2Z1aEIsT0FBTzdjO01BQ3BCO21DQURvQkE7T0FDcEIsOEJBRGE2YztPQUNiLEtBQUlGLFFBQ0FHO09BREosVUFFSUM7TUFGSjtZQUdZemhCO1FBQ1Y7YUFEVUEsTUFGUndoQixRQUdrQjtVQUNmO21DQU5hOWMsRUFHaEIrYyxPQUNRemhCOztZQUVMLHVCQU5NdWhCLE9BSUR2aEI7V0FFa0Q7VUFDdkQsUUFIS0E7O01BVlYsV0FjbUI7NkJBR0wrZ0IsSUFBSXJjO01BQ3BCOztrQ0FEb0JBO09BQ3BCLDJCQURvQkE7TUFDcEI7WUFFQTFFO1FBQ0U7b0NBSmtCMEUsRUFHcEIxRSxPQUhnQitnQjtZQUllLFNBSDNCMWM7WUFJSyxnQkFMV0ssRUFHcEIxRSxXQURJc1UsT0FDSnRVO1lBRVMsT0FGVEE7Ozs7TUFGQSxTQUFJcUU7TUFRSixnQkFUb0JLLElBRWhCNFAsV0FPWTt5QkFJSjVQO01BQ1osd0NBQVkscUJBREFBLElBQ2M7eUJBQ2RBO01BQ1osd0NBQVkscUJBREFBLElBQ2M7MEJBQ2JBO01BQ2IsdUNBQWEscUJBREFBLElBQ2M7NEJBQ1pBO01BQ2YseUNBQWUscUJBREFBLElBQ2M7dUJBSWxCRyxFQUFPQyxHQUFRLDJCQUFmRCxFQUFPQyxFQUEwQjtzQkFLbkNKLEdBQUkscUNBQUpBLEdBQXFCO3VCQUVwQkEsR0FBSSxvQ0FBSkEsR0FBc0I7c0JBRXZCZ2hCLEdBQUkscUNBQUpBLEdBQXFCOytCQUlaaGhCLEVBQUUxRTtNQUFzQiw0Q0FBeEIwRSxHQUFFMUUsRUFBK0I7OEJBQ2xDMEU7TUFBcUIsMkNBQXJCQSxHQUE0QjtrQ0FFeEJBLEVBQUUxRTtNQUF5QiwrQ0FBM0IwRSxHQUFFMUUsRUFBa0M7aUNBQ3JDMEU7TUFBd0IsOENBQXhCQSxHQUErQjtrQ0FFOUJBLEVBQUUxRTtNQUF5QiwrQ0FBM0IwRSxHQUFFMUUsRUFBa0M7aUNBQ3JDMEU7TUFBd0IsOENBQXhCQSxHQUErQjt3QkFTeENBLEVBQUUxRSxHQUFlLHFDQUFqQjBFLEdBQUUxRSxFQUF3Qjs2QkFDckIwRSxFQUFFMUU7TUFBb0IsNkNBQXRCMEUsR0FBRTFFLEVBQTZCOzZCQUMvQjBFLEVBQUUxRTtNQUFvQiwwQ0FBdEIwRSxHQUFFMUUsRUFBNkI7NEJBQ2hDMEUsRUFBRTFFO01BQW1CLHlDQUFyQjBFLEdBQUUxRSxFQUE0Qjs0QkFDOUIwRSxFQUFFMUU7TUFBbUIseUNBQXJCMEUsR0FBRTFFLEVBQTRCOzRCQUM5QjBFLEVBQUUxRTtNQUFtQix5Q0FBckIwRSxHQUFFMUUsRUFBNEI7NEJBQzlCMEUsRUFBRTFFO01BQW1CLDZDQUFyQjBFLEdBQUUxRSxFQUE0Qjs0QkFDOUIwRSxFQUFFMUU7TUFBbUIseUNBQXJCMEUsR0FBRTFFLEVBQTRCOzRCQUM5QjBFLEVBQUUxRTtNQUFtQiw2Q0FBckIwRSxHQUFFMUUsRUFBNEI7NEJBQzlCMEUsRUFBRTFFO01BQW1CLHlDQUFyQjBFLEdBQUUxRSxFQUE0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2FDdlIzQzJsQixxQkFBYyxRQUFJO2FBQ2xCQyx1QkFBZ0IsUUFBQzthQUNqQkMsbUJBQWUsWUFBSTt1QkFGbkJGLFNBQ0FDLFdBQ0FDOzthQ1lBQyxVQUFVQyxLQUFLamUsSUFBSUMsSUFBSTNELEVBQUU0aEI7TS9CaEM5Qjs7O1ErQmdDb0JsZTs7OztRQUFJQzs7OytCQUFUZ2UsUUFBU2hlLFdBQUpEO09BR1osMkNBSE9pZSxLQUFLamUsSUFBSUMsSUFBSTNELEVBQUU0aEI7TUFFdEIsa0RBQ3FDO1FBWXhDQzthQUNBQyxVQUFVSCxLQUFLamU7TS9CaERwQixRK0JnRG9CQSxnQ0FBTGllLGtCQUFLamU7T0FHWiw4QkFIT2llLEtBQUtqZTtNQUVaLHlDQUN5QjthQUM1QnFlLFdBQVdKLEtBQUtqZSxLQUFvQixzQkFBekJpZSxLQUFLamUsUUFBc0M7YUFFdERzZSxXQUFXTCxLQUFLamU7TS9CdERyQixRK0JzRHFCQSxnQ0FBTGllLGtCQUFLamU7UUFJTixJQUFOQyxJQUFNLHVCQUpDZ2UsS0FBS2plO1FBSU4sNkJBSkNpZSxjQUlQaGUsZ0JBSllEO2lCQU1YO2lCQUNBLG9DQVBNaWUsS0FBS2plO01BRWIsMENBTUY7YUFFRHVlLFlBQVlOLEtBQUtqZTtNQUdSLHVDQUhHaWUsTUFBS2plLElBR3lCOzs7OztPQW5DMUNnZTs7T0FzQkFNO09BVUFDO09BakJBSjtPQUNBQztPQUlBQzs7SUNoQmE7b0JBWVI3ZixFQUFFcEM7TUFDVCxTQURPb0MsRUFDTztNQUNkLFFBRk9BO1FBTUksdUJBTkpBLEVBTWEsV0FOWHBDLE1BTUUsS0FOSm9DLFVBTUk7O2NBQ1Z0RztVQUNFO29CQURGQSxLQUNtQixXQVJYa0UsRUFPUmxFO1lBQ0UsU0FERkE7OztRQUdBLE9BSkl1SjtNQUpTLGtDQVFWO0lBdEJXLHVCQXdCRCtjLEdBQUdDLEdBQUdoUztNQUNWLHVCQURJK1IsUUFDSixLQURJQSxXQUNKOztZQUNWemhCO1FBQ0U7VUFBaUIsUUFEbkJBLEtBQ21CLGVBSEYwaEIsR0FBR2hTO1VBR0QsU0FEbkIxUDs7O01BR0EsT0FKSTBFLEdBSUQ7SUE3QlksZ0JBaUNSOUI7TUFDUCxJQUFJbkIsRUFER21CLGFBQ1AsYUFBSW5CLE1BQXdDLGVBRHJDbUIsSUFDSG5CLEVBQXdEO0lBbEM3QyxrQkFvQ051WCxHQUFHRDtNQUNaLElBQUloWSxHQURLaVk7TUFDVCxhQUFJalk7ZUFDVyxPQUZIZ1k7O2lCQUdlLGVBSGxCQyxLQUNMalk7aUJBR0MsMEJBSklpWSxHQUFHRCxHQUlVO0lBeENQLGVBMENUblcsRUFBRUssSUFBSUM7TWhDOUVmLFFnQzhFV0QsWUFBSUMsV0FBTk4sZUFBTU0sV0FBSkQ7T0FHSCxzQkFIQ0wsRUFBRUssSUFBSUM7TUFFUCxpQ0FDb0I7SUE3Q1YsZ0JBK0NSTixFQUFFSyxJQUFJQyxJQUFJM0Q7TWhDbkZwQixRZ0NtRlkwRCxZQUFJQyxXQUFOTixlQUFNTSxXQUFKRDtPQUdKLCtCQUhFTCxFQUFFSyxJQUFJQyxJQUFJM0Q7TUFFWixrQ0FDdUI7SUFsRGIsZ0JBb0RSeVosR0FBR2dELEtBQUtqRCxHQUFHa0QsS0FBSy9ZO01oQ3hGMUI7OztRZ0N3RjBCQTs7OztRQUFiOFk7OztVQUFIaEQsZ0JBQWdCOVYsV0FBYjhZOzs7O1FBQVFDOzs7VUFBSGxELGdCQUFRN1YsV0FBTCtZO09BSWIsK0JBSkVqRCxHQUFHZ0QsS0FBS2pELEdBQUdrRCxLQUFLL1k7TUFHbEIsa0NBQytCO0lBeERyQixnQkEwRFI3RCxFQUFFdUQ7TUFDVCxTQURTQSxxQkFDVDs7O1FBQTZCO3FCQUR0QnZELEVBQUV1RCxNQUNUekg7VUFBNkIsU0FBN0JBOzs7Y0FBbUQ7SUEzRHBDLGlCQTZEUGtFLEVBQUV1RCxFQUFFekI7TUFDWixHQURVeUIsaUJBQUV6QjtPQUVWO01BRUEsU0FKUXlCLHFCQUlSOzs7UUFBNkI7cUJBSnZCdkQsRUFBRXVELE1BSVJ6SCxHQUpVZ0csTUFJVmhHO1VBQTZCLFNBQTdCQTs7O2NBQXFFO0lBakV4RCxlQW1FVGtFLEVBQUV1RDtNQUNSLElBQUluQixFQURJbUI7TUFDUixTQUFJbkIsRUFDVTtNQURkLElBRVUsaUJBRk5BLEVBRWUsV0FIYnBDLEVBQUV1RCxPQUdFLEtBRk5uQixVQUVNOztZQUNSdEc7UUFDRTtnQkFERkEsS0FDaUIsV0FMYmtFLEVBQUV1RCxNQUlOekg7VUFDRSxTQURGQTs7O01BR0EsT0FKSXFFLENBS0g7SUEzRVksZ0JBNkVSSCxFQUFFdUQsRUFBRXpCO01BQ1gsT0FEU3lCLGFBQ1QsR0FEV3pCO01BQ1gsR0FBSXdnQixPQUNBQyxHQUVGO01BQ0csU0FKREQsR0FLYTtNQUxqQixJQU1ZLGlCQU5SQSxHQU1rQixXQVBmdGlCLEVBQUV1RCxLQUFFekIsT0FPQyxLQU5Sd2dCLFdBTVE7O1lBQ1J4bUI7UUFDRTtnQkFERkEsS0FDaUIsV0FUZGtFLEVBQUV1RCxNQVFMekgsR0FST2dHLE1BUVBoRztVQUNFLFNBREZBOzs7TUFHQSxPQUpJcUUsQ0FNTDtJQTFGWSxpQkE0RlBILEVBQUV1RDtNQUNWLFNBRFVBLHFCQUNWOzs7UUFBNkI7cUJBRHJCdkQsRUFDUmxFLEVBRFV5SCxNQUNWekg7VUFBNkIsU0FBN0JBOzs7Y0FBc0Q7SUE3RnZDLGdCQStGUmtFLEVBQUV1RDtNQUNULElBQUluQixFQURLbUI7TUFDVCxTQUFJbkIsRUFDVTtNQURkLElBRVUsaUJBRk5BLEVBRWUsV0FIWnBDLElBQUV1RCxPQUdDLEtBRk5uQixVQUVNOztZQUNSdEc7UUFDRTtnQkFERkEsS0FDaUIsV0FMWmtFLEVBSUxsRSxFQUpPeUgsTUFJUHpIO1VBQ0UsU0FERkE7OztNQUdBLE9BSklxRSxDQUtIO0lBdkdZLG1CQXlHTG9EO01BQ1YsUUFEVUEscUJBQ0t6SCxNQUFFdUo7TUFDZjtnQkFEYXZKO1VBQzBCLGFBRi9CeUgsTUFDS3pILEdBQUV1SixLQUN3QixJQUQxQnZKLGdCQUFFdUo7UUFDRCxPQURDQSxJQUVPO0lBNUdULFNBK0dUb2Q7Ozs7VUFFSTs7OzttQkFBTEM7O1FBREc7SUFoSE8saUJBcUhidGdCO01BRlUsR0FFVkE7UUFDa0M7U0FEOUJLLEdBQUpMOztTQUNrQyxpQkFBakIsY0FEakJBOztlQUFJSzs7O2dCQUlNcVksY0FBSjZIO1lBQVUsV0FBVkE7WUFBVSw4QkFBTjdIOztVQURFLE9BRk52WDtNQUZBLFVBTUs7SUExSEUscUJBNEhIdkQsRUFBRVcsRUFBRTRDO01BQ2hCLFNBRGM1QyxHQUNkLEtBRGdCNEMscUJBQ2hCOztZQUNBekg7UUFDRTtVQUFLLGtCQUhLa0UsRUFDUkcsS0FEWW9ELE1BRWhCekg7VUFDTyxTQURQQTs7O01BR0EsT0FKSXFFLElBSUY7SUFqSWEseUJBbUlDSCxFQUFFb08sSUFBSXdVO01BQ3RCLElBQUkvZSxJQURrQitlO01BQ3RCLFNBQUkvZSxJQUNZLFVBRkV1SztNQUNsQjtPQUVpQixpQkFIRHBPLEVBQUVvTyxJQUFJd1U7T0FHTDs7T0FDSSw0QkFIakIvZSxJQUVPZ2Y7T0FDVSxTQURmeFU7T0FDZSxLQUhqQnhLO09BR2lCOztZQUVuQi9IO1FBQ0U7VUFBZ0I7OEJBUEprRSxFQUtWc08sU0FMZ0JzVSxnQkFNcEI5bUI7V0FDa0I7O3FCQUFaa25CO1VBRUosaUJBSEZsbkIsS0FDWWluQjtVQUFNLFNBRGxCam5COzs7TUFLQSxVQU5Jd1MsU0FEQXdVLGFBUUg7SUEvSVksc0JBaUpGOWlCLEVBQUV1RCxFQUFFNUM7TUFDakIsU0FEaUJBLEdBQ2pCLEtBRGU0QztNQUNmO1lBQ0F6SDtRQUNFO1VBQUssa0JBSE1rRSxFQUFFdUQsTUFFZnpILEdBRElxRTtVQUVHLFNBRFByRTs7O01BR0EsT0FKSXFFLElBSUY7SUF0SmEsa0JBd0pOaVAsRUFBRTdMO01BQ1gsTUFEV0EsYUFFRXpIO01BQ1g7V0FEV0EsTUFEVHdFLEVBRVk7UUFDTixjQUpEOE8sRUFBRTdMLE1BRUV6SCxJQUVxQjtRQUMzQixRQUhNQTtpQkFJUDtJQTlKUyxtQkFnS0xzVCxFQUFFN0w7TUFDWixNQURZQSxhQUVDekg7TUFDWDtXQURXQSxNQURUd0UsRUFFWTtRQUNOLGNBSkE4TyxFQUFFN0wsTUFFQ3pILEtBRXFCLFFBRnJCQTtRQUdOLFNBQ0Q7SUF0S1Msb0JBd0tKc1QsRUFBRTFOLEdBQUdDO01BQ2hCLE9BRGFELGNBQ2IsR0FEZ0JDO01BQ2hCLEdBQUlnWixPQUNBQyxHQUNhO01BRmpCLElBR2tCOWU7TUFDaEI7V0FEZ0JBLE1BSGQ2ZSxHQUlhO1FBQ1AsY0FOQ3ZMLEVBQUUxTixPQUlLNUYsR0FKRjZGLE9BSUU3RjtVQUVtQyxRQUZuQ0E7UUFHWCxTQUNEO0lBaExTLG1CQWtMTHNULEVBQUUxTixHQUFHQztNQUNmLE9BRFlELGNBQ1osR0FEZUM7TUFDZixHQUFJZ1osT0FDQUMsR0FDYTtNQUZqQixJQUdrQjllO01BQ2hCO1dBRGdCQSxNQUhkNmUsR0FJYTtRQUNQLGNBTkF2TCxFQUFFMU4sT0FJTTVGLEdBSkg2RixPQUlHN0YsSUFFbUM7UUFDOUMsUUFIV0E7aUJBSVo7SUExTFMsZUE0TFQ2RSxFQUFFNEM7TUFDUixNQURRQSxhQUVLekg7TUFDWDtXQURXQSxNQURUd0UsRUFFWTtRQUNrQixzQkFKMUJpRCxNQUVLekgsR0FGUDZFLEdBSXdDO1FBQ3ZDLFFBSE03RTtpQkFJUDtJQWxNUyxnQkFvTVI2RSxFQUFFNEM7TUFDVCxNQURTQSxhQUVJekg7TUFDWDtXQURXQSxNQURUd0UsRUFFWTtRQUNELEdBSlJLLE1BQUU0QyxNQUVJekgsR0FFd0I7UUFDOUIsUUFITUE7aUJBSVA7SUExTVMsb0JBNE1Kc1QsRUFBRTdMO01BQ2IsTUFEYUEsYUFFQXpIO01BQ1g7V0FEV0EsTUFEVHdFLEVBRVk7UUFFSixJQUFKSyxFQUxLNEMsTUFFQXpIO1FBSU4sY0FOSXNULEVBS0h6TyxHQUNRLFVBRFJBO1FBQUksSUFFSCxJQUxJN0U7aUJBT1A7SUFyTlMsb0JBdU5Ka0UsRUFBRXVEO01BQ2IsTUFEYUEsYUFFQXpIO01BQ1g7V0FEV0EsTUFEVHdFLEVBRVk7UUFFTixJQUVKSCxFQUZJLFdBTENILEVBQUV1RCxNQUVBekg7UUFHSCxHQUVKcUUsRUFBZSxPQUFmQTtRQUZJLElBQ0ksSUFKRHJFO2lCQU9QO0lBaE9TLGlCQWtPUDZFO01BQ0wsY0FES0EsT0FDUztNQUNaO2FBRkdBO09BRUg7O1NBRkdBO09BS0UsaUJBREpMLEVBREEyaUI7T0FHSSxpQkFGSjNpQixFQURJbWU7T0FHQSxLQUZKbmU7T0FFSTs7WUFDUnhFO1FBQ0U7c0JBUkk2RSxNQU9ON0UsR0FDRTtVQUNBLE1BRkZBLEtBQ01xbkI7VUFFSixNQUhGcm5CLEtBQ1VvbkI7VUFBUixTQURGcG5COzs7TUFLQSxVQVBJeUgsRUFDQXpCLEVBT0g7SUEvT1ksbUJBaVBMeUIsRUFBRXpCO01BQ1osT0FEVXlCLGFBQ1YsR0FEWXpCO01BQ1osR0FBSXNoQixPQUNBQyxHQUNhO01BQTJCLFNBRnhDRCxHQUdXO01BSGYsSUFLVSxpQkFMTkEsTUFETTdmLEtBQUV6QixPQU1GLEtBTE5zaEIsV0FLTTs7WUFDUnRuQjtRQUNFO1VBQWdCLE1BRGxCQSxRQVBReUgsTUFPUnpILEdBUFVnRyxNQU9WaEc7VUFDa0IsU0FEbEJBOzs7TUFHQSxPQUpJNkUsQ0FLSDtJQTVQWTtrQkErUFJ1UCxJQUFJM007TUFDWCxTQUFJK2YsT0FBT2xoQixFQUFFdEc7UUFDWCxVQURXQSw0QkFDWCxLQUFJeW5CO1FBQUosSUFBSUEsZUFES25oQjtVQUdTLFNBRmRtaEIsWUFHaUIsc0JBTFpoZ0I7VUFLSixjQUxBMk0sSUFLSSxpQkFMQTNNLEVBRUxnZ0I7V0FHMEMsT0FIMUNBO1VBRWM7V0FFaEIsS0FKRUE7V0FJZ0Isc0JBTlhoZ0I7V0FNVyxLQUhoQjVDO1VBR0MsY0FOQXVQLElBTUksaUJBTkEzTTtXQU1vQyxPQUp6Q2dnQjtVQUtGLE9BSkU1aUI7UUFNRixJQVBFNGlCLGVBREtuaEI7VUFReUIsU0FQOUJtaEIsWUFPOEIsc0JBVHpCaGdCO1VBU1Msc0JBVGIyTSxJQVNpQixpQkFUYjNNLEVBRUxnZ0I7V0FRRyxPQVJIQTtRQVNHLEdBVEhBLE1BREtuaEIsRUFVYyxPQVRuQm1oQjtRQVM0QixnQkFWckJ6bkIsRUFVcUM7TUFWbEQsU0FZUTBuQixZQUFZcGhCLEVBQUV0RyxFQUFFa047UWhDaFQzQixJZ0NnVHlCM0c7UUFDcEI7VUFBUSxJQUFKK04sRUFBSSxPQURVaE8sRUFBRUM7VUFFakIsa0JBZkU2TixJQWVFLGlCQWZFM00sRUFjTDZNLFVBRGtCcEg7WUFHWiwwQkFoQkR6RixFQWNMNk07WUFFRixpQkFoQk83TSxFQWFXbEI7WUFHVixJQUhVQSxJQUNoQitOOztVQUlLLGlCQWxCQTdNLEVBYVdsQixnQkFBRTJHO1VBS2IsU0FFTDtNQW5CTixTQXFCSXlhLFFBQVFyaEIsRUFBRXRHLEVBQUVrTjtRQUFJO1VBQUkscUJBQVo1RyxFQUFFdEcsRUFBRWtOOzs7O1lBQTJDLElBQUwzRyxXQUFLLGlCQXRCaERrQixFQXNCMkNsQixnQkFBdEMyRyxFQUEyQztvQkFBUztNQXJCcEUsU0FzQlEwYSxXQUFXdGhCLEVBQUV0RztRaEMxVHhCLElnQzBUd0J1RztRQUNuQjtVQUFRLGVBRFNELEVBQUVDLEtBRVgsc0JBekJDa0IsRUF1QlVtYTtVQUVuQixpQkF6QlNuYSxFQXVCVWxCO1VBQ1gsSUFEV0E7bUJBR0w7TUF6QmhCLFNBMkJJc2hCLE9BQU92aEIsRUFBRXRHO1FBQUk7VUFBSSxvQkFBVnNHLEVBQUV0Rzs7O2dDQUF3QyxJQUFMdUcsV0FBSyxPQUFMQTtvQkFBTTtNQTNCdEQsTUFEV2tCLGFBQ1gsT0FzQ0luQjtNQXRDSjtZQXVDQStkO1FBQW9DO2tCQURoQy9kLEVBQ0orZCxJQUFnRCxpQkF4Q3JDNWMsRUF3Q1g0YztVQUFvQyxTQUFwQ0E7OztNQXZDQSxTQXNDSS9kO01BRUo7OztRQUNFO1VBQVE7Z0NBMUNDbUIsRUF5Q1hsQjtXQUVVLHNCQTNDQ2tCO1VBMkNULGlCQTNDU0EsRUF5Q1hsQjtVQUNVLElBRUUsV0FIWkEsT0Faa0J2RztVQUNoQjtnQkFBSStuQixRQURZL25CO1lBQ2hCLEdBRGdCQSxNQUNaK25CO1lBRUQ7OEJBaENFM1QsSUFnQ0UsaUJBaENFM00sRUE4QkxzZ0Isb0JBRGNEO2FBTVQsaUJBbkNBcmdCLEVBNkJPekgsWUFBRThuQjs7Y0FJUiwwQkFqQ0RyZ0IsRUE4QkxzZ0I7Y0FHRixpQkFqQ090Z0IsRUE2Qk96SDtjQUlkLE9BSEUrbkIsWUFEWS9uQixFQUNaK25CO2NBSXlDLGlCQWxDcEN0Z0IsVUE2QlNxZ0I7WUFDbEIsU0FXRnZoQjs7OztNQXhDQSxhQXNDSUQ7TUFPSjtRQUF1Qix1QkE5Q1ptQixRQThDaUMsc0JBOUNqQ0E7UUE4Q3lCLGlCQTlDekJBO1FBOEM0QyxpQkE5QzVDQSxVQThDUXlGO1FBQUk7OztpQkFBMEM7SUE3U2xELHFCQWlURGtILElBQUkzTTtNQUNsQixTQUFJdWdCLE1BQU1DLFFBQVFDLFFBQVFDLEtBQUtDLFFBQVFDLFFBQVFwSCxJQUFJcUg7UUFDakQ7ZUFEUUwsVUFBUUM7U0FDaEIsTUFENkJFLFVBQVFDO1NBa0JHLHNCQWxCaEJGLEtBQUtDO1NBa0JiLHNCQW5CQTNnQixFQUNSd2dCO1NBRUtVLEdBRkxWO1NBRVF2aUI7U0FBR2tqQixHQUZVUjtTQUVQemlCO1NBQUcyVyxFQUZ3QmdNO1FBRy9DO1VBQUcsa0JBSk9sVSxJQUdJMU8sR0FBTUM7WUFTbEIsaUJBWHlDc2IsSUFFcEIzRSxZQUFIM1c7WUFTbEIsSUFDSWtqQixLQVZXRDtZQVNmLEdBQ0lDLE9BWDBCTDtjQWE1QjttQkFabUJsTTtlQVlMLHNCQWRJNkwsS0FZaEJVO2VBVldELEdBVVhDO2VBVmNsakI7ZUFBRzJXOztZQWNuQixjQWpCVTdVLEVBR0hraEIsR0FGZ0MxSCxJQUVwQjNFLFVBRHJCaU0sUUFDU0k7VUFFVCxpQkFKeUMxSCxJQUVwQjNFLFlBQVQ1VztVQUVaLElBQ0lzakIsS0FIS0w7VUFFVCxHQUNJSyxPQUpKVDtZQU1FO2lCQUxtQmpNO2FBS1gsc0JBUkU3VSxFQU1SdWhCO2FBSEtMLEdBR0xLO2FBSFF0akI7YUFBUzRXOztVQU9uQixjQVRrQjZMLEtBRUxTLEdBRjBCM0gsSUFFcEIzRSxVQURTa00sUUFDZkksUUFnQitDO01BbEJwRSxTQW9CSU8sUUFBUUMsT0FBT25JLElBQUlxSCxPQUFPdmdCO1FBQzVCLFNBRDRCQSxZQUM1Qjs7OztVQUNFOztrQkFGUXFoQixTQUNWcHBCO2FBQ1UsbUJBdkJNeUg7YUF1Qk4sTUFGVzZnQixTQUNyQnRvQjs7aUJBRHFCc29CLFVBR2ZoVTs7Z0JBQ21CLGtCQXpCYkYsSUF5QmlCLGlCQUpaNk0sb0JBRVgvVDtrQkFHRjt3QkFGRW9IO21CQUVlLHNCQUxKMk07bUJBS0ksS0FGZjNNO2tCQUVGLGlCQUxhMk07a0JBS2I7O2NBR0YsU0FMSTNNO2NBS0osaUJBUmUyTSxzQkFFWC9UO2NBTUosU0FQRmxOOzs7O2dCQVFJO01BN0JOLFNBK0JRcXBCLE9BQU9ELE9BQU9uSSxJQUFJcUgsT0FBT3ZnQjtRQUMvQixHQUQrQkEsU0FDVCxlQURUcWhCLE9BQU9uSSxJQUFJcUgsT0FBT3ZnQjtRQUMwQixPQUQxQkEsWUFDMEIsR0FEMUJBLE1BRXpCbkM7UUFFSixPQUpXd2pCLFNBRVB4akIsT0FGY3FiLElBQUlxSCxTQUVsQjFpQixPQUNBQztRQUVKLE9BTFd1akIsT0FoQ0czaEIsRUFnQ0gyaEIsU0FHUHZqQixPQURBRDtRQUdKLGFBTFd3akIsU0FHUHZqQixPQURBRCxHQUZjcWIsSUFBSXFILFNBRWxCMWlCLE9BQ0FDLEdBSGNvYixJQUFJcUgsT0FPckI7TUF0Q0wsSUF3Q0loaUIsRUF6Q2NtQjtNQUNsQixHQXdDSW5CLE9BQ2dCLGlCQTFDRm1CLElBeUNkbkI7TUF4Q0o7T0F5Q3lDLEdBRHJDQTtPQUNxQyxHQURyQ0EsSUFFRVY7T0FFSSxpQkFESkMsR0FDWSxpQkE3Q0E0QjtNQThDaEIsT0FISTdCLEdBRUFvTCxJQURBbkw7TUFHSixTQS9DZ0I0QixFQTRDWjVCLEdBREFEO01BSUosYUFISUMsR0FEQUQsR0FFQW9MLElBREFuTCxHQTVDWTRCLElBaURmO0lBbFdZLGtCQXlXTkE7TUFDVCxTQUFRZ1ksSUFBSXpmO1FBQ1YsR0FEVUEsSUFESHlIO1VBSUcsTUFKSEEsTUFDR3pILEdBR0EsS0FIQUE7VUFJSyxVQURUNkUsaUJoQ2paWCxPZ0M4WVc0YTtRQUtELFFBQU87TUFMZDs0QmhDOVlILE9nQzhZV0EsZUFPSDtJQWpYVSxtQkFtWExoWTtNQUNWLFNBQVFnWSxJQUFJemY7UUFDVixHQURVQSxJQURGeUg7VUFJRSxNQUpGQSxNQUNFekgsR0FHQSxLQUhBQTtVQUlTLGFBSlRBLEVBR0o2RSxrQmhDM1pYLE9nQ3daVzRhO1FBS0QsUUFBTztNQUxkOzRCaEN4WkgsT2dDd1pXQSxlQU9IO0lBM1hVLGtCQXdZTjRFO01BQ1QsV0FBUSxxQkFBbUIvUixJQUFJek4sR0FBSyxVQUFMQSxFQUFKeU4sSUFBZSxPQURqQytSO01BWE8sR0FFZC9kO1FBQ1k7U0FEUkssR0FBSkw7O1NBQ1ksa0JBRFpBO1NBRVUsaUJBREp5QixJQURObkI7U0FFVSxJQURKbUI7O2VBREZwQjs7O2dCQUtNcVksY0FBSjZIO1lBQVUsV0FBVkE7WUFBVSw4QkFBTjdIOztVQURFLE9BRk52WDtNQUhBLFVBWUs7SUExWUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UXBCUmI2aEIsVUFDQUMsU0FDQUM7YUFJQUMsVUFBVzVrQixHQUFZLE9BQVpBLGVBQXVCO2FBQ2xDNmtCLFlBQWE3a0IsR0FBWSxZQUFaQSxXQUF3QjthQUNyQzhrQixPQUFROWtCLEdBQVksT0FBWkEsVUFBa0I7UUFFMUIra0I7YUF5RUFDLFdBQVdobEI7TUFBUSxTQUFSQSxLQUFRLHlCQUFSQTtNQUFRLFlBN0VuQjRrQixVQTZFVzVrQixPQUE4QjthQUt6Q2lsQixPQUFLamxCLEdBQUksNEJBQUpBLEVBckZMSyxTQXFGOEI7YUFDOUI2a0IsT0FBS2xsQixHQUFJLDRCQUFKQSxFQXJGTE0sYUFxRmtDO2FBY2xDNmtCLFNBQU1ubEIsRUFBRUMsR0FBSSxnQ0FBTkQsRUFBRUMsTUFBbUI7YUFFbEJtbEIsTUFBS3BsQixFQUFXQztNQUMzQixNQURnQkQsSUFBV0M7O1FBQ0ssR0FBaEIsbUJBRFdBLFFBQ0ssbUJBRGhCRDtvQkFHUixPQUhRQSxTQUFXQztNQUV0QixPQUZzQkEsU0FBWEQsQ0FHYzthQUVuQnFsQixNQUFLcmxCLEVBQVdDO01BQzNCLE1BRGdCRCxJQUFXQzs7UUFDSyxHQUFoQixtQkFEV0EsUUFDSyxtQkFEaEJEO29CQUdSLE9BSG1CQyxTQUFYRDtNQUVYLE9BRldBLFNBQVdDLENBR0c7YUFFbkJxbEIsUUFBU3RsQixFQUFXQztNQUNoQixHQURLRCxVQUFXQztRQUUxQixNQUZlRCxJQUFXQzs7VUFFTSxHQUFoQixtQkFGVUEsUUFFTSxtQkFGakJEO3NCQUU4QyxVQUZuQ0MsRUFBWEQ7UUFFa0MsVUFGbENBLEVBQVdDO01BQ0YsVUEvRzNCTSxRQWdIc0U7YUFFN0RnbEIsUUFBU3ZsQixFQUFXQztNQUMvQixNQURvQkQsSUFBV0M7O1FBQ0MsR0FBaEIsbUJBRGVBLFFBQ0MsbUJBRFpEO29CQUdaLE9BSHVCQyxPQUFYRCxFQUFXQztNQUUxQixPQUZlRCxPQUFXQyxFQUFYRCxDQUdVO2FBRW5Cd2xCLFFBQVN4bEIsRUFBV0M7TUFDL0IsTUFEb0JELElBQVdDOztRQUNDLEdBQWhCLG1CQURlQSxRQUNDLG1CQURaRDtvQkFHWixPQUhZQSxPQUFXQyxFQUFYRDtNQUVmLE9BRjBCQyxPQUFYRCxFQUFXQyxDQUdEO2FBRW5Cd2xCLFlBQWF6bEIsRUFBV0M7TUFDaEMsR0FEcUJELE9BQ1AsVUFEa0JDO01BRTNCLEdBRjJCQSxPQUViLFVBRkVEO01BR25CLE1BSG1CQSxJQUFXQzs7UUFHRSxHQUFoQixtQkFIY0EsUUFHRSxtQkFIYkQ7b0JBR3lDLFVBSDlCQyxFQUFYRDtNQUc4QixVQUg5QkEsRUFBV0MsRUFHbUM7YUFJcEV5bEIsT0FBSzFsQixHQUFJLDBCQUFKQSxFQUFnQzthQWFuQzJsQixZQUFZL2lCLEVBQUVLLElBQUlDLElBQUkzRDtNQUN4QixVQURnQjBELE1BQUlDO01BQ3BCLGFBRGdCRDtZQUNoQjlILEVBRGdCOEg7UUFDZ0I7Z0JBQWhDOUgsS0FEd0JvRTtVQUNRLFNBQWhDcEU7OztNQWRTLFFBYzRDO2FBS25EeXFCLE1BQU1oakIsRUFBRUssSUFBSUMsSUFBSWdJO01BQ2xCLFNBRFVqSTtNQUNWOzs7aUJBRGNDOzs7OztnQkFBSkQsTUFBSUM7d0JBQU5OLGdCQUFFSyxNQUFJQztNQUVaLHdCQUZnQmdJLFNBRUQ7YUFFZjJhLE9BQUtsbUIsRUFBRUo7TUFDSSxJQUFUd00sT0FBUyx1QkFETnBNO01BRVAsWUFESW9NLFNBREdwTSxFQUFFSjtNQUVULE9BREl3TSxNQUVFO2FBRUorWixPQUFLcmtCLEVBQUVwQztNQUNULFFBRE9vQztRQUdLLCtCQUhMQSxHQUdLLEtBSExBLFVBR0s7O2NBQ1Z0RztVQUNFO29CQURGQSxLQUNtQixXQUxaa0UsRUFJUGxFO1lBQ0UsU0FERkE7OztRQUdBLE9BSkl1SjtNQUZRLHdDQU1UO2FBRUhxaEIsU0FBTy9NLEdBQUdEO01BQ1o7VUFEU0M7T0FDVCxHQURZRDtPQUdDLDhCQUZUaFksS0FDQUM7TUFFSixxQkFKU2dZLEtBR0xqTixTQUZBaEw7TUFJSixxQkFMWWdZLEtBR1JoTixPQUZBaEwsR0FDQUM7TUFHSixPQUZJK0ssTUFHRTthQVVKaWEsU0FBT3ZrQjs7OztVQU5UO1dBSVFLO1dBQU5DO1dBTFcvQixFQUtYK0I7V0FKRixhQURhL0IsSUFDUzs7aUJBSWQ4Qjs7UUFJUix1Q0FDYXNXLElBSEozVyxFQUdNdEc7UUFDYjthQURXaWQ7Z0JBR0grQixLQUhHL0IsT0FHVDRKLEtBSFM1SixPQUlMNk4sS0FESmpFO1lBRUEscUJBRkFBLE9BSkFqVyxPQUNXNVEsRUFJUDhxQjtZQUNKLFFBTFc5cUIsSUFJUDhxQixTQUpLN04sSUFHSCtCLEtBSEtoZjs7VUFFTCxHQUZLQSxpQkFEWDRRO3dDQVVFO2FBRUptYSxNQUFJdGpCLEVBQUVLLElBQUlDO01BQ1osTUFETU4sRUFBRUssSUFBSUM7TUFFQyxJQUFUNkksT0FBUyx1QkFGRDdJO01BR1oscUJBSE1OLEVBQUVLLElBRUo4SSxTQUZRN0k7TUFHWixPQURJNkksTUFFRTthQUVKb2EsT0FBS3ZqQjtNQUNQLE1BRE9BLGFBRVAsOEJBREluQjtNQUVKLHFCQUhPbUIsSUFFSG1KLFNBREF0SztNQUVKLE9BRElzSyxNQUVFO2FBRUpxYSxPQUFLeGpCLEVBQUVLLElBQUlDLElBQUkzRDtNQUNqQixNQURPcUQsRUFBRUssSUFBSUMsMEJBQ2IsbUJBRE9OLEVBQUVLLElBQUlDLElBQUkzRCxFQUVNO2FBRXJCOG1CLE9BQUtDLElBQUlDLEtBQUtuSyxJQUFJb0ssS0FBS3RqQjtNQUN6QixNQURPb2pCLElBQUlDLEtBQWNyakI7TUFFekIsTUFGZ0JrWixJQUFJb0ssS0FBS3RqQjtNQUd6Qiw0QkFIT29qQixJQUFJQyxLQUFLbkssSUFBSW9LLEtBQUt0akIsSUFHUTthQUUvQnVqQixVQUFRN2pCO01BQ1ksY0FEWkEsNEJaNVBmLE9ZNFBlQSxhQUN5QjthQUVqQzhqQixVQUVhamxCO01BRG9CLGtDQUFmLFNBQ0xBLElBQUZ0RyxJQUFFaWQ7TUFDYjtXQURhQTtjQUdOak0sRUFITWlNLE9BR1h1TyxFQUhXdk87VUFHRCxXQUhEamQsS0FHVHdyQjtVQUFVLFFBSER4ckIsZ0JBQUVpZCxJQUdOak07O1FBREMsT0FITkosT0FNSTthQUdONmEsT0FBS3ZuQixFQUFFdUQ7TUFDVCxTQURTQSxxQkFDVDs7O1FBQTZCO3FCQUR0QnZELEVBQUV1RCxNQUNUekg7VUFBNkIsU0FBN0JBOzs7Y0FBb0Q7YUFHbEQwckIsUUFBTXhuQixFQUFFdUQsRUFBRXpCO01BQ1osR0FEVXlCLGlCQUFFekI7T0FFVjtNQUVBLFNBSlF5QixxQkFJUjs7O1FBQTZCO3FCQUp2QnZELEVBQUV1RCxNQUlSekgsR0FKVWdHLE1BSVZoRztVQUE2QixTQUE3QkE7OztjQUFxRTthQUVyRTJyQixNQUFJem5CLEVBQUV1RDtNQUNSLE1BRFFBLGFBRVIseUJBREluQixHQUNKLEtBRElBLFVBQ0o7O1lBQ0F0RztRQUNFO2dCQURGQSxLQUNpQixXQUpYa0UsRUFBRXVELE1BR1J6SDtVQUNFLFNBREZBOzs7TUFHQSxPQUpJcUUsQ0FJSDthQUVDdW5CLE9BQUsxbkIsRUFBRXVELEVBQUV6QjtNQUNYLE9BRFN5QixhQUNULEdBRFd6QjtNQUNYLEdBQUl3Z0IsT0FDQUMsR0FFRjtNQUhGLElBS1UseUJBTE5ELElBS00sS0FMTkEsV0FLTTs7WUFDUnhtQjtRQUNFO2dCQURGQSxLQUNpQixXQVJaa0UsRUFBRXVELE1BT1B6SCxHQVBTZ0csTUFPVGhHO1VBQ0UsU0FERkE7OztNQUdBLE9BSklxRSxDQUtIO2FBR0R3bkIsUUFBTTNuQixFQUFFdUQ7TUFDVixTQURVQSxxQkFDVjs7O1FBQTZCO3FCQURyQnZELEVBQ1JsRSxFQURVeUgsTUFDVnpIO1VBQTZCLFNBQTdCQTs7O2NBQXNEO2FBRXBEOHJCLE9BQUs1bkIsRUFBRXVEO01BQ1QsTUFEU0EsYUFFVCx5QkFESW5CLEdBQ0osS0FESUEsVUFDSjs7WUFDQXRHO1FBQ0U7Z0JBREZBLEtBQ2lCLFdBSlZrRSxFQUdQbEUsRUFIU3lILE1BR1R6SDtVQUNFLFNBREZBOzs7TUFHQSxPQUpJcUUsQ0FJSDthQUdDMG5CLFlBQVU3bkIsRUFBRVcsRUFBRTRDO01BQ2hCLFNBRGM1QyxHQUNkLEtBRGdCNEMscUJBQ2hCOztZQUNBekg7UUFDRTtVQUFLLGtCQUhLa0UsRUFDUkcsS0FEWW9ELE1BRWhCekg7VUFDTyxTQURQQTs7O01BR0EsT0FKSXFFLElBSUY7YUFHQTJuQixhQUFXOW5CLEVBQUV1RCxFQUFFNUM7TUFDakIsU0FEaUJBLEdBQ2pCLEtBRGU0QztNQUNmO1lBQ0F6SDtRQUNFO1VBQUssa0JBSE1rRSxFQUFFdUQsTUFFZnpILEdBRElxRTtVQUVHLFNBRFByRTs7O01BR0EsT0FKSXFFLElBSUY7YUFHQTRuQixTQUFPM1ksRUFBRTdMO01BQ1gsTUFEV0EsYUFFRXpIO01BQ1g7V0FEV0EsTUFEVHdFLEVBRVk7UUFDTixjQUpEOE8sRUFBRTdMLE1BRUV6SCxJQUVxQjtRQUMzQixRQUhNQTtpQkFJUDthQUdKa3NCLFVBQVE1WSxFQUFFN0w7TUFDWixNQURZQSxhQUVDekg7TUFDWDtXQURXQSxNQURUd0UsRUFFWTtRQUNOLGNBSkE4TyxFQUFFN0wsTUFFQ3pILEtBRXFCLFFBRnJCQTtRQUdOLFNBQ0Q7YUFHSm1zQixNQUFJdG5CLEVBQUU0QztNQUNSLE1BRFFBLGFBRUt6SDtNQUNYO1dBRFdBLE1BRFR3RSxFQUVZO1FBQ0UsNEJBSlZpRCxNQUVLekgsR0FGUDZFLEdBSXdDO1FBQ3ZDLFFBSE03RTtpQkFLUDthQUdKb3NCLFNBQVN2bkIsRUFBRTRDO01BQ2IsTUFEYUEsYUFFQXpIO01BQ1g7V0FEV0EsTUFEVHdFLEVBRVk7UUFDRixHQUpISyxLQUFFNEMsTUFFQXpILEdBRXVCO1FBQzdCLFFBSE1BO2lCQUtQOzthQUlKcXNCLE9BQUtqWSxJQUFJM007TUFDWCxTQUFJK2YsT0FBT2xoQixFQUFFdEc7UUFDWCxVQURXQSw0QkFDWCxLQUFJeW5CO1FBQUosSUFBSUEsZUFES25oQjtVQUlKOztjQUxBOE4sSUFLSSxlQUxBM00sRUFFTGdnQixLQUdpQixlQUxaaGdCLEVBRUxnZ0I7OztXQUcwQyxPQUgxQ0E7VUFJQzs7Y0FOQXJULElBTUksZUFOQTNNLEVBR0w1QyxNQUdnQixlQU5YNEMsRUFFTGdnQjs7O1dBSXlDLE9BSnpDQTtVQUtGLE9BSkU1aUI7UUFNYztXQVBkNGlCOztVQURLbmhCOzs7OztXQVFTLFdBVGI4TixJQVNpQixlQVRiM00sRUFFTGdnQixLQU84QixlQVR6QmhnQixFQUVMZ2dCO1NBUUcsT0FSSEE7UUFTRyxHQVRIQSxNQURLbmhCLEVBVWMsT0FUbkJtaEI7UUFTNEIsa0JBVnJCem5CLEVBVXFDO01BVmxELFNBWVEwbkIsWUFBWXBoQixFQUFFdEcsRUFBRWtOO1Faelg3QixJWXlYMkIzRztRQUNwQjtVQUFRLElBQUorTixFQUFJLE9BRFVoTyxFQUFFQztVQUVqQixrQkFmRTZOLElBZUUsZUFmRTNNLEVBY0w2TSxHQURrQnBIO1lBR3BCLGVBaEJPekYsRUFhV2xCLElBR1YsZUFoQkRrQixFQWNMNk0sUUFEZ0IvTixJQUNoQitOO1VBSUssc0JBbEJBN00sRUFhV2xCLElBQUUyRyxHQU9sQjtNQW5CTixTQXFCSXlhLFFBQVFyaEIsRUFBRXRHLEVBQUVrTjtRQUFJO1VBQUkscUJBQVo1RyxFQUFFdEcsRUFBRWtOOzs7O1lBQTJDLElBQUwzRyxXQUFLLHNCQXRCaERrQixFQXNCMkNsQixJQUF0QzJHO29CQUFvRDtNQXJCcEUsU0FzQlEwYSxXQUFXdGhCLEVBQUV0RztRWm5ZMUIsSVltWTBCdUc7UUFDbkI7VUFBUSxJQURXcWIsSUFDWCxPQURTdGIsRUFBRUM7VUFFbkIsZUF6QlNrQixFQXVCVWxCLElBRVgsZUF6QkNrQixFQXVCVW1hO1VBQ1gsSUFEV3JiO21CQUdMO01BekJoQixTQTJCSXNoQixPQUFPdmhCLEVBQUV0RztRQUFJO1VBQUksb0JBQVZzRyxFQUFFdEc7OztrQ0FBd0MsSUFBTHVHLFdBQUssT0FBTEE7b0JBQU07TUEzQnRELE1BRFdrQixhQUNYLE9Bc0NJbkI7TUF0Q0o7WUF1Q0ErZDtRQUFvQztrQkFEaEMvZCxFQUNKK2QsSUFBZ0QsZUF4Q3JDNWMsRUF3Q1g0YztVQUFvQyxTQUFwQ0E7OztNQXZDQSxTQXNDSS9kO01BRUo7OztRQUNFO1VBQVEsSUFiVXdoQixJQWFWLGVBMUNDcmdCLEVBeUNYbEI7VUFFRSxlQTNDU2tCLEVBeUNYbEIsSUFFVSxlQTNDQ2tCO1VBMENELElBRUUsV0FIWmxCLE9BWmtCdkc7VUFDaEI7Z0JBQUkrbkIsUUFEWS9uQjtZQUNoQixHQURnQkEsTUFDWituQjtZQUVELG1CQWhDRTNULElBZ0NFLGVBaENFM00sRUE4QkxzZ0IsUUFEY0Q7YUFNVCxlQW5DQXJnQixFQTZCT3pILEVBQUU4bkI7O2NBSWhCLGVBakNPcmdCLEVBNkJPekgsRUFJTixlQWpDRHlILEVBOEJMc2dCO2NBR0YsT0FIRUEsWUFEWS9uQixFQUNaK25CO2NBSXlDLGVBbENwQ3RnQixJQTZCU3FnQjtZQUNsQixTQVdGdmhCOzs7O01BeENBLGFBc0NJRDtNQU9KO1FBQXVCLElBQUo0RyxFQUFJLGVBOUNaekY7UUE4Q3lCLGVBOUN6QkEsSUE4Q2lDLGVBOUNqQ0E7UUE4Q1ksU0FBZ0MsZUE5QzVDQSxJQThDUXlGOzs7TUF0RGpCLFdBc0QrRDthQUkvRG9mLFlBQVlsWSxJQUFJM007TUFDbEIsU0FBSXVnQixNQUFNQyxRQUFRQyxRQUFRQyxLQUFLQyxRQUFRQyxRQUFRcEgsSUFBSXFIO1FBQ2pEO2VBRFFMLFVBQVFDO1NBQ2hCLE1BRDZCRSxVQUFRQztTQWtCRyxvQkFsQmhCRixLQUFLQztTQWtCYixvQkFuQkEzZ0IsRUFDUndnQjtTQUVLVSxHQUZMVjtTQUVRdmlCO1NBQUdrakIsR0FGVVI7U0FFUHppQjtTQUFHMlcsRUFGd0JnTTtRQUcvQztVQUFHLGtCQUpPbFUsSUFHSTFPLEdBQU1DO1lBU2xCLGVBWHlDc2IsSUFFcEIzRSxFQUFIM1c7WUFTbEIsSUFDSWtqQixLQVZXRDtZQVNmLEdBQ0lDLE9BWDBCTDtjQWE1QjttQkFabUJsTTtlQVlMLG9CQWRJNkwsS0FZaEJVO2VBVldELEdBVVhDO2VBVmNsakI7ZUFBRzJXOztZQWNuQixjQWpCVTdVLEVBR0hraEIsR0FGZ0MxSCxJQUVwQjNFLFVBRHJCaU0sUUFDU0k7VUFFVCxlQUp5QzFILElBRXBCM0UsRUFBVDVXO1VBRVosSUFDSXNqQixLQUhLTDtVQUVULEdBQ0lLLE9BSkpUO1lBTUU7aUJBTG1Cak07YUFLWCxvQkFSRTdVLEVBTVJ1aEI7YUFIS0wsR0FHTEs7YUFIUXRqQjthQUFTNFc7O1VBT25CLGNBVGtCNkwsS0FFTFMsR0FGMEIzSCxJQUVwQjNFLFVBRFNrTSxRQUNmSSxRQWdCK0M7TUFsQnBFLFNBb0JJTyxRQUFRQyxPQUFPbkksSUFBSXFILE9BQU92Z0I7UUFDNUIsU0FENEJBLFlBQzVCOzs7O1VBQ0U7WUFBUTs4QkF2Qk1OLEVBcUJOMmhCLFNBQ1ZwcEI7YUFDVSxNQUZXc29CLFNBQ3JCdG9COztjQUd5QjtnQkFKSnNvQjs7Z0JBR2ZoVTs7OztnQkFDbUIsV0F6QmJGLElBeUJpQixlQUpaNk0sSUFHWDNNLE1BREFwSDtnQkFHRixlQUxhK1QsSUFHWDNNLGFBRWUsZUFMSjJNLElBR1gzTTtnQkFFRjs7Y0FHRixlQVJlMk0sSUFHWDNNLGFBREFwSDtjQU1KLFNBUEZsTjs7OztnQkFRSTtNQTdCTixTQStCUXFwQixPQUFPRCxPQUFPbkksSUFBSXFILE9BQU92Z0I7UUFDL0IsR0FEK0JBLFNBQ1QsZUFEVHFoQixPQUFPbkksSUFBSXFILE9BQU92Z0I7UUFDMEIsT0FEMUJBLFlBQzBCLEdBRDFCQSxNQUV6Qm5DO1FBRUosT0FKV3dqQixTQUVQeGpCLE9BRmNxYixJQUFJcUgsU0FFbEIxaUIsT0FDQUM7UUFFSixPQUxXdWpCLE9BaENHM2hCLEVBZ0NIMmhCLFNBR1B2akIsT0FEQUQ7UUFHSixhQUxXd2pCLFNBR1B2akIsT0FEQUQsR0FGY3FiLElBQUlxSCxTQUVsQjFpQixPQUNBQyxHQUhjb2IsSUFBSXFILE9BT3JCO01BdENMLElBd0NJaGlCLEVBekNjbUI7TUFDbEIsR0F3Q0luQixPQUNnQixpQkExQ0ZtQixJQXlDZG5CO01BeENKLElBeUN5QyxHQURyQ0EsVUFDcUMsR0FEckNBLElBRUVWLE9BRUoseUJBRElDO01BRUosT0FISUQsR0FFQW9MLElBREFuTDtNQUdKLFNBL0NnQjRCLEVBNENaNUIsR0FEQUQ7TUFJSixhQUhJQyxHQURBRCxHQUVBb0wsSUFEQW5MLEdBNUNZNEIsSUFpRGY7YUFLRDhrQixTQUFPOWtCO01BQ1QsU0FBUWdZLElBQUl6ZjtRQUNWLEdBRFVBLElBREh5SDtVQUlHLE1BSkhBLE1BQ0d6SCxHQUdBLEtBSEFBO1VBSUssVUFEVDZFLGlCWnhkYixPWXFkYTRhO1FBS0QsUUFBTztNQUxkOzRCWnJkTCxPWXFkYUEsZUFPSDthQUdIK00sVUFBUS9rQjtNQUNWLFNBQVFnWSxJQUFJemY7UUFDVixHQURVQSxJQURGeUg7VUFJRSxNQUpGQSxNQUNFekgsR0FHQSxLQUhBQTtVQUlTLGFBSlRBLEVBR0o2RSxrQlpuZWIsT1lnZWE0YTtRQUtELFFBQU87TUFMZDs0QlpoZUwsT1lnZWFBLGVBT0g7YUFhSGdOLFNBQU9wSTtNQUNUOztPQUFRLDJCQUFtQi9SLElBQUl6TixHQUFLLFVBQUxBLEVBQUp5TixJQUFlLE9BRGpDK1I7T0FUQyxhQURJdkg7T0FFZCx5QkFESS9VO09BQ0osSUFESUE7O2FBRFUrVTs7O2NBS05uVyxZQUFKQztVQUFVLFdBQVZBO1VBQVUsOEJBQU5EOztRQURFLE9BRk5jLEVBVVM7YUFHWGlsQixhQUFheG9CLEVBQUV1RDtNQUNqQixJQUFJbkIsRUFEYW1CO01BQ2pCLFNBQUluQixFQUNVO01BRGQsSUFFVSxpQkFGTkEsRUFFbUIsV0FIUnBDLEVBQUV1RCxPQUdQLEtBRk5uQixVQUVNOztZQUNSdEc7UUFDRTtnQkFERkEsS0FDdUIsV0FMVmtFLEVBQUV1RCxNQUlmekg7VUFDRSxTQURGQTs7O01BR0EsT0FKSXFFLENBS0g7YUFFRHNvQixlQUFlem9CLEVBQUV1RDtNQUNuQixNQURtQkEsYUFFbkIseUJBREluQixHQUNKLEtBRElBLFVBQ0o7O1lBQ0F0RztRQUNFO2dCQURGQSxLQUNpQixXQUpBa0UsRUFBRXVELE1BR25Cekg7VUFDRSxTQURGQTs7O01BR0EsT0FKSXFFLENBSUg7Ozs7Ozs7c0JaemdCTjs7O09ZMkxPcW1COztPQUtBQztPQVNBQztPQWdCQUM7T0FjQUU7T0FNQUM7T0FNQUM7T0FJQUM7T0FLQUk7T0FHQUM7T0FVQUU7T0FnQ0FJO09BdEJBRjtPQXlCQUc7T0FTQUM7T0FRQUM7T0FoREFOO09BY0FFO09BbURBTTtPQVRBRDtPQWtCQUU7T0FVQUM7T0FXQUM7T0FrREFDOztPQXNEQUM7T0FXQUM7T0FxQkFDO09BS0FDO09BVUFDOzs7Ozs7T0F2ZUZyRDtPQUNBQztPQUNBQztPQXNGQU07T0FDQUM7T0F0RkE3a0I7T0FDQUM7T0FDQUM7T0FLQXdrQjtPQUNBdmtCO09BQ0FDO09BQ0FDO09BUEFra0I7T0FDQUM7T0FDQUM7T0EyRUFFO09BbEVBcGpCO09BQ0FEOztPQXFGQXdqQjtPQUVTQztPQUtBQztPQUtBQztPQUlBQztPQUtBQztPQUtBQztPQU9UQzs7dUJacEtMOzs7UVkyTE9HOztRQUtBQztRQVNBQztRQWdCQUM7UUFjQUU7UUFNQUM7UUFNQUM7UUFJQUM7UUFLQUk7UUFHQUM7UUFVQUU7UUFnQ0FJO1FBdEJBRjtRQXlCQUc7UUFTQUM7UUFRQUM7UUFoREFOO1FBY0FFO1FBbURBTTtRQVRBRDtRQWtCQUU7UUFVQUM7UUFXQUM7UUFrREFDOztRQXNEQUM7UUFXQUM7UUFxQkFDO1FBS0FDO1FBVUFDOzs7UXFCdGRGQyxTQUNBQyxRQUNBQzthQUNBQyxPQUFLdm9CLEdBQUksT0FBSkEsU0FBWTthQUNqQndvQixPQUFLeG9CLEdBQUksT0FBSkEsU0FBWTthQUNqQnlvQixNQUFJem9CLEdBQU8seUJBQVBBLGNBQWdDO1FBQ3BDMG9CLHNCQUNBQzthQUNBQyxTQUFPNW9CLEdBQUksT0FBSkEsTUFBa0I7SUFLVCxTQUhoQjZvQixnQkFJTTdvQjtNQUN3Qjs7YUFBdkIsbUJBRERBOzs7YUFDd0IsaUJBRHhCQTtPQUVBLFVBRkFBO01BSUEsUUFBSTthQVNWOG9CLFlBQVU5b0IsR0FBSSw2QkFBSkEsRUFBaUI7YUFJM0Irb0IsZ0JBQWM3b0I7TUFFaEI7UUFBUywrQkFGT0E7OzsrQkFHRTtRQVBGLFdBT007YUFJcEI4b0IsV0FBUzNvQixFQUFPQyxHQUFRLHdCQUFmRCxFQUFPQyxFQUEwQjthQUMxQzJvQixTQUFPNW9CLEVBQU9DLEdBQVEsOEJBQWZELEVBQU9DLE1BQXVCO2FBRXJDNG9CLGlCQUFpQmxwQixFQUFFbXBCO01BQ2Isd0JBRFducEIsbUJBQUVtcEIsbUJBQ2tCO2FBRXJDQyxNQUFJL29CLEVBQUVDLEdBQVcsc0JBQWJELEVBQUVDLEdBQUZELEVBQUVDLENBQStCO2FBQ3JDK29CLE1BQUlocEIsRUFBRUMsR0FBVyx5QkFBYkQsRUFBRUMsR0FBRkQsRUFBRUMsQ0FBK0I7YUFLckNncEIsYUFBYXRwQixFQUFFOFg7TUFDZCxpQkFEY0EsS0FFWiw2QkFGVTlYLEVBQUU4WCxHQWpEZnVRLE1BREFEO01Bc0RvRCxNQUFILFNBSnBDcG9CLFlBQUU4WCxRQUtQLEVBTEs5WCxJQUtDLFNBRFZ1cEIsRUFKV3pSO01BTVosNkJBRENqWSxFQUxXaVksR0FJWHlSLFdBRTJDO2FBRS9DQyxhQUFheHBCLEVBQUU4WCxHQUNqQixPQURlOVgsSUFDYyxTQUFsQixhQURJQSxFQUFFOFgsU0FDZTs7OztPQTNEOUJzUTtPQUNBQztPQUNBQztPQWdEQWdCO09BUUFFO09BdkRBakI7T0FDQUM7T0FDQUM7T0FFQUU7T0FEQUQ7T0FFQUU7T0FFQUM7T0FxQkFFO09BSkFEO09BV0FFO09BR0FFO09BRkFEO09BS0FHO09BQ0FDOzthL0I1Q0FJLE9BQUt6cEIsR0FBSSxzQkFBSkEsTUFBWTthQUNqQjBwQixPQUFLMXBCLEdBQUksc0JBQUpBLE1BQVk7YUFDakIycEIsTUFBSTNwQjtNQUFPLHlCQUFQQSxTQUEyQix1QkFBM0JBLEVBQWdDO2FBR3BDNHBCLFNBQU81cEIsR0FBSSw4QkFBSkEsTUFBa0I7SUFHYixJQUFWNnBCLFVBQVU7YUFEWkMsa0JBRUU5cEI7TUFDd0I7O2FBQXZCLG1CQWJIakcsT0FZRWlHOzs7YUFDd0IsbUJBRHhCQSxFQURBNnBCO09BR0Esc0NBRkE3cEI7TUFJQSxRQUFJO0lBTE0sU0FRWitwQixZQUFVL3BCLEdBQUksaUNBQUpBLEVBQWlCO0lBUmYsU0FZWmdxQixnQkFBYzlwQjtNQUVoQjtRQUFTLGlDQUZPQTs7OytCQUdFO1FBUEYsV0FPTTtJQWZSLFNBNEJaK3BCLFdBQVM1cEIsRUFBT0MsR0FBUSwwQkFBZkQsRUFBT0MsRUFBMEI7SUE1QjlCLFNBNkJaNHBCLFNBQU83cEIsRUFBT0MsR0FBUSxnQ0FBZkQsRUFBT0MsTUFBdUI7SUE3QnpCLFNBK0JaNnBCLG1CQUFpQm5xQixFQUFFbXBCO01BQ2I7OEJBRFducEIsRUFwQ2pCOUYsV0FxQ3NCLGVBREhpdkIsRUFwQ25CanZCLFdBcUNxQztJQWhDekIsU0FrQ1prd0IsTUFBSS9wQixFQUFFQyxHQUFXLHNCQUFiRCxFQUFFQyxHQUFGRCxFQUFFQyxDQUErQjtJQWxDekIsU0FtQ1orcEIsTUFBSWhxQixFQUFFQyxHQUFXLHlCQUFiRCxFQUFFQyxHQUFGRCxFQUFFQyxDQUErQjtJQW5DekIsU0F3Q1pncUIsZUFBYXRxQixFQUFFOFg7TUFDZCxpQkFEY0EsRUFuRGYvZDtPQXFERywrQkFGVWlHLEVBQUU4WCxHQWxEZjlkLE1BREFEO01BdURvRDs7O1VBQUgsdUJBQXpCLCtCQUpYaUcsS0FBRThYO09BS1AsaUJBTEs5WCxFQUtDLGVBRFZ1cEIsRUFKV3pSO01BTVosK0JBRENqWSxFQUxXaVksR0FNbUIsT0FGOUJ5UixJQUUyQztJQTlDbkMsU0FnRFpnQixlQUFhdnFCLEVBQUU4WDtNQUNqQixzQkFEZTlYLEVBQ2MsZUFBbEIsZUFESUEsRUFBRThYLE1BQ2U7SUFqRGxCOzs7T0FYWi9kO09BQ0FDO09BQ0FDO09BaURBcXdCO09BUUFDO09BeERBZDtPQUNBQztPQUNBQztPQUVBeHZCO09BREFEO09BRUEwdkI7T0FFQUU7T0FhQUU7T0FKQUQ7T0FvQkFFO09BR0FFO09BRkFEO09BS0FFO09BQ0FDO0lBbkNZO1FnQmJaRyxTQUNBQyxRQUNBQzthQUNBQyxPQUFLM3FCLEdBQUksT0FBSkEsU0FBWTthQUNqQjRxQixPQUFLNXFCLEdBQUksT0FBSkEsU0FBWTthQUNqQjZxQixNQUFJN3FCLEdBQU8seUJBQVBBLGNBQWdDO0lBRTFCLDBCQUNBO2FBQ1ZnckIsU0FBT2hyQixHQUFJLE9BQUpBLE1BQWtCO0lBR2IsU0FEWmlyQixrQkFFRWpyQjtNQUN3Qjs7YUFBdkIsbUJBRERBOzs7YUFDd0IsaUJBRHhCQTtPQUVBLFVBRkFBO01BSUEsUUFBSTtJQUxNLFNBUVprckIsWUFBVWxyQixHQUFJLCtCQUFKQSxFQUFpQjtJQVJmLFNBWVptckIsZ0JBQWNqckI7TUFFaEI7UUFBUywrQkFGT0E7OzsrQkFHRTtRQVBGLFdBT007SUFmUixTQW1CWmtyQixXQUFTL3FCLEVBQU9DLEdBQVEsd0JBQWZELEVBQU9DLEVBQTBCO0lBbkI5QixTQW9CWitxQixTQUFPaHJCLEVBQU9DLEdBQVEsOEJBQWZELEVBQU9DLE1BQXVCO0lBcEJ6QixTQXNCWmdyQixtQkFBaUJ0ckIsRUFBRW1wQjtNQUNiLHdCQURXbnBCLG1CQUFFbXBCLG1CQUNrQjtJQXZCekIsU0F5QlpvQyxNQUFJbHJCLEVBQUVDLEdBQVcsc0JBQWJELEVBQUVDLEdBQUZELEVBQUVDLENBQStCO0lBekJ6QixTQTBCWmtyQixNQUFJbnJCLEVBQUVDLEdBQVcseUJBQWJELEVBQUVDLEdBQUZELEVBQUVDLENBQStCO0lBMUJ6QixTQStCWm1yQixlQUFhenJCLEVBQUU4WDtNQUNkLGlCQURjQSxLQUVaLCtCQUZVOVgsRUFBRThYLEdBMUNmMlMsTUFEQUQ7TUErQ29ELE1BQUgsU0FKcEN4cUIsWUFBRThYLFFBS1AsRUFMSzlYLElBS0MsU0FEVnVwQixFQUpXelI7TUFNWiwrQkFEQ2pZLEVBTFdpWSxHQUlYeVIsV0FFMkM7SUFyQ25DLFNBdUNabUMsZUFBYTFyQixFQUFFOFg7TUFDakIsT0FEZTlYLElBQ2MsU0FBbEIsZUFESUEsRUFBRThYLFNBQ2U7SUF4Q2xCOzs7T0FaWjBTO09BQ0FDO09BQ0FDO09BeUNBZTtPQVFBQztPQWhEQWY7T0FDQUM7T0FDQUM7T0FDQXhoQjtPQUVBMGhCO09BREFEO09BRUFFO09BRUFDO09BYUFFO09BSkFEO09BV0FFO09BR0FFO09BRkFEO09BS0FFO09BQ0FDO0lBMUJZO2FmV1pHLE9BQU9DLElBQUlDLE1BQU1sbkI7TUFDTjtzQ0FESmluQixJQUFJQyxNQUFNbG5CO09BQ04sVUFBVHlIO09BQVMsVUFETXpILFlBdkNqQnZLO01BeUNpRDtrQkFGaEN1SztRQUVnQyxTQUZoQ0E7UUFFZ0MscUNBRmhDQTtNQU9uQixPQU5JeUgsTUFNRTthQUdKMGYsV0FBV0YsSUFBSUMsTUFBTWxuQjtNQUNWOzBDQURBaW5CLElBQUlDLE1BQU1sbkI7T0FDVixVQUFUeUg7T0FBUyxVQURVekgsWUFqRHJCdks7TUFtRGlEO2tCQUY1QnVLO1FBRTRCLFNBRjVCQTtRQUU0QixxQ0FGNUJBO01BT3ZCLE9BTkl5SCxNQU1FO2FBa0VKMmYsY0FBZ0JDLElBQXVCdHNCO01BQ3pDLEdBRGtCc3NCLElBQWlCLFFBQWpCQSxzQkFBaUJDLGFBQWpCQztNQUNsQjtZQURrQkEsZUFQaEI3eEIsU0FuSEFEO09BcUlxQyxLQVhyQjh4QixlQVBoQjd4QixTQW5IQUQ7T0EySDJCO09BUWpCOzs7Ozs7OztPQVBHO01BREM7dUJBakVpQmd5QjtnQkFFL0I7OzZCQThEdUMxc0IsRUFoRW5CeXNCLFdBQ3RCLHFCQURzQkE7aUJBRXBCLE1BREVFLFdBRDZCRDtnQkFhakMsd0JBYmlDQSwwQkFHN0Jwc0I7a0JBVStEO3NCQWJsQ29zQiw2QkFHN0Jwc0I7O29CQVUrRCxxQkFibENvc0I7bUJBaUIxQjtxQkFqQjBCQTs7b0JBNEIzQjtxQkFERUU7c0JBQ0Y7NEJBTEsscUJBdkJzQkY7b0JBNEIzQixHQURFRSxXQTNCeUJGLDZCQUc3QnBzQjtxQkEyQks7b0JBRkgsSUFHRXVzQixPQUFTLGtCQUpURDtvQkFNSixLQWpDNkJGLG9CQStCekJHLFNBL0J5Qkg7b0JBaUM3QixZQUZJRztrQkFTTixJQUFJcnNCLEVBeEMyQmtzQjtrQkF3Qy9CLFlBeEMrQkEsWUF3QzNCbHNCO2tCQUFKLFlBeEMrQmtzQixZQXdDM0Jsc0I7a0JBQUo7OEJBeEMrQmtzQixZQXdDM0Jsc0I7a0JBQUosWUF4QytCa3NCLFlBd0MzQmxzQjtrQkFBSixNQXhDK0Jrc0IsV0F3Qy9CLEtBTUk1ZixxQkFOSjs7d0JBT0FoUjtvQkFDRTtzQkFBUSxJQUFKb0UsRUFBSSxpQkFGTjRNLEVBQ0poUjtzQkFDVSxRQUFKb0UsRUFFRixpQkFKQTRNLEVBQ0poUixZQUNNb0UsSUFSRk07c0JBUU0sU0FEVjFFOzs7Z0JBT0YsS0F0RHNCMndCLGFBQVdDLG9CQUc3QnBzQjtnQkFtREosWUF0RGlDb3NCLFlBRzdCcHNCO2dCQW1ESjs7Ozs7Ozs7Ozs7bUJBdUJDO2FBRUN3c0IsYUFBY04sZUFBZWpvQjtNQUMvQjtlQURnQmlvQix3QkFDbUJ2bkIsSUFBSTNFLEdBQUssYUFEYmlFLEdBQ0lVLE1BQUkzRSxFQUFxQixFQUFDO2FBRTNEeXNCLGNBQWNULElBQXVCOXJCO01BQ3ZDLEdBRGdCOHJCLElBQWlCLFFBQWpCQSxzQkFBaUJDLGFBQWpCQztNQUNoQjtZQURnQkEsZUF6QmQ3eEIsU0FuSEFEO09Bd0pxQyxLQVp2Qjh4QixlQXpCZDd4QixTQW5IQUQ7T0FzSlU7Ozs7Ozs7a0NBVjJCOEY7T0FFeEIsY0FGd0JBO01BRXhCO3VCQURNa3NCLFFBQVUsc0JBQThCOzs7Ozs7Ozs7OzttQkFhNUQ7YUFFQ00sYUFBYU4sT0FBT087TUFDdEIsZ0JBRGVQLGNBQU9PO01BQ3RCLFlBRHNCQTtNQUN0QixRQUN1QzthQUVyQ0MsYUFBYVIsT0FBT1M7TUFDdEIsU0FEZVQ7TUFDZixnQkFEc0JTO01BQ3RCLFFBQStEO2FBRTdEWCxlQUFlRSxRQUFTLE9BQVRBLGVBbktmaHlCLGFBbUtzRDthQUV0RDB5QixPQUFPVjtNQUNULElBQUk3b0IsSUFESzZvQjtNQUNULGtCQURTQSxvQkFDTDdvQixJQUN1RDthQUV6RHdwQixXQUFXWCxPQUFPakksR0FBR0M7TUFDdkIsSUFBSTdnQixJQURtQjZnQixLQUFIRCxPQUNwQixrQkFEYWlJLFVBQU9qSSxHQUNoQjVnQixJQUNxQzthQUV2Q3lwQixlQUFlWixPQUFPakksR0FBR0M7TUFDM0IsUUFEd0JELElBQ1IsSUFDVjVnQixJQUZxQjZnQixLQUFIRCxPQUdqQixxQkFIVWlJLFVBQU9qSSxHQUVsQjVnQjtNQUVHLFFBRU47YUFFRDBwQixnQkFBZ0JiLE9BQU81d0IsR0FBSSxzQkFBWDR3QixVQUFPNXdCLEVBQWlDO2FBRXhEMHhCLG9CQUFvQmQsT0FBTzV3QjtNQUM3QixZQUQ2QkEsS0FFdEIsZUFGZTR3QixVQUFPNXdCLEtBSXZCO2FBR0oyeEIsWUFBWWYsT0FBTzV3QjtNQUNyQixzQkFEYzR3QixzQkFBTzV3QixNQUNpQzthQUVwRDR4QixhQUFhaEIsUUFBUyxPQUFUQSxhQUFvQzthQUNqRGlCLFdBQVdqQixRQUFTLE9BQVRBLGFBQW1DO2FBRTlDa0IsZUFBZWxCLFFBQVMsT0FBVEEsVUFBMkI7YUFDMUNtQixhQUFhbkIsUUFBUyxPQUFUQSxVQUEwQjthQUV2Q29CLFNBQVNwQjtNQUNYO1dBRFdBO09BQ1gsS0FBSXFCLFFBeE1GcnpCO09Bd01GLFdBRFdneUIsZ0JBQ1BxQjtNQUhvQixXQVNuQjthQU1IQyxZQUFZekw7TUFDZDs7VUFFSXdMLElBSFV4TDtNQUNkLEdBRUl3TCxRQXZORnJ6QjtPQXlOQSxZQUZFcXpCLE9BcEdGcHpCO01BdUdGO2NBQXVCOzs7O09BMU5yQkQ7T0F5SUFveUI7T0FHQUM7T0FsQkFWO09Ba0NBVztPQUlBRTtPQUdBVjtPQUVBWTtPQXlCQUs7T0FHQUM7T0FDQUM7T0FFQUM7T0FDQUM7T0FFQUM7T0FhQUU7T0EzQ0FYO09BSUFDO09BUUFDO09BRUFDO09BaEpBdkI7T0FVQUc7O0krQmdCVTs7Ozs7O09BQ0E7T0FDUyxtQi9CbkVuQjF4QjtPK0JvRWlCLG1CL0JwRWpCQTs7Ozs7Ozs7Ozs7OztJK0JpRVUsU0FpQlZ3ekI7TUFDRjtlQW5CRUQ7T0FtQkYsUUFBSUU7T0FFUSxxQkFEUkM7T0FFUSxxQkFGUkE7T0FHWSx5QkFIWkEsUS9CcEZGMXpCO08rQndGWSx1QkFKVjB6QixRL0JwRkYxekI7TStCeUZBLE9BekJBdXpCLFNBcUJFSSxRQUZBRjtNQU1GLFNBSkVFO01BTUYsT0EzQkFKLFNBc0JFSyxRQUhBSDtNQVFGLFNBTEVHO01BT0YsT0E3QkFMLFNBdUJFTSxZQUpBSjtNQVVGLFNBTkVJO01BUUYsT0EvQkFOLFNBd0JFTyxVQUxBTDtNQVlGLFNBUEVLO01BT0YsU0FYRUo7TUFXRixRQUV3QjtJQWhDZCxTQWtDVks7TUFDRixPQXBDRVIsbUJBb0NGLG1CQUN1QjtJQXBDWCxJQXNDVlMseUNBQWdELFFBQUs7SUF0QzNDLFNBd0NWQyxRQUFRQyxPQUFPQyxNQUFNQyxNQUFNcEM7TUFDN0I7Z0JBMUNFdUI7T0EwQ0YsUUExQ0VBO09BMENGLGVBMUNFQTtPQTBDRixXQTFDRUE7T0EwQ0YsZUExQ0VBO09BMENGLFVBMUNFQTtPQTBDRixhQTFDRUE7TUEwQ0YsU0ExQ0VBO01BMENGLFNBRGlCWTtNQUNqQixVQUQ2Qm5DO01BQzdCO1lBQWE0QyxNQUFJQztRQUNmO1VBQU0sb0NBRkVYLE9BekNSWCxJQTBDV3FCLElBQUlDO1VBQ1Q7O2FBRWMsSUFITEMsTUFHSyxXQUpDVixNQUFNcEM7YUFJUCxTQUpPQTthQUlQLFVBSk9BO2FBSVAsSUFIVDRDLE1BQUlDOzttQkFRWDttQkFTQSxtQkFqQk9ELE1BQUlDO21CQW1CWCxtQkFuQk9ELE1BQUlDOzthQVVYO2VBRStEO3FCQXREbkV0QjtnQkFzRG1FOzRCQUFoQyxpQkFiM0JXLDBCQXpDUlg7Z0JBc0RtRTtnQkFacER3QjtnQkFBSkM7Ozt1Q0FlUDttQkFmV0QsUUFBSkM7MkJBQUlIOzs7YUFxQlgsV0F0QklYLGlDQUNHVSxNQUFJQztZQW1DWkk7O1FBQ0gsSUFBSUMsVUE5RUozQjtRQThFQSxVQWJFYztRQWFGLFVBWkVDO1FBWUYsU0FYRUM7UUFXRixVQVZFQztRQVVGLFNBVEVDO1FBU0YsU0FSRUM7UUFRRixVQVBFQztRQU9GLEdBREdNLG1CQVdDLElBREt6dkIsRUFWTnl2QixPQVdDLE9BREt6dkI7UUFHTDs7aUJBQ08ydkI7VUFDQSxZQURBQTtZQUV1QixzQkFGdkJBO1lBRUUsd0JBcERMakIsOEJBcUNKZ0I7OztVQWdCUyx3QkFyRExoQixVQWtER2lCLGtCQWJQRCxhQWdCd0Q7UUFKeEQsTUFiREQsSUFrQlU7SUE5RkgsU0FnR1ZHLFNBQVM3QixJQUFJM3RCO01BQ2YsU0FEVzJ0QixVQUFJM3RCLE1BQ0wsd0JBREMydEIsc0JBQ3dCO0lBakd2QixTQW1HVjhCO01sQzdMTCxJa0M4TGdCajBCLEVBckdYbXlCO01Bc0dBO2VBRFdueUI7VUFFTjtpQkF2R0xteUIsVUFxR1dueUI7V0FHQSxvQkF4R1hteUI7V0F3R1csTUF4R1hBLFVBcUdXbnlCO1dBSUEsb0JBekdYbXlCO1VBMEdLLGlCQUZDK0IsR0FDQUMsSUFDYSxPQUZiRDtVQURELElBR3NCLElBTGhCbDBCOztRQUNJLFNBdEdmbXlCO1FBc0dlLHdCQXRHZkEsdUJBNkdlO0lBNUdMLFNBOEdWaUM7TUFBb0IsU0EvR3BCakMsUUErR29CLHdCQS9HcEJBLHNCQStHZ0Q7SUE5R3RDLFNBK0dWa0MsY0FBYzd2QjtNQUFJLFNBaEhsQjJ0QixxQkFnSGMzdEI7TUFBSSx3QkFoSGxCMnRCLHNCQWdIcUU7SUEvRzNELFNBZ0hWbUMsWUFBWTl2QjtNQUFJLFNBakhoQjJ0QixxQkFpSFkzdEI7TUFBSSx3QkFqSGhCMnRCLHNCQWlIaUU7SUFoSHZELFNBa0hWb0Msb0JBQWtCLDZCQUE4QjtJQWxIdEMsU0FtSFZDLGtCQUFnQiwyQkFBNEI7SUFuSGxDLFNBb0hWQyxVQUFVandCLEdBQUkscUJBQUpBLEtBQThCO0lBcEg5QixTQXFIVmt3QixRQUFRbHdCLEdBQUksbUJBQUpBLEtBQTRCO0lBckgxQixTQXVIVm13QixxQkFBcUJaO01BQ3ZCLGtCQWxGRW5CLHlCQWlGcUJtQixJQUNlO0lBeEgxQixTQTBIVmEsbUJBQTJCLFFBQUU7SUExSG5COzs7T0FrSFZMO09BQ0FDO09BQ0FDO09BQ0FDO09BbEJBVDtPQVdBRztPQUNBQztPQUNBQztPQTlFQTNCOzs7O09BTUFFO09Bd0RBbUI7T0F1QkFXO09BR0FDO0lBMUhVOzs7OztrQkNWTkMsY0FBUyxVQUVHLElBQU5ySixXQUFNLE9BQU5BLEVBREcsUUFDSTtrQkFPYjdiLE9BQU9ySixFQUFFbEMsRUFBRUM7V0FDYixHQURTaUMsRUFDc0MsTUFEdENBLEtBQ0x3dUIsR0FBcUN0SixXQUFyQ3NKO1dBQ0osR0FGYXp3QixFQUVrQyxRQUZsQ0EsS0FFVDJ3QixHQUFxQ0QsYUFBckNDO1dBQ0osU0FESUEsTUFEQUYsY0FDQUU7cUJBRksxdUIsRUFBRWxDLEVBQUVDLE9BR3lDO2tCQU9wRDR3QixJQUFJM3VCLEVBQUVsQyxFQUFFQztXQUNWLEdBRE1pQyxFQUN5QyxNQUR6Q0EsS0FDRnd1QixHQUFxQ3RKLFdBQXJDc0o7V0FDSixHQUZVendCLEVBRXFDLFFBRnJDQSxLQUVOMndCLEdBQXFDRCxhQUFyQ0M7V0FDSixJQURJQSxjQURBRjthQUVnQixHQUhkeHVCO2VBT2dCLElBREM0dUIsR0FOakI1dUIsS0FNVzZ1QixHQU5YN3VCLEtBTUs4dUIsR0FOTDl1QixLQU9nQixZQURDNHVCO2VBQ2Qsa0JBREVFLElBRVUsY0FGVkEsR0FBTUQsR0FFSSxPQUZFRCxHQU5mOXdCLEVBQUVDO2VBU0MsR0FIWTZ3QjtpQkFPbUIsSUFEWEcsSUFOUkgsTUFNQ0ksSUFOREosTUFNTkssSUFOTUwsTUFPbUIsWUFEWEcsSUFadkJqeEIsRUFBRUM7aUJBYVMscUJBUFIrd0IsR0FBTUQsR0FNQUksS0FBT0Q7ZUFETDthQU5OO1dBVUosSUFkTFIsY0FDQUU7YUFheUIsR0FmbkIzd0I7ZUFtQlksSUFEQ214QixHQWxCYm54QixLQWtCT294QixHQWxCUHB4QixLQWtCQ3F4QixHQWxCRHJ4QixLQW1CWSxZQURYcXhCO2VBQ0Ysa0JBRGNGLElBRVIscUJBcEJUbHZCLEVBQUVsQyxFQWtCR3N4QixJQUFNRCxHQUFNRDtlQUdaLEdBSEFFO2lCQU82QixJQURUQyxJQU5wQkQsTUFNYUUsSUFOYkYsTUFNTUcsSUFOTkgsTUFPNkIsWUFEVEMsSUFOZEYsR0FBTUQ7aUJBT0oscUJBekJibHZCLEVBQUVsQyxFQXdCU3l4QixLQUFPRDtlQURMO2FBTk47V0FXWCxTQTFCRVosTUFEQUYsY0FDQUU7cUJBRkUxdUIsRUFBRWxDLEVBQUVDLE9BNEI4QztrQkFJbER5eEIsSUFBSWp4QixFQUVSbU07V25DcklULEdtQ3FJU0E7YUFDVSxJQURDM00sRUFBWDJNLEtBQVE1TSxFQUFSNE0sS0FBSzFLLEVBQUwwSyxLQUNVLG9CQUhGbk0sRUFFQVQ7YUFDRSxTQUFKZ0QsRUFDVSxPQUZoQjRKO2FBR0UsUUFGSTVKLEdBTU8sSUFBTG91QixHQUFLLElBVEwzd0IsRUFFR1IsR0FPRSxPQVBGQSxNQU9IbXhCLEdBUFJ4a0IsRUFRMkIsSUFSdEIxSyxFQUFHbEMsRUFPQW94QjthQU5FLElBR0ZKLEdBQUssSUFOTHZ3QixFQUVIeUI7YUFJUSxPQUpSQSxNQUlHOHVCLEdBSlJwa0IsRUFLMkIsSUFEbkJva0IsR0FKQWh4QixFQUFHQztXQURGLFlBRERRO2tCQVlSa3hCLFVBQVVseEIsR0FBSSxZQUFKQSxNQUFvQztrQkFTMUNteEIsZ0JBQWdCbnhCO1duQ3hKN0I7aUJtQzBKcUJSLFdBQUhELFdBQUhrQzthQUNGLDJCQUhnQnpCLEVBRWR5QixHQUFHbEMsRUFBR0M7V0FESCxpQkFEV1E7a0JBS2hCb3hCLGdCQUFnQnB4QjtXbkM3SjdCO2lCbUMrSnFCUixXQUFIRCxXQUFIa0M7YUFDRSxXQURGQSxFQUFHbEMsRUFDRCxnQkFIWVMsRUFFUlI7V0FESCxpQkFEV1E7a0JBUWhCdVQsS0FBSzlSLEVBQUVsQyxFQUFFQztXQUNmLEdBRFdpQztnQkFBSWpDOztnQkFJMkM2eEIsR0FKM0M3eEI7Z0JBSXFDbXhCLEdBSnJDbnhCO2dCQUkrQm94QixHQUovQnB4QjtnQkFJeUJxeEIsR0FKekJyeEI7Z0JBSWE4eEIsR0FKakI3dkI7Z0JBSVc0dUIsR0FKWDV1QjtnQkFJSzZ1QixHQUpMN3VCO2dCQUlEOHVCLEdBSkM5dUI7dUJBSStDNHZCLGNBQTlCQzt3QkFDTSxJQUR4QmYsR0FBTUQsR0FDa0IsS0FEWkQsR0FKVDl3QixFQUFFQzt5QkFJYTh4QixjQUE4QkQsR0FFOUIsU0FOakI1dkIsRUFBRWxDLEVBSTJCc3hCLElBQU1ELEdBQU1ELElBR2hELE9BUE9sdkIsRUFBRWxDLEVBQUVDO2FBR0MsdUJBSEhELEVBQUZrQztXQUVLLHVCQUZIbEMsRUFBRUMsRUFPQztrQkFJVit4QjtXbkNoTGI7V21DZ0x1Qjs7OztlQUVNLElBQU5oeUI7ZUFBTSxPQUFOQTthQURMLGdCQUVXO2tCQUVoQml5QjtXbkNyTGI7V21DcUwyQjs7OztlQUVFLElBQU5qeUI7ZUFBTSxVQUFOQTthQURMLFNBRWU7a0JBRXBCa3lCO1duQzFMYjtXbUMwTHVCOzs4QkFHSCwrQkFBTjFQO2VBRGUsSUFBZnhpQjtlQUFlLE9BQWZBO2FBREksZ0JBRVc7a0JBRWhCbXlCO1duQy9MYjtXbUMrTDJCOzs4QkFHUCwrQkFBTjNQO2VBRGUsSUFBZnhpQjtlQUFlLFVBQWZBO2FBREksU0FFZTtrQkFJcEJveUI7V0FBaUI7OzttQkFHVm55QixXQUFIRCxXQUFhLGdDQUFiQSxFQUFHQzthQURTLElBQU5veUI7YUFBTSxPQUFOQTtXQURMLDBDQUVrQztrQkFnQjNDdGtCLE9BQU9pTSxHQUFHRjtXQUNaLEdBRFNFO2FBSUcsR0FKQUY7ZUFJcUIsd0JBSnJCQSxJQUlRLFlBSlhFLEdBSVcsUUFKUkY7YUFHSSxPQUhQRTtXQUVPLE9BRkpGLEVBSXdDO2tCQVE5Q3dZLE1BQU03eEI7V25Dck9uQjthbUN5T21CLElBRENSLFdBQUhELFdBQUhrQyxXQUNLLG9CQUpBekIsRUFHRlQ7YUFDRSxTQUFKZ0QsRUFDVSxVQUZYZCxJQUFNakM7YUFHSixRQUZEK0M7ZUFLbUIsZ0JBVGZ2QyxFQUdDUixHQU1jO2VBQWMsZUFObENpQyxFQUFHbEMsRUFNQzh3QixJQUFJeUIsS0FBTW5CO2FBTFQ7Y0FHZSxjQVBmM3dCLEVBR0x5QjtjQUlvQjs7O2FBQXdCLFVBQXhDOHVCLEdBQUl3QixPQUFvQyxLQUE5QmxCLEdBSlh0eEIsRUFBR0M7V0FEVDthQVdGa047a0JBRUFxQixnQkFBVyxnQkFBbUM7a0JBRTFDaWtCLElBQUloeUI7V25DdFBqQjs7O2VtQ3lQbUI7Z0JBRENSO2dCQUFIRDtnQkFBSGtDO2dCQUNLLG9CQUhGekIsRUFFQVQ7Z0JBQ0UsV0FBSmdEO2VBQUksUUFGRDtlQUVDLElBREN3ZixhQUNMeGYsRUFESy9DLEVBQU5pQyxVQUFNc2dCOzthQURGO2tCQUtMa1EsT0FBT2p5QixFQUVYbU07V25DOVBULEdtQzhQU0E7YUFDVSxJQURFM00sRUFBWjJNLEtBQVM1TSxFQUFUNE0sS0FBTTFLLEVBQU4wSyxLQUNVLG9CQUhDbk0sRUFFRlQ7YUFDQyxTQUFKZ0Q7ZUEvQ1IsR0E4Q1FkO2lCQTNDSSxHQTJDRWpDO21CQTNDa0Isd0JBMkNsQkEsR0EzQ0ssV0EyQ1hpQyxFQTNDVyxRQTJDTGpDO2lCQTVDRSxPQTRDUmlDO2VBN0NRLE9BNkNGakM7YUFJUixRQUhFK0MsR0FRUyxJQUFMb3VCLEdBQUssT0FYSjN3QixFQUVDUixHQVNHLE9BVEhBLE1BU0ZteEIsR0FUVnhrQixFQVdXLElBWEwxSyxFQUFHbEMsRUFTQ294QjthQVJBLElBSUFKLEdBQUssT0FQSnZ3QixFQUVMeUI7YUFLUyxPQUxUQSxNQUtJOHVCLEdBTFZwa0IsRUFPVyxJQUZEb2tCLEdBTERoeEIsRUFBR0M7V0FESDtrQkFjTDB5QixNQUFNcnhCLEdBQUdDO1dBQ2YsR0FEWUQ7Z0JBQUdDOztnQkFJMkN3WSxHQUozQ3hZO2dCQUlxQ3F4QixHQUpyQ3J4QjtnQkFJK0IrSCxHQUovQi9IO2dCQUl5QkUsR0FKekJGO2dCQUlhMFksR0FKaEIzWTtnQkFJVXdVLEdBSlZ4VTtnQkFJSWtULEdBSkpsVDtnQkFJRkUsR0FKRUY7a0JBSThDeVksTUFBOUJFO2lCQUV0QixTQUZvREYsR0FFckMsV0FGeUJ6USxHQUpsQ2hJO2lCQU9jOzhCQUhWa1QsR0FKRGpUO2tCQU9XOztrQkFDSSxXQUpSdVUsR0FHRitjO2lCQUNQLGtCQUpIcnhCLEdBR0cwWCxNQUhHMUU7ZUFPVixTQVBzQnlGLEdBT1AsV0FQTHpGLEdBSkRqVDtlQVlXOzhCQVJvQitILEdBSmxDaEk7Z0JBWWM7O2dCQUNJLFdBRFZ3eEIsS0FSZ0NGO2VBU3ZDLGtCQURBM1osS0FSMkJ4WCxJQUFNNkg7YUFEN0IsT0FITGhJO1dBRUssT0FGRkMsRUFjTjtrQkFFSHd4QixNQUFNenhCLEdBQUdDO1dBQ2YsR0FEWUQ7Z0JBQUdDO2VBS0wsSUFEWXVVLEdBSlZ4VSxNQUlJa1QsR0FKSmxULE1BSUZFLEdBSkVGLE1BS0YsV0FETWtULEdBSkRqVCxJQUtMOztpQkFJb0IsSUFEYnF4QixXQUNhLFdBTFI5YyxHQUlMOGM7aUJBQ0osa0JBTEhweEIsU0FBTWdUO2VBQ04sSUFFRixhQUFxQixXQUhQc0IsR0FFSitjO2VBQ0gsb0JBSExyeEI7YUFETTtXQURBLFFBTzJCO2tCQVVyQ3d4QixVQUFVdnlCO1duQzlTdkI7YW1Da1RtQixJQURDUixXQUFIRCxXQUFIa0MsV0FDSyxvQkFKSXpCLEVBR05UO2FBQ0UsU0FBSmdELEVBQ1U7YUFDVCxRQUZEQTtlQU9JLG9CQVhJdkMsRUFHSFI7ZUFRRDtxQkFFVW14QixZQUFKTixZQUFxQixlQVZoQzV1QixFQUFHbEMsRUFVUTh3QixJQUFJTTtlQURMO2FBUkwsWUFHQSxVQVBJM3dCLEVBR1R5QjthQUlLO21CQUVVb3ZCLGNBQUpOOzs7dUNBQXlDLHVCQUFyQ00sTUFOWnR4QixFQUFHQyxFQU15RDthQURyRDtXQU5iLDRCQUE0QixRQUFLO2tCQWEvQmd6QixTQUFTM3hCLEdBQUdDO2VBQUh1akIsUUFBR0g7V0FDbEI7Z0JBRGVHLFFBQUdIO21CQUdJN08sR0FIUGdQLFFBR0N0USxHQUhEc1EsUUFHTHRqQixHQUhLc2pCOzJCQUFHSCxLQUlHO2VBQ04sb0JBRkNuUSxHQUhFbVE7ZUFLSDtpQkFDYSxJQUFQaU8sWUFBSm54QixZQUFXLGNBSGxCRCxHQUdPQztpQkFBVzttQkFBOEIsb0JBQXJDbXhCLE1BTk45TixLQUdPaFAsR0FISjZPO2lCQU9EOzthQUxZLFNBS1A7a0JBRWhCdEgsS0FBSy9iLEdBQUdDO1dBQ2QsR0FEV0Q7Z0JBQUdDO2VBS0osSUFEWXVVLEdBSlh4VSxNQUlLa1QsR0FKTGxULE1BSURFLEdBSkNGLE1BS0QsV0FETWtULEdBSkZqVCxJQUtKOztpQkFJa0IsSUFEWHF4QixXQUNXLFVBTE45YyxHQUlMOGM7aUJBQ0YsbUJBTExweEI7ZUFDQSxJQUVGLGFBQXFCLFVBSFBzVSxHQUVKK2M7ZUFDTCxpQkFISHJ4QixTQUFNZ1Q7YUFEQyxPQUhObFQ7V0FFSyxRQU93QjtrQkFJbEM0eEIsVUFBVTV5QixFQUFFd0k7ZUFBRitILE1BQUU2UztXQUNsQjtnQkFEZ0I3Uzs7Z0JBR0g1USxFQUhHNFE7Z0JBR043USxFQUhNNlE7O2dCQUFFdWlCLE9BR1JwekIsRUFBR0MsRUFIS3lqQjtnQkFBRjdTO2dCQUFFNlM7O2FBRVAsT0FGT0EsSUFHNEI7a0JBYTVDbGEsUUFBUWxJLEdBQUdDO1dBQ2tCLG1CQURsQkEsTUFDRCxlQURGRCxNQVhROEgsUUFBR0M7V0FDbkI7Z0JBRGdCRDtrQkFBR0M7aUJBTVQ7a0JBRHNCa3FCLEtBTGJscUI7a0JBS1N1cEIsR0FMVHZwQjtrQkFLS0MsR0FMTEQ7a0JBS0xtcUIsS0FMRXBxQjtrQkFLTjBNLEdBTE0xTTtrQkFLVm9MLEdBTFVwTDtrQkFNTixvQkFESm9MLEdBQWtCbEw7aUJBQ2QsU0FBSnRHO21CQUcrQjttQ0FKVDR2QixHQUFJVztvQkFJYixlQUpUemQsR0FBSTBkO29CQUxFcHFCO29CQUFHQzs7aUJBUVosT0FGRHJHO2VBRk07YUFEQyxPQUhNcUcsUUFZNEI7a0JBRS9DRixNQUFNN0gsR0FBR0MsSUFDWCxxQkFEUUQsR0FBR0MsT0FDTTtrQkFFWG95QixPQUFPcnlCLEdBQUdDO2VBQUh1akIsUUFBR0g7V0FDaEI7Z0JBRGFHO2tCQUFHSDtpQkFPSjtrQkFEb0NpTyxHQU5oQ2pPO2tCQU0wQnJiLEdBTjFCcWI7a0JBTW9CbGpCLEdBTnBCa2pCO2tCQU1NN08sR0FOVGdQO2tCQU1HdFEsR0FOSHNRO2tCQU1IdGpCLEdBTkdzakI7a0JBT0Qsb0JBREl0USxHQUEwQmxMO2lCQUM5QixTQUFKdEc7bUJBRUYsZ0JBSEl4QixHQUEwQkM7bUJBRzlCLGFBVE9xakIsS0FNU2hQLEdBTk42TyxLQU1nQ2lPO21CQUl2Qzt5QkFIRDV2QjttQkFNRixxQkFQVXdSLEdBQU1zQixNQUEwQjhjO21CQU8xQyxhQWJPOU4sS0FNSHRqQjttQkFETjtpQkFFUSxTQUlOLFVBTElBLEdBQU1nVCxRQUFvQi9TO2lCQUs5QixhQVhPcWpCLEtBTVNoUDtpQkFPaEI7ZUFSRjthQUZBLFNBVTZEO2tCQUUzRDFTLEtBQUt0RDtXbkN4WGxCOzs7bUJtQzBYb0JHLGFBQUhELGFBQUhrQztlQUFZLEtBRlJwQyxFQUVKb0M7ZUFBc0IsV0FGbEJwQyxFQUVERTsyQkFBR0M7O2FBREY7a0JBR0xpSixLQUFLcEosRUFBRVEsRUFBRTBFO2VBQUY2TCxNQUFFM0w7V0FDZjtnQkFEYTJMO2VBR2U7Z0JBQWY1USxFQUhBNFE7Z0JBR0g3USxFQUhHNlE7Z0JBR04zTyxFQUhNMk87Z0JBR2Usa0JBSGpCL1EsRUFHREUsRUFBdUIsS0FIdEJGLEVBR0pvQyxFQUhRZ0Q7Z0JBQUYyTCxJQUdBNVE7Z0JBSEVpRjs7YUFFSixPQUZJQSxPQUdrQztrQkFFM0MrSixRQUFRQztXbkNqWXJCOzs7ZW1DbVkwQjtnQkFBTmpQO2dCQUFIRDtnQkFBSGtDO2dCQUFZLGdCQUZMZ04sRUFFSmxQO2VBQVM7aUJBQU8saUJBRlprUCxFQUVQaE47aUJBQW1CLHFCQUFiakM7aUJBQWE7OztlQURmOztrQkFHTGtQLE9BQU9EO1duQ3JZcEI7OztlbUN1WTBCO2dCQUFOalA7Z0JBQUhEO2dCQUFIa0M7Z0JBQVksZ0JBRk5nTixFQUVIbFA7ZUFBUzs7O2lCQUFPLGdCQUZia1AsRUFFTmhOO2lCQUFtQix1QkFBYmpDO2lCQUFhO2VBRGY7O2tCQUdMNk4sT0FBT29CLEVBRVh0QztXbkMzWVQsR21DMllTQTthQUVXO2NBRkMzTSxFQUFaMk07Y0FBUzVNLEVBQVQ0TTtjQUFNMUssRUFBTjBLO2NBRVcsV0FKQXNDLEVBRUxoTjtjQUdLLGNBTEFnTixFQUVGbFA7Y0FJRSxXQU5Ba1AsRUFFQ2pQO2FBSUQsR0FETDJ6QixPQUhBMXhCLE1BRUEyVyxPQUZNNVksTUFJTm95QixJQUVxQixPQU4zQnpsQixFQU1rQyxZQUo1QmlNLElBRkc3WSxFQUlIcXlCO2FBR0MsY0FMRHhaLElBRUF3WjtXQUxHO2tCQVVMM2YsVUFBVXhEO1duQ3BadkI7YW1Dd1owQjtjQUZOalA7Y0FBSEQ7Y0FBSGtDO2NBRVksZ0JBSkhnTixFQUVUaE47Y0FFWTs7Y0FDTixjQUxHZ04sRUFFTmxQO2NBSVMsa0JBTkhrUCxFQUVIalA7Y0FJTTs7Z0JBRFgyekIsSUFHZ0IsZ0JBSlhDLEdBRUFFLElBRUgsZUFKREQsR0FGQzl6QixFQUlEZzBCO2FBRlUsU0FLSyxLQUxYSCxHQUZIN3pCLEVBSUcrekI7YUFHSCxpQkFMREQsR0FFQUU7V0FMRTtrQkFVTEM7V0FBVzthQUVnQixJQUF2QmgwQixXQUFIaUMsV0FBMEIsY0FBdkJqQzthQUFNLGlCQUFUaUM7V0FESSxRQUNnQztrQkFFckNneUI7Ozs7ZUFFZ0M7Z0JBQXpCajBCO2dCQUFIRDtnQkFBSGtDO2dCQUErQixVQUE1QmxDLEVBQTRCLG9CQUF6QkM7O3dCQUFOaUM7O2FBREk7a0JBR1RpeUIsU0FBUzd6QixHQUNYLHNCQURXQSxFQUNNO2tCQU1YOE8sS0FBSzNPO1duQzlhbEI7OztlbUNpYm1CO2dCQURDUjtnQkFBSEQ7Z0JBQUhrQztnQkFDSyxvQkFIRHpCLEVBRURUO2VBQ0UsU0FBSmdELEVBQ1UsT0FGUmhEO2VBQ0UsSUFFSCxhQUZEZ0QsRUFESy9DLEVBQU5pQyxVQUFNc2dCOzthQURGO2tCQWVMNFIsV0FUa0J0MEI7V25DcmIvQjs7O21CbUNpY29CdXlCLGVBQUhwcEIsZUFBSDRQO2VBQ0EsY0FiaUIvWSxFQVlkbUo7a0NBQUg0UDs7O3lCQVRNNVksV0FBSEQsV0FBSGtDO3FCQUNBLGNBSmlCcEMsRUFHZEUsbUJBQUhrQzsrQkFBTWpDOzttQkFEVDsyQkFVU295Qjs7YUFEVDtrQkFnQkVnQyxlQVRzQnYwQjtXbkN2Y25DOzs7bUJtQ21kb0J1eUIsZUFBSHBwQixlQUFINFA7ZUFDQSxjQWJxQi9ZLEVBWWxCbUo7a0NBQUg0UDs7O3lCQVRNNVksV0FBSEQsV0FBSGtDO3FCQUNBLGNBSnFCcEMsRUFHbEJFLG1CQUFIa0M7K0JBQU1qQzs7bUJBRFQ7MkJBVVNveUI7O2FBRFQ7a0JBZ0JFaUMsVUFUaUJ4MEI7V25DemQ5Qjs7O21CbUNxZW9CdXlCLGVBQUhwcEIsZUFBSDRQO2VBQ0EsY0FiZ0IvWSxFQVlibUo7a0NBQUdvcEI7Ozt5QkFUQXB5QixXQUFIRCxXQUFIa0M7cUJBQ0EsY0FKZ0JwQyxFQUdiRSxtQkFBR0M7K0JBQU5pQzs7bUJBREg7MkJBVUcyVzs7YUFESDtrQkFnQkUwYixjQVRxQnowQjtXbkMzZWxDOzs7bUJtQ3Vmb0J1eUIsZUFBSHBwQixlQUFINFA7ZUFDQSxjQWJvQi9ZLEVBWWpCbUo7a0NBQUdvcEI7Ozt5QkFUQXB5QixXQUFIRCxXQUFIa0M7cUJBQ0EsY0FKb0JwQyxFQUdqQkUsbUJBQUdDOytCQUFOaUM7O21CQURIOzJCQVVHMlc7O2FBREg7a0JBT0UyYixTQUFTL3pCO1duQzdmdEI7OztlbUNnZ0JtQjtnQkFEQ1I7Z0JBQUhEO2dCQUFIa0M7Z0JBQ0ssb0JBSEd6QixFQUVMVDtlQUNFLFNBQUpnRCxFQUNVLFVBRlJoRDtlQUNFLElBRUgsYUFGRGdELEVBREsvQyxFQUFOaUMsVUFBTXNnQjs7YUFERjtrQkFNVGlTLFNBQVN2eUIsRUFBRWxDLEVBQUVDO1duQ3BnQnRCO1dtQ3dnQk8sU0FKV2lDO2FBSWtCLGlCQUpsQkE7YUFJTSwrQkFKSmxDOzs7c0JBQUVDO2VBS2dCLGlCQUxoQkE7ZUFLRSwwQkFMSkQ7MkJBTVIsWUFOTWtDLEVBQUVsQyxFQUFFQztXQU9GLGFBUEZpQyxFQU9FLElBUEFsQyxFQUFFQyxHQU9PO2tCQUVoQitJLElBQUlsSixFQUVSOE07V25DL2dCVCxHbUMrZ0JTQTthQUVVO2NBRkMzTSxFQUFYMk07Y0FBUTVNLEVBQVI0TTtjQUFLMUssRUFBTDBLO2NBRVUsUUFKRjlNLEVBRUhvQztjQUdLLGVBTEZwQyxFQUVBRTtjQUlFLFFBTkZGLEVBRUdHO2dCQUFOaUMsTUFFQTJXLE9BRkc3WSxNQUdIaUosT0FITWhKLE1BSU5veUIsSUFDa0MsT0FMdkN6bEI7YUFNTSxnQkFKRGlNLElBQ0E1UCxJQUNBb3BCO1dBTEk7a0JBZUx6a0IsV0FBVzlOLEVBRWY4TTtXbkMvaEJULEdtQytoQlNBO2FBRVU7Y0FGQzNNLEVBQVgyTTtjQUFRNU0sRUFBUjRNO2NBQUsxSyxFQUFMMEs7Y0FFVSxjQUpLOU0sRUFFVm9DO2NBR0ssZUFMS3BDLEVBRVBFO2NBSUUsY0FOS0YsRUFFSkc7YUFJRCxHQURMZ0o7ZUFJQyxJQURJeXJCLElBSEx6ckI7a0JBSEEvRyxNQVJNOFgsTUFRSGhhLE1BTUUwMEIsT0FOQ3owQixNQVJHNlosR0FlOEIsT0FQNUNsTjtlQVFXLGdCQWhCQW9OLEdBY0QwYSxJQWRJNWE7YUFDaEIsR0FEYUU7ZUFJRCxHQUpJRjtpQkFJcUIsd0JBSnJCQTtpQkFJUSxnQkFKWEUsR0FJVyxRQUpSRjtlQUdBLE9BSEhFO2FBRUcsT0FGQUY7V0FPTDtrQkFtQ1Q2YSxRQUFRenlCO1dBQ1YsR0FEVUE7Ozs7Ozs7Ozs7dUJBUVk7NkNBUlpBO3dCQXBCVjtrQ0FBWTlCLEVBQUU4QjsyQkFDWixVQURVOUI7O3FDQUVBLFlBRkU4Qjs7eUNBR0QyeUIsSUFIQzN5QixLQUdQNHlCLEdBSE81eUIsb0JBR1A0eUIsUUFBTUQ7OztrQ0FIQzN5Qjs7O3VDQUlLNnlCLFlBQU4zYSxXQUFONGEsS0FKTzl5QjtxREFJUDh5QixVQUFNNWEsUUFBTTJhOzs7a0NBSkw3eUI7Ozs7O3lDQU1XK3lCLFlBQU45YSxXQUFOSyxhQUFOMGEsS0FOT2h6Qjt1REFNUGd6QixVQUFNMWEsVUFBTUwsV0FBTThhOzJCQUlyQixPQVZRNzBCLFVBV00sVUFEViswQixHQVZNanpCLEdBV0k7OEJBQUoyVzs2QkFJTzs4QkFEUkMsSUFIQ0Q7OEJBR1J1YyxJQUhRdmM7OEJBSU8sYUFmVHpZLElBVUorMEIsZ0JBSUtyYzs4QkFDUTs7NkJBQ2YsaUJBTEV2USxLQUdGNnNCLElBQ0k1c0IsT0FBTzZzQjsyQkFGTCw0QkFHa0I7dUJBRTFCLFdBQUssU0FuQlF4Yzt5QkE0QkV5YztxQkFBYyxXQUFkQSxHQUFjLFNBQVEsU0FBUSxTQUFRO21CQUQ1Qix5QkFBUSxTQUFRO2lCQURwQix5QkFBUTtlQURaO2FBRFg7V0FERixPQWpWTm5vQixLQXVWa0Q7a0JBRWxEb29CLFFBQVEzNUIsRUFBRTJ0QjtXQUNaLDBCQUFtQmpwQixFQUFFRyxHQUFLLFdBQUxBLEVBQUZILEVBQWMsRUFEckJpcEIsRUFBRjN0QixFQUM0QjtrQkFFcEM0NUIsT0FBTzU1QixHQUFJLGVBQUpBLEVBNVZQdVIsTUE0VjBCO2tCQUV0QnNvQixZQUFhenlCO1dBQU8sR0FBUEE7YUFFOEIsSUFBbkNsSCxLQUZLa0gsS0FFUjRKLEVBRlE1SixLQUVYdkMsRUFGV3VDLEtBRThCLGVBQXRDNEosRUFBRzlRO2FBQXNCLFVBQTVCMkUsaUJuQ2xsQmYsT21DZ2xCYWcxQjtXQUNHLFFBQzJEO2tCQUVsRTVnQixPQUFPN1I7V0FBaUIsbUJBQWpCQTtXQUFpQixzQm5DcGxCakMsT21DZ2xCYXl5Qix1QkFJcUM7a0JBRXJDQyxVQUFVcDFCLEVBQUV3STtlQUFGK0gsTUFBRTZTO1dBQ2xCO2dCQURnQjdTOzs7Z0JBR043USxFQUhNNlE7Z0JBR1QzTyxFQUhTMk87Z0JBQUV1aUIsT0FHUnB6QixFQUFIa0MsRUFIV3doQjtnQkFBRjdTO2dCQUFFNlM7O2FBRVAsT0FGT0EsSUFHNEI7a0JBRXhDaVMsZ0JBQWlCM3lCO1dBQU8sR0FBUEE7YUFFOEIsSUFBdkNsSCxLQUZTa0gsS0FFWjRKLEVBRlk1SixLQUVmdkMsRUFGZXVDLEtBRThCLGVBQTFDNEosRUFBRzlRO2FBQXNCLFVBQTVCMkUsaUJuQzdsQmYsT21DMmxCYWsxQjtXQUNHLFFBQytEO2tCQUV0RUMsV0FBVzV5QjtXQUFxQixtQkFBckJBO1dBQXFCLHNCbkMvbEJ6QyxPbUMybEJhMnlCLDJCQUk2QztrQkFFakRFLFlBQVlDLElBQUl4MUI7ZUFDRnVRLElBREV2USxFQUNBMEM7V0FBSTtnQkFBTjZOO2VBR0UsSUFETDVRLEVBRkc0USxPQUVBN1EsRUFGQTZRLE9BRU4zTyxFQUZNMk8sT0FHRSxvQkFERjdRLEVBSEY4MUI7ZUFJSSxTQUVSMTFCO2lCQUFPLFFBQVBBLEdBQ0ssV0FKQ0osRUFBSEMsRUFGSytDLEdBQUY2TixJQUVOM08sRUFGUWM7cUJBQUY2TixJQUVINVE7O2VBQ0ssWUFERkQsRUFBSEMsRUFGSytDOzs7bUNuQ2xtQnpCLE9tQ2dsQmF5eUIsd0JBMkJzQjs7aUJBelgxQnRvQjtpQkFFQXFCO2lCQUVJaWtCO2lCQW5IQWY7aUJBWUpDO2lCQTZHSWU7aUJBZUFDO2lCQWdCQUk7aUJBa0NBRTtpQkFTQTVWO2lCQTZCSjdUO2lCQUdBTDtpQkFHSXdxQjtpQkFlQXZ3QjtpQkFxSkE0RjtpQkFqSkFFO2lCQUtBK0Y7aUJBSUFFO2lCQUlBckI7aUJBb0pBRjtpQkF6SUE4RTtpQkFXQXVoQjtpQkFRSkU7aUJBdlBJbkM7aUJBS0FDO2lCQUtBQztpQkFLQUM7aUJBZkFIO2lCQUtBQztpQkFnREFLO2lCQXlNQWxqQjtpQkErRUFvbEI7aUJBL0RBSjtpQkFrQkFDO2lCQWtCQUM7aUJBa0JBQztpQkE2RUpJO2lCQWdDQWtCO2lCQWJBaGhCO2lCQVdBK2dCO2lCQXBCQUw7aUJBR0FDO0lBdGdCRztJRGtCRzs7OztrQkViTi9FLGNBQVMsY0FFSHJKLG9CQURHLFFBQ0k7a0JBRWI3YixPQUFPckosRUFBRXpCLEVBQUV5WCxFQUFFalk7V0FDTixjQURBaUMsR0FDa0IsVUFEWmpDLEdBQ1ksS0FBTDJ3QixNQUFsQkYsY0FBa0JFO3FCQURiMXVCLEVBQUV6QixFQUFFeVgsRUFBRWpZLE9BRTRDO2tCQUV6RDB4QixVQUFVbHhCLEVBQUV5WCxHQUFJLFlBQU56WCxFQUFFeVgsTUFBdUM7a0JBRW5EMlksSUFBSTN1QixFQUFFekIsRUFBRXlYLEVBQUVqWTtXQUNaLEdBRE1pQyxNQUNtQ2tsQixFQURuQ2xsQixLQUNGd3VCLEdBQXFDdEosV0FBckNzSjtXQUNKLEdBRll6d0IsTUFFNkIwd0IsSUFGN0Ixd0IsS0FFUjJ3QixHQUFxQ0QsYUFBckNDO1dBQ0osSUFESUEsY0FEQUY7YUFFZ0IsR0FIZHh1QjtlQU9nQixJQURPNHVCLEdBTnZCNXVCLEtBTWlCNnpCLEdBTmpCN3pCLEtBTVc2dUIsR0FOWDd1QixLQU1LOHVCLEdBTkw5dUIsS0FPZ0IsWUFETzR1QjtlQUNwQixrQkFERUUsSUFFYSxjQUZiQSxHQUFNRCxHQUFNZ0YsR0FFQyxPQUZLakYsR0FOckJyd0IsRUFBRXlYLEVBQUVqWTtlQVNELEdBSGtCNndCO2lCQU9vQjtrQkFEWEcsSUFOVEg7a0JBTUVrRixJQU5GbEY7a0JBTUxJLElBTktKO2tCQU1aSyxJQU5ZTDtrQkFPb0IsWUFEWEcsSUFaOUJ4d0IsRUFBRXlYLEVBQUVqWTtpQkFhTyxxQkFQUit3QixHQUFNRCxHQUFNZ0YsR0FNTjVFLEtBQU9ELElBQU84RTtlQURaO2FBTk47V0FVSixJQWRMdEYsY0FDQUU7YUFheUIsR0FmakIzd0I7ZUFtQlUsSUFET214QixHQWxCakJueEIsS0FrQldnMkIsR0FsQlhoMkIsS0FrQktveEIsR0FsQkxweEIsS0FrQkRxeEIsR0FsQkNyeEIsS0FtQlUsWUFEWHF4QjtlQUNGLGtCQURvQkYsSUFFZCxxQkFwQlRsdkIsRUFBRXpCLEVBQUV5WCxFQWtCQ29aLElBQU1ELEdBQU00RSxHQUFNN0U7ZUFHbEIsR0FIQUU7aUJBT21DO2tCQURSQyxJQU4zQkQ7a0JBTW9CNEUsSUFOcEI1RTtrQkFNYUUsSUFOYkY7a0JBTU1HLElBTk5IO2tCQU9tQyxZQURSQyxJQU5yQkYsR0FBTTRFLEdBQU03RTtpQkFPVixxQkF6QmJsdkIsRUFBRXpCLEVBQUV5WCxFQXdCT3VaLEtBQU9ELElBQU8wRTtlQURaO2FBTk47V0FXWCxTQTFCRXRGLE1BREFGLGNBQ0FFO3FCQUZFMXVCLEVBQUV6QixFQUFFeVgsRUFBRWpZLE9BNEJpRDthQUUzRGtOO2tCQUVBcUIsZ0JBQVcsZ0JBQW1DO2tCQUUxQ2tqQixJQUFJanhCLEVBQUUwMUIsS0FHVjVNO1dwQzVIVCxHb0M0SFNBO2FBQ1UsSUFEUW5DLEVBQWxCbUMsS0FBZXRwQixFQUFmc3BCLEtBQVlyUixFQUFacVIsS0FBU3ZwQixFQUFUdXBCLEtBQU1ybkIsRUFBTnFuQixLQUNVLG9CQUpGOW9CLEVBR0NUO2FBQ0MsU0FBSmdELEVBRUYsT0FIUWtWLE1BSEZpZSxLQUdWNU0sS0FBTXJuQixFQUhFekIsRUFBRTAxQixLQUdLbDJCLEVBQUdtbkI7YUFJWCxRQUhEcGtCLEdBT08sSUFBTG91QixHQUFLLElBWEwzd0IsRUFBRTAxQixLQUdLbDJCLEdBUUYsT0FSRUEsTUFRUG14QixHQVJSN0gsRUFTMkIsSUFUckJybkIsRUFBR2xDLEVBQUdrWSxFQVFKa1o7YUFQRSxJQUlGSixHQUFLLElBUkx2d0IsRUFBRTAxQixLQUdKajBCO2FBS08sT0FMUEEsTUFLRTh1QixHQUxSekgsRUFNMkIsSUFEbkJ5SCxHQUxDaHhCLEVBQUdrWSxFQUFHalk7V0FEYixZQUZNUSxFQUFFMDFCO2tCQWNOL21CLEtBQUszTztXcEN2SWxCOzs7ZW9DMkltQjtnQkFES1I7Z0JBQUhpWTtnQkFBSGxZO2dCQUFIa0M7Z0JBQ0ksb0JBSkR6QixFQUdBVDtlQUNDLFNBQUpnRCxFQUNVLE9BRkprVjtlQUNGLElBRUgsYUFGRGxWLEVBRFMvQyxFQUFUaUMsVUFBU3NnQjs7YUFEYjtrQkFlRTRSLFdBVHFCdDBCO1dwQy9JbEM7Ozs7Z0JvQzJKd0J1eUI7Z0JBQUgzTjtnQkFBSHpiO2dCQUFINFA7ZUFDRCxjQWJvQi9ZLEVBWWhCbUo7K0JBQUd5YixVQUFON0w7Ozt5QkFUUzVZLFdBQUhpWSxXQUFIbFksV0FBSGtDO3FCQUNELGNBSm9CcEMsRUFHaEJFLGdCQUFHa1ksUUFBTmhXOytCQUFTakM7O21CQURiOzJCQVVhb3lCOzthQURiO2tCQWdCRWdDLGVBVHlCdjBCO1dwQ2pLdEM7Ozs7Z0JvQzZLd0J1eUI7Z0JBQUgzTjtnQkFBSHpiO2dCQUFINFA7ZUFDRCxjQWJ3Qi9ZLEVBWXBCbUo7K0JBQUd5YixVQUFON0w7Ozt5QkFUUzVZLFdBQUhpWSxXQUFIbFksV0FBSGtDO3FCQUNELGNBSndCcEMsRUFHcEJFLGdCQUFHa1ksUUFBTmhXOytCQUFTakM7O21CQURiOzJCQVVhb3lCOzthQURiO2tCQWdCRWlDLFVBVG9CeDBCO1dwQ25MakM7Ozs7Z0JvQytMd0J1eUI7Z0JBQUgzTjtnQkFBSHpiO2dCQUFINFA7ZUFDRCxjQWJtQi9ZLEVBWWZtSjsrQkFBR3liLFVBQUcyTjs7O3lCQVRBcHlCLFdBQUhpWSxXQUFIbFksV0FBSGtDO3FCQUNELGNBSm1CcEMsRUFHZkUsZ0JBQUdrWSxRQUFHalk7K0JBQVRpQzs7bUJBREo7MkJBVUkyVzs7YUFESjtrQkFnQkUwYixjQVR3QnowQjtXcENyTXJDOzs7O2dCb0NpTndCdXlCO2dCQUFIM047Z0JBQUh6YjtnQkFBSDRQO2VBQ0QsY0FidUIvWSxFQVluQm1KOytCQUFHeWIsVUFBRzJOOzs7eUJBVEFweUIsV0FBSGlZLFdBQUhsWSxXQUFIa0M7cUJBQ0QsY0FKdUJwQyxFQUduQkUsZ0JBQUdrWSxRQUFHalk7K0JBQVRpQzs7bUJBREo7MkJBVUkyVzs7YUFESjtrQkFPRTJiLFNBQVMvekI7V3BDdk50Qjs7O2VvQzJObUI7Z0JBREtSO2dCQUFIaVk7Z0JBQUhsWTtnQkFBSGtDO2dCQUNJLG9CQUpHekIsRUFHSlQ7ZUFDQyxTQUFKZ0QsRUFDVSxVQUZKa1Y7ZUFDRixJQUVILGFBRkRsVixFQURTL0MsRUFBVGlDLFVBQVNzZ0I7O2FBRGI7a0JBTUVpUSxJQUFJaHlCO1dwQy9OakI7Oztlb0NtT21CO2dCQURFUjtnQkFBSEQ7Z0JBQUhrQztnQkFDSSxvQkFKRnpCLEVBR0NUO2dCQUNDLFdBQUpnRDtlQUFJLFFBRlI7ZUFFUSxJQURFd2YsYUFDTnhmLEVBRE0vQyxFQUFOaUMsVUFBTXNnQjs7YUFEVjtrQkFLRTRUO1dwQ3RPYjtXb0NzTzJCOzs7O21CQUVBbGUsYUFBSGxZOzJCQUFHa1k7YUFEVCxnQkFFZ0I7a0JBRXJCbWU7V3BDM09iO1dvQzJPK0I7Ozs7bUJBRUpuZSxhQUFIbFk7OEJBQUdrWTthQURULFNBRW1CO2tCQUV4Qm9lO1dwQ2hQYjtXb0NnUDJCOzs4QkFHTiwrQkFBTjlUO21CQURHdEssYUFBSGxZOzJCQUFHa1k7YUFEQSxnQkFFZ0I7a0JBRXJCcWU7V3BDclBiO1dvQ3FQK0I7OzhCQUdWLCtCQUFOL1Q7bUJBREd0SyxhQUFIbFk7OEJBQUdrWTthQURBLFNBRW9CO2tCQUV6QnNlO1dBQXFCOzs7bUJBR1Z2MkIsV0FBSGlZLFdBQUhsWTtlQUFnQixvQ0FBaEJBLEVBQUdrWSxFQUFHalk7YUFETSxJQUFOb3lCO2FBQU0sT0FBTkE7V0FETiwwQ0FFNEM7dUJBRS9DclksR0FBR0Y7V0FDWCxHQURRRTthQUtKLEdBTE9GO2VBS00sc0JBTE5BLElBS007ZUFDRixXQU5QRSxHQUtDdlosRUFBR3lYLEVBQ0csbUJBTko0QjthQUdLLE9BSFJFO1dBRVEsT0FGTEYsRUFNMkI7a0JBRWhDNFksT0FBT2p5QixFQUdYOG9CO1dwQzFRVCxHb0MwUVNBO2FBQ1UsSUFETXRwQixFQUFoQnNwQixLQUFhclIsRUFBYnFSLEtBQVV2cEIsRUFBVnVwQixLQUFPcm5CLEVBQVBxbkIsS0FDVSxvQkFKQzlvQixFQUdEVDthQUNBLFNBQUpnRCxFQUNVLFlBRlRkLEVBQVNqQzthQUdULFFBRkQrQyxHQUtPLElBQUxvdUIsR0FBSyxPQVRGM3dCLEVBR0tSLEdBTUgsT0FOR0EsTUFNUm14QixHQU5SN0gsRUFNa0QsSUFOM0NybkIsRUFBR2xDLEVBQUdrWSxFQU1Ma1o7YUFMRSxJQUdGSixHQUFLLE9BUEZ2d0IsRUFHSnlCO2FBSU0sT0FKTkEsTUFJQzh1QixHQUpSekgsRUFJa0QsSUFBMUN5SCxHQUpFaHhCLEVBQUdrWSxFQUFHalk7V0FEZDtrQkFTRXcyQixPQUFPaDJCLEVBQUVYLEVBTWJ5cEI7V3BDeFJULEdvQ3dSU0E7YUFDVSxJQURRbkMsRUFBbEJtQyxLQUFldHBCLEVBQWZzcEIsS0FBWXJSLEVBQVpxUixLQUFTdnBCLEVBQVR1cEIsS0FBTXJuQixFQUFOcW5CLEtBQ1Usb0JBUEM5b0IsRUFNRlQ7YUFDQyxTQUFKZ0Q7ZUFFSSxxQkFUR2xELEtBTURvWTtlQUdGO2lCQUdGLElBREdpZSxjQUNILE9BTklqZSxNQUtEaWUsS0FMWDVNLEtBQU1ybkIsRUFOS3pCLEVBV0EwMUIsS0FMSWwyQixFQUFHbW5CO2VBSUosWUFKUmxsQixFQUFTakM7YUFPSixRQU5MK0MsR0FVTyxJQUFMb3VCLEdBQUssT0FqQkYzd0IsRUFBRVgsRUFNRUcsR0FXRixPQVhFQSxNQVdQbXhCLEdBWFI3SCxFQVkyQixJQVpyQnJuQixFQUFHbEMsRUFBR2tZLEVBV0prWjthQVZFLElBT0ZKLEdBQUssT0FkRnZ3QixFQUFFWCxFQU1Qb0M7YUFRTyxPQVJQQSxNQVFFOHVCLEdBUlJ6SCxFQVMyQixJQURuQnlILEdBUkNoeEIsRUFBR2tZLEVBQUdqWTtXQUpELHVCQUZESDtXQUVDLFlBRUcsSUFBUjQyQixrQkFBUSxZQUpOajJCLEVBSUZpMkI7V0FERztrQkFpQlJ0ekIsS0FBS3REO1dwQ3RTbEI7OzttQm9Dd1N3QkcsYUFBSGlZLGFBQUhsWSxhQUFIa0M7ZUFDSixLQUhPcEMsRUFFSG9DO2VBQ00sV0FISHBDLEVBRUFFLEVBQUdrWTsyQkFBR2pZOzthQUROO2tCQUlMK0ksSUFBSWxKO1dwQzNTakI7YW9DK1NvQjtjQURPc25CO2NBQUhubkI7Y0FBSGlZO2NBQUhsWTtjQUFIa0M7Y0FDSyxRQUpIcEMsRUFHRm9DO2NBRUssZUFMSHBDLEVBR0lvWTtjQUdELFFBTkhwWSxFQUdPRzthQUdKLFVBRkw0WSxJQURHN1ksRUFFSDBrQixJQUNBMk4sSUFIWWpMO1dBRGhCO2tCQU9FelcsS0FBSzdRO1dwQ3BUbEI7YW9Dd1RvQjtjQURPc25CO2NBQUhubkI7Y0FBSGlZO2NBQUhsWTtjQUFIa0M7Y0FDSyxTQUpGcEMsRUFHSG9DO2NBRUssZUFMRnBDLEVBR0FFLEVBQUdrWTtjQUdELFNBTkZwWSxFQUdNRzthQUdKLFVBRkw0WSxJQURHN1ksRUFFSDBrQixJQUNBMk4sSUFIWWpMO1dBRGhCO2tCQU9FbGUsS0FBS3BKLEVBQUV5cEIsRUFBRXZrQjtlQUFGMnhCLE1BQUV6eEI7V0FDZjtnQkFEYXl4QjtlQUlBO2dCQURJMTJCLEVBSEowMkI7Z0JBR0N6ZSxFQUhEeWU7Z0JBR0YzMkIsRUFIRTIyQjtnQkFHTHowQixFQUhLeTBCO2dCQUlBLGtCQUpGNzJCLEVBR0FFLEVBQUdrWSxFQUNNLEtBSlRwWSxFQUdIb0MsRUFIT2dEO2dCQUFGeXhCLElBR0kxMkI7Z0JBSEZpRjs7YUFFSixPQUZJQSxPQUlxQjtrQkFFOUIrSixRQUFRQztXcENuVXJCOzs7ZW9DcVU4QjtnQkFBTmpQO2dCQUFIaVk7Z0JBQUhsWTtnQkFBSGtDO2dCQUFlLGdCQUZUZ04sRUFFSGxQLEVBQUdrWTtlQUFTO2lCQUFTLGlCQUZsQmhKLEVBRU5oTjtpQkFBd0IscUJBQWZqQztpQkFBZTs7O2VBRHJCOztrQkFHTGtQLE9BQU9EO1dwQ3ZVcEI7Oztlb0N5VThCO2dCQUFOalA7Z0JBQUhpWTtnQkFBSGxZO2dCQUFIa0M7Z0JBQWUsZ0JBRlZnTixFQUVGbFAsRUFBR2tZO2VBQVM7OztpQkFBUyxnQkFGbkJoSixFQUVMaE47aUJBQXdCLHVCQUFmakM7aUJBQWU7ZUFEckI7O2tCQVdMMjJCLGdCQUFnQkMsRUFBRXAyQjtXcENuVi9CO2lCb0NxVndCUixXQUFIaVksV0FBSGxZLFdBQUhrQzthQUNGLDJCQUhnQjIwQixFQUFFcDJCLEVBRWhCeUIsR0FBR2xDLEVBQUdrWSxFQUFHalk7V0FETixpQkFEVzQyQixFQUFFcDJCO2tCQUtsQnEyQixnQkFBZ0JELEVBQUVwMkI7V3BDeFYvQjtpQm9DMFZ3QlIsV0FBSGlZLFdBQUhsWSxXQUFIa0M7YUFDSSxXQURKQSxFQUFHbEMsRUFBR2tZLEVBQ0YsZ0JBSFUyZSxFQUFFcDJCLEVBRVBSO1dBRE4saUJBRFc0MkIsRUFBRXAyQjtrQkFRbEJ1VCxLQUFLOVIsRUFBRWxDLEVBQUVrWSxFQUFFalk7V0FDakIsR0FEV2lDO2dCQUFNakM7O2dCQUtpQjZ4QixHQUxqQjd4QjtnQkFLV214QixHQUxYbnhCO2dCQUtLZzJCLEdBTExoMkI7Z0JBS0RveEIsR0FMQ3B4QjtnQkFLUHF4QixHQUxPcnhCO2dCQUlpQjh4QixHQUp2Qjd2QjtnQkFJaUI0dUIsR0FKakI1dUI7Z0JBSVc2ekIsR0FKWDd6QjtnQkFJSzZ1QixHQUpMN3VCO2dCQUlEOHVCLEdBSkM5dUI7dUJBS3VCNHZCLGNBREFDO3dCQUVHLElBRjNCZixHQUFNRCxHQUFNZ0YsR0FFZSxLQUZUakYsR0FKZjl3QixFQUFFa1ksRUFBRWpZO3lCQUlpQjh4QixjQUNBRDswQkFFTixTQVBqQjV2QixFQUFFbEMsRUFBRWtZLEVBS0xvWixJQUFNRCxHQUFNNEUsR0FBTTdFOzBCQUd4QixPQVJPbHZCLEVBQUVsQyxFQUFFa1ksRUFBRWpZO2FBR0QsdUJBSEhELEVBQUVrWSxFQUFKaFc7V0FFSyx1QkFGSGxDLEVBQUVrWSxFQUFFalksRUFRQztrQkFNaEI4TixPQUFPaU0sR0FBR0Y7V0FDWixHQURTRTthQUtMLEdBTFFGO2VBS0ssc0JBTExBLElBS0s7ZUFDRCxZQU5QRSxHQUtBdlosRUFBR3lYLEVBQ0ksbUJBTko0QjthQUdJLE9BSFBFO1dBRU8sT0FGSkYsRUFNMkI7a0JBRXJDaWQsZUFBZS9jLEdBQUdoYSxFQUFFa1ksRUFBRTRCO1dBQ3hCLEdBRHNCNUIsR0FFVixJQUFMd00sSUFGZXhNLEtBRVYsWUFGSzhCLEdBQUdoYSxFQUViMGtCLElBRmlCNUssSUFHZCxjQUhPRSxHQUFPRixHQUdGO2tCQUVoQndZLE1BQU03eEI7V3BDM1huQjthb0MrWG1CO2NBREtSO2NBQUhpWTtjQUFIbFk7Y0FBSGtDO2NBQ0ksb0JBSkF6QixFQUdEVDthQUNDLFNBQUpnRCxFQUNVLFVBRlZkLEtBQU1nVyxHQUFHalk7YUFHUixRQUZEK0M7ZUFLbUIsZ0JBVGZ2QyxFQUdLUixHQU1VO2VBQWMsZUFOakNpQyxFQUFHbEMsRUFBR2tZLEVBTUg0WSxJQUFJeUIsS0FBTW5CO2FBTFQ7Y0FHZSxjQVBmM3dCLEVBR0p5QjtjQUltQjs7O2FBQXdCLFVBQXhDOHVCLEdBQUl3QixPQUFvQyxLQUE5QmxCLEdBSlZ0eEIsRUFBR2tZLEVBQUdqWTtXQURiO2tCQVNFMmpCLE1BQU05akIsRUFBRXdCLEdBQUdDO1dBQ2pCLEdBRGNEO2lCQUdxQjJZLEdBSHJCM1ksTUFHZXdVLEdBSGZ4VSxNQUdTMDFCLEdBSFQxMUIsTUFHR2tULEdBSEhsVCxNQUdIRSxHQUhHRjthQUd3QyxVQUhyQ0MsT0FHa0IwWTtlQUNaOzRCQUROekYsR0FIQWpUO2dCQUlNOzs7Z0JBQ21DLFdBTDlDekIsRUFHaUJnVyxHQUNaOGM7Z0JBQ3FCLGdCQUwxQjl5QixFQUdLMFUsTUFBTXdpQixJQUNWQztlQUNNLDRCQUxQbjNCLEVBR0QwQixHQUNGQyxJQURRK1M7O1lBREcsS0FGSGpULEdBRUc7Y0FGSEE7YUFPTTtjQURTc3hCLEtBTmZ0eEI7Y0FNUzIxQixLQU5UMzFCO2NBTUcrSCxHQU5IL0g7Y0FNSDJYLEtBTkczWDtjQU9NLGNBREgrSCxHQU5OaEk7Y0FPUzs7O2NBQ21DLFdBUjlDeEIsRUFPS2d6QixLQURlRDtjQUVNLGdCQVIxQi95QixFQU1Rd0osR0FDUDZ0QixRQURhRDthQUVQLDRCQVJQcDNCLEVBT0htWixLQURLQyxNQUFNNVA7V0FJaEIsNEJBQVk7a0JBRVZxcEIsTUFBTTd5QixFQUFFd0IsR0FBR0M7V0FDakIsR0FEY0Q7Z0JBQUdDOztnQkFJa0J3WSxHQUpsQnhZO2dCQUlZcXhCLEdBSlpyeEI7Z0JBSU0wMUIsR0FKTjExQjtnQkFJQStILEdBSkEvSDtnQkFJTkUsR0FKTUY7Z0JBR2tCMFksR0FIckIzWTtnQkFHZXdVLEdBSGZ4VTtnQkFHUzAxQixHQUhUMTFCO2dCQUdHa1QsR0FISGxUO2dCQUdIRSxHQUhHRjtrQkFJcUJ5WSxNQURBRTtpQkFHVjs4QkFIUnpGLEdBSEFqVDtrQkFNUTs7O2tCQUNYLFFBUEZ6QixFQUdEMEIsR0FHQTBYO2tCQUN5QixRQVB4QnBaLEVBR2lCZ1csR0FHVitjO2lCQUNpQixHQURyQnFFO21CQUlJLElBQU5FLEtBSkVGO21CQUl3QixzQkFIN0JoMUIsRUFKT3NTLEdBT3NCLFdBVjNCMVUsRUFHSzBVLEdBQU13aUIsR0FPVkksTUFIbUJuM0I7aUJBRWhCLFlBRk5pQyxFQUpPc1MsR0FBTXdpQixHQUlTLzJCO2VBS1A7OEJBUlJxSixHQUpIaEk7Z0JBWVc7OztnQkFDWCxVQWJGeEIsRUFZRG1aLEtBUkF4WDtnQkFTeUIsVUFieEIzQixFQVlPZ3pCLEtBUlVGO2VBU08sR0FEckJ1RTtpQkFJSSxJQUFORSxLQUpFRjtpQkFJd0Isc0JBSDdCdGUsSUFUT3ZQLEdBWXNCLFdBaEIzQnhKLEVBSUt3SixHQVlKK3RCLEtBWlVKLElBU1M1RTtlQUVoQixZQUZOeFosSUFUT3ZQLEdBQU0ydEIsR0FTUzVFO2lCQVh0Qi94QixFQUZJZ0I7O2dCQUVKaEIsRUFGT2lCO1dBRVksT0FBbkJqQixDQWMyQztrQkFFL0N3TixPQUFPb0IsRUFFWHFhO1dwQ3RhVCxHb0NzYVNBO2FBRVc7Y0FGSXRwQixFQUFmc3BCO2NBQVlyUixFQUFacVI7Y0FBU3ZwQixFQUFUdXBCO2NBQU1ybkIsRUFBTnFuQjtjQUVXLFdBSkFyYSxFQUVMaE47Y0FHTSxlQUxEZ04sRUFFRmxQLEVBQUdrWTtjQUlELFdBTkFoSixFQUVJalA7YUFJSixHQURMcTNCO2tCQUhBcDFCLE1BRUEyVyxPQUZTNVksTUFJVG95QixJQUMrQixPQUxyQzlJLEVBSzRDLFlBSHRDMVEsSUFGRzdZLEVBQUdrWSxFQUlObWE7YUFFQyxjQUpEeFosSUFFQXdaO1dBTEc7a0JBU0x6a0IsV0FBVzlOO1dwQzlheEI7YW9Da2JvQjtjQUZJRztjQUFIaVk7Y0FBSGxZO2NBQUhrQztjQUVLLGVBSklwQyxFQUVUb0M7Y0FHTSxlQUxHcEMsRUFFTkUsRUFBR2tZO2NBSUQsZUFOSXBZLEVBRUFHO2FBSUosR0FETHMzQixLQUdXLElBQU43UyxJQUhMNlMsT0FHVyxZQUpYMWUsSUFGRzdZLEVBTUUwa0IsSUFGTDJOO2FBR1EsY0FMUnhaLElBRUF3WjtXQUxHO2tCQVdMM2YsVUFBVXhEO1dwQzFidkI7YW9DOGIwQjtjQUZGalA7Y0FBSGlZO2NBQUhsWTtjQUFIa0M7Y0FFVyxnQkFKSGdOLEVBRVJoTjtjQUVXOztjQUNMLGVBTEVnTixFQUVMbFAsRUFBR2tZO2NBSUssa0JBTkhoSixFQUVDalA7Y0FJRTs7Z0JBRFhxM0IsS0FHa0IsZ0JBSmJ6RCxHQUVBRSxJQUVILGVBSkRELEdBRkU5ekIsRUFBR2tZLEVBSUw4YjthQUZVLFNBS0ssS0FMWEgsR0FGRjd6QixFQUFHa1ksRUFJRDZiO2FBR0gsaUJBTERELEdBRUFFO1dBTEU7a0JBWUxkLFVBQVUzSixFQUFFemdCO2VBQUY2dEIsTUFBRWpUO1dBQ2xCO2dCQURnQmlUOztnQkFHQzEyQixFQUhEMDJCO2dCQUdGemUsRUFIRXllO2dCQUdMMzJCLEVBSEsyMkI7O2dCQUFFdkQsT0FHUHB6QixFQUFHa1ksRUFBR2pZLEVBSEN5akI7Z0JBQUZpVDtnQkFBRWpUOzthQUVQLE9BRk9BLElBR21DO2tCQUVuRGxhLFFBQVF3RyxJQUFJeW5CLEdBQUdDO1dBWWlCLG1CQVpqQkEsTUFZRixlQVpERCxNQUNNcnVCLFFBQUdDO1dBQ25CO2dCQURnQkQ7a0JBQUdDO2lCQU1UO2tCQUQ4QmtxQixLQUxyQmxxQjtrQkFLaUJ1cEIsR0FMakJ2cEI7a0JBS2E0dEIsR0FMYjV0QjtrQkFLU0MsR0FMVEQ7a0JBS0RtcUIsS0FMRnBxQjtrQkFLRjBNLEdBTEUxTTtrQkFLTjR0QixHQUxNNXRCO2tCQUtWb0wsR0FMVXBMO2tCQU1OLG9CQURKb0wsR0FBc0JsTDtpQkFDbEIsU0FBSnRHO21CQUVJLElBQUo2WCxJQUFJLFdBVEo3SyxJQU1JZ25CLEdBQXNCQzttQkFHdEIsU0FBSnBjO3FCQUUwQjtxQ0FMSStYLEdBQUlXO3NCQUsxQixlQUxBemQsR0FBSTBkO3NCQUxGcHFCO3NCQUFHQzs7bUJBU0YsT0FEWHdSO2lCQURXLE9BRFg3WDtlQUZNO2FBREMsT0FITXFHLFFBVzZCO2tCQUVsREYsTUFBTTZHLElBQUl5bkIsR0FBR0M7V0FTaUIsbUJBVGpCQSxNQVNGLGVBVERELE1BQ01ydUIsUUFBR0M7V0FDakI7Z0JBRGNEO2tCQUFHQztpQkFNZjtrQkFEc0NrcUIsS0FMdkJscUI7a0JBS21CdXBCLEdBTG5CdnBCO2tCQUtlNHRCLEdBTGY1dEI7a0JBS1dDLEdBTFhEO2tCQUtDbXFCLEtBTEpwcUI7a0JBS0EwTSxHQUxBMU07a0JBS0o0dEIsR0FMSTV0QjtrQkFLUm9MLEdBTFFwTDtrQkFNWiw2QkFESW9MLEdBQXNCbEw7aUJBQzFCO21CQUF5QixvQkFQdkIwRyxJQU1NZ25CLEdBQXNCQzttQkFDTDtxQkFDRztxQ0FGTXJFLEdBQUlXO3NCQUU1QixlQUZFemQsR0FBSTBkO3NCQUxKcHFCO3NCQUFHQzs7bUJBTVU7OztpQkFGZjs7YUFEQyxPQUhJQSxPQVE2QjtrQkFFNUM0cUI7V0FBVzthQUVpQixJQUF2QmgwQixXQUFIaUMsV0FBMEIsY0FBdkJqQzthQUFNLGlCQUFUaUM7V0FERyxRQUNpQztrQkFFdEN5MUI7Ozs7ZUFFeUM7Z0JBQTlCMTNCO2dCQUFIaVk7Z0JBQUhsWTtnQkFBSGtDO2dCQUF1QyxhQUFwQ2xDLEVBQUdrWSxHQUFpQyxvQkFBOUJqWTs7d0JBQVRpQzs7YUFERztrQkFHVDAxQixTQUFTdDNCLEdBQ1gsc0JBRFdBLEVBQ007a0JBTWZpMUIsUUFBUTM1QixFQUFFMnRCO1dBQ1o7NkJBQW1CQTtzQkFBTCxxQ0FBUXNOLEVBQUU3MkIsRUFBTHVwQixFQUFxQjtvQkFENUJBO29CQUFGM3RCLEVBQ2tDO2tCQUUxQzQ1QixPQUFPNTVCLEdBQUksZUFBSkEsRUFsWVB1UixNQWtZMEI7a0JBRXRCc29CLFlBQWF6eUI7V0FBTyxHQUFQQTthQUVrQyxJQUF2Q2xILEtBRktrSCxLQUVQNEosRUFGTzVKLEtBRVRoRCxFQUZTZ0QsS0FFWDZ6QixFQUZXN3pCLEtBRWtDLGVBQXpDNEosRUFBRTlRO2FBQTBCLGFBQWhDKzZCLEVBQUU3MkIsa0JwQzNmakIsT29DeWZheTFCO1dBQ0csUUFDK0Q7a0JBRXRFNWdCLE9BQU8wVTtXQUNJLG1CQURKQTtXQUNJLHNCcEM5ZnBCLE9vQ3lmYWtNLHVCQUt3QjtrQkFFeEJDLFVBQVVwMUIsRUFBRXdJO2VBQUYrSCxNQUFFNlM7V0FDbEI7Z0JBRGdCN1M7OztnQkFHSHFILEVBSEdySDtnQkFHTjdRLEVBSE02UTtnQkFHVDNPLEVBSFMyTztnQkFBRXVpQixPQUdScHpCLEVBQUdrWSxFQUFOaFcsRUFIV3doQjtnQkFBRjdTO2dCQUFFNlM7O2FBRVAsT0FGT0EsSUFHa0M7a0JBRTlDaVMsZ0JBQWlCM3lCO1dBQU8sR0FBUEE7YUFHZSxJQUR4QmxILEtBRlNrSCxLQUVYNEosRUFGVzVKLEtBRWJoRCxFQUZhZ0QsS0FFZjZ6QixFQUZlN3pCLEtBR2UsZUFEMUI0SixFQUFFOVE7YUFDTzt3QkFEYis2QixFQUFFNzJCO29DcEN2Z0JqQixPb0NxZ0JhMjFCO1dBQ0csUUFFZ0Q7a0JBRXZEQyxXQUFXNXlCO1dBQ0ksbUJBREpBO1dBQ0ksc0JwQzNnQnhCLE9vQ3FnQmEyeUIsMkJBTTRCO2tCQUVoQ0UsWUFBWUMsSUFBSXZNO2VBQ0ZvTixJQURFcE4sRUFDQXZtQjtXQUFJO2dCQUFOMnpCO2VBR0U7Z0JBREMxMkIsRUFGSDAyQjtnQkFFQXplLEVBRkF5ZTtnQkFFSDMyQixFQUZHMjJCO2dCQUVOejBCLEVBRk15MEI7Z0JBR0Usb0JBREwzMkIsRUFIQzgxQjtlQUlJLFNBRVIxMUI7aUJBQU8sUUFBUEEsR0FDSyxXQUpGSixFQUFHa1ksRUFBR2pZLEVBRkQrQyxHQUFGMnpCLElBRU56MEIsRUFGUWM7cUJBQUYyekIsSUFFRzEyQjs7ZUFDRCxZQURMRCxFQUFHa1ksRUFBR2pZLEVBRkQrQzs7O21DcEM5Z0J6QixPb0N5ZmF5eUIsd0JBOEJzQjs7aUJBbGExQnRvQjtpQkFFQXFCO2lCQXdHSWlrQjtpQkF0R0FmO2lCQXlKQStFO2lCQTdMSjlFO2lCQWtMSWU7aUJBK0hBOU87aUJBWUErTztpQkEwREpucEI7aUJBY0FMO2lCQXBMSS9GO2lCQXVCQThGO2lCQU1BK0Y7aUJBSUFFO2lCQTZGQXJCO2lCQVVBRjtpQkFZQThFO2lCQTJDQXVoQjtpQkFRSjJEO2lCQXZRSXhCO2lCQUtBQztpQkFLQUM7aUJBS0FDO2lCQWZBSDtpQkFLQUM7aUJBZ0pBL0Q7aUJBcFBBbGpCO2lCQWdGQW9sQjtpQkEvREFKO2lCQWtCQUM7aUJBa0JBQztpQkFrQkFDO2lCQTZGQXZyQjtpQkFTQTJIO2lCQXlNSmtFO2lCQWFBK2dCO2lCQUdBQztpQkF6QkFOO2lCQUdBQztJQWxiRztJRnFCRzthR3RFVnFDLGdCQUFZLGNBQW9CO2FBRWhDQyxNQUFNeDNCLEdBQUksMEJBQXFCO2FBRS9CeTNCLE9BQUt6M0IsR0FBSSxVQUFKQSxVQUE2QjthQUVsQzAzQixLQUFLdjNCLEVBQUVILEdBQUksVUFBTkcsRUFBRUgsTUFBSSxPQUFKQSxhQUFJLFFBQW1DO2FBRTlDMjNCLElBQUkzM0I7TUFDTixTQURNQTtNQUNOO1lBQ01pQyxXQUFKQyxXQUZJbEMsT0FFQWlDLEdBRkFqQywyQkFFSmtDO01BQ1UsV0FBVzthQUVyQjAxQixRQUFRNTNCO01BQ1YsU0FEVUE7TUFDVjtZQUNNaUMsV0FBSkMsV0FGUWxDLE9BRUppQyxHQUZJakMsOEJBRVJrQztNQUNVLFFBQUk7YUFFZDIxQixJQUFJNzNCO01BQ04sU0FETUEsS0FDTixTQUNXLElBQVRrQyxXQUFTLE9BQVRBLEdBQ1MsV0FBVzthQUVwQjQxQixRQUFROTNCO01BQ1YsU0FEVUEsS0FDVixTQUNXLElBQVRrQyxXQUFTLFVBQVRBLElBQ1MsUUFBSTthQUViNjFCLFdBQVMvM0IsR0FBSSxhQUFKQSxRQUFjO2FBRXZCZzRCLFNBQU9oNEIsR0FBSSxPQUFKQSxJQUFTO2FBRWhCaTRCLE9BQUt6NEIsRUFBRVEsR0FBSSxjQUFOUixFQUFFUSxLQUFtQjthQUUxQms0QixPQUFLMTRCLEVBQUVvTyxJQUFJNU4sR0FBSSxtQkFBVlIsRUFBRW9PLElBQUk1TixLQUE0QjthQUl2Q200QixTQUFPbjRCLEdBQUksZ0JBQUpBLEtBQW1CO2FBRTFCaTFCLFFBQVE1TCxFQUFFL3RCLEdBQUkscUJBQWM2RSxHQUFLLFlBQUxBLEVBQXBCa3BCLEVBQWlDLEVBQS9CL3RCLEVBQWtDO2FBRTVDODhCLFNBQU9wWCxHQUNELElBQUpoaEIsRUFBSSxZQUNSLFFBRElBLEVBREtnaEIsR0FFVCxPQURJaGhCLENBRUg7Ozs7O09BN0NDdTNCO09BTUFHO09BRUFDO09BS0FDO09BS0FDO09BS0FDO09BckJBTjtPQUVBQztPQXdCQU07T0FFQUM7T0FFQUM7T0FFQUM7T0FJQUM7T0FFQWxEO09BRUFtRDs7O2FDakNBQyxnQkFBWSxnQkFJZjthQUVHQyxRQUFNalAsR0FDUixtQ0FFYTthQUVYK0gsSUFBSWp4QixFQUFFa3BCO01BQ1IsWUFETWxwQixLQUNOLEtBRFFrcEI7TUFDUjtnQkFEUUEsOEJBQ0prUCxLQURJbFAsT0FDSmtQO2dCQURJbFAsZ0JBQ0prUCxLQURJbFAsT0FDSmtQLE9BWVk7YUFLZEMsS0FBS25QO01BQ1AsU0FET0EsS0FDUCxTQUVzQixJQUFib1AsZ0JBQWEsT0FBYkEsUUFEQSxhQUNvQjthQUUzQkMsU0FBU3JQO01BQ1gsU0FEV0EsS0FDWCxTQUVzQixJQUFib1AsZ0JBQWEsVUFBYkEsU0FEQSxRQUN5QjthQUtoQ0UsT0FBS3RQO01BQ1AsU0FET0E7TUFDUDs7O2NBS2tCcmMsYUFOWHFjLDJCQU1XcmM7UUFGaEIsUUFKS3FjO1FBSUw7TUFGTyxhQU9BO2FBRVB1UCxTQUFTdlA7TUFDWCxTQURXQTtNQUNYOzs7Y0FLa0JyYyxhQU5QcWMsMkJBTU9yYztRQUZoQixRQUpTcWM7UUFJVDtNQUZPLFFBT0s7YUFLWndQLE9BWUV4UDtNQUFLLGFBQUxBLFVBWGUwUCxPQUFLUixLQVdwQmxQO01BVkY7V0FEc0JrUDtjQUdiRSxRQUhhRixRQUdKdnJCLEtBSEl1ckIsUUFJaEIxekIsT0FERzR6QjthQUhRTSxLQU9ILFVBSFJsMEIsU0FFSyxXQUZMQTtjQUpXazBCLEtBSVhsMEIsSUFKZ0IwekIsS0FHSnZyQjs7UUFEVCxXQUZRK3JCO1FBRVIsT0FGRUQsTUFXMkQ7YUFFdEVFLFdBQVMzUCxHQUNYLGFBRFdBLFFBQ0M7YUFFVjRQLFNBQU81UCxHQUNULE9BRFNBLElBQ0Q7YUFFTjZQLE9BUUUxNUIsRUFBRTZwQjtNdEM1SFQsSXNDcUhrQmtQLEtBT1RsUDtNQU5KO1dBRGFrUDtjQUdKRSxRQUhJRixRQUdLdnJCLEtBSEx1ckI7VUFJWCxXQUdBLzRCLEVBSk9pNUI7Y0FISUYsS0FHS3ZyQjs7UUFEVCxTQUtjO2FBRXZCbXNCLE9BUUUzNUIsRUFBRWtQLE9BQUsyYTtVQVBJM2tCLEtBT1RnSyxPQVBjNnBCLEtBT1RsUDtNQU5UO1dBRGtCa1A7VUFJTDtXQURKRSxRQUhTRjtXQUdBdnJCLEtBSEF1ckI7V0FJTCxrQkFHWC80QixFQVBXa0YsS0FHSit6QjtXQUhJL3pCO1dBQUs2ekIsS0FHQXZyQjs7UUFEVCxPQUZJdEksS0FPb0I7YUFFakMwMEIsU0FBU0MsR0FBR0M7TUFDZCxhQURXRDtNQUNYO1FBQ0UsU0FGWUM7UUFFWjtrQkFGWUE7Ozs7a0JBQUhEOzs7Ozs7a0JBQUdDOztrQkFBSEQ7a0JBU1AsUUFUT0E7a0JBQUdDLFFBQUhELE1BQUdDLFFBQUhELE1BQUdDLFFBQUhELE1BSVAsUUFKT0E7aUJBWUM7YUFJVkUsU0FBT2xRO01BQ1QsU0FBUXRPLElBQUlyWTtRQUFPLEdBQVBBO2NBRU92QyxFQUZQdUMsS0FFVXNLLEtBRlZ0SztVQUVrQyxVQUEzQnZDLGlCdEMzSnRCLE9zQ3lKVzRhLElBRWMvTjtRQURYLFFBQzRDO01BRnZELFNBRFNxYztNQUNULHNCdEN6SkgsT3NDeUpXdE8sZUFJRzthQUVUeWUsVUFBUW5RLEVBQUUvdEIsR0FBSSxxQkFBYzZFLEdBQUssV0FBTEEsRUFBcEJrcEIsRUFBaUMsRUFBL0IvdEIsRUFBa0M7YUFFNUNtK0IsU0FBT3pZLEdBQ0QsSUFBSnFJLEVBQUksWUFDUixVQURJQSxFQURLckksR0FFVCxPQURJcUksQ0FFSDs7Ozs7T0F2SUNnUDtPQVdBakg7O09BK0JBdUg7T0FXQUM7T0FYQUQ7T0FiQUg7T0FLQUU7T0FMQUY7T0F2QkFGO09BNkRBTztPQWNBRztPQUdBQztPQUdBQztPQVVBQztPQVVBQztPQWdCQUc7T0FPQUM7T0FFQUM7Ozs7O2FDaklBQztNQUFRLDZCQUVEQSw0QkFEQyxRQUNlO2FBQ3ZCN0Q7TUFBTyw2QkFFQUEsMEJBREMsUUFDYTthQUVyQjhELFVBQVVyNEI7TUFDSCxhQURHQSxZQUNaLHFCQURZQSxPQUNILGlCQUFxRDthQUd4RHM0QixTQUFpREYsTUFBTTloQjtNdkMzQ2hFLEl1QzJDZ0V3TTtNQUFLO2tCQUFMQTtTQUFLLE9BQUxBOztZQU85QyxJQURKdVMsR0FOa0R2UyxPQU10RHNTLEdBTnNEdFMsT0FPOUMsZUFQd0NzVixNQU1oRGhEO1lBQ1E7a0JBUDhDdFMsSUFNbER1Uzs7Y0FDSTtvQkFDQWtELGFBQUg5MkIsMEJBQUc4MkIsSUFGSmxEO2NBSUQ7O1lBaUJFO2VBM0JpRHZTO2FBMkJqRCxrQkFBTDVrQjthQUFLLGlCQUFMQSxrQm5CM0NMdU0saUJtQjJDS3ZNO2FBM0JzRDRrQjs7Ozs7O3VCQWMxRCxJQURzQjBWLFlBQ3RCLHNCQURzQkEsSUFib0MxVjtjQVlqQztZQUliLCtCQWhCd0NzVjtZQWdCeEMsWUFFQSxJQUFMSyxlQUFLLFVBQUxBLElBbEJtRDNWO1lBaUJoRDs7O1lBS1YsSUFETTlpQixFQXJCb0Q4aUI7WUFzQjFELEdBRE05aUIsYUFDaUIsVUFEakJBO1lBQzRCLFNBRDVCQSxLQUVhO1lBRG5CLElBRU0zQixFQUFKLHNCQUhJMkI7WUFHSixPQUhJQTtZQUdKLFVBQUkzQixFQXhCb0R5a0I7O1FBS25DLE9BTG1DQSxJQTJCcEI7YUFHbkM0VixVQUE2Q2g2QjtNQUVwRDtpQkFGb0RBO1FBRXBEO1NBQ1k7O1NBRFo7a0JBRWtCLElBQVQrQyxVQUFTLFVBQVRBOztZQUVPLElBQ1Y2VSxFQURVLFNBTm9DNVg7WUFNcEMsVUFDVjRYO2FBQ1U7O2NBRkEsU0FDVkEsTUFBb0IsSUFBZGtpQixJQUFObGlCLEtBQW9CLE9BQXBCQSxFQUFvQixVQUFka2lCO2NBRUQ7O1lBRUU7OytCQUFMdDZCO2FBQUssa0JBQUxBLGtCbkJ6REx1TSxpQm1CeURLdk07WUFBZTs7OztxQkFDRyxJQUFOdTZCLFlBQU0sT0FBTkE7WUFDQSxJQUFKNTVCLEVBQUksbUJBYmdDSDtZQWFoQyxhQUFKRztZQUFJLE9BQUpBOztZQUVaLElBRE1tQjtZQUNOLEdBRE1BLGFBQ2lCLFVBRGpCQTtZQUM0QixhQUQ1QkE7c0JBZDBDdEI7d0JBaUIzQyxzQkFIQ3NCLGFBR21DO2FBRzFDMjRCO01BQU8sVUFFRyxJQUFMajZCLFdBQUssaUJBQUxBLEdBREcsUUFDYTthQUdqQms2QixVQUF5Q2w2QjtNQUMvQztpQkFEK0NBO1FBQy9DOztrQkFDa0IsSUFBTjRYLFVBQU0sT0FGNkI1WCxhQUU3QixPQUFONFgsRUFBTTs7O3dCQUNlLE9BSGM1WCxhQUdkOzs7WUFFN0IsSUFETXNCO1lBQ04sR0FETUEsYUFDaUIsVUFEakJBO1lBQzRCLGFBRDVCQTtzQkFKcUN0QjswQ0FJckNzQjs7UUFIVixVQVFVLFVBVHFDdEI7UUFTckM7UUFDSSxTQUNhO2FBR3pCbTZCO01BQU8sVUFFTSxJQUFSdEUsY0FBUSxpQkFBUkEsTUFERyxRQUNtQjthQUV2QnVFLFVBQVV0NkIsRUFBRUU7TUFDbEIsT0FEZ0JGO1FBR1Isb0JBSFVFO1FBR1Y7VUFFRixJQURHK0M7VUFDSCxVQUxZL0M7VUFLWjtXQUNpQixrQkFOUEYsVUFBRUU7V0FNSzs7O3VCQUZkK0MsRUFFRXMzQixPQUZGdDNCLEVBRU02VSxHQUFHMmU7UUFDTixZQVBNdjJCO01BQ0gsWUFER0EsT0FPTzthQVV2QnM2QixNQUFNeDZCO012Q3JJWDtRdUN1SWU7O1NBUk8sZ0JBTVhBLEVBRURza0I7U0FSWTs7O2lCQVFaQSxTQVJLL2dCO1FBQU8sU0FBVnVVO1FBQVUsT0FBZHlpQjtNQU9LO2FBR1JydEIsS0FBS2hOO01BQ0QsaUJBRENBO01BQ0QsVUFDTSxJQUFMK0MsV0FBSyxLQUZML0MsR0FFSyxPQUFMK0M7TUFDRyxlQUFhO2FBR3JCdzNCLFFBQU12NkIsR0FDRixpQkFERUEsR0FDRixTQUNNLGdCQUNGLFFBQUU7YUFHVnc2QixPQUFLaDdCLEVBQUVpN0I7TUFFUDtRQUFNLGlCQUZDQTtRQUVELGNBQ0MxM0IsV0FBSyxLQUhMMDNCLE1BR3NCLFdBSHhCajdCLEVBR0V1RDtRQUNHLFNBRUg7YUFLUDIzQixLQUFLbDdCLEdBQUksdUJBQUpBLEtBQXlEO2FBRTlEbTdCLFVBQVEvNEI7TUFDVjtNQUF3QixtQ0FBcUJ6QixFQUFFeUIsR0FBSyxVQUFQekIsRUFBRXlCLEVBQWlCLEVBRHREQSxTQUNpRTthQUd6RWc1QixVQUFVNTZCO01BQ1osSUFBSTA1QjtNQUFKOztpQkFRRSxJQUFJaDNCLEVBUkZnM0I7aUJBUUYsT0FBSWgzQixJQUFKLHNCQVRVMUM7MkJBQ1IwNUIsY0FVcUIsZ0JBWGIxNUIsRUFTTjBDOzJCQUdLLEVBQUM7YUFHVm00QixXQUFTNzZCO01BQ1gsSUFBSTA1QjtNQUFKOztpQkFFRSxJQUFJaDNCLEVBRkZnM0I7aUJBRUYsT0FBSWgzQixJQUFKLHFCQUhTMUM7MkJBQ1AwNUIsY0FJcUIsZUFMZDE1QixFQUdMMEM7MkJBR0ssRUFBQzthQUdWbzRCLFdBQVcvMkI7TUFFeUIscUJBRnpCQSxHQUV5QiwrQkFBcUM7YUFLekVnM0IsS0FBS3ovQixFQUFFMEUsR0FBMEMsY0FBMUNBLEdBQWtDLHVCQUFwQzFFLFVBQW9EO2FBQ3pEMC9CLE1BQU0xL0IsRUFBRTBFLEdBQXNDLGtCQUF4QzFFLEVBQXdDLEtBQXRDMEUsS0FBOEM7YUFDdERpN0IsTUFBTTMvQixHQUFJLGtCQUFKQSxNQUE4QzthQUVwRDQvQixLQUFLMTdCLEVBQUVRO01BQ1Q7Ozs7OzttQkFBdUQsY0FEOUNBLEdBQ2lDLGVBQUssV0FEeENSLFdBQ3NELEtBQUk7YUFFL0QyN0IsTUFBTTM3QixFQUFFUTtNQUFJOzs7Ozs7bUJBQWlELGNBQXJEQSxHQUErQyxxQkFBakRSLFVBQTZELEtBQUk7YUFDdkU0N0IsTUFBTTU3QjtNQUFJLHNDQUEyQyxxQkFBL0NBLFlBQStEO1FBRXJFNjdCO2FBQ0FDLE1BQU05N0I7TUFBSSxzQ0FBeUMsdUJBQTdDQSxLQUFtRCxLQUFHO2FBSXhEKzdCLEtBQWdELzdCLEVBQUVRO01BQ3hEO01BQ0EsVUFBVSxNQUY4Q0E7TUFHeEQ7TUFDQSxVQUpzRFIsRUFJMUMsS0FKNENRO01BS3hEOzZCQUNnQjthQUNkdzdCLFVBQXdEaDhCO01BQXhEO09BRVU7O09BRlY7O2NBR1VvWSxXQUFIN1U7VUFDTDtVQUNBLFdBTHNEdkQsRUFHakR1RDtVQUdMO1VBQ0EsVUFQc0R2RCxFQUc5Q29ZO1VBSVI7O2NBRVErZSxZQUFKRDtVQUNKO1VBQ0EsVUFYc0RsM0IsRUFTbERrM0I7VUFHSjtVQUNBLFVBYnNEbDNCLEVBUzlDbTNCO1VBSVI7Z0JBRVM7Z0JBQ0Q7aUJBQ0csaUNBQXNCOzs7Ozs7T0E1RW5DK0Q7T0FFQUM7T0FJQUM7T0FlQUM7T0FTQUM7T0F6Q0FOO09BWkF4dEI7T0FNQXV0QjtPQWxEQU47T0FtQkFFO09BaEZBVDtPQXFHQVk7T0FnRUFTO09BQ0FDO09BQ0FDO09BRUFDO09BR0FDO09BQ0FDO09BRUFDO09BQ0FDO09BSUlDOzthQ3JMSkUsU0FBTzM3QjtNQUNWO2dCQURVQTtPQUVWLHdCQURJOFE7T0FFSixvQkFESUM7TUFDSixVQUFJN1EsSUFEQTZRLElBQ0E3USxFQUNzRDthQUV2RDA3QixTQUFTcDZCLEdBQUksa0JBQUpBLFlBQTBDO2FBQ25EcTZCLFdBQVNyNkIsR0FBSSxXQUFKQSxZQUFtQzthQUU1Q3M2QixNQUFJdDZCLEVBQUU4QixJQUFJQztNeEN4Q2YsUXdDd0NXRCxZQUFJQyxXQUFOL0IsT0FBTStCLFdBQUpEO09BR0gsa0JBSEM5QixLQUFFOEIsSUFBSUM7TUFFUCxrQ0FDaUM7YUFHcEN3NEIsT0FBS3BWLElBQUl4SyxPQUFPTSxJQUFJUCxPQUFPM1k7TXhDOUNoQzs7O1F3QzhDZ0NBOzs7O1FBQWxCNFk7OztVQUFKd0ssU0FBc0JwakIsV0FBbEI0WTs7OztRQUFXRDs7OytCQUFKTyxPQUFXbFosV0FBUDJZO09BS3BCLHVCQUxLeUssT0FBSXhLLE9BQU9NLElBQUlQLE9BQU8zWTtNQUd4QixtQ0FFK0M7YUFHbER5NEIsTUFBSXg2QixFQUFFOEI7TXhDdERYLFF3Q3NEV0EsVUFBRjlCLFFBQUU4QixLQUdILDZCQUhDOUIsS0FBRThCO01BRVAsa0NBQ2lDO2FBR2hDMjRCLFNBQU96NkIsR0FBSSxPQUFKQSxJQUFjO2FBRXJCMDZCLFFBQU0xNkIsR0FBSSxpQkFBZTthQUV6QjI2QixNQUFNMzZCO01BQ1IsZ0JBRFFBLEtBQ1IsNEJBRFFBLE1BQ1IsUUFFaUM7YUFVL0I0NkIsT0FBTzU2QixFQUFFNjZCO01BQ1gsWUFEUzc2QixLQUNULFFBRFNBLEtBQ1QsV0FDSSs2Qjs7V0FDQS9lLGNBRkE4ZSxVQURPRDtVQUl3QixpQkFEL0I3ZTtRQUVKLHVCQUZJQTtTQUVxQyxJQUpyQzhlLFVBRE9EO1VBT0o7O1VBQ0E7UUFFVSxJQUFiRyxXQUFhLGtCQVBiaGY7UUFVSixLQWJTaGMsT0FVTGc3QixhQVZLaDdCO1FBYVQsT0FISWc3QjtRQUdKLE9BVkloZjtRQVVKLElBYlNoYyxPQUFFNjZCLGFBQUY3NkI7VUFpQlQsSUFoQkk4NkIsVUFET0QsYUFBRjc2QixLQWtCVDs7c0NBQUU7YUFvQ0FpN0IsU0FBU2o3QixFQUFFb0I7TUFDYixJQUFJODVCLElBRE9sN0I7TUFDWCxHQURXQSxRQUNQazdCLElBQ29CLE9BRmJsN0I7TUFFdUIsc0JBRnZCQSxLQUNQazdCLElBRFM5NUI7TUFFcUIsT0FEOUI4NUI7TUFDOEIsUUFFYjtRQUVuQkMsOEJBQ0FDO2FBRUlDLGdCQUFnQnI3QixFQUFFME07TUFDeEI7WUFBSXd1QixJQURrQmw3QjtRQUN0QixHQURzQkEsUUFDbEJrN0IsSUFDb0IsT0FGRmw3QixFQUhwQm03QjtRQUlGLElBRUkzOEIsRUFBSSxnQkFIY3dCLEtBQ2xCazdCLElBRG9CeHVCO1FBR2hCLFNBQUpsTyxHQUVFLE9BTGdCd0IsRUFIcEJtN0I7UUFTRyxPQUxERCxNQUVBMThCO1FBR0MsU0FBdUI7YUFFdEI4OEIsbUJBQW1CdDdCLEVBQUUwTTtNQUMzQjtZQUFJd3VCLElBRHFCbDdCO1FBQ3pCLEdBRHlCQSxRQUNyQms3QixJQUNvQixPQUZDbDdCLEVBVnZCbzdCO1FBV0YsSUFFSTU4QixFQUFJLG1CQUhpQndCLEtBQ3JCazdCLElBRHVCeHVCO1FBR25CLFNBQUpsTyxHQUVFLE9BTG1Cd0IsRUFWdkJvN0I7UUFnQkcsT0FMREYsTUFFQTE4QjtRQUdDLFNBQXVCO2FBRXRCKzhCLG1CQUFtQnY3QixFQUFFME07TUFDM0I7WUFBSXd1QixJQURxQmw3QjtRQUN6QixHQUR5QkEsUUFDckJrN0IsSUFDb0IsT0FGQ2w3QixFQWxCdkJvN0I7UUFtQkYsSUFFSTU4QixFQUFJLG1CQUhpQndCLEtBQ3JCazdCLElBRHVCeHVCO1FBR25CLFNBQUpsTyxHQUVFLE9BTG1Cd0IsRUFsQnZCbzdCO1FBd0JHLE9BTERGLE1BRUExOEI7UUFHQyxTQUF1QjthQUUxQmc5QixjQUFjeDdCLEVBQUV0QixFQUFFKzhCLE9BQU8xNUI7TUFDM0IsU0FEb0IwNUI7TUFDcEI7Ozs7YUFEMkIxNUI7NkNBQVRyRCxLQUFTcUQsV0FBUDA1QjtNQUVmO01BREwsSUFFSUMsYUFIWTE3QixPQUFXK0I7TUFFeUIsR0FGcEMvQixPQUdaMDdCLGFBQzRCLE9BSmhCMTdCLEVBQVcrQjtNQUszQixpQkFMa0JyRCxFQUFFKzhCLE9BQUp6N0IsVUFBVytCO01BSzNCLE9BRkkyNUI7TUFFSixRQUMwQjthQUV4QkMsYUFBYTM3QixFQUFFdEIsRUFBRSs4QixPQUFPMTVCO01BQ1YscUJBREQvQixFQUNDLHFCQURDdEIsR0FBRSs4QixPQUFPMTVCLElBQzJCO2FBRW5ENjVCLFdBQVc1N0IsRUFBRXRCO01BQ2YsOEJBRGVBLEdBQ2YsYUFEYXNCLE9BQ1QrQjtNQUFKLEdBRGEvQixPQUVUMDdCLGFBQzRCLE9BSG5CMTdCLEVBQ1QrQjtNQUdKLGlCQUplckQsSUFBRnNCLFVBQ1QrQjtNQUdKLE9BRkkyNUI7TUFFSixRQUMwQjthQUV4QkcsVUFBVTc3QixFQUFFdEIsR0FBaUIsa0JBQW5Cc0IsRUFBbUIscUJBQWpCdEIsR0FBMkM7YUFFdkRvOUIsV0FBVzk3QixFQUFFKzdCLElBQ2Ysb0JBRGEvN0IsRUFBRSs3QixjQUN1QjthQStCcENDLFlBQVloOEIsRUFBRXlDLEdBQUdWO01BQ25CLFNBRG1CQSxZQUNuQixrQ0FEbUJBO01BRWpCO01BYkYsR0FXYy9CLGVBQUsrQixTQVhpQixPQVd0Qi9CLEVBQUsrQjtNQUNuQixJQTVCcUJrNkIsZUFBY242QixJQTJCckI5QixLQTNCMEJrOEIsUUEyQnJCbjZCLElBWDZCLEtBV2xDL0I7TUExQlo7aUJBRHNDazhCO1VBRzVCLElBQUo3OUIsRUFBSSxNQXdCSW9FLFFBM0JtQlgsSUFBS282QjtVQUc1QixTQUFKNzlCO1lBRUM7NEJBTFk0OUIsZUFHYjU5QjthQUVDLE1BTDBCeUQsTUFHM0J6RDthQUVDLFVBTCtCNjlCLFVBR2hDNzlCO2FBSGE0OUI7YUFBY242QjthQUFLbzZCOztZQTJCMUJsOEIsT0EzQk9pOEIscUJBMkJQajhCO1VBSGQsT0FHY0EsT0EzQk9pOEI7NEJBMkJGbDZCLElBTUg7VUFDaEI7c0NBQUU7YUFFQXM2QixjQUFjMTZCLEdBQUczQixHQUNuQixjQURnQjJCLEdBQUczQixZQUNZO2FBNEM3QnM4QixlQUFldDhCLEVBQUU5QixFQUFFUTtNQUNyQixnQ0FEcUJBLEdBRVA4OUIsWUFBUzdlO01BQ3JCO1dBRHFCQSxNQWpCRjRlO1VBbUJYLElBZUpFLFFBZkksZ0JBSlcvOUIsRUFFRWlmO1VBRWIsVUFlSjhlO1lBZG9CLFVBSFpEO2NBSVAsU0FOVXg4QixFQW1CWHk4QjtjQWJDLFFBSmdCOWUsWUFBVDZlLFlBQVM3ZTs7WUFPaEIsSUF4QlFvUCxNQWlCUXBQO1lBaEJ2QixHQURxQjRlLFNBQU54UCxNQUNNO1lBdUJkLElBdEJELHdCQWFlcnVCLEVBZk5xdUI7c0JBbEJNMlA7Y0E0QmxCLFFBVlkzUCxjQVJmLDRCQXVCcUJydUIsR0F2Qkw2ZjtjQUNkO21CQURnQm9lLFNBQUZwZTtxQkFrQlRxZSxLQWxCV0Q7O2tCQUVWLDBCQXFCYWorQixFQXZCTDZmO2tCQUVSOzs7Ozs7Ozs7OytCQUMwQyxRQUhsQ0E7a0JBRVIsSUFnQkRxZSxLQWxCU3JlOytCQW1CYixNQUlrQjdmLEVBZk5xdUIsTUFVUjZQLE9BVlE3UCxXQVVSNlA7Ozs7Y0FMSixRQUxZN1AsY0FLWjtjQWhDUyxVQVNTMlA7OzttQ0FOZDtjQTZCSixJQXRCSCwwQkFnQ3FCaCtCLEdBaENMdTJCLE1BQUVqN0I7Y0FDaEI7bUJBRGtCMmhCLE9BQUYzaEIsRUFDQztnQkFDZCxtQkE4QmdCMEUsRUFoQ0gxRSxPQURHMGlDO2tCQUdLLFFBRlIxaUMsVUFFUSxJQUZWaTdCLGdCQUFFajdCO2dCQUdiLG1CQTZCZ0IwRSxFQWhDSDFFO2tCQUtYLFFBTFdBO2dCQUlkLFNBSllpN0I7a0JBSVMsUUFKUGo3QixVQUlPLElBSlRpN0IsZ0JBQUVqN0I7OztxQkF3QmYsTUFRa0IwRSxFQWhDSHdlLFNBaUJINlAsb0JBakJHL3lCOztZQXlDWCxJQUNXZ2pDLGtCQUFQQztZQUNKLFdBWFVqOUIsRUFXRyxXQVhEOUIsRUFVUisrQjtZQURKLElBUE9ULFlBQVM3ZSxJQVFMcWY7O1VBR0MsVUFYTFI7WUFZUCxTQWRVeDhCO1lBZVYsU0FmVUEsRUFtQlh5OEI7WUFKQyxRQWJnQjllLFlBQVQ2ZSxZQUFTN2U7O29CQWlCakI4ZTtZQURDLFNBaEJnQjllLFlBQVQ2ZSxTQWlCUkMsUUFqQmlCOWU7VUFrQmhCLFNBcEJVM2QsRUFtQlh5OEI7VUFmSSxJQWdCSCxLQWxCZ0I5ZSxZQUFUNmUsU0FpQlJDLFFBakJpQjllOztRQXFCckIsZ0JBckJZNmU7UUFxQlosWUFBd0IsU0F2QlR4OEIsRUFFSHc4QixlQXNCSDthQUVUVSxTQUFTbDlCLEVBQUUrQjtNQUNTLFFBRFRBLFVBQUYvQixPQUFFK0IsTUFJVCxPQUpTQSxJQUlUO01BRkEsdUNBRWlCO2FBSW5CbzdCLFNBQU9uOUI7TUFDVCxTQUFReVosSUFBSXpmO1FBRVYsR0FIT2dHLFFBQ0doRyxFQUVjO1FBRXRCLDRCQUxLZ0csS0FDR2hHLEdBSVIsS0FKUUE7UUFLSyxVQURUNkUsaUJ4Q3JUWCxPd0NpVFc0YSxnQkFLbUI7TUFMM0I7NEJ4Q2pUSCxPd0NpVFdBLGVBT0g7YUFFSDJqQixVQUFRcDlCO01BQ1YsU0FBUXlaLElBQUl6ZjtRQUVWLEdBSFFnRyxRQUNFaEcsRUFFYztRQUV0Qiw0QkFMTWdHLEtBQ0VoRyxHQUlSLEtBSlFBO1FBS1MsYUFMVEEsRUFJSjZFLGtCeEMvVFgsT3dDMlRXNGEsZ0JBS3VCO01BTC9COzRCeEMzVEgsT3dDMlRXQSxlQU9IO2FBRUg0akIsVUFBUXI5QixFQUFFK0w7TUFBZSwyQnhDcFU5QixPd0NtSUtrdkIsU0FpTVFqN0IsU0FBRStMLElBQStCO2FBRXpDdXhCLFNBQU90akMsR0FDRCxJQUFKZ0csRUFBSSxhQUNSLFVBRElBLEVBREtoRyxHQUVULE9BRElnRyxDQUVIO2FBYUN1OUIsU0FBU3Y5QixFQUFFbkI7TUFDYixJQUFJNjhCLGFBRE8xN0I7TUFDWCxHQURXQSxPQUNQMDdCLGFBQzRCLE9BRnJCMTdCO01BRStCLHNCQUYvQkEsVUFBRW5CO01BRTZCLE9BRHRDNjhCO01BQ3NDLFFBRWhCO2FBRXhCOEIsYUFBYXg5QixFQUFFbkI7TUFDakIsSUFBSTY4QixhQURXMTdCO01BQ2YsR0FEZUEsT0FDWDA3QixhQUM0QixPQUZqQjE3QjtNQUdmLGlCQUhlQSxVQUFFbkI7TUFHakIsT0FGSTY4QjtNQUVKLFFBQzBCO2FBRXhCK0IsYUFBYXo5QixFQUFFbkI7TUFDakIsSUFBSTY4QixhQURXMTdCO01BQ2YsR0FEZUEsT0FDWDA3QixhQUM0QixPQUZqQjE3QjtNQUdmLGlCQUhlQSxVQUFFbkI7TUFHakIsT0FGSTY4QjtNQUVKLFFBQzBCO2FBRXhCZ0MsYUFBYTE5QixFQUFFbkI7TUFDakIsSUFBSTY4QixhQURXMTdCO01BQ2YsR0FEZUEsT0FDWDA3QixhQUM0QixPQUZqQjE3QjtNQUdmLGlCQUhlQSxVQUFFbkI7TUFHakIsT0FGSTY4QjtNQUVKLFFBQzBCO2FBRXhCaUMsYUFBYTM5QixFQUFFbkIsR3hDOVdwQixPd0M0VksyK0IsYUFrQmF4OUIsRUFBRW5CLEVBQ3NDO2FBRXJEKytCLGFBQWE1OUIsRUFBRW5CO01BQzZCLElBRDdCa1osSUFDNkIsYUFEN0JsWixVQXJCZjIrQixhQXFCYXg5QixFQUFFK1gsSUFDc0M7YUFFckQ4bEIsYUFBYTc5QixFQUFFbkIsR3hDcFhwQixPd0NrV0s0K0IsYUFrQmF6OUIsRUFBRW5CLEVBQ3NDO2FBRXJEaS9CLGFBQWE5OUIsRUFBRW5CO01BQzZCLElBRDdCa1osSUFDNkIsaUJBRDdCbFosR0FDcUMsb0JBRHZDbUIsRUFBRStYLElBQ3NDO2FBRXJEZ21CLGFBQWEvOUIsRUFBRW5CLEd4QzFYcEIsT3dDd1dLNitCLGFBa0JhMTlCLEVBQUVuQixFQUNzQzthQUVyRG0vQixhQUFhaCtCLEVBQUVuQjtNQUM2QixJQUQ3QmtaLElBQzZCLGlCQUQ3QmxaLEdBQ3FDLG9CQUR2Q21CLEVBQUUrWCxJQUNzQzs7OztPQS9WckRvaUI7T0FNQUM7T0FDQUM7T0FFQUM7T0FNQUM7T0FRQUM7T0FNQUM7T0FFQUM7T0FFQUM7T0FpS0EwQjtPQXVFQWE7T0FyS0FqQztPQVNJSTtPQWdCQUU7T0FSQUQ7T0EyQkpNO09BT0FDO09BbEJBTDtPQVFBRztPQWtHQVc7T0F0RkFSO09BZ0NBRTtPQXdGQW1CO09BVUFDO09BVUFDO09BRUFDO09BZ0JBQzs7T0FNQUM7T0FxQkFJO09BSEFEO09BbEJBSDtPQXFCQUk7T0FIQUQ7T0FaQUY7T0FxQkFLO09BSEFEO09BWkFIO09BcUJBTTtPQUhBRDs7YXBDbFdBRSx1QkFBcUIsbUJBQW9CO2FBR3pDQyxnQkFBZ0J4Z0MsU0FBUzBEO01BQzNCLFlBRDJCQSxZQUMzQixXQUQyQkE7TUFHM0I7ZUFIa0IxRDtlQUVkeWdDO2VBRUYsWUFBMEIsZUFKVnpnQyxTQUVkeWdDLFdBQXdCQyxNQUV1QzthQUVqRUMsZ0JBQWdCM2dDLFVBQ2xCLGdCQURrQkEsU0FDTTthQUd0QjRnQyxhQUFhNWdDO01BQ0Msa0NBQ2hCMUQ7TUFDRTs7VUFGRXVrQyxXQUNKdmtDLEVBRUksWUFBMEIsZ0JBSmYwRCxTQUVmMUQ7UUFDRSxTQURGQTs7UUFJQSw0QkFMSXVrQyxZQUs0QjthQUc5QkMsZUFBZTlnQyxTQUFTMEQ7TUFDMUIsWUFEMEJBLFlBQzFCLFdBRDBCQTtNQUdiLDhCQUhJMUQsU0FFYnlnQyxXQUF3QkMsU0FDOEI7YUFheERLLGVBQWVDO01BQVUsR0FBVkEsU0FFRCxJQUFUQyxNQUZVRCxXQUVELFlBQVRDLE9BREcsUUFDZ0M7YUFTeENDLCtCQUdBNWdDLElBQUk2Z0M7TUFBTyxVQUFYN2dDO09BQVcsT0FBWEE7Z0JBRUEsYUFGSTZnQztnQkFJSixhQUpJQTtnQkFnQ0osY0FoQ0lBO2lCQXNDSixjQXRDSUE7O09BQU8sT0FBWDdnQztnQkFNQSxJQURlMGdDLFFBTGYxZ0MsT0FNMEIsNEJBRFgwZ0MsU0FMWEc7O1VBUUosSUFEb0JDLFVBUHBCOWdDLE9BUStCLDRCQURYOGdDLFdBUGhCRDs7Y0FTZ0JFLFVBVHBCL2dDLE9BU2FsQyxNQVRia0M7VUFVOEIsYUFEakJsQyxNQUNpQixlQURWaWpDLGFBVGhCRjs7Y0FXa0JHLFVBWHRCaGhDLE9BV2UvQixRQVhmK0I7VUFhaUIsYUFGRi9CLFFBRUUsZUFGSytpQyxhQVhsQkg7O2NBY3NCSSxVQWQxQmpoQyxPQWNtQjVCLFFBZG5CNEI7VUFnQnFCLGFBRkY1QixRQUVFLGVBRks2aUMsYUFkdEJKOztjQWlCa0JLLFVBakJ0QmxoQyxPQWlCZXpCLFFBakJmeUI7VUFtQmlCLGFBRkZ6QixRQUVFLGVBRksyaUMsYUFqQmxCTDs7Y0FvQm9CTSxTQXBCeEJuaEMsT0FvQmVvaEMsVUFwQmZwaEM7VUFUNEIsR0E2QkptaEMsU0EzQlgsU0EyQldBLG9CQTNCbkJFO1VBOEJLLGlDQUhLRCxnQkFwQlhQOztVQXlCSixJQURhUyxVQXhCYnRoQyxPQXlCd0IsNEJBRFhzaEMsV0F4QlRUOztjQTBCeUIvaEMsTUExQjdCa0IsT0EwQm9CdWhDLFVBMUJwQnZoQzt3QkEwQm9CdWhDLFVBQVN6aUMsTUExQnpCK2hDOztjQTRCMkI3aEMsUUE1Qi9CZ0IsT0E0QnNCd2hDLFVBNUJ0QnhoQzt3QkE0QnNCd2hDLFVBQVN4aUMsUUE1QjNCNmhDOztjQWlDOEJuaEMsU0FqQ2xDTSxPQWlDdUJMLFVBakN2Qks7d0JBaUN1QkwsVUFBV0QsU0FqQzlCbWhDO2lCQW9DSixJQUR5QmhoQyxRQW5DekJHLE9Bb0NBLGNBRHlCSCxRQW5DckJnaEMsTUFzQ2lDO2FBMEdyQ1ksd0JBQXdCL2lDLE9BQzFCLGFBRDBCQSxjQU9YO2FBNkJiZ2pDLGNBQWNDO01BQStCLDhCQUEvQkEsV0FBdUQ7YUFHckVDLGtCQUFrQno4QixJQUFJMDhCO01BQ3hCO2dDQURvQjE4QjtPQUNwQixRQURvQkEsU0FBSTA4QjtPQUN4QixLQUFJOTlCLE1BQ0ErOUI7TUFESjtRQUdnQjt1QkFIWi85QixZQUNBKzlCO1NBR0YsMEJBREk5akI7UUFFSixLQU5rQjdZLFNBS2Q0OEIsVUFKRmgrQjtRQUtGLFNBRElnK0I7UUFEVTs7O01BUFksV0FXM0I7YUFHQ0MsZ0JBQWdCNzhCLElBQUkvQjtNQUN0QixrQkFEa0IrQjtNQUVsQixlQUZrQkEsY0FBSS9CO01BRXRCLFNBRmtCK0I7TUFFbEIsUUFDc0I7YUFHcEI4OEIsa0JBQWtCOThCLElBQUl6RTtNQUN4QixJQUFJd2hDLFFBQUosc0JBRHdCeGhDO01BRXhCLGtCQUZvQnlFLElBQ2hCKzhCO01BRUosT0FId0J4aEMsSUFBSnlFLGNBQ2hCKzhCO01BRUosU0FIb0IvOEIsU0FDaEIrOEI7TUFFSixRQUM0QjthQUcxQkMsZ0JBQWdCaDlCLEtBQ2xCLGtCQURrQkEsZ0JBQ2tCO2FBS2xDaTlCLGNBQWN0a0M7TUFBUSxPQUFSQTs7ZUFFb0I7O2VBQXdCOztnQkFDaEQ7O2dCQUF3Qjs7OztnQkFGRTtnQkFDMUIsV0FDMkI7YUFJckN1a0MsY0FBZ0I3VixJQUFROXRCO01BQVEsR0FBaEI4dEIsSUFBRyxRQUFIQSxVQUFHQyxhQUFINlY7TUFBZ0IsT0FBUjVqQztlQUNiO2VBQWlCO2VBQ2pCO2VBQWlCO2VBQ2pCO2VBQWlCLE9BSFo0akM7ZUFJTDtlQUFpQjtnQkFDaEIsVUFBRzthQXlFZkMsYUFBYXA5QixJQUFJcTlCO01BQVEsT0FBUkE7ZUFDUix1QkFESXI5QjtlQUVKO2dCQUNBLHVCQUhJQSxRQUdtQjthQUdoQ3M5QixvQkFBb0J0OUIsSUFBSXU5QjtNQUMxQixPQUQwQkEsU0FDVCxnQkFES3Y5QixRQUFJdTlCLFFBQ2M7YUFJdENDLGVBQWV4OUIsSUFBSXU3QjtNQUFVLEdBQVZBO1FBRUwsSUFBVEMsTUFGY0Q7UUFFaUIseUJBRnJCdjdCLElBRXFCLDRCQUEvQnc3QjtNQURHLFFBQ2lEO2FBS3pEaUMsZUFDQXo5QixJQUFJekg7TUFBTyxVQUFQQTtPQUNVOztRQURILFNBQVBBO2NBRWdCOEMsRUFGaEI5QyxPQUVTOGtDLE1BRlQ5a0M7VUFHSixhQUhBeUgsSUFFYXE5QjtVQUVTLHlCQUp0QnI5QixJQUlzQiw0QkFGRjNFO1FBSXBCLElBRFlxaUMsUUFMUm5sQztRQU1KLGFBTkF5SCxJQUtZMDlCO1FBQ1osdUJBTkExOUIsUUFPdUI7YUFHdkIyOUIsaUJBQ0UzOUIsSUFBSXZIO01BQVEsVUFBUkEsa0JBTU4sT0FOTUEsS0FNTixrQkFORXVIO1VBRVkzRSxFQUZSNUM7TUFHTixnQkFIRXVIO01BSW9CLHlCQUpwQkEsSUFJb0IsNEJBRlIzRSxHQUlZO2FBSzFCdWlDLGtCQUFrQjU5QixJQUFJckg7TUFBUSxPQUFSQTs7ZUFDSCx1QkFERHFIOztlQUVDLHVCQUZEQTs7Ozs7O2dCQUloQix1QkFKZ0JBO2dCQUsrQixTQUFFO2FBWW5ENjlCLGtCQUFrQjc5QixJQUFJdTlCLFNBQVM1a0MsTUFBTUosSUFBSUUsS0FBS3dGO01BQ2hELGdCQURvQitCO01BRXBCLG9CQUZvQkEsSUFBSXU5QjtNQUd4QixrQkFIb0J2OUIsSUFBYXJIO01BSWpDLGVBSm9CcUgsSUFBbUJ6SDtNQUt2QyxpQkFMb0J5SCxJQUF1QnZIO01BTTNDLGdCQU5vQnVILElBQTRCL0I7TUFPNUIsdUJBUEErQixJQU9BLGNBUGFySCxPQU9RO2FBS3ZDbWxDLGtCQUFrQjk5QixJQUFJekc7TUFDeEIsT0FEd0JBOztlQUVOLGdCQUZFeUc7Z0JBR0YsZ0JBSEVBO01BS3BCLFlBTHdCekcsU0FNVixnQkFOTXlHLFNBUWU7YUFhakMrOUIseUJBQXlCbm9DO01BQWlCLFVBQWpCQTtPQUFpQixPQUFqQkE7Z0JBQ0Q7Z0JBQ0E7Z0JBRUE7Z0JBQ0E7Z0JBQ0E7Z0JBRUE7aUJBQ0E7O09BVGtCLE9BQWpCQTtnQkFHRCxJQUFqQjZELElBSGtCN0Qsa0JBR0QsT0FBakI2RDtnQkFJaUIsSUFBWnVrQyxNQVBhcG9DLGtCQU9ELE9BQVpvb0M7aUJBR0ksSUFBTC8vQixFQVZjckksa0JBVUgsMkJBQVhxSSxJQUE0QjthQUt2Q2dnQyxvQkFBb0JqK0IsSUFBSXRHO01BQU0sY0FBTkEsSUFDakIsa0JBRGFzRyxZQUVmLGdCQUZlQSxJQUFJdEcsSUFFSTthQUc1QndrQyxzQkFBc0JsK0IsSUFBSXZHO01BQzVCLCtCQUQ0QkEsYUFDNUI7OztRQUNFOzhCQUZzQnVHLElBRUUsZ0JBRkV2RyxJQUM1QjVDO1VBQ0UsU0FERkE7OztjQUVJO2FBTUVzbkMsYUFFSm4rQixJQUFJckc7TUpoZlQsSUlnZlNFO01BQVM7aUJBQVRBO1FBeUJZOztRQXpCSCxPQUFUQTs7ZUFDSTlDLEtBREo4QztXQUNpQixrQkFEckJtRztlQUFJbkcsUUFDSTlDOzs7ZUFDRUMsT0FGTjZDO1dBRWlCLGtCQUZyQm1HO2VBQUluRyxRQUVNN0M7OztlQUNIQyxPQUhINEM7V0FHaUIsa0JBSHJCbUc7ZUFBSW5HLFFBR0c1Qzs7O2VBQ0VDLE9BSkwyQztXQUlpQixrQkFKckJtRztlQUFJbkcsUUFJSzNDOzs7ZUFDSUMsT0FMVDBDO1dBS2lCLGtCQUxyQm1HO2VBQUluRyxRQUtTMUM7OztlQUNKQyxPQU5MeUM7V0FNaUIsa0JBTnJCbUc7ZUFBSW5HLFFBTUt6Qzs7O2VBQ0FDLE9BUEx3QztXQU9pQixrQkFQckJtRztlQUFJbkcsUUFPS3hDOzs7ZUFDREMsT0FSSnVDO1dBUWlCLGtCQVJyQm1HO2VBQUluRyxRQVFJdkM7OztlQVVrQkMsT0FsQnRCc0MsV0FrQld1a0MsVUFsQlh2a0M7V0FtQkosa0JBbkJBbUc7V0FtQjRCLGFBbkI1QkEsSUFrQmVvK0I7V0FFZixrQkFwQkFwK0I7ZUFBSW5HLFFBa0JzQnRDOzs7ZUFHS0UsT0FyQjNCb0MsV0FxQmF3a0MsWUFyQmJ4a0M7V0FzQkosa0JBdEJBbUc7V0FzQjRCLGFBdEI1QkEsSUFxQmlCcStCO1dBRWpCLGtCQXZCQXIrQjtlQUFJbkcsUUFxQjJCcEM7OztlQVp0QkUsT0FUTGtDO1dBU2lCLGtCQVRyQm1HO2VBQUluRyxRQVNLbEM7OztlQUNBQyxRQVZMaUM7V0FVaUIsa0JBVnJCbUc7ZUFBSW5HLFFBVUtqQzs7O2VBQ0ZDLFFBWEhnQztXQVdpQixrQkFYckJtRztlQUFJbkcsUUFXR2hDOzs7ZUFDR0MsUUFaTitCO1dBWWlCLGtCQVpyQm1HO2VBQUluRyxRQVlNL0I7OztlQUVRQyxRQWRkOEI7V0FlSixrQkFmQW1HO2VBQUluRyxRQWNjOUI7b0JBV0E7YUFJZHVtQztnQkFJYSxJQUFMNWlDLFdBQVMsK0JBQVRBLE9BREcsUUFDMkI7YUFrSDFDNmlDLGNBQWM3QztNQUNOLElBaEhHMTdCLElBZ0hIO01BL0dWLFNBQVF3K0IsUUFFSjlDLElBQUk2QjtZQUFKa0IsVUFBSUM7O1FBQVk7bUJBQWhCRDtVQXFHaUI7O1VBckdELE9BQWhCQTs7aUJBMEJLMW5DLEtBMUJMMG5DO2FBMkJBLGdCQTlCU3orQjthQThCZ0Isb0JBOUJoQkEsSUFHTDArQjthQTRCSixnQkEvQlMxK0I7aUJBR1R5K0IsTUEwQksxbkMsS0ExQkQybkM7OztpQkE2Qk0xbkMsT0E3QlZ5bkM7YUE4QkEsZ0JBakNTeitCO2FBaUNnQixvQkFqQ2hCQSxJQUdMMCtCO2FBK0JKLGdCQWxDUzErQjtpQkFHVHkrQixNQTZCVXpuQyxPQTdCTjBuQzs7O2lCQUNTem5DLE9BRGJ3bkMsU0FDUWxtQyxJQURSa21DO2FBRUEsZ0JBTFN6K0I7YUFLZ0Isb0JBTGhCQSxJQUdMMCtCO2FBR0osZUFOUzErQixJQUlEekg7YUFFZ0IsZ0JBTmZ5SDtpQkFHVHkrQixNQUNheG5DLE9BRFR5bkM7OztpQkFLY3huQyxPQUxsQnVuQyxTQUtham1DLE1BTGJpbUM7YUFNQSxnQkFUU3orQjthQVNnQixvQkFUaEJBLElBR0wwK0I7YUFPSixlQVZTMStCLElBUUl4SDthQUVXLGdCQVZmd0g7aUJBR1R5K0IsTUFLa0J2bkMsT0FMZHduQzs7O2lCQVVtQnZuQyxPQVZ2QnNuQyxTQVVpQmhtQyxLQVZqQmdtQyxTQVVZL2xDLE1BVlorbEMsU0FVSzlsQyxNQVZMOGxDO2FBL0dKLGdCQTRHYXorQjthQTNHYixvQkEyR2FBLElBR0wwK0I7YUE3R1Isa0JBMEdhMStCLElBYUpySDthQXRIVCxlQXlHYXFILElBYUd0SDthQXJIaEIsaUJBd0dhc0gsSUFhUXZIO2FBcEhELGdCQXVHUHVILElBdkdPLGNBb0hYckg7aUJBVkw4bEMsTUFVdUJ0bkMsT0FWbkJ1bkM7Ozs7Y0FhcUJ0bkMsT0FiekJxbkM7Y0FhbUI3bEMsT0FibkI2bEM7Y0FhYzVsQyxNQWJkNGxDO2NBYU8zbEMsUUFiUDJsQzthQWNBLGtCQWpCU3orQixJQUdMMCtCLFdBYUc1bEMsUUFBT0QsTUFBS0Q7aUJBYm5CNmxDLE1BYXlCcm5DLE9BYnJCc25DOzs7O2NBZ0J5QnJuQyxPQWhCN0JvbkM7Y0FnQnVCMWxDLE9BaEJ2QjBsQztjQWdCa0J6bEMsTUFoQmxCeWxDO2NBZ0JXeGxDLFFBaEJYd2xDO2FBaUJBLGtCQXBCU3orQixJQUdMMCtCLFdBZ0JPemxDLFFBQU9ELE1BQUtEO2lCQWhCdkIwbEMsTUFnQjZCcG5DLE9BaEJ6QnFuQzs7OztjQW1CcUJwbkMsT0FuQnpCbW5DO2NBbUJtQnZsQyxPQW5CbkJ1bEM7Y0FtQmN0bEMsTUFuQmRzbEM7Y0FtQk9ybEMsUUFuQlBxbEM7YUFvQkEsa0JBdkJTeitCLElBR0wwK0IsV0FtQkd0bEMsUUFBT0QsTUFBS0Q7aUJBbkJuQnVsQyxNQW1CeUJubkMsT0FuQnJCb25DOzs7O2NBc0JxQm5uQyxPQXRCekJrbkM7Y0FzQm1CcGxDLE9BdEJuQm9sQztjQXNCY25sQyxNQXRCZG1sQztjQXNCT2xsQyxNQXRCUGtsQzthQS9FSixnQkE0RWF6K0I7YUEzRWIsb0JBMkVhQSxJQUdMMCtCO2FBN0VSLGtCQTBFYTErQixJQXlCRnpHO2FBbEdYLGVBeUVheUcsSUF5QksxRzthQWpHbEIsaUJBd0VhMEcsSUF5QlUzRzthQWhHSCxnQkF1RVAyRyxJQXZFTyxnQkFnR1R6RztpQkF0QlBrbEMsTUFzQnlCbG5DLE9BdEJyQm1uQzs7O2lCQWdDT2puQyxPQWhDWGduQyxTQWdDTWpsQyxNQWhDTmlsQzthQWlDQSxnQkFwQ1N6K0I7YUFvQ2dCLG9CQXBDaEJBLElBR0wwK0I7YUFrQ0osZUFyQ1MxK0IsSUFtQ0h4RzthQUVrQixnQkFyQ2Z3RztpQkFHVHkrQixNQWdDV2huQyxPQWhDUGluQzs7O2lCQW1ERS9tQyxPQW5ETjhtQzthQW9EQSxrQkF2RFN6K0I7aUJBR1R5K0IsTUFtRE05bUM7OztpQkFJZUMsUUF2RHJCNm1DLFNBdURnQmhsQyxJQXZEaEJnbEM7YUF3REEsc0JBM0RTeitCLElBMERPdkc7aUJBdkRoQmdsQyxNQXVEcUI3bUM7OztpQkFHRkMsUUExRG5CNG1DLFNBMERjRSxNQTFEZEY7YUEyREEsb0JBOURTeitCLElBNkRLMitCO2lCQTFEZEYsTUEwRG1CNW1DOzs7aUJBSVNDLFFBOUQ1QjJtQyxTQThEcUI5a0MsTUE5RHJCOGtDLFNBOERZbEQsUUE5RFprRDthQStEQSxnQkFsRVN6K0I7YUFrRWdCLG9CQWxFaEJBLElBR0wwK0I7YUFnRUosZUFuRVMxK0IsSUFpRUd1N0I7YUFFZ0IsZ0JBbkVuQnY3QjthQW9FVCxhQXBFU0EsSUFpRVlyRzthQUdHLGdCQXBFZnFHO2FBb0V3QyxnQkFwRXhDQTtpQkFHVHkrQixNQThENEIzbUMsUUE5RHhCNG1DOzs7aUJBbUUwQjNtQyxRQW5FOUIwbUMsU0FtRXVCNWtDLFFBbkV2QjRrQyxTQW1FYzlDLFVBbkVkOEM7YUFvRUEsZ0JBdkVTeitCO2FBdUVnQixvQkF2RWhCQSxJQUdMMCtCO2FBcUVKLGVBeEVTMStCLElBc0VLMjdCO2FBRWMsZ0JBeEVuQjM3QjthQXlFVCxhQXpFU0EsSUFzRWNuRzthQUdDLGdCQXpFZm1HO2FBeUV3QyxnQkF6RXhDQTtpQkFHVHkrQixNQW1FOEIxbUMsUUFuRTFCMm1DOzs7aUJBb0NFM2tDLFFBcENOMGtDO2FBcUNBLGdCQXhDU3orQjthQXdDZ0Isb0JBeENoQkEsSUFHTDArQjthQXNDSixnQkF6Q1MxK0I7aUJBR1R5K0IsTUFvQ00xa0MsUUFwQ0Yya0M7OztpQkF1Q0Uxa0MsUUF2Q055a0M7YUF3Q0EsZ0JBM0NTeitCO2FBMkNnQixvQkEzQ2hCQSxJQUdMMCtCO2FBeUNKLGdCQTVDUzErQjtpQkFHVHkrQixNQXVDTXprQyxRQXZDRjBrQzs7O2lCQXlGd0J6a0MsUUF6RjVCd2tDLFNBeUZnQnZrQyxXQXpGaEJ1a0M7YUEwRkEsc0JBN0ZTeitCLElBNkZpQix5QkFEVjlGO2lCQXpGaEJ1a0MsTUF5RjRCeGtDOzs7aUJBR0FFLFFBNUY1QnNrQyxTQTRGZ0Jya0MsV0E1RmhCcWtDO3NCQTRGZ0Jya0M7eUNBRU80akM7ZUFDckIsa0JBbEdPaCtCO2VBa0dxQixrQkFsR3JCQSxJQWlHY2crQjs7MkJBRlA1akMsY0FJT3drQztlQUNyQixrQkFwR081K0I7ZUFvR3FCLGtCQXBHckJBLElBbUdjNCtCO2lCQWhHdkJILE1BNEY0QnRrQzs7O2lCQTVDckJFLFFBaERQb2tDO2FBaURBLGdCQXBEU3orQjthQW9EZ0Isb0JBcERoQkEsSUFHTDArQjthQWtESixnQkFyRFMxK0I7aUJBR1R5K0IsTUFnRE9wa0MsUUFoREhxa0M7OztpQkF5RWdDcGtDLFFBekVwQ21rQyxTQXlFMEJsa0MsU0F6RTFCa2tDLFNBeUVlamtDLFVBekVmaWtDO2FBMEVBLGdCQTdFU3orQjthQTZFZ0Isb0JBN0VoQkEsSUFHTDArQjthQTJFSixlQTlFUzErQixJQTRFTXhGO2FBdFNuQjtjQTRDSThGO3dCQUFXTixJQUFJbko7aUJBQVUsSUFHekJvSCxFQUh5QixZQUFWcEg7aUJBQVUsY0FHekJvSDsyQkFGTyxnQkFESStCLFFBQ0osZ0JBRElBO2lDQUdYL0I7NkJBRE8sZ0JBRkkrQixRQUVKLGdCQUZJQTs0QkFHSixnQkFISUEsSUFHWC9CLEVBQTZCO2FBRWpDLGdCQXlLYStCO2FBMU5iO2NBbURLOzhCQW1QeUJ6RjtrQkFsUHJCLGdCQXNLSXlGLFFBdEtxQixhQWtQSnpGOztjQXJTNUI7OzBCQUFJdWtDLFNBQVM3Z0M7bUJBQ2lDOzhCQURqQ0E7b0JBQ2UsV0FEZkE7b0JBRVgseUJBRldBO21CQUVYO29CQUNROzhDQUZKK2dDO3FCQUVJLFVBQTZCLG9CQUZ6QkQ7Ozs7bUJBRGQsV0FHZ0U7d0JBSDVERDtjQUFKO2FBSUcsZ0JBQWtCLGdCQXFOVjkrQjthQTFOYixJQVFrQm5KOzthQUNoQjtrQkFEZ0JBO2lCQUVYLHlCQUFtQixZQUZSQTttQkFHVCxRQUhTQTtpQkFLVixzQkFMVUEsR0FLVjs7cUNBQ00sV0E0TURtSjs7O3FCQTNNSSxRQVBDbko7OzttQkFRVCxJQUNZNGhCLElBVEg1aEI7bUJBVWIseUJBQW1CLFlBREg0aEI7cUJBZ0JqQixXQXlMU3pZLElBek1ReVk7cUJBZ0JqQixRQWhCaUJBLFlBVEg1aEI7O21CQVFUO29CQUdDLG9CQUZXNGhCO29CQUVYOzs7O3NCQUVKLFdBcU1PelksU0FyTVAsV0FxTU9BOzs7OztzQkFuTVkseUJBQW9CLFlBTnhCeVk7d0JBT2YsV0FrTU96WSxJQXpNUXlZO3dCQU9mLFFBUGVBLFlBVEg1aEI7Ozs7OztxQkFrQkQseUJBQW9CLFlBVGhCNGhCO3VCQVVmLFdBK0xPelksSUF6TVF5WTt1QkFXZixXQThMT3pZLElBek1ReVk7dUJBV2YsUUFYZUEsWUFUSDVoQjs7cUJBdUJaLE1BZGU0aEIsWUFjZixJQWRlQSxZQW1CRndtQjtxQkFDakI7dUJBQWtCLFdBRERBLE9BQ0Msb0JBQW9CLFlBRHJCQTt5QkFPZixRQVBlQTt1QkFFZixXQW9MU2ovQixJQXRMSW9iO3VCQUdiLFdBbUxTcGI7dUJBbExULFdBa0xTQSxJQXRMTWkvQjt1QkFJZixHQUplQSxXQUtDLFFBTERBLFlBNUJEcG9DOztlQURiLGdCQUFrQixnQkFtTlZtSjtlQXRRWDY4QixnQkFzUVc3OEI7bUJBR1R5K0IsTUF5RW9DbmtDLFFBekVoQ29rQzs7O2lCQTZFdUJqa0MsUUE3RTNCZ2tDLFNBNkVrQi9qQyxRQTdFbEIrakM7YUE4RUEsZ0JBakZTeitCO2FBaUZnQixvQkFqRmhCQSxJQUdMMCtCO2FBdE9vQixPQW1UTmhrQzs7OzthQUVsQixnQkFsRlNzRjtpQkFHVHkrQixNQTZFMkJoa0MsUUE3RXZCaWtDOzs7aUJBaUZXL2pDLFFBakZmOGpDO2FBa0ZBLGdCQXJGU3orQjthQXFGZ0Isb0JBckZoQkEsSUFHTDArQjthQW1GSixzQkF0RlMxK0I7aUJBR1R5K0IsTUFpRmU5akMsUUFqRlgrakM7OzthQXNGd0I7Y0FEUjlqQyxRQXJGcEI2akM7Y0FxRmU1akMsSUFyRmY0akM7Y0FzRjRCLHVDQURiNWpDLElBQUtEO2NBQ1E7Y0F0RjVCNmpDO2NBQUlDOzs7YUEyQ1U7Y0FESTVqQyxRQTFDbEIyakM7Y0EwQ1F6akMsTUExQ1J5akM7Y0EyQ2MseUJBRE56akM7O2FBQ007bUJBQWQwZjtlQUNFO2lDQS9DTzFhO2lCQStDa0Isb0JBL0NsQkEsSUFHTDArQjtpQkE2Q0YsZ0JBaERPMStCO2lCQWdEUCxTQUZGMGE7OzthQUFjLElBM0NkK2pCLE1BMENrQjNqQyxRQTFDZDRqQztzQkFxR2U7TUF2R3ZCLFFBOEdnQmhEO2FBeFdkc0IsZ0JBeVBXaDlCLElBa0hNO2FBV2JvL0I7O09BdUJZOztPQXZCWjtnQkFNWSxJQUFScm9DLGNBQWdCLGVBQWhCQTtnQkFPVSxJQUFSQyxnQkFBa0IsZUFBbEJBO2dCQU5LLElBQVJDLGdCQUFlLGVBQWZBO2dCQUNVLElBQVJDLGdCQUFpQixlQUFqQkE7Z0JBRVksSUFBUkMsZ0JBQXFCLGVBQXJCQTtnQkFESSxJQUFSQyxnQkFBaUIsZUFBakJBO2dCQUVRLElBQVJDLGdCQUFpQixlQUFqQkE7Z0JBQ08sSUFBUkMsZ0JBQWdCLGVBQWhCQTtvQkFPV0MsZ0JBQUpDLFlBQ0ksVUFESkEsR0FDSSxLQURBRDs7Y0FFUUUsZ0JBQUxVLGFBQUxUO1VBQ1UsVUFETFMsSUFBTFQsSUFDVSxLQURBRDtpQkFOVixJQUFSRSxnQkFBaUIsZ0JBQWpCQTtpQkFEUSxJQUFSQyxpQkFBaUIsZ0JBQWpCQTtpQkFFTSxJQUFSQyxpQkFBZSxnQkFBZkE7aUJBQ1csSUFBUkMsaUJBQWtCLGdCQUFsQkE7aUJBQ2dCLElBQVJDLGlCQUEwQixnQkFBMUJBLFVBS1U7YUFFeEJzbkM7O1FBU0o7OEJBR2EsUUFBSTtTQUhqQixxQkFFYSxRQUFJO1NBRmpCLHFCQUNhLFFBQUk7UUFEakIsMEJBQWEsUUFBSTs7T0FUYjs7VUFjSjs7V0FBcUIsb0JBRGJ0b0M7V0FDYTs7OztnQ0FFRyxXQUZoQnlvQyxNQUVnQixRQUFlO1VBRmxCLDBCQUNHLFdBRHBCQyxNQUNvQixRQUFlLE9BRDNCRixHQUFJRDs7VUFLaEI7O1dBQXFCLHNCQURYdG9DO1dBQ1c7Ozs7Z0NBRUcsV0FGaEI0b0MsUUFFZ0IsUUFBZTtVQUZsQjtrQ0FDRyxXQURwQkMsUUFDb0IsUUFBZTs7a0JBRDNCRjtrQkFBSUQ7O1VBS2hCOztXQUFxQixzQkFEZHpvQztXQUNjOzs7O2dDQUVHLFdBRmhCK29DLFFBRWdCLFFBQWU7VUFGbEI7a0NBQ0csV0FEcEJDLFFBQ29CLFFBQWU7O2tCQUQzQkY7a0JBQUlEOztVQUtoQjs7V0FBcUIsc0JBRFo1b0M7V0FDWTs7OztnQ0FFRyxXQUZoQmtwQyxRQUVnQixRQUFlO1VBRmxCO2tDQUNHLFdBRHBCQyxRQUNvQixRQUFlOztrQkFEM0JGO2tCQUFJRDs7VUFVaEI7O1dBQXFCLHNCQURSL29DO1dBQ1E7Ozs7Z0NBRUcsV0FGaEJxcEMsUUFFZ0IsUUFBZTtVQUZsQjtrQ0FDRyxXQURwQkMsUUFDb0IsUUFBZTs7a0JBRDNCRjtrQkFBSUQ7O1VBTGhCOztXQUFxQixzQkFEWmxwQztXQUNZOzs7O2dDQUVHLFdBRmhCd3BDLFFBRWdCLFFBQWU7VUFGbEI7a0NBQ0csV0FEcEJDLFFBQ29CLFFBQWU7O2tCQUQzQkY7a0JBQUlEOztVQVVoQjs7V0FBcUIsc0JBRFpycEM7V0FDWTs7OztnQ0FFRyxXQUZoQjJwQyxRQUVnQixRQUFlO1VBRmxCO2tDQUNHLFdBRHBCQyxRQUNvQixRQUFlOztrQkFEM0JGO2tCQUFJRDs7VUFLaEI7O1dBQXFCLHNCQURieHBDO1dBQ2E7Ozs7Z0NBRUcsV0FGaEI4cEMsUUFFZ0IsUUFBZTtVQUZsQjtrQ0FDRyxXQURwQkMsUUFDb0IsUUFBZTs7a0JBRDNCRjtrQkFBSUQ7O1VBaUNoQjs7V0FBcUIsc0JBREQzcEM7V0FDQzs7OztnQ0FFRyxXQUZoQmlxQyxRQUVnQixRQUFlO1VBRmxCO2tDQUNHLFdBRHBCQyxRQUNvQixRQUFlOztrQkFEM0JGO2tCQUFJRDs7VUFLSztXQURNN3BDO1dBQUxVO1dBQUxUO1dBQ0ksc0JBRE1EO1dBQ047Ozs7V0FDWixTQUFNLEtBRkVDLEtBQUtTO1dBR0Qsc0JBRGpCWDtXQUNpQjs7OztnQ0FJRyxXQUpSdXFDLE1BSThCLFdBTjlCTCxRQU04QixRQUFlO1dBSnhDLHFCQUdHLFdBTFpDLFFBS2tDLFdBSGxDSyxNQUdrQyxRQUFlO1dBSHhDLHFCQUVHLFdBRmhCQyxNQUVzQyxXQUp0Q0wsUUFJc0MsUUFBZTtVQUZ4Qzs7b0JBQ0csV0FIcEJDLFFBRzBDLFdBRDFDSyxNQUMwQyxRQUFlOzs7OztVQTlCN0Q7O1dBQXFCLHVCQURadnFDO1dBQ1k7Ozs7Z0NBRUcsV0FGaEIwcUMsUUFFZ0IsUUFBZTtVQUZsQjtrQ0FDRyxXQURwQkMsUUFDb0IsUUFBZTs7a0JBRDNCRjtrQkFBSUQ7O1VBTGhCOztXQUFxQix1QkFEWnZxQztXQUNZOzs7O2dDQUVHLFdBRmhCNnFDLFNBRWdCLFFBQWU7VUFGbEI7a0NBQ0csV0FEcEJDLFNBQ29CLFFBQWU7O2tCQUQzQkY7a0JBQUlEOztVQVVoQjs7V0FBcUIsdUJBRGQxcUM7V0FDYzs7OztnQ0FFRyxXQUZoQmdyQyxTQUVnQixRQUFlO1VBRmxCO2tDQUNHLFdBRHBCQyxTQUNvQixRQUFlOztrQkFEM0JGO2tCQUFJRDs7VUFLaEI7O1dBQXFCLHVCQURYN3FDO1dBQ1c7Ozs7Z0NBSUcsV0FKUmlyQyxTQUlRLFFBQWU7V0FKbEIscUJBR0csV0FIWkMsU0FHWSxRQUFlO1dBSGxCLHFCQUVHLFdBRmhCQyxTQUVnQixRQUFlO1VBRmxCO2tDQUNHLFdBRHBCQyxTQUNvQixRQUFlOzs7OztVQUt2Qzs7V0FBcUIsdUJBREhuckM7V0FDRzs7OztnQ0FJRyxXQUpSb3JDLFNBSVEsUUFBZTtXQUpsQixxQkFHRyxXQUhaQyxTQUdZLFFBQWU7V0FIbEIscUJBRUcsV0FGaEJDLFNBRWdCLFFBQWU7VUFGbEI7a0NBQ0csV0FEcEJDLFNBQ29CLFFBQWU7Ozt3QkFnQnVCO2FBaUI5RHhCLE1BV0VwcUMsSUFBSVM7TUpueUJYO01JbXlCa0IsVUFBWFQ7aUJBQUlTO1FBOEN3Qjs7ZUE5Q3hCQTs7Ozs7Ozs7a0JBK0NhOztPQS9DTixPQUFYVDs7O29CQUFJUzs7b0JBQzBCLElBQVRvckMsTUFEakJwckMsT0FDa0MscUJBQWpCb3JDOzs7Ozs7Ozs7Ozs7OEJBRHJCN3JDO29CQUFJUzs7b0JBRThCLElBQVRxckMsUUFGckJyckMsT0FFd0MscUJBQW5CcXJDOzs7Ozs7Ozs7Ozs7OEJBRnpCOXJDO29CQUFJUzs7OztvQkFJd0IsSUFBVHNyQyxRQUpmdHJDLE9BSStCLHFCQUFoQnNyQzs7Ozs7Ozs7Ozs7OzhCQUpuQi9yQztvQkFBSVM7Ozs7b0JBSzRCLElBQVR1ckMsUUFMbkJ2ckMsT0FLcUMscUJBQWxCdXJDOzs7Ozs7Ozs7Ozs7OEJBTHZCaHNDO29CQUFJUzs7OztvQkFPb0MsSUFBVHdyQyxRQVAzQnhyQyxPQU9pRCxxQkFBdEJ3ckM7Ozs7Ozs7Ozs7Ozs4QkFQL0Jqc0M7b0JBQUlTOzs7O29CQU00QixJQUFUeXJDLFFBTm5CenJDLE9BTXFDLHFCQUFsQnlyQzs7Ozs7Ozs7Ozs7OzhCQU52QmxzQztvQkFBSVM7Ozs7b0JBUTRCLElBQVQwckMsUUFSbkIxckMsT0FRcUMscUJBQWxCMHJDOzs7Ozs7Ozs7Ozs7OEJBUnZCbnNDO29CQUFJUzs7OztvQkFHMEIsSUFBVDJyQyxRQUhqQjNyQyxPQUdrQyxxQkFBakIyckM7Ozs7Ozs7Ozs7Ozs4QkFIckJwc0M7b0JBQUlTOzs7OztjQWdDd0IsSUFEa0I0ckMsUUEvQjFDNXJDLE9BK0JxQzZyQyxNQS9CckM3ckMsT0FnQ3dCLGdCQURrQjRyQztjQUNqQyxxQkFENEJDOzs7Ozs7O3NCQUVyQjs7OytCQWpDcEJ0c0M7b0JBQUlTOzs7Ozs7Y0FzQ0c7ZUFEb0I4ckMsUUFyQ3ZCOXJDO2VBcUNpQityQyxLQXJDakIvckM7ZUFxQ1dnc0MsS0FyQ1hoc0M7ZUFzQ0csU0FBTSxXQURFZ3NDO2VBRUUsb0JBRGYzc0M7ZUFDZTs7Y0FDUixXQURKNnNDO2NBRUksV0FGR0Q7Y0FHZSxlQUxORixLQUtNLFdBTEFEOzs7Ozs7O3VCQU1MOzs7bUJBM0N0QnZzQztvQkFBSVM7WUFVNEIsSUFBVG1zQyxRQVZuQm5zQyxPQVVxQyxzQkFBbEJtc0M7VUFDUjs7K0JBWGY1c0M7b0JBQUlTOzs7OztxQkFjNEIsSUFBVG9zQyxTQWRuQnBzQyxPQWNxQyxzQkFBbEJvc0M7O3VCQUNSOzs7K0JBZmY3c0M7b0JBQUlTOzs7Ozs7cUJBa0J3QixJQUFUcXNDLFNBbEJmcnNDLE9Ba0IrQixzQkFBaEJxc0M7O3VCQUNOOzs7K0JBbkJiOXNDO29CQUFJUzs7Ozs7OztxQkFzQjhCLElBQVRzc0MsU0F0QnJCdHNDLE9Bc0J3QyxzQkFBbkJzc0M7O3VCQUNUOzs7K0JBdkJoQi9zQztvQkFBSVM7Ozs7Ozs7O3FCQTJCTixJQUQyQ3VzQyxTQTFCckN2c0MsT0EyQlksc0JBRHlCdXNDOzt1QkFFakI7O2VBaEJUO2VBSUE7ZUFJRjtlQUlHO2VBS1E7ZUFLSjtlQVVFO2dCQUlMLDhCQUFZO2FBbUcvQkMsdUJBRUVwc0MsSUFBSW9CO01BQVMsY0FBYnBCLGlCQUFJb0IsWUFBSnBCLE9BQUlvQixlQUd5QjthQXJDL0JpckMsZ0JBR0E1cEMsTUFBTXJCO01BQVMsR0FBZnFCO1FBRXFCLElBQVQ2cEMsUUFGWjdwQyxTQUU0QiwyQkFBaEI2cEMsUUFGTmxyQztNQUNTLE9BRFRBLEtBRW1EO2FBOUR6RG1yQyxhQUVBbnJDO01KLzFCTCxJSSsxQktFO01BQVM7aUJBQVRBO1FBcUQ4Qjs7UUFyRHJCLE9BQVRBO2lCQTJCOEIsSUFBekI5QyxLQTNCTDhDLFdBMkJzQyx1QkFBakM5QztpQkFDeUIsSUFBcEJDLE9BNUJWNkMsV0E0QnNDLHVCQUE1QjdDOztlQTNCR0MsT0FEYjRDLFdBQ1F0QixJQURSc0I7V0FFc0MsOEJBRDlCdEIsT0FDOEIsYUFEekJ0Qjs7ZUFFS0MsT0FIbEIyQyxXQUdhckIsTUFIYnFCO1dBSXNDLDhCQUR6QnJCLFNBQ3lCLGFBRHBCdEI7O1dBSUo7WUFES0MsT0FObkIwQztZQU1hcEIsS0FOYm9CO1lBTVFuQixNQU5SbUI7WUFPYyxxQkFESzFDO1lBRUwsaUNBRkRzQixRQUNUc3NDO1dBQ1UsOEJBRk5yc0MsTUFFSnNzQzs7V0FHVTtZQURPNXRDLE9BVnJCeUM7WUFVZWpCLE9BVmZpQjtZQVVVaEIsTUFWVmdCO1lBV2MsdUJBRE96QztZQUVQLG1DQUZDd0IsVUFDWHNzQztXQUNVLDhCQUZKcnNDLE1BRU5zc0M7O1dBR1U7WUFEVzl0QyxPQWR6QndDO1lBY21CZCxPQWRuQmM7WUFjY2IsTUFkZGE7WUFlYyx1QkFEV3hDO1lBRVgsbUNBRkswQixVQUNmcXNDO1dBQ1UsOEJBRkFwc0MsTUFFVnFzQzs7V0FHVTtZQURPL3RDLE9BbEJyQnVDO1lBa0JlWCxPQWxCZlc7WUFrQlVWLE1BbEJWVTtZQW1CYyx1QkFET3ZDO1lBRVAsbUNBRkM0QixVQUNYb3NDO1dBQ1UsOEJBRkpuc0MsTUFFTm9zQzs7V0FHVTtZQURPaHVDLE9BdEJyQnNDO1lBc0JlUixPQXRCZlE7WUFzQlVQLE1BdEJWTztZQXVCYyx1QkFET3RDO1lBRVAsbUNBRkM4QixVQUNYbXNDO1dBQ1UsOEJBRkpsc0MsTUFFTm1zQzs7ZUFLT2h1QyxPQTdCWG9DLFdBNkJNTCxNQTdCTks7V0E4QnNDLDhCQURoQ0wsU0FDZ0MsYUFEM0IvQjtrQkFZbUIsWUF6QzlCb0M7a0JBMEM4QixZQTFDOUJBO2tCQTJDOEIsWUEzQzlCQTs7ZUFvQ21CbEMsT0FwQ25Ca0MsV0FvQ2VyQyxHQXBDZnFDO1dBcUNtQixVQURKckMsR0FDSSxhQURBRzs7ZUFFRUMsUUF0Q3JCaUMsV0FzQ2lCZ3NDLEtBdENqQmhzQztXQXVDeUIsVUFEUmdzQyxVQUNRLGFBREpqdUM7a0JBUFMsSUFBeEJDLFFBL0JOZ0MsV0ErQnVDLHdCQUFqQ2hDO2tCQUN3QixJQUF4QkMsUUFoQ04rQixXQWdDdUMsd0JBQWpDL0I7a0JBaUJ3QixZQWpEOUIrQjs7V0FtRGtEO1lBRHRCOUIsUUFsRDVCOEI7WUFrRGdCTyxXQWxEaEJQO1lBbURrRCxrQkFEdEI5QjtXQXpEVixTQXlERnFDO29DQXhERXNoQyxrQkFJbEJvSixhQUprQnBKOzs7cUJBd0RGdGhDO2FBdkRFcWtDO2tCQUdsQnFHLGFBSGtCckc7a0JJdlJkem1DO2tCSjhUMEIsSUFBdkIrQixRQWxDUEYsV0FrQ3dDLHdCQUFqQ0U7a0JBV3VCLElBQVRDLFFBN0NyQkgsV0E2Q3dDLHVCQUFuQkc7a0JBQ1MsSUFBVEMsUUE5Q3JCSixXQThDcUMsdUJBQWhCSTtrQkFDUyxJQUFmRSxRQS9DZk4sV0ErQ3NDLHVCQUF2Qk07O2VBQ0tFLFFBaERwQlIsV0FnRGVnQixJQWhEZmhCO1dBb0VXLFVBcEJJZ0I7WUFvQkosT0FwQklBO3lCQWhEZmhCLFFBZ0RvQlE7eUJBaERwQlIsUUFnRG9CUTtxQkFpQ2lDLHdCQWpDakNBOzBCQWhEcEJSLFFBZ0RvQlE7O1lBb0JULE9BcEJJUTt5QkFoRGZoQixRQWdEb0JRO3lCQWhEcEJSLFFBZ0RvQlE7eUJBaERwQlIsUUFnRG9CUTt5QkFoRHBCUixRQWdEb0JRO3lCQWhEcEJSLFFBZ0RvQlE7eUJBaERwQlIsUUFnRG9CUTt5QkFoRHBCUixRQWdEb0JRO3lCQWhEcEJSLFFBZ0RvQlE7eUJBaERwQlIsUUFnRG9CUTs7ZUFnQ2UsSUFBVjByQyxRQWhDVmxyQztlQWdDdUMsb0JBQTdCa3JDLFFBQTZCLGFBaENsQzFyQzswQkFoRHBCUixRQWdEb0JROzBCQWhEcEJSLFFBZ0RvQlE7O2VBZkZDLFFBakNsQlQsV0FpQ1FtQixNQWpDUm5CO1dBaUNvRCx1QkFBNUNtQixNQUE0QyxhQUFsQ1YsVUFvQndCO2FBMEMxQzJxQyx5QkFFRXhzQyxLQUFLa0I7TUFBUyxjQUFkbEIsMEJBQUtrQixrQkFHMEI7Ozs7YUFXakNxc0MsYUFHQXp0QyxJQUFJb0I7TUFBUyxVQUFicEI7T0FDaUIsWUFEYm9COztRQUFTLFNBQWJwQjtjQUVvQjB0QyxFQUZwQjF0QyxPQUVhOGtDLE1BRmI5a0Msb0JBRWE4a0MsTUFBTzRJLEdBRmhCdHNDOztjQUdzQjVDLEtBSHRCNEMsU0FHUStqQyxRQUhabmxDLG9CQUdZbWxDLFNBQWMzbUM7UUFDckIsb0JBQW1CO2FBS3hCbXZDLGFBR0EzdEMsSUFBSUUsS0FBS2tCO01BQXFCLHVCQUE5QnBCLElBQVNvQjtNQUFxQixVQUExQmxCOzs7O2dCQUswQzFCLGFBQVp5QixpQ0FBWXpCO1VBRWY7WUFOT0MsZ0JBQUwwQjswQkFBSzFCO01BRFIsSUFHV0MsZ0JBQUw0QixlQUF0QnNSLEVBSFYxUjtnQkFHZ0NJLFNBQXRCc1IsR0FBMkJsVCxPQUlTO2FBTTlDa3ZDLFlBTUZ6SyxJQUFJL2hDO01BQWUseUJBQW5CK2hDLElBQUkvaEM7TUFBZSxnQ0FDaUIsSUFBdkI4a0MsY0FBdUIsT0FBdkJBO01BQ1YsbUJBQW1CO2FBa0x4QjRILHVCQUtFeHJDLElBQUk2Z0MsSUFBSS9oQztNQUN1QiwwQkFEM0IraEMsSUFBSS9oQyxPQUN1QjtvQkFEL0JrQixJQUNlNGpDLE9BQU01a0MsUUFDd0I7YUF2TC9DdXNDLGdCQU1FMUssSUE0SU0vaEM7TUE1SU8sVUFBYitoQztPQW1IMkIsWUF5QnJCL2hDOztPQTVJTyxPQUFiK2hDOztvQkE0SU0vaEM7WUExSTJCO2FBRFoyc0MsV0EySWYzc0M7YUEzSUg0c0MsU0FESDdLO2FBRWlDLHNCQUQ5QjZLLFNBQWtCRDthQUNZOzt5QkFBaEI3SCxPQUFNNWtDOzs7b0JBMElqQkY7WUF2STJCO2FBRFA2c0MsYUF3SXBCN3NDO2FBeElFOHNDLFdBSlIvSzthQUtpQyx3QkFEekIrSyxXQUFrQkQ7YUFDTzs7eUJBQWhCckgsT0FBTXVHOzs7VUFHbkI7V0FET2dCLFdBUFhoTDtXQU9NbmpDLElBUE5takM7V0FRSSxxQkFERW5qQyxJQXFJQW9CO1dBcElGOzs7WUFFSjs7YUFBbUMsd0JBSHhCK3NDLFdBRXVCQzthQUNDOzs4QkFBaEJDLE9BQU1qQjtVQUVHOztVQUd4QjtXQURZa0IsV0FkaEJuTDtXQWNXbGpDLE1BZFhrakM7V0FlSSxxQkFET2xqQyxNQThITG1CO1dBN0hGOzs7WUFFSjs7YUFBbUMsd0JBSG5Ca3RDLFdBRWtCQzthQUNDOzs4QkFBaEJDLE9BQU1uQjtVQUVHOztVQUd4QjtXQURpQm9CLFdBckJyQnRMO1dBcUJlampDLEtBckJmaWpDO1dBcUJVaGpDLE1BckJWZ2pDO1dBcUJHL2lDLE1BckJIK2lDO1dBc0JJLHFCQURNaGpDLE1BQUtELEtBdUhUa0I7V0F0SEY7OztZQUUrQjthQURFc3RDO2FBQWJydUM7YUFDVyx3QkFIZG91QyxXQUVnQkM7YUFDRjs7eUJBSGhDdHVDLFdBRXFCQyxPQUNMc3VDLE9BQU1wQjtVQUVNOztVQUczQjtXQURtQnFCLFdBNUJ2QnpMO1dBNEJpQjNpQyxPQTVCakIyaUM7V0E0Qlk3aUMsTUE1Qlo2aUM7V0E0Qks1aUMsUUE1Qkw0aUM7V0E2QkkscUJBRFE3aUMsTUFBS0UsT0FnSFhZO1dBL0dGOzs7WUFFK0I7YUFESXl0QzthQUFmbHVDO2FBQ1csd0JBSFppdUMsV0FFZ0JDO2FBQ0o7O3lCQUg5QnR1QyxhQUVtQkksT0FDTG11QyxPQUFNdEI7VUFFTTs7VUFHM0I7V0FEdUJ1QixXQW5DM0I1TDtXQW1DcUJyaUMsT0FuQ3JCcWlDO1dBbUNnQjFpQyxNQW5DaEIwaUM7V0FtQ1N6aUMsUUFuQ1R5aUM7V0FvQ0kscUJBRFkxaUMsTUFBS0ssT0F5R2ZNO1dBeEdGOzs7WUFFK0I7YUFEUTR0QzthQUFuQkM7YUFDVyx5QkFIUkYsV0FFZ0JDO2FBQ1I7O3lCQUgxQnR1QyxhQUVldXVDLE9BQ0xFLE9BQU1EO1VBRU07O1VBRzNCO1dBRG1CRSxXQTFDdkJqTTtXQTBDaUJrTSxPQTFDakJsTTtXQTBDWXZpQyxNQTFDWnVpQztXQTBDS3RpQyxRQTFDTHNpQztXQTJDSSxzQkFEUXZpQyxNQUFLeXVDLE9Ba0dYanVDO1dBakdGOzs7WUFFK0I7YUFESWt1QzthQUFmQzthQUNXLHlCQUhaSCxXQUVnQkU7YUFDSjs7eUJBSDlCenVDLGFBRW1CMHVDLE9BQ0xFLE9BQU1EO1VBRU07O1VBRzNCO1dBRG1CRSxXQWpEdkJ2TTtXQWlEaUJ3TSxPQWpEakJ4TTtXQWlEWXBpQyxNQWpEWm9pQztXQWlES25pQyxNQWpETG1pQztXQWtESSxzQkFEUXBpQyxNQUFLNHVDLE9BMkZYdnVDO1dBMUZGOzs7WUFFK0I7YUFESXd1QzthQUFmQzthQUNXLHlCQUhaSCxXQUVnQkU7YUFDSjs7eUJBSDlCNXVDLFdBRW1CNnVDLE9BQ0xFLE9BQU1EO1VBRU07O1VBRzNCO1dBREtFLFdBeERUN007V0F3RElsaUMsTUF4REpraUM7V0F5REksc0JBREFsaUMsTUFvRkVHO1dBbkZGOzs7WUFFSjs7YUFBbUMseUJBSDFCNHVDLFdBRXVCQzthQUNHOzs4QkFBaEJFLE9BQU1EO1VBRUc7O1VBR0s7V0FEN0JFLFdBL0RKak47V0FnRWlDLHlCQUQ3QmlOLFdBNkVFaHZDO1dBNUUyQjs7d0JBQWhCa3ZDLFFBQU1EOztVQUlVO1dBRGRFLFlBbkVuQnBOO1dBbUVjamlDLElBbkVkaWlDO1dBb0VpQyx5QkFEZG9OLFlBeUVibnZDO1dBeEUyQjs7d0JBRG5CRixJQUNHdXZDLFFBQU1EOztVQUdVO1dBRGhCRSxZQXRFakJ2TjtXQXNFWWhpQyxJQXRFWmdpQztXQXVFaUMseUJBRGhCdU4sWUFzRVh0dkM7V0FyRTJCOzt3QkFEckJELElBQ0t5dkMsUUFBTUQ7O29CQXFFakJ2dkM7O2FBakVtQnl2QyxhQWlFbkJ6dkM7YUFqRU95a0MsVUFpRVB6a0M7YUFsRXdCMHZDLFlBMUU5QjNOO2FBMEVtQjJDLFlBMUVuQjNDO2FBMEVVSCxRQTFFVkc7WUE0RUMsb0JBRmtCMkMsZ0JBQ05EO2FBQ3FDO1lBQ2pCO3NDQUhIaUwsWUFDTEQ7YUFFUTs7MEJBSHZCN04sUUFDRzZDLFVBRUltTCxRQUFNRDs7O29CQStEakIzdkM7WUEzRHdDO2FBRE42dkMsY0E0RGxDN3ZDO2FBNURTOHZDLFdBNERUOXZDO2FBN0QwQit2QyxZQS9FaENoTzthQStFcUJpTyxZQS9FckJqTzthQStFWUMsVUEvRVpEO2FBaUY4QyxrQkFEL0IrTjtZQUNkLG9CQUFVLFVBRlVFO2FBR3JCO1lBRDhDO2FBRzlDLHlCQUxnQ0QsWUFLUCxVQUplRjthQUl4Qzs7MEJBTFk3TixVQUNHOE4sV0FHRUksUUFBTUQ7OztvQkF5RGpCandDO1lBbkQyQjthQURWbXdDLGNBb0RqQm53QzthQXBERm93QyxZQXhGSnJPO2FBeUZpQyx5QkFEN0JxTyxZQUFtQkQ7YUFDVTs7MEJBQWhCRyxRQUFNRDs7O29CQW1EakJyd0M7WUFoRDJCO2FBRFZ1d0MsY0FpRGpCdndDO2FBakRGd3dDLFlBM0ZKek87YUE0RmlDLHlCQUQ3QnlPLFlBQW1CRDthQUNVOzswQkFBaEJHLFFBQU1EOzs7VUFLVTtXQURIRSxZQWhHOUI1TztXQWdHYzlsQyxlQWhHZDhsQztXQWlHaUMseUJBREg0TyxZQTRDeEIzd0M7V0EzQzJCOzt3QkFEbkIvRCxlQUNHNDBDLFFBQU1EOztjQUVPRSxZQW5HOUIvTyxPQW1HY2dQLGVBbkdkaFA7VUE0SDRCLFNBekJkZ1A7WUEyQm1CO3NCQTNCbkJBO2FBMEJRMU07YUFBTjNsQzthQUNpQix5QkFEakJBLEtBZVZzQjthQWQyQjs7YUFDQSx5QkE1Qkg4d0MsWUEyQlB2eUM7YUFDVTs7Z0NBRGhCSSxLQURLMGxDLFFBRUw0TSxNQUFNRDtVQUdVO29CQS9CbkJEO1dBOEJROUw7V0FBTmlNO1dBQ2lCLHlCQURqQkEsT0FXVmx4QztXQVYyQjs7V0FDQSx5QkFoQ0g4d0MsWUErQlBLO1dBQ1U7OzhCQURoQkMsT0FES25NLFFBRUxxTSxRQUFNRDs7b0JBU2pCcnhDO1lBcEMyQjthQURSdXhDLGNBcUNuQnZ4QzthQXJDRHd4QyxZQXZHTHpQO2FBd0dpQyx5QkFENUJ5UCxZQUFvQkQ7YUFDUTs7MEJBQWhCRyxRQUFNRDs7O29CQW9DakJ6eEM7WUFqQzJCO2FBRHNCMnhDLGNBa0NqRDN4QzthQWxDNEI0eEMsWUExR2xDN1A7YUEwR3dCbmhDLFNBMUd4Qm1oQzthQTBHYWxoQyxVQTFHYmtoQzthQTJHaUMseUJBREM2UCxZQUFxQkQ7YUFDdEI7OzBCQURwQjl3QyxVQUFXRCxTQUNQa3hDLFFBQU1EOzs7b0JBaUNqQjd4QztZQTlCMkI7YUFEVSt4QyxjQStCckMveEM7YUEvQm1CZ3lDLFlBN0d6QmpRO2FBNkdnQmhoQyxRQTdHaEJnaEM7YUE4R2lDLHlCQURSaVEsWUFBa0JEO2FBQ1Y7OzBCQURqQmh4QyxRQUNDbXhDLFFBQU1EOzs7Y0FFTDcwQyxLQWhIbEIya0MsT0FnSGE3Z0MsSUFoSGI2Z0M7VUE0SWUsVUE1QkY3Z0M7V0E0QkUsT0E1QkZBO29CQTZCdUIsOEJBN0J2QkEsSUFBSzlELEtBNEJaNEM7b0JBRThCLDhCQTlCdkJrQixJQUFLOUQsS0E0Qlo0Qzs7Y0FzQlUsVUF0QlZBO2dCQXlCTjsrQkF6Qk1BO2lCQXlCNkIseUJBckRqQjVDLEtBb0RBKzBDO2lCQUNpQjs7Z0NBQWhCRSxRQUFNRDtjQUVwQjtxQkFkK0IsOEJBekN2Qmx4QyxJQUFLOUQsS0E0Qlo0Qzs7V0FBUyxPQTVCRmtCO29CQStCdUIsOEJBL0J2QkEsSUFBSzlELEtBNEJaNEM7b0JBSThCLDhCQWhDdkJrQixJQUFLOUQsS0E0Qlo0QztvQkFLOEIsOEJBakN2QmtCLElBQUs5RCxLQTRCWjRDO29CQU04Qiw4QkFsQ3ZCa0IsSUFBSzlELEtBNEJaNEM7b0JBTzhCLDhCQW5DdkJrQixJQUFLOUQsS0E0Qlo0QztvQkFROEIsOEJBcEN2QmtCLElBQUs5RCxLQTRCWjRDO29CQVM4Qiw4QkFyQ3ZCa0IsSUFBSzlELEtBNEJaNEM7b0JBVThCLDhCQXRDdkJrQixJQUFLOUQsS0E0Qlo0Qzs7a0JBY3FCc3lDLFlBMUNkcHhDLE9BMENLK2dDLFVBMUNML2dDO3FCQTBEZndyQzswQkFoQm9CekssVUFBU3FRLGFBMUNUbDFDLEtBNEJaNEM7O2NBa0JOO2VBRjZCdXlDLFlBNUNoQnJ4QztlQTRDT2doQyxVQTVDUGhoQztlQThDYixvQ0FGNkJxeEMsWUE1Q1huMUMsS0E0Qlo0QztlQWtCTjs7OzsrQkFGb0JraUMsVUFDSHlRLGFBQTJCRCxRQUFNRDtxQkFOZCw4QkF2Q3ZCdnhDLElBQUs5RCxLQTRCWjRDO3FCQVk4Qiw4QkF4Q3ZCa0IsSUFBSzlELEtBNEJaNEM7O01BdkJILG1CQUFtQjthQStEeEJ3eUMsK0JBSUEvTixVQUFVMUMsSUFBSS9oQztNQUFTLFVBQXZCeWtDO09BMEU2Qiw0QkExRW5CMUMsSUFBSS9oQzs7T0FBUyxPQUF2QnlrQzs7b0JBQWN6a0M7WUFHWjthQUY4QjJzQyxXQURsQjNzQzthQUNONHlDLGVBRFJuTzthQUdFOzZDQUZNbU8sZUFERTdRLElBQ3NCNEs7YUFFOUI7O3lCQURpQmtHLGtCQUFpQi9OOzs7b0JBRnRCOWtDO1lBT1o7YUFGa0M2c0MsYUFMdEI3c0M7YUFLSjh5QyxpQkFMVnJPO2FBT0U7O2dCQUZRcU8saUJBTEEvUSxJQUswQjhLO2FBRWxDOzt5QkFEaUJrRyxrQkFBaUJ2Tjs7O29CQU50QnhsQztZQVdaO2FBRjRCZ3RDLGFBVGhCaHRDO2FBU1BnekMsaUJBVFB2TzthQVdFOztnQkFGS3VPLGlCQVRHalIsSUFTb0JpTDthQUU1Qjs7eUJBRGlCaUcsa0JBQWlCaEc7OztvQkFWdEJqdEM7WUFlWjthQUZnQ210QyxhQWJwQm50QzthQWFMa3pDLGlCQWJUek87YUFlRTs7Z0JBRk95TyxpQkFiQ25SLElBYXdCb0w7YUFFaEM7O3lCQURpQmdHLGtCQUFpQi9GOzs7b0JBZHRCcHRDO1lBbUJaO2FBRndDc3RDLGFBakI1QnR0QzthQWlCRG96QyxpQkFqQmIzTzthQW1CRTs7Z0JBRlcyTyxpQkFqQkhyUixJQWlCZ0N1TDthQUV4Qzs7eUJBRGlCK0Ysa0JBQWlCOUY7OztvQkFsQnRCdnRDO1lBdUJaO2FBRmdDeXRDLGFBckJwQnp0QzthQXFCTHN6QyxpQkFyQlQ3TzthQXVCRTs7Z0JBRk82TyxpQkFyQkN2UixJQXFCd0IwTDthQUVoQzs7eUJBRGlCOEYsbUJBQWlCN0Y7OztvQkF0QnRCMXRDO1lBMkJaO2FBRmdDNHRDLGFBekJwQjV0QzthQXlCTHd6QyxrQkF6QlQvTzthQTJCRTs7Z0JBRk8rTyxrQkF6QkN6UixJQXlCd0I2TDthQUVoQzs7eUJBRGlCNkYsbUJBQWlCMUY7OztvQkExQnRCL3RDO1lBK0JaO2FBRjhCa3VDLGFBN0JsQmx1QzthQTZCTjB6QyxrQkE3QlJqUDthQStCRTs7Z0JBRk1pUCxrQkE3QkUzUixJQTZCc0JtTTthQUU5Qjs7eUJBRGlCeUYsbUJBQWlCdEY7OztvQkE5QnRCcnVDOzthQW1EY3d1QyxhQW5EZHh1QzthQW1EQzR6QyxXQW5ERDV6QzthQWtEYTZ6QyxrQkFsRDNCcFA7YUFrRGVxUCxhQWxEZnJQO1lBb0RHLG9CQUZZcVAsaUJBQ0FGO2FBQ3VDO1lBRXBEOzs7Z0JBSnlCQyxrQkFsRGpCOVIsSUFtRGtCeU07YUFHMUI7O3lCQUhhb0YsV0FFSUcsbUJBQWlCcEY7OztvQkFyRHRCM3VDO1lBMkRtQzthQUZONnVDLGFBekQ3Qjd1QzthQXlEZ0JnMEMsYUF6RGhCaDBDO2FBeURHaTBDLFdBekRIajBDO2FBd0Q2QmswQyxrQkF4RDNDelA7YUF3RDhCMFAsYUF4RDlCMVA7YUF3RGlCMlAsYUF4RGpCM1A7YUEyRGlELGtCQUZoQ3dQO1lBRWQsb0JBQVUsVUFISUc7YUFJWjtZQUQ0QyxZQUVBLFVBSm5CSjtZQUkzQixvQkFBVSxVQUxpQkc7YUFNekI7WUFINEM7YUFJaEMsa0JBQU0sS0FOTkYsWUFBYUQ7YUFPWCxzQkFEZnRQO2FBQ2U7O1lBQ1IsV0FESmdHO1lBRUksV0FGR0Q7WUFMbUM7YUFTL0M7O2dCQUFpQyxVQVpReUosbUJBeERqQ25TLElBeURpQzhNO2FBV3pDOztZQUc4Qjt1QkFkZm9GLFdBQWFELGFBY0UsS0FKYks7b0JBQWlCdEY7OztvQkFuRXRCL3VDO1lBbUNaO2FBRmdDeXZDLGFBakNwQnp2QzthQWlDTHMwQyxrQkFqQ1Q3UDthQW1DRTs7Z0JBRk82UCxrQkFqQ0N2UyxJQWlDd0IwTjthQUVoQzs7MEJBRGlCOEUsbUJBQWlCckY7OztvQkFsQ3RCbHZDO1lBdUNaO2FBRmdDNnZDLGNBckNwQjd2QzthQXFDTHcwQyxrQkFyQ1QvUDthQXVDRTs7Z0JBRk8rUCxrQkFyQ0N6UyxJQXFDd0I4TjthQUVoQzs7MEJBRGlCNEUsbUJBQWlCcEY7OztvQkF0Q3RCcnZDO1lBMkNaO2FBRmtDbXdDLGNBekN0Qm53QzthQXlDSjAwQyxrQkF6Q1ZqUTthQTJDRTs7Z0JBRlFpUSxrQkF6Q0EzUyxJQXlDMEJvTzthQUVsQzs7MEJBRGlCd0UsbUJBQWlCbkY7OztvQkExQ3RCeHZDO1lBK0NaO2FBRmtEdXdDLGNBN0N0Q3Z3QzthQTZDSTQwQyxrQkE3Q2xCblE7YUErQ0U7O2dCQUZnQm1RLGtCQTdDUjdTLElBNkMwQ3dPO2FBRWxEOzswQkFEaUJzRSxtQkFBaUJqRjs7O01BNkIvQixtQkFBbUI7YUEwQnhCa0YsT0FRRS9TLElBQUkvaEMsT0FDUSxtQkFEWitoQyxJQUNZLFVBQVcsS0FEbkIvaEMsUUFDZ0M7YUFNdEMrMEMsWUFBWXJSLE1BQU03QixNQUFNL2hDO01BQzFCO2lDQUQwQkE7T0FDMUIsYUFEb0IraEMsTUFBTjZCO09BR1osWUFIa0I3QjtNQUdsQixHQURFbVQsV0FEQS92QyxJQWFpQixPQWRLbkY7TUFDMUIsSUFjRSxXQWZZaWtDLGNBZUYsV0FiUmlSO01BYVEsT0FmRWpSO2VBaUJELE9BakJhamtDLE1BZXBCMkcsTUFkRnhCO2VBaUJTLE9BbEJhbkYsTUFlcEIyRyxJQWJGdXVDLFVBREEvdkM7OztTQWtCVyxPQWxCWEE7O1dBa0J5RDs7O2FBQWxDLGdCQW5CRG5GOzs7O2FBbUJrQixnQkFuQmxCQTs7OzthQW1CbUMsZ0JBbkJuQ0E7OzthQW9CdEIsZUFMRTJHLE1BS2MsZ0JBcEJNM0c7YUFxQnRCLE9BckJzQkEsTUFlcEIyRyxLQWJGdXVDLFVBREEvdkM7Ozs7O1dBcUJzQixPQXJCdEJBLGNBcUJzQixnQkF0QkFuRjs7YUFzQm1DOzs7ZUFBakIsZ0JBdEJsQkE7Ozs7ZUFzQm1DLGdCQXRCbkNBOzs7ZUF1QnRCLGVBUkUyRyxNQVFjLGdCQXZCTTNHO2VBd0J0QixPQXhCc0JBLE1BZXBCMkcsS0FiRnV1QyxVQURBL3ZDOzs7dUJBeUJBLE9BMUJzQm5GLE1BZXBCMkcsSUFiRnV1QyxVQURBL3ZDO01BMkJGLDRCQWJJd0IsSUFhc0I7YUFHMUJ3dUMsa0JBQWtCbjJDLEtBQUtnQjtNQUNkO2tCQURTaEI7T0FDVCwwQkFEY2dCO09BR25CLGtCQUhtQkE7O01BR25CLFNBQ0p3RTs7Ozs7Ozs7Ozs7Z0JBRkVXLE9BREFoRyx1QkFDQWdHOztlQU9zRDs7O2lCQUFqQixnQkFUaEJuRjs7OztpQkFTaUMsZ0JBVGpDQTs7O2lCQVViLElBQU5vMUMsTUFBTSxPQVRSajJDO2lCQVVGLGVBRElpMkMsUUFDWSxnQkFYT3AxQztpQkFZdkIsT0FadUJBLE1BVW5CbzFDLE9BVEZqMkMsU0FDQWdHO2lCQVVGLDRCQUZJaXdDOzs7Ozs7Ozs7Ozs7UUFOd0IsaUJBRjFCandDLE9BREFoRztVQUlRLElBQU4ya0IsTUFBTSxPQUpSM2tCO1VBS0YsZUFESTJrQixRQURKdGY7VUFHQSxPQVB1QnhFLE1BS25COGpCLE9BSkYza0IsU0FDQWdHO1VBS0YsNEJBRkkyZTtNQVNzQyxlQVp4QzNlLE1BREFoRztRQWNRLElBQU53SCxJQUFNLE9BZFJ4SDtRQWVGLE9BaEJ1QmEsTUFlbkIyRyxJQWRGeEgsU0FDQWdHO1FBY0YsNEJBREl3QjtNQUlKLE9BbkJ1QjNHLEdBbUJwQjthQUdIcTFDLHNCQUFzQnIxQztNQUNkO3VCQURjQTtPQUNkLHdCQUFOdWtDO09BRU0sV0FETjdnQztNQUVKLGlCQUhJNmdDLFFBRUE1OUIsTUFEQWpEO01BRUosNEJBRElpRCxJQUVzQjthQXFDeEIydUMsZ0JBQWdCeDFDLE1BQU1kO01BQ1g7a0JBRFdBO09BRVgsd0JBRktjO09BR047TUFDVixnQkFESXlHO01BRUosa0JBRklBLElBSFl6RztNQU1oQixnQkFISXlHO01BSUosa0JBSklBLElBSWtCLDRCQU5sQnBIO01BT0osZ0JBTElvSCxJQURBZ3ZDO01BTUosdUJBTElodkMsSUFNZTthQUVuQml2QyxrQkFBa0J0MkMsTUFBTTRDO01BQzFCLFNBRG9CNUM7UUFHbEIsdUNBSHdCNEMsV0FHeEI7O2NBRUU2QjtVQUNFOzZDQU5vQjdCLEVBS3RCNkI7WUFDRSw0QkFDYztZQURkLFNBREZBOzs7UUFGRjtTQU9FLE9BTkkvQjtTQVFJOztZQUZSLHNCQVZzQkUsT0FHcEIyekM7U0FTTTtzQkFFRmp4QyxHQUFJLGVBRlIrQixJQUNBKzNCLE9BQ0k5NUIsR0FBSSxpQkFBOEI7U0FGaEMsVUFUTml4QztTQVNNLDJCQVpjM3pDO1NBWWQ7O2NBSVYxRTtVQUNFO2dCQUNFb0gsRUFERix1QkFqQnNCMUMsRUFnQnhCMUU7WUFDRSxPQUNFb0g7YUFFSyxJQUZMQTs7Y0FDRSxTQUpGdUYsU0FJcUIsb0JBQXFCLGNBQVcsSUFEckR2RjtZQURGLFNBREZwSDs7O1FBTUEsNEJBVkltSjtNQVdDLE9BdkJtQnpFLENBdUJsQjthQUdONnpDLFlBQVl6MkMsTUFBTTBDO01BdEVBLE9Bc0VOMUM7Ozs7Ozs7Ozs7Ozs7Ozs7TUFDNkMseUJBRDdDQSxNQUM2QyxxQkFEdkMwQyxHQUMwQzthQUM1RGcwQyxjQUFjMTJDLE1BQU0wQztNQXhERCxPQXdETDFDOzs7Ozs7Ozs7Ozs7Ozs7O01BQzhDLHlCQUQ5Q0EsTUFDOEMscUJBRHhDMEMsR0FDMkM7YUFDL0RpMEMsa0JBQWtCMzJDLE1BQU0wQztNQWxETCxPQWtERDFDOzs7Ozs7Ozs7Ozs7Ozs7O01BQzhDLHlCQUQ5Q0EsTUFDOEMscUJBRHhDMEMsR0FDMkM7YUFDbkVrMEMsY0FBYzUyQyxNQUFNMEM7TUFwRUQsT0FvRUwxQzs7Ozs7Ozs7Ozs7Ozs7OztNQUM4Qyx5QkFEOUNBLE1BQzhDLHVCQUR4QzBDLEdBQzJDO2FBSS9EbTBDLGNBQWNqMkMsTUFBTWQsS0FBS2lEO01BQzNCLFNBQUkrekM7UUFDRixPQUZjbDJDO3FCQUVWbTJDOzs7UUFLSix1Q0FQeUJoMEMsRUFBTGpELEtBRWhCaTNDLEtBSzBCO01BTmhDLFNBZUlDLGlCQUFpQmwyQztRQUFZLHNDQWhCTmlDO1FBZ0JNO2lCQWhCTkE7b0NBZ0JOakMsR0FHRjtNQWxCbkIsT0FEZ0JGOztTQXlCcUM7Z0NBQTVCLGdCQXpCVEEsTUFBTWQsTUFBS2lEO1VBU3pCLDBCQURvQmpDO1VBRUg1QztTQUNmO2NBRGVBLE1BRGIrSDs7O2FBR00sMEJBSlVuRixJQUVINUMsR0FFUDs7Ozs7NEJBRUMsUUFKTUE7YUFFUDt5QkFKVTRDLElBT1EsSUFQUkE7a0JBUWxCazJDO2VBS1M7ZUFDdUI7ZUFDTDtnQkFLWSx5QkFBNUIsZ0JBNUJDcDJDLE1BQU1kLE1BQUtpRCxHQTRCa0I7YUFXM0NrMEMsZ0JBQWdCajJDO01BQ1IsSUFBTnFHLElBQU07TUFDVixhQURJQSxJQURjckc7TUFFbEIsdUJBRElxRyxJQUVlO2FBdUxqQjZ2QywyQkFLRS9kLEVBQUUzb0IsSUFBSXV5QixJQUFJbmpDLElBQUlFLEtBQUtxcEMsTUFBTW5wQztNQUFTLFVBQXhCSjtrQkFBSUU7U0FVaEIsT0FWZ0JBOzJCQVVaMFIsRUFBRXpPO29CQUNNLElBQU5qQyxJQUFNLGtCQURSMFEsRUFDNEIsV0FYWDIzQixNQUFNbnBDLE1BVXJCK0M7b0JBQ00sbUJBWFZvMkIsS0FBRTNvQixJQVdFMVAsS0FYRWlpQyxJQVl3QzsyQkFWNUNoZ0M7b0JBQ1EsSUFBTmpDLElBQU0sV0FIU3FvQyxNQUFNbnBDLE1BRXZCK0M7b0JBQ1EsbUJBSFZvMkIsS0FBRTNvQixJQUdFMVAsS0FIRWlpQyxJQUl3QztRQUVoRCxJQUQwQnZ4QixFQUxWMVI7UUFNaEIsZ0JBQUlpRDtVQUNRLElBQU5qQyxJQUFNLGtCQUZjMFEsRUFFTSxXQVBYMjNCLE1BQU1ucEMsTUFNdkIrQztVQUNRLG1CQVBWbzJCLEtBQUUzb0IsSUFPRTFQLEtBUEVpaUMsSUFRd0M7O1FBUlosU0FBeEJuakM7O29CQUFJRTs7NkJBc0JaMFIsRUFBRXpPO3NCQUNNO3VCQUFOakM7d0JBQU07b0NBQW9CLGtCQUQ1QjBRLEVBQ2lELFdBdkJoQzIzQixNQUFNbnBDLE1Bc0JyQitDO3NCQUNNLG1CQXZCVm8yQixLQUFFM29CLElBdUJFMVAsS0F2QkVpaUMsSUF3QndDOzZCQVY1Q2hnQztzQkFDUSxJQUFOakMsSUFBTSxzQkFBb0IsV0FmWHFvQyxNQUFNbnBDLE1BY3ZCK0M7c0JBQ1EsbUJBZlZvMkIsS0FBRTNvQixJQWVFMVAsS0FmRWlpQyxJQWdCd0M7Y0FDVnFVLElBakJ0QnQzQzswQkFrQlppRDtZQUNRO2FBQU5qQztjQUFNOzBCQUFvQixrQkFGTXMyQyxJQUVlLFdBbkJoQ2pPLE1BQU1ucEMsTUFrQnZCK0M7WUFDUSxtQkFuQlZvMkIsS0FBRTNvQixJQW1CRTFQLEtBbkJFaWlDLElBb0J3QztpQkFwQnBDbmpDO2tCQUFJRTs7MkJBa0Nad3RDLEVBQUU5N0IsRUFBRXpPO29CQUNJO3FCQUFOakM7c0JBQU07NkJBRFJ3c0MsRUFDNEIsa0JBRDFCOTdCLEVBQytDLFdBbkNoQzIzQixNQUFNbnBDLE1Ba0NuQitDO29CQUNJLG1CQW5DVm8yQixLQUFFM29CLElBbUNFMVAsS0FuQ0VpaUMsSUFvQ3dDOzJCQVY1Q3VLLEVBQUV2cUM7b0JBQ00sSUFBTmpDLElBQU0saUJBRFJ3c0MsRUFDNEIsV0EzQlhuRSxNQUFNbnBDLE1BMEJyQitDO29CQUNNLG1CQTNCVm8yQixLQUFFM29CLElBMkJFMVAsS0EzQkVpaUMsSUE0QndDO1lBQ2ZzVSxJQTdCakJ2M0M7d0JBOEJad3RDLEVBQUV2cUM7VUFDTTtXQUFOakM7WUFBTTttQkFEUndzQyxFQUM0QixrQkFGQytKLElBRW9CLFdBL0JoQ2xPLE1BQU1ucEMsTUE4QnJCK0M7VUFDTSxtQkEvQlZvMkIsS0FBRTNvQixJQStCRTFQLEtBL0JFaWlDLElBZ0N3QyxFQUlBO2FBN0RoRHVVLGFBSUVuZSxFQUFFM29CLElBQUl1eUIsSUFBSW5qQyxJQUFJdXBDO01BQVMsVUFBYnZwQztPQUVaLGdCQUFJbUQ7U0FDa0MsSUFBaEN3MEMsV0FIRi9tQyxJQUdrQyxXQUh0QjI0QixNQUVacG1DO1NBQ2tDLG1CQUhwQ28yQixFQUdJb2UsUUFIRXhVLElBSW1COztRQUpGLFNBQWJuakM7Y0FLUWlqQyxNQUxSampDLE9BS0M4a0MsTUFMRDlrQzswQkFNUm1EO1lBQ2tDLElBQWhDdzBDLFdBUEYvbUMsSUFPa0MsWUFGekJrMEIsTUFBTzdCLE1BRTBDLFdBUDlDc0csTUFNWnBtQztZQUNrQyxtQkFQcENvMkIsRUFPSW9lLFFBUEV4VSxJQVFtQjtRQUUzQixJQURZZ0MsUUFUQW5sQztRQVVaLGdCQUFJMHRDLEVBQUV2cUM7VUFDZ0MsSUFBaEN3MEMsV0FYRi9tQyxJQVdrQyxZQUYxQnUwQixRQUNSdUksRUFDc0QsV0FYMUNuRSxNQVVWcG1DO1VBQ2dDLG1CQVhwQ28yQixFQVdJb2UsUUFYRXhVLElBWW1CO2FBdkt2QnlVLHNCQUdKcmUsRUFBRTNvQixJQUFJdXlCO1VBQU4vQixNQUFFdndCLFVBQUlxMUI7TUFBTztpQkFBUEE7UUF1Rk4sa0JBdkZBOUUsSUFBRXZ3Qjs7UUFBVyxPQUFQcTFCOztXQUVOLElBREsxbkMsS0FEQzBuQztXQUVOLGdCQUFJeGdDO2FBQ0YsSUFBSWl5QyxXQUhKOW1DLE1BRUVuTCxHQUNGLG1CQUhGMDdCLElBR011VyxRQUZEbjVDLEtBR3VCOztXQUU1QixJQURVQyxPQUxKeW5DO1dBTU4sZ0JBQUl4Z0M7YUEvQkk7MEJBK0JKQTtjQS9CSSx3QkFBTnhFO2NBRU0sV0FETjBEO2FBRUosaUJBSEkxRCxNQUVBMkcsTUFEQWpEO2FBRE0sSUFnQ0YreUMsV0FQSjltQyxNQXRCSixxQkFESWhKO29CQW9CRTB2QyxZQUdKblcsSUFPTXVXLFFBRklsNUMsT0FHa0I7O2VBQ2ZDLE9BVFB3bkMsU0FTRWxtQyxJQVRGa21DO2tCQW9KTndSLGFBcEpBdFcsSUFBRXZ3QixNQVNXblMsT0FBTHNCLGFBQ3lCa0IsS0FBTyxPQUFQQSxHQUFVOztlQUN6QnZDLE9BWFp1bkMsU0FXT2ptQyxNQVhQaW1DO2tCQW9KTndSLGFBcEpBdFcsSUFBRXZ3QixNQVdnQmxTLE9BQUxzQixNQTlKYnMyQzs7ZUFnS3VCMzNDLE9BYmpCc25DLFNBYVdobUMsS0FiWGdtQyxTQWFNL2xDLE1BYk4rbEMsU0FhRDlsQyxNQWJDOGxDO2tCQXdLTm9SO29CQXhLQWxXLElBQUV2d0IsTUFhcUJqUyxPQUFYdUIsTUFBS0QsS0FqRmpCMjJDLFlBaUZLejJDOzs7WUFFb0J2QixPQWZuQnFuQztZQWVhN2xDLE9BZmI2bEM7WUFlUTVsQyxNQWZSNGxDO1lBZUMzbEMsUUFmRDJsQztrQkF3S05vUjtvQkF4S0FsVyxJQUFFdndCLE1BZXVCaFMsT0FBWHlCLE1BQUtELE9BakZuQnkyQyxjQWlGT3YyQzs7O1lBRXNCekIsT0FqQnZCb25DO1lBaUJpQjFsQyxPQWpCakIwbEM7WUFpQll6bEMsTUFqQlp5bEM7WUFpQkt4bEMsUUFqQkx3bEM7a0JBd0tOb1I7b0JBeEtBbFcsSUFBRXZ3QixNQWlCMkIvUixPQUFYMkIsTUFBS0QsT0FqRnZCdTJDLGtCQWlGV3IyQzs7O1lBRWMzQixPQW5CbkJtbkM7WUFtQmF2bEMsT0FuQmJ1bEM7WUFtQlF0bEMsTUFuQlJzbEM7WUFtQkNybEMsUUFuQkRxbEM7a0JBd0tOb1I7b0JBeEtBbFcsSUFBRXZ3QixNQW1CdUI5UixPQUFYNkIsTUFBS0QsT0FqRm5CcTJDLGNBaUZPbjJDOztlQUVrQjdCLE9BckJuQmtuQyxTQXFCYXBsQyxPQXJCYm9sQyxTQXFCUW5sQyxNQXJCUm1sQyxTQXFCQ2xsQyxNQXJCRGtsQztXQXlOd0IsVUFwTWhCbmxDO3VCQUFLRDtjQThNbkIsT0E5TW1CQTtnQ0E4TWY4USxFQUFFek87eUJBQ00sSUFBTmpDLElBQU0sY0EvTUxGLE1BOE1INFEsRUFBRXpPO3lCQUNNLG1CQXBPWmkrQixPQUFFdndCLE1Bb09JM1AsS0EvTW1CbEMsT0FnTnVCO2dDQVY1Q21FO3lCQUNROzBCQUFOakM7MkJBQU0sY0F2TUxGLE1BdU15Qix3QkF2TXpCQSxPQXNNSG1DO3lCQUNRLG1CQTVOWmkrQixPQUFFdndCLE1BNE5JM1AsS0F2TW1CbEMsT0F3TXVCO2FBRWhELElBRDBCNFMsRUF6TVA5UTthQTBNbkIsZ0JBQUlxQztlQUNRLElBQU5qQyxJQUFNLGNBM01MRixNQXlNbUI0USxFQUN0QnpPO2VBQ1EsbUJBaE9aaStCLE9BQUV2d0IsTUFnT0kzUCxLQTNNbUJsQyxPQTRNdUI7O2FBUmxCLFNBcE1oQitCOzt5QkFBS0Q7O2tDQTJOZjhRLEVBQUV6TzsyQkFDTSxJQUFOakMsSUFBTSxzQkFBb0IsY0E1TnpCRixNQTJOSDRRLEVBQUV6TzsyQkFDTSxtQkFqUFppK0IsT0FBRXZ3QixNQWlQSTNQLEtBNU5tQmxDLE9BNk51QjtrQ0FYNUNtRTsyQkFDUTs4Q0FuTkxuQyxNQW1OeUIsd0JBbk56QkEsT0FrTkhtQzs0QkFFUyw0QkFEUGpDOzJCQUNPLG1CQXpPYmtnQyxPQUFFdndCLE1BeU9JNDBCLE9BcE5tQnptQyxPQXFOd0I7bUJBQ1h3NEMsSUF0Tm5CMTJDOytCQXVOZnFDO2lCQUNRLElBQU5qQyxJQUFNLHNCQUFvQixjQXhOekJGLE1Bc04rQncyQyxJQUNsQ3IwQztpQkFDUSxtQkE3T1ppK0IsT0FBRXZ3QixNQTZPSTNQLEtBeE5tQmxDLE9BeU51QjtzQkF6TmxDK0I7dUJBQUtEOztnQ0F3T2Y0c0MsRUFBRTk3QixFQUFFek87eUJBQ0ksSUFBTmpDLElBQU0saUJBRFJ3c0MsRUFDNEIsY0F6T3pCMXNDLE1Bd09ENFEsRUFBRXpPO3lCQUNJLG1CQTlQWmkrQixPQUFFdndCLE1BOFBJM1AsS0F6T21CbEMsT0EwT3VCO2dDQVg1QzB1QyxFQUFFdnFDO3lCQUNNOzRDQWhPTG5DLE1BZ095Qix3QkFoT3pCQSxPQStORG1DOzBCQUVPLHVCQUZUdXFDLEVBQ0V4c0M7eUJBQ08sbUJBdFBia2dDLE9BQUV2d0IsTUFzUEk0MEIsT0FqT21Cem1DLE9Ba093QjtpQkFDaEJ5NEMsSUFuT2QzMkM7NkJBb09mNHNDLEVBQUV2cUM7ZUFDTSxJQUFOakMsSUFBTSxpQkFEUndzQyxFQUM0QixjQXJPekIxc0MsTUFtTzBCeTJDLElBQzNCdDBDO2VBQ00sbUJBMVBaaStCLE9BQUV2d0IsTUEwUEkzUCxLQXJPbUJsQyxPQXNPdUI7O2VBcE9yQ0UsT0F2QkxnbkMsU0F1QkFqbEMsTUF2QkFpbEM7a0JBb0pOd1IsYUFwSkF0VyxJQUFFdndCLE1BdUJTM1IsT0FBTCtCLE1PdjNDTm9EOztXUDA0Q0EsVUExQ002aEMsU0EwQ04sU0ExQ0VyMUIsbUJBQUlxMUI7Ozs7O1lBNENVaGxDLElBNUNWZ2xDO1lBQUoxZ0IsZUE0Q2N0a0I7WUE1Q2QyUDtZQUFJcTFCOzs7OztZQThDUS9rQyxJQTlDUitrQztZQUFKMlIsZUE4Q1kxMkM7WUE5Q1owUDtZQUFJcTFCOzs7V0FrREc7WUFEaUI5bUMsT0FqRHBCOG1DO1lBaURTTCxVQWpEVEs7WUFrREcsbUJBRE1MO1dBQ04sZ0JBQ0oza0MsS0FDSCxtQkFwREZrZ0MsT0FBRXZ3QixNQWtERTVSLElBRHNCRyxPQUlzQjs7ZUFDeEJDLFFBdERsQjZtQyxTQXNEVzlrQyxNQXREWDhrQzs7YUF1RE4sSUFBYS9DO2FBQ1g7c0JBeERGL0IsSUFBRXZ3QixNQXdEQSxXQUFZLE9BRERzeUIsSUFESS9oQyxPQUFPL0IsU0FFYzs7V0E5QnRDLElBRE1DLFFBekJBNG1DO1dBMEJOLGdCQUFJMWpDLEVBQUVXO2FBQUs7c0JBMUJYaStCO3lCQUFFdndCLGVBMEI0Q3pDLEdBQUssa0JBQS9DNUwsRUFBMEM0TCxFQUF4Q2pMLEVBQWtEO3NCQURsRDdELFFBQ3lEOztXQUUvRCxJQURNQyxRQTNCQTJtQztXQTRCTixnQkFBSTFqQyxHQUFLLG1CQTVCVDQrQixPQUFFdndCLE1BNEJFck8sR0FERWpELFFBQzBDOzs7WUE1QjFDb3ZDO1lBMkVVaHRDLFdBM0VWdWtDO1lBQUo0UixlQTJFY24yQztZQTNFZGtQO1lBQUlxMUI7Ozs7OztjQTZFdUMxbUMsUUE3RXZDMG1DOzs7Y0FBTjZSO3dCQUFFbm5DLElBQUYyb0IsRUE2RTZDLzZCOzBCQTdFN0M0aUMsSUE4RU80VzttQkFDTCxtQkEvRUZ6ZSxLQUFFM29CLE9BOEVLb25DLE9BRHNDeDVDLEtBRXFCO3dCQS9FbEU0aUM7c0JBQUV2d0IsTUFBRnV3QixJQTZFNkM1aEM7Y0E3RTdDNGhDO2NBQUV2d0I7Y0FBSXExQjs7O1lBaUZ1QzFrQyxRQWpGdkMwa0M7OztZQUFOK1I7c0JBQUVybkMsSUFBRjJvQixFQWlGNkMvNkI7d0JBakY3QzRpQyxJQWtGTzRXLE1BQ0wsbUJBbkZGemUsS0FBRTNvQixPQWtGS29uQyxPQURzQ3g1QyxLQUVxQjtzQkFuRmxFNGlDO29CQUFFdndCLE1BQUZ1d0IsSUFpRjZDNS9CO1lBakY3QzQvQjtZQUFFdndCO1lBQUlxMUI7O2tCQXdDTjs7ZUFrQnFCemtDLFFBMURmeWtDLFNBMkRGeVIsV0EzREY5bUM7a0NBNERPLG1CQTVEVHV3QixJQTJESXVXLFFBRGlCbDJDLFFBRWM7O1dBS25DLElBSnFCQyxRQTdEZndrQztXQWlFTixnQkFBSXBqQzthQUNrQyxJQUFoQzYwQyxXQWxFSjltQyxNQWtFb0Msd0JBRGxDL047YUFDa0MsbUJBbEV0Q3MrQixJQWtFTXVXLFFBTGVqMkMsUUFNTzs7V0FFNUIsSUFEZUUsUUFwRVRza0M7V0FxRU4sZ0JBQUl4Z0M7YUFDRixJQUFJaXlDLFdBdEVKOW1DLE1BcUVFbkwsR0FDRixtQkF0RUYwN0IsSUFzRU11VyxRQUZTLzFDLFFBR2E7O2VBQ1JFLFFBeEVkb2tDLFNBd0VTNWpDLElBeEVUNGpDOzs7b0JBMkZOZ1MsK0JBM0ZBOVcsSUFBRXZ3QixNQXdFYXZPLElBQUtSOztvQkFtQnBCbzJDLHdCQTNGQTlXLElBQUV2d0IsTUF3RWF2TyxJQUFLUjs7V0ExQ1M7WUFEWEMsUUE3Qlpta0M7WUE2QlMxakMsRUE3QlQwakM7WUE2QkV6akMsTUE3QkZ5akM7WUE4QnVCLGdCQURkMWpDO1dBQ2M7O29CQWtPN0IyMUMsd0JBaFFBL1csSUFBRXZ3QixNQTZCZ0I5TyxRQUFWVTs7b0JBbU9SMDFDLGlCQWhRQS9XLElBQUV2d0IsTUE2QmdCOU8sUUFBVlUsYUEwREg7YUFJTHkxQyw2QkFJQTNlLEVBQUUzb0IsSUFBSXRPLElBQUk2Z0M7TUFBTyxVQUFYN2dDO09BQVcsT0FBWEE7O1VBQzZCOzttQkE2Q25DODFDLDJCQTlDQTdlLEVBQUUzb0IsSUFBUXV5Qjt3Q0E4Q1ZpVixvQkE5Q0E3ZSxFQUFFM29CLElBQVF1eUI7O1VBRXlCOzttQkE0Q25DaVYsMkJBOUNBN2UsRUFBRTNvQixJQUFRdXlCO3dDQThDVmlWLG9CQTlDQTdlLEVBQUUzb0IsSUFBUXV5QjtnQkFheUI7O1VBR0E7O21CQThCbkNpViwyQkE5Q0E3ZSxFQUFFM29CLElBQVF1eUI7d0NBOENWaVYsb0JBOUNBN2UsRUFBRTNvQixJQUFRdXlCOztPQUFPLE9BQVg3Z0M7O1VBRzZCOzttQkEyQ25DODFDLDJCQTlDQTdlLEVBQUUzb0IsSUFBUXV5Qjt3Q0E4Q1ZpVixvQkE5Q0E3ZSxFQUFFM29CLElBQVF1eUI7O1VBSXlCOzttQkEwQ25DaVYsMkJBOUNBN2UsRUFBRTNvQixJQUFRdXlCO3dDQThDVmlWLG9CQTlDQTdlLEVBQUUzb0IsSUFBUXV5Qjs7VUFLeUI7O21CQXlDbkNpViwyQkE5Q0E3ZSxFQUFFM29CLElBQVF1eUI7d0NBOENWaVYsb0JBOUNBN2UsRUFBRTNvQixJQUFRdXlCOztVQU15Qjs7bUJBd0NuQ2lWLDJCQTlDQTdlLEVBQUUzb0IsSUFBUXV5Qjt3Q0E4Q1ZpVixvQkE5Q0E3ZSxFQUFFM29CLElBQVF1eUI7O1VBT3lCOzttQkF1Q25DaVYsMkJBOUNBN2UsRUFBRTNvQixJQUFRdXlCO3dDQThDVmlWLG9CQTlDQTdlLEVBQUUzb0IsSUFBUXV5Qjs7VUFReUI7O21CQXNDbkNpViwyQkE5Q0E3ZSxFQUFFM29CLElBQVF1eUI7d0NBOENWaVYsb0JBOUNBN2UsRUFBRTNvQixJQUFRdXlCOztVQVN5Qjs7bUJBcUNuQ2lWLDJCQTlDQTdlLEVBQUUzb0IsSUFBUXV5Qjt3Q0E4Q1ZpVixvQkE5Q0E3ZSxFQUFFM29CLElBQVF1eUI7O1VBVXlCOzttQkFvQ25DaVYsNEJBOUNBN2UsRUFBRTNvQixJQUFRdXlCO3dDQThDVmlWLG9CQTlDQTdlLEVBQUUzb0IsSUFBUXV5Qjs7VUFXeUI7O21CQW1DbkNpViw0QkE5Q0E3ZSxFQUFFM29CLElBQVF1eUI7d0NBOENWaVYsb0JBOUNBN2UsRUFBRTNvQixJQUFRdXlCOztVQVl5QixJQUFWL2hDLE1BWm5Ca0I7VUFZNkI7O21CQVFuQysxQyw2QkFwQkE5ZSxFQUFFM29CLElBWXVCeFAsTUFaZitoQzt3Q0FvQlZrVixxQkFwQkE5ZSxFQUFFM29CLElBWXVCeFAsTUFaZitoQzs7VUFjeUI7O21CQWdDbkNpViw0QkE5Q0E3ZSxFQUFFM29CLElBQVF1eUI7d0NBOENWaVYsb0JBOUNBN2UsRUFBRTNvQixJQUFRdXlCOztVQWV5Qjs7bUJBK0JuQ2lWLDRCQTlDQTdlLEVBQUUzb0IsSUFBUXV5Qjt3Q0E4Q1ZpVixvQkE5Q0E3ZSxFQUFFM29CLElBQVF1eUIsTUFnQm1EO2FBSTdEa1YsMEJBSUE5ZSxFQUFFM29CLElBQUl4UCxNQUFNK2hDO01BQU8sVUFBYi9oQztRQWVxQjs7aUJBTzNCZzNDLDJCQXRCQTdlLEVBQUUzb0IsSUFBVXV5QjtzQ0FzQlppVixvQkF0QkE3ZSxFQUFFM29CLElBQVV1eUI7O09BQU8sT0FBYi9oQzs7VUFDcUIsSUFBbkI1QyxLQURGNEM7VUFDcUIsdUJBQVMsdUJBRHBDbTRCLEVBQUUzb0IsSUFDTXBTLEtBREkya0MsSUFDc0Q7O1VBQ3ZDLElBQWpCMWtDLE9BRkoyQztVQUVxQix1QkFBUyx1QkFGcENtNEIsRUFBRTNvQixJQUVRblMsT0FGRTBrQyxJQUVzRDs7VUFDdkMsSUFBcEJ6a0MsT0FIRDBDO1VBR3FCLHVCQUFTLHVCQUhwQ200QixFQUFFM29CLElBR0tsUyxPQUhLeWtDLElBR3NEOztVQUN2QyxJQUFsQnhrQyxPQUpIeUM7VUFJcUIsdUJBQVMsdUJBSnBDbTRCLEVBQUUzb0IsSUFJT2pTLE9BSkd3a0MsSUFJc0Q7O1VBQ3ZDLElBQWR2a0MsT0FMUHdDO1VBS3FCLHVCQUFTLHVCQUxwQ200QixFQUFFM29CLElBS1doUyxPQUxEdWtDLElBS3NEOztVQUN2QyxJQUFsQnRrQyxPQU5IdUM7VUFNcUIsdUJBQVMsdUJBTnBDbTRCLEVBQUUzb0IsSUFNTy9SLE9BTkdza0MsSUFNc0Q7O1VBQ3ZDLElBQWxCcmtDLE9BUEhzQztVQU9xQix1QkFBUyx1QkFQcENtNEIsRUFBRTNvQixJQU9POVIsT0FQR3FrQyxJQU9zRDs7VUFDdkMsSUFBbkJwa0MsT0FSRnFDO1VBUXFCLHVCQUFTLHVCQVJwQ200QixFQUFFM29CLElBUU03UixPQVJJb2tDLElBUXNEOztVQU12QyxJQUFUbmtDLE9BZFpvQztVQWNxQix1QkFBUyx1QkFkcENtNEIsRUFBRTNvQixJQWNnQjVSLE9BZE5ta0MsSUFjc0Q7O1VBR3pEO1dBRGtCamtDLE9BaEJyQmtDO1dBZ0JnQnhCLElBaEJoQndCO1dBZ0JXakMsSUFoQlhpQztXQWlCRyxTQUFNLEtBREVqQyxLQUFLUztVQUNiO1lBQ3NCLHVCQWxCL0IyNUIsRUFBRTNvQixJQWtCNkIsYUFEM0IzUixHQUR1QkMsUUFoQmZpa0MsSUFrQjZDOztVQVQ5QixJQUFsQi9qQyxPQVRIZ0M7VUFTcUI7WUFBVyx1QkFUdENtNEIsRUFBRTNvQixJQVNPeFIsT0FURytqQyxJQVN3RDs7VUFDekMsSUFBbEI5akMsUUFWSCtCO1VBVXFCLHVCQUFTLHVCQVZwQ200QixFQUFFM29CLElBVU92UixRQVZHOGpDLElBVXNEOztVQUN2QyxJQUFwQjdqQyxRQVhEOEI7VUFXcUIsdUJBQVMsdUJBWHBDbTRCLEVBQUUzb0IsSUFXS3RSLFFBWEs2akMsSUFXc0Q7aUJBQ3ZDO2lCQUNBLDhCQUs4QjthQUl6RGlWLHlCQUdBN2UsRUFBRTNvQixJQUFJdXlCO01BQ1IsWUFESXZ5QjtNQUNKOztlQXBKTWduQyx3QkFtSkpyZSxPQUFNNEo7b0NBbkpGeVUsaUJBbUpKcmUsT0FBTTRKLEtBQzhEO2FBK0dwRWdWLHNCQUlFNWUsRUFBRTNvQixJQUFJcFMsS0FBS2lFLE1BQU1EO01BQUssR0FBWEM7UUFHYixJQURZNnBDLFFBRkM3cEM7UUFHYixnQkFBSVU7VUFDMkIsbUJBSjdCbzJCLEVBQUUzb0IsSUFBSXBTLEtBRUk4dEMsUUFFbUIsV0FKWjlwQyxFQUdmVyxHQUNnQztNQUhyQixZQURYeU4sSUFBZXBPO01BQ0o7O2VBeFFYbzFDLHdCQXVRRnJlLE9BQU0vNkI7b0NBdlFKbzVDLGlCQXVRRnJlLE9BQU0vNkIsTUFJNEI7YUEzUWhDKzRDLFlBR0poZSxFQUFFM29CLElBQUl1eUI7TUo5K0NYLHVCSTIrQ1N5VSxnQkFHSnJlLEVBQUUzb0IsSUFBSXV5QjthQTJGTnFWLG1CQUlBamYsRUFBRTNvQixJQUFJdE8sSUFBSTZnQztNSjdrRGYsdUJJeWtESytVLHVCQUlBM2UsRUFBRTNvQixJQUFJdE8sSUFBSTZnQzthQW9CVm1WLGdCQUlBL2UsRUFBRTNvQixJQUFJeFAsTUFBTStoQztNSnJtRGpCLHVCSWltREtrVixvQkFJQTllLEVBQUUzb0IsSUFBSXhQLE1BQU0raEM7YUF5SVpvVixZQUlFaGYsRUFBRTNvQixJQUFJcFMsS0FBS2lFLE1BQU1EO01KbHZEeEIsdUJJOHVESzIxQyxnQkFJRTVlLEVBQUUzb0IsSUFBSXBTLEtBQUtpRSxNQUFNRDthQWlGbkJpMkMsd0JBSUVsZixFQUFFbnJCLEVBQUUrMEIsSUFBSW5qQyxJQUFJRTtNQUFRLFVBQVpGO2tCQUFJRTtVQU1WLEdBTlVBO1lBTUcsc0JBTmZxNUIsRUFBRW5yQixFQUFFKzBCLEtBTUksb0JKNzBEZjtZSTYwRGUsc0JKNzBEZjtVSXkwRGUsc0JBRlI1SixFQUFFbnJCLEVBQUUrMEI7VUFFSSxzQkp6MERmO1FJMjBEZSxzQkFKUjVKLEVBQUVuckIsRUFBRSswQjtRQUlJLHNCSjMwRGY7O1FJdTBEMkIsU0FBWm5qQztvQkFBSUU7WUFZVixHQVpVQTtjQVlHLHNCQVpmcTVCLEVBQUVuckIsRUFBRSswQixLQVlJLG9CSm4xRGY7Y0ltMURlLHNCSm4xRGY7WUkrMERlLHNCQVJSNUosRUFBRW5yQixFQUFFKzBCO1lBUUksc0JKLzBEZjtVSWkxRGUsc0JBVlI1SixFQUFFbnJCLEVBQUUrMEI7VUFVSSxzQkpqMURmO2tCSXUwRG1CampDO1VBa0JWLEdBbEJVQTtZQWtCVTsrQkFsQnRCcTVCLEVBQUVuckIsRUFBRSswQjthQWtCVyxvQkp6MUR0QjthSXkxRGUsb0JKejFEZjtZSXkxRGUsc0JKejFEZjtVSXExRHNCLHNCQWRmNUosRUFBRW5yQixFQUFFKzBCLEtBY0ksb0JKcjFEZjtVSXExRGUsc0JKcjFEZjtRSXUxRHNCLHNCQWhCZjVKLEVBQUVuckIsRUFBRSswQixLQWdCSSxvQkp2MURmO1FJdTFEZSxzQkp2MURmLGFJeTFEcUQ7YUEvRjVDd1YsdUJBRUZwZixFQUFFbnJCLEVBQUUrMEI7VUFBSi9CLE1BQUk4RTtNQUFPO2lCQUFQQTtRQXNFRixrQkF0RUY5RSxJQUFFaHpCOztRQUFTLE9BQVA4M0I7O1dBRUYsU0FGRUEsU0FFSSxrQkFGUjlFLElBQUVoekIsRUFDRzVQO1dBQ0csc0JKOXZEZjs7V0lnd0RTLFdBSkUwbkMsU0FJSSxrQkFKUjlFLElBQUVoekIsRUFHUTNQO1dBQ0Ysc0JKaHdEZjs7b0JJNHZEV3luQzs7YUFNRixXQU5FQSxTQU1JLGtCQU5SOUUsSUFBRWh6QixFQUtrQjFQO2FBQ1osc0JKbHdEZjs7O2VJb3dEUyxXQVJFd25DLFNBUUksa0JBUlI5RSxJQUFFaHpCLEVBT3FCelA7ZUFDZixzQkpwd0RmO2FJc3dEUztxQkFWRXVuQztjQVVXLGtCQVZmOUUsSUFBRWh6QixFQVNxQnhQO2NBQ2Ysb0JKdHdEZjthSXN3RGUsc0JKdHdEZjs7b0JJNHZEV3NuQzs7YUFZRixXQVpFQSxTQVlJLGtCQVpSOUUsSUFBRWh6QixFQVd1QnZQO2FBQ2pCLHNCSnh3RGY7OztlSTB3RFMsV0FkRXFuQyxTQWNJLGtCQWRSOUUsSUFBRWh6QixFQWEwQnRQO2VBQ3BCLHNCSjF3RGY7YUk0d0RTO3FCQWhCRW9uQztjQWdCVyxrQkFoQmY5RSxJQUFFaHpCLEVBZTBCclA7Y0FDcEIsb0JKNXdEZjthSTR3RGUsc0JKNXdEZjs7ZUk2d0QwQkMsT0FqQmZrbkMsU0FpQlNobUMsS0FqQlRnbUMsU0FpQklsbUMsSUFqQkprbUM7a0JBdUVOdVMsd0JBdkVFclgsSUFBRWh6QixFQWlCaUJwUCxPQUFYZ0IsSUFBS0U7O2VBRVFoQixPQW5CakJnbkMsU0FtQlc3bEMsT0FuQlg2bEMsU0FtQk1qbUMsTUFuQk5pbUM7a0JBdUVOdVMsd0JBdkVFclgsSUFBRWh6QixFQW1CbUJsUCxPQUFYZSxNQUFLSTs7ZUFFVWpCLE9BckJyQjhtQyxTQXFCZTFsQyxPQXJCZjBsQyxTQXFCVS9sQyxNQXJCVitsQztrQkF1RU51Uyx3QkF2RUVyWCxJQUFFaHpCLEVBcUJ1QmhQLE9BQVhlLE1BQUtLOztlQUVFbkIsUUF2QmpCNm1DLFNBdUJXdmxDLE9BdkJYdWxDLFNBdUJNNWxDLE1BdkJONGxDO2tCQXVFTnVTLHdCQXZFRXJYLElBQUVoekIsRUF1Qm1CL08sUUFBWGlCLE1BQUtLOztlQUVNckIsUUF6QmpCNG1DLFNBeUJXcGxDLE9BekJYb2xDLFNBeUJNemxDLE1BekJOeWxDO2tCQXVFTnVTLHdCQXZFRXJYLElBQUVoekIsRUF5Qm1COU8sUUFBWG1CLE1BQUtLOztvQkF6QlhvbEM7O2FBNEJGLFlBNUJFQSxTQTRCSSxrQkE1QlI5RSxJQUFFaHpCLEVBMkJnQjdPO2FBQ1Ysc0JKeHhEZjs7O2VJMHhEUyxZQTlCRTJtQyxTQThCSSxrQkE5QlI5RSxJQUFFaHpCLEVBNkJtQjVPO2VBQ2Isc0JKMXhEZjthSTR4RFM7c0JBaENFMG1DO2NBZ0NXLGtCQWhDZjlFLElBQUVoekIsRUErQm1CNU07Y0FDYixvQko1eERmO2FJNHhEZSxzQko1eERmO2tCSXd5RFMsVUE1Q0Uwa0M7a0JBOENGLFVBOUNFQTtrQkFnREYsVUFoREVBOztXQWtERixZQWxERUEsU0FrREksa0JBbERSOUUsSUFBRWh6QixFQWlEZ0IzTTtXQUNWLHNCSjl5RGY7O2VJK3lEK0JDLFFBbkRwQndrQyxTQW1EYTlrQyxNQW5EYjhrQzs7YUFvREYsSUFBYS9DO2FBRVQsb0JBdEROL0IsSUFBRWh6QixFQXNESSxXQUFZLE9BRkgrMEIsSUFERS9oQyxPQUFPTSxTQUdrQjs7V0FwQnhDO29CQWxDRXdrQztZQWtDVyxrQkFsQ2Y5RSxJQUFFaHpCLEVBaUNJeE07WUFDRSxvQko5eERmO1dJOHhEZSxzQko5eERmOztXSWd5RFMsWUFwQ0Vza0MsU0FvQ0ksa0JBcENSOUUsSUFBRWh6QixFQW1DSXRNO1dBQ0Usc0JKaHlEZjtrQkk0ekRTLFVBaEVFb2tDOzs7OztjQWlFeUNua0MsUUFqRXpDbWtDOzs7Y0FBSjZSOzBCQWlFNkN2NUM7MEJBakU3QzRpQyxJQWtFb0J3WCxLQUFPLG9CQWxFM0JyZixFQWtFb0JxZixJQUR5QnA2QyxLQUNLLFFBbEVsRDRpQzswQkFpRTZDci9CO2NBakU3Q3EvQjtjQUFJOEU7OztZQW1FeUNoa0MsUUFuRXpDZ2tDOzs7WUFBSitSO3dCQW1FNkN6NUM7d0JBbkU3QzRpQyxJQW9Fb0J3WCxLQUFPLG9CQXBFM0JyZixFQW9Fb0JxZixJQUR5QnA2QyxLQUNLLFFBcEVsRDRpQzt3QkFtRTZDbC9CO1lBbkU3Q2svQjtZQUFJOEU7O2tCQTBDRjs7V0FjQSxZQXhERUEsU0F3REksa0JBeERSOUUsSUFBRWh6QixFQXVEbUJoTTtXQUNiLHNCSnB6RGY7O1dJc3pEUyxZQTFERThqQyxTQTBESSxrQkExRFI5RSxJQUFFaHpCLEVBeURtQi9MO1dBQ2Isc0JKdHpEZjs7V0l3ekRTLFlBNURFNmpDLFNBNERJLGtCQTVEUjlFLElBQUVoekIsRUEyRGE3TDtXQUNQLHNCSnh6RGY7O2VJeXpEMkJzMkMsUUE3RGhCM1MsU0E2RFc1akMsSUE3RFg0akM7a0JBbkxOc1M7b0NBaVBpQyxrQkE5RC9CcFgsSUFBRWh6QixFQThEZ0MsT0FEbkI5TCxJQUFLdTJDOztlQXhCRkMsUUFyQ2Q1UyxTQXFDSXpqQyxNQXJDSnlqQzs7O29CQThGTjZTLCtCQTlGRTNYLElBQUVoekIsRUFxQ2dCMHFDLFFBQVZyMkM7O29CQXlEVnMyQyx3QkE5RkUzWCxJQUFFaHpCLEVBcUNnQjBxQyxRQUFWcjJDLFFBaUNIO2FBd0JQczJDLDZCQUdFeGYsRUFBRW5yQixFQUFFKzBCO01BSE47UUFPSSxtQkFBTSx3QkFKUjVKLEVBQUVuckIsRUFBRSswQixJQUdRMWdDO1FBQ0osc0JKajJEZjtNSSsxRFM7O2VBckdBazJDLHlCQW1HRnBmLEVBQUVuckIsRUFBRSswQjtvQ0FuR0Z3VixrQkFtR0ZwZixFQUFFbnJCLEVBQUUrMEIsS0FJc0M7YUF2R3hDdVYsYUFFRm5mLEVBQUVuckIsRUFBRSswQjtNSjV2RFgsdUJJMHZEU3dWLGlCQUVGcGYsRUFBRW5yQixFQUFFKzBCO2FBOEZONlYsbUJBR0V6ZixFQUFFbnJCLEVBQUUrMEI7TUo3MURYLHVCSTAxREs0Vix1QkFHRXhmLEVBQUVuckIsRUFBRSswQjthQVlGOFYsV0FBVzdxQyxFQUFFd0M7TUp6MkR0QixJSXkyRHNCQztNQUFNO2lCQUFOQTtRQWVXOztRQWZMLE9BQU5BOztXQUVUO1lBRGVsUCxXQUROa1A7WUFDR2UsRUFESGY7WUFFVCwyQkFEZWxQO1dBRXZCLFdBSGV5TSxFQUNLd0Q7V0FFcEIscUJBSGV4RCxFQUVYcEw7O29CQUZhNk47O2FBS2pCLElBRG9DQzthQUNwQyxXQUxlMUM7YUFLQyxjQUxEQTthQUtmLElBTGlCeUMsTUFJbUJDOztlQUVBMFU7V0FDcEMsV0FQZXBYO1dBT0MsY0FQREE7ZUFBRXlDLE1BTW1CMlU7OztlQU10QmhqQixFQVpHcU8sU0FZTnFvQyxJQVpNcm9DO1dBWVcsV0FaYnpDLEVBWUo4cUM7V0FBaUIsa0JBQWQxMkMsRUFaQzRMO2lCQWFhLElBQWxCK3FDLElBYk90b0MsU0FhVyxXQWJiekMsRUFhTCtxQyxLQUFrQixxQkFiYi9xQzs7ZUFjS0MsSUFkSHdDLFNBY0F1b0MsSUFkQXZvQztXQWNXLFdBZGJ6QyxFQWNFZ3JDO1dBQVcsbUJBQVIvcUM7OztlQU5Ha0YsSUFSTjFDLFNBUUcybUMsSUFSSDNtQztXQVNXLFdBVGJ6QyxFQVFLb3BDO1dBQ1EscUJBVGJwcEMsRUFRUW1GOztlQUVGN04sRUFWSm1MLFNBVUM0bUMsSUFWRDVtQztXQVdXLFdBWGJ6QyxFQVVHcXBDO1dBQ1UsMkJBWGJycEMsRUFVTTFJLEdBS1M7YUFLMUIyekMsV0FBVy8wQyxFQUFFc007TUo3M0R0QixJSTYzRHNCQztNQUFNO2lCQUFOQTtRQWVXOztRQWZMLE9BQU5BOztXQUVUO1lBRGVsUCxXQUROa1A7WUFDR2UsRUFESGY7WUFFVCwyQkFEZWxQO1dBRXZCLFdBSGUyQyxFQUNLc047V0FFcEIsa0JBSGV0TixFQUVYdEI7O29CQUZhNk47O2FBS2pCLElBRG9DQzthQUNwQyxXQUxleE07YUFLQyxXQUxEQTthQUtmLElBTGlCdU0sTUFJbUJDOztlQUVBMFU7V0FDcEMsV0FQZWxoQjtXQU9DLFdBUERBO2VBQUV1TSxNQU1tQjJVOzs7ZUFNdEJoakIsRUFaR3FPLFNBWU5xb0MsSUFaTXJvQztXQVlXLFdBWmJ2TSxFQVlKNDBDO1dBQWlCLGtCQUFkMTJDLEVBWkM4QjtpQkFhYSxVQWJYdU07O2VBY0d4QyxJQWRId0MsU0FjQXNvQyxJQWRBdG9DO1dBY1csV0FkYnZNLEVBY0U2MEM7V0FBVyxtQkFBUjlxQzs7O2VBTkdrRixJQVJOMUMsU0FRRzJtQyxJQVJIM21DO1dBU1csV0FUYnZNLEVBUUtrekM7V0FDUSxrQkFUYmx6QyxFQVFRaVA7O2VBRUY3TixFQVZKbUwsU0FVQzRtQyxJQVZENW1DLFNBV1csV0FYYnZNLEVBVUdtekMsS0FDVSxnQkFYYm56QyxFQVVNb0IsR0FLUzthQU0xQjR6QyxXQUFXaDFDLEVBQUVzTTtNSmw1RHRCLElJazVEc0JDO01BQU07aUJBQU5BO1FBZVc7O1FBZkwsT0FBTkE7O1dBRVQ7WUFEZWxQLFdBRE5rUDtZQUNHZSxFQURIZjtZQUVULDJCQURlbFA7V0FFdkIsV0FIZTJDLEVBQ0tzTjtXQUVwQixrQkFIZXROLEVBRVh0Qjs7b0JBRmE2Tjs7YUFLakIsSUFEb0NDO2FBQ3BDLFdBTGV4TTthQUtDLFdBTERBO2FBS2YsSUFMaUJ1TSxNQUltQkM7O2VBRUEwVTtXQUNwQyxXQVBlbGhCO1dBT0MsV0FQREE7ZUFBRXVNLE1BTW1CMlU7OztlQU10QmhqQixFQVpHcU8sU0FZTnFvQyxJQVpNcm9DO1dBWVcsV0FaYnZNLEVBWUo0MEM7V0FBcUQsa0JBWmpENTBDLEVBWWlELFdBQWxEOUI7aUJBQ2MsVUFiWHFPOztlQWNHeEMsSUFkSHdDLFNBY0Fzb0MsSUFkQXRvQztXQWNXLFdBZGJ2TSxFQWNFNjBDO1dBQVcsbUJBQVI5cUM7OztlQU5Ha0YsSUFSTjFDLFNBUUcybUMsSUFSSDNtQztXQVNXLFdBVGJ2TSxFQVFLa3pDO1dBQ1Esa0JBVGJsekMsRUFRUWlQOztlQUVGN04sRUFWSm1MLFNBVUM0bUMsSUFWRDVtQyxTQVdXLFdBWGJ2TSxFQVVHbXpDLEtBQ1UsZ0JBWGJuekMsRUFVTW9CLEdBS1M7YUFNOUI2ekM7TUFDUSxJQURrQnBXLGFBQ2xCO2VBQ041SixFQUFFM29CLEtBQU0sV0FEUm5KLElBQ0VtSixLQUFtQyx5QkFEckNuSixLQUMwRDtNQURwRCxtQkFDTjh4QixJQUZ3QjRKO2FBUzFCcVcsbUJBQW1CdDRDO01BQ2xCLHFCQURrQkEsWUFDSjtNQUNmLElBQUltRixJQUFKLHNCQUZtQm5GO01BRW5CLFNBQ0l1NEM7UUFBaUIseUNBSEZ2NEMsSUFHbUQ7TUFEdEUsU0FFUXc0QyxhQUFhcDdDO1FKcDdEMUIsSUlvN0QwQnVHO1FBQ25CO2FBRG1CQSxRQUZqQndCLElBR2MsT0FER3hCO1VBRVgsMEJBTlMzRCxJQUlFMkQ7eUNBSVYsT0FKVUE7VUFFWCxJQUNVLElBSENBO21CQUlUO01BTlosU0FPSTgwQyxZQUFZcjdDLEVBQUVzVTtRSno3RHZCLElJeTdEdUI4ekI7UUFDaEI7YUFEZ0JBLFFBUGRyZ0MsSUFRYyxPQURBcWdDO1VBRVIsMEJBWFN4bEMsSUFTRHdsQztVQUVSLHlCQUVDLE9BSk9BO1VBRVIsSUFDVSxJQUhGQTttQkFJTjtNQVhaLFNBWUlrVCxVQUFVdDdDLEVBQUVzVTtRSjk3RHJCLElJODdEcUI4ekI7UUFDZDthQURjQSxRQVpacmdDLElBYWMsT0FERnFnQztVQUVOLDBCQWhCU3hsQyxJQWNId2xDO1VBRU47Ozs7dUJBQ2dCLFFBSFZBO1VBSUwsT0FKS0EsSUFJSjtNQUNDOztPQUNGLGlCQURQbVQ7T0FFVyxlQXJCSTM0QyxJQW1CZjI0QyxPQUNBQyxPQURBRDtPQUdTLG9CQUZUQztPQUdPLGVBRFBFO01BQ08sR0FEUEEsV0FDQUM7V0FDQUM7O09BRUE7U0FBeUQ7a0NBQXZDLE1BMUJIaDVDLElBc0JmODRDLE9BQ0FDLE9BREFEO1VBRUFFOzs7O29CQUdrQjtNQVJULElBU1RDLFFBQVUsYUFMVkY7TUFLVSxHQUFWRSxZQTFCQTl6QyxJQTJCbUI7TUFWVjs7UUFVd0IscUJBUmpDMHpDOzs7O1FBU0FLOzhCQVRBTDs7O29EQWVZOzs7Ozs7c0JBTlpLO01BT0osVUFiSUYsT0FNQUUsU0FPYzthQU9sQkMscUJBR0FyNkMsSUFBSW1qQztNQUFPLFVBQVhuakM7T0FDc0IsWUFEbEJtakM7O1FBQU8sU0FBWG5qQyxZQUVnQjB0QyxFQUZoQjF0QyxPQUVhZ0QsRUFGYmhELG9CQUVhZ0QsRUFBRzBxQyxHQUZadks7UUFHa0IsSUFBVjV2QixJQUhadlQ7UUFHc0IsYUFBVnVULEtBSFI0dkIsS0FHc0Q7YUFlMURtWCxxQkFJQXQ2QyxJQUFJRSxLQUN1QmlqQztNQWJmLFVBWVJqakM7T0FUZSxVQVNmQSxVQUN1QmlqQzs7T0FYUixNQVVmampDLG9CQVZVMFIsR0FXYXV4QjtVQUFOOWlDO2dCQURyQkw7T0FHc0IsWUFGREssT0FBTThpQzs7aUJBRDNCbmpDLFlBSWdCMHRDLEVBSmhCMXRDLE9BSWFnRCxFQUpiaEQsb0JBSWFnRCxFQUFHMHFDLEdBSEtydEMsT0FBTThpQztRQUlMLElBQVY1dkIsSUFMWnZUO1FBS3NCLGFBQVZ1VCxLQUpTbFQsT0FBTThpQyxLQUlzQzthQU9qRW9YLGtCQUFtQkMsZ0JBQWdCdDVDO01BaUJyQyxHQWpCcUJzNUM7T0FrQkosU0FsQklBLG1CQWlCakJFLGtCQUNLRDs7V0FETEM7TUFpQkosU0FBSUMsdUJBQXVCbFksUUFBUXAwQjtRQUNqQyx5Q0FuQ21Dbk4sSUFrQ1Z1aEMsUUFBUXAwQixJQUdoQjtNQUhuQixTQVFJdXNDLHlCQUF5QkM7UUFDM0IsOEJBRDJCQSxxQ0FFQztNQVY5QixTQW9CSUMsdUJBQXVCclksUUFBUS84QixFQUFFMUM7UUFDbkMseUNBdkRtQzlCLElBc0RWdWhDLFFBQVEvOEIsRUFBRTFDLEVBR2xCO01BdkJuQixTQTRCSSszQyxtQkFBbUJ0WSxRQUFRdVksU0FBUzdyQjtRQUN0Qyx5Q0EvRG1DanVCLElBOERkdWhDLFFBQVF1WSxTQUFTN3JCLEtBR1g7TUEvQjdCLFNBcXZCSThyQixZQUdBQyxVQUFVelksUUFBUVU7UUFBTyxJQUd6QmdZLEtBSFUxWSxVQUFWeVk7UUFBeUIsYUFHekJDO29CQUhrQmhZO3VCQUdsQmdZOzBCQUQrQixnQkE1eEJFajZDLElBMHhCakNnNkMsV0FBa0IvWDswQkFHZSxNQTd4QkFqaUMsSUEweEJqQ2c2QyxVQUdBQyxNQUhrQmhZLEtBR21EO01BM3ZCekUsU0FtQ1FpWSxNQUtKRixVQW1kUUw7UUo5aEZmLElJMmtFaUJwWSxRQUFWeVk7UUFDRjthQURZelksWUFtZEZvWSxRQWxkZ0IsbUJBRHhCSyxVQUFVelk7VUFFSiwwQkE1RTJCdmhDLElBMEV2QnVoQztVQUVKO1lBWWEsSUFHWDRZLFVBakJFNVk7WUFrQlosR0FEVTRZLGNBa2NBUixRQWpjZ0IseUJBaWNoQkE7WUFyY1c7YUFLZix3QkE3RjZCMzVDLElBMkZ6Qm02QzthQUVKOztnQkFDSyxZQXBCQzVZLFFBaUJGNFksa0JBa2NBUjtnQkE5YkQsWUFyQkdwWSxRQWlCRjRZLFVBa2NBUjthQS9jTTdNO21CQXlzQmRpTixZQTdzQkFDLFVBQVV6WSxRQUlJdUw7O1lBR1osSUE0Y0Z1TixVQW5kVTlZO1lBb2RaLEdBREU4WSxjQUFRVjs7O2NBR0Ysc0JBaGlCMkIzNUMsSUE2aEJqQ3E2QztjQUdNLFNBdUNKNzFDOzs7Ozs7OztpQ0FoQ0EsWUFWRjYxQyxrQkFBUVY7OztxQkFZaUI7b0NBWnpCVSxrQkFBUVY7c0JBWWlCO3VDQUFYdk07O3lCQThCWjVvQzs7O2dDQXJDQSxZQUxGNjFDLGtCQUFRVjs7O29CQU9pQjttQ0FQekJVLGtCQUFRVjtxQkFPaUI7c0NBQVhwTTs7Ozt5QkFtQ1ovb0M7Z0JBaEJ1QjsrQkExQnpCNjFDLGtCQUFRVjtpQkEwQmlCO2tDQUFYak07O3lCQWdCWmxwQzs7O29CQXhCdUI7bUNBbEJ6QjYxQyxrQkFBUVY7cUJBa0JpQjt5Q0FBWDlMOzs7O29CQWtCc0I7dUJBcENwQ3dNOztzQkFBUVY7Ozs7c0JBb0M0QixnQkFqa0JIMzVDLElBNmhCakNxNkM7c0JBcUN5QjtxQ0FyQ3pCQSxrQkFBUVY7dUJBcUNpQjt3Q0FBWHpMOzs7cUJBR1c7b0NBeEN6Qm1NLFVBQVFWO3NCQXdDaUI7d0NBQVhuTDs7O29CQXpCVzttQ0FmekI2TCxrQkFBUVY7cUJBZWlCO3lDQUFYN0s7OztvQkFjVztvQ0E3QnpCdUwsa0JBQVFWO3FCQTZCaUI7c0NBQVh6Szs7O2dDQVJaLGlCQXJCRm1MLGtCQUFRVjs7O2dDQWdDTixpQkFoQ0ZVLGtCQUFRVjs7O29CQXVCaUI7b0NBdkJ6QlUsa0JBQVFWO3FCQXVCaUI7c0NBQVh0Szs7O29CQVdXO29DQWxDekJnTCxrQkFBUVY7cUJBa0NpQjtzQ0FBWG5LOzs7Ozs7ZUFTVzs4QkEzQ3pCNkssa0JBQVFWO2dCQTJDaUI7a0NBRHZCbjFDLEdBQ1l5b0M7WUF2ZlosSUFBWUQ7bUJBc3NCZCtNLFlBN3NCQUMsVUFBVXpZLFFBT0l5TDtVQUxSLElBUUosVUFWUXpMO21CQUo4QztNQXBDNUQsU0ErTUltWjtRQXdvQm1CQyxRQUFRcFosUUE5TkpvWSxRQXZhQ2lCLEtBQUtwaEMsS0FBS3FoQyxNQUFNejVDLElBQUl0QyxJQUFJRSxLQUFLODdDLFFBcW9CRnZGO1FBbm9CckQ7Ozs7Ozs7aUJBS0k4RixnQkFBaUIsd0JBUEtULElBT21CO1FBTDdDLFNBTUlVLGdCQUFnQix3QkFSVzloQyxJQVFZO1FBTjNDLFNBT0kraEMsaUJBQWlCLHlCQVRlVixLQVNVO1FBUDlDLFNBUUlXLGVBQWlCLHVCQVZxQnA2QyxHQVVFO1FBUjVDLFNBU0lxNkMsZUFBaUIsdUJBWHlCMzhDLEdBV0Y7UUFUNUMsU0FVSTQ4QyxnQkFBaUIsd0JBWjZCMThDLElBWUw7UUFWN0MsU0FXSTI4QyxtQkFBaUIsdUJBYmtDYixPQWFQO1FBWGhELFNBYUljO1VBWUssbUJBQVk7a0RBQ08sT0FBckI5OEM7O1dBQ3FCOztxQkFEckJBOztnQkFHQSxJQURvQjhDLEVBRnBCOUM7Z0JBR0EsT0FsUUwwNkM7OEJBaVF5QjUzQzt5QkFFZixrQkFxbUJTKzRDLFFBQVFwWjtjQWptQkssT0FSM0J6aUM7O3FCQS9QTDA2Qzs7dUJBc1FVLGtCQWttQlNtQixRQUFRcFo7cUJBem1CdEJ6aUMsSUFTOEI7UUFuQ3JDLFNBc0NJZzlDLFdBQVd2RyxLQUFpQnoyQztVQUM5QixVQUQ4QkE7V0FFZCxPQUZjQTs7WUFDOUIsU0FEOEJBOztnQkFNNUIsSUFEb0JpakMsTUFMUWpqQztnQkFNNUIsT0FqUkYwNkM7OEJBZ1JzQnpYO3lCQUVmLGtCQXNsQlk0WSxRQUFRcFosUUE3bEJkZ1U7Y0FHd0IsT0FIUHoyQzs7cUJBM1E5QjA2Qzs7dUJBcVJPLGtCQW1sQlltQixRQUFRcFosUUE3bEJkZ1U7cUJBQWlCejJDLElBVW1CO1FBaERuRCxTQXNESWk5QyxXQUFXdjNDLEVBQXFCMUY7VUFBd0IsVUFBeEJBO1dBQ2xCOztZQUQwQyxTQUF4QkE7OztnQkFPaEMsSUFEbUJpakMsTUFOYWpqQztnQkFPaEMsT0FsU0YwNkM7NEJBaVNxQnpYO3lCQUVkLGtCQXFrQlk0WSxRQUFRcFosUUE3a0JkLzhCO3NCQUVtQixJQUFWMHdDLFFBRllwMkMsT0FFRixVQUFWbzJDOztnQkFFcEIsSUFEb0I4RyxRQUhZbDlDO2dCQUloQyxPQS9SRjA2Qzs0QkE4UnNCd0M7eUJBRWYsa0JBd2tCWXJCLFFBQVFwWixRQTdrQmQvOEI7WUFTTSx5QkFva0JBbTJDLFFBQVFwWixRQTdrQmQvOEIsVUFTK0M7UUEvRDlELFNBaUVJeTNDLFlBQVl6M0MsR0FBaUIsa0JBQWpCQSxFQUFpQixXQUFZO1FBakU3QyxTQWtFSTAzQyxnQkFBZ0IxM0MsR0FBaUIsa0JBQWpCQSxFQUFpQixlQUFnQjs7UUFsRXJELFVBbW9CcUQrd0M7Ozs7O1lBdmE1QjsyQkF1YUloVSxRQTlOSm9ZO2FBek1BO2FBL0lyQndDLGtCQStJVXRPOzs7WUFnQkU7MENBdVphdE0sUUE5TkpvWTthQXhMQSxjQURuQnlDLGdCQXlMbUJ6QzthQXhMQTthQUNELGNBcVpLcFksUUF2WnZCNmE7YUFFa0I7YUFDTix1QkFESkU7WUFFVDthQUNtQzsyQ0FGbEMzWDswQkFFRTRYLFVBSk0vTjs7NkJBT2EsZ0JBTHJCN0osVUFGUTZKO1lBREUsSUEvSloyTjs7a0NBRUYsTUFvakIyQjVhLFFBOU5Kb1k7O1lBaFVBOzRCQThoQklwWSxRQTlOSm9ZO2FBaFVBO2FBQ3BCLHlCQURTdEs7YUF4QlY4TTs7O1lBMkRxQjs0QkEyZkk1YSxRQTlOSm9ZO2FBN1JBOztZQUVwQjthQUNELGtCQUZFNkMsdUJBRUVDLFVBSE1uTTs7NkJBQ1JrTSxVQURRbE07WUFBVyxJQTNEckI2TDs7O1lBc0NROzhCQWdoQnlDNUcsS0FoaEJ6QjthQUNILGVBK2dCSWhVLFFBOU5Kb1k7YUFqVEE7WUFDcEI7YUFDaUM7OzBCQUE5QitDLFVBRk1oTTs7YUFNUjs0Q0FQQTN3QyxNQUNRMndDO2NBTVI7O3lCQURtQnZ3QyxNQUFNMHdDO1lBTm5CLElBdENSc0w7OztZQXlWSixHQTZONkI1YSxZQTlOSm9ZLFFBQ0MseUJBRERBO1lBR1Y7OytCQUNGbjFDLEdBQ1gsdUJBRkUxRCxTQUNTMEQsRUFDZTthQUZiO3VCQUlENlgsSUFBRTdYO2dCQUNkLE1BRGNBLElBQUY2WDtzQkFDWmpmLEVBRFlpZjtrQkFFVjtvQ0FOQXZiLFNBTXlCLFlBRDNCMUQ7b0JBQ0UsU0FERkE7dUJBRGNvSCxNQUNkcEg7O2dCQUhBLFFBS0k7YUFQUzt1QkFVU21rQztnQkFDdEIseUNBenFCaUN2aEMsSUF3cUJYdWhDLFFBRzBCO2FBYm5DOytCQXVCWUEsUUFBUW9ZO2dCSnRyRnhDLElJc3JGZ0NVO2dCQUN6QjtxQkFEeUJBLGNBQVFWLFFBQ1AseUJBRE9BO2tCQUUzQixJQU1KbjFDLEVBTkksZ0JBdnJCMkJ4RSxJQXFyQlJxNkM7a0JBRW5CLFVBTUo3MUM7b0JBRkE7a0NBTnVCNjFDOzs0QkFRdkI3MUMsRUFKQSxPQUp1QjYxQztrQkFFbkIsU0FGbUJBO2tCQVN2Qjs7MkJBR0F5QywyQ0FaK0JuRCxRQVEvQm4xQzs7MkJBSUFzNEMsb0NBWitCbkQsUUFRL0JuMUMsSUFDaUQ7YUFoQ3RDOytCQW1DZSs4QixRQW9CU29ZLFFBcEJPbjFDO29CQUFoQjYxQyxrQkFBZ0JoK0I7Z0JBQzVDO3FCQUQ0QmcrQixjQW9CU1YsUUFuQlgseUJBbUJXQTtrQkFsQi9CLHdCQW5zQjJCMzVDLElBaXNCTHE2QztrQkFFdEIsU0FGc0MvOUI7Ozs7b0NBSTFDLFNBSjBDRCxLQUkxQyxPQUowQmcrQjs7NkJBQWdCLzlCOzs7O3NCQU8xQyxJQWEyQjY5QixVQXBCREU7c0JBcUI1QixHQUQ2QkYsY0FBUVIsUUFDWCx5QkFEV0E7c0JBYm5DLElBNEJBcDlCLElBYkksZ0JBdnRCMkJ2YyxJQXF0QkptNkM7c0JBRXZCLFVBYUo1OUI7d0JBUEEsSUFSMkI0OUIsdUJBQVFSO3lCQVFMLHlCQVJLQTt3QkFTdkIsSUFDUm45QixJQURRLGdCQTl0Qm1CeGMsSUFxdEJKbTZDO2tDQVV2QjM5Qjt5QkFHSywyQkFia0IyOUI7d0JBV3ZCLFVBL0JzQzk5QixJQThCdENHO3dCQURRLFNBVGUyOUI7d0JBV3ZCOztpQ0EzQ0owQyxzQ0FnQ21DbEQ7O2lDQWhDbkNrRCwrQkFnQ21DbEQ7Z0NBZW5DcDlCO3dCQVhBLFNBeEIwQ0YsS0F5QjFDLG9CQUwyQjg5QjtzQkFnQjNCLFVBcEMwQzk5QixJQW1DMUNFO3NCQTVCQSxTQWEyQjQ5QjtzQkFnQjNCOzsrQkFoREEwQyxzQ0FnQ21DbEQ7OytCQWhDbkNrRCwrQkFnQ21DbEQ7a0JBWlosc0JBUm1CdDlCO29CQVMxQyxTQVQwQ0M7b0JBUzFDLFNBVDBCKzlCO29CQVMxQjs7NkJBckJBd0Msc0NBZ0NtQ2xEOzs2QkFoQ25Da0QsK0JBZ0NtQ2xEO2tCQVJuQyxVQVowQ3Q5QixJQVkxQixvQkFaVWcrQjtrQkFnQjFCLFNBaEIwQ2grQjtrQkFFdEMsSUFjSixVQWhCMEJnK0Isc0NBQWdCaCtCOzJCQWlCUTthQXBEdkM7dUJBbUNla2xCLFFBb0JTb1ksUUFwQk9uMUM7Z0JKbHNGbkQ7eUJJa3NGU3M0Qyw4QkFBMEJ2YixRQW9CU29ZLFFBcEJPbjFDO1lBbkMvQixHQTJOYys4QixZQTlOSm9ZLFFBOEVHLHlCQTlFSEE7WUFHVixhQTRFUCxnQkExdUIyQjM1QyxJQXkzQk51aEM7WUEvSXJCO2FBQ0ssY0E4SWdCQSxnQkFqSmhCeWIsVUFBVHZDOztpQkFBU3VDLFVBQVR2QyxVQWlKeUJsWjtZQXpNM0IsR0F3REVrWixjQTdFcUJkLFFBcUJHLHlCQXJCSEE7WUFHVjthQW1CTCxrQkFqckJ5QjM1QyxJQXd1Qi9CeTZDO2FBdkRNLG1DQXVETkEsa0JBN0VxQmQsUUFzQm5CbjFDO2FBNkRTLDJCQWhGWDFEO2FBZ0ZXLFdBTkZrOEMsUUFPYyxhQUR2QnJiO2FBalFxQixlQWdRckJzYixTQWxGcUJ0RDthQTlLQTtZQUNwQjthQUNvQzs0Q0FIekJ1RDswQkFHUkMsVUFGTXJMOzs2QkFLYyxnQkFOWm9MLFdBQ0ZwTDtZQWlMQyxJQTNWWHFLOzs7WUFxSXFCOzRCQWliSTVhLFFBOU5Kb1k7YUFuTkE7YUFySXJCd0Msa0JBcUlVaks7OztZQWpJWjs7dUJBQWdCcEY7Z0JBQ1gsMkJBRFdBLDJCQUdjO2FBT1AsZUF3aUJJdkwsUUE5TkpvWTthQTFVQTthQUNYOzs7ZUFMUDt5Q0FJTzBEOzs7ZUFLUDs7aUJBclVMN0Q7bUJBdVV5QyxZQVA3QjZEO21CQWhTZDtxQkF3MEI2QjliOzs7c0JBdGlCZixZQUZBOGI7WUFWWixJQUpFbEI7OztZQTJJcUI7NEJBMmFJNWEsUUE5TkpvWTthQTdNQTthQUNwQix5QkFEUzJEO2FBM0lWbkI7OztZQTRCUTs4QkEwaEJ5QzVHLEtBMWhCekI7YUFDSCxlQXloQkloVSxRQTlOSm9ZO2FBM1RBO1lBQ3BCO2FBQzRCOzswQkFBekI4RCxXQUZNRDs7YUFNUjs0Q0FQQUQsTUFDUUM7Y0FNUjs7eUJBRG1CRyxPQUFNRDtZQU5uQixJQTVCUnZCOzs7WUF3SXFCOzRCQThhSTVhLFFBOU5Kb1k7YUFoTkE7YUF4SXJCd0Msa0JBd0lVeUI7OztZQWFFOzRDQWlhYXJjLFFBOU5Kb1k7YUFsTUQsZUFnYUtwWSxRQWphdkJzYzthQUNrQjthQUNDLGVBRm5CQSxrQkFtTW1CbEU7YUFqTUE7YUFDUCx5QkFGSm1FO1lBR1Q7YUFDaUM7NENBRmhDbFo7MEJBRUVvWixXQUhNRDs7NkJBTVcsaUJBTG5CblosWUFEUW1aO1lBRkUsSUFySlo1Qjs7OztZQTJIUTs4QkEyYnlDNUcsS0EzYnpCO2FBQ0gsZUEwYkloVSxRQTlOSm9ZO2FBNU5BO1lBQ3BCO2FBQzBCOzswQkFBdkJzRSxVQUZNblA7O2FBTVI7NENBUEF2dkMsTUFDUXV2QztjQU1SOzt5QkFEbUJwdkMsTUFBTXd2QztZQU5uQixJQTNIUmlOOzs7O1lBa0pxQjsyQkFvYUk1YSxRQTlOSm9ZO2FBdE1BO2FBbEpyQndDLGtCQXNqQmlENUcsS0FwYXZDckg7Ozs7OztZQWhGUyxHQW9mTTNNLFlBOU5Kb1k7Y0F0UmtDO3NDQXJZeEIzNUMsSUF5M0JOdWhDO2VBOUNSLEtBQVAyYzs7Y0FBTzs7Ozs7Ozs7Ozs7O2NBcmNJOzhCQW1mSTNjLFFBOU5Kb1k7ZUFyUkE7O2NBMGNBLFVBeUM0QnBFOzs7OEJBbGYvQ3QwQzs7Ozt5QkFrZitDczBDLFVBbGYvQ3QwQzs0QkEyY3dCO2NBMWN6QjtlQUNELGtCQUZFQSxxQkFFRWs5QyxVQUhNbE87OytCQUNSaHZDLFFBRFFndkM7Y0FBVyxJQW5FckJrTTs7Ozs7Ozs7O2NBaUxGLGtDQXBmaUNuOEMsSUF5M0JkMjZDLFFBQWdDcEY7Ozs7Ozs7O1lBcmdCakQ7O2FBRHlEO2FBQS9DOytCQXNnQk9vRixRQUFRcFosUUF0Z0JrQixzQkFzZ0JNZ1U7YUFwZ0I1QixlQW9nQkloVSxRQTlOSm9ZO2FBdFNBO1lBQ3BCO2FBQ2lDOzJCQUpoQ2g2QyxRQUlnQzswQkFBOUIwK0MsVUFGTXJOOzthQU04Qjs7Y0FBdEMsOEJBQXFCLG9CQU5iQTtjQU1SOzs7eUJBUkFyeEMsUUFPbUJVLE1BQU0wdEMsT0FBTzJEO1lBTmxDLElBakRBeUs7Ozs7Ozs7Ozs7WUFpSDhCOzthQUFkO2FBQWQ7YUFzY047Y0FEcUNxQztnQkFBVUY7a0JBeDJCN0M5RTs7b0JBZzNCSyxrQkFSY21CLFFBQVFwWjs7Z0JBQWtCK2M7O1lBUy9DLFNBVHFEL0k7Ozs7Ozs7Ozs7b0JBU2pEa0o7O3NCQVRpRGxKOzs7Ozs7O2lDQVNqRGtKOzs7OztpQkFUc0NGO3lCQUFXaEosU0FTakRrSjs7eUJBVGlEbEosU0FTakRrSjswQkFVRztZQXhkMkI7YUF5ZGxDLFNBbkJJbEYsS0FRQWtGO2FBN2NxQixlQW9jSWxkLFFBOU5Kb1k7YUF0T0E7WUFDcEI7Y0F6SHVCOztlQUdGLGlDQXlqQkxnQixRQUFRcFo7O2VBMWpCSCwwQkFBUmtCO2NBRlU7ZUEwSEs7MkJBQXpCaWMsVUFGTWxQOzthQU0wQjs7Y0FBbEMsOEJBQXFCLGdCQU5iQTtjQU1SOzs7eUJBVEExdkMsTUFRbUJELE1BQU1ELE9BQU9nd0M7WUFOSixJQWpIOUJ1TTs7Ozs7b0JBc2pCaUQ1Rzs7Ozs7OztnQkF6ZWhDO3NDQWhaY3YxQyxJQXkzQk51aEM7aUJBemV2QjtpQkFEbUQ7aUJBQXJEOztvQkEwZWlCb1osUUFBUXBaLGdCQTFlYztpQkFFbEIsY0F3ZUlBLGdCQTlOSm9ZO2lCQTFRQTtnQkFDcEI7aUJBQ21DOzZCQUxsQ3o2QyxNQUtrQzs4QkFBaEN5L0MsUUFGTTdSOztpQkFNOEI7O2tCQUF0Qyw2QkFBcUIsb0JBTmJBO2tCQU1SOzs7NkJBVEE1dEMsTUFRbUJILE1BQU1JLE9BQU82dEM7Z0JBTmpCOzs7O2dCQVljO3NDQTVaQWh0QyxJQXkzQk51aEM7aUJBN2RUO2lCQUFkO2lCQURGOztvQkE4ZGlCb1osUUFBUXBaLGdCQTlkYztpQkFFbEIsY0E0ZElBLGdCQTlOSm9ZO2lCQTlQQTtnQkFDcEI7aUJBQ3VDOytCQUx0Q3Q2QyxRQUtzQzs4QkFBcEN1L0MsVUFGTTNSOztpQkFNOEI7O2tCQUF0Qyw2QkFBcUIsb0JBTmJBO2tCQU1SOzs7NkJBVEE1dEMsUUFRbUJKLE1BQU1LLE9BQU84dEM7Z0JBTkg7K0JBekYvQitPOztxQkFzakJpRDVHO2FBamRoQzttQ0F4YWN2MUMsSUF5M0JOdWhDO2NBamR2QjtjQURtRDtjQUFyRDs7aUJBa2RpQm9aLFFBQVFwWixnQkFsZGM7Y0FFbEIsY0FnZElBLGdCQTlOSm9ZO2NBbFBBO2FBQ3BCO2NBQ21DOzRCQUxsQ242QyxRQUtrQzsyQkFBaENxL0MsVUFGTXRSOztjQU04Qjs7ZUFBdEMsNkJBQXFCLG9CQU5iQTtlQU1SOzs7MEJBVEEvdEMsUUFRbUJKLE1BQU1LLE9BQU9pdUM7YUFOakIsSUFyR2pCeU87Ozs7OzthQXNMRixrQ0F6ZmlDbjhDLElBeTNCTnVoQyxnQkFBd0JnVTtRQTlYRyxPQTFldERpRTtVQWdmMEIsYUEzUXhCdUIsYUEyUXdCLFlBN1FGSDtVQStReEIsR0EvUXdCa0UsT0ErUXhCLGtCQXNYbUJuRSxRQUFRcFosUUFBd0JnVTtVQXhYekIsSUFFa0IsU0E3UWZ5RixhQTZRZSxZQS9RZnhoQztVQWlSN0IsR0FqUjZCbU8sT0FpUjdCLGtCQW9YbUJnekIsUUFBUXBaLFFBQXdCZ1U7VUF4WHpCLElBSWtCLFNBOVExQzBGLGNBOFEwQyxhQWpSVko7VUFtUmxDLEdBblJrQ2tFLFFBbVJsQyxrQkFrWG1CcEUsUUFBUXBaLFFBQXdCZ1U7VUF4WHpCLElBTWtCLFNBL1ExQzRGLFlBK1EwQyxVQUN6QixpQkFwUnlCcjhDO1VBb1JnQixRQUM1RCxrQkFnWG1CNjdDLFFBQVFwWixRQUF3QmdVO1VBeFh6QjtXQVF3QixTQWpSckI2RjtXQWlScUIsVUFDL0IsaUJBdFI2QnA4QztVQXNSbUI7WUFDbkUsU0F2UndDb0MsT0Fxb0JXbTBDO1lBOVduRCxrQkE4V21Cb0YsUUFBUXBaO1VBeFhELElBN1FGeWQsT0FBZ0I1OUMsSUFBaEJ3NUMsS0FBZ0J4NUM7VUF5UnRCLEdBelJNNDlDLE9BeVJOLGtCQTRXQ3JFLFFBQVFwWjtRQTVXa0MsYUF0UmhDMlosWUFzUmdDLFdBelJyQjk1QztRQStSeEMsR0EvUndDNjlDOztVQStSeEMsU0FzV21EMUo7Ozs7O1VBcFdsQixpQkFwZ0JqQ2lFO3VCQXNnQkksa0JBa1dlbUIsUUFBUXBaLFFBQXdCZ1U7UUFsV0gsT0FwTjlDNEcsVUFzTk07TUF2ZlosU0FxTEkrQztRQUdBdkUsUUFBUXBaLFFBQVFvWSxRQUFRd0YsTUFBTXZFLEtBQUtwaEMsS0FBS3FoQyxNQUFNejVDLElBb0I5Q3RDLElBcEJzREU7UUFDeEQsR0FEVXVpQyxZQUFRb1ksUUFDUSx5QkFEUkE7UUFDd0MsU0FDdER5RixXQUE4QnRFO1VBRWpCO21CQUpmSDttQkFBUXBaO21CQUFRb1k7bUJBQWNpQjttQkFBS3BoQzttQkFBS3FoQzttQkFBTXo1QzttQkFvQjlDdEM7bUJBcEJzREU7bUJBRXRCODdDO21CQUVqQixnQkE5TmtCOTZDLElBME56QnVoQyxTQUlvQjtRQUg0QixVQW1CeER6aUM7b0JBcEJzREUsNEJBYy9CO2FBZENtZ0Q7c0JBQThCbmdELGtCQWtCM0I7Z0JBRkg0QyxFQWhCOEI1QzttQkFFcERvZ0QsZ0JBY3NCeDlDO29CQWhCOEI1QyxrQkFpQjFCO2NBRkgwVCxJQWY2QjFUO2lCQUVwRG9nRCxnQkFhdUIxc0M7UUFLbEIsa0JBQVA1VCxJQUFxQjtNQTVNekIsU0FvSUl1Z0Q7UUFpQkExRSxRQWRRcFosUUFjUW9ZLFFBQVF3RixNQUFNdkUsS0FBS3BoQyxLQUFLcWhDLE1BQU16NUMsSUFBSXRDO1FBYnBELEdBRFV5aUMsWUFjUW9ZLFFBYlEseUJBYVJBO1FBWlosSUFJSnBFLEtBSkksZ0JBM0s2QnYxQyxJQXlLekJ1aEM7UUFFSixVQUlKZ1U7VUFGQSxJQVVROEUsVUFkQTlZO1VBZVYsR0FEVThZLGNBQVFWLFFBQ1EseUJBRFJBO1VBVmhCO1dBV3dEO3FCQUN4Q3dGLE1BQU01ZDtjQUNGO29DQURFQSxRQUZOb1k7ZUFHSTs7O3VCQUhwQmdCO3VCQUdJNkU7dUJBSFk3Rjt1QkFFQXdGO3VCQUZjdkU7dUJBQUtwaEM7dUJBQUtxaEM7dUJBQU16NUM7dUJBQUl0QzswQkFHckNFLE1BRWE7V0FDdEIsdUJBN0w2QmdCLElBdUx6QnE2QztVQU1KLFNBRUo2RDtnQ0FEYyxxQkFQVWlCLE1BQWhCOUU7O29CQVFSNkQ7OztlQVdBO3dCQW5CQXZEO3dCQUFRTjt3QkFBUVY7d0JBQVF3Rjt3QkFBTXZFO3dCQUFLcGhDO3dCQUFLcWhDO3dCQUFNejVDO3dCQUFJdEM7Ozs7ZUFRekIsR0E5S3pCMDZDO2lCQXVMQTt1QkFqQlFhO2tCQWlCUixRQWpCd0I4RSxpQkFReEJqQjtpQkFjQSxxQkF0QndCdUI7OztVQXNCeEIsT0E1TEFqRzttQkFnTUU7cUJBMUJGbUI7cUJBQVFOO3FCQUFRVjtxQkFBUXdGO3FCQUFNdkU7cUJBQUtwaEM7cUJBQUtxaEM7cUJBQU16NUM7cUJBQUl0Qzs7bUJBNkJoRCx1QkE3Qk11N0M7UUFQUjtpQkFPQU07aUJBZFFwWjtpQkFjUW9ZO2lCQUFjaUI7aUJBQUtwaEM7aUJBQUtxaEM7aUJBQU16NUM7aUJBQUl0Qzs7O2lCQVJsRHkyQyxLQUV1QjtNQS9JM0IsU0ErREk2RSxZQWlDQU8sUUFuQmlCcFosUUFtQkRvWSxRQUFtQ3Y0QztRQTlCckQ7aUJBR0lzK0MsU0FBU25lLFFBQVFnWTtVQUVuQixTQUZtQkEsUUFFbkIsY0F4RkFDO1VBeUZFO1lBRWMseUJBNUdpQng1QyxJQXVHdEJ1aEM7WUFHVCxrQ0ExRytCdmhDLElBdUd0QnVoQztVQUtrQjtrQkFDaEI7WUFFSThZO1FBQ2pCO2FBRGlCQSxjQW1CRFYsUUFsQlUseUJBa0JWQTtVQWpCSiwwQkFqSHFCMzVDLElBK0doQnE2QyxXQUVMOzs7O2NBS0gsU0FQUUEsVUFWTVE7Y0FpQmQsY0FQUVI7OztjQU1SLFNBTlFBLFVBVGY3Z0M7Y0FlTyxjQU5RNmdDOzs7Y0FLUixTQUxRQSxVQVZmTztjQWVPLGNBTFFQOzs7Y0FJUixTQUpRQSxVQVhNOEU7Y0FlZCxjQUpROUU7OztjQUdSLFNBSFFBLFVBWGZwOUI7Y0FjTyxjQUhRbzlCOzs7VUFFTDtXQU9WLEtBbkJxQlE7V0FtQnJCLEtBbEJBcmhDO1dBa0JBLEtBbkJBb2hDO1dBbUJBLEtBcEJxQnVFO1dBb0JyQixLQXBCQWxpQztVQStCSixHQXBCbUJvOUIsY0FtQkRWLFFBQ1EseUJBRFJBO1VBakJKO1dBa0I0Qzs7O2dCQWxIeERIOztrQkF5SE8sa0JBUlBtQixRQW5CaUJOOzs7V0E0QmIsd0JBM0k2QnI2QyxJQStHaEJxNkM7VUE0QmI7O2NBRWlCO3NDQTlCSkEsVUFtQkRWO2VBV0s7Ozt1QkFYckJnQjt1QkFXSTZFO3VCQVhZN0Y7Ozs7O3VCQUFtQ3Y0QzswQkFFakR3aUMsTUFTVzdCOzs7WUFJYjtxQkFmQTRZO3FCQW5CaUJOO3FCQW1CRFY7Ozs7O3FCQUFtQ3Y0Qzt3QkFFakR3aUM7VUFnQkYsT0FoQkVBOzthQWtCQSxPQXJJRjRWO2NBc0lJLHVCQXhDYWE7YUF3Q3FDO3NCQXJCdERNLFFBbkJpQk4sVUFtQkRWLDRCQUFtQ3Y0Qzs7YUErQmpEO3NCQS9CRnU1QyxRQW5CaUJOLFVBbUJEViw0QkFBbUN2NEM7O2FBNEJqRDtzQkE1QkZ1NUMsUUFuQmlCTixVQW1CRFYsNEJBQW1DdjRDLFdBTm5DO01BMUZwQixTQTBpQklrNUMsVUFDQXdGLFlBQVl2ZSxRQUFRb1k7UUFDdEI7YUFEY3BZLFlBQVFvWSxRQUVNO1VBQ3BCLDRCQWhsQjJCMzVDLElBNmtCckJ1aEM7VUFHTjtZQUVNLElBQU53ZSxJQUFNLGFBbGxCcUIvL0MsSUE2a0JyQnVoQztZQUtBLEdBTFFvWSxXQUtkb0csSUFDbUI7WUFEYjthQUVJLGNBcGxCaUIvL0MsSUE2a0JyQnVoQyxTQUtOd2UsTUFMTXhlO2FBUWEsY0FIbkJ3ZSxZQUxjcEc7YUFRSzthQUNELGNBVFpwWSxRQUtOd2U7YUFJa0I7NkJBQVZ6RCxRQUZSMEQ7YUFFa0IsYUFUeEJGLGVBVU1HO2FBRTJDLFlBRDNDQyxhQUhRbFQ7O1VBT1o7Ozs7WUFFcUI7eUJBakJYekwsUUFBUW9ZO2FBaUJHO3dCQWpCdkJtRyxlQWtCSTVqRDtZQUUyQyxjQUQzQ2lrRCxXQUZRclQ7cUJBSW1DO01BaGtCbkQsU0Fta0JJeU4saUJBQ0FoWixRQUFRb1k7UUFDVjs7Z0JBREVwWSxZQUFRb1k7Z0NBR2tCLGdCQXptQk8zNUMsSUFzbUJqQ3VoQztVQUdvRDtVQUNsQztrQ0FKbEJBLGdCQUFRb1k7V0FLQSx3QkEzbUJ5QjM1QyxJQTBtQjNCb2dEOztVQUNFOzs7O3dCQWdCQztVQWpCUztXQUdTLHNCQUhyQkEsVUFKRXpHO1dBT21COztXQUNMLHVCQURkMkcsVUFQQTNHO1dBU0ksd0JBL21CcUIzNUMsSUE4bUJ2QnVnRDtXQUNFOzs7O1lBRU07cUJBam5CZXZnRCxJQXNtQmpDdWhDLGlCQVFVZ2YsWUFSVmhmO2FBV2tCLFFBQUp6L0IsRUFKS2lnQzthQUlELEtBSFJ3ZTthQVBFQzthQUFWdkQ7Ozs7O2FBYWdDO29DQU54QnNELFVBUkY1RztjQWMwQjs7Y0FDUix1QkFEWjhHLFVBZE45RzthQWdCSywwQkF0bkJvQjM1QyxJQXFuQm5CMGdELFdBQzJCO2FBRlA7Y0FHaEIsVUF2bkJlMWdELElBc21CakN1aEMsaUJBZWNtZixZQWZkbmY7Y0FpQmtCLFFBQUpsdkIsSUFWSzB2QixNQU9NbEQ7Y0FHUCxLQUZKNmhCO2NBZEZGO2NBQVZ2RDs7O3NCQWtCYTs7O3VEQUliO2NBdEJVdUQsZ0NBQVZ2RCxTQURGMWI7UUF5QnFCLGdCQXhCbkIwYixTQURNdEQsU0F5QmE7c0JBeEJUNkcsaUJBd0JGMVQsVUFDdUM7TUE5bEJyRCxTQWltQkkwTixpQkFDQWpaLFFBQVFvWTtRQUNWO1VBRW9CO2tDQUhsQnBZLFFBQVFvWTtXQUlBLHdCQXhvQnlCMzVDLElBdW9CM0JvZ0Q7O1VBQ0U7Ozs7O1lBRWtCO21DQUhwQkEsVUFIRXpHO2FBTWtCOzthQUNOLHVCQURaMkcsVUFOQTNHO1lBUUQsMEJBNW9CMEIzNUMsSUEyb0J6QnVnRCxXQUMyQjtZQUZUO2FBR2QsUUE3b0JxQnZnRCxJQW9vQmpDdWhDLGlCQU9RZ2YsWUFQUmhmO3dCQU9RZ2YscUJBRUF6K0MsRUFIV200Qzs7O1VBSEQ7Ozs7OztVQWFLOztXQURQOTlDO1dBQVY4Z0Q7V0FDaUIsY0FEakJBLFNBZkV0RDtXQWdCZTt3QkFEUHg5QyxlQUNKMndDO1FBR1csa0JBbkJ2QnZMLFFBQVFvWSxTQW1CZTsyQkFBWDNNLFlBQ3VDO01BdG5CdkQsU0FndEJJd0wsYUFBYWpYLFFBQVFvWTtRSm52RjVCLElJbXZGb0JVO1FBQ2Y7YUFEZUEsY0FBUVYsUUFDRyx5QkFESEE7VUFFcEIsMEJBcHZCZ0MzNUMsSUFrdkJwQnE2QztZQUVhLGNBRmJBO1VBRXFELE9BRnJEQSxVQUU0RDtNQWx0QjdFLFNBc3RCSWtGLGVBQWVoZSxRQUFRb1ksUUFBUWpxQztZQUFoQjJxQyxrQkFBZ0IxcUM7UUFDakM7YUFEaUIwcUMsY0FBUVYsUUFDQyx5QkFEREE7VUFFbkIsSUFDSm4xQyxFQURJLGdCQTF2QjZCeEUsSUF3dkJsQnE2QztVQUVYLE9BQ0o3MUMsYUFRSyxVQVhVNjFDLFVBQWdCMXFDO1VBRTNCLElBRjJCQywwQkFHL0JwTDtVQUNBLHVCQUorQm9MO1dBTTdCOzJDQTl2QitCNVAsSUF3dkJGNFA7VUFFM0IsSUFRRixVQVZheXFDLHNDQUFnQjFxQzttQkFXZDtNQWp1QnJCLFNBcXVCSTB3QyxjQUFjOWUsUUFBUW9ZO1FBQ3hCLEdBRGdCcFksWUFBUW9ZLFFBQ0UseUJBREZBO1FBRWxCLDBCQXp3QjZCMzVDLElBdXdCbkJ1aEM7UUFFVjs2QkFDVSxzQkFIQUEsUUFBUW9ZOzs7V0FJZixJQUpPcFkscUJBQVFvWSxRQUtRLHlCQUxSQTtXQU1oQixJQUlKbjFDLEVBSkksZ0JBN3dCMkJ4RSxJQXV3Qm5CdWhDO1dBTVIsT0FJSi84QjtZQUNBLDBCQVhZKzhCLDBCQVVaLzhCO1dBSkk7WUFFYyx1QkFSTis4QixnQkFBUW9ZO1lBUUY7O3FCQUFkc0QsV0FBVXI3QztRQUtYLDZCQUFZO01BbHZCckIsU0ErdkJJeTZDLHFCQUFxQjlhLFFBQVFvWSxRQUFRbjFDO1FKbHlGNUMsSUlreUY0QjYxQztRQUN2QjthQUR1QkEsY0FBUVY7V0FFN0Isa0NBbnlCaUMzNUMsSUFpeUJJd0UsRUFBUm0xQztVQUt6QiwwQkF0eUI2QjM1QyxJQWl5QlpxNkM7VUFLakI7WUFFSixJQVBxQkEsdUJBQVFWO2FBT0MseUJBUERBO1lBUTFCLG1CQXp5QjhCMzVDLElBaXlCWnE2Qyx1QkFBZ0I3MUMsRUFRbUIsT0FSbkM2MUM7WUFTUCw0QkExeUJtQnI2QyxJQWl5QlpxNkM7WUFTUDs7Ozs7b0JBZUk7a0RBeEJHQSxrQkFBUVY7cUJBd0JYLFVBQVZ5QztxQkF4QmEvQjs7OztvQkFnQ2pCOzZCQWhDaUJBOzs7aUJBWWpCLElBWmlCQSx1QkFBUVY7a0JBWUsseUJBWkxBO2lCQWFiLDRCQTl5QmlCMzVDLElBaXlCWnE2QztpQkFhTDttQkFLSTttREFsQkNBLGtCQUFRVjtvQkFrQlQsVUFBVmtFO29CQWxCV3hEOzs7bUJBZUQ7OzBDQWZDQSxrQkFBUVY7b0JBZVQsVUFBVmdIO29CQWZXdEc7O2lCQWFMLElBT0wsVUFwQlVBOzs7O2dCQTRCSDtnREE1QkdBLGtCQUFRVjtpQkE0QlgsVUFBVmlIO2lCQTVCYXZHOzs7ZUFtQ2pCLDBCQW5DaUJBO1lBU1AsSUE0QlYsVUFyQ2lCQTs7VUFLakIsSUFrQ0MsVUF2Q2dCQTttQkF1QzRCO01BdHlCckQsU0E4MkJJd0Isa0JBQ0VsQixRQUFRcFosUUFBUWdVLEtBQUt3TDtRQUNWLElBQVRDLE9BQVMsTUFsNUJvQmhoRCxJQWk1Qi9CMjZDLFFBQVFwWixVQUFSb1o7UUFDVzt3Q0FsNUJvQjM2QyxJQWk1Qi9CMjZDLFFBQXFCb0csT0FBTHhMLEtBQ2R5TCxPQUk0QjtNQXAzQnBDLFNBbXpCSTVDLGlCQUFpQnpELFFBQVFwWixRQUFRcVosS0FBS3BoQyxLQUFLcWhDLE1BQU10RjtZQUFoQnVKLFlBQUtuM0IsWUFBS28zQjtRQUM3Qzs7YUFEbUNEO2VBQUtuM0I7OztrQkFBS28zQixvQkFBTXhKLEtBSXJCLG9CQUpxQkEsS0FJZ0I7O2NBSjNCNXRCO2VBQUtvM0I7Ozs2QkFBTXhKOzs7Ozt3QkFNZ0I7eUJBSXJDO3lCQUNBO3lCQUhBO3lCQUlBO3lCQU5BOzs7ZUFOZXdKO3lCQUFNeEosS0FHckIsb0JBSHFCQSxLQUdnQjs7NkJBSGhCQTs7O3dCQUtnQjt5QkFIckM7eUJBQXFDO3lCQUtyQzt5QkFFQTt5QkFKQTs7O3lCQUxxQkE7OztzQkFjNUIsR0FsMUJyQmlFLGtCQWsxQndDO3VCQUNuQixHQW4xQnJCQSxrQkFtMUJ3Qzt1QkFGbkIsR0FqMUJyQkEsa0JBaTFCd0M7Ozs7Z0JBSXhDLEdBcjFCQUEsdUJBbzBCc0M3eEI7Z0JBbUJqQyx5QkFuQllnekIsUUFBUXBaLFFBQXdCZ1U7O2FBQWhCdUo7WUFxQmpDLEdBckIyQ0M7Y0FxQjNDLEdBejFCQXZGLHVCQW8wQjJDdUY7Y0F3QnRDLHlCQXhCWXBFLFFBQVFwWjtZQThCekIsR0FsMkJBaVksdUJBbzBCaUNzRjtZQWdDNUIseUJBaENZbkUsUUFBUXBaLFFBQXdCZ1U7VUEwQmpELEdBMUIyQ3dKO1lBMEIzQyxHQTkxQkF2Rix1QkFvMEIyQ3VGO1lBNEJ0Qyx5QkE1QllwRSxRQUFRcFosUUFBd0JnVTtVQWlDM0IsOEJBQVk7TUFwMUJ0QyxxQ0FsQ3FDdjFDLEtBdzVCUDthQU81QmloRCx1QkFBdUJqaEQsSUFBSUU7TUFDWCw4QkFET0YsS0FDUDs7UUFDTix3QkFEQWlpQyxJQURpQi9oQyxPQUFKRjs7OztVQU1qQix5QkFOcUJFO1VBTXJCLHlDQU5pQkY7bUJBTU07YUFJN0JraEQsd0JBQXdCbGhEO01BQ1I7T0FEMkJ1a0M7T0FBTnRDO09BQ3JCLDBCQURRamlDO09BQ1I7O1FBQ04sd0JBREFnbEMsTUFDZ0IsYUFGVy9DLE1BQWJqaUM7Ozs7U0FJeEIseUNBSndCQSxJQUFtQnVrQzs7Ozs7T0E1M0YzQzNDO09BVEFGO09BYkFMO09BR0FDO09BTUFHO09Bd0NBTztPQWs2Q0lxVTtPQStRQW1CO09BK0dBTztPQW9CQUk7T0FxQkFDO09BeDZCQTFMO09BdWhDSjJNO09BKzVCQTRIO09BVUFDO09Bem9GQTFkO09BZ0xBYztPQTJnQ0E2UjtPQXoxQkFyUjtPQTZ5Q0F3VDtPQS94Q0kzUztPQXVJSjBDO09BK2ZBMk07O2FxQ3B3Q0FtTSxTQUFTOW9CLEVBQUVuckI7VUFBVyswQjthckN3OUNsQm9VO3dCcUN2OUNXM21DLEtBQU8sV0FEWHhDLEVBQ0l3QyxLQUFPLGtCQURiMm9CLEVBQUVuckIsRUFDZ0M7O2VBRHJCKzBCO2FBRXRCbWYsU0FBUy9vQixFQUFFajFCO1VBQVc2K0I7YXJDczlDbEJvVTt3QnFDcjlDVzNtQyxLQUFPLFdBRFh0TSxFQUNJc00sS0FBTyxrQkFEYjJvQixFQUFFajFCLEVBQ2dDOztlQURyQjYrQjthQUV0Qm9mLFVBQVVocEIsRUFBRXR6QjtNekN2QmpCLEl5Q3VCNkJrOUIsb0JyQ211RHBCdVYsYXFDbnVETW5mLEVBQUV0ekIsR0FBWWs5QjthQUl4QnFmLFFBQVF2OEMsR0FBR2s5QixLQUFNLCtCekMzQnRCLFV5QzJCYWw5QixHQUFHazlCLElBQTRCO2FBQ3ZDc2YsUUFBUW4rQyxFQUFFNitCLEtBQU0sK0J6QzVCckIsVXlDNEJhNytCLEVBQUU2K0IsSUFBMkI7YUFDckN1ZixTQUFTejhDLEdBQUdrOUI7TUFBTSxnQ3pDN0J2QixVeUM2QmNsOUIsR0FBR2s5QixJQUE2QjthQUN6Q3dmLFNBQVNyK0MsRUFBRTYrQixLQUFNLGdDekM5QnRCLFV5QzhCYzcrQixFQUFFNitCLElBQTRCO2FBQ3ZDeWYsT0FBT3pmLEtBQU0sZXpCRmIvOUIsT3lCRU8rOUIsSUFBd0I7YUFDL0IwZixRQUFRMWYsS0FBTSxlekJGZDk5QixPeUJFUTg5QixJQUF3QjthQUVoQzJmLFNBQVN2cEI7TXpDbENkLEl5Q2tDeUI0SjtlQUNsQi9CLElBQUd4d0I7UUFDSyxJQUFObkosSUFBTTtRQUNWLFdBRElBLElBRENtSjtRQUdILGtCQUpPMm9CLEVBSVAsU0FGRTl4QixLQUVtQjthckNxOENuQjh2QyxZcUN4OENGblcsTUFEa0IrQjthQU9wQjRmLFFBQVE1ZixLQUFNLHlCQUFjbmdDLEdBQUssT0FBTEEsQ0FBTSxFQUExQm1nQyxJQUErQjs7OztPQWR2Q3FmO09BSUFJO09BQ0FDO09BU0FFO09BYkFOO09BQ0FDO09BQ0FDO09BWEFOO09BSUFFO09BV0FPO09BYkFSO09BRUFDO09BV0FPOzs7Ozs7YUM2QklFLE9BQU83L0MsRUFBRXlCO00xQy9EbEIsSTBDK0RrQjJXO01BQ2Y7V0FEZUE7MkJBR1IwbkMsWUFBSkM7VUFBcUIsY0FBckJBLEdBSFUvL0MsR0FHcUIsT0FBM0I4L0M7VUFDSyxRQUpHMW5DOztRQUVQLGdCQUVjO2FBR3BCNG5DLFFBQU1uZ0Q7TUFDQTtpQkFEQUE7T0FDQSwwQkFEQUE7T0FHVSxXQUhWQSxFQUNKMUUsVUFDQStILE9BREEvSDtNQUVKLGdCQUhRMEUsSUFDSjFFLFFBRTRDO2FBRzlDOGtELGFBQWExakMsT0FBT0wsSUFBSVEsT0FBT2piO01BQ2pDLEdBRGlDQTtRQUdrQixJQUE5QzBLLEVBSDRCMUssS0FHL0JrbEIsRUFIK0JsbEIsS0FHa0IsU0FIcEM4YSxPQUdib0s7UUFBUTtzQ0FBcUIzbUIsRUFBRUMsR0FBUyxXQUFYRCxFQUFXLElBSHBCa2MsSUFHV2pjLEdBQWdCLE9BQTVDa007aUJBSHFCdVE7TUFFbEIsZUFDbUU7YUFZekV3akMsbUJBQWlCLG1CQUE4QjthQUUvQ0MsU0FBU0M7TUFDWDtRQUNhLGtCQUZGQSxVQUVFOzs7Ozs7NEJBSlhGOztRQVFXLGtCQU5GRSxVQU1FLFdBRFRDOzs7Ozs7OzRCQVBGSDs7TUFZUyxjQVZBRSxTQVVBLFlBTFBDLE1BS29CO2FBR3RCQyxRQUFRaDhDLElBQUk4N0MsU0FBU0c7TUFDdkIsbUJBRFVqOEMsVUFBYWk4QztNQUVJLGtCQUZiSDtNQUVKOzs7a0JBMUJtQkk7a0JBQU5DO2tCQUFMQztpREFBV0Y7O21CQUUzQixVQUZxQkM7cUJBSWpCLE1BSmlCQSxRQUlhLHVDQUR4QmgvQztxQkFDd0IsMEJBb0IxQjZDLFVBeEJRbzhDLFNBQVdGO21CQU12QiwwQkFrQklsOEMsVUF4QlFvOEMsSUFBV0Y7O29CQTBCaUI7YUFHNUNHLGFBQWFQLFNBQVNHO01BQ2hCLElBQUpwL0MsRUFBSSxjQUNSLFFBRElBLEVBRFdpL0MsU0FBU0csUUFFeEIsZ0JBRElwL0MsRUFFYTthQUdmeS9DLE1BQU1SLFNBQVNHO01BQ0osc0JBRExILFNBQVNHO01BQ0oscUNBQThCO1FBR3pDM2lCO2FBRUFpakIscUJBQW1CN2dEO01BQ3JCO1FBQVMsMkJBRFlBOzs7d0NBRU07bUJBQUk7YUFFN0I4Z0Qsb0JBQWtCOWdEO01BQ3BCO1FBQVMsK0JBRFdBOzs7K0JBRUY7UUFMbEIsV0FLc0I7YUFFcEIrZ0Qsb0JBQW9CL2dEO01BQ3RCO1FBQVMsaUNBRGFBOzs7K0JBRUo7UUFMbEIsV0FLc0I7YUFFcEJnaEQ7TUFBa0NDLGFBQWFyakIsUUFBUXNqQixLQUFLZCxTQUFTZSxRQUNuQ1o7TUFDcEMsSUFBSWEsUUFGNkN4akI7TUFFakQsU0FDSXlqQixjQUFjL3NDO1FBS1I7OztVQU5OOHNDLFVBRnFERjtZQVVkLGlCQVZjQSxRQUVyREU7O1FBU0YsT0FSZ0I5c0M7Ozs7Ozs7WUFZVixtQkFQRm5ULFFBQ0FtZ0Q7OztlQVNpQnpKLFNBZkx2akMsU0FlQXNhLElBZkF0YSxTQWVMcVgsSUFmS3JYO1dBZ0JWLG1CQVhGblQsUUFDQW1nRCxTQVNZMXlCLElBQUxqRCxJQUFVa3NCOztpQkFEZixJQURNaDRDLEVBYkl5VSxTQWNWLG1CQVRGblQsUUFDQW1nRCxTQU9RemhEO2tCQU1OLElBRE11USxJQWxCSWtFLFNBbUJWLG1CQWRGblQsUUFDQW1nRCxTQVlRbHhDO1FBR1osUUFoQklqUCxFQVJ3RGkvQyxZQUMxQkc7UUF3QkosS0FBM0IsV0F0QmFqc0MsaUJBc0JjLFdBdEJkQTtTQXdCUCx1QkFuQkxuVDtRQWtCTSx3QkFsQk5BLEdBbUJ3QjtNQXpCOUI7O1dBRmlEeThCLGFBQVFzakI7VUErQnZEO1lBQ1U7a0JBaENxQ3RqQjthQWdDckMsbUJBaEM2Q3NqQjs7WUFpQzFCLFFBRG5CLHNCQUFKcmhELGFBQ3VCLGdCQUR2QkE7Y0FDd0M7Z0JBRXBDOzs2QkFISkEsRUFoQ3NEdWdEO2lCQWtDNUNtQjtpQkFBUnJ3Qzs7OztnQkFHRjtrQkFDcUI7aUNBTnJCclI7bUJBTXFCOzs2QkFBTit1QjttQkFDYixZQURJNHlCLFFBdENnRHBCOzs7d0NBd0NwQyxpQkFSbEJ2Z0Q7OztvQkFFVTBoRCxnQkFBUnJ3QztjQVFKOzt5QkFWRXJSLEVBRVU2aEQ7MkJBUVJDO29CQUNGLEdBVFVEOzBCQVdIOXlCLElBWEc4eUIsMkJBRlY3aEQsRUFhTyt1QjtvQkFERyxRQUNnRDt5QkFIeEQreUI7ZUFBSixnQkFWRTloRCxFQUVVMGhEO2VBUVo7eUJBVkUxaEQsRUFFVTZoRDsyQkFZUkc7b0JBQ0YsR0FiVUgsWUFpQkg5eUIsSUFqQkc4eUIsaUJBaUJIOXlCO29CQUZILElBakRxQ2dQLHNCQUFRc2pCO3NCQWlERCxTQWpEUHRqQjtzQkFpRE8sd0JBakRDc2pCO29CQWtEeEMsaUJBbEJUcmhELEdBbUJpQjt5QkFMZmdpRDtlQUpKLGtCQVZFaGlELEVBRVUwaEQ7ZUFRWjt5QkFSWUc7MkJBbUJSSztvQkFDRixPQXBCVUwsVUFsQytCOWpCLGVBd0QzQjt5QkFIWm1rQjtlQVhKLDBCQVJZUjtlQVFaO3lCQVZFMWhELEVBVUU4aEQsT0FJQUUsUUFPQUU7MkJBS0lFO29CQUFlOzZCQUNYLElBQUw1aUQsV0FBSyw0QkFBTEE7O3VCQUVIOzt3QkFBVTt3QkFDRSwyQkFEUnV2Qjt1QkFDUTt5QkFFQSxJQUFMeGUsYUFBSyxXQUpUOHhDLElBSUk5eEMsS0FFUDt1QkFIVSxpQkEvQlp2USxFQTZCTSt1Qjs2QkFNRyxJQUFMcHZCLFdBQUs7NkJBQ0UsSUFBTG95QixhQUFLOzt1QkFFVCxpQkFBVTt1QkFDVixXQUZLdXdCLElBQ0R0ekI7dUJBQ0o7O3VCQVlBLElBRFN1ekIsYUFDSjs7dUJBR0w7O3dCQUFVO3dCQUNFLDRCQURSdHpCO3VCQUNRO3lCQUVBLElBQUw5dUIsYUFBSyxXQUpWcWlELElBSUtyaUQsR0FFUDt1QkFIVSxpQkF4RFpILEVBc0RNaXZCOzt1QkFPSjs7d0JBQVU7d0JBQ0UsNEJBRFJ5ekI7dUJBQ1E7eUJBRUEsSUFBTHJwQyxlQUFLLFNBQUxBLElBRVA7dUJBSFUsaUJBL0RaclosRUE2RE0waUQ7O3VCQU9KOzt3QkFBVTt3QkFDRSw0QkFEUkU7dUJBQ1E7eUJBRUEsSUFBTEM7eUJBQUssV0FKUkYsSUFJR0U7eUJBRVA7dUJBSFUsaUJBdEVaN2lELEVBb0VNNGlEOzt1QkFPSjs7d0JBQVU7d0JBQ0UsNEJBRFJHO3VCQUNRO3lCQUVBLElBQUxDLGVBQUssU0FBTEEsSUFFUDt1QkFIVSxpQkE3RVpoakQsRUEyRU0raUQ7O3VCQU9KLElBRElFO3VCQUNKO3FDQXhESWIsYUF1REFhOzt1QkF2Q00sSUFERUMsYUFBTnpQLGNBQ0k7dUJBQ1AsT0FEQzBQLE1BREUxUDt5QkFHSixXQUhVeVAsSUFDUkMsT0FFRjt1QkFHNEI7OzsrQkEvQ2hDbmpEOytCQTBDTW1qRDsrQkFLMEIsZUFDRSxrQ0FQMUIxUDs7dUJBNENOLElBREcyUDt1QkFDSDt1QkFHZ0I7NEJBeEh1QnJsQixjQUFRc2pCOzJCQXVIN0MsU0F2SHFDdGpCOzJCQXVIckMsV0FIQ3FsQixJQUdDLGlCQXZIMkMvQjsyQkF3SDdDOzs7O3VCQUdGLElBRE9nQzt1QkFDUDsyQkFDSXoxQzt1QkFHWTs0QkEvSHVCbXdCLGNBQVFzakI7MkJBOEg3QyxTQTlIcUN0akIsbUJBOEhyQyxLQUZFbndCOzJCQUVLLDZCQTlIc0N5ekM7MkJBK0g3Qzs7eUJBRUEsa0JBUEtnQyxJQU9MLElBTEV6MUM7OzJCQU1DMDFDOzhCQWxJcUJsQzt3QkFvSXhCO3VCQUVRLHFCQUNHLGtCQUxSa0MsSUFJREM7dUJBRUo7dUJBRlU7d0JBR0csYUF6SWtDbEMsVUFBUnRqQjt3QkEySXJDOzsyQkEzSTZDc2pCOzJCQUFSdGpCOzRCQUFRc2pCLHFCQUFSdGpCO3VCQTZJaEM7OzRDQUpIMEYsVUFGQStmLFVBR0FoZ0I7dUJBR0csU0FBbUM7eUJBbkZ0QzRlO2VBaEJSLDRCQVZFcGlELEVBVUU4aEQsT0FJQUUsUUFPQUU7Y0EwRkosYUE3R0k3d0M7OzBCQThHRCxXQWhKOERpd0MsUUFnQy9EdGhEOzs7aUNBaUhVLElBQUxpcEIsV0FBVyx1QkFBWEE7a0NBQ00sSUFBTHpnQixXQUFXLG9CQUFYQTs7O1VBRVo7O1FBdkpGLFNBd0pJO2FBRUZpN0M7TUFBOEIxbEIsUUFBUXNqQixLQUFLZCxTQUFTZSxRQUFRWjtNQUM5RDtpQkFEZ0MzaUIsUUFBUXNqQixLQUFLZCxTQUFTZSxRQUFRWixPQUNhO2FBRXpFZ0QsbUJBQXFCNTNCLElBQWlCdTFCLEtBQUtkLFNBQVNlLFFBQVFaO01BQzlELEdBRHVCNTBCLElBQVEsUUFBUkEsaUJBQVFDLGFBQVI0M0IsVUF4S3JCNWxCO01BeUtGO2lCQUR1QjRsQixhQUFpQnRDLE1BQUtkLFNBQVNlLFFBQVFaLE9BRXREO2FBR05rRCxXQUFhOTNCLElBQWlCdTFCLEtBQUtkLFNBQVNlLFFBQVFaO01BQ3RELEdBRGU1MEIsSUFBUSxRQUFSQSxpQkFBUUMsYUFBUjQzQixVQTdLYjVsQjtNQThLRjtrQkFEZTRsQixXQUFpQnRDLFFBQUtkLFVBQVNlLFFBQVFaLE9BQ2dCO2FBR3BFdEksTUFBTXgyQyxFQUFFcEMsRUFBRTZMO01BQ1o7UUFDRSx1Q0FGTXpKLEVBQUVwQyxFQUFFNkw7Ozs7VUFJQyxJQUFQdzRDLGFBQU8seUJBQVBBLE9BQU87O1VBQ0MsSUFBUEMsYUFBTyx3QkFBUEEsT0FBTztrQkFBdUI7YUFHbkNDLGNBQWNuaUQsRUFBRXBDLEVBQUU2TDtNQUNwQjtRQUNFLCtDQUZjekosRUFBRXBDLEVBQUU2TDs7OztVQUlQLElBQVB3NEMsYUFBTyx5QkFBUEEsT0FBTzs7VUFDQyxJQUFQQyxhQUFPLHdCQUFQQSxPQUFPO2tCQUF1QjthQUVuQ0UsYUFBYXBpRCxFQUFFcEMsRUFBRTZMO01BQ25CO1FBSUU7U0FISWcyQztTQUNBVCxRQUhTaC9DO1NBSVQraEQsYUFwTUo1bEI7U0FxTUEsbUNBREk0bEIsVUFGQXRDLEtBQ0FULEtBSFdwaEQsRUFBRTZMOzs7OztVQU9OLElBQVB3NEMsYUFBTyx5QkFBUEEsT0FBTzs7VUFDQyxJQUFQQyxhQUFPLHdCQUFQQSxPQUFPO2tCQUF1QjthQUduQ0csWUFBWWprRDtNQUNkLElBQUlxRCxJQUFKLHNCQURjckQ7TUFDZCxTQUNRa2tELEtBQUtwa0Q7UTFDdFVoQixJMENzVWdCOFE7UUFDWDthQUZFdk4sT0FDU3VOLElBQ00sT0FGZnZOO1VBR00sMEJBSklyRCxFQUVENFE7WUFFYyxRQUZkQTtVQUdOLE9BSE1BLElBR0w7TUFKUjtRQU1NLElBQ0pBLElBREksUUFQUTVROzs7O1VBVVY7WUFBWSxJQUNWRixFQURVLFFBVkZFOzs7a0NBWWUsT0FYekJxRDtZQVVPO3NCQUFMdkQ7UUFIQztrQkFBTDhRLFlBS0s7YUFHTHV6QyxZQUFZdmtEO1VBQWdCK2dELGFBQU5DLGNBQUx3RDtvQkFBS3hEO2VBRVYsTUFGQWhoRCxJQUVBLHNCQUZLd2tEO2VBR3FCLE1BSDFCeGtELElBRzBCLHNCQUhyQndrRCxPQUdxQixZQUhWekQ7YUFNNUIwRCxvQkFBb0Jya0Q7TUFDdEIsSUFBSUg7TUFBSjt3QkFDZ0U2QztpQkFBakMsU0FBaUNBLE9BRDVEN0MsU0FDd0Msc0JBQXlCLE9BQUw2QyxDQUFPO2VBRmpEMUMsRUFFbUQ7YUF5QnZFc2tELE1BQVF4NEIsSUFBZXkwQjtNQUN6QixHQURVejBCLElBQU0sUUFBTkEsYUFBTUMsYUFBTnc0QixNN0JqUkF6akQ7TTZCa1JNOzBCQURTeS9DO09BRWYsZ0JBbkNSNEQsY0FrQ0VLO09BRU0sWUFETm5oRCxJQUZNa2hEO01BSUQ7d0JBM0JTRTtpQkFDbEIsU0FEa0JBLE9BQ2xCLEtBRGtCQTtpQkFDbEIsd0JBRGtCQTs7cUJBT2Q7NEJBUGNBO3NCQU9ELHFCQURXWjtzQkFFWCxnQkFBYSxRQVJoQjMvQyxRQU9Od2dEO3FCQUVROzs7d0NBQU8sSUFEZkMsU0FDd0Isb0JBSEpkO21CQUtYO29CQURIeDRDLElBVklvNUM7b0JBVVY3RCxLQVZVNkQ7b0JBV0QsbUJBREhwNUM7b0JBQ0c7MEJBWEhuSCxRQVlOMmdELGVBREFEO21CQUFTLE9BRVQ3bkM7cUJBSVc7b0NBSlhBO3NCQUtXLGFBQVcsb0JBUmhCMVIsT0FDTnU1QztzQkFRVzs2QkFUTHY1QyxJQUNOdTVDLE9BT1csc0JBUkx2NUMsT0FDTnU1QztxQkFTVSxlQVZWaEUsS0FVVSxJQUZSbGtDLE9BRWlCLElBSGpCb29DLE9BRUFqb0M7bUJBSlEsZUFMVitqQyxLQUtVLG9CQUxKdjFDO2lCQUxWLE9BTGNvNUM7ZUF3QmRELFVBR2dDO2FBU2xDTyxTQUFTQyxLQUFLM29DLElBQUk0b0M7TUFDWCxrQkFEV0EsTUFFVjtlQUVORTtRQUNTLElBWkhubEQsRUFZRyxTQUhUeUU7UUFHUyxHQUxGdWdEO1VBTlgsOEJBRFVobEQ7VUFFSSxPQURWcUQsY0FDVSxnQkFGSnJELEVBQ05xRDtxQkFFRixNQUhRckQsSUFDTnFEO2lDQURNckQ7VUFDVixJQVlNb2xEOztrQkFiSXBsRDtRQWNSLGNBRElvbEQsS0FIRkY7UUFJRixlQUxFemdELElBTWM7TUFOUjs7VUFVSSxJQUFKL0IsRUFBSSxtQkFYVnFCO1VBV1UsR0FBSnJCLE1BWk0yWixJQWFNLGNBQWMsU0FYaEM1WCxJQVVNL0I7Ozs7O1VBS1AsT0FmQytCLE9BZTBCO1VBQzlCLHNCQWpCSVY7VUFrQlUsbUJBaEJWbWhEO21CQWdCMkI7O0lBRWxCLFNBQVhHLGUxQ3ZaTCxPMENrWUtOO0lBcUJXO0lBRUMsU0FBWk8sZ0IxQ3paTCxPMENrWUtQO0lBdUJZLFNBRVpRLFVBQVVscEMsSUFBSTRvQyxLQUFLTztNQUNaLElBQUx2aUQsR0FBSyxTQURPZ2lEO01BRWhCLGdCQUFnQmpsRCxHQUFLLDBCQURqQmlELFNBQ1lqRCxFQUZKcWMsSUFFZ0MsRUFGdkJtcEM7TUFFckIsYUFESXZpRCxHQUVRO0lBTEU7SUFPQSxTQUFad2lELHFCMUNoYUwsTzBDMlpLRjtJQUtZO0lBRUMsU0FBYkcsc0IxQ2xhTCxPMEMyWktIO0lBT2E7OztPQXhIYm5OO09BUUEyTDtPQVpBSDtPQUxBRjtPQUhBRDtPQTJCQU87OztPQXBNQWpEO09BTkFEO09Bc1FBd0Q7T0E1UEF2bUI7T0E4UkFzbkI7T0FFQUM7T0FPQUc7T0FFQUM7SUFBYTs7Ozs7UXJDOVliQztJQUFXLFNBSVhDLE1BQU16bEQsRUFBRTdFO01BQ0YsSUFBSmtFLEVBRElXLE1BQUU3RTtNQUVILGdCQURIa0U7ZUFHSSxhQUhKQTtpQkFJRix5QkFKRUE7aUJBS0ksYUFMSkEsV0FNRixVQU5FQTtlQUVGLHlCQUZFQSxFQVFDO0lBYlEsU0FlUHFtRCxhQUFhMWxELEVBQUU3RTtNQUNyQixHQURtQjZFLGdCQUFFN0UsRUFDRztNQUNVLHNCQUZmNkUsRUFBRTdFLFdBRUMsV0FGSDZFLEVBQUU3RTtNQUVDLDBDQUFrQztJQWpCM0MsU0EwQlh3cUQsYUFBYTNsRDtNQUNmLFNBQVE0bEQ7UUwvQ1g7UUsrQ2tCOztnQkFDTDlqRCxjQUFOQzs7Y0FDUyw4QkFEVEEsR0FGVy9COztnQ0FLSSxJQUFMSCxTQUFLLFVBQUxBO3dCQUhKaUM7O1VBSUEsU0FBSTtNQUNULFlBakNIMGpELFlBaUN3QjtJQWpDYixTQW1DWEssa0JBVU03bEQ7TUFWYyxHQVVkQSxvQkFUVztTQVNYQSxxQkFSWTtTQVFaQTt5QkFQb0I4bEQsa0JBQU5DLGdCQUFOakI7O2lCb0NqQmRsRixRcENuQkF6bEQ7aUJBb0NjMnFEO2lCQUFNaUI7aUJBQU1EOzs7U0FPcEI5bEQ7OztTQUxxQmdtRDtTQUFOQztTQUFOQzs7aUJvQ25CZnRHLFFwQ25CQXpsRDtpQkFzQ2UrckQ7aUJBQU1EO2lCQUFNRDs7O1NBS3JCaG1EOzs7U0FIaUNtbUQ7U0FBTkM7U0FBTkM7O2lCb0NyQjNCekcsUXBDbkJBemxEO2lCQXdDMkJrc0Q7aUJBQU1EO2lCQUFNRDs7O01BSXJDLHNCQURJbm1EO1FBS3FDLGdCQUxyQ0EsUUF6QlIsTUF5QlFBO1FBekJSO1NBSW9DOzRCQXFCNUJBO1VBckJnQixXQXFCaEJBO2VBckJnQjs7Ozs7bUJBREYsZUFzQmRBLFVBdEJjO21CQTBCWnNtRDtNQUZPLE9BRlR0bUQsSUFNc0I7SUFuRGpCLFNBcURYdW1ELFlBQVVsK0M7TUFDTix1QkFETUE7TUFDTixVQUNNLElBQUx4SSxXQUFLLE9BQUxBO01BQ0cseUJBSEV3SSxFQUdpQjtJQXhEaEIsU0EwRFhtK0MsTUFBTUMsSUFBSTczQjtNQUNaO1FBQ0Usb0JBRk02M0IsSUFBSTczQixLQUlWO1lBREc1dUI7O1FBQ2dDLHFCQURoQ0E7UUFDSDtRQUNBLGNXckRBa0M7UVhxREEsTUFGR2xDLEVBR0k7SUFoRUksU0FrRVgwbUQsUUFBTUQsSUFBSTczQjtNQUNaO1FBQ0Usb0JBRk02M0IsSUFBSTczQjtZQUdQNXVCOztRQUNILGNXN0RBaUM7UVg4RG1DLHFCQUZoQ2pDO1FBRUg7dUJBQ007SUF4RUssU0E4RVgybUQsc0JBQXNCQyxJQUFLLE9BQUxBLEVBQU87SUE5RWxCLFNBZ0hYQyxzQkFBc0JEO01McEkzQixVS3FJWSxtQ0FEZUEsSUFFRjtJQWxIVCxTQW9IWEUsc0JBQXNCenFCLElBQUk3eEI7TUFDNUIsU0FBSUosS0FBSzI4QztRQUNQLE9BRE9BO3VCQURlMXFCO3lFQUtpRDtNQUp6RSxTQUQ0Qjd4QjtRQWN4QjtjQWR3QkE7U0FjeEIsS0Fkd0JBO1NBY3hCLEtBZHdCQTtTQWN4QixLQWR3QkE7OztTQWVoQixVQWZnQkE7UUFjbkI7O01BTEwsR0FUd0JBLFFBVW9CO01BRU47TUFBL0IseUNBS3VDO0lBcklyQyxTQW1KWHc4QyxvQkFBb0JDLFFBQVFDO01BQ0ksSUFiRUMsVUFhRixzQkFESkQ7TUFYOUIsR0FEb0NDO1FBTWhDLE1BTmdDQSxhQU1oQyxLQURHdmtELHFCQUNIOzs7VUFDRTtZQUFNLGdDQURSekgsRUFDZ0MsaUJBRjdCeUgsRUFDSHpIO1lBQ1EsVUFFVSxJQUFQNEMsYUFBTyxtQkFHQWtwRCxjQUhQbHBEO1lBRkgsU0FEUjVDOzs7UUFIQTtxQkFTa0I4ckQsYUFDaUQ7SUFwSjFELFNBdUpYRyxnQkFBZ0JIO01BQ1UsMkJBRFZBLFFBQ1Usa0NBQXNCO0lBeEpyQyxTQXVLWEksd0JBQXdCSDtNQUNOLElBZEVDLFVBY0Ysc0JBRE1EO01BWjFCLEdBRHNCQztRQUtWLElBREx2a0QsRUFKZXVrRCxhQUtWLHNCQURMdmtELHFCQUNLOztjQUNSekg7VUFDRTtZQUFNLGdDQURSQSxFQUNnQyxpQkFIN0J5SCxFQUVIekg7WUFDUSxVQUVVLElBQVA0QyxhQUFPLG1CQUpkb0QsUUFJT3BEO1lBRkgsU0FEUjVDOzs7UUFLQSxnQkFOSWdHO01BRkwscUNBV3NEO0lBeEs1QyxTQTBLWG1tRCx3QkFFaUJ4dUM7TUFGUyxhQUVUQSwwQkFBZTtJQTVLckIsU0E4S1h5dUMseUJBQ2V6dUMsT0FEWSxhQUNaQSxtQkFDWTtJQWhMaEIsU0F5TFgwdUMsd0JBRWUxdUM7TUFGVyxhQUVYQSxzREFNZDtJQWpNVSxTQW1NWDJ1Qyx1QkFHZTN1QztNTDFOcEIsU0swTm9CQTtPQUFLLFVBQUxBO01BRG9CLFFBQ0Q7SUF0TXZCLFNBd01YNHVDLGdCQUFnQlI7TUFPWixnQ0FQWUE7TUFPWjtRQUdGLDJCQURLQztRQUltQjs7OztZQUVIO29DQU5oQkE7YUFDYTs7WUFLRzt5QkFOaEJBO01BREcsUUFVQztJQTFOQSxTQTROWFEsNkJBQTZCQztNQUMvQiwwQkFEK0JBLE9BQ0o7SUE3TmQsU0F3T1hDLHFCQUFxQmpCLElBQUssT0FBTEEsYUFBb0I7SUF4TzlCLFNBbVBYa0I7TUFBMkMsaUVBQXNCO0lBblB0RCxTQXdQUEMsaUJBQWlCQztNQUN2QjtRQUFtQjtzQkF6UGpCeEM7U0F5UGlCLGdCQURJd0MsR0FDbkJDO1NBRVUsd0JBM1BaekMsU0F5UEV5QyxhQUNBQztTQUNVLFNBQVZ6aEQ7UUFBVTtvQkFDeUI7SUE1UDFCLFNBZ1FYMGhELFNBQ0Vub0QsR0FDSiwwQkFESUEsU0FDc0M7SUFsUTdCLFNBb1FYb29ELFlBQVlwb0QsR0FDSCxJQUFQd0ssS0FBTyxTQURHeEssR0FFTCxPQURMd0ssT0FDOEI7SUF0UXJCLFNBd1FYNjlDLGNBQWNyb0QsR0FDTCxJQUFQd0ssS0FBTyxTQURLeEssR0FFUCxPQURMd0ssT0FDaUM7SUExUXhCLElBK1FYODlDLE9BL1FXO2FBK1JYQywrQkFBbUN2NUIsSUFBSWs0QjtNQUNILHFCQUREbDRCO01BQ3JDO01BQ0Esb0JXdlJFOXNCLE9YcVJ1Q2dsRDtNQUNILElBRWxDc0IsT0FBUztTQUFUQTtRQUVvQixhQUZwQkE7UUFFRixjQUFjLGlCQXJCZEY7TUFxQmlDLHFCVzFSakNwbUQsT1gyUlU7SUFyU0MsSUF1U1h1bUQsOEJBUkFGO0lBL1JXLFNBeVNYRywrQkFBK0JWO01BQUssZ0NBQUxBLEdBQUssUUFBZ0M7SUF6U3pELElBMlNYVztJQTNTVyxTQStVWEMsMEJBQTBCNTVCLElBQUk2NUI7TUFDaEM7UUE1QkE7VUFLTTtXQUZBM0I7WUF3QjBCMkIsZ0JBcEM5QkYsZ0JBZ0JJO1VBQXdCLEtBRXZCO1VBQ0w7WUFDRTs2QkF4QkZGLDhCQXdDMEJ6NUIsSUF4QnRCazRCOztnQkFTQzRCOztZQUNrQjs7YUFDaUIsaUJBYWQ5NUI7WUFieEI7WUFDQSxvQld6VEY5c0IsT1g2U0lnbEQ7WUFVbUIsU0FJbkIsWUFMQzRCO1lBSUg7WUFFQSxvQlc1VEY1bUQsT1h1VE02bUQ7WUFBaUIsU0FNckIsY1c3VEY3bUQ7VVgrU0k7OztvQ0FYTjttQkE0Qk07UUFVSjsyQkFBRTtJQU1KOztNQVhFMG1EO0lBV0Ysb0JMOVdIO0lLOFdHLG9CTDlXSDtJSzhXRztNTDlXSDtJSzhXRzs7O09BaExFdEI7T0FJQUM7T0FXQUM7T0FVQUM7T0EvRUFYO0lBc09GLG9CTDlXSDtJSzhXRyxvQkw5V0g7SUs4V0c7OztPQXJTRVA7T0FsQkFWO09BdUJBVztPQVFBRTtPQXFGQVU7T0E0RkFVO3NCTHZRTDs7T0s0UVNDO09BOU5KcEM7T0FvREFnQjs7T0FxRUFLO09Bb0JBSztPQXdIQWtCO09BVUFHO09BakdBaEI7T0FvQkFDOztPQVlBRTs7OztPQTRCQU87T0FJQUM7SUFrRkY7YXNDN1ZFVyxRQUFNem1ELFNBQU0sT0FBTkEsQ0FBTzthQUNiMG1ELEtBQUs1cEQsRUFBRVcsRUFBRUMsR0FBSSxrQkFBUlosRUFBSVksRUFBRkQsRUFBVzthQUNsQmtwRCxPQUFPejZDLEVBQUVsUCxHQUFRLHNCQUFWa1AsRUFBRWxQLEVBQWE7Ozs7SUFJakI7O1FBQTZCO1VBQ2QsSUFBUHl2QjtVQUFZLHFDQUEwQixZQUF0Q0E7UUFDVixRQUFJO0lBRkYsU0FJTG02QixRQUFVQyxVQUF3QkM7TUFDcEMsU0FBSUM7UUFDRjtVQUFJLG9CQUZNRixhQUdSO2NBRGtCL2dEOztVQUNULCtEQURTQTtVQUNULCtCQUFMdStDO1VBQUssVUFDMEM7TUFIdkQ7UUFLTSxJQUNKNzZDLE9BREksV0FOOEJzOUM7WUFReEJFOztRQUNNLElBQVZDLFFBQVU7UUFDZDttQ0FGUUQsU0FDSkM7UUFDSixNQUZRRDtNQURBO2FBQVZ4OUMsTUFJZ0Q7SUFmM0Msa0JBTkxpOUMsUUFDQUMsS0FDQUMsT0FRQUM7SUFKSzthQ2lETE0sV0FBV2xuRDtNQUNKLG9DQUFMOHNCO01BQ0osbUJBRmE5c0I7TUFDSixTQUFMOHNCO01BRUosbUJBSGE5c0I7TUFDSixTQUFMOHNCO01BR0osbUJBSmE5c0I7TUFDSixTQUFMOHNCO01BSUosbUJBTGE5c0I7TUFNYixRQU5hQTtNQUNKO09BS1QsS0FMSThzQjtPQU1tQjtZQU5uQkE7TUFPSixtQkFSYTlzQixRQU9UeEI7TUFOSyxTQUFMc3VCO01BUUosbUJBVGE5c0IsUUFPVHhCO01BTkssU0FBTHN1QjtNQVNKLG1CQVZhOXNCLFFBT1R4QjtNQUlKLFFBWGF3QjtNQUNKO09BVVQsS0FWSThzQjtPQVdtQjtZQVhuQkE7TUFZSixtQkFiYTlzQixRQVlUdkI7TUFYSyxTQUFMcXVCO01BYUosbUJBZGE5c0IsUUFZVHZCO01BWEssU0FBTHF1QjtNQWNKLG1CQWZhOXNCLFFBWVR2QjtNQVhLLFNBQUxxdUI7TUFlSixtQkFoQmE5c0IsUUFZVHZCO01BWEssU0FBTHF1QjtNQWdCSixtQkFqQmE5c0IsUUFZVHZCO01BWEssU0FBTHF1QjtNQWlCSixtQkFsQmE5c0IsUUFZVHZCO01BT0osUUFuQmF1QjtNQUNKLFNBQUw4c0I7TUFtQkosbUJBcEJhOXNCO01BQ0osU0FBTDhzQjtNQW9CSixtQkFyQmE5c0I7TUFDSixTQUFMOHNCO01Bb0JKLDBCQXJCYTlzQixhQXNCK0I7YUFHMUNtbkQ7TUFDa0I7Ozs7O01BQ0gsUUFEWkcsS0FBU0YsS0FBTEMsUUFDNEM7YUFtQm5ERSxhQUFhenFELEdBRWYsWUFDVzthQUdUMHFELGFBQWFubkQsR0FBSSxpQkFBVTt5QkF3QkMsUUFBRTt5QkFERixRQUFFO3lCQURSLFFBQUk7eUJBREEsUUFBSTtRQUYxQm9uRCxnQ0FDc0IsUUFBSTthQVcxQjk3QixNQUNEKzdCLGNBQ0N0K0IsSUFDRnUrQjtNQUNBLEdBRkV2K0I7T0FBaUIsUUFBakJBLHNCQUFpQkM7O1dBQWpCdStCLGUvQnpESXhwRDtNK0IyRE4sa0NBSENzcEQsY0FDQ0UsZUFDRkQsUUFDNEM7Z0JBaEIxQ0YsYUFZQTk3Qjt3QjVDM0pUOzs7OztPNEN3RUt1N0I7T0F5QkFDOzJCNUNqR0w7OztPNENzSEtJO09BTUFDOzs7YUNsR0FLLE9BQU9yc0Q7TUFDVCx1QkFEU0EsTUFDVCxzQkFEU0EsS0FDOEI7YUFFckNzc0QsTUFBTWxwRCxHQUFXLG1DQUFYQSxHQUFxQzthQUUzQ21wRCxVQUFVdnNELElBQUlrRixJQUFJQztNN0MvQnZCOzs7UTZDK0JtQkQ7Ozs7UUFBSUM7OztnQ0FBUm5GLE9BQVFtRixXQUFKRDtPQUdYLHVCQUhPbEYsSUFBSWtGLElBQUlDO01BRWYsd0NBQ3lCO2FBRTVCcW5ELFNBQVNwcEQsRUFBRThCLElBQUlDO01BQWdCLHNDQUF0Qi9CLEdBQUU4QixJQUFJQyxJQUFrRDthQUVqRTRoRCxLQUFLMEY7TUFDRSxJQUFMNW1ELEdBQUssV0FERjRtRDtNQUNFO1FBQ0gsSUFDRi95QyxFQURFLHNCQURGN1Q7WUFHVXlFLDhCQUFLLHNCQUhmekUsSUFHZSxNQUFMeUU7TUFETCxzQkFGTHpFO01BRUssT0FBTDZULENBQ21DO2FBRXJDZ3pDLFNBQU9wbkQsS0FBS3FuRCxRQUNkLHFCQURTcm5ELEtBQUtxbkQsT0FDVzthQUV2QkMsUUFBTXRuRCxNQUFPLDJCQUFQQSxRQUFrQzthQUV4Q3VuRCxTQUFTanJELEdBQ1gsZUFEV0EsMkJBQ2lFO2FBRTFFa3JELE9BQU9wekM7TUFDVCxnQ0FEU0EsR0FDcUI7TUFDakIsaUNBQ2J0YztNQUNFO1FBQWtCLElBQWQ2RSxFQUFjLGdCQUpYeVgsRUFHVHRjO1FBRWdDLHNCQUg1QjRRLE9BQ0o1USxVQUVnQyxTQUQxQjZFO1FBRTRCLHNCQUo5QitMLFFBQ0o1USxtQkFHa0MsU0FGNUI2RTtRQUFjLFNBRHBCN0U7O1FBS0EsNEJBTkk0USxRQU15QjthQUUzQisrQyxTQUFTanJEO01BQ1gsZ0NBRFdBLEdBQ21CO01BQTZCLFNBQ3ZEa3JELE1BQU14b0Q7UUFDUixTQURRQTs7NEJBSU0sUUFKTkE7OzBCQUdNLFFBSE5BOztpQ0FFTSxPQUZOQTtRQUtELGdEQUEwQztNQUduRCxpQ0FDQXBIO01BQ0U7b0JBREZBLE1BRmlDLFdBQU0sZ0JBVDVCMEUsRUFTRjZCO1FBR1A7VUFGRXFLLE9BQ0o1USxFQUNxQixLQUhSLE1BQU0sZ0JBVFIwRSxFQVNGNkI7UUFHUCxTQURGdkc7O1FBR0EsNEJBSkk0USxRQUl5Qjs7Ozs7O09BbEQzQnErQztPQUdBQztPQUVBQztPQUtBQztPQUVBekY7T0FNQTJGO09BR0FFO09BS0FFO09BVUFDOzthaEM1QkVFLGlCQUFzQixpQ0FBMEI7YUFDaERDLE9BQU9DLElBQUlDO01BQ2IsT0FEYUEsU0FBSkQsYUFDVCxTQURhQyxPQUNiLFFBQ2tCO2FBR2hCQyxVQUFVdnJELEVBQUV3ckQ7TUFDZCxpQkFEY0EsMkJBT2QsRUFESUMsa0JBRUo1cEQ7TUFDRTt5QkFUVTdCLEtBUVo2QjtRQUNFLFNBREZBOztRQUNFLElBRUYsaUJBQ2tCLG1CQUxkRCxPQUlKO1FBQ2tCO2NBQWxCdEc7VUFDRTs7ZUFERkE7YUFDRSxXQURGQSxFQUxJc0c7YUFRb0IsbUJBVHBCNnBELE9BUUVsMUI7WUFIRjd4QixVQVYrQixXQVUvQkEsUUFWdUMsNEJBQTFCdkU7WUFZZjtrQkFGRXVFO2FBUFc7YUFEMEM7YUFBMUI7YUFBbkI7YUFhRyx1QkFoQkgxRSxLQWFONFA7WUFHSixpQkFoQlU1UCxLQWFONFA7WUFBSixTQURGdFU7OztRQU1BO2lCQUFVO2FBR1Jvd0QsT0FBS0Y7TUFDTSxJQUFUdC9DLE9BQVMsYUFDYixVQURJQSxPQURHcy9DLE1BRVAsT0FESXQvQyxNQUVFO2FBR0p5L0Msc0JBQXlCLHNDQUFnQjthQUV6Q0MsT0FBSzVyRCxHQUNNLElBQVRrTSxPQUFTLGFBQ2IsT0FESUEsT0FER2xNLEdBRVAsT0FESWtNLE1BRUU7YUFJSjIvQyxLQUFLN3JEO01BQ1AsUUFET0E7TUFDUDtZQURPQTtPQUVNLHdCQUZOQTtPQUVNLE1BRk5BO09BR007eUJBSE5BOztTQUVIOHJEOzs7T0FDUyxTQUFUQztPQUFTLEtBSE4vckQ7TUFNUCxpQkFOT0EsdUJBS0hnc0Q7TUFDSixPQURJQSxRQUVJO2FBR0ZDLE9BQU9qc0QsRUFBRUY7TUFDZjtRQUFRLFdBREtFLEdBQ0wsV0FBSkwsRUFEV0c7UUFDUCxrQkFET0EsbUJBQ1hILElBQ0FEO1FBQytDLE9BRC9DQSxFQUNnRDthQUVsRHdzRCxNQUFJbHNELEVBQUVtc0Q7TWIzRmIsbUJhMkZhQSxvQkFHSCxjQUhDbnNELEVBQUVtc0Q7TUFFSCxrQ0FDYzthQTJCakJDLFNBQVNwc0QsRUFBRW1zRDtNQUNiLE9BRGFBO1FBR1IsZ0JBSFFBO1NBeEJiO1dBQ1MsWUF1QkVuc0QsR0F0QkYsUUFzQkVBO1dBdEJGLEdBc0JJbXNEO1lBakJULFVBTEFodUMsd0JBREFELGNBRUN2ZSxFQUlHMHNEOztZQUtLO3FCQVlGcnNEO2FBWkU7Z0JBQUxxZSx5QkFWSkY7Ozs7Y0FEQUQ7Ozs7O2FBRUN2ZSxFQVlHMnNEO1dBZEMsSUFvQkw1c0QsRUFBSixTQWxCS0MsRUFxQlF3c0Q7V0FIYixrQkFHYUEsdUJBckJSeHNELElBa0JERDtXQUM4QyxPQUQ5Q0E7UUFTRixjQU5TTSxFQUFFbXNEO01BRVgsdUNBSWM7YUFZZEksTUFBTXZzRCxFQUFFbXNEO01BQ1Asa0JBRE9BLFNBRUw7TUFWTDtRQUFzQixZQVFkbnNELEdBUGdELElBQWYsS0FPakNBLGNBTkEsRUFGSmtlLEtBQ0FDLEdBRUksV0FESnhlLEVBTU13c0Q7UUFKTSxvQkFGWnhzRCxJQUNBRCxvQkFLTXlzRDs7UUFGTCxPQUhEenNELEVBUWlCO2FBYW5COHNELE1BQU14c0QsRUFBRW1zRDtNQUNQLGtCQURPQSxZQUVMO01BWEw7UUFBOEI7Z0NBQVIsS0FTZG5zRDtTQVJ5Qyx5QkFBRCxvQkFBUixLQVFoQ0E7U0FQZ0QseUJBQTlCLG9CQUFlLEtBT2pDQTtTQU5BLGdCQUhKa2UsR0FHbUIsY0FGbkJDLEdBQ0FFO1NBRUkseUJBREoxZSxFQU1Nd3NEO1FBSk07O1lBQWIsZUFGQ3hzRCxFQUNBRDtZQUNvRCxlQUEzQixlWHJHN0J6RixVV3lHVWt5RDs7UUFGTCxPQUhEenNELEVBUWlCO0lBS2hCLFNBRkgrc0QsVUFFT3pzRCxFQUFFbXNELE9BQWdFLE9BQXBDLE1BQTlCbnNELEVBQUVtc0QsTUFBZ0U7SUFDdEUsU0FXSE8sUUFBTTFzRCxFQUFFbXNEO01BTFksWUFLZG5zRCxHQUpjLFFBSWRBO01BQW9CLFFBTHhCd1YsbUJBQ0E4YyxvQkFJTTY1QixLQUEyQjtJQVhoQyxTQWFIUSxLQUFLM3NELEdBQUssbUJBQUxBLFdBQXVCO0lBYnpCLFNBZUg0c0QsT0FBTzVzRDtNQUM0QyxPQUFULEtBRG5DQSxjQUU0QyxHQUFULEtBRm5DQSxjQUdGLE9BRkhrZSxLQUNBQyxRQUMrQjtJQWxCOUIsU0FvQkgwdUMsT0FBTzdzRDtNQUM0Qzt5Q0FBRCxvQkFBUixLQURuQ0E7T0FFNEMsa0NBQUQsb0JBQVIsS0FGbkNBO09BRzRDLGtDQUFELG9CQUFSLEtBSG5DQTtNQUlGO2VBSEhrZTtlQUdxQztpQkFBbEIsc0JBRm5CQyxPQUVzQyxzQkFEdENFLFFBQzBEO0lBSXpELFNBRkh5dUMsV0FFTzlzRCxHQUFrQyxPQUFWLE9BQXhCQSxFQUFrQztJQUN0QyxJQU1MdVQsYUFOSzthQXNCTHc1QyxjQUFVLFlBaEJWeDVDLFVBZ0I0QjtJQXRCdkIsU0F1Qkx5NUMsTUFBSWIsT0FBUSxhQWpCWjU0QyxVQWlCSTQ0QyxNQUErQjtJQXZCOUIsU0F3QkxjLFdBQVNkLE9BQVEsZ0JBbEJqQjU0QyxVQWtCUzQ0QyxNQUFvQztJQXhCeEMsU0F5QkxlLFFBQU1mLE9BQVEsYUFuQmQ1NEMsVUFtQk00NEMsTUFBaUM7SUF6QmxDLFNBMEJMZ0IsWUFBVWhCLE9BQVEsaUJBcEJsQjU0QyxVQW9CVTQ0QyxNQUFxQztJQTFCMUMsU0EyQkxpQixRQUFNakIsT0FBUSxhQXJCZDU0QyxVQXFCTTQ0QyxNQUFpQztJQTNCbEMsU0E0QkxrQixRQUFNQyxPQUFRLGVBdEJkLzVDLFVBc0JNKzVDLE1BQWlDO0lBNUJsQyxTQTZCTEMsY0FBVSxZQXZCVmg2QyxVQXVCNEI7SUE3QnZCLFNBOEJMaTZDLGdCQUFZLGNBeEJaajZDLFVBd0JnQztJQTlCM0IsU0ErQkxrNkMsZ0JBQVksY0F6QlpsNkMsVUF5QmdDO0lBL0IzQixTQWdDTG02QyxvQkFBZ0Isa0JBMUJoQm42QyxVQTBCd0M7SUFoQ25DLFNBa0NMbzZDLFlBQVVuQyxNQUFPLGlCQTVCakJqNEMsVUE0QlVpNEMsS0FBbUM7SUFsQ3hDLFNBbUNMb0MsT0FBS3BDLE1BQU8saUJBN0JaajRDLGFBNkJLaTRDLE1BQXlDO0lBbkN6QyxTQW9DTHFDLGlCQUF5QiwyQ0FBZTtJQXBDbkMsU0F3Q0xDLGlCQUFlLGNBbENmdjZDLFVBa0NpQztJQXhDNUIsU0F5Q0x3NkMsVUFBVS90RCxHQUFJLGNBbkNkdVQsVUFtQ1V2VCxFQUEwQjtJQXpDL0I7OztPQXBJSDByRDtPQU1BQztPQUVBQztPQU9BQztPQWVBSztPQThCQUU7T0FrQkFHO09Bc0JBRTtPQU5BRDtPQW9CQUU7T0FFQUM7T0FFQUM7T0FLQUM7T0FNQUM7S0FHRzs7T0FtQ0xjO09BREFEO09BRUFFO09BZEFkO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FFO09BQ0FDO09BQ0FDO09BQ0FDOztPQVFBSTtPQUNBQztJQXpDSzthaUN6SkxDLGtCQUFrQmxuQztNQUNwQixTQURvQkEscUJBQ3BCLGNBRG9CQSx5QkFFQzthQUVuQm1uQyx1QkFBdUJubkMsR0FDekIsU0FEeUJBLFNBQ3pCLFFBQWtDOztNQU01Qiw0Q0FERm9uQzs7OztNQUVGO1FBQUk7Ozs7O1VBRkZBO0lBR0o7bUNBSElBO0tBR0osY0FKRUM7SUFJRixTQUlFRSxpQkFBZSwwQkFBa0I7SUFKbkMsU0FLRUMscUJBQW1CLE9BSG5CRixhQUc4QjtJQUxoQyxJQU9FRyx5QjlDNURMO0k4Q3FERyxTQWVNQyxjQUFjcnVELEVBQUVMO005Q3BFekIsSThDb0V1QnVaO01BQ3BCO1dBRHNCdlosS0FBRnVaLElBQ0wsT0FES0E7UUFFZix1QkFGZUEsYUFFc0IsT0FGdEJBO1FBR2YsUUFIZUE7aUJBR1E7SUFsQjVCLFNBd1NNbzFDLFNBcFJLM2lDLElBQXNCNGlDO01BQ2pDLEdBRFc1aUMsSUFBUyxRQUFUQSxjQUFTQyxhQUFUNGlDLE9BbEJUUDtNQW1CTSxJQUFKcHVELEVBQUksaUJBRHlCMHVEO01BQ3pCLEdBREdDO09BRWU7MEJBZnhCSjtRQWV3QixrQkFmeEJBLHFCMUJqQ0F4aUQsaUIwQmlDQXdpRDtRQWVFL0MsS0FBc0I7O1dBQXRCQTtNQUM4QywyQkFGOUN4ckQsS0FDQXdyRCxLQURBeHJELEVBRWtFO0lBdkJ0RSxTQXlCRTR1RCxRQUFNOW5DO01BQ1IsYUFEUUE7TUFDUixhQURRQSxTQUNXLE9BRFhBLCtCQUlMO0lBN0JILFNBK0JFK25DLFFBQU0vbkM7TUFDUixJQUFJempCLElBREl5akI7TUFHRyxRQUhIQSxnQkFDSnpqQixRQUVPLElBSEh5akI7UUFLSCxTQUVzQyxzQkFBcEIsSUFQZkEsU0FPbUM7TUFIekMsZUFKTUEsRUFRTDtJQXZDSCxTQXlDRWdvQztNQUFrQjs7U0FFWmpPO1NBQUtockI7U0FBTTdvQjtTQVdYM1AsVUFYQXdqRCxJQUFLaHJCLEtBQU03b0I7Y0FXWDNQO2lCQVhXMlA7Ozs7YUFHTCtoRDthQUFLMzRCO2FBQU00NEI7YUFDWHJ2RCxLQURBb3ZELE1BQUszNEIsT0FBTTQ0QjtZQUlDLFVBSFpydkQ7K0JBRFdxdkQ7O2lCQVFqQjN4RDtNQVpHLFFBY047SUF4REwsU0EwREU0eEQsT0FBS3AvQztNQUFJLFNBQUpBLFFBQUksS0FBSkEsUUFBb0IsV0FqQnpCaS9DLGdCQWlCS2ovQztNQUFvQixVQUFwQkEsdUJBQXNEO0lBMUQ3RCxTQTRERXEvQyxTQUFPcG9DLEdBQUksT0FBSkEsSUFBVTtJQTVEbkIsU0E4REVxb0MsbUJBQW1CQyxTQUFTQyxRQUFRQyxNQUFNQztNQUM1QzthQUQ0Q0E7T0FFM0IsMEJBRGJDO09BQ2EsS0FGcUJGO09BRXJCOztZQWdCakJ6dEQ7O1FBQ0U7VUFBYyw0QkFuQnNCeXRELE1Ba0J0Q3p0RDtVQWZ3Qjs7Y0FPUDtlQUxQZy9DO2VBQUtockI7ZUFBTTdvQjtlQUNYMGlELE9BTm9CTCxnQkFLcEJ4TyxJQUFLaHJCO2VBS0UsZ0JBVkl1NUIsU0FLWHZPO2VBTVEsdUJBVGQ0TyxXQVFNRTtjQUNRLEdBRUxDO2VBQVEsV0FQWEY7O2VBTU8saUJBWjJCSCxNQVVsQ0ksa0JBSkFEO2NBU0osaUJBYkZELFdBUU1FLGtCQUpBRDtjQUlPLFNBTEkxaUQ7O3FCQWFyQm5MOzs7O01BR0EsR0FyQjhCd3REO1FBc0I1QixTQXJCRUcsY0FxQkY7OztVQUNFO1lBQU0sSUFFQ0ssUUFGRCxpQkFyQk5KLFdBb0JGbjBEO1lBQ1EsR0FFQ3UwRCxRQUFRO1lBRlQsU0FEUnYwRDs7Ozs7Z0JBdEI0Qit6RDtNQUZqQixXQTRCUDtJQXhGTixTQTBGRVMsU0FBT1YsU0FBU3RvQztNQUNsQjthQURrQkE7T0FDbEIsTUFBSXdvQztPQUFKLE1BQ0lTO09BREosS0FFSVA7TUFGSjtRQUljLHlCQUZWQSxTQUdnQiw4QkFORjFvQztRQU1FLE9BRGR5b0M7UUFHZSxxQ0FSWkgsU0FBU3RvQyxHQU1adW9DLFFBTEZDLE1BSUVDO01BOUJrQixXQWtDckI7SUFuR0gsU0FxR0VTLFFBQUt4d0QsRUFBRXNuQjtNQUNULFNBQVFtcEM7UTlDM0pYO1E4QzJKdUI7O2dCQUdYcFAsZUFBS2hyQixnQkFBTTdvQjtZQUNkLFdBTEN4TixFQUlFcWhELElBQUtockI7d0JBQU03b0I7O1VBRGQsU0FFMEI7TUFDakIsSUFBWGtqRCxTQUFXLGtCQU5OcHBDO01BTU0sT0FBWG9wQyxTQUNpQix1QkFQWnBwQztNQU9vQztRQUczQyxNQVZPQSxLQVVQLEtBRElsUCxxQkFDSjs7O1VBQ0U7c0JBQVUsaUJBRlJBLEVBQ0p0YztZQUNFLFNBREZBOzs7WUFHQSxTQVBFNDBELFNBT0YsVUFBcUIsdUJBYmRwcEM7UUFjSztZQUFUcUk7O1FBQVMsR0FSVitnQyxlQVFDL2dDO1FBQ0gsdUJBZk9ySTtRQWVQLE1BREdxSSxJQUVNO0lBckhYLFNBdUhNZ2hDLDBCQUEwQjN3RCxFQUFFc25CLEVBQUV4ckI7Ozs7VUFPcEI7V0FETnVsRDtXQUFLaHJCO1dBQU03b0I7V0FDTCxpQkFQZ0J4TixFQU10QnFoRCxJQUFLaHJCO1VBQ0M7Z0JBSUxPOzs7O2FBRVEsaUJBYmV0UCxLQUFFeHJCO1lBYUMsWUFGMUI4NkI7cUNBTFVwcEI7O1VBR2IsT0FUMEI4WjtVQU9sQixXQURLOVo7O1FBSmpCOztrQkFDVyxpQkFIbUI4WixLQUFFeHJCO0lBdkhwQyxTQTJJRTgwRCxtQkFBbUI1d0QsRUFBRXNuQjtNQUN2QixNQUR1QkEsS0FFUiwyQkFGUUE7TUFFUixPQUFYb3BDLFNBQ2lCLHVCQUhFcHBDO01BR3NCO2lCQUZ6Q2xQOztjQUlGdGM7VUFDRTtzQ0FOaUJrRSxFQUFFc25CLEVBS3JCeHJCLElBQ3dDLGlCQU5uQndyQixLQUtyQnhyQjtZQUNFLFNBREZBOzs7UUFHQSxhQU5FNDBELFNBTUYsVUFBcUIsdUJBUkFwcEM7UUFTVDtZQUFUcUk7O1FBQVMsR0FQVitnQyxTQXZDZ0IsTUE4Q2YvZ0M7UUFDSCx1QkFWcUJySTtRQVVyQixNQURHcUksSUFFTTtJQXRKWCxTQXdKRWtoQyxPQUFLN3dELEVBQUVzbkIsRUFBRWpYO01BQ1gsU0FBUW9nRCxVQUFVM3VELEVBQUVvRDtZQUFGNHJELE1BQUUxckQ7UUFDbEI7YUFEZ0IwckQ7WUFLRzthQURaelAsSUFKU3lQO2FBSUp6NkIsS0FKSXk2QjthQUlFdGpELEtBSkZzakQ7YUFLRyxrQkFOZDl3RCxFQUtFcWhELElBQUtockIsS0FKTWp4QjthQUFGMHJELElBSUV0akQ7YUFKQXBJOztVQUdkLE9BSGNBLE9BS2tCO01BQ3ZCLElBQVhzckQsU0FBVyxrQkFQTnBwQztNQU9NLE9BQVhvcEMsU0FDaUIsdUJBUlpwcEM7TUFRb0M7WUFFdkNsUCxFQVZHa1AsS0FXSHBpQixRQVhLbUwsV0FVTCtIOztjQUVKdGM7VUFDRTtxQkFGRW9KO1lBRU0sb0JBQVUsaUJBSGhCa1QsRUFFSnRjO1lBQ0UsU0FERkE7OztRQUdBLE9BUkU0MEQsU0FRbUIsdUJBZmRwcEM7UUFlc0MsU0FKekNwaUI7UUFNUTtZQUFUeXFCOztRQUFTLEdBVlYrZ0MsZUFVQy9nQztRQUNILHVCQWxCT3JJO1FBa0JQLE1BREdxSSxJQUVNO0lBM0tYLFNBb0xNb2hDOzs7O1VBRVU7Ozs7bUJBQVRydUM7O1FBREk7SUFyTFgsU0F3TEVzdUMsTUFBTTFwQztNQUNSO1lBRFFBO09BQ1I7T0FDRTs7bUJBQXFCbUMsRUFBRTNuQixHQUFlLGFBQWpCMm5CLEVBQWlCLGdCQUFmM25CLEdBQWtDO09BQy9DLHFCQUZSbXZEO09BRVEsS0FISjNwQztNQUlSO2lCQUNPeGxCO1VBQ0s7NkJBRExBO1dBRVUsc0JBSmJvdkQsTUFHSTl1RDtVQUNKLGlCQUpBOHVELE1BR0k5dUQ7VUFDSixRQUEwQjs7TUFIOUIsVUFKUWtsQixxQkFDSjJwQyxJQUVBQyxNQVN3QjtJQXBNNUIsU0F3TUVDLFNBQU9qbEM7TUFHVCxJQUFJa2xDLFNBSEtsbEM7TUFHVCxTQUVRM1EsSUFBSXpmLEVBQUV1MUQ7WUFBRmh2RCxNQUFFaXZEO1FBQVU7YUFBVkE7Z0JBS0pqUSxJQUxJaVEsVUFLQ2o3QixLQUxEaTdCLFVBS085akQsS0FMUDhqRDtZQU1lLGFBRG5CalEsSUFBS2hyQixxQjlDdlFsQixPOENrUVc5YSxJQUFJbFosSUFLU21MO1VBSGYsR0FGTW5MLFFBRlIrdUQsb0JBS087VUFDUzttQ0FOaEJBLFNBRVEvdUQ7V0FJUSxJQUpSQTs7V0FBRWl2RDttQkFNMEI7TUFSeEM7NEI5Q2hRSCxPOENrUVcvMUMsb0JBUUc7SUFyTlgsU0F1TkVpMkMsWUFBWS9uQztNQUFnQixrQkFBaEJBO01BQWdCLG9COUM1UWpDO004QzRRaUMsc0I5QzVRakMsT3NCbUNTN2Isc0J3QnlPa0M7SUF2TnhDLFNBeU5FNmpELGNBQWNob0M7TUFBZ0Isa0JBQWhCQTtNQUFnQixvQjlDOVFuQztNOEM4UW1DLHNCOUM5UW5DLE9zQm1DUzdiLHNCd0IyT29DO0lBek4xQztlQTZTTThqRCxVQUFVcHFDLEVBQUUrNUI7UUFDZCxTQURZLzVCO1FBQ1osdUJBRFlBLEtBQUUrNUIsV0FDb0M7ZUFFaER6dkIsSUFBSXRLLEVBQUUrNUIsSUFBSWhyQjtRQUNKO3FCQURGL08sRUFBRSs1QjtTQUUwQixVQUYxQkEsSUFBSWhyQixLQUVzQixpQkFGNUIvTyxLQUNGeHJCO1FBRUosaUJBSE13ckIsS0FDRnhyQixZQUNBNjFEO1FBQ0osT0FITXJxQztRQUNFLFNBREZBO1FBR04sWUFFMkMsU0FSekNvcUMsVUFHSXBxQyxPQUt1RDtlQWUzRHNMLE9BQU90TCxFQUFFKzVCO1FBQ0g7cUJBREMvNUIsRUFBRSs1QjtTQUVpQixxQkFGbkIvNUIsS0FiYXhyQjs7Ozs7Z0JBR1RpN0IsT0FBR3ZwQjtZQUNULG1CQURNdXBCLEVBVUZzcUI7Y0FSRixPQVFBLzVCO2NBUkE7a0NBRk85Wjt3QkFLQyxpQkFLUjhaLEtBYmF4ckIsWUFHTjBSOzs7VUFEWixTQWFrQztlQVFwQzhCLEtBQUtnWSxFQUFFKzVCO1FBQ0ssbUJBRFAvNUIsRUFBRSs1QixLQUNILHVCQURDLzVCO1FBQ0Q7Y0FFS3NxQyxZQUFTMTZCLFlBQVMyNkI7VUFDdEIsbUJBSkV4USxJQUdFdVEsSUFDZ0IsT0FEUDE2QjtVQUVoQixHQUZ5QjI2QjtnQkFJZEMsR0FKY0QsU0FJTDE2QixHQUpLMDZCLFNBSUlFLE1BSkpGO1lBS2xCLG1CQVJGeFEsSUFPTXlRLElBQ2dCLE9BRFAzNkI7WUFFaEIsR0FGeUI0NkI7a0JBSWRDLEdBSmNELFNBSUxFLEdBSktGLFNBSUlHLE1BSkpIO2NBS2xCLG1CQVpOMVEsSUFXVTJRLElBQ2dCLE9BRFBDO3dCQUFTQzs7O3NCQWQxQm43QixXQUFHVixjQUFNN29CO2tCQUNiLG1CQUVFNnpDLElBSEV0cUIsR0FDZSxPQURaVjs0QkFBTTdvQjs7Z0JBRGhCO1lBY2U7VUFKSjtRQUpKLGVBVWtEO2VBUTNEa25CLFNBQVNwTixFQUFFKzVCO1FBQ0MsbUJBREgvNUIsRUFBRSs1QixLQUNQLHVCQURLLzVCO1FBQ0w7Y0FFS3NxQyxZQUFTMTZCLFlBQVMyNkI7VUFDdEIsbUJBSk14USxJQUdGdVEsSUFDZ0IsVUFEUDE2QjtVQUVoQixHQUZ5QjI2QjtnQkFJZEMsR0FKY0QsU0FJTDE2QixHQUpLMDZCLFNBSUlFLE1BSkpGO1lBS2xCLG1CQVJFeFEsSUFPRXlRLElBQ2dCLFVBRFAzNkI7WUFFaEIsR0FGeUI0NkI7a0JBSWRDLEdBSmNELFNBSUxFLEdBSktGLFNBSUlHLE1BSkpIO2NBS2xCLG1CQVpGMVEsSUFXTTJRLElBQ2dCLFVBRFBDO3dCQUFTQzs7O3NCQWQxQm43QixXQUFHVixjQUFNN29CO2tCQUNiLG1CQUVNNnpDLElBSEZ0cUIsR0FDZSxVQURaVjs0QkFBTTdvQjs7Z0JBRGhCO1lBY2U7VUFKSjtRQUpKLFFBVTJEO2VBRXBFMmtELFNBQVM3cUMsRUFBRSs1QjtRQUNiLFNBQVErUTtVOUN0YWY7VThDc2FnQzs7a0JBR2RyN0IsYUFBUTNlLGFBQUc1SztjQUNmLG1CQURJdXBCLEVBSkVzcUIsS0FNQyxVQUZLanBDLEVBRUwsZUFGUTVLOzs7WUFEbEIsU0FJd0I7UUFDTCxtQkFSWjhaLEVBQUUrNUI7UUFRRSx1Q0FSSi81QixxQkFRNEI7ZUFVckMrcUMsUUFBUS9xQyxFQUFFKzVCLElBQUlockI7UUFDUjtxQkFERS9PLEVBQUUrNUI7U0FFSix5QkFGRS81QixLQUNOeHJCO2VBQ0E4Yzs7O2dCQVBTbWUsV0FBR3ZwQjtZQUNULHFCQURNdXBCLEVBS0RzcUIsZ0JBTEk3ekM7WUFFUCxXQUdHNnpDO1lBSEgsV0FHT2hyQjs7Ozs7WUFJZCxpQkFKUS9PLEtBQ054ckIsZUFEUXVsRCxJQUFJaHJCLEtBRVp6ZDtZQUVGLE9BSlEwTztZQUlSLFNBSlFBO1lBSVIsUUFFMkMsZ0JBM0YzQ29xQyxVQXFGUXBxQztZQUlSOzs7VUFyQnVCLFlBd0J0QjtlQUVEcUwsSUFBSXJMLEVBQUUrNUI7UUFNYzt3QkFOaEIvNUIsRUFBRSs1QjtTQU1NLHlCQU5SLzVCOztRQUNrQjs7WUFJcEIsSUFET3lQLFdBQUd2cEIsY0FDVixxQkFET3VwQixFQUpIc3FCO1lBS0osUUFGQTtZQUVBLFVBRFU3ekM7O1VBRFYsU0FHa0M7ZUFFcENpb0IsUUFBUXZKLElBQUlwd0I7UUFDZDs7bUJBQVMscUNBRENvd0IsSUFDSzZLLEVBQUU3MkIsRUFBa0I7aUJBRHJCcEUsRUFDdUI7ZUFFbkN3MkQsWUFBWXBtQyxJQUFJcHdCO1FBQ2xCOzttQkFBUyx5Q0FES293QixJQUNDNkssRUFBRTcyQixFQUFzQjtpQkFEckJwRSxFQUN1QjtlQUV2QzQ1QixPQUFPNTVCLEdBQ0MsSUFBTm93QixJQUFNLGVBQ1YsWUFESUEsSUFES3B3QixHQUVULE9BRElvd0IsR0FFRDs7Y0FwSEQraUM7Y0EvUUpHO2NBTUFDO2NBMkJBSTtjQXNQSTc5QjtjQW9CQWdCO2NBVUF0akI7Y0FvQkFvbEI7Y0FjQXk5QjtjQWtCQUU7Y0FTQTEvQjtjQXRTSjY5QjtjQXNDQUk7Y0FhQUM7Y0E1RkFuQjtjQTRIQXNCO2NBZ0JBRztjQWVBSztjQUVBQztjQTBMSWg4QjtjQUdBNjhCO2NBR0E1OEI7SUF6Wk47TTlDckRILEk4Q2llYXJzQjtlQUNBNk8sS0FBTTh6QyxLQUFZcnJELEdBQUksdUJBQUpBLEVBQVk7OzZCQUQ5QjBJLE1BQ0E2TztPQWpLUjhmO09BQ0F5RTtPQUNBODFCO09BQ0EzZ0M7T0FDQWdCO09BQ0F0akI7T0FDQW9sQjtPQUNBeTlCO09BQ0FFO09BQ0ExL0I7T0FDQXJ2QjtPQUNBc3REO09BQ0F4bkQ7T0FDQXNDO09BQ0FzbEQ7T0FDQWo4QztPQUNBeThDO09BQ0FDO09BQ0FoOEI7T0FDQTY4Qjs7ZUFnSkk3bUQsT0FBTyttRCxJQUFLLDRCQUFMQSxHQUE0QjtlQUNuQzk4QixPQUFPNTVCO1FBQ0MsSUFBTm93QixJQUFNLFdBQ1YsV0FuSkZvbUMsWUFrSk1wbUMsSUFES3B3QixHQUVULE9BRElvd0IsR0FFRDs7Y0FKRHpnQjtjQW5LSnVzQjtjQUNBeUU7Y0FDQTgxQjtjQUNBM2dDO2NBQ0FnQjtjQUNBdGpCO2NBQ0FvbEI7Y0FDQXk5QjtjQUNBRTtjQUNBMS9CO2NBQ0FydkI7Y0FDQXN0RDtjQUNBeG5EO2NBQ0FzQztjQUNBc2xEO2NBQ0FqOEM7Y0FDQXk4QztjQUNBQztjQUNBaDhCO2NBQ0E2OEI7Y0FpSkk1OEI7SUFoYk4sU0E2YkV1bkIsT0FBS3Q4QyxHQUFJLDBCQUFKQSxFQUFnQztJQTdidkMsU0E4YkU4eEQsV0FBVzkzQyxHQUFHQyxHQUFHamEsR0FBSSxpQkFBVmdhLEdBQUdDLEtBQUdqYSxFQUErQjtJQTlibEQsU0ErYkUreEQsWUFBWTFHLEtBQUtyckQsR0FBSSx3QkFBVHFyRCxLQUFLcnJELEVBQW1DO0lBL2J0RCxTQWljRSt3RCxVQUFVcHFDLEVBQUUrNUI7TUFDZCxZQURZLzVCO2VBRVAsaUJBRk9BLEtBQUUrNUIsUUFBRi81QjtlQUdQLDJDQUFvRDtJQXBjekQsU0FzY0VxckMsTUFBSXJyQyxFQUFFKzVCLElBQUlockI7TUFDSjttQkFERi9PLEVBQUUrNUI7T0FFMEIsVUFGMUJBLElBQUlockIsS0FFc0IsaUJBRjVCL08sS0FDRnhyQjtNQUVKLGlCQUhNd3JCLEtBQ0Z4ckIsWUFDQTYxRDtNQUNKLE9BSE1ycUM7TUFDRSxTQURGQTtNQUdOLFlBRTJDLFNBVnpDb3FDLFVBS0lwcUMsT0FLdUQ7SUEzYzdELFNBMGRFc0wsT0FBT3RMLEVBQUUrNUI7TUFDSCxnQkFEQy81QixFQUFFKzVCLEtBRWlCLHFCQUZuQi81QixLQWJheHJCOzs7Y0FHVGk3QixPQUFHdnBCO1VBQ1Qsc0JBRE11cEIsRUFVRnNxQjtZQVJGLE9BUUEvNUI7WUFSQTtnQ0FGTzlaO3NCQUtDLGlCQUtSOFosS0FiYXhyQixZQUdOMFI7OztRQURaLFNBYWtDO0lBNWR0QyxTQW9lRW9sRCxPQUFLdHJDLEVBQUUrNUI7TUFDSyxtQkFEUC81QixFQUFFKzVCLEtBQ0gsdUJBREMvNUI7TUFDRDtZQUVLc3FDLFlBQVMxNkIsWUFBUzI2QjtRQUN0QixzQkFKRXhRLElBR0V1USxJQUNvQixPQURYMTZCO1FBRWhCLEdBRnlCMjZCO2NBSWRDLEdBSmNELFNBSUwxNkIsR0FKSzA2QixTQUlJRSxNQUpKRjtVQUtsQixzQkFSRnhRLElBT015USxJQUNvQixPQURYMzZCO1VBRWhCLEdBRnlCNDZCO2dCQUlkQyxHQUpjRCxTQUlMRSxHQUpLRixTQUlJRyxNQUpKSDtZQUtsQixzQkFaTjFRLElBV1UyUSxJQUNvQixPQURYQztzQkFBU0M7OztvQkFkMUJuN0IsV0FBR1YsY0FBTTdvQjtnQkFDYixzQkFFRTZ6QyxJQUhFdHFCLEdBQ21CLE9BRGhCVjswQkFBTTdvQjs7Y0FEaEI7VUFjZTtRQUpKO01BSkosZUFVc0Q7SUFoZmpFLFNBd2ZFcWxELFdBQVN2ckMsRUFBRSs1QjtNQUNDLG1CQURILzVCLEVBQUUrNUIsS0FDUCx1QkFESy81QjtNQUNMO1lBRUtzcUMsWUFBUzE2QixZQUFTMjZCO1FBQ3RCLHNCQUpNeFEsSUFHRnVRLElBQ29CLFVBRFgxNkI7UUFFaEIsR0FGeUIyNkI7Y0FJZEMsR0FKY0QsU0FJTDE2QixHQUpLMDZCLFNBSUlFLE1BSkpGO1VBS2xCLHNCQVJFeFEsSUFPRXlRLElBQ29CLFVBRFgzNkI7VUFFaEIsR0FGeUI0NkI7Z0JBSWRDLEdBSmNELFNBSUxFLEdBSktGLFNBSUlHLE1BSkpIO1lBS2xCLHNCQVpGMVEsSUFXTTJRLElBQ29CLFVBRFhDO3NCQUFTQzs7O29CQWQxQm43QixXQUFHVixjQUFNN29CO2dCQUNiLHNCQUVNNnpDLElBSEZ0cUIsR0FDbUIsVUFEaEJWOzBCQUFNN29COztjQURoQjtVQWNlO1FBSko7TUFKSixRQVUrRDtJQXBnQjFFLFNBc2dCRXNsRCxXQUFTeHJDLEVBQUUrNUI7TUFDYixTQUFRK1E7UTlDNWpCWDtROEM0akI0Qjs7Z0JBR2RyN0IsYUFBR1YsZ0JBQU03b0I7WUFDYixzQkFESXVwQixFQUpFc3FCLEtBTUksVUFGSGhyQixLQUVHLGVBRkc3b0I7OztVQURoQixTQUl3QjtNQUNMLG1CQVJaOFosRUFBRSs1QjtNQVFFLHVDQVJKLzVCLHFCQVE0QjtJQTlnQnZDLFNBd2hCRStxQyxRQUFRL3FDLEVBQUUrNUIsSUFBSWhyQjtNQUNSO21CQURFL08sRUFBRSs1QjtPQUVKLHlCQUZFLzVCLEtBQ054ckI7YUFDQThjOzs7Y0FQU21lLFdBQUd2cEI7VUFDVCxzQkFETXVwQixFQUtEc3FCLGdCQUxJN3pDO1VBRVAsV0FHRzZ6QztVQUhILFdBR09ockI7Ozs7O1VBSWQsaUJBSlEvTyxLQUNOeHJCLGVBRFF1bEQsSUFBSWhyQixLQUVaemQ7VUFFRixPQUpRME87VUFJUixTQUpRQTtVQUlSLFFBRTJDLGdCQTdGM0NvcUMsVUF1RlFwcUM7VUFJUjs7O1FBckJ1QixZQXdCdEI7SUEvaEJILFNBaWlCRXlyQyxNQUFJenJDLEVBQUUrNUI7TUFNYztzQkFOaEIvNUIsRUFBRSs1QjtPQU1NLHlCQU5SLzVCOztNQUNrQjs7VUFJcEIsSUFET3lQLFdBQUd2cEIsY0FDVix3QkFET3VwQixFQUpIc3FCO1VBS0osUUFGQTtVQUVBLFVBRFU3ekM7O1FBRFYsU0FHa0M7SUF2aUJ0QyxTQXlpQkV3bEQsVUFBUTltQyxJQUFJcHdCO01BQ2Q7O2lCQUFTLHVDQURDb3dCLElBQ0s2SyxFQUFFNzJCLEVBQWtCO2VBRHJCcEUsRUFDdUI7SUExaUJyQyxTQTRpQkV3MkQsWUFBWXBtQyxJQUFJcHdCO01BQ2xCOztpQkFBUyx5Q0FES293QixJQUNDNkssRUFBRTcyQixFQUFzQjtlQURyQnBFLEVBQ3VCO0lBN2lCekMsU0EraUJFbTNELFNBQU9uM0QsR0FDQyxJQUFOb3dCLElBQU0sZUFDVixZQURJQSxJQURLcHdCLEdBRVQsT0FESW93QixHQUVEO0lBbGpCSCxTQW9qQkVnbkMsUUFBVTVtQyxJQUFzQmhGO01BQ2xDLEdBRFlnRixJQUFTLFFBQVRBLGNBQVNDLGFBQVQ0aUMsT0FsakJWUDtNQW1qQk0sSUFBSnB1RCxFQUFJLGlCQUQwQjhtQjtNQUMxQixHQURJNm5DO09BR0s7MEJBaGpCZko7UUFnakJlLGtCQWhqQmZBLHFCMUJqQ0F4aUQsaUIwQmlDQXdpRDtRQStpQkUvQyxLQUNhOztPQUNWLElBRkhBLFVBRjhCMWtDO01BQzFCO09BS1IsVUFOa0NBLGtCQUM5QjltQjtPQU9LLE9BUnlCOG1CLEtBUXpCLGVBUEw5bUIsS0FDQXdyRDtPQU1LLEtBRkxuN0I7T0FFSyxLQVJ5QnZKO09BUXpCO01BSVQ7dUI5Q3JuQkgsTzhDc2ZLb3FDLFVBeUhFN2dDO01BTUosT0FOSUEsR0FPRjtJQWprQkY7OztPQXdTTW8rQjtPQS9RSkc7T0FNQUM7T0EyQkFJO09BNFlBa0Q7T0E4QkFDO09Bb0JBQztPQWNBQztPQTJCQUM7T0F2RUFuZ0M7T0E4REF5L0I7T0FuYkE3QjtPQXNDQUk7T0FhQUM7T0E1RkFuQjtPQXhEQWI7T0FDQUM7T0EraUJBb0U7T0E1WEFsQztPQWdCQUc7T0FlQUs7T0FFQUM7T0FnVkF1QjtPQUdBVjtPQUdBVzs7O09BbEhBaFc7T0FFQXlWO09BREFEOztJQTliRjthQ2dESVUsWUEvRUsvd0Q7TUFDVCxjQURTQSxNQUNULFVBRFNBO01BRVA7TUFDRixnQ0FIU0EsRUFHRDthQUtOZ3hELFNBQU96eUQsR0FBSSxPQUFKQSxvQkFBNEM7YUFFbkQweUQsMEJBQXdCcnFELEVBQUU0QyxFQUFFQztNQUM5QixjQUQ0QkQsTUFDNUIsVUFENEJBLElBQ04sU0FESTVDLFlBRXhCOzhCQUY0QjZDLFNBRVo7YUFJaEJ5bkQsTUFBSXRxRCxFQUFFNEMsRUFBRWpMO01BQ1YsMEJBRE1xSSxFQUFFNEM7TUFDUixHQURVakwsR0FJRSxJQUFMa1osSUFKR2xaLEtBSUUseUJBSk5xSSxFQUFFNEMsRUFJRGlPO01BREcsMkJBSEo3USxFQUFFNEMsRUFJYzthQUdwQjJuRCxNQUFJdnFELEVBQUU0QztNQUNSLDBCQURNNUMsRUFBRTRDO01BRVIseUJBRk01QyxFQUFFNEMsRUFFRDthQUdMNG5ELFNBQVN4cUQsRUFBRTRDO01BQ2IsMEJBRFc1QyxFQUFFNEM7TUFFYiw4QkFGVzVDLEVBQUU0QyxFQUVEO2FBR1Y2bkQsUUFBTXpxRCxFQUFFNEM7TUFDViwwQkFEUTVDLEVBQUU0QztNQUVWLDJCQUZRNUMsRUFBRTRDLEVBRUQ7YUFLUDhuRCxPQUFLcHFELEdBQUc4QyxHQUFHN0MsR0FBRzhDLEdBQUdqSztNQUVFOzs7UUFGRkE7Ozs7UUFBVGdLOzs7VUFDaUIsU0FEcEI5QyxNQUFZbEgsU0FBVGdLOzs7O1FBQU1DOzs7VUFFSyxTQUZSOUMsTUFBTW5ILFNBQUhpSztRQUlYLGVBSmNqSyxNQUlkLFVBQWUsbUJBSmJrSCxHQUFHOEMsR0FBRzdDLEdBQUc4QyxHQUFHaks7UUFJbUI7TUFEakMsaUNBQ2lDO2FBRXBDdXhELE9BQUtDLEdBQUdod0QsSUFBSUMsSUFBSWxEO01BQ2EsUUFEckJpRCxZQUFJQyxXQUNpQixTQUR4Qit2RCxNQUFPL3ZELFdBQUpEO1FBR0wsVUFIS0EsTUFBSUM7UUFHVCxhQUhLRDtjQUdMOUgsRUFISzhIO1VBS047a0JBTEdnd0QsR0FHRjkzRCxFQUhhNkU7WUFLZCxTQUZDN0U7Ozs7TUFEQSx3Q0FLRjs7TUEyQmUsSUFBZCszRCxZQUFjO2VBWWRDLFVBQVVobkQsRUFBRXdhLEdBQUksZ0JBQUpBLGVBQUZ4YSxnQkFBaUQ7TUFaN0MsSUFjZGk0QztNQWRjLFNBaUJkdDVDLE9BQU8rbUQ7UUFDVDttQkFEU0E7U0FFVCx3QkFESXVCO1FBR007K0JBRk5DLEtBbkJGSDtnQkFzQlMsZUFIUEc7Z0JBTEZqUDs7a0JBWUQ7TUExQmUsU0E0QmQvc0IsTUFBTWxyQjtRQUNSLFNBRFFBLHdCQUNSOzs7VUFDRTs2QkFGTUEsS0FDUmhSLFlBN0JFKzNEO1lBK0JBLGlCQUhNL21ELEtBQ1JoUjtZQUVFLFNBRkZBOzs7UUFJQSxPQW5CRWlwRDtRQW1CRjtnQkFDZTtNQWxDQyxTQXFDZDM3QyxLQUFLcEosRUFBRThNLEVBQUV1RDtRQUNYLFNBRFN2RCxLQUNUO1FBTWlCOzBCQU5LaEwsRUFBRW9OO3VCQUFKN00sTUFBSTZDO21CQUN0QjtxQkFBUSxZQURZcEQsTUFBRk8sSUFDSSxPQURBNkM7cUJBRWhCLGdCQUZjcEQsRUFBRk87cUJBRVo7dUJBQ007O3dCQUFvQixrQkFKM0JyQyxFQUlFRSxFQUhlZ0Y7d0JBR1UsSUFIZDdDOzt3QkFBSTZDOztxQkFFaEIsSUFFSSxJQUpRN0M7OztpQkFEVGdPLEtBT2tDO01BNUM3QixTQStDZC9NLEtBQUt0RCxFQUFFOE07UUFDVCxTQURTQSxLQUNUO1FBTVc7MEJBTldoTDttQi9DdEozQixJK0NzSnlCTzttQkFDbEI7cUJBQVEsWUFEWVAsTUFBRk8sSUFDSTtxQkFDaEIsZ0JBRmNQLEVBQUZPO3FCQUVaO3VCQUNNLElBQUxuQzt1QkFBSyxXQUpQRixFQUlFRTt1QkFBSyxRQUhNbUM7O3FCQUVaLElBRUksSUFKUUE7O3NCQU1jO01BdERsQixTQW1FVjR4RCxhQUFhbjRELEVBQUVnRyxFQUFFb0Q7WUFBSjdDLE1BQUkrQztRQUN2QjtVQUFRLFlBRGF0RCxNQUFGTyxJQUNHLE9BREMrQztVQUVVO3dCQUZadEQsRUFBRk87V0FBSTZNO1dBQUp3Tzs7V0FBSXRZO21CQUVtQztNQXJFMUMsU0F3RWQ4MEIsTUFBTXB0QjtRQUNSLGdCQURRQSxLQUNSO1FBQWlCO3FDL0MvS3RCLE8rQ3lLV21uRDs7c0JBTXFDO01BekUzQixTQW9JZEMsUUFBUXBuRCxFQUFFcW5ELE9BQU8vN0MsRUFBRWtQLEVBQUU4c0M7UUFDVjttQ0FESHRuRCxLQUFhc25EO1NBRVYsd0JBRkh0bkQsS0FBYXNuRDtTQUdkLFlBRkxDO1NBR1NoMEM7UUFDWDthQUZFbXlDLE1BQ1NueUM7WUFHUDthQURFazBDO2NBQ0YsWUFKRi9CO1lBSUUsR0FERStCLFNBSEovQixHQU1vQjtZQUZsQjthQUdjLHdCQUpaK0I7YUFLWSx5QkFMWkE7WUFNSixPQVhBRixXQVNJRyxjQVBKaEM7WUFVQSxPQVhBOEIsU0FTSUcsWUFSSmpDO1lBV0EsV0FkUTJCLE9BVUpLLFlBUEpoQyxHQUhlcDZDO1lBZWYsaUJBSklxOEMsVUFSSmpDLGNBSGlCbHJDO1lBZ0JqQixpQkFoQk14YSxLQUFhc25ELG9CQVVmSTtZQU9KLGlCQWpCTTFuRCxLQUFhc25ELG9CQVdmSztZQUpGLElBVUYsS0FkQWpDLE1BSE0xbEQsU0FpQk4sVUFqQk1BLE9BTUZ5bkQ7WUFZcUM7cUJBbEJuQ3puRDtrQkFvQkpnUztjQUE0QjtnQkF4RWxDO3NCQW9EVWhTO2lCQXBERyx3QkFvREhBO2lCQXBERyxLQW9ESEE7aUJBbkRJLHlCQW1ESkE7aUJBbERBLFdBRk42a0Q7aUJBSFUsWUFBSnJ4RDtpQkFPQyxvQkFKUHF4RDtnQkFJTyxHQUFQaUQsUUFEQUQ7a0JBYU0saUJBaEJOaEQsZ0JBTVd0dkQsTUFBRStOO2tCQUNiO3VCQUpBdWtELFlBR2F2a0Q7c0JBRVIsV0FSTHVoRCxPQU1XdHZEO3dCQUVjLFFBRmRBO3NCQUdELFdBVFZzdkQsT0FNYXZoRDt3QkFJVCxPQVZKdWhELE9BTWF2aEQsRUFOYnVoRCxPQU1XdHZEO3dCQUtRLDBCQVZuQnF5RCxRQUthdGtEO3dCQUtULGlCQVZKc2tELFFBS1dyeUQ7d0JBS1EsSUFBZixJQUxTK04sVUFLVCxJQUxPL04sb0JBQUUrTjs7c0JBT0YsUUFQRUE7OzZCQUhidWtEO3NCQWNtQixTQW1DYjduRDtzQkFsQ04saUJBa0NNQSx1QkFwSVIrbUQ7c0JBaUdxQixTQW1DYi9tRDtzQkFqQ04saUJBaUNNQTs7c0JBL0JVLElBQVpnb0QsVUFBWSxZQWxCaEJIO3NCQW1CQSxPQXRCQWhELFNBcUJJbUQsWUFsQkpIO3NCQWtCZ0IsU0ErQlY3bkQ7c0JBN0JOLGlCQTZCTUEsdUJBL0JGZ29EO3NCQUFZLElBR00sV0F2QnRCSixVQUVBQyxVQXFCc0IsS0E0QmhCN25EO3NCQTVCTixpQkE0Qk1BO29CQTFCUixTQTBCUUEsT0F2REF4TSxNQTZCUixVQXZCRXEwRCxZQWlETTduRDtvQkExQnFDLGVBMEJyQ0E7O2dCQXhCVixnQkF3QlVBO2dCQXBEVixTQXdFTWdTOzs7WUFiQSxXQVBJaFM7WUFzQk47Y0ExQ0o7bUJBb0JVQTtlQXhESSxtQkFBSnNFO3VCQXFDTndiO2dCQUVTLGdCQUZUQSxRQXZESixLQTBFVTlmLEtBMUVWO2dCQU1ZOzJCQU5Vc0QsRUEwRFA0a0Q7b0IvQzFOcEIsSStDZ0t5QjN5RDtvQkFDbEI7c0JBQVEsWUF5REsyeUQsT0ExREszeUQsSUFDSTtzQkFDaEIsa0JBd0RPMnlELEdBMURLM3lEO3NCQUVaO3dCQUNROzZDQXVFTnlLLEtBMUVZc0Q7eUJBMkRsQjttQ0EzRGdCdFU7cUNBMkRacTRELE9BQU85d0MsR0FBRzh4QyxVQUFPLGNBRFZILEdBMURLbDVELEVBMkRMdW5CLEdBQUc4eEMsS0FBeUI7bUNBQW5DaEI7eUJBQUosZ0JBM0RnQjl4RDt5QkE0RFIsbUJBRk00eUQsR0ExREU1eUQ7d0JBNkRXLFFBSnpCMHlELEtBRUVaLFNBQ0E3c0MsRUFDdUIsVUFKekJ5dEMsS0FHRXp0Qzt3QkF6RFEsSUFISTVKOztzQkFFWixJQUVLLElBSk9yYjs7O2dCQTBFVnlLLE9BakJKaW9EO2dCQWlCSWpvRCxPQWpCSmlvRDtnQkFpQklqb0QsT0FqQkppb0Q7Z0JBaUJJam9ELE9BakJKaW9EO2dCQWlCSWpvRCxxQkFqQkppb0Q7O2NBWUcsT2xDaklEenpEO2NrQ2lJQzs7WUE0QkU7VUFBRyxXQXRCVit5RCxTQUdTaDBDLE1BbUJxQixRQW5CckJBO1VBc0JULFdBMUJROHpDLE9BQ1JFLFNBR1NoMEMsSUFKTWpJO1VBMkJmLGlCQXpCQWs4QyxPQUVTajBDLGdCQUpRaUg7VUEyQmpCLFNBR0U7TUFsS1UsU0FxS2RzSyxJQUFJOWtCLEVBQUVzTDtRQUNBLElBQUprUCxFQUFJLGdCQURBbFA7UUFFaUIsZUFGbkJ0TCxFQXJPTndtRCxTQXFPUWw3QyxHQUNKa1AsRUFDcUIsVUFGbkJ4YSxFQUNGd2EsR0FDb0M7TUF2S3hCLFNBMEtkOHRDLFFBQVF0b0QsRUFBRXNMLEVBQUVpOUM7UUFDTjsyQkFESWo5QztTQUVBLGdCQUZGdEwsRUFDTndhO1NBRVMsd0JBSEh4YSxLQUVOc25EO1NBRVMsd0JBSkh0bkQsS0FFTnNuRDtTQUdLLFlBRkx6QztTQUdTNzFEO1FBQ1g7YUFGRTAyRCxNQUNTMTJELEVBQ0ssa0JBUEp1NUQsV0FDVi90QyxFQUNBOHNDO1VBTVUsR0FQVjlzQyxNQU9VLGlCQUpWZ3RDLE9BRVN4NEQ7WUFHSCxtQkFOTjYxRCxPQUdTNzFEO1lBR0g7a0JBQ0NvRTtjQUFPLG1CQUFQQSxFQVZDa1k7Z0JBV1Usa0JBUmxCdTVDLE9BR1M3MUQ7Z0JBS1MsWUFDQSxJQUFMcU4sZUFBSyxPQUFMQTtnQkFESyxJQUVGLElBUFByTjs7WUFHSCxJQU1DLElBVEVBOztVQVVGLFFBVkVBO21CQVlQO01BNUxVLFNBK0xkZ29CLE1BQU1oWCxFQUFFc0w7UUFDVjtpQkFEUXRMO2lCQUFFc0w7MEJBQ09rUCxFQUFFOHNDLE9BQVMsUUFEcEJ0bkQsRUEvUFJ3bUQsU0ErUFVsN0MsR0FDT2tQLEVBQUU4c0MsT0FBUyxPQURsQmg4QyxDQUNtRCxFQUFDO01BaE05QyxTQW1NZDlJLEtBQUt4QyxFQUFFc0w7UUFBSSxlQUFOdEwsRUFBRXNMLFdBQXFCa1AsRUFBRzhzQyxPQUFVLGVBQWUsRUFBQztNQW5NM0MsU0FxTWQxL0IsU0FBUzVuQixFQUFFc0w7UUFDTDsyQkFES0E7U0FFRCxnQkFGRHRMLEVBQ1B3YTtTQUVTLHdCQUhGeGEsS0FFUHNuRDtTQUVTLHdCQUpGdG5ELEtBRVBzbkQ7U0FHSyxZQUZMekM7U0FHUzcxRDtRQUNYO2FBRkUwMkQsTUFDUzEyRCxFQUNLO1VBQ0osR0FQVndyQixNQU9VLGlCQUpWZ3RDLE9BRVN4NEQ7WUFHSCxtQkFOTjYxRCxPQUdTNzFEO1lBR0g7a0JBQ0NvRTtjQUFPLG1CQUFQQSxFQVZFa1k7Z0JBV1MsSUFDVmpQLElBRFUsTUFSbEJ3b0QsT0FHUzcxRDtnQkFLUyxHQUNWcU4sSUFBZSxPQUFmQTtnQkFEVSxJQUVGLElBUFByTjs7WUFHSCxJQU1DLElBVEVBOztVQVVGLFFBVkVBO21CQVlQO01Bdk5VLFNBME5kdzVELFlBQVl4b0QsRUFBRXNMLEVBQUVtOUMsUUFBUUY7UUFDbEI7MkJBRFFqOUM7U0FFSixnQkFGRXRMLEVBQ1Z3YTtTQUVTLHdCQUhDeGEsS0FFVnNuRDtTQUVTLHdCQUpDdG5ELEtBRVZzbkQ7U0FHSyxZQUZMekM7U0FHUzcxRDtRQUNYO2FBRkUwMkQsTUFDUzEyRCxFQUNLLE9BUFF1NUQ7VUFRWixHQVBWL3RDLE1BT1UsaUJBSlZndEMsT0FFU3g0RDtZQUdILG1CQU5ONjFELE9BR1M3MUQ7WUFHSDtrQkFDQ29FO2NBQU8sbUJBQVBBLEVBVktrWSxHQVVpQixrQkFWZm05QyxRQUdkNUQsT0FHUzcxRDtZQUdILElBRUMsSUFMRUE7O1VBTUYsUUFORUE7bUJBUVA7TUF4T1UsU0EyT2Q4MkIsT0FBTzlsQixFQUFFc0w7UUFBSTsyQkFBTnRMLEVBQUVzTCxXQUF5Qjh5QixFQUFFcHZDLEdBQUssYUFBUG92QyxFQUFFcHZDLElBQWlCLE9BQUk7TUEzTzNDLFNBOE9kNjJCLElBQUk3bEIsRUFBRXNMO1FBQUksOEJBQU50TCxFQUFFc0wsV0FBeUI4eUIsRUFBR3B2QyxHQUFNLFFBQUksT0FBTztNQTlPckMsU0FpUGRxMkQsU0FBU3JsRCxFQUFFc0w7UUFDTDsyQkFES0E7U0FFRCxnQkFGRHRMLEVBQ1B3YTtTQUVTLHdCQUhGeGEsS0FFUHNuRDtTQUVTLHdCQUpGdG5ELEtBRVBzbkQ7U0FHSyxZQUZMekM7U0FHUzcxRDtTQUFFb0o7UUFDYjthQUZFc3RELE1BQ1MxMkQsRUFDSyxPQURIb0o7VUFFRCxHQVBWb2lCLE1BT1UsaUJBSlZndEMsT0FFU3g0RDtZQUdILG1CQU5ONjFELE9BR1M3MUQ7WUFHSDtrQkFDQ29FO2NBQU8sbUJBQVBBLEVBVkVrWTtnQkFXUyxrQkFSbEJ1NUMsT0FHUzcxRDtnQkFLUztrQkFDQTs7NkJBQUxxTixJQU5GakU7bUJBTU8sSUFOVHBKOzttQkFBRW9KOztnQkFLTyxJQUVGLElBUFBwSjs7WUFHSCxJQU1DLElBVEVBOztVQVVGLFFBVkVBO21CQVlKO01BblFPLFNBc1FkazFELE1BQU1sa0Q7UUFDUixRQURRQSxnQkFFRyxXQWhWWHNtRCxTQThVUXRtRDtRQUdSLHNCQURJMG9EO1FBREo7U0FFQTtTQUNhOzBDL0NoWGxCLDZCK0M4V1NBO1NBRVMsS0FIVDN4RDtTQUkyQyxLQUozQ0E7U0FJMkMsc0JBSDNDMnhEO1NBRzZCLHNCQUg3QkE7U0FHbUIsc0JBSG5CQTtRQUdFLFVBSkYzeEQsSUFJRSxNQUxFaUosR0FJSjJvRCxzQkFDd0Q7TUEzUTVDO2NBaUJkaHFEO2NBV0F1c0I7Y0FtS0FsVTtjQTFCQThOO2NBc0VBZ0I7Y0F4Q0F0akI7Y0FFQW9sQjtjQTRDQXk5QjtjQUhBeC9CO2NBL0xBcnZCO2NBVkE4RjtjQW1DQTh3QjtjQThMQTgyQjs7OztPQXZRQW1DO09BdkVGQztPQVFBRTtPQU9BQztPQUtBQztPQUtBQztPQWFBRTtPQU5BRDs7O2FDdkNBZ0MsS0FBRy8wRCxHQUFJLE9BQUpBLENBQUs7OztLQThyQkpnNEM7S0E1cUJGZ2Q7YUFpTEZDLFdBQVd6cEMsTUFBTTBwQztNQUNuQixZQURhMXBDLFlBQU0wcEMsYUFDbkIsV0FEbUJBLE1BQU4xcEMsVUFFaUI7UUE0QjVCMnBDO2FBR0FDLGlCQUFpQjVwQyxNQUFNM3JCO01BQUksa0JBQVYyckIsVUFBTTNyQixJQUFJLHNCQUFKQSxHQUE2QzthQUNwRXcxRCxrQkFBa0I3cEMsT0FBUSxrQkFBUkEsWUFBK0I7YUFLakQ4cEMsZUFBZTlwQyxNQUFNd3NCLEtBQUt1ZDtNQUM1QixXQURpQi9wQyxXQUFNd3NCO01BRXZCLGlCQUZpQnhzQixNQUFXK3BDO01BRTVCO2NBQzZCO2FBRzNCQyxjQUFjaHFDLE1BQU0zckI7TUFDbkIsOEJBRG1CQTtNQUNuQixZQUFhLGVBREEyckIsTUFDQSxzQkFETTNyQixVQUNrQzthQUd0RDQxRCxlQUFlanFDLFlBQThCc1U7VUFBUHVELGVBQVJ6RyxnQkFBUjBHO01BQ3hCLGNBRGlCOVgsTUFBTzhYO01BRXhCLGtCQUZpQjlYO01BRWpCOztlQUZpQkEsV0FBOEJzVSxhQUFmbEQ7T0FNZCxrQkFORHBSLFNBSWJ1ckI7TUFFYyxZQUFkMmU7TUFBYyxXQU5EbHFDO01BYlksV0FhWkE7YUFKZmdxQyxjQUllaHFDLE1BQXVCNlg7YUFjdENzeUIsV0FBV25xQyxNQUFNc1UsT0FBUSxzQkFBZHRVLFdBQU1zVSxNQUE4QzthQUcvRDgxQixnQkFBZ0JwcUM7VUFBc0I2WCxlQUFQdkQsZUFBUndEO01BQ3pCLGNBRGtCOVgsTUFBTzhYO01BQ3pCLFdBRGtCOVgsV0FBZXNVO01BL0JKLFdBK0JYdFUsVUFBZXNVO2FBckIvQjAxQixjQXFCZ0JocUMsTUFBc0I2WDthQW9DdEN3eUIsZ0JBQWdCcnFDLE1BQU1zcUM7TWhEaFUzQjs7O1VnRDRWaUIsb0JBNUJJdHFDO1VBNEJKOzs7YUFFSXVxQzthQUNOQzt1QkFBUXIyRCxFQUVaczJEO2dCaERqV1gsR2dEaVdXQTtzQkFBS3gwRCxFQUFMdzBEO2tCQUFtQixxQkFGUHQyRCxFQUVaSyxNQUZZTCxFQUVaczJELFNBQWdELFFBRnBDdDJELEVBRVA4QjtnQkFEQyxVQURNOUI7WUFHUixrQkFsQ002ckIsd0JBOEJBdXFDO1lBSU47VUFMQTtnQkFWVixRQW5CZ0J2cUMsVUFtQmhCO2dCQU1BLFFBekJnQkEsVUF5QmhCOztVQWlDWSxvQkExRElBO1VBMERKO21DQUVIeW5CO21CQW5HVDBpQixXQXVDZ0JucUMsTUE0RFB5bkI7VUFEQyx5QkEzRE16bkI7O1VBZ0VoQixTQWhFZ0JBO1VBZ0VoQjtZQTlFSSxxQkFjWUE7WUFkWjtxQ0FFR3dzQixnQkFBTWp0QztjQVlHeWdCLHdCQVpIemdCO2NBWUd5Z0Isc0JBWlR3c0I7O1lBREM7VUFnSFA7O1VBQVksb0JBbkdHeHNCO1VBbUdIO1lBR1Ysd0JBQWEsa0JBdEdBQSxVQXFHUjBxQztZQUNRLHdCQXRHQTFxQyxNQXNHVDJxQztVQUZJOzs7Z0JBakdYLElBRFF0MkQsV0FDUixzQkFIZ0IyckIsTUFBTXNxQyxPQUVkajJEOztVQW1FSTtXQUZLdTJEO1dBQU5DO1dBQ0NDLElBREtGO1dBQ2I5eUIsT0FEYTh5QjtXQUVMLGdCQXJFSTVxQztVQXFFSjttQ0FFT3V1QixtQkFBVndjOztxQkFrQk0sdUJBekZDL3FDLE1BbUVMNnFDO3FCQXFCSSxzQkF4RkM3cUMsTUFtRUM0cUMsT0FJRXJjO3FCQWVILHNCQXRGQXZ1QixNQW1FQzRxQyxPQUlFcmM7O2VBR2YsT0ExRVl2dUIsWUFBTXNxQyxTQTBFbEIsc0JBTkF4eUI7d0JBT0ssZUEzRU85WCxNQW1FQzRxQyxPQUlFcmM7d0JBS1YsZ0JBNUVPdnVCLE1BbUVMNnFDOztlQVlQLE9BL0VZN3FDO3dCQStFaUIsZ0JBL0VqQkEsTUFtRUw2cUM7d0JBbkVLN3FDLFlBQU1zcUMsU0FnRmxCLHNCQVpBeHlCOzBCQWFPLGVBakZLOVgsTUFtRUM0cUMsT0FJRXJjOzRCQXZFSHZ1QixXQXVFR3V1QixlQUhQdWMsV0FwRUk5cUM7NEJBb0ZQLGVBcEZPQSxNQW1FQzRxQyxPQUlFcmM7NEJBY1YsZ0JBckZPdnVCLE1BbUVMNnFDO3NCQW9CSSx1QkF2RkM3cUMsTUFtRUw2cUM7VUFHRDs7VUEvQkU7V0FGRUc7V0FBSDcyRDtXQUNQODJELGdCQXRDWWpyQztXQXVDSixpQkF2Q0lBO1VBdUNKO3FDQUVJa3JDOztjQUtWLDBCQUxVQTtjQUtLOztzQkFDSDc3QyxnQkFBUis3Qzt3QkFUTkgsbUJBU01HLG1CQUFRLzdDOzJCQUFSKzdDOzswQkFGSkQ7b0JBSEFFOzs7cUJBSkZKO1lBYUYsSUFBSTc1QixPQVRBaTZCLE1BSkZKO1lBYUYsWUFBSTc1QjtxQkFFQyxnQkFyRFNwUixnQkFtRFZvUixTQWRLajlCO3FCQWlCSjt1QkF0RFM2ckIsZ0JBMENWcXJDLE1BTFFMLGtCQXJDRWhyQztVQXdDTjs7O1dBbkNLMXZCO1dBQUxnN0Q7V0FDTkMsa0JBTll2ckM7d0JBTVp1ckM7WUEvQkEsa0JBeUJZdnJDO1lBekJaO21DQUVhc1UsaUJBQVZtWDtjQUVMLEdBcUJjenJCLFdBdkJDc1UsZ0JBQVZtWDtlQUl3QyxXQW1CL0J6ckIsTUF2QkNzVTs7YUFEVCxrQkF3QlF0VTtVQVNxQjttQkFUckJBLFdBS05zckM7V0FJMkIsaUJBSnRCaDdELEtBTEMwdkIsV0FBTXNxQyxPQUtQaDZEO1VBV2YsZUFMSW03RCxXQURBRCxTQVZZeHJDO2dCQXNCaEIsSUFEVTByQyxjQUNWLFlBRFVBLEtBckJNMXJDOztVQThGZix3QkFBYSxvQkE5RkVBLFVBNkZIMnJDO1VBRVosaUJBL0ZlM3JDLE1BOEZYNHJDO1VBQ0osWUFGWUQsV0E3RkczckM7YUE4R1o2ckMsYUFBYTdyQztNQUNuQjtRQUFNLG1CQURhQTtRQUNiO1VBSUQ7O1dBRkl3c0I7V0FBYWp0QztXQUFQbXFEO1dBQ1RvQyxjQUphOXJDO1dBS2QsVUFGSXdzQjtXQUVKLGNBTGN4c0IsWUFJYjhyQztVQUMrRDtZQUNqRSxPQU5lOXJDO1lBT0QsSUFBVnNxQyxZQUpDOWQsVUF6TFBtZDtZQThMRSxnQkFSZTNwQyxNQU9Yc3FDLE9BSk9aO1lBS1gsWUFMa0JucUQsU0FISHlnQjs7VUFFVDtpQkFTTDthQUlIK3JDLGdCQUFnQi9yQyxNQUFNMEQ7TUFBTSxXQUFaMUQsTUFBTTBELEtBQU0sb0JBQVoxRCxNQUFvRDthQUlwRWdzQyxrQkFBa0Joc0MsTUFBTXdzQixLQUFLbjRDO01oRGpjbEMsT2dENmJLMDNELGdCQUlrQi9yQyxTQUFNd3NCLFFBQUtuNEMsR0FBTG00QyxNQUNrRDthQVcxRXlmLHNCQUFzQkM7TUFDeEIsTUFEd0JBO01BQ3hCLElBQ0lDLGNBdGFBM0M7TUFxYUosa0JBQ0kyQyxZQUZvQkQsTUFHd0I7YUFXOUNFLFNBQVNwc0MsTUFBTTF2QjtNQUNYLGtCQURLMHZCO01BQ0w7OztTQUVlbXNDO1NBQVpFO2NBQVlGO1dBQVpFLGFBSEVyc0MsVUFPUCw2QkFQT0E7UUFTUCxTQU5pQm1zQztRQU1qQjs7O1lBT0U7c0JBaEJXNzdEO2FBZ0JYOztpQkFiZTY3RCxnQkFIVm5zQyxxQkFrQkgsUUFsQkdBOztZQVdMOzs7OztjQVhXMXZCLElBR0k2N0QsZ0JBSFZuc0MscUJBYUgsUUFiR0EsYUFBTTF2QjtZQXNCWDs7O01BcEJJLFFBb0JGO2FBS05nOEQsVUFBVXRzQyxNQUFNcnFCLEVBQUUrekQ7TUFDcEIsV0FEWTFwQyxNQUFRMHBDO01BQ3BCLEdBRGtCL3pELEVBRVIsU0FGRXFxQjtNQUVpQixJQUN6QnVzQyxRQUhRdnNDLFVBQVEwcEM7TUFFUyxZQUN6QjZDLEtBSFF2c0MsU0FJdUI7YUFNakN3c0MsZ0JBQWdCeHNDLE1BQU11ckIsT0FBT2toQjtNQUMvQixZQURrQnpzQztNQUNsQixHQURrQkE7UUFHaEIsV0FIZ0JBLGNBSVp1c0MsUUFEQS9mLFFBSGtCakIsT0FBT2toQjtlQVY3QkgsVUFVZ0J0c0MsUUFJWnVzQztNQUVOLFNBTmtCdnNDO01BTWxCO1FBQ0ssU0FQYUE7ZUEvRGhCZ3NDLGtCQStEZ0Joc0MsTUExRGxCO2lCQWlFMkM7YUFPekMwc0MsYUFBYTFzQztNQUNmLGFBRGVBO01BQ2Y7UUFDQSxHQUZlQTtVQUtYLFdBTFdBLFNBdU1Ud3NCLFdBak1GLFNBTld4c0IsU0FNVSxTQU5WQTtRQU04QixZQU45QkE7Ozs7TUFIVyxXQVl2QjthQUlEMnNDLGFBQWEzc0MsTUFBTTBxQztNQUNyQixHQURlMXFDLFdBR2IsS0FIbUIwcUMsU0FBTjFxQyxVQUliLFdBSmFBLFVBQU0wcUM7TUFJYSxTQUpuQjFxQztNQUltQjtRQUdoQyxJQUFJMHBDLFNBUGVnQixVQU9uQixrQkFQYTFxQyxTQTBMVHdzQixLQW5MQWtkO2lCQUNvRDthQUl4RGtELGNBQWM1c0M7TUFDaEIsR0FEZ0JBLFVBRWQsV0FGY0EsU0E4S1Z3c0I7TUE1S21FLFNBRnpEeHNCO01BRXlEO1FBRWpFLGtCQUpRQTtRQUlSLFVBR0osSUFESzBxQyxrQkFDTCxrQkFQWTFxQyxVQU1QMHFDO1FBRkQ7OztpQkFHNkI7YUFFbkNtQyxZQUFZN3NDLE1BQU0zckIsR0FBSSxvQkFBVjJyQixvQkFBTTNyQixHQUFxQzthQUN2RHk0RCxhQUFhOXNDLGFBQVcscUJBQVhBLFFBQWlDO2FBRTlDK3NDLGtCQUFrQi9zQyxNQUFNcnFCLEdBQUksWUFBSkEsRUFBSSxRQUF3QjthQUNwRHEzRCxpQkFBaUJodEMsTUFBTXJxQixHQUFJLFlBQUpBLEVBQUksUUFBdUI7YUFDbERzM0Qsa0JBQWtCanRDLGFBQVcsT0FBWEEsU0FBOEI7YUFDaERrdEMsaUJBQWlCbHRDLGFBQVcsT0FBWEEsU0FBNkI7YUFDOUNtdEMsWUFBWW50QyxNQUFNcnFCO01BQ3BCLGtCQURjcXFCLE1BQU1ycUIsR0FDcEIsd0JBRGNxcUIsTUFBTXJxQixFQUMrQjthQUlqRHkzRCwrQkFBZ0NwdEM7TUFBVyxVQUFYQSx3Q0FLbkM7YUFHR3F0QywrQkFBZ0NydEM7VUFJWnN0QyxhQUREQyxhQURBQyxhQUREQztNQURjenRDLFlBQ2R5dEM7TUFEY3p0QyxZQUVid3RDO01BRmF4dEMsWUFHYnV0QztNQUhhdnRDLFlBSVpzdEM7O2FBU3BCSSxTQUFTMXRDO01BalhYOztjQWlYV0E7TUFFWCxzQkFGV0E7TUFHWCxNQUhXQTtNQUlYLE1BSldBO01BS1gsTUFMV0E7TUFNWCxNQU5XQTtNQU1YOztpQkFOV0E7TUF0RWUsdUJBc0VmQSxVQVVVO2FBT25CMnRDLGVBQWUzdEMsTUFBTXJxQjtNQUp2QixTQUlpQnFxQjtNQUpqQix1QkFBcUIsb0JBSUpBLFFBSnlCO01BT25CO2VBSE5BLFdBR2YsYUFIZUE7UUFLakIsWUEvV0UycEM7UUFnWEYsYUFOaUIzcEM7UUFNakIsR0FOdUJycUIsRUFPYixrQkFQT3FxQjtRQU9nQixnQkFQaEJBLE9BUUg7YUFTWjR0QyxpQkFBaUI1dEMsTUFBTXdzQixLQUFLbjRDO01BQzlCLFNBRG1CMnJCO01BQ25CLFlBQ0ssa0JBRmNBLE1BQU13c0IsS0FBS240QyxPQUVLO2FBR2pDdzVELFlBQVk3dEMsTUFBTTh0QyxNQUFNejVEO01oRHhuQjdCLE9nRG1uQkt1NUQsaUJBS1k1dEMsTUFBTTh0QyxNQUFNejVELEVBQ2tCO2FBRzFDMDVELGdCQUFnQi90QyxNQUFNM3JCO01BQ3hCLG1CQURrQjJyQixNQUNsQixzQkFEd0IzckIsS0FDYTthQUVuQzI1RCxlQUFlaHVDLE1BQU0zckI7TUFDWSxtQkFEbEIyckIsTUFDa0IscUJBRFozckIsR0FDWSxTQURaQSxHQUMrQjthQUdwRDQ1RCxhQUFhanVDLE1BQU1yd0I7TUFBMEIsdUJBQWhDcXdCLE1BQWdDLDRCQUExQnJ3QixHQUEyQzthQUc5RHUrRCxlQUFlbHVDLE1BQU1uc0I7TUFBMEIsdUJBQWhDbXNCLE1BQWdDLFVBQTFCbnNCLEdBQTZDO2FBR2xFczZELGNBQWNudUMsTUFBTXJxQjtNQUEwQix1QkFBaENxcUIsTUFBZ0MsZUFBMUJycUIsR0FBNEM7YUFHaEV5NEQsY0FBY3B1QyxNQUFNanBCLEdBQ0YsbUJBREppcEIsUUFDSSxTQURFanBCLEdBQ2U7YUFJbkNzM0QsYUFBYXJ1QyxhQUFXLHVCQUFYQSxVQUEwQzthQUN2RHN1QyxhQUFhdHVDLE1BQU11ckI7TUFBUyx1QkFBZnZyQixNQUFNdXJCLFNBQTZDO2FBRWhFZ2pCLGNBQWN2dUMsTUFBTXVyQjtNQUFTLHVCQUFmdnJCLE1BQU11ckIsU0FBOEM7YUFDbEVpakIsZUFBZXh1QyxNQUFNdXJCO01BQVMsdUJBQWZ2ckIsTUFBTXVyQixTQUErQzthQUNwRWtqQixZQUFZenVDLE1BQU11ckIsUUFBUyx1QkFBZnZyQixNQUFNdXJCLFNBQTRDO2FBVzlEbWpCLGlCQUFpQjF1QztNQUNuQixlQURtQkEsU0FDbkIsa0JBRG1CQSxZQUM2QjthQUM5QzJ1QyxlQUFlM3VDO01BQ2pCLGVBRGlCQSxTQUNqQixrQkFEaUJBLFlBQ2dDO2FBSS9DNHVDLGlCQUFpQjV1QztNQUNuQixTQURtQkE7TUFDbkIsWUFDRSxnQkFGaUJBLFNBNkNid3NCLGVBM0NzRTthQUkxRXFpQixvQkFBb0I3dUM7TUFDdEIsU0FEc0JBO01BQ3RCLFlBQ0UsZ0JBRm9CQSxTQXVDaEJ3c0IsZUFwQ3FEO2FBS3pEc2lCLHNCQUFzQjl1QyxNQUFPNnFDLEtBQU1EO01BQ3JDO2FBRCtCQztPQUMvQixNQUQrQkE7T0FDL0IsT0FEK0JBO09BQy9CLEtBRHdCN3FDO01BQ3hCO1FBRUU7Z0JBSHNCQTtTQUlsQjBwQyxTQUp5Qm1CLEtBQU1EO1NBSy9CcnJEO2lDQUpGdTRCLFVBQVF4RDs7Z0NBQU91RDs7O1NBS2IwMEIsUUFIQS9mLEtBQ0FrZCxNQUNBbnFEO2VBck1KK3NELFVBZ01zQnRzQyxRQU1sQnVzQztpQkFDcUI7YUFNekJ3QyxlQUFlL3VDLE1BQU1zVSxNQUFNbEQ7TUFDN0I7ZUFEaUJwUixnQkFBTXNVLHdCQUFNbEQsZUFFbUI7YUFROUM0OUIsZUFBZWh2QyxhQUFXLHNCQUFYQSxVQUFtQzthQUNsRGl2QyxhQUFhanZDLGFBQVcsc0JBQVhBLFVBQW1DO2FBSWhEa3ZDLGFBQWFsdkM7TUFDZixZQURlQTtNQUNmLFNBRGVBO01BQ2Y7UUFFRSxJQUNJdXNDLFFBREEvZixzQkFBSix1QkFIYXhzQixNQUlUdXNDO2lCQUNzQjthQUkxQjRDLGNBQWNudkM7TUFDaEIsYUFEZ0JBO01BQ2hCO1FBQ0EsU0FGZ0JBO1FBRWhCO1VBRUcsSUFBSXVzQyxRQVZEL2Y7VUFXSCxnQkFMYXhzQixNQUlUdXNDO1VBQ0osWUFMYXZzQztVQUliOzs7OztpQkFHQTthQUlEb3ZDLGdCQUFnQnB2QyxNQUFNc1UsTUFBTWxEO01BQzlCLFNBRGtCcFI7TUFDbEI7UUFDRSxXQUZnQkEsY0FHWnVzQyxRQURBL2YsUUFGa0JsWSxNQUFNbEQsUUFBTmtEO2VBaFB0Qmc0QixVQWdQZ0J0c0MsUUFHWnVzQztpQkFDcUI7YUFHekI4QyxhQUFhcnZDLGFBQVcsdUJBQVhBLFVBQW9DO2FBRWpEc3ZDLFdBQVd0dkM7TUFDYixTQURhQTtNQUNiLFNBQ0UsSUFBSXVzQyxRQTVCQS9mLFVBNEJKLHVCQUZXeHNCLE1BRVB1c0M7aUJBQ3NCO2FBVTFCZ0QsaUJBQWlCdnZDLE1BQU03ckI7TUFBSSxhQUFKQSxNQUFJLFdBQVY2ckIsWUFBTTdyQixxQkFBeUM7YUFHaEVxN0QsaUJBQWlCeHZDLGFBQVcsT0FBWEEsU0FBNkI7YUFFOUN5dkMsa0JBQWtCenZDO01BQVcsT0FBWEEsMkJBQW1EO2FBR3JFMHZDLHFCQUFxQjF2QyxNQUFNM3JCLEdBQUksWUFBSkEsRUFBSSxRQUFzQjthQUNyRHM3RCxxQkFBcUIzdkMsYUFBVyxPQUFYQSxTQUE0QjthQUlqRDR2QyxTQUFTejdELEdBQ1gsT0FEV0EsMkJBQ29DO2FBZTdDMDdELGtCQUFrQjd2QyxNQUFNL2E7TUFDMUIsYUFEMEJBO01BQzFCO1FBQ0UsUUFGa0IrYSxXQUFNL2EsUUFWMUIsVUFEOEJDO1FBQzlCO1VBQ1UsSUFBSi9RLEVBQUksU0FGb0IrUTtVQUVwQixXQUFKL1E7VUFBSSxXQVNVNnJCO1VBVFYsZ0JBU1VBO1FBZnBCO2lCQWlCbUQ7YUFHakQ4dkMsa0JBQWtCOXZDLGFBQVcsT0FBWEEsUUFBOEI7YUFFaEQrdkMsY0FBYy92QyxNQUFNN3JCO01BQ3RCLGNBRHNCQTtNQUN0QjtRQUNVLElBQUo4USxJQUFJLFNBRlk5UTtRQUVaLFdBQUo4UTtRQUFJO1NBRUorcUQ7VUFKVWh3Qzs7WUFXWCxNQUFRLE1BWEdBO1FBWXNCLHlCQVp0QkEsTUFJVmd3QztpQkFVa0M7YUFNdENDO1VBQW1CQyxnQkFBUUM7NkJBQVJELFVBQVFDO2FBTzNCQyxlQUFlQztNQUNYLDRCQURXQSxVQUNYLHlCQUVZO2FBRWhCQyxjQUFjdHdDLGFBQVcsT0FBWEEsUUFBMEI7YUFFeEN1d0MscUJBQXFCdndDO1VBQU9rd0MsZ0JBQVFDO01BQ3RDLGNBRHVCbndDLE1BQU9rd0M7TUFFOUIsa0JBRnVCbHdDLE1BQWVtd0M7TUFFdEM7YUFHRUssZ0JBQWdCeHdDLE1BQU9td0MsV0FBWUQ7TUFDckMsZ0JBRHlCQyxXQUFZRCxRQUUvQix3QkFERkc7TUFDRSxrQkFJSiw0QkFOZ0Jyd0MsTUFDZHF3QztNQUFKLElBRVEzd0Q7TUFDa0IseURBRGxCQSxLQUc2QjthQUVuQyt3RCxxQkFBcUJ6d0MsTUFBT213QyxXQUFZRDtNQUMxQyxnQkFEOEJDLFdBQVlELFFBRXBDLHdCQURGRztNQUNFLHNCQUlKLHFCQU5xQnJ3QyxNQUNuQnF3QyxXQUtpQzthQUVuQ0ssZ0JBQWdCMXdDLGFBQzhCLFVBRDlCQSxrQkFDMEQ7YUFFMUUyd0MsbUJBQW1CM3dDLE1BQU13SztNQUNaLElBQVg2bEMsU0FBVyxnQkFETXJ3QztNQUVNLDRCQUZOQSxNQUVNLFdBRkF3SyxPQUN2QjZsQyxVQUN3QzthQUcxQ08sK0JBQStCNXdDO1VBS2hCL2IsV0FEQXRVLFdBREN3ckIsV0FERjlGLFdBREN4aEI7TUFEZ0Jtc0IsWUFDaEJuc0I7TUFEZ0Jtc0IsWUFFakIzSztNQUZpQjJLLFlBR2Y3RTtNQUhlNkUsWUFJaEJyd0I7TUFKZ0Jxd0IsWUFLaEIvYjs7YUFRZjRzRCwrQkFBK0I3d0M7TUFBVyxVQUFYQSxrREFNbEM7YUFJRzh3QywrQkFBa0M5d0MsTUFBTW5zQixFQUFFd2hCO01BQzVDLFlBRDBDeGhCLEVBQzFDLFlBRDRDd2hCLEVBQzVDLFFBQWlEO2FBRS9DMDdDLCtCQUFrQy93QztNQUNwQyxVQURvQ0Esb0JBQ0s7YUFJdkNneEMsZ0JBQWdCaHhDO01BQVcsa0JBQVhBLHFCQUF3QztJQUczQyxJQUFiaXhDLFdBQWE7YUFXYkMsZUFWbUJseEMsTUFBTTdyQjtNaERsNEI5QixJZ0RrNEI4QjhRO01BQzNCO3FCQUQyQkE7UUFDM0I7VUFDQSxRQUYyQkE7WUFJekIsV0FKbUIrYSxVQURuQml4QztZQUtBLFFBSnlCaHNEOztVQUVYLGtCQUZLK2EsVUFEbkJpeEMsYUFDeUJoc0Q7b0JBTXhCO0lBUFksU0FlYmtzRCw2QkFBNkJueEMsTUFBTTFvQjtNQUNkOzsrQmhEajVCMUIsT2dCNkRLSyxpQmdDbTFCbUNMO01BQ2QsNEJBQ1UscUJBRklBLEdBRUk7TUFDakIsMkJoRG41QjNCLE9nRDgzQkswNUQsZ0JBa0I2Qmh4QztNQUlSLDJCaERwNUIxQixPZ0Q0NEJLa3hDLGVBSTZCbHhDO01BS1IsMkJoRHI1QjFCLE9nRDQ0QktreEMsZUFJNkJseEM7TUFLUixRQUFvQjtJQXBCNUIsU0E0QmJveEM7TUFBMkI7WUFDaEIvOEQsV0FBVyxzQkFBWEE7TUFDTixhQUFFO0lBOUJNLFNBK0JiZzlEO01BQTRCO1lBQ2pCaDlELFdBQVksc0JBQVpBO01BQ04sYUFBRTtJQWpDTSxTQW1DYmk5RCxnQ2hEcDZCTDtJZ0RpNEJrQixTQW9DYkMsaUNoRHI2Qkw7SWdEaTRCa0IsU0F3Q2JDLGtCQUFrQjM5RCxFQUFFd2hCLEVBQUU4RixFQUFFeHJCLEVBQUVzVTtNQUViLG9DQWw0Qlh1bEQ7TUFxNEJKLElBRklrSSxRQURBRDtNQUFXLElBSVhFLFdBQWE7TUFDakIsc0JBRElBO01BRUosVUFMSUQsU0FHQUM7TUFKVyxJQWNHLGlCQURELGlCQURDO01BREU7Y0FQaEJBO2NBT2dCOzs7Ozs7Ozs7Ozs7O2NuQ2wxQlZ4OEQ7O2NtQ3EwQlV0QjtjQUFFd2hCO2NBQUU4RjtjQUFFeHJCO2NBQUVzVTs7O2NBWjFCbXREO2NBR0FDO2NBSUFDO2NBQ0FDO2NBTUVFLFNBc0NIO0lBaEZjLFNBb0ZiRywyQkFBMkJDO01BQzdCO2VBRDZCQSw0REFNUjtJQTFGTixTQStGYkMsZUFBZXQ2RCxPQUFPNkU7TUFDeEIsb0JoRGorQkg7TWdEaStCRyxvQmhEaitCSDtNZ0RpK0JhO09BQU4wMUQ7UUFBTSxrQkFET3Y2RCxPQUFPNkUscUJoRGgrQjNCO01nRGsrQnlCLHlCaERsK0J6QixPZ0Q4M0JLMjBELGdCQW1HRWU7TUFFaUIseUJoRG4rQnhCLE9nRDQ0QktiLGVBcUZFYTtNQUdpQix5QmhEcCtCeEIsT2dENDRCS2IsZUFxRkVhO01BR2lCLE9BSGpCQSxHQUlEO0lBcEdZLFNBd0diQyx5QkFBeUIxNkQ7TUFDM0IscUJBQWdELHFCQURyQkEsR0FDNkI7TUFBekM7O2lCaEQxK0JsQixPZ0I2REtLLGlCZ0M0NkJ5Qkw7b0JBQzhCO0lBekcxQyxTQTZHYjI2RCxvQkFBb0J0OEQ7TUFDdEIsb0JoRC8rQkg7TWdEKytCa0I7O2lCaEQvK0JsQixPd0NvS0t3N0IsY1EwMEJvQng3QjtvQkFDd0I7SUE5Ry9CLElBb0hidThEO0lBcEhhLFNBcUhiQyxzQkFBb0IsZ0JBRHBCRCxlQUNnRDtJQUd2Qzs7S0FJTyx1Q2hDaCtCaEJ6N0Q7S2dDaStCZ0IsdUNoQ2grQmhCQztLZ0NpK0JnQixrQ0FOaEIwN0Q7SUFNZ0IsU0FPaEJJLHVCQUF1QjE1RCxJQUFJaTVEO01BQzdCLGVBRDZCQSxPQUVyQixJQUFKMTlELEVBQUksU0FGaUJ5RSxLQUd6QixNQUh5QkEsS0FHekIsT0FESXpFLENBRUg7SUFYaUIsU0FlaEJvK0Q7TUFBeUIsOEJBckJ6QkwsT0FNQUcsY0Flb0U7SUFmcEQsU0F5Q2hCRyxtQ0FDRixZQUFpQztJQTFDZixTQTRDaEJDLDZCQUE2QkMsS0FDL0IsbUJBQWtDO0lBN0NoQixTQStDaEJDLDJCQUEyQkQsS0FDN0IsV0FENkJBLE9BQ1E7SUFoRG5CLFNBa0RoQkUsNkJBQTZCRjtNQUNuQixJQUFSRyxNQUFRLDJCQURtQkg7TUFFL0IsNkJBRitCQTtNQUUvQixPQURJRyxLQUVDO0lBckRhLFNBdURoQkMseUJBQXlCSixJQUFJSztNQUMvQixZQUQrQkEsS0FBSkwsUUFDM0IsUUFBb0U7SUF4RGxELFNBMERoQk0sK0JBQW9DTjtNQVk5QixTQUFKLytELEVBUG9CUSxFQUFFMUUsRUFBRXdFLEdBQ2tCLGdDQU5SeStELE9BTVEsTUFEdEJ2K0QsRUFBRTFFLEVBQUV3RTtNQVFwQixTQUFKa2hCLFFBWEYsZ0NBRm9DdTlDO01BYzlCLFNBQUp6M0MsUUFWRixnQ0FKb0N5M0M7TUFlOUIsU0FBSmpqRSxFQVJvQndFLEdBQ3RCLGdDQVJvQ3krRCxPQU9keitEO01BU2hCLFNBQUo4UCxFQVBvQjlQLEdBQ3RCLGdDQVZvQ3krRCxPQVNkeitEO01BT2hCLHlCQUpKTixFQUNBd2hCLEVBQ0E4RixFQUNBeHJCLEVBQ0FzVSxFQUN1QjtJQVNiLFNBQVprdkQsZ0JoRG5sQ0wsT2dEaXBCSzlFLGFBNFdBZ0U7SUF1RlksU0FBWmUsZ0JoRHBsQ0wsT2dEa3BCSzlFLGFBMldBK0Q7SUF3RmEsU0FBYmdCLGlCaERybENMLE9nRG9wQks5RSxjQXlXQThEO0lBeUZjLFNBQWRpQixrQmhEdGxDTCxPZ0RxcEJLOUUsZUF3V0E2RDtJQTBGVyxTQUFYa0IsZWhEdmxDTCxPZ0RzcEJLOUUsWUF1V0E0RDtJQTJGWSxTQUFabUIsZ0JoRHhsQ0wsT2dEOGdCSzlHLGFBK2VBMkY7SUE0RlcsU0FBWG9CLGVoRHpsQ0wsT2dEZ2pCSzVHLFlBNmNBd0Y7SUE2RlksU0FBWnFCLGdCaEQxbENMLE9nRGlqQks1RyxhQTRjQXVGO0lBOEZZLFNBQVpzQixnQmhEM2xDTCxPZ0QyaEJLaEgsYUFrZUEwRjtJQStGYSxTQUFidUIsaUJoRDVsQ0wsT2dEdWlCS2hILGNBc2RBeUY7SUFnR1csU0FBWHdCLG9CaEQ3bENMLE9nRHduQktoRyxZQXFZQXdFO0lBaUdlLFNBQWZ5QixxQmhEOWxDTCxPZ0Q0bkJLL0YsZ0JBaVlBc0U7SUFrR2MsU0FBZDBCLG9CaEQvbENMLE9nRCtuQksvRixlQThYQXFFO0lBbUdZLFNBQVoyQixrQmhEaG1DTCxPZ0Rtb0JLL0YsYUEwWEFvRTtJQW9HYyxTQUFkNEIsb0JoRGptQ0wsT2dEc29CSy9GLGVBdVhBbUU7SUFxR2EsU0FBYjZCLG1CaERsbUNMLE9nRDRvQks5RixjQWlYQWlFO0lBc0dhLFNBQWI4QixpQmhEbm1DTCxPZ0R5b0JLaEcsY0FvWEFrRTtJQXVHYyxTQUFkK0I7TWhEcG1DTCxPZ0Rtc0JLckYsZUEwVEFzRDtJQXdHWSxTQUFaZ0MsZ0JoRHJtQ0wsT2dEOHNCS3BGLGFBK1NBb0Q7SUF5R2MsU0FBZGlDLGtCaER0bUNMLE9nRDZzQkt0RixlQWdUQXFEO0lBMEdnQixTQUFoQmtDLG9CaER2bUNMLE9nRHdxQkszRixpQkFxVkF5RDtJQTJHYyxTQUFkbUMsa0JoRHhtQ0wsT2dEbXFCSzdGLGVBMFZBMEQ7SUE0R2dCLFNBQWhCb0M7TWhEem1DTCxPZ0RpcUJLL0YsaUJBNFZBMkQ7SUE2R21CLFNBQW5CcUM7TWhEMW1DTCxPZ0Q4cUJLN0Ysb0JBK1VBd0Q7SUErR1ksU0FBWnNDLGdCaEQ1bUNMLE9nRGt0Qkt6RixhQTJTQW1EO0lBZ0hhLFNBQWJ1QyxpQmhEN21DTCxPZ0QydEJLekYsY0FrU0FrRDtJQWlIZSxTQUFmd0M7TWhEOW1DTCxPZ0RzdUJLekYsZ0JBdVJBaUQ7SUFtSFUsU0FBVnlDLGNoRGhuQ0wsT2dEK3VCS3hGLFdBOFFBK0M7SUFvSFksU0FBWjBDLGdCaERqbkNMLE9nRDZ1QksxRixhQWdSQWdEO0lBc0hhLFNBQWIyQyxpQmhEbm5DTCxPZ0RneUJLakYsY0E2TkFzQztJQXVIYSxTQUFiNEMsaUJoRHBuQ0wsT2dENi9CSzVDO0lBeUhpQixTQUFqQjZDO01oRHRuQ0wsT2dEeXhCS3JGLGtCQW9PQXdDO0lBMEhpQixTQUFqQjhDLHFCaER2bkNMLE9nRDYvQks5QztJQTRIZSxTQUFmK0M7TWhEem5DTCxPZ0R1MEJLNUUsZ0JBc0xBNkI7SUE2SG9CLFNBQXBCZ0Q7TWhEMW5DTCxPZ0QrMEJLNUUscUJBOEtBNEI7SUE4SGUsU0FBZmlELG1CaEQzbkNMLE9nRHUxQks1RSxnQkFzS0EyQjtJQStIa0IsU0FBbEJrRDtNaEQ1bkNMLE9nRDAxQks1RSxtQkFtS0EwQjtJQWlJZ0IsU0FBaEJtRCxvQmhEOW5DTCxPZ0Q0dkJLakcsaUJBaVFBOEM7SUFrSWdCLFNBQWhCb0Qsb0JoRC9uQ0wsT2dENi9CS3BEO0lBbUlpQixTQUFqQnFEO01oRGhvQ0wsT2dEaXdCS2pHLGtCQTRQQTRDO0lBcUlvQixTQUFwQnNEO01oRGxvQ0wsT2dEb3dCS2pHLHFCQXlQQTJDO0lBc0lvQixTQUFwQnVELHdCaERub0NMLE9nRDYvQkt2RDtJQXlJRixTQURFd0Q7TWhEcm9DTCxPZ0RnNUJLMUUsNkJBNkdBa0I7SUE0SUYsU0FERXlEO01oRHhvQ0wsT2dEKzFCS2xGLCtCQThKQXlCO0lBOElGLFNBREUwRDtNaEQxb0NMLE9nRDQyQktsRiwrQkFpSkF3QjtJQWlKRixTQURFMkQ7TWhEN29DTCxPZ0RzM0JLbEYsK0JBdUlBdUI7SUFtSkYsU0FERTREO01oRC9vQ0wsT2dEeTNCS2xGLCtCQW9JQXNCO0lBc0pGLFNBREU2RDtNaERscENMLE9nRG9rQks3SSwrQkF5YkFnRjtJQXdKRixTQURFOEQ7TWhEcHBDTCxPZ0Q0akJLL0ksK0JBaWNBaUY7SUEwSkYsU0FERStEO01oRHRwQ0wsT2dEbWpCS3JKLGtCQTBjQXNGO0lBNEpGLFNBREVnRSxxQmhEeHBDTCxPZ0Q2L0JLaEU7SUE4SkYsU0FERWlFLG9CaEQxcENMLE9nRG9qQkt0SixpQkF5Y0FxRjtJQWdLRixTQURFa0Usb0JoRDVwQ0wsT2dENi9CS2xFO0lBa0tGLFNBREVtRSxlaEQ5cENMLE9nRHVqQktySixZQXNjQWtGO0lBa0tGLFNBTU1vRSxjQUFnQnQyQyxJQUF1QnUyQyxLQUFLM0U7VUFBNUI0RTs7aUJBQVMsUUFBVEEsZ0JBQVN2MkMsYUFBVHcyQyxPQXZkcEIzSDtRQXVkc0Q7OztnQkFHakQ0SDtZQUNMLFdBSjJDSCxLQUFLM0U7WUFLaEQsV0FMb0I2RSxPQUE0QjdFO1lBS2hELGFBTG9CNkUsNEJBR2ZDOztVQURFLGtCQUZvQ0gsS0FBSzNFO1FBQzFDO0lBUFIsU0F1QkVnRixhQUFlNTJDLElBQXVCdTJDLEtBQUszRSxJQUFJaUY7TUFDakQsR0FEaUI3MkMsSUFBUyxRQUFUQSxjQUFTQyxhQUFUdzJDLE9BeGVmM0g7TUF5ZUksdUJBRDJDK0g7TUFDM0M7WUFFU0MsaUJBQUhqNkQ7UUFDVixXQUpzQzA1RCxLQUFLM0UsSUFHakMvMEQ7WUFYMkIwRSxJQVd4QnUxRDtRQVZmO1VBQU0scUJBRGlDdjFEO1VBQ2pDO2dCQUVTRSxlQUFIN047WUFDVixXQUllNmlFLE9BQTRCN0U7WUFIM0MsV0FHc0MyRSxLQUFLM0UsSUFMakNoK0Q7Z0JBSDJCMk4sSUFHeEJFOztVQURGO01BUUEsUUFHeUI7SUE1QnRDLFNBK0JFczFELGNBQWNuRixJQUFJMTlEO01BQ3BCLDhCQURvQkEsR0FDcEI7ZUFHSWdJO1FBQ0YsZ0JBTGMwMUQsSUFLTSxNQUxGMTlELEVBRWhCaUksUUFDQUMsV0FEQUQ7UUFHRjtrQkFGRUM7UUFFRixRQUMyQjs7V0FIekJBLGFBRkE3RTtVQVFJLDBCQVRZckQsRUFHaEJrSTtVQU1JO1lBRUYsU0FDQSxpQkFaVXcxRDs7NEJBY1YsU0FBVSxlQWRBQSxZQWlCTDs7UUFFWCxTQWpCSXoxRCxZQURBNUU7UUFrQkosWUFBcUIsY0FBUTtJQWxEN0IsU0FvREV5L0QsZ0JBQWtCaDNDLElBQXVCdTJDLEtBQUszRTtNaERudENuRCxHZ0RtdEN1QjV4QztPQUFPLFFBQVBBLFlBQU9DOztXQUFQM1ksMEJBQW1CLFFBQUU7TUFBZCxVQUVqQixJQUFMMVQsV0FBSyxrQkFGaUMyaUUsS0FBSzNFLElBRTNDaCtEO01BREcsa0JBRFkwVCxLQUE0QnNxRDtJQXBEaEQsU0F3REVxRixnQkFBaUJ2dUQsR0FBSUMsTUFBTWlwRDtNaER2dENoQyxtQmdEd3RDVyxJQUFMaCtELFdBQUssa0JBRFc4VSxHQUFVa3BELElBQzFCaCtEO01BQ1EsSUFBTDhJO01BQUssa0JBRllpTSxNQUFNaXBELElBRXZCbDFEO0lBMUROLFNBNERFdzZELGdCQUFpQi82RCxLQUFNQyxNQUFNdzFEO01oRDN0Q2xDLG1CZ0Q0dENvQixJQUFMOTdELFdBQUssa0JBREVxRyxLQUFZeTFELElBQ25COTdEO01BQ00sSUFBTGpDO01BQUssa0JBRk91SSxNQUFNdzFELElBRWxCLzlEO0lBOURiLFNBa0VFc2pFLFlBQVk5L0QsT0FBTysvRDtNQUNYLHFCQUNBLHdCQUROeitEO01BRUosV0FIY3RCLE9BRVZ1NkQsSUFGaUJ3RjtNQUlyQixlQUZJeEY7TUFETSxJQUlOcjZELElBSkFvQjtNQUlNLFlBQU5wQixJQUVDLE1BTkRvQixNQUlBcEIsYUFDWSxTQUxab0IsSUFNMkI7SUF6RS9CLFNBc0ZFMCtELHNCQUFzQnpGLElBQUkvK0Q7TUFBYSxVQUFiQTtPQUFhLE9BQWJBO2dCQUNHLG9CQURQKytEO2dCQUVPLG9CQUZQQTtnQkFJTyxzQkFKUEE7Z0JBS08sd0JBTFBBO2dCQU1PLHdCQU5QQTtnQkFRTyxxQkFSUEE7aUJBU08scUJBVFBBOztPQUFpQixPQUFiLytEOztjQUdUbytCLE9BSFNwK0IsY0FHaEJzaEMsTUFIZ0J0aEM7aUJBbGpCMUIrN0QsZUFrakJzQmdELElBR1p6OUIsTUFBT2xEO2dCQUlZOztjQUdsQnI2QixFQVZlL0Q7VUFVRyxjQVZQKytEO1VBVU8scUJBVlBBLElBVVhoN0QsR0FBNEQ7SUFoR3pFLFNBc0dNMGdFLGFBQVcxRixJQUFJOXZEO01oRHJ3Q3hCO01nRHF3QzhCLFVBQU5BO09BMEJTOztPQTFCSCxPQUFOQTs7Y0FTSXBPLEVBVEpvTyxPQVNDZ0IsRUFURGhCO1VBVW5CLGFBVmU4dkQsSUFTSzl1RDtVQUNwQiw2QkFWZTh1RCxJQVNRbCtEOzttQkFUSm9POztZQWFuQixJQURvQ0M7WUFDcEMsYUFiZTZ2RDtZQWNjO3FCQWRkQSxrQkFjYyxZQWR6QjBGLGFBWWdDdjFEO2NBR0FDO1VBQ3BDLGFBaEJlNHZEO1VBaUJLO29DQUFtQixZQWpCbkMwRixhQWVnQ3QxRDtXQUVoQjs7aUNBakJMNHZELElBaUJWeG1CLE9BQVFtc0I7O21CQWpCTXoxRDs7OztrQkFDK0MyQyxJQUQvQzNDLE9BQ3VDdXFDLGFBQWxCMUQ7Ozs2QkFrQmpCejBDLEVBbkJKNE4sT0FtQkM0bUM7OzttQkFuQkQ1bUM7Ozs7a0JBSzZDMk0sSUFMN0MzTSxPQUtxQ3FvRCxlQUFsQjlmOzs7OzZCQWdCakJ6ekMsRUFyQkZrTCxPQXFCRHNvQzs7O21CQXJCQ3RvQzs7OztrQkFDK0MyQyxJQUQvQzNDLE9BQ3VDdXFDLGFBQWxCMUQ7Ozs2QkFrQmpCejBDLEVBbkJKNE4sT0FtQkM0bUM7OzttQkFuQkQ1bUM7Ozs7OztrQkFLNkMyTSxJQUw3QzNNLE9BS3FDcW9ELGVBQWxCOWY7Ozs7MkJBZ0JqQnp6QyxFQXJCRmtMLE9BcUJEc29DOzs7Y0FFSm1NLElBdkJLejBDLE9BdUJSd29DLElBdkJReG9DO1VBdUJTLGFBdkJiOHZELElBdUJKdG5CO1VBQWlCLGtCQUFkaU0sSUF2QkNxYjs7Y0F3Qkw0RixJQXhCUzExRCxPQXdCUyxhQXhCYjh2RCxJQXdCTDRGLEtBQWtCLHNCQXhCYjVGOztjQXlCS3J5RCxJQXpCRHVDLE9BeUJGMjFELElBekJFMzFEO1VBeUJTLGFBekJiOHZELElBeUJFNkY7VUFBVyxtQkFBUmw0RDs7ZUF0QnBCLGFBSGVxeUQsSUFDeUJqcEIsWUFucEJ4QzhrQixpQkFrcEJlbUUsSUFDMkN2bEIsS0FBUTVuQzs7U0FNbEUsYUFQZW10RCxJQUt1QnZuQjtnQkF2cEJ0Q29qQixpQkFrcEJlbUUsSUFLeUN6SCxPQUdoQixTQUh3QjE3QztlQWVwQyxhQXBCYm1qRCxJQW1CS2xwQixLQUNRLHVCQXBCYmtwQixJQW1CUTE5RDtnQkFHSyxhQXRCYjA5RCxJQXFCR3huQixLQUNVLHFCQXRCYnduQixJQXFCTWg3RCxHQUtTO0lBaEloQyxTQXNJTThnRSxhQUFXOUYsSUFBSTl2RDtNaERyeUN4QjtNZ0RxeUM4QixVQUFOQTtPQTZCUzs7T0E3QkgsT0FBTkE7O2NBWUlwTyxFQVpKb08sT0FZQ2dCLEVBWkRoQjtVQWFuQixhQWJlOHZELElBWUs5dUQ7VUFDcEIsNkJBYmU4dUQsSUFZUWwrRDs7bUJBWkpvTzs7WUFnQm5CLElBRG9DQztZQUNwQyxhQWhCZTZ2RDtZQWlCYztxQkFqQmRBLGtCQWlCYyxZQWpCekI4RixhQWVnQzMxRDtjQUdBQztVQUNwQyxhQW5CZTR2RDtVQW9CSztvQ0FBbUIsWUFwQm5DOEYsYUFrQmdDMTFEO1dBRWhCOztpQ0FwQkw0dkQsSUFvQlZ4bUIsT0FBUW1zQjs7bUJBcEJNejFEOzs7O2tCQUMrQzJDLElBRC9DM0MsT0FDdUN1cUMsYUFBbEIxRDs7OzZCQXFCakJ6MEMsRUF0Qko0TixPQXNCQzRtQzs7O21CQXRCRDVtQzs7OztrQkFLNkMyTSxJQUw3QzNNLE9BS3FDcW9ELGVBQWxCOWY7Ozs7NkJBbUJqQnp6QyxFQXhCRmtMLE9Bd0JEc29DOzs7bUJBeEJDdG9DOzs7O2tCQUMrQzJDLElBRC9DM0MsT0FDdUN1cUMsYUFBbEIxRDs7OzZCQXFCakJ6MEMsRUF0Qko0TixPQXNCQzRtQzs7O21CQXRCRDVtQzs7Ozs7O2tCQUs2QzJNLElBTDdDM00sT0FLcUNxb0QsZUFBbEI5Zjs7OzsyQkFtQmpCenpDLEVBeEJGa0wsT0F3QkRzb0M7OzttQkF4QkN0b0M7Ozs7a0JBU3NDMDBDLElBVHRDMTBDLE9BUzhCNjFELGVBQWxCcnRCO2NBQy9CLGFBVmVzbkIsSUFTZ0J0bkI7cUJBM3JCL0JtakIsaUJBa3JCZW1FLElBU2tDK0YsT0FFVCxXQUZpQm5oQjtjQWlCM0NELElBMUJLejBDO1VBMEJTLGFBMUJiOHZEO1VBMEJtRCx1QkExQm5EQSxJQTBCbUQsV0FBcERyYjs7Y0FDSmloQixJQTNCUzExRCxPQTJCUyxhQTNCYjh2RCxJQTJCTDRGLEtBQWtCLHNCQTNCYjVGOztjQTRCS3J5RCxJQTVCRHVDLE9BNEJGMjFELElBNUJFMzFEO1VBNEJTLGFBNUJiOHZELElBNEJFNkY7VUFBVyxtQkFBUmw0RDs7ZUF6QnBCLGFBSGVxeUQsSUFDeUJqcEIsWUFuckJ4QzhrQixpQkFrckJlbUUsSUFDMkN2bEIsS0FBUTVuQzs7U0FNbEUsYUFQZW10RCxJQUt1QnZuQjtnQkF2ckJ0Q29qQixpQkFrckJlbUUsSUFLeUN6SCxPQUdoQixTQUh3QjE3QztlQWtCcEMsYUF2QmJtakQsSUFzQktscEIsS0FDUSx1QkF2QmJrcEIsSUFzQlExOUQ7Z0JBR0ssYUF6QmIwOUQsSUF3Qkd4bkIsS0FDVSxxQkF6QmJ3bkIsSUF3Qk1oN0QsR0FLUztJQW5LaEMsU0EyS0VnaEUsV0FBU250QyxFQUFFbW5DO1VBQWF2OUI7YTVDaUtwQm9VO3dCNEMvSkMzbUMsS0FBTyxhQUZEOHZELElBRU45dkQsS0FBTyxrQkFGSDJvQixFQUFFbW5DLElBRTBCOztlQUZidjlCO0lBM0sxQixTQWdMRXdqQyxZQUFVcHRDLEVBQUVtbkM7TWhELzBDakIsSWdEKzBDOEJ2OUIsb0I1QzJhckJ1VixhNEMzYU1uZixFQUFFbW5DLElBQWF2OUI7SUFoTDNCLFNBbUxFeWpDLFdBQVNsRztVQUFjdjlCO2E1Q3dhbkJ1Viw0QkoxdkRULGVnRGsxQzRCdlY7SUFuTHpCLFNBc0xFMGpDLFVBQVFuRztNQUFNLG9CaERyMUNuQjtNZ0RxMUNtQixzQmhEcjFDbkIsT2dEMDBDS2dHLGdCQVdRaEcsVUFBeUI7SUF0TG5DLFNBdUxFb0csU0FBTzNqQyxLQUFNLDRCQXpWYjY5QixlQXlWTzc5QixJQUErQjtJQXZMeEMsU0F3TEU0akMsVUFBUTVqQyxLQUFNLDRCQXpWZDg5QixlQXlWUTk5QixJQUErQjtJQXhMekMsU0EwTEU2akMsU0FBU3p0QztVQUFXNEo7YTVDa0poQm9VO3dCNENoSkMzbUM7aUJBQU87MEJBRkgyb0IsV0FFVW1uQyxLQUFPLG9CQUFQQSxJQUFkOXZELElBQXVDLEVBQUM7O2VBRnpCdXlCO0lBMUx0QixTQStMRThqQyxRQUFROWpDLEtBQU0seUJBQWM3a0MsR0FBSyxPQUFMQSxDQUFNLEVBQTFCNmtDLElBQStCO0lBL0x6QyxTQTBRRStqQyxRQXpFUzN0QztNQUNILElBRGM0SixhQUNkLG9CQUNFLHdCQURONytCO01BQ00sU0FDTjg4QixJQUFFeHdCO1FBQ0osYUFGRTh2RCxJQUNFOXZEO1FBRUYsa0JBTE8yb0IsRUFLUCx1QkFKQWoxQixFQUNBbzhELEtBRzhCO01BSHhCLG1CQUNOdC9CLE1BSGtCK0I7SUFqTXRCLFNBME1FZ2tDLFVBQVFoa0MsS0FBTSxlQWwxQ2QrMEIsS0FrMUNRLzBCLElBQXFCO0lBMU0vQixTQTRNRWlrQyxVQUFVN3RDO01BQ0osSUFEZTRKLGFBQ2Ysb0JBQ0Usd0JBRE43K0I7TUFDTSxTQUNOODhCLElBQUV4d0I7UUFDSixhQUZFOHZELElBQ0U5dkQ7UUFFRixrQkFMUTJvQixFQUtSLHVCQUpBajFCLEVBQ0FvOEQsS0FHOEI7TUFIeEIsbUJBQ050L0IsTUFIbUIrQjtJQTVNdkIsU0FxTkVra0MsU0FBU2xrQyxLQUFNLGlCQTcxQ2YrMEIsS0E2MUNTLzBCLElBQXNCO0lBck5qQyxTQXlORW1rQztNQUNGLGVBNVhFdEcsaUJBNFhGLHNCQTNYRUMsZ0JBNFg2QjtJQUV4QixRQUpMcUc7SUFJSyxTQVNMQywrQkFBc0M1NEMsTUFDakNuc0IsRUFBU3doQixFQUFXOEYsRUFBVXhyQjtNQUNyQywrQkFGd0Nxd0IsTUFDakNuc0IsRUFBU3doQjtNQUNoQixZQUQyQjhGO01BQzNCLFlBRHFDeHJCO01BQ3JDLFFBRXdCO0lBYmpCLFNBZ0JMa3BFLCtCQUFzQzc0QztNQUN4QyxVQUR3Q0Esd0NBRUc7SUFLM0MsU0FERTg0QztNaERsNUNMLE9nRHE0Q0tGLCtCQXhZQXZHO0lBMlpGLFNBREUwRztNaER2NUNMLE9nRDQ0Q0tGLCtCQS9ZQXhHO0lBMlpGLFNBVUUyRyxVQUFRcmpFO01BQ0EsSUFEVzYrQixhQUNYLHdCQURBNytCO01BQ0EsU0FDTmkxQixFQUFFM29CLEtBQU0sYUFEUjh2RCxJQUNFOXZELEtBQU0sc0JBRFI4dkQsTUFDb0Q7TUFEOUMsbUJBQ05ubkMsSUFGaUI0SjtJQVZyQixTQStCRXlrQywrQkFBK0JqNUM7VUFJWnN0QyxhQUREQyxhQURBQyxhQUREQztlQUtmeUwsVUFBVXJsRSxFQUFFZ0o7UWhENzdDbkIsNEJnRDY3Q2dELElBQUx4SSxXQUFLLGtCQUEvQlIsRUFBMEJRO1FBQWdCLE9BQXhDd0k7TUFDVSwyQmhEOTdDN0IsT2dENjdDT3E4RCxVQUxlekw7TUFPUSwyQmhELzdDOUIsT2dENjdDT3lMLFVBSmdCMUw7TUFNTztNQUNBLDJCaERoOEM5QixPZ0Q2N0NPMEwsVUFIZ0IzTDtNQUtPO01BRUMsMkJoRGo4Qy9CLE9nRDY3Q08yTCxVQUZpQjVMO01BTU87SUF6QzVCLFNBMkNFNkwsK0JBQStCM2tDO01BQ3RCLElBQVA0a0MsS0FBTywrQkFEc0I1a0M7TUFDdEIsU0FDUDZrQyxjQUFjaGxFLEdBQUksa0JBRGxCK2tFLHNCQUNjL2tFLEdBQXNDO01BRDdDLFNBRVBpbEUsZUFBZWpsRSxHQUFJLGtCQUZuQitrRSxzQkFFZS9rRSxHQUF1QztNQUYvQyxTQUdQa2xFLGVBQWVsbEUsR0FBSSxrQkFIbkIra0Usc0JBR2Uva0UsR0FBdUM7TUFIL0MsU0FJUG1sRSxnQkFBZ0JubEUsR0FBSSxrQkFKcEIra0Usc0JBSWdCL2tFLEdBQXdDO01BSmpELFVBQ1BnbEUsY0FDQUMsZUFDQUMsZUFDQUMsZ0JBQzREO0lBR2hFLFNBREVDO01oRDM4Q0wsT2dEdTdDS1IsK0JBMWJBNUc7SUFpZEYsU0FERXFIO01oRDc4Q0wsT2dEbThDS1AsK0JBdGNBOUc7SUFpZEY7OztPQXh6QkU1RDtPQWljQThFO09BemtCQTdHO09BMGtCQThHO09BdmNBbkY7T0FrY0E4RTtPQWpjQTdFO09Ba2NBOEU7T0FoY0E3RTtPQWljQThFO09BaGNBN0U7T0FpY0E4RTtPQTFkQXZGO09Ba2VBK0Y7T0EvZEE5RjtPQWdlQStGO09BdmVBbEc7T0FxZUFnRztPQTFkQTVGO09BNmRBK0Y7T0ExZEE5RjtPQTJkQStGO09BcmRBN0Y7T0FzZEE4RjtPQXpkQS9GO09BMGRBZ0c7T0F0WkFuRjtPQXlaQXNGO09BeFpBckY7T0F1WkFvRjtPQWxhQXRGO09BaWFBcUY7T0E5YUF0RjtPQWRBRjtPQStiQTJGO09BemJBMUY7T0E0YkE2RjtPQXZjQS9GO09BcWNBNkY7T0F2Y0E5RjtPQXdjQStGO09BelVBMUU7T0FtVkFpRjtPQW5UQTFFO09Bb1RBMkU7T0EzVkFwRjtPQTZWQXFGO09BeFZBcEY7T0F5VkFxRjtPQTVUQS9FO09BWUFJO09Ba1RBNEU7T0ExU0EzRTtPQTJTQTRFO09BaFNBMUU7T0FrU0E0RTtPQXJTQTdFO09Bb1NBNEU7T0EvWEEvRjtPQWtZQWlHO09BL1hBaEc7T0FnWUFpRztPQTlYQWhHO09BK1hBaUc7T0E5YUF4RztPQTBaQXlGO09BalpBeEY7T0FrWkF5RjtPQTlYQXRGO09BaVlBd0Y7T0FuWUF6RjtPQW9ZQTBGO09BM1lBM0Y7T0F3WUF5RjtPQTFXQW5GO09BOFhBaUc7T0E3WEFoRztPQThYQWlHOztPQXhtQkFqSjtPQWdrQkFnSDtPQXBqQkEvRztPQXFqQkFnSDtPQXJpQkF6RztPQXVtQkFxSjtPQTNtQkF6SjtPQW1tQkFxSjtPQWxtQkFwSjtPQXNtQkFzSjtPQXJtQkFySjtPQW1tQkFvSjtPQWxtQkFuSjtPQXNtQkFxSjtPQTVRQXBGO09BcVBBMEU7T0EvUUEvRTtPQXVSQWtGO09BcFJBakY7T0FzUkFrRjtPQWhUQXJGO09BeVNBa0Y7T0E1UkFqRjtPQThSQWtGO09BdGtCQTFJO09BOGtCQTZJO09BdGxCQTlJO09Bd2xCQStJO09BM0tBbkU7T0FvQkFLO09BQ0FDO09BaEJBTDtPQVdBRztPQU1BRztPQWVBRTtPQTlDQVg7T0FYQUY7T0FtRkFjO09BR0FDO09BR0FFO09BR0FDO09BS0FFO09BR0FFO09BNEdJdUQ7T0FpQkpNO09BUUFHO09BcUJBQztPQUlBQztPQUlBQztPQTBIQWE7T0FDQUM7T0FDQUM7T0FrQkFJO09BV0FFO09BdEJBSjtPQVpBTDtPQVJBRjtPQWVBTTtPQVZBTDtPQTBGQU87T0E5REFFO09BdURBTztPQU9BVDtPQXZCQU87T0FLQUM7T0FsQkFIO09BT0FDO09BNTFCQWhNO09BeWlCQTRHO09BeGlCQTNHO09BeWlCQTRHO09BNlZBdUY7T0FvQkFRO09BUkFOO09BVUFPO0lBQ0Y7UUN2eUNJQzthQUtBQyxVQUFVQztNQUNaO1FBQ1UsSUFBSjlpRSxFQUFJLFdBRkU4aUU7UUFFRixRQUFKOWlFO1FBQUk7Z0JBRkU4aUU7UUFFRixVQUFKOWlFLEVBSWEsUUFOUDhpRTtlQUVOOWlFOzs7O1VBT0osUUFkQTRpRSxVQWNBLDJCQWRBQTttQkFrQkM7YUFHREcsVUFBVUQsSUFDWixPQURZQSxZQUdQLFVBSE9BLEdBR0s7YUFRZkUsa0JBQWtCRjtNQUNaLElBQUo5aUUsRUFBSSxVQURZOGlFLElBQ1osR0FEWUEsTUFFRixrQkFDbEIsT0FGSTlpRSxDQUVIO2FBR0NpakUsYUFBYUgsSUFDUixVQURRQSxJQUNSLE9BRFFBLEtBRU47YUFLUEksbUJBQW1CSixJQUFLLGFBQUxBLFNBQXlCO2FBRTVDSyxjQUFjTDtNQUNoQixTQURnQkE7TUFDaEI7Ozt5QkFDc0I7UUFDTSxJQUFmNzRDO1FBQWUsT0FBZkEsTUFFOEI7YUFHekNtNUMsV0FBV04sSUFDYixPQURhQSx5QkFHUTthQUtuQk8sWUFBWVAsSUFBSyxhQUFMQSxNQUFvQzthQUVoRFEsd0JBQXdCUixJQUFLLGtCQUFvQzthQXlTbkVTLGFBdlNRVDtNQUNSLGlCQURRQSxNQUVFLGFBRE5VO01BRUosUUFGSUE7TUFFSixRQUhRVjtNQUdSLE9BREluMkMsR0FHRDthQUtEODJDLFVBQVVsbUMsTUFBTXVsQyxJQUNsQix3QkFEa0JBLElBQ2xCLE9BRFl2bEMsS0FFUDthQUdIbW1DLFlBQVlubUMsTUFBTXVsQyxJQUFLLGlCQUFYdmxDLGNBQU11bEMsR0FBNkI7YUFFL0NhLFdBQVdwbUMsTUFBTXVsQyxHQUFHOWlFO01BQ3RCLFNBRG1COGlFLE1BQUc5aUUsR0FDdEIsbUJBRGF1OUIsTUFBTXVsQyxHQUVDO1FBR2xCYzthQUVBQyxTQUFPQyxNQUFNeDVEO01BUUc7O2NBbkdoQnM0RDs7Ozs7Y0EyRmF0NEQ7Y0FRRyxTQVZoQnM1RDtjQUVPRSxNQVVWO2FBR0dDLGNBQVl6bUU7TUFDZCxzQ0FEY0E7TUFDZCxTQUVJZ047UUFDRixHQUZFM0osT0FEQS9ILEtBR2dCO1FBQ1YsSUFBSm9ILEVBQUksZ0JBTEkxQyxFQUNWMUU7UUFJTTtlQUFKb0gsQ0FFSDtNQU5ILGtCQUVJc0ssS0FLbUI7O0lBR0wsU0FBaEIwNUQsc0JqRDFSUCxPaURrUU9IO0lBd0JnQixJQXFEZGxqRTtJQXJEYyxTQThDaEJzakUsa0JBQWtCNWlFO01BQUssc0JBQUxBLElBQUssaUJBQXFDO0lBOUM1QyxTQWtEaEI2aUUsa0JBQWtCN2lFLElBQU0saUJBQWlCO0lBbER6QixTQW9EaEI4aUUsUUFBUUMsY0FBY04sTUFBTXppRTtNQUU5QjtlQUlJaUo7UUFDRixHQUpFMVIsT0FDQTJoQixRQUc4QixJQUFKdmEsRUFBSSxlQUw5QitCLElBQ0FuSixNQUk4QixjQUFKb0g7UUFDNUIsR0FIRXFrRSxPQUdXO1FBQ0osZUFUbUJoakUsR0FFMUJVLE1BREFwQjtRQVFPLGFBTFA0WjtrQkFDQThwRCxXQUtpQixXQVZYRCxjQUFvQi9pRTtrQkFHMUJ6SSxTQVNFLGVBVkZtSixPQVlDO01BWkwsZ0JBRndCK2hFLE1BTXBCeDVELEtBU2E7SUFzQmpCLElBSUVnNkQsTUFKRixRQXZDRUosNEJsQy9TRnprRTtJa0NzVkEsU0FNRThrRSxhQUFhQyxRQUdidjZDO01BRkYsd0JBRUVBO1FBQ1MsSUFBTDVvQixHQUFLLFdBSkltakUsUUFHYnY2QztlQTlDQWs2QyxRQU5BRixxQkFvREFoNkMsTUFDSTVvQjtNQUZHLE9BSlBpakUsS0FPK0M7SUFHckMsU0FHVkcsZ0JqRHBZUCxPaUR5WE9GLGFsQzFWRnJqRTtJa0NtV2dCLFNBR2R3akUsb0JqRHJZUCxPaUR5WE9ILGFsQzNWRnBqRTtJa0NvV2dCLFNBS2R3akUsZUFBYXRqRSxJakR2WXBCLE9pRDhVTzhpRSxRQUZBRCxxQkEyRGE3aUUsT0FDMEI7SUFOekIsU0FTZHVqRSxTQUFTOUI7TUFDWCxTQURXQTtNQUNYO09BSWlDOztRQUpqQyxrQkFFRSxJQURhemhFLFdBQ2IsNkJBRGFBO1FBRWEsSUFBUHdqRTtRQUFPLDZCQUFQQSxNQUNjO0lBZG5CLElBaUNaQztJQWpDWSxTQWdDZEMsYUFFR1gsY0FBYy9pRTtNQUNsQjtRQUFJLGNBRGNBLEdBRGZ5akU7Ozs7VUFLQyxJQURFaEMsR0FDRixRQUpBc0IsaUJBQWMvaUU7VUFJZCxnQkFKY0EsR0FHWnloRSxJQUpIZ0M7VUFLQyxPQURFaEM7UUEzQlAsV0E4Qks7SUFJaUIsU0FBcEJrQztNakQ5YVAsT2lEa2FPRCxhQXRGQWI7SUFrR29CO2FBY3RCZSxVQUFVM25FLEdBQUksc0JBQUpBLEVBQTBCO0lBZGQsU0FnQnRCNG5FLGlCQUFpQmxsRTtNQUNULDBDQURTQSxHQUN1QztJQWpCbEMsU0FvQnRCbWxFLGlCQUFpQkM7TUFFakIsMENBRmlCQSxTQUtOO0lBekJXLFNBb0N0QkM7TUFDRixnREFBd0Q7SUFyQ2hDLFNBd0N0QkM7TUFDRixnREFBcUQ7SUF6QzdCLFNBZ0R0QkMsbUJBQW1CdmxFLEVBQUV3bEU7TWpEOWQxQixPaUQ0YktQLFVBK0JGLHlCQUdxQmpsRSxFQUFFd2xFLElBQ2dCO0lBakRmLFNBa0Z0QkMsZ0JBQWdCM0MsR0FBRzlpRTtNQUNaLElBQUx3bEUsR0FBSyxrQkFEUzFDO01BQ1QsT0FBTDBDLE9BRGlCeGxFLEVBRU4sd0JBRkc4aUUsSUFHbEIsbUJBSHFCOWlFLEVBQ2pCd2xFLEdBRW1CO0lBckZDLFNBNEVsQkUsV0FXVTVDLEdBUGRqckQ7TUFIRixVQUdFQTtRQVFPLElBQUwydEQsR0FBSyxrQkFETzFDO1FBQ1AsY0FBTDBDO2lCQUVNLHdCQUhNMUM7d0JBQ1owQztvQkFHTSx3QkFKTTFDLElBSU4sZ0JBSk1BO21CQUtULHNCQUpIMEM7Z0JBUkYzdEQ7T0EzQkY7U0FBUSxnQkFrQ1FpckQsSUFqQ1QsU0FpQ1NBO1NBakNUO1dBQXVCLFNBRDFCOWlFO1dBQzBCOzs7O3dCQUcxQix3QkE4Qlk4aUU7V0E3QlA7O01Bc0JGLHVCQU9TQSxHQVBkanJELElBQXlCO0lBaEZILFNBaUd0Qjh0RCxXQUFXN0MsSUFBd0IsdUJBQW5CLGFBQUxBLE1BQTRCO0lBakdqQixTQXFHdEI4QyxXQUFXOUM7TUFDUCxJQUdKeGxFLEVBSEksYUFET3dsRTtNQUNQLDRCQUdKeGxFOztpQkFBZSxtQ0FBZkE7O2dCQUF3RDtJQXpHbEMsU0FzSHRCdW9FO01BQTZCOzs7aUJBQ3RCO2lCQUNBO2lCQUNBO2lCQUNBO2lCQUNBOztpQkFDTTs7TUFDUiw2QkFBWTtJQTdISyxTQW1JdEJDLGtCQUFrQnppQixLQUFLeWY7TUFDekIsT0FEb0J6ZjttQkFDaEIxMkIsSUFNZ0IsV0FBTyxhQVBGbTJDO21CQUNyQm4yQyxJQUlnQixXQUFPLGFBTEZtMkM7bUJBQ3JCbjJDLElBR2dCLFdBQU8sYUFKRm0yQzttQkFDckJuMkMsSUFLZ0IsV0FBTyxhQU5GbTJDO29CQUNyQm4yQyxJQUUrQixhQUhWbTJDO01BRzJCLElBS2hENWpFLEVBTGdELHNCQUZoRHl0QjtNQVFRLFNBRFJ6dEIsWUFDUSxnQkFSUnl0QjtPQVFxQyxhQVJyQ0EsTUFPQXp0QjtNQUM0QixPQVI1Qnl0QixHQVE2RDtJQTVJekMsU0FvSnRCbzVDLFlBQVlqRCxJQUF3Qyw0QkFBbkIsYUFBckJBLElBQXdDO0lBcEo5QixTQXVMbEJrRCx3QkFBd0J6b0MsTUFBTXVsQztNakRybUJ2QyxJaURxbUJpQ3B5QjtNQUM5QjtpQkFEOEJBLFFBQ1osT0FEWUE7UUFFdEIsSUFHTjF3QyxFQUhNLFVBRjRCOGlFO1FBR2pDLEdBSGlDQSxNQUdaLE9BSE1weUI7UUFJOUIsU0FDRTF3Qzs7WUFJWSx3QkFUZ0Iwd0MsUUFBTW95QixJQUFOcHlCOztrQkFLNUIxd0M7V0FDWSx1QkFOZ0Iwd0MsUUFBTW95QixHQUtsQzlpRSxHQUw0QjB3QztRQVd2QixPQVh1QkEsUUFXbEI7SUFsTVksU0FvUXRCdTFCLDBCQS9Ed0Ixb0MsTUFBTXVsQztNQUNoQyxTQUQwQnZsQyxNQUNSO01BQ1YsSUFBSnY5QixFQUFJLGtCQUZ3QjhpRTtNQUV4QixPQUFKOWlFLGFBTVEsMENBTlJBO01BQUksSUFHRjB3QyxRQUFRLFdBTFluVCxNQUFNdWxDLEdBRTVCOWlFO01BR1UsK0JBQVIwd0MsUUFMMEJveUIsR0FRb0M7SUE3TTVDLFNBa090Qm9ELGdCQUFnQkMsTUFBTUMsT0FBTzNSLFFBQU1xTztNQUdyQyxTQUgrQnJPLFFBR2I7TUFDVixJQUFKNThDLElBQUksa0JBSjZCaXJEO01BS2xDLGNBTHFCc0QsT0FJcEJ2dUQ7UUFFVSx1QkFOaUI0OEMsUUFBTXFPLEdBSWpDanJELEtBbkJnQjBsQjtRQUNsQjttQkFEa0JBLE1BQ0EsT0FEQUE7VUFFVixJQUdOdjlCLEVBSE0sVUFhMkI4aUU7VUFaaEMsR0FZZ0NBLE1BWlgsT0FITnZsQztVQUtULGNBVWE2b0MsT0FWcEJwbUU7WUFDWSx1QkFOSXU5QixNQWVpQnVsQyxHQVZqQzlpRSxHQUxnQnU5QjtvQkFLaEJ2OUI7WUFJWSx3QkFUSXU5QixNQWVpQnVsQyxJQWZqQnZsQztVQVdYLE9BWFdBO01Bd0JSLDBDQUxSMWxCLElBSmNzdUQsT0FTeUQ7SUEzT25ELFNBOE90QkcsdUJBQWtCLCtCQUVSO0lBR1EsU0FBbEJDO01qRGpxQkwsT2lEZ3BCS0wsMkJBWUFJO0lBS2tCLFNBRWxCRSxzQkFBaUIsK0JBRVA7SUFHTyxTQUFqQkM7TWpEeHFCTCxPaURncEJLUCwwQkFtQkFNO0lBS2lCLFNBRWpCRTtNQUFnQjs7Ozs7eUJBRU47SUFHYSxTQUF2QkM7TWpEL3FCTCxPaURncEJLVCxnQ0EwQkFRO0lBS3VCLFNBS3ZCRSxVQUFVcnBDLE1BQU11bEM7TUFDVix3QkFEVUEsSUFDVixTQUFKOWlFO01BQUk7O2dCQUVDLGtCQUhHdTlCLE1BQU11bEMsR0FDZDlpRTs7aUJBR0ssa0JBSkd1OUIsTUFBTXVsQyxHQUNkOWlFO01BSUcsT0FMS3U5QixLQUtBO0lBVmEsU0FhdkJzcEMsK0JBQW1DdHBDLE1BQU11bEM7TUFDL0IsSUFBUnB5QixRQUFRLFVBRHlCblQsTUFBTXVsQztNQUMvQixpQ0FBUnB5QixRQUR1Q295QixHQUVUO0lBZlQsU0EwQ3ZCZ0Usb0JBQW9CempCLEtBQUs3TCxRQUFNc3JCO01BQ2pDLE9BRHNCemY7ZUFFSix1QkFGUzdMLFFBQU1zckI7ZUFHZixzQ0FIU3RyQixRQUFNc3JCOztTQUpyQixzQkFJZXRyQixRQUFNc3JCLElBbkIzQixvQkFtQjJCQTtTQW5CM0IsVUFDSjlpRTtXQUNZLElBQVJ1OUIsTUFBUSxXQUhNbVQsUUFvQmFveUIsR0FsQi9COWlFO1dBQ1ksU0FBUnU5QixNQUNjLE9BRGRBO1dBQVEsSUFFUjFsQixJQUFJLFVBZXVCaXJEO1dBZDVCLEdBYzRCQSxNQWRQLE9BSHBCdmxDO1dBQVE7V0FJWixTQUZJMWxCOztjQUlvQixpQ0FOcEIwbEIsTUFpQjJCdWxDLEdBZjNCanJELEtBZTJCaXJEO3dCQWYzQmpyRDs7Ozs7MEJBS3FCLGtDQVByQjBsQixNQWlCMkJ1bEMsR0FmM0JqckQsS0FlMkJpckQ7O29CQVpLLGdDQUxoQ3ZsQyxNQWlCMkJ1bEMsR0FmM0JqckQsS0FlMkJpckQ7b0JBVHhCLHdCQVJIdmxDLE1BaUIyQnVsQztTQVIxQixpQ0FaYXB5QixRQW9CYW95QjtlQUtmLHNCQUxTdHJCLFFBQU1zckI7ZUFNZixpQ0FOU3RyQixRQUFNc3JCO2dCQU9mLDRCQVBTdHJCLFFBQU1zckIsSUFPYztJQWpEdEIsU0F1RHZCaUUscUJBQXFCeHBDLE1BQU11bEM7TUFDN0IsU0FEdUJ2bEMsTUFDTCxPQURLQTtNQUVmLElBR052OUIsRUFITSxVQUZxQjhpRTtNQUcxQixPQUgwQkE7ZUFBTnZsQzttQkFLckJ2OUI7aUJBTHFCdTlCO2lCQU1HLG1DQU5IQSxNQUFNdWxDLEdBSzNCOWlFLEdBTDJCOGlFLEdBT2pCO0lBOURhLFNBa0V2QmtFLG1CQUFtQnpwQyxNQUFNdWxDO01BQzNCLFNBRHFCdmxDLE1BQ0gsT0FER0E7TUFFYixJQUFKdjlCLEVBQUksVUFGbUI4aUU7TUFHeEIsR0FId0JBLE1BR0gsT0FISHZsQztnQkFFakJ2OUIsZUFLRyxPQVBjdTlCO01BTWdCLGlEQU5oQkEsTUFBTXVsQyxHQUV2QjlpRSxHQUZ1QjhpRSxHQU9mO0lBekVhLFNBb0h2Qm1FLFdBQVd6dkIsUUFBTTB2QixVQUFVcEU7TUFuQ2pCO3VCQW1DQ3RyQixRQUFnQnNyQjtPQW5DakIsZ0NBQVJ2bEMsTUFtQ3lCdWxDO2VBQ3pCcHlCLFFBQ2MsVUFEZEEsUUFEZXcyQjtNQW5DUCxJQXNDUmxuRSxFQUFJLFVBSHFCOGlFO01BSTFCLEdBSjBCQSxNQUlMLFVBSHBCcHlCLFFBRGV3MkI7TUFLbkIsVUFGSWxuRTtRQUlVOzRCQU5WMHdDLFFBRHlCb3lCLEdBR3pCOWlFO1NBS2Msa0JBRFp5MEQsUUFQYXlTO1NBU2dCO1VBRjdCelM7O1dBQ0EwUyxjQUM2QixxQkFEN0JBLFlBUnVCckU7OztRQVUzQiw2QkFESXVELFFBVHVCdkQsSUFRdkJxRTtNQUlKLDZCQVhFejJCLFFBRHlCb3lCLElBQVZvRSxVQVlxQjtJQWhJZixTQW1JdkJFLDhCQUE4QjdwQyxNQUFNdWxDLEdBQUcvd0QsTUFBTXZXO01BQy9DLFNBQUlnWSxVQUFVeFQ7UUFDWixZQURZQSxlQUdWLGFBSFVBLHFCQUlKO01BSlY7aUNBRCtDeEU7T0FDL0MsV0FEZ0MraEM7T0FDaEMsS0FLSTU4QjtPQUxKOztZQU9BL0g7UUFDRTtVQUFRLGdCQVQ0QmtxRSxJQVVsQixlQUFVLGdCQVZpQnRuRSxJQVEvQzVDO1VBRUssYUFEQ29ILFlBQ3FDLFdBVkYrUjtVQVVVLFNBSC9DMitCLFdBSWlCLFdBWG9CMytCO1VBWTlCLHdCQUxQMitCLFdBUGtDb3lCLEdBU2hDOWlFO1VBQUksU0FEVnBIOzs7TUFNQSxPQVBJODNDLFVBT0U7SUFqSm1CLFNBb0p2QjIyQixlQUFlOXBDLE1BQU0ycEMsVUFBVXBFO01BQ2pDLGVBRGlCdmxDLFVBQ2pCLGFBQWdCLGFBRGlCdWxDO01BQ08sUUFBTTtNQUE5QztPQUNZLGtCQUZLdmxDLE1BQWdCdWxDO09BRXJCLFdBQVJweUI7T0FBUSxhQUNJLGFBSGlCb3lCO01BR08sUUFBTTtNQUY5QyxJQUdNLFlBSjJCQTtNQUkzQixTQUNKOWlFOzs7O1lBNkJZO2dDQWhDVjB3QyxRQUY2Qm95QixHQUsvQjlpRTthQTZCWSxXQUFSdzNDO2FBQVEsYUFDSSxhQW5DZXNyQjtZQW1DUyxRQUFNO1lBQWdCO3FCQUQxRHRyQixRQWxDMkJzckIsR0E3Vy9Cd0M7Ozs7a0JBa1hBdGxFO1VBQ1k7OEJBSlYwd0MsUUFGNkJveUIsR0FLL0I5aUU7V0FDWSxXQUFScW1FO1dBQVEsYUFDSSxhQVBldkQ7VUFPUyxRQUFNO1VBRGxDO1dBRVJ3RTtZQUFRLDhCQUZSakIsUUFOMkJ2RCxHQTdXL0J3QztVQXNYZ0IsU0FEWmdDLGFBQ1ksYUFUZXhFO1lBVVgsb0JBVldBLElBVVg7Ozs7O2dCQUFkeUUsaUJBRkZELFFBSU8scUJBSlBBLFFBUjJCeEU7WUFhYixTQUhaeUUsYUFHWSxhQWJhekU7Y0FjVCxJQUNkanJELElBRGMsVUFkU2lyRDtjQWNULFVBQ2RqckQ7Z0JBQ1ksdUJBTmQwdkQsUUFWeUJ6RSxHQWV2QmpyRDtnQkFFZ0IsU0FEWjJ2RCxhQUNZLGFBakJPMUU7a0JBa0JmLHNCQWxCZUE7O29CQXFCSDt1Q0FMaEIwRSxRQWhCU047cUJBZ0JUTzs7O3VCQUtJTixjQUNpQixxQkFEakJBLFlBckJlckU7Ozs7b0NBZ0JuQjJFO2tCQUVJLElBRkpDOzs7Z0JBQVEsSUFGWkMsUUFFSUQ7O21CQUZKQyxRQUpGSjtjQWVjLFNBWFpJLGFBV1ksYUF6Qlc3RTtnQkEwQm5CLElBQ0pockQsSUFESSxVQTFCbUJnckQ7MEJBMkJ2QmhyRCxtQkFJSyxPQWpCTDZ2RDtnQkFZSTtpQkFFUSxtQkFkWkEsUUFkdUI3RSxHQTJCdkJockQ7aUJBQ1ksV0FBUjh2RDtpQkFBUSxhQUNJLGFBN0JPOUU7Z0JBNkJpQixRQUFNO2dCQUFnQixzQ0FEMUQ4RSxRQTVCbUI5RTtjQXlCbUIsT0FYMUM2RTtZQUR3QyxPQUgxQ0o7VUFEd0MsT0FEMUNEO2tCQUhKdG5FOztRQWlDWTs0QkFwQ1Ywd0MsUUFGNkJveUIsR0FLL0I5aUU7U0FpQ1ksV0FBUnkwRDtTQUFRLGFBQ0ksYUF2Q2VxTztRQXVDUyxRQUFNO1FBQWdCO2lCQUQxRHJPLFFBdEMyQnFPLEdBN1cvQndDO01Bc1pLLHVCQUFnQjtJQTdMRSxTQWdNdkJ1QyxxQkFBcUJ0cUMsTUFBTTJwQyxVQUFVcEU7TUFDdkMsZUFEdUJ2bEMsVUFDdkIsYUFBZ0IsYUFEdUJ1bEM7TUFDQyxRQUFNO01BQTlDO09BQ1ksZ0NBRld2bEMsTUFBZ0J1bEM7T0FFM0IsV0FBUnB5QjtPQUFRLGFBQ0ksYUFIdUJveUI7TUFHQyxRQUFNO01BRjlDLElBR1EsWUFKK0JBLElBSS9CLFNBQUo5aUU7TUFBSTs7VUFHTTs4QkFMVjB3QyxRQUZtQ295QixHQUluQzlpRTtXQU1jLGtCQUhadzNDLFFBUHVCMHZCO1dBYUwscUNBSGxCQyxZQVZpQ3JFO1dBYWYsV0FIbEJxRSxjQUdBVztXQUFrQixRQU5sQnR3QixVQVNBdXdCO1VBSGtCLDBCQUtsQnRULFFBbEJpQ3FPOztrQ0FxQnJDLDBCQW5CRXB5QixRQUZtQ295QjtNQXNCaEMsbUJBQVk7SUF0Tk0sU0F5TnZCa0YsZ0JBQWdCenFDLE1BQU0ycEMsVUFBVXBFO01BQ2xDLGVBRGtCdmxDLFVBQ2xCLGFBQWdCLGFBRGtCdWxDO01BQ00sUUFBTTtNQUE5QztPQUNZLGtCQUZNdmxDLE1BQWdCdWxDO09BRXRCLFdBQVJweUI7T0FBUSxhQUNJLGFBSGtCb3lCO01BR00sUUFBTTtNQUY5QyxJQUlFOWlFLEVBREksVUFKNEI4aUU7TUFJNUIsU0FDSjlpRTs7VUFpQ1k7OEJBcENWMHdDLFFBRjhCb3lCLEdBS2hDOWlFO1dBaUNZLFdBQVJ3M0M7V0FBUSxhQUNJLGFBdkNnQnNyQjtVQXVDUSxRQUFNO1VBQVksNEJBRHREdHJCLFFBdENrQjB2QixVQUFVcEU7O2dCQUtoQzlpRTtTQUNZOzZCQUpWMHdDLFFBRjhCb3lCLEdBS2hDOWlFO1VBQ1ksV0FBUnkwRDtVQUFRLGFBQ0ksYUFQZ0JxTztTQU9RLFFBQU07U0FEbEMsSUFHVmpyRCxJQURJLFVBUjBCaXJEO21CQVM5QmpyRDtVQTBCQSw0QkE3QkU0OEMsUUFOa0J5UyxVQUFVcEU7U0FNcEI7VUFJRSxtQkFKVnJPLFFBTjRCcU8sR0FTOUJqckQ7VUFDWSxXQUFSd3VEO1VBQVEsYUFDSSxhQVhjdkQ7U0FXVSxRQUFNO1NBTHBDO1VBTUUsNkJBRlJ1RCxRQVYwQnZEO1VBWWxCLFdBQVJ3RTtVQUFRLGFBQ0ksYUFiY3hFO1NBYVUsUUFBTTtTQVBwQyxJQVFRLGNBZFlBLElBY1osU0FDZGhyRDtTQURjOztZQUVGLHVCQUpad3ZELFFBWjBCeEUsR0FlMUJockQ7WUFFZ0IsU0FEWnl2RCxhQUNZLGFBakJVekU7Y0FrQmxCLG9CQWxCa0JBOztnQkFxQk47bUNBTGhCeUUsUUFoQllMO2lCQWdCWk87OzttQkFLSU4sY0FDaUIscUJBRGpCQSxZQXJCa0JyRTs7OztnQ0FnQnRCMkU7Y0FFSSxJQUZKRDs7O1lBQVEsSUFBUkU7Ozs7aURBSkpKO1NBTk0sSUFRTkssaUJBV0ssYUFUREQ7U0FVUSxTQVpaQyxhQVlZLGFBMUJjN0U7V0EyQnRCLElBQ0ovcUQsSUFESSxVQTNCc0IrcUQ7cUJBNEIxQi9xRCxtQkFJSyxPQWxCTDR2RDtXQWFJO1lBRVEsbUJBZlpBLFFBZDBCN0UsR0E0QjFCL3FEO1lBQ1ksV0FBUjZ2RDtZQUFRLGFBQ0ksYUE5QlU5RTtXQThCYyxRQUFNO1dBQWdCLHNDQUQxRDhFLFFBN0JzQjlFO1NBMEJnQixPQVoxQzZFO01BK0JELG1CQUFZO0lBdFFNLFNBK1F2Qk0sWUFBWUMsSUFDRDNxQyxNQURXdWxDO01qRDk3QjNCLElpRCs3QmdCcHlCO01BQ1g7aUJBRFdBLFFBQ08sT0FEUEE7UUFFSCxJQUFKMXdDLEVBQUksVUFIYzhpRTtRQUluQixHQUptQkEsTUFJRSxPQUhicHlCO1FBSVQsR0FMVXczQjtVQU1LLElBQVJyd0QsSUFOR3F3RDtVQU1LLEdBSGJsb0UsTUFHSzZYLElBQWtCLGlCQUxoQjY0QixRQURXb3lCO1VBTUwsSUFDRSxtQkFOUnB5QixRQURXb3lCLEdBR2xCOWlFLEdBRk8wd0M7O1FBRUgsSUFNSixLQU5BMXdDO1FBTUE7Ozs7b0JBQzhCLE9BVHZCMHdDO1FBRUgsSUFRUSxtQkFWTEEsUUFEV295QixHQUdsQjlpRSxHQUZPMHdDO2lCQVdIO0lBM1JlLFNBK1J2QnkzQixVQUFVNXFDLE1BQU11bEM7TUFJVyxrQkFKakJ2bEMsTUFBTXVsQyxHQUlXLGtCQUpYQSxJQUkwQztJQW5TbkMsU0FnVXZCc0YsMEJBQ0VsekQ7TUFBSixhQUFJQSwwQ0FVaUI7SUEzVUksU0EwVnZCbXpELGdCQUFnQmpELFFBQVE3bkMsTUFBTXVsQztNQUNoQyxTQUQwQnZsQyxNQUNSLHdCQURBNm5DO01BRVYsSUFBSnBsRSxFQUFJLFVBRndCOGlFO01BRzdCLE9BSDZCQSxNQTdqQjlCLG1DQTZqQmdCc0MsVUFFZHBsRSxDQUVIO0lBRzRCLFNBQTNCc29FO01qRGhoQ0wsT2lEeWdDS0Q7SUFRNkIsU0FBN0JFO01qRGpoQ0wsT2lEeWdDS0Y7SUFRNkIsU0FFN0JHLG9CQUFvQmpyQyxNQUFNdWxDO01BQ3RCLGdDQURnQnZsQyxNQUFNdWxDO01BQ3RCLFNBbkRrQjJGOzs7Ozs7Y0FpRXRCOzs7a0JBQ1UsZ0JBaEJnQjNGLElBZ0JoQixLQUFKOWlFO2tCQUFJOzs7O2tDQUFKQSxFQUdHLGlCQUhIQSxFQUdxQjtlQUNsQjtlQUNBO2VBeENKLCtCQUh3QjhUO2VBRXhCLG9DQUZxQkQ7O3NCQUN4QmdFO3lCQU1KLFlBTklBOzt3QkFLQSxtQ0FOd0JoRSxHQUFHQztxQkFsd0IzQjZ2RCxXQXd4QmtCcG1DLGNBQU11bEM7Ozs7Ozs7O2tCQWxESjJGO1dBdUR0Qjs7O2VBQ1UsSUFFTnpvRSxFQUZNLFVBTmdCOGlFO2VBTWhCLFdBRU45aUUsYUFDSyxpQkFETEEsSUFDdUI7WUFFbEI7WUFDQTtZQTVESDtzQkFGZ0J5b0UsMkJBQUdHOztjQUFHQzs7OzttQkFDMUI3b0UsMkJBUUosWUFSSUE7O3FCQU1BLG1DQVBvQnlvRSxHQUFHRyxLQUFHQztrQkF0dUIxQmxGLFdBd3hCa0JwbUMsY0FBTXVsQzs7aUJBbERKMkY7OztRQVpELFVBWUNBOzs7Ozs7Ozs7Ozs7ZUF0dUJwQjlFLFdBd3hCa0JwbUMsTUFBTXVsQztNQXdCMUIsd0JBMUVzQjJGLEdBMEVKO0lBMUJXLFNBOEI3QkssZUFFaUJ2ckMsTUFGSXVsQztNQUV2QixTQVlJaUcsVUFBVXhyQztRQUNOLElBRUp2OUIsRUFGSSx5QkFETXU5QixNQWRTdWxDO1FBZWYsY0FFSjlpRSxFQURRLFlBRkV1OUIsTUFkU3VsQyxJQWlCZCxzQkFBTDlpRSxFQUE4QjtNQWQxQixJQUVKQSxFQUZJLGtCQUhlOGlFO01BR2YsVUFFSjlpRTtRQURrQjs2QkFGSHU5QixNQUZJdWxDO1NBUWYsNkJBRE1weUIsUUFQU295QjtRQVFmLGNBR0pqckQ7aUJBRFUsOEJBQXFCLFlBSHJCNjRCLFFBUFNveUI7aUJBWVQscUJBTEFweUIsUUFQU295QixHQVduQmpyRDtNQU5LLDZCQUFMN1gsRUFjWTtJQWpEZSxTQXFEN0JncEUsaUJBRWlCenJDLE1BRk11bEM7TUFFekIsU0FLSW1HLG9CQUFVMXJDO1FqRDdrQ2pCLElpRDZrQ2lCbVQ7UUFDWjtVQUFNLElBR0oxd0MsRUFISSwyQkFETTB3QyxRQVBXb3lCO1VBUWpCLFVBR0o5aUUsRUFGUSxtQkFGRTB3QyxRQVBXb3lCO29CQVdyQjlpRTtZQUR1QjtpQ0FIYjB3QyxRQVBXb3lCO2FBY2pCLGlDQURXdHJCLFFBYk1zckI7WUFjakI7Y0FFZ0IscUJBSEx0ckIsUUFiTXNyQjtjQWdCRDs7dUJBUXBCb0c7OztjQVRxQjttQ0FGTjF4QixRQWJNc3JCO2VBb0JqQixtQ0FEU3VELFFBbkJRdkQ7Y0FvQmpCO2dCQUNnQixxQkFGUHVELFFBbkJRdkQ7Z0JBcUJEOzt5QkFHcEJvRzs7Y0FUcUIsSUFPTixtQkFIRjdDLFFBbkJRdkQsT0FPWHB5Qjs7WUFHYSxJQU9SLDRCQUpBOEcsUUFiTXNyQixJQU9YcHlCOztVQUNOLElBR1csbUJBSkxBLFFBUFdveUIsR0FXckI5aUUsR0FKVTB3QzttQkFJcUM7TUFUbkQsU0FzQkl3NEIsb0JBQVkzckM7UWpEOWxDbkIsSWlEOGxDbUJtVDtRQUNkO1VBQU0scUNBRFFBLFFBeEJTb3lCO1VBeUJqQjtZQUNlLHdCQUZQcHlCLFFBeEJTb3lCLElBd0JUcHlCO1VBR1A7O21CQXBCTHU0QixzQkFpQll2NEI7d0NBakJadTRCLGVBaUJZdjRCLFVBR1E7TUF6QnhCLFNBS0lxNEIsVUFBVXhyQyxPakQ3a0NqQix1QmlENmtDTzByQyxjQUFVMXJDO01BSk4sSUFFSnY5QixFQUZJLGtCQUhpQjhpRTtNQUdqQixjQUVKOWlFO2VBRGtCLHNCQUZIdTlCLE1BRk11bEM7ZUFLaEIsc0JBQUw5aUUsRUF3Qlk7SUFsRmUsU0FvRzdCbXBFLHVCQUF1QjdzRSxTQUFTOHNFLFdBQVc3ckMsTUFBTXVsQztNQUNuRCxTQUFRdUcsV0FBV3p3RSxFQUFFc3ZFO1FqRHRuQ3hCLElpRHNuQ3NCL29FO1FBQ2pCO1VBQVEsZ0JBRnlDMmpFLElBRXpDLFNBRFMzakU7VUFDVDtZQUNRLGFBSGlDMmpFO1lBR2pDO2FBQ2Isd0JBSm9CeG1FLFNBRW5CMEQsR0FFRCxVQUZDQSxNQURla29FOzs7OztVQUtqQjtZQUFRLFdwQ3ZoQ0Y5cEUsUW9DaWhDeUMwa0UsR0FFN0M5aUUsR0FJTSxRQUxPYjtzQkFNTztNQU4xQixHQURrQ2lxRTtRQVdoQyxJQURLcHBFLEVBVjJCb3BFO1FBV2hDLFdBWDJDN3JDLE1BVXRDdjlCO1FBQ0wsYUFYaUQ4aUU7UUFZMUM7VUFDSSxJQUFMMEMsR0FBSyxVQWJzQzFDO1VBYXRDLE9BSE45aUUsTUFHQ3dsRSxHQUVDLHdCQWYwQzFDLElBZ0IxQyxtQkFORjlpRSxFQUdDd2xFO1FBSkU7d0JBVG1Dam9DLFNBZ0JiO0lBcEhELFNBd0g3QityQyxnQkFBZ0J4RyxHQUloQnJsRTtNakQ3b0NMLEdpRDZvQ0tBO1dBSGFILEVBR2JHOzs0QkFBSyxNQUFMQSxNQUhhSCxFQUdiRztNQUZRLElBQUo3RSxFQUFJLFdBRlFrcUU7TUFHTiwwQ0FETmxxRSxFQURTMEU7SUF6SGdCLFNBZ0k3QmlzRSxZQUFZekcsR0FBR3JtRTtNQUNqQixPQURpQkE7ZUFFQyxPQUZKcW1FLGFBR0ksa0JBSEpBLFlBSUssT0FKTEEsTUFJNEI7SUFwSVgsU0F3STdCMEcsaUJBQWlCbHNDO01BQVUsR0FBVkEsU0FFSCxJQUFUQyxNQUZZRCxXQUVILE9BQVRDLE1BREcsT3BDdGpDQW4vQixPb0N1akNXO0lBMUlVLFNBNkk3QnFyRSwwQkFBMEJDO01BQzVCLFNBRDRCQSxPQUNLO01BQ3JCO29DQUZnQkE7T0FHaEIsb0JBRE5sdUU7T0FFVSxjQUZWQSxNQUNNLHNCQUROQTtNQUVVLFVBRFYwc0UsSUFDQTFzQixRQUNRO0lBbEppQixTQTRKekJtdUIsOEJBR0o5MUMsRUFBRTRKO01qRGhyQ1AsSWlEZ3JDTytDO01BQU87aUJBQVBBO1FBcUNrQyxrQkFyQ3BDM007O1FBQVMsT0FBUDJNO2lCQUtrQyxVQUxsQ0E7aUJBTWtDLFVBTmxDQTtpQkFPa0MsVUFQbENBO2lCQVFrQyxVQVJsQ0E7aUJBU2tDLFVBVGxDQTtpQkFVa0MsVUFWbENBO2lCQVdrQyxVQVhsQ0E7aUJBWWtDLFVBWmxDQTtpQkFha0MsVUFibENBO2lCQWNrQyxXQWRsQ0E7a0JBaUJrQyxXQWpCbENBO2tCQWtCa0MsV0FsQmxDQTtrQkFtQmtDLFdBbkJsQ0E7a0JBZ0NrQyxXQWhDbENBOztXQWtDMkIsSUFETDFuQyxLQWpDdEIwbkMsU0FpQ2U5a0MsTUFqQ2Y4a0MsU0FrQzJCLGVBQVcsS0FEdkI5a0M7V0FDWTs7b0JBTTdCa3VFLHNDQXhDQS8xQyxPQWlDd0IvNkI7O29CQU94Qjh3RSwrQkF4Q0EvMUMsT0FpQ3dCLzZCO2tCQWxCWSxXQWZsQzBuQztrQkFnQmtDLFdBaEJsQ0E7a0JBMEJrQyxXQTFCbENBOzs7O2FBNEJzQjtjQURvQnpuQyxPQTNCMUN5bkM7O2NBMkJnQzRNO2NBQ1Ysa0JBRFVBLE9BQVVyMEM7Y0EzQjFDeW5DOztXQThCc0I7WUFEb0J4bkMsT0E3QjFDd25DOztZQTZCZ0NvTjtZQUNWLGtCQURVQSxPQUFVNTBDO1lBN0IxQ3duQzs7O1dBRUYsSUFETzhILFNBREw5SDtXQUVGLGdCQUFJcXBDO2FBQ0YsU0FBSUMsTUFBTUM7ZUFBZSxrQkFIM0JsMkMsS0FFSWcyQyxPQUNRRSxjQUE4QzthQUF4RCwyQkFBSUQsTUFGQ3hoQyxTQUc2QjtrQkFrQkEsV0F0QmxDOUg7a0JBdUJrQyxXQXZCbENBO2tCQXdCa0MsV0F4QmxDQTs7ZUFtQ2tCdm5DLE9BbkNsQnVuQyxTQW1DYTVqQyxJQW5DYjRqQztXQXlFVyxVQXRDRTVqQztZQXNDRixPQXRDRUE7eUJBbkNiNGpDLE1BbUNrQnZuQzt5QkFuQ2xCdW5DLE1BbUNrQnZuQzs7ZUF3Q3BCLGdCQUFJNHdFO2lCQUNGLFNBQUlDLE1BQU1DO21CQUFlLGtCQTVFM0JsMkMsS0EyRUlnMkMsT0FDUUUsY0FBOEM7aUJBQXhELDJCQUFJRCxNQXpDYzd3RSxPQTBDVzswQkE3RTdCdW5DLE1BbUNrQnZuQzs7WUFzQ1AsT0F0Q0UyRDt5QkFuQ2I0akMsTUFtQ2tCdm5DO3lCQW5DbEJ1bkMsTUFtQ2tCdm5DO3lCQW5DbEJ1bkMsTUFtQ2tCdm5DO3lCQW5DbEJ1bkMsTUFtQ2tCdm5DO3lCQW5DbEJ1bkMsTUFtQ2tCdm5DO3lCQW5DbEJ1bkMsTUFtQ2tCdm5DO3lCQW5DbEJ1bkMsTUFtQ2tCdm5DO3lCQW5DbEJ1bkMsTUFtQ2tCdm5DO3lCQW5DbEJ1bkMsTUFtQ2tCdm5DOztlQXNEZSxJQUFWMkMsUUF0RFZnQjtlQXNEb0I7O3dCQWpEbkNndEU7b0NBeENBLzFDLEVBeUZ5Qmo0QixRQXRETDNDOzt3QkFLcEIyd0UsK0JBeENBLzFDLEVBeUZ5Qmo0QixRQXRETDNDOzBCQW5DbEJ1bkMsTUFtQ2tCdm5DOzBCQW5DbEJ1bkMsTUFtQ2tCdm5DO2tCQWZnQixXQXBCbEN1bkMsK0JBcUN1QztJQXBNWixTQXVNN0JvcEMsb0NBR0EvMUMsRUFBRW40QixNQUFNK2hDO01qRDN0Q2IsSWlEMnRDTzdoQztNQUFhO2lCQUFiQTtTQXFCNkI7O2tCQW5FM0IrdEUsZ0NBOENKOTFDLEVBQVE0Sjt1Q0E5Q0prc0MseUJBOENKOTFDLEVBQVE0Sjs7UUFBTyxPQUFiN2hDO2lCQVM2QixZQVQ3QkE7aUJBVTZCLFlBVjdCQTtpQkFXNkIsWUFYN0JBO2lCQVk2QixZQVo3QkE7aUJBYTZCLFlBYjdCQTtpQkFjNkIsWUFkN0JBO2lCQWU2QixZQWY3QkE7aUJBZ0I2QixZQWhCN0JBO2lCQW9CNkIsWUFwQjdCQTs7V0F1Qk87WUFEa0I5QyxLQXRCekI4QztZQXNCb0IxQixJQXRCcEIwQjtZQXNCZW5DLElBdEJmbUM7WUF1Qk8sU0FBTSxLQURFbkMsS0FBS1M7WUFFTSxzQkFEeEJYLEdBRHVCVDtZQXRCekI4Qzs7a0JBaUI2QixhQWpCN0JBO2tCQWtCNkIsYUFsQjdCQTtrQkFtQjZCLGFBbkI3QkE7O1dBRUYsSUFEVTBzQyxTQURSMXNDO1dBRUYsZ0JBQUlpdUU7YUFDRixTQUFJQyxNQUFNQztlQUFlLGtCQUgzQmwyQyxLQUVJZzJDLE9BQ1FFLGNBQThDO2FBQXhELGlDQUFJRCxNQUZJeGhDLFNBREY3SyxJQUlzQzs7V0FFOUMsSUFEa0IrSyxXQUxoQjVzQztXQU1GLGdCQUFJaXVFO2FBQ0YsU0FBSUMsTUFBTUM7ZUFBZSxrQkFQM0JsMkMsS0FNSWcyQyxPQUNRRSxjQUE4QzthQUF4RCxpQ0FBSUQsTUFGWXRoQyxXQUxWL0ssSUFRc0MsRUFnQlE7SUFsT3pCLFNBNEp6QnVzQyxvQkFHSm4yQyxFQUFFNEo7TWpEaHJDUCx1QmlENnFDU2tzQyx3QkFHSjkxQyxFQUFFNEo7SUEvSjJCLFNBdU03QjJzQywwQkFHQXYyQyxFQUFFbjRCLE1BQU0raEM7TWpEM3RDYix1QmlEd3RDS21zQyw4QkFHQS8xQyxFQUFFbjRCLE1BQU0raEM7SUExTXFCLFNBcWE3QjRzQyxlQU1BdkgsR0FBR3JsQyxJQUFJNnNDLFFBQVFod0UsSUFBSUUsS0FBS3NULEtBQUs2a0Q7TUFBUyxVQUF2QnI0RDtrQkFBSUU7VUF3Qm5CLEdBeEJtQkEsS0F3Qm5CO1VBdEJRLFdBRmdCc1QsS3BDeDFDaEIxUCxnQm9DdzFDUjBrRTtVQUdRLElBQUpybEUsRUFBSSxXQUhxQmsxRCxNQUE3Qm1RO1VBSVMsVUFETHJsRSxFQUNLLFdBSlRxbEUsR0FBR3JsQyxJQUFJNnNDO1FBTVAsSUFEMEJwK0QsRUFMUDFSO1FBTVgsV0FOZ0JzVCxLcEN4MUNoQjFQLFFvQzYxQ2tCOE4sRUFMMUI0MkQ7UUFNQSxJQUNJbnNELElBQUksV0FQcUJnOEMsTUFBN0JtUTtRQVFTLFVBRExuc0QsSUFDSyxXQVJUbXNELEdBQUdybEMsSUFBSTZzQzs7UUFBK0IsU0FBdkJod0U7OztzQkFBSUU7Y0FvQm5CLEdBcEJtQkEsS0FvQm5CO2NBVlEsV0FWZ0JzVCxVcEN4MUNoQjFQLFFvQ3cxQ1Iwa0U7Y0FXUSxJQUFKM2lCLElBQUksV0FYcUJ3UyxNQUE3Qm1RO2NBWVMsVUFETDNpQixJQUNLLFdBWlQyaUIsR0FBR3JsQyxJQUFJNnNDO2dCQWF5Q3g0QixJQWI3QnQzQztZQWNYLFdBZGdCc1QsVUFhd0Jna0MsSUFiaERneEI7WUFlUSxJQUFKeGlCLElBQUksV0FmcUJxUyxNQUE3Qm1RO1lBZ0JTLFVBREx4aUIsSUFDSyxXQWhCVHdpQixHQUFHcmxDLElBQUk2c0M7VUFrQlA7UUFJQSwrQ0FFMEM7SUFuY2IsU0FxUXpCQyxXQUdKekgsR0FBR3JsQyxJQUFJNnNDO01qRHp4Q1osSWlEeXhDUTlwQztNQUFlO2lCQUFmQTtRQXdKSDs7UUF4SmtCLE9BQWZBOztXQUVILElBREsxbkMsS0FERjBuQztXQUVLLFlBRlJzaUM7V0FFQSxJQUNJOWlFLEVBQUksV0FIUjhpRTtXQUlTLFVBREw5aUUsRUFDSyxXQUpUOGlFLEdBQ0tocUUsS0FERXd4RTs7V0FNUCxJQURVdnhFLE9BTFB5bkM7V0FNSyxpQkFOUnNpQztXQU1BLElBQ0lqckQsSUFBSSxXQVBSaXJEO1dBUVMsVUFETGpyRCxJQUNLLFdBUlRpckQsR0FLVS9wRSxPQUxIdXhFOztvQkFBSjlwQzs7OztlQVdZO2dCQUQwQnZuQztnQkFBWmdEO2dCQUNkLGdDQURjQTtnQkFDZDs7OzBCQUNOc2hDLFlBQVF1bEM7bUJBQUssc0JBRGxCb0YsS0FDSzNxQyxNQUFRdWxDLEdBQW9DO2dCQUR0QyxhQUFOdG5FLElBRGdDdkM7ZUFDMUI7d0JBWGY2cEUsR0FhSTJILFNBYkdILGVBWUhFLE9BcHhCSmpIOzs7OztrQkF1eEIwRHJxRTs7a0JBQVhnb0M7a0JBQzNDd3BDOzRCQUFLbnRDLFlBQVF1bEMsSUFBSyx3QkFBYnZsQyxNQUFRdWxDLEdBQW9DO2lCQUNuQzswQkFqQmxCQTswQkFpQmtCLFdBRjZCNWhDLE1BQVdob0M7MEJBZm5Eb3hFOzs7MEJBZ0JISTswQkF4eEJKbkg7O2dCQTJ4QjBEcHFFOztnQkFBWHd2QztnQkFDM0NnaUM7MEJBQUtwdEMsWUFBUXVsQyxJQUFLLHdCQUFidmxDLE1BQVF1bEMsR0FBb0M7ZUFDbkM7d0JBckJsQkE7d0JBcUJrQixXQUY2Qm42QixNQUFXeHZDO3dCQW5CbkRteEU7Ozt3QkFvQkhLO3dCQTV4QkpwSDs7O1lBK3hCYXZxRSxPQXZCVnduQztZQXdCQzF5QixjQUFLeXZCLFlBQVF1bEMsSUFBSyxxQkFBYnZsQyxNQUFRdWxDLEdBQThCO2tCQXFJL0N1SCxlQTdKQXZILEdBdUJhOXBFLE9BdkJOc3hFLGVBd0JIeDhELEtBaHlCSnkxRDs7O1lBbXlCa0JucUUsT0EzQmZvbkM7WUEyQlVsbUMsSUEzQlZrbUM7WUE0QkNvcUMsZ0JBQUtydEMsWUFBUXVsQyxJQUFLLHdCQUFidmxDLE1BQVF1bEMsR0FBOEI7a0JBaUkvQ3VILGVBN0pBdkgsR0EyQmtCMXBFLE9BM0JYa3hFLFFBMkJNaHdFLE1BQ1Rzd0UsT0FweUJKckg7O1dBdXlCUTtZQURlbHFFLE9BOUJwQm1uQztZQThCY2htQyxLQTlCZGdtQztZQThCU2ptQyxNQTlCVGltQztZQThCRTlsQyxNQTlCRjhsQztZQStCSyxnQ0FBMkIsY0FEOUI5bEM7WUFDRztzQkFDQzZpQyxZQUFRdWxDO2VBQUssMkJBenZCWnpmLEtBeXZCRDlsQixNQUFRdWxDLEdBQW1DO1dBQ1A7b0JBakM3Q0E7b0JBOEJ1QnpwRTtvQkE5QmhCaXhFO29CQThCSy92RTtvQkFBS0M7b0JBRWJxd0U7NkJBenZCVy9IO3NCQUE4QywwQkFBM0Isa0JBQXhCemYsS0FBS3lmOztXQTR2QlA7WUFEaUJ4cEUsT0FsQ3RCa25DO1lBa0NnQjdsQyxPQWxDaEI2bEM7WUFrQ1cvbEMsTUFsQ1grbEM7WUFrQ0kzbEMsUUFsQ0oybEM7WUFtQ0ssa0NBQTJCLGNBRDVCM2xDO1lBQ0M7c0JBQ0MwaUMsWUFBUXVsQztlQUFLLDJCQXh1QlZnSSxPQXd1Qkh2dEMsTUFBUXVsQyxHQUFtQztXQUNQO29CQXJDN0NBO29CQWtDeUJ4cEU7b0JBbENsQmd4RTtvQkFrQ083dkU7b0JBQUtFO29CQUVmb3dFOzZCQXh1QmFqSTtzQkFBZ0QsMEJBQTNCLGtCQUExQmdJLE9BQUtoSTs7V0EydUJUO1lBRHFCdHBFLE9BdEMxQmduQztZQXNDb0IxbEMsT0F0Q3BCMGxDO1lBc0NlNWxDLE1BdENmNGxDO1lBc0NReGxDLFFBdENSd2xDO1lBdUNLLGtDQUEyQixjQUR4QnhsQztZQUNIO3NCQUNDdWlDLFlBQVF1bEM7ZUFBSywyQkE3dUJOa0ksT0E2dUJQenRDLE1BQVF1bEMsR0FBbUM7V0FDUDtvQkF6QzdDQTtvQkFzQzZCdHBFO29CQXRDdEI4d0U7b0JBc0NXMXZFO29CQUFLRTtvQkFFbkJtd0U7NkJBN3VCaUJuSTtzQkFBb0QsMEJBQTNCLGtCQUE5QmtJLE9BQUtsSTs7V0FndkJiO1lBRGlCcHBFLE9BMUN0QjhtQztZQTBDZ0J2bEMsT0ExQ2hCdWxDO1lBMENXemxDLE1BMUNYeWxDO1lBMENJcmxDLFFBMUNKcWxDO1lBMkNLLGtDQUEyQixjQUQ1QnJsQztZQUNDO3NCQUNDb2lDLFlBQVF1bEM7ZUFBSywyQkEvdUJWb0ksT0ErdUJIM3RDLE1BQVF1bEMsR0FBbUM7V0FDUDtvQkE3QzdDQTtvQkEwQ3lCcHBFO29CQTFDbEI0d0U7b0JBMENPdnZFO29CQUFLRTtvQkFFZmt3RTs2QkEvdUJhckk7c0JBQWdELDRCQUEzQixrQkFBMUJvSSxPQUFLcEk7O2tCQW1zQmR0aUM7OztrQkE4QzBDNW1DLFFBOUMxQzRtQyxTQThDb0MrSSxPQTlDcEMvSSxTQThDK0JubEMsTUE5Qy9CbWxDO3FCQTZKSDZwQzt1QkE3SkF2SDt1QkE4QzZDbHBFO3VCQTlDdEMwd0U7dUJBOEMyQmp2RTt1QkFBS2t1Qzt1QkEvYnZDeStCO3VCQXRVQWpDOzs7a0JBMHdCNENsc0UsUUFuRHpDMm1DLFNBbURtQ21KLE9BbkRuQ25KLFNBbUQ4QmpsQyxNQW5EOUJpbEM7cUJBNkpINnBDO3VCQTdKQXZILEdBbUQ0Q2pwRSxRQW5EckN5d0UsUUFtRDBCL3VFLE1BQUtvdUMsT0F6Z0J0QzA5QixlQWpRQXRCOztrQkF3d0JrQnBzRSxRQWpEZjZtQyxTQWlEU3BsQyxPQWpEVG9sQyxTQWlESXRsQyxNQWpESnNsQztxQkE2Skg2cEM7dUJBN0pBdkgsR0FpRGtCbnBFLFFBakRYMndFLFFBaURBcHZFLE1BQUtFLE9BdmlCWjZyRSxXQWpPQWxCOzs7WUE0d0JXanNFLFFBckRSMG1DO1lBcURHN2tDLE1BckRINmtDO1lBc0RDNHFDO2lDQUFTdEk7ZUF2T1A7b0NBdU9PQTtnQkF2T1A7eUJBS0o5aUU7OytCQUNBLFVBQ0UseUJBRkZBO2VBR0oscUJBUEl1bUIsRUFzT1d1OEMsR0FBaUI7a0JBdUc5QnVILGVBN0pBdkgsR0FxRFdocEUsUUFyREp3d0UsUUFxREQzdUUsUUFDRnl2RSxPQTV6Qkp4Rjs7V0E2MEJBLElBRE05cEUsUUF0RUgwa0M7V0F1RUEsZ0JBdkVIc2lDLFNBQUd0aUMsTUFzRUcxa0M7V0FFRDs7ZUFFZ0JDLFFBMUVsQnlrQyxTQTBFYVQsTUExRWJTO1dBMkVILHNCakRwMkNMLE9pRDBmU2tsQyxXQSt4Qko1QyxVQTBFZ0IvaUM7ZUExRWJTLE1BMEVrQnprQzs7O2VBR0ZDLFFBN0VoQndrQyxTQTZFVy9rQyxJQTdFWCtrQztXQThFSCxXQTlFQXNpQyxHQTZFY3JuRTtlQTdFWCtrQyxNQTZFZ0J4a0M7OztlQUlTRSxRQWpGekJza0MsU0FpRmtCOWtDLE1BakZsQjhrQyxTQWlGU2xELFFBakZUa0Q7V0FrRkssaUJBQWlCLGlCQURibEQsU0FqRlp3bEM7V0FtRlEsSUFBSnhsRSxFQUFJLGFBbkZSd2xFO1dBbUZRO2FBRUYsZ0NBRkZ4bEUsRUFGaUI1QixPQUdqQm90Qzs7OzthQUVrQixlQUZsQkEsTUFFa0IsVUFBUG5nQztXQUVKLFVBSlBtZ0MsTUFJTyxXQXhGWGc2QixHQWlGNEI1bUUsUUFqRnJCb3VFOztlQXlGdUJsdUUsUUF6RjNCb2tDLFNBeUZvQjVrQyxRQXpGcEI0a0MsU0F5Rlc5QyxVQXpGWDhDO1dBMEZLLGlCQUFpQixpQkFEWDlDLFdBekZkb2xDO1dBMkZRLElBQUpqMUQsSUFBSSxhQTNGUmkxRDtXQTJGUTthQUdjOzBDQUhsQmoxRDtjQUdrQjtjQUNDLDRCQUpuQkE7Y0FJbUI7Y0FjbkIsa0JBZFlrOEIsTUFjSyxVQUFXLEtBcEJUbnVDO2NBbUJuQixpQkFkWTZ0QyxNQWNJLFVBbkJHN3RDO2NBR2R3dEM7Y0FBTEg7OzttQ0FvQko7YUFGc0I7OzZCQUFQa1k7Y0FsQk4vWDtjQUFMSDtXQXFCRTtzQkFyQkZBLE1BREFwN0I7bUJBc0JFLFdBakhOaTFELEdBaUhvQixXQXJCWDE1QixNQUhxQmh0QyxTQXpGdkJrdUU7a0JBeURQO2tCQUVBOztXQTRFNEI7WUFESWp1RSxRQXRJN0Jta0M7WUFzSWE3b0MsZUF0SWI2b0M7WUF1SXlCLDhCQURaN29DO1dBQ2hCLHNCakRoNkNMLE9pRDBmUyt0RSxXQSt4Qko1QztXQXVJNEIsSUF2SXpCdGlDLE1Bc0k2Qm5rQzs7O29CQXRJN0Jta0M7O2lCQXlJMENoa0MsUUF6STFDZ2tDLHlCQXlJK0JpSzthQUNsQyxXQTFJQXE0QjthQTBJbUIsV0ExSW5CQTthQTJJYyxzQkFGb0JyNEIsTUFBV2p1QyxTQXpJMUNna0M7O2VBNEkwQzlqQyxRQTVJMUM4akMseUJBNEkrQnVLO1dBQ2xDLFdBN0lBKzNCO1dBNkltQixXQTdJbkJBO1dBOEljLHNCQUZvQi8zQixPQUFXcnVDLFNBNUkxQzhqQzs7O1dBK0RILElBRE84SCxTQTlESjlIO1dBK0RILEdBL0RPOHBDO2FBaUVLO2NBRElQLGFBaEVUTztjQWdFQ1QsT0FoRURTO2NBaUVLLGFBREpULE9BaEVSL0c7YUFrRWEsVUFETHJsRSxFQUNLLFdBbEVicWxFLEdBOERPeDZCLFNBRVN5aEM7V0FJWjs7b0JBcEVEdnBDOzthQW9IWTtjQURpRDNqQztjQUFad3VFO2NBQTFCbHVDLFdBbkh2QnFEO2NBb0hZLGtDQURxQzZxQztjQUNyQzs7Y0FDSDthQUNaLHVCQUgwQmx1QyxjQUN0Qm11QyxPQUNBNTZCLFFBckhKb3lCO2FBb0hlLElBR1AsaUJBdkhSQSxJQXVIUSxlQUhDbmlDLE1BRHVEOWpDO2FBTXZELFVBRkwwdUUsSUFFSyxXQXpIVHpJLEdBd0hJMEksV0F4SEdsQjtXQTJISztZQUR3QjN0RSxRQTFIakM2akM7WUEwSHVCbGtDLFNBMUh2QmtrQztZQTJIUztXQUNaLHVCQUYwQmxrQyxXQUN0QmloQyxNQTNISnVsQztXQTJIWSxJQUVSM3lDLElBQUksYUE3SFIyeUM7V0E4SFMsVUFETDN5QyxJQUNLLFdBOUhUMnlDLEdBMEhvQ25tRSxRQTFIN0IydEU7O1dBZ0lLO1lBRGVuM0IsUUEvSHhCM1M7WUErSGUvakMsUUEvSGYrakM7WUFnSVMsa0JBaElac2lDLEdBK0hrQnJtRTtXQUVMLFVBRFR1NkIsTUFDUyxXQWpJYjhyQyxHQStIMkIzdkIsUUEvSHBCbTNCOztXQW1JUCxZQW5JRzlwQyxTQW1JSyxzQkFuSVJzaUM7V0FvSVMsVUFETGhyRCxJQUNLLFdBcElUZ3JELEdBa0llMXZCLFFBbElSazNCOztXQWlKcUI7WUFEUm1CLFFBaEpqQmpyQztZQWdKWTVqQyxJQWhKWjRqQztZQWlKeUIsdUNBRGI1akMsSUFBSzZ1RTtZQUNRO1lBQ2hCLG1CQWxKWjNJLEdBaUpxQngzQixPQWpKZGcvQjtXQWtKSyxZQUNZLElBQWJvQixvQkFBYSxPQUFiQTtXQUNGO2tCQXZGVCxtREEyRkc7SUFoYTBCLFNBMGM3QkMsT0FBTzdJLEdBQUc4STtVQUFpQnB3RSxhQUFMaWlDO2VBQ2hCb3VDLE1BQ0YvdUUsRUFBRWdtRDtZQUFGbkQsTUFBRW1zQjtRQUFRO2FBQVJBO1lBQ2lCO2FBQVo3dUUsRUFETDZ1RTthQUNFcnVFLEVBREZxdUU7YUFDaUIsZUFEbkJuc0IsSUFDSWxpRDthQURKa2lEO2FBQUVtc0IsT0FDSzd1RTs7VUFDRixPQUZMMGlELElBRU07ZUFFUjlyQixFQUFFeTJDLFFBQVF4dEU7UUFDWixZQVBPZ21FO1FBT1A7VUFDZSx1QkFSUkEsR0FBZXJsQyxJQU1sQjZzQztjQUdBeUI7Ozs7Ozs7Ozs7Ozs7Ozs7O2FBQ2lCcGpFLElBRGpCb2pFOztjQUVBO2dCQUFZLElBREtwakUsSUFDRSxrQkFBa0IsY0FYZG5OOztvQ0FTdkJ1d0U7OzBCQUlhLElBQVJqcEIsYUFBUSxhQVBMaG1ELEVBT0hnbUQ7UUFDTSxJQUFQaXBCO1FBQU8sa0JBZExILEdBQUg5SSxHQWNDaUosSUFBZ0I7YUE1VHBCL0Isb0JBb1RGbjJDLEVBTm9CNEo7SUExY08sU0ErZDdCdXVDLE9BQU9sSixHQUFHcmxDLEtBQU0sY0FBVHFsQyxHQXZXUHdHLGdCQXVXVTdyQyxJQUFvQztJQS9kakIsU0FpZTdCd3VDLFFBQVEzdUUsRUFBRXN1RSxHQUFHbnVDLEtBQWMsNEJBQW5CbmdDLEdBQUVzdUUsR0FBR251QyxJQUE2QztJQWplN0IsU0FrZTdCeXVDLE9BQU81dUUsRUFBRW1nQztNQUFjLDRCQUFoQm5nQyxHQTFXUGdzRSxnQkEwV1M3ckMsSUFBMEQ7SUFsZXRDLFNBb2U3QjB1QyxNQUFNMXVDLEtBQU0sY0E5bkNWNm1DLE1Ba3hCRmdGLGdCQTRXTTdyQyxJQUErQztJQXBleEIsU0F5ZTdCMnVDLGNBR0V0SixHQUFHdUosT0FBT3Z2RTtNQUNKLGlCcEMxNUNBc0IsUW9DeTVDTjBrRTtNQUVRLElBQU50bkUsSUFBTSxhQUZSc25FO01BRVE7UUFFSixpQ0FGRnRuRSxJQUZDNndFLFFBR0Q1dUM7Ozs7UUFFa0IsZUFGbEJBLElBRWtCLFVBQVA5MEI7TUFDZixrQkFOWTdMLEVBR1IyZ0MsSUFHRTtJQWxmdUIsU0FxZjdCNnVDLGNBR0VodkUsRUFBRSt1RSxPQUFPdnZFO01BQW1CLG1DQUE1QlEsR0FBRSt1RSxPQUFPdnZFLEVBQW9EO0lBeGZsQyxTQTJmN0J5dkUsbUJBQW1CanZFLEVBQUVtZ0M7TUFDdkIsY0FBd0RoZ0MsR0FBSyxPQUFMQSxDQUFNO01BQWhELGdDQUFRLGNBRERILFlBQUVtZ0MsU0FDd0M7SUE1ZmhDLFNBK2Y3Qit1QyxVQUFVbHZFO01BQ1osY0FBcUNHLEdBQUssT0FBTEEsQ0FBTTtNQUFwQyxvQ0FBUSxJQURISCxzQkFDZ0M7SUFoZ0JiLFNBb2dCN0JtdkUsUUFBUXByRSxHQUFHdXFFLEdBQUdudUMsS0FBYyxnQ0FBcEJwOEIsSUFBR3VxRSxHQUFHbnVDLElBQW9EO0lBcGdCckMsU0FxZ0I3Qml2QyxPQUFPcnJFLEdBQUdvOEI7TUFBYSxnQ0FBaEJwOEIsSUE3WVBpb0UsZ0JBNllVN3JDLElBQWdFO0lBcmdCN0M7Ozs7UUExcEIzQjZtQztRQWFBRztRQUNBQztRQU1BRTtRQVBBSDtRQUNBQztRQXRIQVg7UUFXQUM7UUE2R0FXO1FBMUxBMUI7UUFPQUM7UUFFQUM7UUFpS0FtQjs7T0F5bkNGMEg7T0FHQUU7T0FFQUM7T0ExQkFSO09BdUJBTTtPQVFBRztPQVlBRTtPQU1BQztPQUlBQztPQU1BRTtPQURBRDtJQXBnQjZCO2FDNS9CN0JFLFNBQVM1c0UsS0FBSy9DLEdBQ2hCLGlDQURXK0MsS0FBSy9DLEVBQ3NCO2FBRXBDNHZFLG1CQUFtQjdzRSxLQUNqQjBzQjtNQUNVLElBQVZ4a0IsS0FBVSxhQURWd2tCO01BRUosaUNBSHFCMXNCLEtBRWpCa0ksS0FDMEI7MkJBTjVCMGtFLFNBR0FDOztvQkNBS2xrRSxHQUNVLElBQWJta0UsSUFBYSxVQUNqQixzQkFESUEsSUFDSTtRQVlOQyx3QkFVQUMsc0JBT0FDO2lDQWVvQjF2RTtNQUN0QiwwQ0FEc0JBLFdBQ3RCOztZQUNBMUU7UUFDRTtVQUFnQyx5QkFIWjBFLEVBRXRCMUU7VUFDa0MsaUJBRjlCb0o7VUFFOEIsU0FEbENwSjs7O01BSUEsVUFMSW9KO01BQUosSUFPSWlyRSxpQkFQQWpyRTtNQVNKLE9BRklpckUsR0FFSzthQUsyQkMsV0FBU3p2RSxFQUFLQyxHQUFJLDJCQUFURCxFQUFLQyxFQUFlO3lDQUE3Qnd2RTthQUlBQyxXQUFTMXZFLEVBQUtDLEdBQUksMkJBQVRELEVBQUtDLEVBQWU7SUFnQ3hDO3VDQWhDV3l2RTtLQUdEQzs7S0FnQmpDQyxvQkFyREFMO0tBK0RBTTtLQUd1QjthQUluQkUsU0FBU3B3RSxHQUNmLFdBRGVBLEVBRWYsVUFGZUEsNkJBRU87SUFORyxTQVF2QnF3RSxVQUFVQztNQUNaOztXQURZQTtPQUdFLHdCQURWL3NFLHFCQVZGNHNFO01BWUYsaUJBRElJLGdCQURBaHRFO01BREosV0FJc0IsU0FIbEJBO01BR0osaUJBRklndEU7TUFGSixJQUlBLEtBSElodEUsWUFHSjs7WUFDQS9IO1FBQXdCO1VBQXlCO2lCQUFqREE7V0FBaUQsc0JBTnJDODBFLFdBTVo5MEU7VUFBd0IsaUJBSHBCKzBFO1VBRzZDLFNBQWpELzBFOzs7TUFDQSxVQXhGRW0wRSxvQkFvRkVZLHVDQVcwQjtJQXRCTCxTQXdCdkJDLFNBQU9DLE1BQU1DO01BQ2YsYUFEU0Qsb0JBQ1QsS0FBSUUsV0FEV0Q7TUFDZjtRQUVpQixJQUFYRSxTQUFXLGVBSEZGLFNBeEJiUDtRQTRCQSxPQUpPTSxXQUdIRyxXQUZGRDtRQUdGLFdBRElDO1FBQVc7OztNQWxCakIsV0FxQkU7SUE5QnVCO2FBNEN2QkcsV0FBV0M7TUFDYixJQUFJbGQsTUFEU2tkO01BRWIsU0FGYUEsTUFDVGxkO01BQ0osT0FESUEsS0FFQztJQS9Db0IsU0FpRHZCbWQsaUJBQWlCRCxNQUFNcnVFO01BQ3pCO1FBQ0UsOEJBRnVCQSxLQUFOcXVFOzs7O1VBSUwsSUFBUkUsTUFBUSxXQUpLRjtVQUtRLCtCQUxGcnVFLEtBSW5CdXVFLE1BSmFGO1VBTVMsOEJBRnRCRSxRQUphRjtVQU1TLE9BRnRCRTtRQVJOLFdBV087SUF4RGtCLFNBMER2QkMsa0JBQWtCSCxNQUFNSTtNQUNoQiw0Qm5EcExiLE9tRDBLS0gsaUJBU2tCRCxhQUFNSSxNQUNjO0lBM0RmLFNBNkR2QkMsV0FBV0wsTUFBTUUsTUFBTUk7TUFDekI7TUFDRywyQkFGZ0JKLE1BQU5GO2dCQTVCYixTQTRCYUEsTUFBTUU7Z0JBM0JuQixpQkEyQmFGLFNBQU1FOztnQkFBTUk7O2dCQUFaTixpQkFBTUUsTUFBTUksU0FBWk4sWUFLaUQ7SUFsRXJDLFNBb0V2Qk8sV0FBV1AsTUFBTUU7TUFDbkI7UUFBSSxlQURlQSxNQUFORjs7OztTQUVLLHdCQUZMQSxTQUFNRTttQkFFb0I7SUF0RWQsU0F3RXZCTSxVQUFRQyxLQUNWLGFBRFVBLE1BQ3FCLFVBRHJCQSxJQUNzQztJQXpFdkIsU0EyRXZCQyxPQUFPVixNQUFNVyxLQUFLQyxXQUFXQztNQUNwQjt3QkFESUY7T0FFRSx1QkFGR0M7T0FHRix3QkFIYUM7T0FJVjs7eUJuRHhNeEIsT21EMEtLWixpQkEwQk9ELGFBRUxlO09BR2tCOzt5Qm5Eek16QixPbUQwS0tkLGlCQTBCT0QsYUFHTGdCO01BRWtCOzs7VUFMYmhCLG9DQUlMaUIsZUFIQUg7T0FES2Q7TUFDRSxJQUlXLGtCQUxiQTtNQUthLGNBT2JtQixJQUFJMW5FLEtBQUsybkU7UUFDVCxXQURBRCxJQVhMTCxRQVk0QixtQkFEdkJLLElBQUkxbkUsS0FBSzJuRSxZQUNnRDtNQUZoRTs7TUFNRjtpQkFDT0csSUFBSXJCO1VBQ0ssaUNBRFRxQixJQUFJckIsTUFIUG1CO1VBSVksU0FIWkM7VUFHWTtZQUdELDZCQUpKcEIsTUFsQkZGOzs7OztVQXFCRCxpQ0FIR0U7VUFHSCxRQUVXO1FBcEJmYztRQUVBRTtNQW9CSjtpQkFDT0ssSUFBSXJCO1VBQ0ssaUNBRFRxQixJQUFJckIsTUFYUG1CO1VBYWEsaUNBRk5uQixRQVZQb0I7VUFZYSxRQUE4QjtRQTFCM0NQO1FBRUFFO01BcUJKLFdBVklJO01BVUosV0FUSUM7TUFMRixJQWNGLFlBekJTdEI7TUFpQ047OztpQkFDT3VCLElBQWtCQztVQUF2QixJQUFPTCxJQUFGSSxPQUNDLFdBRENKLElBOUJSRixnQkE4QndCTyxNQUFsQkQsSUFBa0JDLEdBQ2dDOzs7TUFGekQsUUFJSTtJQWhIa0IsU0FrSHZCQyxNQUFNekI7TUFFTjtnQkFGTUE7T0FFTjs7Ozs7O01BRXVCLGNBSmpCQTtNQU1MOzs7aUJBQ085d0UsRUFBRU47VUFBZ0IsNkJBQWhCQSxFQVBKb3hFO1VBT29CLDBCQUFoQnB4RSxPQUFGTSxFQUE0QztRQU5Wd3lFO1FBQXdCZjtNQUtqRSxXQUxFVTtNQUtGLFdBTFdDO01BQ1osU0FGTXRCO01BWUw7OztpQkFDT3VCLElBQWtCQztVQUF2QixJQUFPTCxJQUFGSSxPQUNDLFdBRENKLElBWjRDUCxZQVk1QlksTUFBbEJELElBQWtCQyxHQUM0Qjs7UUFiaENHO01BV3JCLFFBSW9CO0lBbElFLFNBb0l2QkMsU0FBUzVCO01BQ1gsSUFBSWxkLE1BRE9rZCxTQUNYLFdBQUlsZCxjQUFKLE9BQUlBLEtBRUM7SUF2SW9CLFNBeUl2QitlLGFBQWE3QixNQUFNcnVFO01BQ3JCO1FBQUksNkJBRGlCQSxLQUFOcXVFOzs7O1VBR0QsSUFBUmxkLE1BQVEsU0FIQ2tkO1VBSVYsd0JBSmdCcnVFO1dBSWMsOEJBSmRBLEtBR2ZteEQsTUFIU2tkO1VBS2IsT0FGSWxkO1FBUE4sV0FTTztJQTlJa0IsU0FnSnZCZ2YsU0FBU3JCLEtBQ1Isa0JBRFFBLGNBQzRCO0lBakpkLFNBbUp2QnNCLHNCQUFzQi9CLE1BQU1nQyxNQUFNQztNQUN4Qjt3QkFEa0JEO09BQ2xCLE9BQVJFO09BQVEsTUFEd0JEO09BRzFCLG1CQURORSxTQUFnQ0M7T0FDMUIsS0FETkQ7T0FDTTs7WUFDVnB4RTtRQUNFO1VBQVc7OzZCQUxXaXZFLE1BS1ksaUJBSmhDa0MsUUFHSm54RTtVQUNFLGlCQUZFZ0QsSUFDSmhEO1VBQ2EsU0FEYkE7OztNQUhZLElBTVosS0FMb0NxeEUsY0FLcEM7OztRQUNFO1VBQWtCO2dCQURwQjUzRSxJQUxJMjNFO1dBTWdCLGtCQVJJbkMsTUFRZSxpQkFSSGlDLEtBT3BDejNFO1VBQ0UsaUJBTEV1SjtVQUtnQixTQURwQnZKOzs7TUFHQSxPQVBJdUosR0FPRDtJQTdKc0IsU0ErSnZCc3VFLGFBQWFyQyxNQUFNcnVFO01BQ3JCO1FBQUksNkJBRGlCQSxLQUFOcXVFOzs7OEJBQ2lDO21CQUFZO0lBaEtuQyxTQWtLdkJzQyxjQUFjdEMsTUFBTUk7TUFDWiw0Qm5ENVJiLE9tRHdSS2lDLGFBR2NyQyxhQUFNSSxNQUNjO0lBbktYLFNBcUt2Qm1DLGdCQUFnQnZDLE1BQU10eEUsR0FDeEIsY0FEd0JBLEVBQU5zeEUsVUFDbEIsUUFBMkM7SUF0S2xCLFNBbUx2QndDLGFBQWFDO01BQ2YsU0FEZUEsZUFDbUI7TUFFdkI7c0NBSElBO09BSUgsZ0JBRFJDO01BRUo7aUJBQ09sNEUsRUFBRSsyRTtVQUNMLElBQUlKLEtBREQzMkU7VUFFdUIsK0JBRnJCKzJFLElBQ0RKLElBSEpuQjtVQUswQiw4QkFGdEJtQixNQUhKbkI7VUFLMEIsUUFBd0M7UUFUdkR5QztNQUtmLE9BREl6QyxLQU9DO0lBOUxvQixTQWdNdkIyQyxXQUFXM0M7TUFDYixxQkExSkVGLG9CQXlKV0U7TUFFUyxlQUZUQTtNQUdXO2VBSFhBO3FCQUdXLGlCQUhYQSx1Q0FHa0Q7SUFuTXRDLFNBcU12QjRDLFNBQVNDLElBQUlaLEtBQUtyQixXQUFXQyxrQkFBK0I5NUM7VUFBTHBLLGFBQVZtbUQ7TUFDL0MsT0FEV0QsSUFBSVosS0FBS3JCLFdBQVdDO01BQy9CLElBQ0k5aEUsS0FGMERnb0IsSUFHaEQsV0FIaUMrN0MsUUFBcENELElBQThDbG1ELEtBR2YsV0FIS21tRCxRQUFwQ0Q7TUFJWCxNQUpXQTtNQUNYO09BR0E7T0FNSyxjQVYwQmhDO09BUTVCOzs7b0JBQ09rQyxJQUEyQixrQkFUMUJGLElBUzBCLGlCQVQxQkEsSUFTREUsSUFBK0Q7O09BRmxDLGNBUHhCZDtNQU1aOzttQkFKQ2xqRTs7aUJBS00scUJuRHJVYixPbUR3UktzakUsYUFzQ1NROztJQXJNYyxTQWlOdkJHLFdBQVdDLFVBQVVDO01BQ1gsdUJBRENELFdBRUUsb0JBRlFDLFdBQ25CbEQ7TUFFSixXQUZJQTtNQUdILHFCQUZHbUQsWUFGbUJELFdBRW5CQyxXQUVxRDtJQXJOaEMsU0EwTnZCQyxpQkFBaUJILFVBQVVDLFdBQVdHO01BQzVCLHVCQURPSixXQUVKLG9CQUZjQyxXQUN6QmxEO01BRUosV0FGSUE7TUFFSixnQkFINkJrRDtNQUc3QixnQkFESUM7TUFDSixRQUUrQjtJQS9OTixTQWlPdkJHLFlBQVlDO01BQ2QsU0FBSUMsYUFBaUIsb0NBRFBELElBQzZDO01BQTNELFVBQUlDLG9CQUN1QztJQW5PbEIsU0F1T3ZCQyxjQUFjekQ7TUFFTixJQUFOdG1FLElBQU0sbUJBRk1zbUU7TUFJaEIsU0FKZ0JBO01BS1Isc0JBSEp0bUUsSUFHZ0I7SUE1T0ssU0E4T3ZCZ3FFLGtCQUFrQkMsTUFBTTNEO01BQzFCLEdBRG9CMkQsTUFDYSxPQURiQTtNQUdSLElBQU5qcUUsSUFBTSxtQkFIY3NtRTtNQUt4QixTQUx3QkE7TUFNaEIsc0JBSEp0bUUsSUFJSDtJQXJQc0IsU0F1UG5Ca3FFLE9BQU9scUU7TW5EaFhoQjs7O2NtRG1YUTVJLGFBQUhwQztVQUFRLFdBQVJBLEVBSFdnTDtzQkFHUjVJOztRQURLO0lBelBlLFNBNFB2Qit5RSxpQkFBaUJucUUsSUFBSXNtRTtNQUN2QixVQUR1QkEsU0FDdkIsV0FBSThEO01BQUosWUFFRSxPQUhpQnBxRSxJQUNmb3FFLFdBRWM7SUEvUE8sU0FpUXZCQyxxQkFBcUJKLE1BQU1qcUUsSUFBSXNtRTtNQUNqQyxHQUR1QjJELE1BQ1UsT0FESmpxRTtNQUNhLElBQ3BDb3FFLE1BRjJCOUQ7TUFDUyxTQUNwQzhELE1BQ2dCLE9BSE9wcUUsSUFFdkJvcUU7TUFDZ0MsT0FIVHBxRSxHQUsxQjtJQXRRc0IsU0F3UXZCc3FFLCtCQUFtQ0wsTUFBTTNEO01BQzNDLEdBRHFDMkQsTUFDSixPQURJQTtNQUV6QixJQUFOanFFLElBQU0sY0FGK0JzbUU7TUFHekMsaUJBREl0bUUsSUFGcUNzbUU7TUFHekMsT0FESXRtRSxHQUdIO0lBN1FzQixTQXdTdkJ1cUUsV0FFSzk3RDtNQUZNLEdBRU5BLE1BQVUsT0FBVkEsU0FESSw2QkFDaUI7SUExU0gsU0ErU3ZCKzdELFdBQVdsMUUsRUFBRW0xRSxLQUFLN21EO01BQ3BCLHVCQUFJdnBCLEtBQUo7WUFEYS9FO1lBR2J4RTtRQUNFO21CQUZFcUU7VUFFZSwyQkFKSnMxRSxLQUdmMzVFO1VBQ0UsU0FERkE7YUFIYXdFLE1BR2J4RTs7TUFGQSxTQUNJcUU7TUFsQmtCLEdBZ0JGeXVCLFFBZEgsd0JBZWJ2cEI7TUFoQk8sNkJBc0JSO0lBdFRzQixTQTJVdkJxd0UsY0FBY0MsS0FuQklGO01Bb0JkLElBcEJtQkcsU0FvQm5CLFdBRFVEO01BQ1YsR0FwQm1CQztRQXNCdkIsUUF0QmtCSCx3QkFBRjM1RSxNQUFPOHlCOztRQUN6QjtrQkFEa0I5eUI7WUFFUix5QkFGVTI1RSxLQUFGMzVFLFVBR0UrNUUsU0FIS2puRDtZQUl2QjtjQXZCVSxHQXNCUWluRDttQ0FEaEJ4MEI7a0JBR00sSUFMZXkwQixTQUtmLFdBRlVEO2tCQUVWLEdBTGVDO29CQVFqQixRQVJVaDZFLGdCQUFPOHlCO2tCQU1WO2dCQW5CRixHQWdCT2luRDtrQkFkSCxTQWNHQTs7a0JBZEgsSUFYQzMxRSxLQXdCZG1oRDtrQkF4QmtCLEdBeUJGdzBCO29CQXZCSCxjQUZDMzFFLFNBYWhCczFFLFdBU2dCMTVFLFVBQUUyNUUsS0F0QkZ2MUU7a0JBQ1A7Z0JBU0E7Y0FOQTtVQW1CRyxPQURXMHVCO01Bd0J2QixrQkF4QmtCNm1ELDZCQW1CSkUsS0FLOEI7SUFoVnJCLFNBbVl2QkksVUFBVXpFO01BQ0osaUJBRElBO01BR3NCOzs7U0FGOUJoeEU7OztnQkFFOEIsaUJBSHRCZ3hFLDBDQUNSaHhFO1lBQ0E4USxJQUVVLFdBSkZrZ0U7d0JBRVJsZ0UsSUFEQTlRO01BS0osaUJBTllneEUsU0FFUmxnRTtNQUlKLE9BSklBLEdBS0g7SUExWXdCLFNBOGR2QjRrRSxZQUFZMUUsTUFBTVQ7TUFDcEIsUUFEb0JBLG1CQUNwQjs7V0F4RG9CLzBFLE9Bd0RoQitIO1VBRUY7Z0JBMURrQi9IO1dBMEROLHVCQUhNKzBFO1dBdERwQjs7Y0FBYzt1QkFETS8wRTtjQUNRLHdCQXNEUiswRSx1QkF0RGdCO1dBQzlCO29CQW1ESm9GOzs7Y0FsRHdCOztlQXVEUUMsTUE3SWxCLFNBQUp2MUUsR25EN2NmLGdCbUQ2YzRCcUssS0FBUSxPQUFyQnJLLENBQXNCLEdBQXRCQTs7O2NBdUZVOztlQXNEWXUxRSxNQTVJbEIsU0FBTjUxRSxHbkQ5Y2IsZ0JtRDhjNEIwSyxLQUFPLE9BQVBBLFFBQWYxSyxFQUE0QyxHQUE1Q0E7OztjQXVGWTs7ZUFBa0I7ZUFxRE40MUU7Z0JBMUlsQyxTQURVbHRFLEVBQUUxSSxHbkQvY2YsZ0JtRGdkWTBLLEtBQ1AsT0FET0EsUUFEQ2hDLE9BQUUxSSxFQUVtRDtrQkFGckQwSSxFQUFFb0k7OztjQXVGVTs7ZUFvRFk4a0U7Z0JBeElsQixTQUFMNTFFO21CbkRsZGQsZ0JtRGtkNEIwSyxLQUFPLGtCQUFQQSxXQUFkMUssR0FBYzBLLElBQXFCO2tCQUFuQ3FHOzs7Y0FxRlc7O2VBbURZNmtFO2dCQXZJbEIsU0FBTjUxRSxHbkRuZGIsZ0JtRG1kNEIwSyxJQUFJckssR0FBSyxRQUF4QkwsS0FBbUJLLEVBQUssUUFBd0I7a0JBQWhEdzFFOzs7Y0FxRlk7O2VBQWtCO2VBa0RORDtnQkF0SWhCLFNBQU5sMkUsRUFBRVcsR25EcGRqQixnQm1Eb2Q4QnFLLEtBQVEsa0JBQXZCaEwsRUFBRVcsRUFBd0I7a0JBQTFCWCxFQUFFNlo7OztjQXFGUTs7ZUFBa0I7ZUFpRE5xOEQ7Z0JBckloQixTQUFSbDJFLEVBQUVNO21CbkRyZGYsZ0JtRHFkOEIwSyxLQUFPLGtCQUF4QmhMLEVBQWlCZ0wsUUFBZjFLLEdBQWdEO2tCQUFsRHVpRCxJQUFFdXpCOzs7Y0FzRkE7O2VBQW1CO2VBQWtCO2VBK0NmRjtnQkFuSWxDLFNBRFVsMkUsRUFBRWdKLEVBQUUxSTttQm5EdGRqQixnQm1EdWRZMEs7cUJBQ1Asa0JBRlFoTCxFQUNEZ0wsUUFER2hDLE9BQUUxSSxHQUVxRDtrQkFGekR3aUQsSUFBRWwvQixJQUFFeXlEOzs7Y0F1RlE7O2VBQWtCO2VBNkNOSDtnQkFqSWhCLFNBQVBsMkUsRUFBRU07bUJuRHpkaEIsZ0JtRHlkOEIwSztxQkFBUyxrQkFBekJoTCxFQUF5QixXQUFUZ0wsV0FBZDFLLEdBQWMwSyxLQUF5QjtrQkFBekNnNEMsSUFBRXN6Qjs7O2NBc0ZEOztlQUFrQjtlQUFrQjtlQTJDZEo7Z0JBaElSLFNBQVJsMkUsRUFBRVcsRUFBRUM7bUJuRDFkekIsZ0JtRDBkc0NvSyxLQUFRLGtCQUF6QmhMLEVBQUVXLEVBQUVDLEVBQTBCO2tCQUE5QnVpRCxJQUFFRSxJQUFFemlEOzs7Y0F3RlY7O2VBQWtCO2VBQWtCO2VBd0NkczFFO2dCQS9IUixTQUFWbDJFLEVBQUVXLEVBQUVMO21CbkQzZHZCLGdCbUQyZHNDMEssS0FBTyxrQkFBMUJoTCxFQUFFVyxFQUFpQnFLLFFBQWYxSyxHQUFrRDtrQkFBdERvakQsSUFBRUYsSUFBRSt5Qjs7O2NBMEZSOztlQUFrQjtlQUFrQjtlQUFtQjtlQXFDakNMO2dCQTFIbEMsU0FEZ0JsMkUsRUFBRVcsRUFBRXFJLEVBQUUxSTttQm5EL2R6QixnQm1EZ2VZMEs7cUJBQ1Asa0JBRmNoTCxFQUFFVyxFQUNUcUssUUFEV2hDLE9BQUUxSSxHQUUrQztrQkFGckRzakQsSUFBRTR5QixJQUFFbGpELElBQUVtakQ7OztjQXlGVjs7ZUFBa0I7ZUFBa0I7ZUFrQ2RQO2dCQTlIVCxTQUFSbDJFLEVBQUVXLEVBQUVMO21CbkQ1ZHhCLGdCbUQ0ZHFDMEs7cUJBQVcsa0JBQTVCaEwsRUFBRVcsRUFBMEIsV0FBWHFLLFdBQWIxSyxHQUFhMEssS0FBMkI7a0JBQTVDNjRDLElBQUU2eUIsSUFBRUM7OztjQStGVDs7ZUFBa0I7ZUFBa0I7ZUErQmRUO2dCQTdIVixTQUFSbDJFLEVBQUVNLEVBQUVLO21CbkQ3ZHZCLGdCbUQ2ZG9DcUssS0FBTyxrQkFBeEJoTCxFQUFpQmdMLFFBQWYxSyxHQUFFSyxFQUFnRDtrQkFBcERtakQsSUFBRTh5QixJQUFFQzs7O2NBaUdSOztlQUFrQjtlQUFtQjtlQUFrQjtlQTRCakNYO2dCQXZIbEMsU0FEZ0JsMkUsRUFBRWdKLEVBQUUxSSxFQUFFSzttQm5EbGV6QixnQm1EbWVZcUs7cUJBQ1Asa0JBRmNoTCxFQUNQZ0wsUUFEU2hDLE9BQUUxSSxHQUFFSyxFQUUrQztrQkFGckRtMkUsSUFBRUMsSUFBRUMsS0FBRUM7OztjQStGVjs7ZUFBa0I7ZUFBa0I7ZUF5QmRmO2dCQTVIVCxTQUFSbDJFLEVBQUVNLEVBQUVLO21CbkQ5ZHhCLGdCbUQ4ZHFDcUs7cUJBQVMsa0JBQTFCaEwsRUFBMEIsV0FBVGdMLFdBQWYxSyxHQUFlMEssS0FBYnJLLEVBQXdDO2tCQUE1Q3UyRSxJQUFFQyxLQUFFQzs7O2NBc0dUOztlQUFrQjtlQXNCSWxCO2dCQXJIWCxTQUFONTFFLEVBQUVLO21CbkRyZXRCLGdCbURxZW1DcUs7cUJBQU8sa0JBQVBBLFdBQWYxSyxHQUFlMEssSUFBYnJLLEVBQStDO2tCQUFqRDAyRSxLQUFFQzs7O2NBaUdQOztlQUFrQjtlQW9CSXBCO2dCQW5IbEMsU0FEZTUxRSxFQUFFbXBCO21CbkR0ZXBCLGdCbUR1ZVl6ZTtxQkFBTyxrQkFBUEEsV0FETTFLLEdBQ04wSyxZQURReWUsR0FDaUQ7a0JBRG5EOHRELEtBQUU5dEQ7OztjQWtHTDs7ZUFBa0I7ZUFBa0I7ZUFrQmR5c0Q7Z0JBakhsQyxTQURlNTFFLEVBQUUwSSxFQUFFeWdCO21CbkR4ZXRCLGdCbUR5ZVl6ZTtxQkFBTyxrQkFBUEEsV0FETTFLLEdBQ04wSyxZQURRaEMsT0FBRXlnQixHQUVnRDtrQkFGcEQrdEQsS0FBRUMsSUFBRTVnRDs7O2NBbUdQOztlQUFrQjtlQWVJcS9DO2dCQTlHbEMsU0FEZ0I1MUUsRUFBRW1wQjttQm5EM2VyQixnQm1ENGVZemU7cUJBQWlDLG9CQUFqQ0EsV0FEU3llLEdBQ1R6ZTtxQkFBaUMsa0JBQWpDQSxXQURPMUssR0FDUDBLLFNBQWlEO2tCQUQxQzBzRSxLQUFFaGdEOzs7Y0FrR04sZ0JBQWtCO2NBQXlCLFVBVXpDNDVDO2NBVkY7ZUFhc0I0RTtnQkE1R2xDLFNBRGF6c0QsRUFBRTlvQjttQm5EN2VsQixnQm1EOGVZcUs7cUJBQU8seUNBRERySyxFQUFGOG9CLEtBQUU5b0IsRUFDeUM7a0JBRDNDZzNFLElBQUVDOzs7Y0FrR0gsZ0JBQWtCO2NBQXdCLFVBUXhDdEc7Y0FSRjtlQVdzQjRFO2dCQTFHbEMsU0FEV3pzRCxFQUFFbnBCO21CbkQvZWhCLGdCbURnZlkwSztxQkFDUCxTQURPQSxRQURJMUs7cUJBRVgsOENBRlNtcEIsVUFHbUI7a0JBSG5Cb3VELElBQUVDOzs7Y0FrR0QsZ0JBQWtCLFlBQWtCO2NBQzdCLFVBS0x4RztjQU5GO2VBU3NCNEU7Z0JBdEdsQyxTQURXenNELEVBQUV6Z0IsRUFBRTFJO21CbkRuZmxCLGdCbURvZlkwSztxQkFDUCxTQURPQSxRQURJaEMsT0FBRTFJO3FCQUViLDhDQUZTbXBCLFVBS3FCO2tCQUxyQnN1RCxJQUFFQyxJQUFFQzs7O2NBaUdILGdCQUFrQjtjQUF5QixVQUd6QzNHO2NBSEY7ZUFNc0I0RTtnQkFoR2xDLFNBRFl6c0QsRUFBRW5wQjttQm5EemZqQixnQm1EMGZZMEs7cUJBQ0csb0JBREhBLFdBREsxSyxHQUNMMEs7cUJBQ0csOENBRkF5ZSxVQUU2QztrQkFGN0N5dUQsSUFBRUM7O2VBaUdvQmpDLE1BTGhDRDtVQU1BLFdBSlkzRSxNQUdSRSxNQUE0QjBFO1VBQ2hDOztRQTFEWSxTQTREVjtJQXBlcUIsU0EyZXZCa0M7TUFDRixVQS9lRTVILGVBeUNBVyxnQkFDQUMsa0JBc2N1RDtJQTdlaEM7Ozs7T0E0Q3ZCQztPQTZGQThCO09BVUFFO09BWUFNO09BR0FDO09BakhBckM7T0FTQUU7T0FVQUk7T0FQQUY7T0FpYUFxRTtPQW5aQWhFO09BdUNBZTtPQW1EQWM7T0FsTEF0RDtPQWdNQXVEO09BYUFHO09BS0FDO09BWUFJO09BU0FJO09BT0FFOztPQU1BRztPQU9BQztPQWNBRztPQUtBRTtPQU9BQztPQW1FQUk7T0E5WkExRjtPQThqQkFvSTtJQTNldUI7OzthQ3RFdkJDLGVBQWV4RCxJQUFJeUQ7TUFDckI7Y0FEcUJBO09BRVYsc0JBRFA1c0U7T0FDTyxLQURQQTtPQUNPOztZQUNYNVA7UUFDRTtVQUEwQixJQWhDSTA4RSxNQWdDSixpQkFKUEYsUUFHckJ4OEU7VUE5QkEsVUFEZ0MwOEU7V0FDaEMsT0FEZ0NBOztjQUkzQjs7eUJBMkJMMThFOzJCQTNCYTZzRCxHQUFJaG9EO29CQUNtQixJQUF6QjgzRSxLQUxVRixTQStCckJ6OEU7b0JBMUJvQyxHQUR2QjZzRCxPQUNGOHZCLEtBRUYsb0NBcUJRNUQ7b0JBbkJSLGtCQUpFNEQsS0FETTkzRSxFQUtIO3lCQUxEZ29EO2VBQVIsUUEyQkw3c0Q7ZUE5Qkl1VSxLQUdTczRDOzs7Y0FRUixJQUFRdm1EO2NBT1I7Z0JBUFFBOztpQkFBUixTQUFRQSxFQW1CYnRHO29CcER0REg7c0JvRHFDNkIsSUFBYmlkLElBZFF3L0QsU0ErQnJCejhFO3NCQWpCMEIsR0FGYnNHLE1BRUEyVyxJQUVGLG9DQVlNODdEO3NCQWRTLFNBSWYsYUFKRTk3RDtzQkFJRjsrQkFKRUE7NENoQ1ZYeE0saUJnQ1VXd007bUJBRkEzVyxFQW1CYnRHO2NBbkJLLElBWER1VSxLQVdTak87O3lCQVhUaU8sS0FvQlUsWUFPR3drRTs7V0EzQmpCLFNBRGdDMkQ7WUF1QjNCLFVBdkIyQkEsU0FDNUJub0UsS0FzQlUsZUFLR3drRSxJQU5ONkQ7O1lBRUksTUF4QmlCRixTQUM1Qm5vRSxLQXVCTW5RO1VBRVYsU0FLQXBFLEtBOUJJdVU7VUErQndCLFNBRDVCdlU7OztNQUdBLE9BbENxQnk4RSxJQWtDakI7YUFFRkksU0FBUzlELElBQUkyRDtNQUNmLFVBRGVBO1FBR1osSUFETUUsTUFGTUYsU0FHWixzQkFIUTNELElBRUY2RDtNQUVGLCtDQUFpRDthQWlCdERFLGlCQUFpQk4sUUFBTTFzRSxFQUFFdEw7TXBEaEY5QixTb0RpRlcsYUFEbUJBLE1BQVJnNEUsc0JBQVFoNEU7UUFFM0IsU0FGbUJnNEUsMkJBRW5COzs7VUFDRTtZQUErQixRQUhOaDRFLE1BRTNCeEUsR0FDdUIsdUJBSEp3OEUsUUFFbkJ4OEU7WUFoQkEsVUFEOEIwOEU7YUFDOUIsU0FEOEJBOzt3QkFPbkIsYUFQeUJwbkU7aUJBUXhCLE9BT2F4RixNQUV6QjlQLEdBUkdzVTtpQkFDRTswQkFERkEsS0FUaUNnQixRQVNqQ2hCO21CQUNFLFNBREZBOzs7Ozs7O2NBTkEsTUFjSHRVLEtBakJvQ3NWOzthQUNwQyxTQUQ4Qm9uRTtlQWEzQixJQURNRSxNQVpxQkYsU0FhSixpQkFEakJFLE1BR2dCOXNFLE1BRXpCOVAsR0FqQm9Dc1Y7WUFrQkgsU0FEakN0Vjs7OzttQ0FFSTthQUVGZzlFLFdBQVdOLE1BQU01c0UsRUFBRXRMO01BQ3JCLFVBRGFrNEU7UUFHVixJQURNRSxNQUZJRixTQUdWLHdCQURNRSxNQUZVOXNFLEVBQUV0TDtNQUlkLCtDQUFtRDsyQkEvQnhEcTRFLFNBMkJBRzs7SUMxRGlCOztlQUFqQkM7S0FBaUI7YUFLakJHO01BQWtCLFlBTGxCSCxlQUtrQixzQkFBcUM7SUFMdEMsU0FPakJJLE1BQU1qMkU7TUFDUix3QkFORTgxRSxjQUNBQztRQU1nQixJQUFaRyxVQUFZLHNCQU5oQkg7UUFPQSxLQVJBRCxZQU9JSSxZQU5KSDtRQU9BLFlBRElHO01BSU4sZUFYRUosVUFDQUMsVUFJTS8xRTtNQU1SO2NBQ1c7SUFkUSxTQWdCakJtMkU7TUFDTSxJQUFKNzRFLEVBQUksV0FmTnc0RSxZQUNBQztNQWNNLFlBakJORjtNQWlCTSxPQUFKdjRFLENBQXFFO0lBakJ0RCxTQXFCakI4NEUsV0FBV0M7TUFDRyxJQUFaQyxVQUFZO01BQ2hCO2lCQUFlaDVFLEdBQUssb0NBRGhCZzVFLFVBQ1doNUUsUUFBb0M7UUFGdEMrNEU7TUFFYixTQUNJRSxpQkFBaUJydUU7UUFDbkI7VUFBSSxzQ0FIRm91RSxVQUVpQnB1RTs7O2dDQUVKLFVBRklBO1VBREQsV0FHSztNQUh6QixTQUlJc3VFLGlCQUFpQngyRTtRQUNYLElBQUoxQyxFQUFJLFNBRFcwQztRQUNYO1VBQ0osc0NBUEZzMkUsVUFNRWg1RTs7O2dDQUUrQix5Q0FGL0JBO1VBSEosV0FLOEQ7TUFQaEUsU0FpRkltNUUsa0JBQW1CMStDO1FBQ3JCO1VBQU0saUJBRGVBO1VBQ2Y7O3dDQUVGLEtBSGlCQSxNQUdxQjtVQUNTLGtDQUFmLGlCQUFpQjtNQXJGdkQsU0E0RUkyK0MsY0FBZTMrQztRQUNYLGlCQURXQTtRQUNYOzs7O1lBRUYsS0FIYUEsTUFHeUIscUNBSHpCQTtRQUlWLHlCQUpVQSxLQUljO01BaEZqQyxTQTRESTQrQyxPQWMwQnI1RTtRQWI1QjtVQUFNLGlCQWFzQkE7VUFidEI7Ozs7OzJCQU1GLEtBT3dCQSxHQVBjLCtCQU9kQTs7O2dCQVR4QixLQVN3QkE7Z0JBVGM7Z0JBSzFDO2tCQUFNLG1CQUlzQkE7a0JBSnRCOzs7a0RBRUYsS0FFd0JBLEdBRmM7Ozt1QkFFdEMsS0FBd0JBLEdBQWMsK0JBQWRBO2tCQUN1QixrQ0FBZjs2QkFaaEMsS0FXd0JBLEdBWGM7VUFLSyxnQ0FBZixpQkFBaUI7TUFwRW5ELFNBK0NJczVFLE9BQVE3K0M7UUFDVjtVQUFNLGlCQURJQTtVQUNKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7eUJBSUYsS0FMTUEsTUFLZ0M7VUFDOUIsMkJBQWtCLGdCQUFnQjtNQXJEaEQsU0FzREk4K0MsV0FJTXY1RTtRQUhGLGlCQUdFQTtRQUhGOzs7WUFFRixLQUNJQSxHQUFjLGdCQUFpQixVQUFXLDBCQUExQ0E7UUFDaUI7UUFBaUI7c0JBRGxDQSxFQUNxRDtNQTNEL0QsU0F5Q0l1K0IsTUFBTzlEO1FBQ1Q7VUFBTSxpQkFER0E7VUFDSDs7Ozs7Ozs7Ozs7Ozt5QkFHRixLQUpLQSxNQUlpQztVQUM5QiwyQkFBa0IsZ0JBQWdCO01BOUNoRCxTQVNRKytDLHFCQXlGRS8rQztRQXhGUjtVQUFNLGlCQXdGRUE7VUF4RkY7Ozs7Ozs7Ozs7Ozs7b0JBeUJGLEtBK0RJQTtvQkE5RGM7b0JBbUR0QjtzQkFBTSxtQkFXRUE7c0JBWEY7O3dDQUNTLEtBVVBBLG1CQVZPOzswQkFFWCxLQVFJQTswQkFSSjs0QkFFTSxJQURGbGdCLElBQ0UsT0FNRmtnQjs7O2tEQUxrQjs7OzBCQUVKLE1BSmRsZ0I7O3dCQUtJLEtBRUprZ0I7d0JBRjBDOztzQkFDM0M7O29CQXhFSCxLQXlFSUE7b0JBekVKO3NCQTBFRSxtQkFERUE7c0JBQ0YsYUFPQztzQkFQRDs7d0JBRUYsS0FISUE7d0JBR0o7MEJBQ1UsZ0JBSk5BOzs7Z0RBS2dCOzBCQUdqQjs0QkFoRkMvM0I7O3dCQStFSSxLQVBKKzNCLFVBeEVBLzNCOzs7NENBRWtCOztvQkFFVixtQkFvRVIrM0I7O3NCQW5FVyxLQW1FWEEsTUFuRVcsYUFMWC8zQjtvQkFNRzs7b0JBTUcsS0E0RE4rM0I7b0JBNURNOzs2QkEyRlppL0Msd0JBL0JNai9DO2tEQStCTmkvQyxpQkEvQk1qL0M7MkJBN0RNLEtBNkROQSxNQTdETSxrQkE2RE5BOzs7Ozs7MkJBdEZKLEtBc0ZJQTs7Ozs7Ozs7Ozs7b0JBNUVKLEtBNEVJQSxNQTNFYyxnQkFBaUIsMEJBMkUvQkE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztxQkEzREksS0EyREpBLE1BM0Q2Qjs7ZUF6QmpDLEtBb0ZJQSxNQW5GYyxnQkFBaUIseUJBbUYvQkE7O2VBL0VKLEtBK0VJQSxNQTlFYyxnQkFBaUIsMEJBOEUvQkE7VUExREQsU0FBSTtNQXhDYixTQWlJSWkvQyxzQkFBZWovQztRQUNYLGlCQURXQTs7VUFHYixLQUhhQTtVQUd5QixRQUh6QkE7VUFHeUI7aURBM0hwQysrQyx1QkF3SFcvK0M7d0NBeEhYKytDLGdCQXdIVy8rQztRQUlMLCtCQUFzQjtNQXJJcEMsU0FTUW0vQyxXQXlGRW4vQyxNckRySmIsdUJxRDREVysrQyxlQXlGRS8rQztNQWxHVixTQTJHSWcvQyxPQUFRaC9DO1FBQ0osaUJBRElBO1FBQ0o7Ozs7OztzQkFDUSxLQUZKQSxNQUVJO3NCQUNBLEtBSEpBLE1BR0k7c0JBQ0EsS0FKSkEsTUFJSTs7OzthQUVWLEtBTk1BO2FBT00sbUJBUE5BO2FBT007OztpQkFFUixLQVRFQTtpQkFVVSxtQkFWVkE7aUJBVVU7OztxQkFFUixLQVpGQTtxQkFZRTs7Ozs7Ozs7OztpQkFJRzthQUVKO1VBRUMsS0FwQkZBO1VBb0JFO1FBQ0wsZUFBb0I7TUFoSTdCLFNBc0lJay9DLFFBV21CbC9DO1FyRHBNMUI7UXFEMExLO1VBQU0saUJBVWVBO1VBVmY7Ozs7O2dCQUNRLEtBU09BO2dCQUpmLG1CQUllQTtnQkFKZjt3Q0FDUSxLQUdPQSxNQUgrQixRQUcvQkE7a0JBRlQsS0FFU0E7O2dCQURkOzs7Z0JBUE8sS0FRT0E7Z0JBQ3JCO2tCQUFNLG1CQURlQTtrQkFDZjs7b0NBQ1EsS0FGT0EsTUFFUDtvQ0FDQSxLQUhPQTtvQkFJVCxLQUpTQTs7a0JBS2Q7WUFaSyxLQU9TQTs7VUFOZCxnQkFBb0I7TUEzSTdCLGdCQXdKSTMyQjtRQUFTLHFCQUFpQjQxQixPQUFVLGtCQUFwQzUxQixNQUFvRCxFQUFDO0lBL0t0QyxxQkFxQmpCZzFFO0lBckJpQjtJQ3NFRjtNdERsR3BCLElzRG9JU3ZxQix5QnREcElUO2VzRHNJU3RqRCxPQUFTNmdCLElBQXFDNGlDO1FBQ2hELEdBRFc1aUM7U0FBUyxRQUFUQSxjQUFTQzs7YUFBVDRpQyxPQUFTO1lBUEF4dUQ7UUFDcEI7VUFDSyxNQUsyQ3V1RCxnQkFQNUJ2dUQ7WUFHZixRQUhlQTthQU9Ud3VEO1dBRWU7OEJBSnhCSjtZQUl3QixrQkFKeEJBLHFCbEN6R0p4aUQsaUJrQ3lHSXdpRDtZQUlFL0MsS0FBc0I7O2VBQXRCQTtVQUM4QywyQkFWOUJyckQsS0FTaEJxckQsS0FUZ0JyckQsR0FVa0Q7ZUFFcEVxM0IsTUFBTTFRO1FBQ1I7Z0JBRFFBLGdCQUNSLEtBQ0l6akIsWUFESjs7Y0FFQS9IO1VBQ0U7NkJBSk13ckIsS0FHUnhyQjtZQUNFLFNBREZBOzs7Z0JBRUk7ZUFFRjJnQyxNQUFNblY7UUFDUixJQUFJempCLElBREl5akI7UUFDUixPQUFJempCLFFBREl5akI7aUJBR04sTUFITUE7a0NBTUksZUFOSkEsVUFPTDtlQUVEaXJDLEtBQUtsaUQ7UUFBSSxTQUFKQSxRQUFJLEtBQUpBLFFBQW9CLFlBQXBCQTtRQUFvQixVQUFwQkEsdUJBQXVDO2VBRTVDcWhELFVBQVVwcUMsRUFBRSt5RCxNQUNkLE9BRGNBLFFBQUYveUQsd0JBQ3VCO2VBRWpDZ3pELE1BQU1oekQ7UUFDUixTQUFRbXBDO1V0RGpLZjtVc0RpSzJCOztrQ0FHTHowRCxnQkFBSGtIO2NBQWtCLG1CQUFsQkE7b0JBR01qSCxrQkFBSDhlO2dCQUNLLGVBRExBLElBQ0ssVUFERjllO2NBRlosT0FMRXFyQjswQkFJT3RyQjs7WUFEVCxTQUs2QjtRQVBuQyxNQURRc3JCLEtBQ1IsS0FTSWxQLHFCQVRKOztjQVVBdGM7VUFDRTtZQUFTLG1CQUFVLGlCQUZqQnNjLEVBQ0p0YztZQUNFLGlCQUZFc2MsRUFDSnRjO1lBQ1csU0FEWEE7OztnQkFFSTtlQXNCRjRnQyxPQUFPcFY7UUFDVCxVQURTQSxLQUNULE1BQUl3b0MsaUJBQUosTUFDSVM7UUFFSixNQUpTanBDO1FBQ1Q7U0FHQSxLQURJMG9DO1NBQ0osV0FGSU8sb0JBRktqcEM7UUFLcUQ7VUFDaEQsSUFBUnlvQyxNQUFRLGVBSFZDO1VBR1UsT0FBUkQ7VUFBUTs7O2NBRVk7b0JBRUgvekQsY0FBTnE2QixjQUFOZ2tEO2dCQUNILGNBRGVyK0U7Z0JBRUo7Z0NBWlZzckIsRUFVRSt5RDtpQkFHOEIsUUFIOUJBLEtBQU1oa0QsS0FHd0IsaUJBUG5DMDVCLE1BTU1JO2dCQUNKLGlCQVBGSixNQU1NSTtnQkFDSjtjQUpPLFFBSXVDO1dBUHhDLEtBSlZJO1dBSVU7O2dCQVFaejBEO1lBQ0U7NEJBQWMsaUJBZGRnMEQsTUFhRmgwRDtjQUNFLFNBREZBOzs7VUFSWTs7O1FBeENNLFdBbURqQjtlQUVEODFCLElBQUl0SyxFQUFFKzVCLElBQUl0MkM7UUFDRDs4QkFETHVjLEtBQUUrNUI7U0FFQSxZQUZGLzVCLEVBQ0YreUQ7U0FFWSwwQkFIUmg1QixJQUFJdDJDO1NBSXVCLFVBSC9Cc3ZFLEtBRUFHLFVBQytCLGlCQUo3Qmx6RCxLQUVGeHJCO1FBR0osaUJBTE13ckIsS0FFRnhyQixZQUVBNjFEO1FBQ0osT0FMTXJxQztRQUNLLFNBRExBO1FBS04sWUFFMkMsT0FQckNBLE9BTzZDO2VBRWpEc0wsT0FBT3RMLEVBQUUrNUI7UUFDQSxJQUFQZzVCLEtBQU8sZ0JBREYveUQsS0FBRSs1QjtRQUNBLFNBQ0hvNUI7VXREak9mO1VzRGlPK0I7O2tCQUVmQyxjQUFPbHRFLGdCQUFIdEs7aUJBSFRtM0UsU0FHS0s7Z0JBQ1MsMEJBREx4M0UsRUFKRm0rQztnQkFLTzt5QkFDRCxPQU5SLzVCLGFBTVEsT0FGRDlaO3lCQUdjLFVBSHJCa3RFLEdBQUl4M0UsRUFHaUIsY0FIZHNLOzBCQU9OLE9BWEQ4Wix5QkFJTzlaO2tCQVVGZ2lELGtCQUFGejBDO2NBQXVCLFVBVjFCMi9ELEdBVUczL0QsSUFBdUIsY0FBckJ5MEM7WUFYRCxTQVd5QztRQUM5QztxQkFmQ2xvQyxFQUNMK3lEO1NBZVUsbUJBQWMsaUJBaEJuQi95RCxLQWVMeHJCO1FBQ0osaUJBaEJTd3JCLEtBZUx4ckI7UUFDSixRQUFzQztlQTBCcEN3VCxLQUFLZ1ksRUFBRSs1QjtRQUNFOzhCQURKLzVCLEtBQUUrNUI7U0FHa0IsZUFIcEIvNUIsRUFwQlkreUQ7U0F1QkQseUJBSFgveUQ7Ozs7Z0JBakJBb3pELFlBQU8xK0UsY0FBSGtIO2VBSFFtM0UsU0FHWks7Y0FDUywwQkFETHgzRSxFQWlCRm0rQztjQWhCTzs7aUJBRUksNEJBSFRuK0M7aUJBR1MsWUFLQSxJQUFMa1YsYUFBSyxPQUFMQTtpQkFMSyxVQUhOcGM7Ozs7WUFlViwyQkFEUzRjOztVQWZULGdCQXFCeUM7ZUFzQjNDOGIsU0FBU3BOLEVBQUUrNUI7UUFDRjs4QkFEQS81QixLQUFFKzVCO1NBR2tCLGVBSHBCLzVCLEVBcEJZK3lEO1NBdUJELHlCQUhYL3lEOzs7O2dCQWpCSm96RCxZQUFPMStFLGNBQUhrSDtlQUhZbTNFLFNBR2hCSztjQUNTLDBCQURMeDNFLEVBaUJFbStDO2NBaEJHOztpQkFFSSxJQUtWanBDLEVBTFUsZ0JBSFRsVjtpQkFHUyxHQUtWa1YsRUFBZSxPQUFmQTtpQkFMVSxVQUhOcGM7Ozs7WUFlViwyQkFEUzRjOztVQWZULFNBcUI2QztlQUUvQ3U1QyxTQUFTN3FDLEVBQUUrNUI7UUFDRixJQUFQZzVCLEtBQU8sZ0JBREEveUQsS0FBRSs1QjtRQUNGLFNBQ0grUTtVdER6U2Y7VXNEeVNnQzs7a0JBRWxCc29CLGNBQU8xK0UsZ0JBQUhrSDtpQkFIUG0zRSxTQUdHSztnQkFDUywwQkFETHgzRSxFQUpFbStDO2dCQUtHOzttQkFDVyw0QkFGaEJuK0M7bUJBRWdCO3FCQUdQLElBQUxrVixhQUFRLFVBQVJBLEVBQVEsZUFMVHBjO21CQUVhLFlBRmJBOzs7O2NBWVYsK0JBRFMwbUI7O1lBWkYsU0FhWTtRQUNBLG1CQWpCWjRFLEVBQ1AreUQ7UUFnQlcsdUNBakJKL3lELHFCQWlCNkI7ZUFHdEMrcUMsUUFBUS9xQyxFQUFFKzVCLElBQUl0MkM7UUFDTCxJQUFQc3ZFLEtBQU8sZ0JBREQveUQsS0FBRSs1QjtRQUNELFNBQ0hzNUI7VXREN1RmO1VzRDZUZ0M7O2tCQUVoQkQsY0FBT2x0RSxnQkFBSHRLO2lCQUhUbTNFLFNBR0tLO2dCQUNTLDBCQURMeDNFLEVBSkRtK0M7Z0JBS00sc0JBREY3ekM7Z0JBRUMsdUJBRkp0SyxFQUpEbStDLElBQUl0MkM7Y0FTTSwrQkFBVDJYOztZQU5BLGdCQU00QjtRQUVqQyxnQkFYRTRFLEVBQ04reUQsTUFXSSxtQkFaRS95RCxLQVdOeHJCO1FBQ0k7VUFFTix3QkFGRXNHOzs7O1lBSWMsSUFBWm80RSxVQUFZLGdCQWhCTm41QixJQUFJdDJDO1lBaUJkLGlCQWpCUXVjLEtBV054ckIsZUFWQXUrRSxLQWVFRyxVQUpGcDRFO1lBS0YsT0FqQlFrbEI7WUFnQlEsU0FoQlJBO1lBaUJSLFlBRTJDLE9BbkJuQ0E7VUFsQmUsV0FxQzRCO2VBRW5EcUwsSUFBSXJMLEVBQUUrNUI7UUFDRzs4QkFETC81QixLQUFFKzVCO1NBV2MsZUFYaEIvNUIsRUFDRit5RDtTQVVVLHlCQVhSL3lEOztRQUVrQjs7Z0JBR2pCb3pELFlBQU8xK0UsY0FBSGtIO2VBQUp3M0UsT0FKSEw7Y0FLWSwwQkFETG4zRSxFQUxIbStDO2NBTVEsb0JBREZybEQ7Y0FFQztZQUdVLDJCQUFUNGM7O1VBTlosU0FPbUM7ZUFFckN2RSxPQUFLclUsRUFBRXNuQjtRQUNULFFBRFNBLEtBQ1QsS0FRSTFDLHVCQVJKOztjQVNBOW9COztVQUNFO1lBQVUsNkJBRlI4b0IsSUFDSjlvQjtZQVRvQjs7Z0JBSUY7aUJBREhFO2lCQUFIa0g7aUJBQ00sc0JBRE5BO2lCQUNtQix3QkFEbkJBOzs7c0JBR1NrVixhQUFSMmUsV0FBYSxXQVBuQi8yQixFQU9NKzJCLEVBQVEzZTtnQkFGSCxVQURIcGM7O3VCQU1mRjs7OztRQXJCd0IsUUF1QnBCO2VBRUZzTixLQUFLcEosRUFBRXNuQixFQUFFalg7UUFDWCxRQURTaVgsS0FDVCxVQURXalgsTUFDWCxLQVVJdVUsdUJBVko7O2NBWUE5b0I7O1VBQ0U7O2tCQUZFb1Q7YUFFZ0IscUJBSGhCMFYsSUFFSjlvQjthQVprQmdHO2FBQUVvRDtZQUNsQjtpQkFEZ0JwRDtnQkFLVztpQkFEZDlGLEtBSkc4RjtpQkFJTm9CLEVBSk1wQjtpQkFLVyxzQkFEakJvQjtpQkFDOEIsd0JBRDlCQTs7O3NCQUdXa1YsYUFBUjJlLFdBUEszeEIsT0FPUSxXQVJyQnBGLEVBUVErMkIsRUFBUTNlLEVBUEhsVDs7O2dCQUtTLElBTFhwRCxFQUlIOUYsS0FKS2tKOztjQVdoQmdLLFlBWGdCaEs7dUJBWXBCcEo7Ozs7UUFHQSxPQUpJb1QsU0FJQztlQUVIMGhELG1CQUFtQjV3RCxFQUFFc25CO1FBQ3ZCLFNBQVFtcEM7VXREOVhmO1VzRDhYMkI7O2NBSVI7ZUFESXowRDtlQUFIa0g7ZUFBSnczRTtlQUNHLHNCQURDeDNFO2VBQ1ksd0JBRFpBOztnQkFLRyxJQURLa1YsYUFBUjJlLFdBQ0csbUJBVEsvMkIsRUFRUisyQixFQUFRM2U7Z0JBQ0w7a0JBSUYsSUFER3dpRTtrQkFDSCxnQkFURDEzRSxFQUlBNnpCLEVBSUk2akQ7a0JBRVMsVUFWakJGLEdBQUl4M0UsRUFVYSxVQVZWbEg7Z0JBS0EsWUFMQUE7O2NBQ0osWUFESUE7O1lBRFYsU0FXbUM7UUFiekMsTUFEdUJzckIsS0FDdkIsS0FlSWxQLHFCQWZKOztjQWdCQXRjO1VBQ0U7WUFBUyxtQkFBVSxpQkFGakJzYyxFQUNKdGM7WUFDRSxpQkFGRXNjLEVBQ0p0YztZQUNXLFNBRFhBOzs7Z0JBRUk7ZUFFRjRQLE9BQU80YixHQUFJLE9BQUpBLElBQVU7ZUFFYnlwQzs7OztZQUVnQjs7OztxQkFBVHJ1Qzs7VUFERjtlQUdUc3VDLE1BQU0xcEM7UUFDUjtjQURRQTtTQUNSO1NBQ0U7O3FCQUFxQm1DLEVBQUUzbkIsR0FBZSxhQUFqQjJuQixFQUFpQixnQkFBZjNuQixHQUFrQztTQUMvQyxxQkFGUm12RDtTQUVRLEtBSEozcEM7UUFJUjttQkFDT3hsQjtZQUNNOytCQUROQTthQUVXLHNCQUpkb3ZELE1BR0s5dUQ7WUFDSixpQkFKRDh1RCxNQUdLOXVEO1lBQ0osUUFBMEI7O1FBSC9CLFVBSlFrbEIscUJBQ0oycEMsSUFFQUMsTUFTd0I7ZUFFdEIycEI7Ozs7Z0JBRU83K0UsZ0JBQUhrSDtZQUFjLG1CQUFkQTtjQUNOLGdEQURTbEg7WUFFUywrQkFBVDBtQjs7VUFIRjtlQUtUbzRELFlBQVl4ekQ7UUFDZDs7Y0FEY0E7U0FDZDtTQUVFOztxQkFDT21DLEVBQUUzbkIsR0FBZSxhQUFqQjJuQixFQUFpQixzQkFBZjNuQixHQUF3QztTQUV2QyxxQkFKUm12RDtTQUlRLEtBTkUzcEM7UUFPZDttQkFDT3hsQjtZQUNNLElBQUpNLEVBQUksc0JBRE5OO1lBQ00sVUFSVDYyQyxVQVFLdjJDO1lBQUksU0FFSyxpQkFMZDh1RCxNQUdLOXVEO1lBRUosaUJBTEQ4dUQsTUFHSzl1RDtZQUVKLFFBQTBCOztRQUovQixVQU5JdTJDLFFBRFVyeEIsZ0JBRVYycEMsSUFJQUMsTUFVd0I7ZUFFMUJuOEMsT0FBT21YO1FBR1QsSUFBSWtsQyxTQUhLbGxDO1FBR1QsU0FFUTNRLElBQUl6ZixFQUFFdTFEO2NBQUZodkQsTUFBRWl2RDtVQUFVO2VBQVZBO2NBTUk7ZUFERjlqRCxLQUxGOGpEO2VBS0RwdUQsRUFMQ291RDtlQU1JLHNCQURMcHVEO2VBQ2tCLHdCQURsQkE7O29CQUdZbXpCLGdCQUFWZ3JCO2dCQUNvQjsyQkFEcEJBLElBQVVockI7dUN0RDNjaEMsT3NEbWNlOWEsSUFBSWxaLElBS0ltTDtjQUNFLElBTko4akQsT0FLRTlqRDs7WUFIVixHQUZNbkwsUUFGUit1RCxvQkFLTztZQUNTO3FDQU5oQkEsU0FFUS91RDthQUlRLElBSlJBOzthQUFFaXZEO3FCQVVMO1FBWlQ7OEJ0RGpjUCxPc0RtY2UvMUMsb0JBWUc7ZUFFVGkyQyxZQUFZL25DO1FBQWdCLGdCQUFoQkE7UUFBZ0Isb0J0RGpkckM7UXNEaWRxQyxzQnREamRyQyxPc0JtQ1M3YixzQmdDOGFzQztlQUV0QzZqRCxjQUFjaG9DO1FBQWdCLGdCQUFoQkE7UUFBZ0Isb0J0RG5kdkM7UXNEbWR1QyxzQnREbmR2QyxPc0JtQ1M3YixzQmdDZ2J3QztlQUV4QzZuQixRQUFRdkosSUFBSXB3QjtRQUNkOzttQkFBUyxxQ0FEQ293QixJQUNLNkssRUFBRTcyQixFQUFrQjtpQkFEckJwRSxFQUN1QjtlQUVuQ3cyRCxZQUFZcG1DLElBQUlwd0I7UUFDbEI7O21CQUFTLHlDQURLb3dCLElBQ0M2SyxFQUFFNzJCLEVBQXNCO2lCQURyQnBFLEVBQ3VCO2VBRXZDNDVCLE9BQU81NUIsR0FDQyxJQUFOb3dCLElBQU0sYUFDVixZQURJQSxJQURLcHdCLEdBRVQsT0FESW93QixHQUVEOztjQXhWRHpnQjtjQUtBdXNCO2NBT0F5RTtjQVNBODFCO2NBMkRBM2dDO2NBU0FnQjtjQTBDQXRqQjtjQXlCQW9sQjtjQUtBeTlCO2NBb0JBRTtjQXFCQTEvQjtjQWFBdGU7Y0FnQ0F1OEM7Y0FsQkF4bkQ7Y0F1Q0FzQztjQU1Bc2xEO2NBc0NBajhDO2NBbUJBeThDO2NBRUFDO2NBRUFoOEI7Y0FHQTY4QjtjQUdBNThCO2NBM1RBNGtEO2NBNFFBUTtJQTFVVyxTQStZYkMsZ0JBQXdCLDJCQUFlO0lBL1kxQixTQStiVEMsVUE5Q0tsdUUsR0FBbUMseUJBQW5DQSxJQUF1RDtJQWpabkQsU0FrWmJtdUUsZUFBY251RSxHQUFtQyx5QkFBbkNBLElBQTREO0lBbFo3RCxTQW1aYm91RSxVQUFTcHVFLEVBQWNpcUIsR0FBZSx5QkFBN0JqcUIsSUFBY2lxQixFQUE4QztJQW5aeEQsU0FvWmJva0QsWUFBV3J1RSxHQUFzQix5QkFBdEJBLElBQTBDO0lBcFp4QyxTQXFaYnN1RSxZQUFXdHVFLEdBQXNCLHlCQUF0QkEsSUFBMEM7SUFyWnhDLFNBdVpidXVFLFdBQVVuaEUsR0FBZUYsSUFDM0IseUJBRFlFLEtBQWVGLE9BQ0E7SUF4WlosU0EwWmJzaEUsV0FBVXh1RSxHQUFtQyx5QkFBbkNBLEVBQXNEO0lBMVpuRCxTQTJaYnl1RSxjQUFlenVFLEdBQW1DLDBCQUFuQ0EsRUFBMkQ7SUEzWjdELFNBNFpiMHVFLFNBQVUxdUUsRUFBY3NMLEdBQWUsMEJBQTdCdEwsRUFBY3NMLEVBQTZDO0lBNVp4RCxTQTZaYnFqRSxXQUFZM3VFLEdBQXNCLDBCQUF0QkEsRUFBeUM7SUE3WnhDLFNBOFpiNHVFLFdBQVk1dUUsR0FBc0IsMEJBQXRCQSxFQUF5QztJQTlaeEMsU0ErWmI2dUUsVUFBV3poRSxHQUFjRixJQUFzQiwwQkFBcENFLEdBQWNGLEdBQTRDO0lBL1p4RCxTQWlhYjRoRSxPQUFLdjZCLElBQUlockI7TUFDRCxJQUFOd2xELElBQU0sWUFDVixTQURJQSxJQURPeGxELE1BR1gsVUFGSXdsRCxJQURHeDZCLEtBR1AsT0FGSXc2QixHQUdEO0lBcmFZLFNBdWFiQyxNQUFNRCxJQUFJeDZCO01BQ04sb0JBREV3NkI7TUFDRixVQUVRLElBQVA5a0QsV0FBTyxPQUFQQSxNQUhLc3FCLElBR2MsV0FIbEJ3NkI7TUFFRSxRQUVNO0lBM2FEO2VBaWJUcHdFLE9BQU9zckIsRUFBRTNlO1FBQ0gsSUFBSmxWLEVBQUksWUFDUixTQURJQSxFQURPa1YsR0FHWCxVQUZJbFYsRUFESzZ6QixHQUdULE9BRkk3ekIsQ0FHSDtVQUNDZ1Y7ZUFDQTdPLE1BQU1uRyxFQUFFNnpCO1FBR0osb0JBSEU3ekI7UUFHRixVQUdGLElBREcwN0IsYUFDQSx1QkFORzdILEVBS0g2SDtRQURHLFFBRTBEO2VBR2xFbTlDLGFBQWE3NEUsRUFBRTZ6QixFQUFFM2U7UUFDbkIsV0FEZWxWLEdBRWYsVUFGZUEsRUFBRTZ6QixHQUVqQixnQkFGZTd6QixFQUFJa1YsRUFHUDs7O2dCQWxCVjNNO2dCQUtBeU07Z0JBQ0E3TztnQkE3QkppeUU7Z0JBcUNJTjtnQkFDQWU7Z0JBM0NKWDtJQXJaYTtNdERsR3BCLElzRDZpQmEveEU7ZUFDQTZPLEtBQU04ekMsS0FBWXJyRCxHQUFJLHVCQUFKQSxFQUFZOzsrQkFEOUIwSSxNQUNBNk87T0F2aEJWOGY7T0FDQXlFO09BQ0E4MUI7T0FDQTNnQztPQUNBZ0I7T0FDQXRqQjtPQUNBb2xCO09BQ0F5OUI7T0FDQUU7T0FDQTEvQjtPQUNBcnZCO09BRUFzdEQ7T0FFQXhuRDtPQUVBc0M7T0FDQXNsRDtPQUNBajhDO09BRUF5OEM7T0FFQUM7T0FFQWg4QjtPQUNBNjhCO09BRUFnb0I7T0FDQVE7O2VBNmZNcnZFLE9BQU8rbUQsSUFBSyw0QkFBTEEsR0FBNEI7ZUFDbkM5OEIsT0FBTzU1QjtRQUNDLElBQU5vd0IsSUFBTSxXQUNWLFdBbmdCSm9tQyxZQWtnQlFwbUMsSUFES3B3QixHQUVULE9BRElvd0IsR0FFRDs7Y0FKRHpnQjtjQXpoQk51c0I7Y0FDQXlFO2NBQ0E4MUI7Y0FDQTNnQztjQUNBZ0I7Y0FDQXRqQjtjQUNBb2xCO2NBQ0F5OUI7Y0FDQUU7Y0FDQTEvQjtjQUNBcnZCO2NBRUFzdEQ7Y0FFQXhuRDtjQUVBc0M7Y0FDQXNsRDtjQUNBajhDO2NBRUF5OEM7Y0FFQUM7Y0FFQWg4QjtjQUNBNjhCO2NBaWdCTTU4QjtjQS9mTjRrRDtjQUNBUTtJQStDaUIsU0F5ZFhrQixjQUFVLFlBQU07SUF6ZEwsU0EwZFhDLE1BQUluNkUsRUFBRWkxQixFQUFFM2UsR0FBSSxTQUFSdFcsS0FBYSxpQkFBWGkxQixFQUFFM2UsU0FBUyxRQUFpQjtJQTFkdkIsU0E0ZFg4akUsU0FBU25sRCxFQUFFL3RCO01BQ1Asb0JBRE9BO01BQ1AsVUFDUSxJQUFQckksV0FBTyxHQUFQQSxNQUZJbzJCLEVBRWE7TUFDakIsUUFBSztJQS9kQyxTQWllWG9sRCxTQUFPcjZFLEVBQUVpMUI7VUFDRTMwQixFQURKTixLQUNNc007TUFDYjtXQURXaE07Y0FHVGtsQixFQUhTbGxCLEtBR0owSyxFQUhJMUs7VUFHRyxZQUpMMjBCLEVBSVB6UCxJQUFpQyxrQkFIdEJsWixJQUdOdEIsR0FBNEI7Y0FIeEJpTSxTQUFFMUssU0FHWGlaLEVBSFdsWixLQUFGaE0sTUFBRWdNOztRQUVMLFNBSUE7SUF4ZUcsU0EwZVhndUUsT0FBS3Q2RSxFQUFFaTFCO01BQ1Q7WUFET2oxQjtPQUNELDhCdEQ3a0JiLE9zRDhqQlNvNkUsU0FjT25sRDtNQUNILFVBQ00sSUFBTC90QixXQUFLLGtCQUFMQTtNQUNHLFFBQUk7SUE3ZUQsU0ErZVhxekUsU0FBT3Y2RSxHQUFJLGdCQUFKQSxLQUFrQjtJQS9lZCxTQWdmWHc2RSxRQUFNeDZFLEdBQUksaUJBQU87SUFoZk4sU0F5ZmJ5NkUsZ0JBQTZCLDJCQUFlO0lBemYvQixTQTJmYkMsU0FBVTF2RSxHQUF5Qyx5QkFBekNBLElBQTZEO0lBM2YxRCxTQTRmYjJ2RSxjQUFlM3ZFLEdBQ1QseUJBRFNBLElBQ2dCO0lBN2ZsQixTQThmYjR2RSxTQUFVNXZFLEVBQW1CaXFCLEdBQy9CLHlCQURZanFCLElBQW1CaXFCLEVBQ0E7SUEvZmhCLFNBZ2dCYjRsRCxXQUFZN3ZFLEdBQTJCLHlCQUEzQkEsSUFBK0M7SUFoZ0I5QyxTQWlnQmI4dkUsV0FBWTl2RSxHQUEyQix5QkFBM0JBLElBQStDO0lBamdCOUMsU0FtZ0JiK3ZFLFNBQVUvdkUsR0FBeUMseUJBQXpDQSxJQUE2RDtJQW5nQjFELFNBb2dCYmd3RSxjQUFlaHdFLEdBQ1QseUJBRFNBLElBQ2dCO0lBcmdCbEIsU0FzZ0JiaXdFLFNBQVVqd0UsRUFBbUJpcUIsR0FDL0IseUJBRFlqcUIsSUFBbUJpcUIsRUFDQTtJQXZnQmhCLFNBd2dCYmltRCxXQUFZbHdFLEdBQTJCLHlCQUEzQkEsSUFBK0M7SUF4Z0I5QyxTQXlnQmJtd0UsV0FBWW53RSxHQUEyQix5QkFBM0JBLElBQStDO0lBemdCOUMsU0E0Z0Jib3dFLFVBQVdoakUsR0FBaUJGLElBQzlCLHlCQURhRSxLQUFpQkYsT0FDSDtJQTdnQlosU0E4Z0JibWpFLFVBQVdqakUsR0FBaUJGLElBQzlCLHlCQURhRSxLQUFpQkYsT0FDSDtJQS9nQlosU0FnaEJib2pFLFdBQVlsakUsR0FBbUJGLElBQ2pDLHlCQURjRSxLQUFtQkYsT0FDTjtJQWpoQlosU0FtaEJicWpFLFdBQVV2d0UsR0FBd0MseUJBQXhDQSxFQUEyRDtJQW5oQnhELFNBb2hCYnd3RSxnQkFBZXh3RSxHQUNULDBCQURTQSxFQUNlO0lBcmhCakIsU0FzaEJieXdFLFdBQVV6d0UsRUFBbUJzTCxHQUMvQiwwQkFEWXRMLEVBQW1Cc0wsRUFDRDtJQXZoQmYsU0F3aEJib2xFLGFBQVkxd0UsR0FBMkIsMEJBQTNCQSxFQUE4QztJQXhoQjdDLFNBeWhCYjJ3RSxhQUFZM3dFLEdBQTJCLDBCQUEzQkEsRUFBOEM7SUF6aEI3QyxTQTBoQmI0d0UsWUFBV3hqRSxHQUFnQkYsSUFBd0IsMEJBQXhDRSxHQUFnQkYsR0FBOEM7SUExaEI1RCxTQTRoQmIyakUsT0FBS0MsS0FBS0MsS0FBS3huRDtNQUNQLElBQU53bEQsSUFBTTtNQUNWLFdBRElBLElBRGF4bEQ7TUFHakIsU0FGSXdsRCxJQURHK0I7TUFJUCxTQUhJL0IsSUFEUWdDO01BSVosT0FISWhDLEdBS0Q7SUFsaUJZLFNBb2lCYmlDLFFBQU1qQyxJQUFJK0IsS0FBS0M7TUFDWCxtQkFERWhDO01BQ0Y7UUFFUSxJQUFQOWtEO1FBQU8sR0FBUEEsTUFISzZtRDtVQUlJLHFCQUpSL0I7VUFJUTtZQUVFLElBQVBqOUMsZUFBTyxPQUFQQSxRQU5NaS9DLEtBTWMsV0FOdkJoQztVQUtNO1FBSUY7TUFQRixRQU9NO0lBN2lCRDtlQXFqQlRwd0UsYUFBZTJNO1FBQ1QsSUFESzA1QyxZQUFIRixZQUNGO1FBQ1IsV0FESTF1RCxFQURha1Y7UUFHakIsU0FGSWxWLEVBRE0wdUQ7UUFHSyxTQUZYMXVELEVBRFM0dUQ7UUFHRSxPQUZYNXVEO2VBSUZnVixLQUFLOHpDO1FBQ1c7U0FERjhGO1NBQUhGO1NBQ0ssc0JBRFg1RixLQUFTOEY7UUFDaEIsd0JBRE85RixLQUFNNEY7ZUFFWHZvRCxNQUFNbkc7UUFDRixJQURRNHVELFlBQUhGLFlBQ0wsZUFERTF1RCxHQUNVLGlCQURWQTs7Y0FHUzY2RSxnQkFBVkM7VUFDbUIsR0FBbkIsaUJBSklwc0IsR0FHSm9zQixTQUNtQixpQkFKWmxzQixHQUdHaXNCLE1BRVI7VUFBd0I7UUFIVDtlQUt0Qmp5RSxRQUFRNUk7UUFDSixtQkFESUEsR0FDUSxpQkFEUkE7O2NBR080dUQsY0FBVkYsNEJBQVVFO1FBRE8sUUFDZTtlQUNyQ2lxQixhQUFhNzRFLFFBQVVrVjtZQUFKMDVDLFlBQUhGO1FBQ2xCLGFBRGUxdUQ7UUFFZixTQUZlQSxFQUFHMHVEO1FBRUgsU0FGQTF1RCxFQUFNNHVEO1FBRU4sa0JBRkE1dUQsRUFBVWtWO2VBSXZCbE0sVUFBVWhKO1FBQUksb0JBQUpBLEdBQUksWUFsRWxCKzVFLFdBa0VjLzVFLE9BQWdDOztrQkF0QjFDdUksT0FLQXlNLEtBRUE3TyxNQXpDSmcwRSxXQWdESXZ4RSxRQUlBaXdFLGFBSUE3dkU7SUEza0JTO010RGxHcEIsSXNEMnJCZTdDO2VBQ0E2TyxLQUFNOHpDLEtBQVlyckQsR0FBSSx3QkFBSkEsRUFBYTtVQU4vQm9QLHNCQUtBMUcsTUFDQTZPO2VBTEFtTyxPQUFNMmxDLEtBQVlyckQsR0FBSSx3QkFBSkEsRUFBYTs7K0JBRC9Cb1AsUUFDQXNXO09BaHFCWjJSO09BQ0F5RTtPQUNBODFCO09BQ0EzZ0M7T0FDQWdCO09BQ0F0akI7T0FDQW9sQjtPQUNBeTlCO09BQ0FFO09BQ0ExL0I7T0FDQXJ2QjtPQUVBc3REO09BRUF4bkQ7T0FFQXNDO09BQ0FzbEQ7T0FDQWo4QztPQUVBeThDO09BRUFDO09BRUFoOEI7T0FDQTY4QjtPQUVBZ29CO09BQ0FROztlQTJvQk1ydkUsT0FBTyttRCxJQUFLLDRCQUFMQSxHQUE0QjtlQUNuQzk4QixPQUFPNTVCO1FBQ0MsSUFBTm93QixJQUFNLFdBQ1YsV0FqcEJKb21DLFlBZ3BCUXBtQyxJQURLcHdCLEdBRVQsT0FESW93QixHQUVEOztjQUpEemdCO2NBdnFCTnVzQjtjQUNBeUU7Y0FDQTgxQjtjQUNBM2dDO2NBQ0FnQjtjQUNBdGpCO2NBQ0FvbEI7Y0FDQXk5QjtjQUNBRTtjQUNBMS9CO2NBQ0FydkI7Y0FFQXN0RDtjQUVBeG5EO2NBRUFzQztjQUNBc2xEO2NBQ0FqOEM7Y0FFQXk4QztjQUVBQztjQUVBaDhCO2NBQ0E2OEI7Y0Erb0JNNThCO2NBN29CTjRrRDtjQUNBUTtJQStDaUIsU0F1bUJYbUQsY0FBVSxZQUFNO0lBdm1CTCxTQXdtQlhDLE1BQUlwOEUsRUFBRTh2RCxHQUFHRSxHQUFHMTVDO01BQUksU0FBWnRXLEtBQWlCLGlCQUFmOHZELEdBQUdFLEdBQUcxNUMsU0FBUyxRQUFxQjtJQXhtQi9CLFNBMG1CWCtsRSxVQUFVdnNCLEdBQUdFLEdBQUc5b0Q7TUFDWixtQkFEWUEsR0FDQSxpQkFEQUE7O1lBRUZxUixjQUFUQyxzQkFGS3MzQyxNQUVJdjNDLE9BRkR5M0MsR0FFaUM7TUFDekMsUUFBSztJQTdtQkMsU0ErbUJYc3NCLFNBQU90OEUsRUFBRTh2RCxHQUFHRTtVQUNEMXZELEVBREpOLEtBQ01zTTtNQUNiO1dBRFdoTTtjQUdUa2xCLEVBSFNsbEIsS0FHSjBLLEVBSEkxSztVQUdHLGFBSkx3dkQsR0FBR0UsR0FJVnhxQyxJQUFzQyxrQkFIM0JsWixJQUdOdEIsR0FBaUM7Y0FIN0JpTSxTQUFFMUssU0FHWGlaLEVBSFdsWixLQUFGaE0sTUFBRWdNOztRQUVMLFNBSUE7SUF0bkJHLFNBd25CWGl3RSxPQUFLdjhFLEVBQUU4dkQsR0FBR0U7TUFDWjtZQURPaHdEO09BQ0QsOEJ0RDN0QmIsT3NENHNCU3E4RSxVQWNPdnNCLEdBQUdFO01BQ04sVUFDTSxJQUFMOW9ELFdBQUssa0JBQUxBO01BQ0csUUFBSTtJQTNuQkQsU0E2bkJYczFFLFNBQU94OEUsR0FBSSxnQkFBSkEsS0FBa0I7SUE3bkJkLFNBOG5CWHk4RSxRQUFNejhFLEdBQUksaUJBQU87SUE5bkJOLFNBdW9CYjA4RSxTQUFPbCtFLEdBQWdCLHlCQUFoQkEsRUFBK0I7SUF2b0J6QixTQXdvQmJtK0UsU0FBUTFuRCxHQUFxQix5QkFBckJBLEVBQW9DO0lBeG9CL0IsU0Ewb0JiMm5ELFVBQVM1eEUsRUFBY3hNLEdBQTZCLHlCQUEzQ3dNLEVBQWN4TSxFQUFpRDtJQTFvQjNELFNBMm9CYnErRSxlQUFjN3hFLEVBQWN4TSxHQUN0Qix5QkFEUXdNLEVBQWN4TSxFQUNHO0lBNW9CbEIsU0E2b0JicytFLFVBQVM5eEUsRUFBY3hNLEVBQVF5MkIsR0FDakMseUJBRFdqcUIsRUFBY3hNLEVBQVF5MkIsRUFDRjtJQTlvQmhCLFNBK29CYjhuRCxZQUFXL3hFLEVBQWN4TSxHQUFnQix5QkFBOUJ3TSxFQUFjeE0sRUFBb0M7SUEvb0JoRCxTQWdwQmJ3K0UsWUFBV2h5RSxFQUFjeE0sR0FBZ0IseUJBQTlCd00sRUFBY3hNLEVBQW9DO0lBaHBCaEQsU0FrcEJieStFLFdBQVU3a0UsR0FBZTlOLEdBQVM0TixHQUFlM04sR0FBU2pLO01BQzVELHlCQURZOFgsR0FBZTlOLEdBQVM0TixHQUFlM04sR0FBU2pLLEVBQy9CO0lBbnBCZCxTQXFwQmI0OEUsV0FBVWx5RSxHQUFtQyx5QkFBbkNBLEVBQXNEO0lBcnBCbkQsU0FzcEJibXlFLGdCQUFlbnlFLEdBQW1DLDBCQUFuQ0EsRUFBMkQ7SUF0cEI3RCxTQXVwQmJveUUsV0FBVXB5RSxFQUFjc0wsR0FBZSwwQkFBN0J0TCxFQUFjc0wsRUFBNkM7SUF2cEJ4RCxTQXdwQmIrbUUsYUFBWXJ5RSxHQUFzQiwwQkFBdEJBLEVBQXlDO0lBeHBCeEMsU0F5cEJic3lFLGFBQVl0eUUsR0FBc0IsMEJBQXRCQSxFQUF5QztJQXpwQnhDLFNBMHBCYnV5RSxZQUFXbmxFLEdBQWNGLElBQXNCLDBCQUFwQ0UsR0FBY0YsR0FBNEM7SUExcEJ4RCxTQTRwQmJzbEUsT0FBSzdKLEtBQUtwL0M7TUFDWixNQURPby9DLGdCQUVHLGFBRE5yekU7TUFFSixXQURJeTVFLElBRlF4bEQ7TUFDWixJQUVBLEtBRklqMEIsVUFFSjs7WUFDQXRHO1FBQXNCO29CQUZsQisvRSxJQUVKLy9FLEVBQW9DLGlCQUo3QjI1RSxLQUlQMzVFO1VBQXNCLFNBQXRCQTs7O01BQ0EsT0FISSsvRSxHQUdEO0lBanFCWSxTQW1xQmIwRCxRQUFNMUQsSUFBSXBHO01BQ0osSUFBSnJ6RSxFQUFJLFNBREF5NUU7TUFDQTtXQUFKejVFLE1BRFFxekUsZ0JBR3FCO1FBQy9CLFNBSEVyekUsVUFHRjs7O1VBQ0U7WUFBTSxvQkFMRnk1RSxJQUlOLy9FO1lBQ1EsV0FDSTtZQURKLElBRUNpN0I7WUFBWSxHQUFaQSxNQUFZLGlCQVBYMCtDLEtBSVYzNUUsVUFJYztZQUhOLFNBRFJBOzs7aUJBTUEsV0FWTSsvRTs7OzBEQVdLLG9CQUFJO0lBOXFCRjtlQW9yQlRwd0UsT0FBT3NyQixFQUFFM2U7UUFDSCxJQUFKbFYsRUFBSSxTQURDNnpCO1FBRVQsV0FESTd6QixFQURPa1Y7UUFDSCxJQUNSLEtBRlMyZSxxQkFFVDs7Y0FDQWo3QjtVQUNFO3NCQUhFb0gsRUFFSnBILEVBQ2MsaUJBSkxpN0IsRUFHVGo3QjtZQUNFLFNBREZBOzs7UUFHQSxPQUxJb0gsQ0FLSDtlQUNDZ1YsS0FBSzh6QyxLQUFLajFCO1FBQ1osaUJBRFlBLHFCQUNaOztjQUNBajdCO1VBQ0U7cUJBRkV3ckIsS0FFZSxzQkFIUHlQLEVBRVpqN0I7WUFDTyx3QkFIQWt3RDtZQUdMLFNBREZsd0Q7OztRQUdBLE9BSkl3ckIsSUFJRjtlQUNBamUsTUFLc0JuRyxFQUFGNnpCO1FBSnRCLFFBSXNCQSxhQUhYLGVBR2E3ekI7UUFIYixHQURQVyxRQUNBYSxNQUNnQjtRQUZwQixJQUlFLElBSkViLFlBSXNCL0g7UUFDdEI7a0JBRHNCQTtZQUdkLG9CQUhZb0gsRUFBRXBIO1lBR2Q7Y0FHRixnQkFBVyxzQkFOQ2k3QixFQUFJajdCO2NBTWIsd0JBREEwakYsS0FFRSxRQVBXMWpGO2NBUVg7WUFKQztVQUhFLFNBU087ZUFFdkJnUSxRQUFRNUk7UUFDQSxJQUFOVyxJQUFNLFNBREFYO1FBQ0EsU0FBTlcsSUFDWTtRQUROLFVBR0YsVUFKRVg7UUFJRjtVQUdGLGdCQVNRLGlCQWZWVyxJQUtLNDdFLElBVUssSUFmVjU3RSxZQU1pQi9IO1VBQ2I7b0JBRGFBO2NBR0wsc0JBVk5vSCxFQU9XcEg7Y0FHTDtnQkFHRixJQURHMGpGO2dCQUNILGlCQU5LajhFLEVBQUV6SCxZQUtKMGpGO2dCQUNILFFBTk8xakY7O2NBSUQ7WUFIRSxVQURIeUg7UUFGUCxRQVlRO2VBQ2xCdzRFLGFBQWE3NEUsRUFBRTZ6QixFQUFFM2U7UUFDbkIsYUFEZWxWO1FBQ2YsU0FEaUI2ekIscUJBQ2pCOztjQUNBajdCO1VBQ0U7c0JBSGFvSCxFQUVmcEgsRUFDYyxpQkFIR2k3QixFQUVqQmo3QjtZQUNFLFNBREZBOzs7UUFHQSxrQkFMZW9ILEVBQUlrVixFQUtQO2VBQ1ZsTSxVQUFVaEo7UUFHSCxpQkFIR0EsV0FDSXBIO1FBQ2Q7bUJBRGNBO1VBQ2Q7OztZQUFVLHFCQUZBb0gsRUFDSXBIO1lBQ0osYUFESXVHO1lBQ0o7VUFEWixZQUVzQjs7a0JBekRwQm9KLE9BT0F5TSxLQU1BN08sTUE1Q0oyMUUsV0E2RElsekUsUUFrQkFpd0UsYUFNQTd2RTtJQTF1QlM7TXREbEdwQixJc0RzMUJhN0M7ZUFDQTZPLEtBQU04ekMsS0FBWXJyRCxHQUFJLHVCQUFKQSxFQUFZOzsrQkFEOUIwSSxNQUNBNk87T0FoMEJWOGY7T0FDQXlFO09BQ0E4MUI7T0FDQTNnQztPQUNBZ0I7T0FDQXRqQjtPQUNBb2xCO09BQ0F5OUI7T0FDQUU7T0FDQTEvQjtPQUNBcnZCO09BRUFzdEQ7T0FFQXhuRDtPQUVBc0M7T0FDQXNsRDtPQUNBajhDO09BRUF5OEM7T0FFQUM7T0FFQWg4QjtPQUNBNjhCO09BRUFnb0I7T0FDQVE7O2VBc3lCTXJ2RSxPQUFPK21ELElBQUssNEJBQUxBLEdBQTRCO2VBQ25DOThCLE9BQU81NUI7UUFDQyxJQUFOb3dCLElBQU0sV0FDVixXQTV5QkpvbUMsWUEyeUJRcG1DLElBREtwd0IsR0FFVCxPQURJb3dCLEdBRUQ7O2NBSkR6Z0I7Y0FsMEJOdXNCO2NBQ0F5RTtjQUNBODFCO2NBQ0EzZ0M7Y0FDQWdCO2NBQ0F0akI7Y0FDQW9sQjtjQUNBeTlCO2NBQ0FFO2NBQ0ExL0I7Y0FDQXJ2QjtjQUVBc3REO2NBRUF4bkQ7Y0FFQXNDO2NBQ0FzbEQ7Y0FDQWo4QztjQUVBeThDO2NBRUFDO2NBRUFoOEI7Y0FDQTY4QjtjQTB5Qk01OEI7Y0F4eUJONGtEO2NBQ0FRO0lBK0NpQixTQWt3Qlg0RSxjQUFVLFlBQU07SUFsd0JMLFNBbXdCWEMsTUFBSTc5RSxFQUFFaTFCLEVBQUUzZSxHQUFJLFNBQVJ0VyxLQUFhLGlCQUFYaTFCLEVBQUUzZSxTQUFTLFFBQWlCO0lBbndCdkIsU0Fxd0JYd25FLFlBQVU3b0QsRUFBRS90QjtNQUNkO1FBQ0ssWUFGU0EsT0FBRit0QixhQUV5QjtRQUNuQyxTQUhVQSxxQkFHVjs7O1VBQ0U7WUFBTSxvQkFKSS90QixFQUdabE47WUFDUTtjQUNRLElBQVA2RTtjQUFZLEdBQVpBLE1BQVksaUJBTFhvMkIsRUFHVmo3Qjs7OzswQkFHUzs7UUFIVDs7OzBEQU1XLG9CQUFLO0lBOXdCTCxTQWd4QlgrakYsU0FBTy85RSxFQUFFaTFCO1VBQ0UzMEIsRUFESk4sS0FDTXNNO01BQ2I7V0FEV2hNO2NBR1RrbEIsRUFIU2xsQixLQUdKMEssRUFISTFLO1VBR0csZUFKTDIwQixFQUlQelAsSUFBa0Msa0JBSHZCbFosSUFHTnRCLEdBQTZCO2NBSHpCaU0sU0FBRTFLLFNBR1hpWixFQUhXbFosS0FBRmhNLE1BQUVnTTs7UUFFTCxTQUlBO0lBdnhCRyxTQXl4QlgweEUsT0FBS2grRSxFQUFFaTFCO01BQ1Q7WUFET2oxQjtPQUNELDhCdEQ1M0JiLE9zRHUyQlM4OUUsWUFvQk83b0Q7TUFDSCxVQUNNLElBQUwvdEIsV0FBSyxrQkFBTEE7TUFDRyxRQUFJO0lBNXhCRCxTQTh4QlgrMkUsVUFBT2orRSxHQUFJLGdCQUFKQSxLQUFrQjtJQTl4QmQsU0EreEJYaytFLFFBQU1sK0UsR0FBSSxpQkFBTztJQS94Qk47Ozs7UUErWWJpNUU7UUFnRElDO1FBN0NKQztRQUNBQztRQUNBQztRQUNBQztRQUVBQztRQUdBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUVBQztRQU1BRTs7O1dBa0RFRSxPQUNBQyxNQU9BRSxTQVNBQyxPQUtBQyxTQUNBQzs7UUFTRkM7UUFFQUM7UUFDQUM7UUFFQUM7UUFFQUM7UUFDQUM7UUFFQUM7UUFDQUM7UUFFQUM7UUFFQUM7UUFDQUM7UUFHQUM7UUFFQUM7UUFFQUM7UUFHQUM7UUFDQUM7UUFFQUM7UUFFQUM7UUFDQUM7UUFDQUM7UUFFQUM7UUFRQUc7OztXQW1FRUcsT0FDQUMsTUFPQUUsU0FTQUMsT0FLQUMsU0FDQUM7O1FBU0ZDO1FBR0FFO1FBQ0FDO1FBRUFDO1FBRUFDO1FBQ0FDO1FBRUFDO1FBR0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBRUFDO1FBT0FDOzs7V0ErRkVHLE9BQ0FDLE1BYUFFLFNBU0FDLE9BS0FDLFVBQ0FDOzs7VXREajRCVDs7SXNEa0dvQjthaEQ5RGZDLGlCQUFpQkMsV0FBV2xsRixpQkFBaUJpSTtNQVU1QyxxQkFWNENBLGNBVzFDLE9BWHlCakk7TUFZekIsOEJBWjBDaUksY0FDOUIzQztNQUNmO2dCQURlQTtVQUVQLGNBSFM0L0UsV0FBNEJqOUUsS0FDOUIzQyxJQUVnQixRQUZoQkE7VUFHVixNQUhVQSxVQUlKK1EsSUFKSS9RO1VBS2Y7b0JBRFcrUTtjQUVILGNBUFM2dUUsV0FBNEJqOUUsS0FLbENvTztlQUVvQixhQVBjcE8sS0FLbENvTyxhQUFFakMsSUFBRmlDO2NBR04sUUFITUE7O1lBQ0csYUFOK0JwTyxPQUtoQ21NO1FBSEMsYUFGK0JuTSxVQVlUO2FBTXBDazlFLGdCQUFnQkQsV0FBV2xsRixpQkFBaUJpSTtNQWMzQyxxQkFkMkNBLGNBZXpDLE9BZndCakk7TUFnQnhCLDhCQWhCeUNpSSxjQUN6QjNDO01BQ25CO2dCQURtQkE7VUFFWCxjQUhRNC9FLFdBQTRCajlFLEtBQ3pCM0MsSUFFWSxRQUZaQTtjQUlaK1EsSUFKWS9RO1VBS25CO29CQURPK1E7Y0FFQyxjQVBRNnVFLFdBQTRCajlFLEtBS3JDb087b0JBSVkra0UsSUFKWi9rRTtnQkFLUDswQkFEbUIra0U7b0JBRVgsY0FYUThKLFdBQTRCajlFLEtBU3pCbXpFO3NCQUVZLFFBRlpBO29CQUdkLGFBWnVDbnpFLE9BU3pCbXpFO2tCQUNMLGFBVjhCbnpFO2NBUXZDLFFBSEVvTzs7WUFDTyxPQU5hclc7UUFFYixhQUY4QmlJLFVBZ0JKO2FBMEJ0Q2k5RSxXQUFXMS9FLEVBQUUxRSxHQUFJLDhCQUFOMEUsRUFBRTFFLE1BQWU7YUFDNUJza0YsWUFBWTkvRTtNQUFJO2tDQUFKQTtPQUFJLHFCQUF1QixnQkFBM0JBO2lCQUF1QzthQUNuRCsvRSxZQUFZLy9FO01BQ2QscUJBRGNBO01BQ2Q7O29DQURjQTtzQkFFNkIscUJBQWhCLE1BRmJBO1FBRXFDOztxQ0FGckNBO3VCQUc2QixxQkFBaEIsTUFIYkE7Ozs7O01BR3NDLFdBQUM7YUFDbkRnZ0YsYUFBYXI5RSxLQUFLczlFLE1BQ3BCLG1CQURvQkEsS0FBTHQ5RSxLQUNtQjthQUVoQ3U5RSxnQkFBaUJuakUsT0FBTzh0QztNQUMxQjttQ0FEbUI5dEM7T0FDbkIsNEJBRDBCOHRDO01BQzFCLEdBQUlodUMsU0FBaUNzakU7UUFFM0IsSUFBSnRnRixFQUFJLE1BSGdCZ3JELFNBQ1dzMUIsUUFBakN0akU7UUFHQyx5QkFEQ2hkLEVBSGFrZDtvQkFLVixNQUxpQjh0QyxXQUNXczFCLFFBQWpDdGpFOztNQVFGLFFBQUk7O01BR0Y7Ozs7O0lBQ00sU0E2SlJ1akUsTUFuUXVCbGdGO01BQzNCLDRCQUQyQkEsR0FFbkIsV0FESjRCO01BRUosU0FESU47TUFESixJQUVBLEtBRklNLFVBRUo7O1lBQ0F0RztRQUNFO1VBQUcsMEJBTHNCMEUsRUFJM0IxRTtXQUVPLFdBSkhnRyxFQUZZM0c7O1dBT1QsU0FMSDJHLEVBS3NCLGdCQVBDdEIsRUFJM0IxRTtVQUcrQixTQUgvQkE7OztNQUtBLFNBUElnRztNQU9KLGdCQVBJQTtJQW9HUSxTQThKUjYrRSxjQTdKY3J4RCxJQUFLM3NCLE1BQU9DLE9BQVFDLE9BQU9takQ7TUFDM0MsR0FEb0NuakQ7T0FJUTtVQUpSQTtRQUlXLGdCQUpYQSxPQUFSRCxnQkFNcUIsVUFBUSxNQUZsQjVDOzs7O1NBSlg0QztPQUdnQixRQUhoQkEsZUFHZ0IsWUFBTyxNQUFaaWdEOzs7TUFBckM7U0FIbUJsZ0Q7T0FFdUIsUUFGdkJBLGNBRXVCLFlBQU8sTUFBWm1nRDs7O01BQ3JDLFNBREE7TUFERiw0QkFBa0IsTUEySmhCNDlCLFNBNUpjcHhELElBQTJCMDJCLGFBTXNCO0lBQ3BELFNBQVg0NkI7TU45SFAsT01vQ0tYLGlCQTRERUMsV0FIQWxsRjtJQWtDVSxTQUFWNmxGO01OL0hQLE9Nc0RLVixnQkEwQ0VELFdBSEFsbEY7SUFrQ1U7OztPQW5DVkQ7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQWdsRjtPQUNBRTtPQUNBQztPQUlBQztPQUdBRTs7T0EwS0FFO09BQ0FDO09BdEpBQztPQUNBQztJQUFVLFNBUVZDLGFBQVd0Z0YsRUFBRTFFO01BQVksc0JBQWQwRSxFQUFFMUUsR0FBWSxZQUFKb0g7TUFBSTs7O3VCQUFKQTtpQkFBMkM7SUFSdEQsU0FTVjY5RSxjQUFZemdGO01BQ2Q7a0NBRGNBO09BQ2QscUJBQXdCLGdCQURWQTs7Ozs4QkFFYSxnQkFGYkE7Ozs7K0JBR2EsZ0JBSGJBOzs7OztpQkFHMEI7SUFaNUIsU0FhVjBnRixjQUFZMWdGO01BQ2QsdUJBRGNBO01BQ2Q7O29DQURjQTtzQkFFNkIscUJBQWhCLE1BRmJBO1FBRXFDOztzQ0FGckNBO3dCQUc2QixxQkFBaEIsTUFIYkE7VUFHc0M7O3dDQUh0Q0E7MEJBSTZCLHFCQUFoQixNQUpiQTtZQUlzQzs7eUNBSnRDQTsyQkFLNkIscUJBQWhCLE1BTGJBOzs7Ozs7Ozs7TUFLdUMsV0FBQztJQWxCMUMsU0FtQlYyZ0YsZUFBYWgrRSxLQUFLczlFO01BQ3JCLCtCQURxQkEsU0FDckIsc0JBRGdCdDlFO01BQ2hCO09BQ1M7OztXQUZPQTsrREFBS3M5RTs7UUFJTyx1QkFKUEE7YUFJSSxrQkFBeEIsa0JBRkkvL0U7OztNQVBKLFdBU3VEO0lBdkIzQyxTQXlCVjBnRixrQkFBaUI3akUsT0FBTzh0QztNQUMxQjttQ0FEbUI5dEM7T0FDbkIsNEJBRDBCOHRDO01BQzFCLEdBQUlodUMsU0FBaUNzakU7UUFFM0I7aUJBSGdCdDFCLFNBQ1dzMUIsUUFBakN0akU7U0FHNEIsdUJBSmJFO1FBSVUseUJBQXhCLGtCQURDbGQ7b0JBRUcsTUFMaUJnckQsV0FDV3MxQixRQUFqQ3RqRTs7TUFRRixRQUFJO0lBbENNO01Bc0NSLG1DQURGZ2tFOzs7OzthQUVBQyxRQUFNNWdGO01BQ1IsNEJBRFFBLEdBRUEsV0FESjRCO01BRUosU0FESU47TUFDSixTQWlCSXUvRSxPQUFPL2dGO1FBQUk7Y0FBSkE7Y0FBSThQO1VBQW1CO3FCQWxCOUJ0TztZQWtCOEIsU0FBbkJzTztlQUFKOVAsTUFBSThQOztRQW5CZixRQW1COEQ7TUFqQjlELFNBQ1FreEUsZUFBS3hsRjtRTjFLbEIsSU0wS2tCdUc7UUFDWDthQURXQSxRQUhURCxFQUlZLGdCQUhaTjtVQUlJLElBR0pvQixFQUhJLGdCQU5BMUMsRUFJSzZCO1VBRUwsVUFHSmE7WUFGUTs7O3FCQUdScStFLHVCQU5TbC9FOzBDQU1Uay9FLGdCQU5TbC9FO29CQUtUYTtZQURROzs7cUJBRVJxK0UsdUJBTlNsL0U7MENBTVRrL0UsZ0JBTlNsL0U7VUFLRCxTQVBSUCxFQU9Bb0I7VUFISSxJQUdJLElBTENiO21CQUsrQjtNQU41QyxTQU9Jay9FLGdCQUFRamhGLEVBQUV4RTtZQUFGc1YsTUFBRS9PO1FBQ1o7YUFEWUEsUUFUVkQsR0FXQSxTQVZBTixNQVVBLGNBRlFzUDtVQUtGLDBCQWZGNVEsRUFVTTZCO1VBS0o7WUFDSSxZQU5GK087WUFNa0IsU0FkMUJ0UDtZQWMwQixTQU5oQk87WUFNZ0I7bURBWnRCaS9FOzs7WUFhTSxRQVBBai9FLFlBT0EsSUFQRitPLG9CQUFFL087VUFRQSxPQVJGK087VUFRRTtpREFkTmt3RSxpQkFNTWovRTt3Q0FOTmkvRSxVQU1Nai9FLE1BU1Q7TUFoQkwsU0FDUXFpRCxLQUFLNW9ELEdOMUtsQix1Qk0wS2F3bEYsU0FBS3hsRjtNQWtCYjtzQkFwQklnRyxFQXFCYTthQWdDZjAvRSxtQkFBbUJ4aEY7TUFDUSxLQUExQixXQURrQkEsV0FDUSxXQURSQTtPQUdiLGtCQUhhQSxNQUlaLGdCQUpZQTtNQUVWLG1EQUZVQSxHQU1sQjthQUlEeWhGLGdCQUFjbnlELElBQUszc0IsTUFBT0MsT0FBUUMsT0FBT21qRDtNQUMzQyxHQURvQ25qRDtPQVNBO1VBVEFBO1FBU0c7b0JBVEhBLE9BQVJEOztXQVdhLFlBQVEsbUJBSFY1Qzs7Ozs7U0FSWDRDO09BT2dCLFFBUGhCQSxlQU9nQixZQUFPLG1CQUFaaWdEOzs7O1NBUGxCbGdEO09BTXVCLFFBTnZCQSxjQU11QixZQUFPLG1CQUFabWdEOzs7TUFEM0I7MEJBQW1CLE1BdEU3QnMrQixRQWlFeUNwN0I7T0FwQm5DLFdBQVIsc0JBRFl4bEQ7O01BRVo7aUJBQ08wQztVTnJOWjtVTXNOUyxTQURHQTs7Ozs7Ozs7Ozs7OzsyQkFHQyxTQUxKcEIsTUFLSSxTQUxKQSxFQUVHb0IsSUFLQyxTQVBKcEIsRUFFR29CLEVBS29CO1FBUmYxQztNQTBCQSx1QkF4QlosU0FESXNCO01BdUJGLHlEQUhjd3RCLFlBYWY7YUFPQ295RCxlQUFlbGhGO01BTGpCLG9DQUtpQkE7TUFMakI7UUFJa0MsMEJBQ2pCQTtRQUxEOzs7O1FBSWtCLHVDQUFTLGdCQUMxQkE7Ozs7UUFFTyxlQUZQQSxJQUVaLHNCQUZZQTtRQUVYLGdCQUZXQTtNQUdaLGtCQUhZQSxFQUdMO2FBQ1ZtaEYsVUFBUW5oRjtNQUNVOzRCQURWQTtPQUNVOztPQUNWLG9CQTFIUnNnRixhQUhBemxGLG1CQTRIVXVtRjtNQUNGLFdBRExDLE1BQ0RDLElBQ087YUFDVEMsV0FBU3ZoRjtNQUNVLHlCQURWQSxHQUNVOzhCQTdIbkJzZ0YsYUFIQXpsRixtQkFnSVd1bUYsS0FDb0M7Ozs7T0FsSS9DeG1GO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0F1bEY7T0FDQUM7T0FJQUM7T0FNQUM7T0FNQUM7T0FZQUM7T0FFQUM7T0FpRUFLO09BNEJBTTtPQUpBSjtJQXNCVyxTQUFYSztNTnJSUCxPTW9DSy9CLGlCQW1HRWEsYUFtSUFybEY7SUFZVSxTQUFWd21GO01OdFJQLE9Nc0RLOUIsZ0JBaUZFVyxhQW1JQXJsRjtJQVlVOzs7T0FiVkQ7T0FDQUM7T0FDQUM7T0FDQUM7T0FySUFtbEY7T0FDQUM7T0FJQUM7T0FNQUM7T0FNQUM7O09BMkhBUjtPQUNBQztPQUNBcUI7T0FDQUM7S0FBVTs7OztLQTdNZEM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FHQUM7S0FDQUM7YUF5TUVDLFNBQU9uQyxRQUFRMTFCO01BQ2pCLElBQUkvb0QsRUFBSixzQkFEU3krRTtNQUVHLFNBRFJ6K0UsT0FDUSxhQUZIeStFLFFBQ0x6K0U7T0FHVyxXQUpOeStFLFFBSU0sSUF6TmZ3QixVQXFOaUJsM0I7TUFHWixXQUhJMDFCLFFBQVExMUIsU0FJZ0I7YUFFL0I4M0IsWUFBWWhnRixLQUFLczlFO01BQ2hCLHNCQURXdDlFLEtBQUtzOUU7ZUFFZDtpQkFGU3Q5RTs7aUJBRVQsc0JBRlNBLFFBRVQsc0JBRmNzOUU7ZUFHZCxxQ0FBa0M7YUFFckMyQyxjQUFjamdGO01BQ2hCLDhCQURnQkEsY0FNR3lhO01BQ2pCO1FBQVksUUFES0EsU0FDTCxhQVBFemEsS0FNR3lhO1VBRVQsMEJBUk16YSxLQU1HeWE7WUFFVyxRQUZYQSxZQUxGNWhCO1lBQ2Y7Y0FBWSxRQURHQSxPQUNILGFBRkVtSCxLQUNDbkg7Z0JBRVAsMEJBSE1tSCxLQUNDbkg7a0JBRWEsUUFGYkE7Z0JBR1YsNkJBSlNtSCxRQU1HeWE7Y0FKa0I7VUFPOUIsUUFIWUE7O1FBQ2tCLFNBSUY7YUFFakN5bEUsVUFBVWxnRjtNQUNKLElBQUpiLEVBQUksY0FESWE7TUFDSixhQUFKYixVQUNrQixNQUZWYSxLQUVVLHNCQUZWQSxRQUNSYixRQUM0RDthQUU5RGdoRixlQUFlbmdGO01BQ1QsSUFBSmIsRUFBSSxjQURTYTtNQUNULGFBQUpiO2VBQ1U7ZUFDVCxNQUhZYSxPQUdaLHNCQUhZQSxRQUNiYixNQUUyQzthQUU3Q2loRixpQkFBaUJwZ0Y7TUFDWCxJQUFKYixFQUFJLGNBRFdhO01BQ1gsYUFBSmIsRUFEZWEsS0FFSyxNQUZMQSxPQUVLLHNCQUZMQSxRQUNmYixNQUM4RDtRQUtoRWtoRiwyQk56VUw7YU0yVUtDLGVBQWVDLFNBQVN0bUUsT0FBT0c7TUFDakM7eUJBSEVpbUU7T0FHRjtxQkFIRUEsdUJjOVNBLzJFLGlCZDhTQSsyRTtPQUdRO01BQ00sZ0JBRkNFLFNBRUQseUJBRlV0bUUsT0FDdEJ1bUUsSUFENkJwbUUsUUFFNEI7UUFHM0RxbUUseUJBOVBGZjthQWdRRWdCLGtCQUFrQm5qRixHQUFJLDJCQUFKQSxFQUFJLFFBQTBCO2FBQ2hEb2pGLHlCQUF1QixPQUh2QkYsd0JBRzZDO2FBRTdDRyxVQUFZdjNELElBQW1DcFAsT0FBT0c7TUFDeEQsR0FEY2lQO09BQVcsUUFBWEEsZ0JBQVdDOztXQUFYaTNELFNBTFpFO01BTUYsU0FBUUksU0FBU25rRjtRTnRWcEIsSU1zVm9CdTdDO1FBQ2Y7VUFBVyxJQUFQajRDLEtBQU8sZUFGQ3VnRixTQUFtQ3RtRSxPQUFPRztVQUUzQztZQUU0RCx1QkFBM0QsY0FGUnBhO2dCQUlDK0Y7OztjQUNILFdBTmFreUMsVUFNVyxNQURyQmx5QztjQUNrQyxjQU54Qmt5Qzs7a0JBS1ZseUMsR0FDd0Q7TUFOL0Qsa0JBT2E7YUFFWGc3RSxlQUFpQjEzRCxjQUNtQ3BQLE9BQU9HO01BQzdELEdBRm1CaVAsSUFBTyxRQUFQQSxZQUFPQyxhQUFQeHBCO01BRW5CLFFBRmlELGtCQUFSbWhGLE1BQVFELGVBQVJDO01BRXpDO09BRDhCLGtCQUFYVixTQUFXVzs7V0FBWFgsU0FoQmpCRTtNQWlCRixTQUFRSSxTQUFTbmtGO1FOaldwQixJTWlXb0J1N0M7UUFDZjtVQUFXLElBQVBqNEMsS0FBTyxlQUZNdWdGLFNBQW1DdG1FLE9BQU9HO1VBRWhEO1lBR1IsWUFIQ3BhLEtBR0Qsd0JBTmNGLFFBQXNCbWhGLE1BR25DamhGOztnQkFJQytGOzs7Y0FDSCxXQU5ha3lDLFVBTVcsTUFEckJseUM7Y0FDa0MsY0FOeEJreUM7O2tCQUtWbHlDLEdBQ3dEO01BTi9ELGtCQU9hOzs7O09BOVJibTVFO09BQ0FDO09BQ0FDO09BcU5FVztPQW5ORlQ7T0FDQUM7T0FDQUM7T0F1TkVRO09BdE5GUDtPQXdPRVM7T0FTQUU7T0FMQUQ7T0F0T0ZOO09BQ0FDO09BZkFiO09BNFFFMkI7T0FVQUc7T0FaQUo7T0FEQUQ7T0FoUUZoQjtPQUNBQztPQUNBQzs7YUM1REV1QixNQUFJempGLEVBQUVDLEdBQVcsWUFBYkQsT0FBRUMsS0FBRkQsT0FBRUMsS0FBNEM7YUFFbER5akYsTUFBSTFqRixFQUFFQyxHQUFXLFlBQWJELE9BQUVDLEtBQUZELE9BQUVDLEtBQTRDO2FBRWxEMGpGLElBQUkzakYsR0FBYyxjQUFkQSxZQUFrQzthQUV0QzRqRixLQUFLNWpGLEdBQXlCLFlBQXpCQSxZQUErQjthQUVwQzZqRixJQUFJN2pGLEVBQUVDO01BQXVCLFlBQXpCRCxPQUFFQyxPQUFGRCxPQUFFQyxLQUFGRCxPQUFFQyxPQUFGRCxPQUFFQyxLQUN5QzthQUUvQzZqRixJQUFJOWpGLEVBQUVDO01BQ0ssR0FBa0IsU0FEdkJBLFNBQ0ssU0FETEE7UUFFRSxNQUZGQSxZQUdFLEVBSEZBLE9BRUZULElBRkVTO1FBSW9CLGFBSnRCRCxPQUVBUixJQUZBUSxRQUdBeVgsR0FIQXpYLE9BRUFSLElBRkFRLFFBR0F5WDtNQUlJLFFBUEZ4WCxZQVFFLElBUkZBLE9BT0YyeEIsTUFQRTN4QjtNQVNvQixhQUZ0QjJ4QixNQVBBNXhCLGVBUUFpa0IsS0FEQTJOLE1BUEE1eEIsZUFRQWlrQixJQUU2QjthQUVqQzgvRCxJQUFJL2pGLEdBQUksV0ExQlI5RSxNQTBCSThFLEVBQWE7YUFFakJna0YsTUFBTWhrRixHQUFnQixPQUFoQkEseUJBQWdDO2FBRXRDaWtGLEtBQUtqa0Y7TUFFVyxlQUZYQSxNQUVrQyxXQUZsQ0E7TUFFa0MsR0FBckNSLFFBQ1ksT0FEV3JFO01BRXRCLEdBRnNCQSxRQUVOLE9BRmpCcUU7TUFHQyxHQUhzQnJFLEtBQXZCcUUsR0FJTSxJQUFKMHBCLEVBSnFCL3RCLElBQXZCcUUsRUFJZ0IsT0FKaEJBLElBSXdDLGVBQXRDMHBCO01BSlksSUFNWmc3RCxJQU5GMWtGLElBQXVCckU7TUFNUCxPQU5PQSxJQU1pQixlQUF0QytvRixVQUFzQzthQUUxQ3QxRCxJQUFJNXVCLEdBQVUsa0JBQVZBLFVBQW1CO2FBRXZCbWtGLE1BQU14a0YsRUFBRWlELEdBQWdCLFlBQUwsU0FBWEEsS0FBRmpELEVBQThCLFNBQTVCaUQsS0FBRmpELEVBQTBDO2FBRWhEeWtGLEtBQUtwa0Y7TVBqRVYsR09pRVVBLHlCQUMwQjtNQUViLGVBSGJBLE1BR29DLFdBSHBDQTtNQUdvQyxHQUFkN0UsS0FBdkJxRTtPQUdRO1VBSGVyRSxJQUF2QnFFO1FBQ0ErcUMsRUFHQSxVQUpBL3FDLEtBSW9ELHNCQUFGLGVBRDlDMHBCOztPQUdJO1lBTlIxcEIsSUFBdUJyRTtRQUN2Qm92QyxFQU1BLFVBUHVCcHZDLEtBTzJCLGlCQUQ5QytvRixNQUM0QyxlQUQ1Q0E7TUFHUixTQVpLbGtGLEtBYTJCLFlBVDVCdXFDLFFBSkN2cUMsT0FJRHVxQztNQURjLElBQ2Q4NUMsVUFKQ3JrRixLQUlEdXFDO01BVWdCLGtCQVhPcHZDLElBQ3ZCb3ZDLE1BV0g7YUFFRCs1QyxJQUFJdGtGO01BQ00sSUFBUnFJLEVBQVEsU0FETnJJLE1BQ3FCLFlBQXZCcUksSUFBZ0MsU0FEOUJySSxNQUNGcUksSUFBb0QsU0FEbERySSxNQUN3RDthQUU1RHVrRixJQUFJdmtGO01BQW9DLG9CQUFwQ0EsV0FBdUIscUJBQVIsS0FBZkEsU0FBK0M7YUFFbkR3a0YsSUFBSXhrRixFQUFFQyxHQUFRLGVBQVJBLEVBQWUsSUFBakJELElBQXlCOzs7O09BbkU3Qi9FO09BQ0FDO09BQ0FDO09BTUF3b0Y7T0FFQUM7T0FOQUg7T0FFQUM7T0FNQUc7T0FlQUU7T0FaQUQ7T0E4QkFNO09BaEJBSjtPQUVBQztPQVVBcjFEO09BRUF1MUQ7T0FtQkFHO09BR0FDO09BRUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPTzlEQXhzRTs7O09BRUFFO09BRUFuVztPQUlBRDtPQUlBcVc7T0FRQUc7T0FlQU07O09BUEEvVztPQUVJMFc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S3lDSUprc0U7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQXQvQjthQUVBdS9COztlQUNXO2VBQ0E7ZUFDSTtlQUNFO2VBQ0Q7ZUFDRTtlQUNUO2VBQ0E7ZUFDRjtlQUNNO2dCQUNBO2dCQUNBO2dCQUNMLFNBQUM7UUFLVEMsV0FDQUM7YUFXTUMsTUFBTXBVLElBQUlxVSxJQUFJcG1GLEVBQUVxbUYsSUFBSXhsRjtNQUMxQixHQURzQndsRixRQUFORDtPQUNlLDJCQURuQnJVLElBQUlxVSxJQUMyQixXQUR2QnBtRixFQUFKb21GO01BRU8sMEJBRkd2bEYsSUFBSndsRixzQkFFakI7TUFBa0I7WUFBbEJqMkU7UUFDRTsyQkFIU2cyRSxJQUFNQyxnQkFFakJqMkU7VUFFRSxNQUpLMmhFLElBQUlxVSxJQUFJcG1GLEVBQUVxbUYsWUFBSXhsRjtVQUluQixTQUZGdVA7OztjQUdJO2FBQ0hrMkUsTUFBTXZVLElBQUlxVSxJQUFJcG1GLEVBQUVxbUYsSUFBSXhsRjtNQUMxQixRQURzQndsRjtRQUVKLDBCQUZReGxGLElBQUp3bEYsY0FFakI7UUFBYTtjQUFiajJFO1VBQ0U7NkJBSFNnMkUsSUFBTUMsZ0JBRWpCajJFO1lBRUUsTUFKSzJoRSxJQUFJcVUsSUFBSXBtRixFQUFFcW1GLFlBQUl4bEY7WUFJbkIsU0FGRnVQOzs7O01BRFcsMkJBREoyaEUsSUFBSXFVLElBQ1ksV0FEUnBtRixFQUFKb21GLEtBS1A7YUFDUEcsT0FBY3BwQyxLQUFNcXBDLE9BQW1CQyxLQUFLem1GO01BQ3BDLHVCQURNbTlDLEtBQU1xcEMsT0FBbUJDLE1BQy9CLEtBRCtCQTtNQUMvQixhQUdSQztlQUhFM1U7ZUFEa0J5VTtrQkFLSSxNQUp0QnpVLElBSWdDLGVBRGxDMlUsUUFKNEMxbUYsRUFJNUMwbUYsYUFKdUNELE1BQ3JDMVU7a0JBR2dCLE1BSGhCQSxJQUcwQixlQUE1QjJVLFFBSjRDMW1GLElBQUx5bUYsTUFDckMxVSxJQUt5QjthQUkzQjBVLEtBQUtsakY7TUFDQyx1QkFEREEsR0FFQyxpQkFESmpELEtBQ0ksS0FESkEsVUFDSTs7WUFDUnhFO1FBQW9CO1VBQVMsNkJBSHRCeUgsRUFHUHpIO1VBQW9CLGlCQURoQnNjLEVBQ0p0YztVQUE2QixTQUE3QkE7OztNQUNBLE9BRklzYyxDQUVIO2FBT0N1dUUsY0FBYzVVO01BQ2tCLGdDQUF5QixLQUQzQ0E7TUFDaEIsbUNBQW9CLGFBREpBLFdBQ3NEO2FBb0JwRTZVLFNBQU96cEMsS0FBS3FwQyxRQUNkLHNCQURTcnBDLEtBQUtxcEMsV0FDa0I7YUFDOUJLLE1BQUk5VSxLQUFNLG1DQUFOQSxRQUEyQjthQUMvQitVLE1BQUkvVTtNQUFNOzRCdkRoS2pCLDJCdURnS1dBLGVBQTJCO2FBTy9CZ1YsZ0JBQWNoVjtNQUF5Qix1Q0FBekJBLEtBQW1DO2FBS2pEaVYsU0FBUzdwQyxLQUFLcXBDLE9BQU90bUY7TUFDZixJQUFKcUQsRUFBSSxTQURHNDVDLEtBQUtxcEMsUUFFaEIsaUJBRElqakYsR0FEbUJyRCxHQUV2QixPQURJcUQsQ0FFSDthQU1DMGpGLFNBQU85cEMsS0FBS3FwQyxPQUFPVTtNQUNyQixzQkFEUy9wQyxLQUFLcXBDLFVBQU9VLEtBQ2M7YUFhakNDLGdCQUFjcFY7TUFDa0IsdUJBRGxCQTtNQUNoQixtQ0FBb0IsYUFESkEsV0FDMkI7YUFHekNxVixNQUFnQjdqRixFQUEwQmpEO01BQ3RDLGlDQURZaUQ7TUFDWixhQUVlLGNBSEhBLEtBQTBCakQsSUFFN0IsY0FGR2lELEtBQTBCakQsR0FHNEI7YUFPdEUrbUYsT0FBY2xxQyxLQUFNcXBDLE9BQW1CVSxJQUFJbG5GO01BQ25DLElBSEsreEUsSUFHTCxTQURNNTBCLEtBQU1xcEMsT0FBbUJVO01BQy9CLEdBRFlWO1FBRHRCO2NBQ3lDVTtjQUR6QzdrRjtVQUFvQjswQkFETDB2RSxJQUNmMXZFLElBQXFDLFdBQ1FyQyxFQUQ3Q3FDO1lBQW9CLFNBQXBCQTtlQUN5QzZrRixRQUR6QzdrRjs7ZUFEZTB2RTtNQUdMLElBSlYsS0FHeUNtVixZQUh6Qzs7O1FBQXlCO3dCQUNWblYsSUFEZmoyRSxFQUEwQyxXQUdHa0UsRUFIN0NsRTtVQUF5QixTQUF6QkE7OzthQUNlaTJFLEdBTWdDO2FBQzdDdVYsU0FBa0JucUMsS0FBTXFwQyxPQUFrQm53RDtNQUNuQzttQkFEVzhtQixLQUFNcXBDLE9BQWtCbndEO09BQ25DLElBRGlCbXdEO09BTzFCLEtBUDRDbndEO09BTzVDOzs7UUFBc0M7d0JBTmxDa3hELEdBTUp6ckYsSUFMSThILFFBSzBELGlCQVBsQnl5QixLQU81Q3Y2QjtVQUFzQyxTQUF0Q0E7OztNQUNBLE9BUEl5ckYsRUFPRjthQUtBQyxVQUFPcnFDLEtBQUtxcEMsT0FBT2lCLEtBQUtDO01BQzFCLHNCQURTdnFDLEtBQUtxcEMsVUFBT2lCLEtBQUtDLE1BQ2dCO2FBZXhDQyxnQkFBYzVWO01BQytCLHVCQUQvQkEsS0FDa0IsbUJBRGxCQTtNQUNoQjsyQ0FBb0IsYUFESkEsaUJBQ3lDO2FBT3ZENlYsV0FBV3JrRixFQUFFakQsR0FBSSxxQkFBTmlELEtBQUVqRCxHQUErQjthQUM1Q3VuRixZQUFZdGtGLEVBQUVqRCxHQUFJLHFCQUFOaUQsS0FBRWpELEdBQWdDO2FBZTlDd25GLE9BQWMzcUMsS0FBTXFwQyxPQUFtQmlCLEtBQUtDLEtBQUsxbkY7TUFDekMsSUFQSyt4RSxJQU9MLFVBRE01MEIsS0FBTXFwQyxPQUFtQmlCLEtBQUtDO01BQ3BDLEdBRFlsQjtRQUx0QjtjQUs4Q2tCO2NBTDlDeGpEO1VBQ0U7O2tCQUl1Q3VqRDtrQkFKdkNwbEY7Y0FDRTs4QkFIVzB2RSxJQUViMXZFLElBREY2aEMsSUFFdUIsV0FHNEJsa0MsRUFKakRxQyxJQURGNmhDO2dCQUVJLFNBREY3aEM7bUJBSXVDb2xGLFNBSnZDcGxGOztxQkFERjZoQztlQUs4Q3dqRCxTQUw5Q3hqRDs7ZUFEZTZ0QztNQU9MLElBWlYsS0FXeUMwVixhQVh6Qzs7O1FBQ0U7bUJBVTRDQyxhQVY1Qzs7O1lBQ0U7NEJBR1czVixJQUxmajJFLEVBQ0VzVSxFQUNxQixXQVM0QnBRLEVBWG5EbEUsRUFDRXNVO2NBQ0UsU0FERkE7OzttQkFERnRVOzs7YUFLZWkyRSxHQVVzQzthQUNuRGdXLFdBQWtCNXFDLEtBQU1xcEMsT0FBa0Jud0Q7TUFDNUM7WUFENENBO09BQzVDLFdBQUlveEQsT0FDNEMsaUJBRkpweEQ7T0FHbkMsYUFIVzhtQixLQUFNcXBDLE9BQ3RCaUIsS0FDQUM7T0FDSyxJQUhpQmxCO09BUzFCLEtBUklpQjtPQVFKOzs7UUFDRTtVQUFVLElBQU5PLElBQU0saUJBVmdDM3hELEtBUzVDdjZCO1VBQ1ksR0FBTmtzRixtQkFSRk47V0FVQTtVQUZRLElBRXFELEtBVjdEQSxhQVU2RDs7Z0JBQy9EdDNFO1lBQ0U7O2dCQVhBbTNFLEdBTUp6ckYsSUFMSThILFFBU0Z3TSxJQVRFeE0sUUFVa0MsaUJBSmhDb2tGLElBR0o1M0U7Y0FDRSxTQURGQTs7O1VBSFUsU0FEWnRVOzs7TUFRQSxPQWRJeXJGLEVBY0Y7YUFLQVUsVUFBTzlxQyxLQUFLcXBDLE9BQU9pQixLQUFLQyxLQUFLUTtNQUMvQixzQkFEUy9xQyxLQUFLcXBDLFVBQU9pQixLQUFLQyxLQUFLUSxNQUNpQjthQWlCOUNDLGdCQUFjcFc7TUFDNEM7a0NBRDVDQTtPQUMrQixtQkFEL0JBO09BQ2tCLG1CQURsQkE7TUFDaEI7OzZDQUFvQixhQURKQTtvQkFDc0Q7YUFPcEVxVyxhQUFhN2tGLEVBQUVqRCxFQUFFbXBCLEdBQUkscUJBQVJsbUIsS0FBRWpELEVBQUVtcEIsR0FBa0M7YUFDbkQ0K0QsY0FBYzlrRixFQUFFakQsRUFBRW1wQixHQUFJLHFCQUFSbG1CLEtBQUVqRCxFQUFFbXBCLEdBQW1DO2FBQ3JENitELGFBQWEva0YsRUFBRWpELEdBQUkscUJBQU5pRCxLQUFFakQsR0FBK0I7YUFDOUNpb0YsY0FBY2hsRixFQUFFakQsR0FBSSxxQkFBTmlELEtBQUVqRCxHQUFnQzthQW1CaERrb0YsT0FBY3JyQyxLQUFNcXBDLE9BQW1CaUIsS0FBS0MsS0FBS1EsS0FBS2xvRjtNQUM5QyxJQVRLK3hFLElBU0wsVUFETTUwQixLQUFNcXBDLE9BQW1CaUIsS0FBS0MsS0FBS1E7TUFDekMsR0FEWTFCO1FBUHRCO2NBT21EMEI7Y0FQbkR0cEQ7VUFDRTs7a0JBTTRDOG9EO2tCQU41Q3hqRDtjQUNFOztzQkFLcUN1akQ7c0JBTHJDcGxGO2tCQUNFO2tDQUpTMHZFLElBR1gxdkUsSUFERjZoQyxJQURGdEYsSUFHMkIsV0FJNkI1K0IsRUFMcERxQyxJQURGNmhDLElBREZ0RjtvQkFHTSxTQURGdjhCO3VCQUtxQ29sRixTQUxyQ3BsRjs7eUJBREY2aEM7bUJBTTRDd2pELFNBTjVDeGpEOztxQkFERnRGO2VBT21Ec3BELFNBUG5EdHBEOztlQURlbXpDO01BU0wsSUFoQlYsS0FleUMwVixhQWZ6Qzs7O1FBQ0U7bUJBYzRDQyxhQWQ1Qzs7O1lBQ0U7dUJBYStDUSxhQWIvQzs7O2dCQUNFO2dDQUlTblcsSUFQZmoyRSxFQUNFc1UsRUFDRTJtQixFQUN1QixXQVk2Qi8yQixFQWZ4RGxFLEVBQ0VzVSxFQUNFMm1CO2tCQUNFLFNBREZBOzs7dUJBREYzbUI7OzttQkFERnRVOzs7YUFPZWkyRSxHQVkyQzthQUN4RDBXLFdBQWtCdHJDLEtBQU1xcEMsT0FBa0Jud0Q7TUFDNUM7WUFENENBO09BQzVDLFdBQUlveEQsT0FDNEMsaUJBRkpweEQ7T0FHNUM7Y0FESXF4RDs7VUFDb0QsaUJBQVIsaUJBSEpyeEQ7T0FJbkMsYUFKVzhtQixLQUFNcXBDLE9BQ3RCaUIsS0FDQUMsS0FDQVE7T0FDSyxJQUppQjFCO09BVTFCLEtBVElpQjtPQVNKOzs7UUFDRTtVQUFVLElBQU5PLElBQU0saUJBWGdDM3hELEtBVTVDdjZCO1VBQ1ksR0FBTmtzRixtQkFURk47V0FXQTtVQUZRLElBRStDLEtBWHZEQSxhQVd1RDs7Z0JBQ3pEdDNFO1lBQ0U7Y0FBVSxJQUFOaTJFLElBQU0saUJBSlIyQixJQUdKNTNFO2NBQ1ksR0FBTmkyRSxtQkFaSjZCO2VBY0U7Y0FGUSxJQUUrQyxLQWR6REEsYUFjeUQ7O29CQUN6RG54RDtnQkFDRTs7b0JBZkZ3d0Q7b0JBTUp6ckYsSUFMSThIO29CQVNGd00sSUFURXhNO29CQWFBbXpCLElBYkFuekI7b0JBYzhDLGlCQUoxQ3lpRixJQUdKdHZEO2tCQUNFLFNBREZBOzs7Y0FIVSxTQURaM21COzs7VUFIVSxTQURadFU7OztNQWFBLE9BbkJJeXJGLEVBbUJGO2FBV0ZtQixtQkFBbUJubEY7TUFDbEIsOEJBRGtCQTs7ZUFFaEIsMkNBQXlDO2FBQzVDb2xGLG1CQUFtQnBsRjtNQUNsQiw4QkFEa0JBOztlQUVoQiwyQ0FBeUM7YUFDNUNxbEYsbUJBQW1CcmxGO01BQ2xCLDhCQURrQkE7O2VBRWhCLDJDQUF5QzthQUM1Q3NsRixtQkFBbUJ0bEY7TUFDbEIsOEJBRGtCQTs7ZUFFaEIsMkNBQXlDO2FBSzVDdWxGLFVBQVV2bEYsR0FBSSx1QkFBSkEsTUFBa0I7YUFDNUJ3bEYsVUFBVXhsRixFQUFFa2tGLE1BQU8sdUJBQVRsa0YsS0FBRWtrRixNQUF5QjthQUNyQ3VCLFVBQVV6bEYsRUFBRWtrRixLQUFLQyxNQUFPLHVCQUFkbmtGLEtBQUVra0YsS0FBS0MsTUFBOEI7YUFDL0N1QixVQUFVMWxGLEVBQUVra0YsS0FBS0MsS0FBS1E7TUFBTyx1QkFBbkIza0YsS0FBRWtrRixLQUFLQyxLQUFLUSxNQUFtQzs7OztPQXJWekQ5QztPQUNBQztPQVNBUztPQUNBQztPQVRBVDtPQUNBQztPQUNBQztPQUNBQztPQUdBRztPQUZBRjtPQUNBQztPQUVBRTtPQUdBcC9CO09BRUF1L0I7T0FrQkFDO09BQ0FDO1VBdUJFSyxPQVVBRSxLQVdBRTs7UUFxQkFDO1FBZUFJOztRQUxBRDtRQVJBRjtRQUNBQztRQVlBRTs7UUFTQUM7UUE0QkFJOztRQWRBRjtRQUlBQztRQWVBRTs7UUFhQUU7UUF3Q0FNOztRQXhCQUg7UUFRQUM7UUFDQUM7UUFvQkFFOztRQXNCQUU7UUFnREFPOztRQTlCQUw7UUFRQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUF3QkFFO09Ba0NGQztPQUdBQztPQUdBQztPQUdBQzs7T0FPQUM7T0FDQUM7T0FDQUM7T0FDQUM7O2F4QzlXQUMsVUFBVUMsUUFBUTNvRixFQUFFUjtNQUNiLElBQUx1RSxHQUFLLFdBREc0a0YsUUFBUTNvRjtNQUNYLHFCQUVJLGtCQUhTUixFQUNsQnVFLEdBRWE7TUFGUiwrQkFDdUIscUJBRDVCQSxHQUNvRCxPQUN0QzthQUVoQjZrRixjQUFjNW9GLEVBQUVSLEdBQ2xCLGlCQVZFcUUsV0FTYzdELEVBQUVSLEVBQ2M7YUFFOUJxcEYsZUFBZTdvRixFQUFFUixHQUNuQixpQkFaRW9FLFlBV2U1RCxFQUFFUixFQUNTO2FBRTFCc3BGLGNBQWN4bkUsTUFBTTllLEtBQUt4QyxFQUFFUjtNQUNuQixnQ2Y5Q2IsT2VnQ0ttRSxXQWFjMmQsTUFBTTllLFlBQUt4QyxFQUFFUixFQUNnQjtRQUUzQ3VwRixZQUNBdnNELFdBQ0F3c0Q7YUFJQUMsYUFBV2xsRjtNQUNiO1FBQU0sSUFDSnJCLEVBREksbUJBRE9xQjs7O2dDQUdjO1FBRHBCO2dCQUFMckIsRUFDNkI7YUFFN0J3bUYsYUFBV25sRjtNQUNiO1FBQU0sSUFDSmpFLEVBREksbUJBRE9pRTs7O2dDQUdjO1FBRHBCO2dCQUFMakUsRUFDNkI7YUFFN0JxcEYsYUFBV3BsRjtNQUNiO1FBQU0sSUFDSi9ELEVBREksV0FETytEOzs7Z0NBR2M7UUFEcEI7Z0JBQUwvRCxFQUM2QjthQUk3Qm9wRixlQUFhcmxGLEdBQUdVLElBQUkrM0IsSUFBSW41QjtNQUMxQjtRQUFNLGFBRFNVLEdBQUdVLElBQUkrM0IsSUFBSW41QixLQUVsQjs7O2dDQUNtQjttQkFBSTthQUU3QmdtRixzQkFBb0J0bEYsR0FBR1Y7TUFDekI7UUFBTSxJQUNKckQsRUFESSxvQkFEZ0IrRCxHQUFHVjs7O2dDQUdFO1FBRHBCO2dCQUFMckQsRUFDNkI7YUFJN0JzcEYsVUFBVXZsRixHQUFHVSxJQUFJckIsSUFBSUM7VUFDVlksTUFETWIsSUFDRmMsTUFETWI7TUFFckI7aUJBRGVhO1VBR0wsSUFBSnZFLEVBQUksTUFKQW9FLEdBQUdVLElBQ0ZSLE1BQUlDO1VBR0wsU0FBSnZFO1lBSUY7bUJBUFd1RSxRQUdUdkU7YUFJRixNQVBPc0UsUUFHTHRFO2FBSEtzRTthQUFJQzs7ZUFBSkQsUUFETWIsUUFXRDthQWNoQm1tRixPQUFPOWtGLElBQUlyQixJQUFJdEQ7TUFDakIsSUFBSXVELElBQUoscUJBRFNvQjtNQUNULElBRGFyQixNQUFJdEQsVUFDYnVELElBQ21CLE9BRmRvQjtNQUNULElBR002WSxXQUhGamE7O1dBR0VpYSxjQUpPbGEsTUFBSXREO1VBTWIsa0JBRkV3ZDtRQUlKO21CQUpJQTtTQUlKO1VBQUlrc0U7O1lBUk9wbUY7O2NBZVA7U0FHSiwwQkFUSXFtRjtRQVVKLEtBbkJPaGxGLE1Ba0JIOFksVUFsQk9uYTtRQW1CWCxPQURJbWEsUUFHSDthQUVEbXNFLFVBQVUzbEY7TUFDWixJQUFJNGxGO01BQUo7UUFHa0M7NkJBSnRCNWxGO1NBSVIsMEJBSlFBO1NBRVIycUQ7Ozs7O01BREo7T0FPQSxvQkFOSUEsMEJBREFpN0I7T0FRSjtRQURJQztPQU9KLHNCQU5JQztPQU9RLGdCQWhCQTlsRixHQWVSVSxNQU5Bb2xGO01BT1EsR0FBUkMsUUFQQUQsZUFTRixrQkFIRXBsRixNQUNBcWxGO01BR0M7UUFDRyxJQUlKcG5GLEVBSkksbUJBcEJJcUI7OztnQ0F1Qk4sNEJBUkZVO1FBV0U7ZUFBUXkvQyxLQUFLei9DLElBQUlyQjtZQUFKMm1GLFVBQUk5bEY7UUFDZjtVQUFVO3dCQURDOGxGLE1BQUk5bEYsTUF6Qm5CMGxGO1dBMEJjLHlCQURDSyxTQUFJL2xGO1dBS1AsWUEvQkpGLEdBMEJPaW1GLE1BQUkvbEYsTUFFWGdtRjtVQUdJLEdBQUp0cUYsSUFIQXNxRixJQUtGLGtCQVBTRCxRQUFJL2xGLFFBS1h0RTtVQUpNLElBUVIsTUFUYXNFLFFBRVhnbUYsUUFGT0YsWUFBSTlsRjttQkFTTztNQUVkLElBQU44bEYsTUFBTSxPQXRCWnRsRixJQUNBcWxGO01Bc0JFLGVBRElDLE1BckJORCxNQVFBcG5GO01BY0UsWUFESXFuRixNQXJCTkQsY0F3QkQ7Ozs7T0E5SUQzbkY7T0FDQTBCO09BQ0FEO09BQ0FEO09BT0FpbEY7T0FHQUM7T0FHQUM7T0FHQUM7T0FDQXZzRDtPQUNBd3NEO09BQ0EvaEY7T0FDQW5DO09BRUFta0Y7T0FLQUM7T0FLQUM7T0FLQXJsRjtPQUVBc2xGO09BS0FDO09BdURBSztPQTBDQTFpRjs7YUMxSUFrakYsWUFBVXZCLFFBQVEzb0YsRUFBRVI7TUFDYixJQUFMeUQsR0FBSyxXQURHMGxGLFFBQVEzb0Y7TUFDWCxxQkFFSSxrQkFIU1IsRUFDbEJ5RCxHQUVhO01BRlIsK0JBQ3VCLG1CQUQ1QkEsR0FDcUQsT0FDdkM7YUFFaEJrbkYsZ0JBQWNucUYsRUFBRVIsR0FDbEIsbUJBVkVvRCxTQVNjNUMsRUFBRVIsRUFDZTthQUUvQjRxRixpQkFBZXBxRixFQUFFUixHQUNuQixtQkFaRW1ELFVBV2UzQyxFQUFFUixFQUNVO2FBRTNCNnFGLGdCQUFjL29FLE1BQU05ZSxLQUFLeEMsRUFBRVI7TUFDbkIsa0NoQi9DYixPZ0JpQ0s4QyxTQWFjZ2YsTUFBTTllLFlBQUt4QyxFQUFFUixFQUNpQjs7S0FFNUM4cUY7S0FDQUM7S0FDQUM7OztPQXRCQXBvRjtPQUNBQztPQUNBTztPQUNBRDtPQUNBTDtPQU9BNm5GO09BR0FDO09BR0FDO09BR0FDO09BQ0FDO09BQ0FDO09BQ0EvbUY7T0FDQUM7T0FDQXNFO09BQ0FuRjtPQUNBa0Y7T0FDQUQ7T0FDQTVFO09BQ0FGO09BQ0FHO09BQ0FHO09BQ0FtRTs7OztVaEI5REw7Ozs7Ozs7SXVEQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2FDcUNLZ2pGLGNBQWVDLElBQXlCQztNQUMxQyxxQ0FEaUJELFFBQXlCQyxlQUNpQzthQUV6RUMsWUFBY0MsTUFBZUMsT0FBZ0JDLE1BQy9DLFVBRGdCRixNQUFlQyxPQUFnQkMsS0FDeEI7YUFFckJDLFlBQWFDLEdBQWNDO01BQzdCLFVBRGVELFFBQWNDLFVBQWRELFFBQWNDLFVBQWRELFFBQWNDLFVBSzVCO2FBRUNDLFlBQWFGLEdBQWNDO01BQzdCLFVBRGVELFFBQWNDLFVBQWRELFFBQWNDLFVBQWRELFFBQWNDLFVBSzVCO2FBRUNFLFdBQVlILEdBQWNJO01BQzVCLG1CQURjSixNQUFjSSxHQUM1QixTQURjSixNQUFjSSxHQUM1QixTQURjSixNQUFjSSxHQUN3QzthQUlsRUMsZUFBZ0JYO01EOURyQixTQzhEcUJBLG1CQUNvRCxPQURwREEsS0FDb0IsMEJBQXNDO2FBSTFFWSxhQUFjQztNQUNoQixlQURnQkE7TUFDaEI7Ozs7bUJBRGdCQTs7TUFKaEIsVUFLeUQ7YUFHdkRDLGNBQWdCQyxNQUFlSDtNQUNqQyxhQURrQkc7TUFDbEIsdUJBSU87O2VBREEsT0FKMEJIOzs7O2dCQUdiO2dCQURhLFVBR1Q7YUFFdEJJLGNBQWVDO01BQ2pCO3FCQURpQkE7O1NBR3dDOzJCQUh4Q0E7VUFHSCxrQkFIR0E7Ozs7Ozs7K0JBSUc7a0JBQUs7YUFHdkJDLFVBQVlMLEtBQWNFLE1BQWVJO01BQzNDLElBQUlGLEtBRFVKLEtBQWNFLE1BQWVJLEtBRXhDLGlCQURDRixHQUNvQixPQURwQkEsRUFDMkIsaUJBQWlCO2FBRzFDRywrQkFDRlAsS0FDQUUsTUFDQVo7VUFGQWtCLFlBRUFDO01BQ0o7WUFBSUMsVUFGQVIsUUFDQU87Z0JBQ0FDLGdDQUNzQyxVQUp0Q0YsT0FHQUU7UUFFQyxRQUZEQTtVQUdGO29CQUpFRDtXQUlGLE9BTkVEOztXQUVBQzs7UUFDSjtTQU9FLFNBUkVBO1NBUUYsT0FWRUQ7O1NBRUFDO2lCQVNxQjthQTBHdkJNLFVBQVlDO01EaE5qQixHQ2dOaUJBLElBQXdCLFFBQXhCQSxhQUF3QkMsYUFBeEJDO3NCQUFrRC9CO1FBN0RoRTs7U0FJRSw4Q0F5RDhEQTtTQXpEOUQ7O3FCQURFaUMsV0FBVUQ7UUFqQlgsaUJBRG9DRTs7O1NBR3JDLE9BeUVZSDs7O29CQTVFeUJHOzs7ZUFQcEMsaUJBT29DQTs7O2lCQUpuQzs7a0RBSW1DQTtrQkFKbkM7O3lCQURFQyxTQUFVWjs7Ozs7Ozs7O29CQUt1Qlc7OztlQXJCcEMsaUJBcUJvQ0E7OztpQkFqQmM7bUNBaUJkQTtrQkFqQjdCLGtCQWlCNkJBOzs7Ozs7OzttQkFJbkI7UUFXcEIsSUFTc0JFLFFBQVdoQyxLQW9EK0JKO1FBaERoRTtVQUM2Qzs0QkFMdkJvQztXQUtwQiw4QkFMb0JBO1dBS3BCLFFBTG9CQSxTQUFXaEM7a0JBVTdCa0Msc0JBTkFEO1dBV0YsVUFmb0JELGNBVWxCRTtVQU1DLEdBWkRELG1CQU1BQztZQVlBO29EQXRCa0JGO2FBc0JsQjs7cUJBdEI2QmhDLFFBSTdCaUMsa0JBSmtCRDthQXNCbEIsT0FERUksV0FBVUQ7YUFyQk1IO2FBQVdoQzs7VUFLWTtXQWdDekMsdUNBckNrQmdDO1dBcUNsQjs7a0JBckM2QmhDLE9BQVhnQztXQTZDZDs7YUFURlE7YUFBVUQ7YUFTUixjQVRRQSxZQVNxQyxhQVQvQ0M7V0FwQ2dCUjtXQUFXaEM7bUJBeURoQzthQUVDMkMsY0FBZXpDLEdBQVlDO01BQzFCLHNDQURjRCxNQUFZQztxQkFFeEIseUJBRllELE1BQVlDO2lCQUVlLHlCQUYzQkQsTUFBWUM7aUJBR3RCLHlCQUhVRCxNQUFZQztlQUl4Qix5QkFKWUQsTUFBWUMsTUFJRzthQUc5QnlDLFlBQWFqRCxJQUF5QmtCO01BQ3hDLHFDQURlbEIsUUFBeUJrQixlQUNnQjthQUV0RGdDLG1CQUFvQmhDO01BQ2hCLGlCQURnQkEsR0FFdEIsaUJBRnNCQTtrQ0FFc0I7YUFFMUNpQyxrQkFBbUJqQztNQUNmLGlCQURlQTtRQUV1QyxxQkFGdkNBLE1BRUoseUJBRklBO1FBRUosaUJBRklBLFVBRWpCa0M7a0NBQ2lEO2FBRW5EQyxXQUFZcEQsR0FDZCxZQURjQSwrQkFDMEM7YUFHbERxRCxVQUFXL0MsR0FBWUM7TUQ5T2hDLEdDOE9vQkQsVUFBWUMsU0FBWkQsVUFBWUMsTUFHM0IsY0FIZUQsUUFBWUM7TUFNakIsSUFBTitDLElBQU0sY0FOS2hELEdBQVlDO01BTWpCLFFBQU4rQztRQVNBOzhDQWZ1Qi9DO1NBZXZCOzttQkFERWlELFlBQWFEO1NBZ0JmLGNBOUJXakQsR0FrQlRtRDtTQVlGLElBOUJ1QmxEO1NBNEIyQixpQkE1QjNCQTtRQXVCdkI7eUJBS00sY0E1QmlCQTtNQVVkLDRCQVZjQSxHQUFaRCxJQThCVTthQUV6Qm9ELFlBQWF6QyxHQUE4QixVQUE5QkEsZUFBb0Q7YUFFakUwQyxlQUFnQjNELEdBQWdDLFVBQWhDQSxlQUF5RDs7Ozs7O09BM0x6RWtCO09BMkhBVTtPQThCSXlCO09BdkJKTjtPQXVEQVc7T0FoREFWO09BR0FDO09BSUFDO09BbEtBdEM7T0EzQkFYO09Ba01BbUQ7T0EvTEEvQztPQU9BRztPQU9BQztPQXBCQVg7T0F5QkFhO09Ba05BZ0Q7O1VEaFJMOzs7Ozs7O0lDQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0MybkNTQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQTFuQ0pHOzs7Ozs7OztLQWdLQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YUE1SkFHLFdBQVdDLEdBQUksb0JBQUpBLEVBQXdCOzs7Ozs7YUFnQm5DQyxhQUFhQyxJQUFJQztNQUNuQixJQUFJQztNQUFKLFNBR0lDLFFBQVFDLEVBQUVILEdBQUksY0FBSkEsTUFBRkcsVUFBaUI7TUFFMUIsYUFOZ0JILEdBUVQsa0JBUE5DLElBRFdGLElBUUwsMEJBUlNDO01BU1gsY0FUV0E7UUFXakI7VUFWRUMsSUFEV0YsSUFXTCxpQ0FYU0M7UUFZVCxrQkFYTkMsSUFEV0YsSUFZTCxnQ0FaU0M7TUFjWCxjQWRXQTtRQWdCakI7VUFmRUMsSUFEV0YsSUFnQkwsaUNBaEJTQztRQWlCakI7VUFoQkVDLElBRFdGLElBaUJMLGlDQWpCU0M7UUFrQlQsa0JBakJOQyxJQURXRixJQWtCTCxnQ0FsQlNDO01Bb0JYLGNBcEJXQTtRQXNCakI7VUFyQkVDLElBRFdGLElBc0JMLGlDQXRCU0M7UUF1QmpCO1VBdEJFQyxJQURXRixJQXVCTCxpQ0F2QlNDO1FBd0JqQjtVQXZCRUMsSUFEV0YsSUF3QkwsaUNBeEJTQztRQXlCVCxrQkF4Qk5DLElBRFdGLElBeUJMLGdDQXpCU0M7TUEyQlgsY0EzQldBO1FBNkJqQjtVQTVCRUMsSUFEV0YsSUE2QkwsaUNBN0JTQztRQThCakI7VUE3QkVDLElBRFdGLElBOEJMLGlDQTlCU0M7UUErQmpCO1VBOUJFQyxJQURXRixJQStCTCxpQ0EvQlNDO1FBZ0NqQjtVQS9CRUMsSUFEV0YsSUFnQ0wsaUNBaENTQztRQWlDVCxrQkFoQ05DLElBRFdGLElBaUNMLGdDQWpDU0M7TUFvQ1YsY0FwQ1VBO1FBc0NqQjtVQXJDRUMsSUFEV0YsSUFzQ0wsaUNBdENTQztRQXVDakI7VUF0Q0VDLElBRFdGLElBdUNMLGlDQXZDU0M7UUF3Q2pCO1VBdkNFQyxJQURXRixJQXdDTCxpQ0F4Q1NDO1FBeUNqQjtVQXhDRUMsSUFEV0YsSUF5Q0wsaUNBekNTQztRQTBDakI7VUF6Q0VDLElBRFdGLElBMENMLGlDQTFDU0M7UUEyQ1Qsa0JBMUNOQyxJQURXRixJQTJDTCxnQ0EzQ1NDO2tDQTRDbEI7YUFPQ0ksdUJBQXVCTCxJQUFJTSxFQUFFQztNQUovQixXQUk2QkQsY0FKN0IsTUFJK0JDO2FBbkQ3QlIsYUFtRHVCQyxhQUpyQlEsZUFDQUMsV0FJeUM7O2FBMkIzQ0MsV0FBWVYsSUFBS1csTUFBUUM7TUFDM0IsR0FEMkJBLElBQU8sUUFBUEEsWUFBT0MsYUFBUEM7TUFDM0IsR0FEY2Q7T0FJSSxVQUpKQSxPQUNWZ0IsTUFHT0Q7O1dBSFBDLE1BRUc7TUFBaUIsVUFGcEJBLE1BRHVCRixPQUFSSCxNQVdsQjthQTVHQ00sSUFBSWI7TUFDTixlQURNQTs0Q0FJTDthQUVDYyxjQUFjQyxJQUFJQyxNQUFNQyxLQUFLQyxHQUFHQztNQUNsQyw2QkFEK0JELEdBQWZILElBQUlDLFNBQU1DLE9BQU5EO01BRXBCLDZCQUYrQkUsR0FBR0M7TUFFbEMsV0FGMEJGO01BRTFCLFFBQ2lCO2FBU2ZHLGNBQWNMLElBQUlDLE1BQU1FO01BQzFCO1FBQ0U7Ozs7WUFGd0JBO1lBQVZIO1lBQUlDO2tDQUFKRCxPQUFJQztRQUlsQjtZQURHSzs7UUFDSDs7O1VBSmNOO1VBQUlDO1VBSWxCLHNCQUpjRCxPQUFJQztRQUlsQixNQURHSyxJQUdNO2FBbUJUQyxhQUFhSixHQUFHeEI7TUFDbEIsNkJBRGV3QjtNQWhCZiwyQ0FnQmtCeEIsV0FoQmxCOztZQUNBUTtRQUNFO1VBQU0sSUFsQitCcUIsRUFrQi9CLGdCQWNVN0IsRUFmbEJRO1VBQ1EsVUFsQitCcUI7V0FvQnpCLGNBWUk3QixFQWhDT3NCLE1BaUJ6QmQsRUFlZWdCOzs7cUJBaEN3Qks7Ozs7Ozt3QkFxQnpCLGNBV0k3QixFQWhDT3NCLE1BaUJ6QmQsRUFlZWdCO3dCQVBELGNBT0l4QixFQWhDT3NCLE1BaUJ6QmQsRUFlZWdCO3dCQVRELGNBU0l4QixFQWhDT3NCLE1BaUJ6QmQsRUFlZWdCO3dCQVZDLGNBVUV4QixFQWhDT3NCLE1BaUJ6QmQsRUFlZWdCO3dCQVJELGNBUUl4QixFQWhDT3NCLE1BaUJ6QmQsRUFlZWdCO3lCQWJGLGNBYUt4QixFQWhDT3NCLE1BaUJ6QmQsRUFlZWdCOzs7Ozs7Ozs7ZUEvQmYsNkJBK0JlQSxHQUFHeEIsRUFoQ09zQixTQWlCekJkLElBakJ5QmM7ZUFFekIsNkJBOEJlRTtlQTdCSSxhQUhvQks7ZUFHdkMsNkJBNkJlTDtlQTdCSSxTQUNBLElBSm9CSztlQUl2Qyw2QkE0QmVMO2VBNUJmLFdBYUFoQjs7O1VBQ1EsU0FEUkE7OztNQWFBLGNBRWtCUixFQWhDT3NCLE1BZ0NWRTtnREFHTzthQUVwQk0sc0JBQXNCOUI7TUFDZixJQUFMd0IsR0FBSztNQUNULGFBRElBLEdBRG9CeEI7TUFFeEIsbUNBREl3QixHQUVjO2FBVWhCTyxXQUFXUDtNQUNiLG9DQURhQSxZQUNjO2FBRXpCUSxXQUFXUixHQUFHckI7TUFDaEIsU0FEZ0JBOzBDQUFIcUIsUUFDdUM7SUFNbkM7O0tBREE7SUFEakI7YUFPTVMsYUFBYWpDLEVBQUVHO01BQ3JCLFNBRHFCQSxFQUNQO01BRVosSUFBSStCLEVBSGUvQjtNQUluQixhQUppQkgsRUFBRUc7TUFHbkI7T0FFdUIsd0JBRm5CK0I7T0FMTiwrQkFETTVCOzBDQUdhTixPQUtjO0lBWmpDLFNBY0VtQyxVQUFVWCxHQUFHckI7TUFDZixXQURlQTtlQUViLGFBRlVxQixHQUFHckI7O2lCQVFiLDZCQVJVcUI7a0JBSVYsNkJBSlVBLE9BSVYsYUFKVUEsR0FBR3JCLEdBUVM7SUF0QnhCLFNBa0NFaUMsbUJBQW1CcEM7TUFDckI7dUNBRHFCQTs7Y0FFbkJRO1VBQ0U7WUFBTSwwQkFIV1IsRUFFbkJRO1lBQ1E7Ozs7MEJBRUc7WUFGSCxTQURSQTs7O1FBS0E7Ozs7OEJBRUE7UUFqQkYsV0FpQk87SUEzQ1AsU0FpREU2QixZQUFZYixHQUFHckI7TUFDWCw4QkFEV0E7TUFDWDtRQUlGLGNBTGFBOzRDQUFIcUI7b0JBR1Ysb0NBSFVBO01BQ1I7T0FNTyxtQ0FQSXJCO09BU1IsdUJBRkRtQyxPQVBTbkMsRUFPVG1DLEdBR0csZ0NBVk1uQztNQVliLDZCQVpVcUIsR0FRTnhCO01BUEYsU0FZQyxtQkFMQ0E7TUFLRCxZQUNELDZCQWRRd0IsY0FjaUI7SUEvRC9CLFNBaUVFZSx3QkFBd0JDLG9CQUFvQmhCLEdBQUdyQjtNQUNqRCxhQUQwQnFDO01BQzFCO1dBQ0l4QyxFQWtCTyxnQ0FwQnNDRzs7O29CQUU3Q0gsRUFFTyxnQ0FKc0NHO29CQUU3Q0gsRUFHTyxnQ0FMc0NHO29CQUU3Q0gsRUFJTyxnQ0FOc0NHO29CQUU3Q0gsRUFLTyxnQ0FQc0NHO29CQUU3Q0gsRUFNTyxnQ0FSc0NHO29CQUU3Q0gsRUFPTyxnQ0FUc0NHO29CQUU3Q0gsRUFRTyxnQ0FWc0NHO29CQUU3Q0gsRUFTTyxnQ0FYc0NHO29CQUU3Q0gsRUFVTyxnQ0Fac0NHO29CQUU3Q0gsRUFXUSxnQ0FicUNHO3FCQUU3Q0gsRUFZUSxnQ0FkcUNHO3FCQUU3Q0gsRUFhUSxnQ0FmcUNHO3FCQUU3Q0gsRUFjUSxnQ0FoQnFDRztxQkFFN0NILEVBZVEsZ0NBakJxQ0c7cUJBRTdDSCxFQWdCUSxnQ0FsQnFDRztxQkFFN0NILEVBaUJRLGdDQW5CcUNHO01Bc0JqRCw2QkF0QjhDcUIsR0FFMUN4QjtNQURKLFNBc0JHLG1CQXJCQ0E7TUFxQkQsWUFDRCw2QkF4QjRDd0IsZ0JBd0JuQjtJQXpGM0IsU0E0RkVpQixpQkFBaUJELG9CQUFvQmhCLEdBQUdyQjtNQUNwQyw4QkFEb0NBO01BQ3BDO1FBSUYsY0FMc0NBOzRDQUFIcUI7O2VBR25DLDZCQUhtQ0E7ZUFPbkMsd0JBUGVnQixvQkFBb0JoQixHQUFHckIsRUFPVTtJQW5HcEQsU0EyR0V1QyxnQkFBZ0JsQixHQUFHckI7TUFDZiw4QkFEZUE7TUFDZjtRQUlGOztlQUxpQkE7OztRQUxyQjtvQkFRSTtNQUZFO09BVU8sbUNBWFFBO09BYVosdUJBRkRtQyxPQVhhbkMsRUFXYm1DLEdBR0csZ0NBZFVuQztNQWdCakIsNkJBaEJjcUIsR0FZVnhCO01BWEYsU0FnQkMsbUJBTENBO01BS0QsWUFDRCw2QkFsQll3QixnQkFrQmE7SUE3SC9CLFNBZ0lFbUIscUJBQXFCSCxvQkFBb0JoQixHQUFHckI7TUFDeEMsOEJBRHdDQTtNQUN4QztRQUlGOztlQUwwQ0E7OztlQW5NNUNKOztlQXNNRTtlQVFBLHdCQVhtQnlDLG9CQUFvQmhCLEdBQUdyQixFQVdNO0lBM0lwRDs7OzthQWtMRTRDLE1BQU1DLE1BQU1DLE1BQU05QztNRDFQdkI7WUM0UFUrQyxlQUFMQztRQUNFLFdBSElILE1BQVk3QyxFQUVsQmdEO2tCQUFLRDs7O2dCQVBBRSxXQUFMQztZQUNFLFdBSVVKLE1BQU05QztZQUhoQixXQUdJNkMsTUFBWTdDLEVBTGxCa0Q7c0JBQUtEOztVQURDO01BT0E7SUFuTFIsU0F3TEVILE1BQU16QixJQUNSLG9DQURRQSxNQUNjO0lBekx0QixTQWlQRThCLGNBQWM5QixHQUFHeEIsRUFBRXVEO01BQ3JCLDZCQURnQi9CO01BRWhCLGFBRmdCQSxHQUFHeEI7TUFFbkIsR0FGcUJ1RCxPQUtYcEQsRUFMV29ELEtBTWQsNkJBTlMvQixPQU9ULFFBUFNBLEdBS05yQjtNQUlWLG9DQVRnQnFCLE1BU007SUExUHRCLFNBME9FaUMsWUFBWWpDLEdBQUc0QjtNQUNqQiw2QkFEYzVCO01BRWQsTUFpQkVnQyxRQXJFQVAsTUFrRFl6QixHQUFHNEI7TUFFakIsb0NBRmM1QixNQUdRO0lBN090QixTQW9PRWtDLFdBQVdsQyxHQUFHNEI7TUFDaEIsNkJBRGE1QjtNQUViLE1BdUJFZ0MsUUFyRUFQLE1BNENXekIsR0FBRzRCO01BRWhCLG9DQUZhNUIsTUFHUztJQXZPdEIsU0EwTkVtQyxZQUFZbkMsR0FBRzRCO01BQ2pCLFNBQUlKLE1BQU14QjtZQUFPckIsV0FBSEg7UUFDWixhQURRd0IsR0FBSXhCO1FBRVosNkJBRlF3QjtRQUVSLGVBRlFBLEdBQU9yQjtNQUtqQiw2QkFOY3FCO01BT2QsTUFOSXdCLE1BbkNGQyxNQWtDWXpCLEdBQUc0QjtNQU9qQixvQ0FQYzVCLE9BUVM7SUFsT3ZCLFNBNlBFZ0MsUUFsRWVoQyxHQUFJckI7TUFDckIsVUFEcUJBLGVBRVIsa0JBRklxQjtlQUFJckI7Ozs7a0NBc0JMLElBQUxpRCxFQXRCVWpELEtBc0JMLG1CQXRCQ3FCLEdBc0JONEI7WUFSUSxJQUFMcEQsRUFkT0c7WUFjRixvQ0FkRnFCLEdBY0h4QjtnQ0FTQyxJQUFMa0QsSUF2QlcvQyxLQXVCTixrQkF2QkVxQixHQXVCUDBCO1VBcEJLLElBQUxVLEVBSFd6RDtVQUdOLGtCQUhFcUIsR0FHUG9DOzhCQXNCTSxJQUFMQyxJQXpCVTFELEtBeUJMLG1CQXpCQ3FCLEdBeUJOcUM7a0JBekJVMUQsS0E0QkpvRCxXQUFITztlQTBCWlIsY0F0RGU5QixHQTRCSHNDLElBQUdQOztRQXBCQSxJQUFMUSxJQVJTNUQsS0FRSixvQ0FSQXFCLEdBUUx1Qzs7OEJBR0ksSUFBTEMsRUFYVTdELEtBV0wsbUJBWENxQixHQVdOd0M7UUFORyxJQUFMeEQsRUFMWUw7UUFLUCxpQkFMR3FCLEdBS1JoQjs7UUFlVyxJQUFMeUQsSUFwQk05RCxLQW9CRCxvQ0FwQkhxQixHQW9CRnlDO01BSEUsSUFBTEMsSUFqQlMvRDtNQWlCSixvQkFqQkFxQixHQWlCTDBDLElBVytCO0lBdk4zQyxTQW1URUMsa0JBQWtCM0MsR0FBR3hCLEVBQUV1RDtNQUN6QixHQUR5QkE7WUFHaEJwRCxFQUhnQm9EO1FBSW5CLDZCQUpjL0I7UUFLZCxhQUxjQSxHQUFHeEI7UUFNakIsNkJBTmN3QjtRQU9kLGVBUGNBLEdBR1hyQjtRQUlILG9DQVBjcUI7TUFFUixvQkFGUUEsR0FBR3hCLEVBUUs7SUEzVDVCLFNBNlNFcUUsZ0JBQWdCN0MsR0FBRzRCO01BQ3JCLDZCQURrQjVCO01BRWxCLE1BaERNNEMsZUF2RUpuQixNQXFIZ0J6QixHQUFHNEI7TUFFckIsb0NBRmtCNUIsTUFHSTtJQWhUdEIsU0ErUE00QyxlQXlDVzVDLEdBekNRckI7TUFDekIsVUFEeUJBLGVBRVosa0JBdUNJcUI7ZUF6Q1FyQjs7Ozs7Y0FzQlQ7aUJBdEJTQTtlQWdDekI7eUJBQVVxQjtzQkFBT3JCLFdBQUhIO2tCQUNaLGFBRFF3QixHQUFJeEI7a0JBRVosNkJBRlF3QjtrQkFFUixzQkFGUUEsR0FBT3JCO2NBS2pCLDZCQUlpQnFCO2NBSGpCLE1BTkl3QixNQXZHRkMsTUFnSGV6QixHQW5CTjRCO2NBZ0JYLG9DQUdpQjVCO1lBM0JFLElBQUx4QixFQWRXRztZQWNOLG9DQTJCRnFCLEdBM0JIeEI7O1lBU0MsSUFBTGtELElBdkJlL0M7WUEwQ3pCLDZCQURpQnFCO1lBRWpCLE1BM0NNNEMsZUF2RUpuQixNQWdIZXpCLEdBbEJQMEI7WUFvQlYsb0NBRmlCMUI7VUF0Q0YsSUFBTG9DLEVBSGV6RDtVQUdWLGtCQXNDRXFCLEdBdENQb0M7OEJBc0JNLElBQUxDLElBekJjMUQsS0F5QlQsdUJBZ0JDcUIsR0FoQk5xQztrQkF6QmMxRCxLQTRCUm9ELFdBQUhPO2VBd0JaSyxrQkFYZTNDLEdBYkhzQyxJQUFHUDs7UUFwQkEsSUFBTFEsSUFSYTVELEtBUVIsb0NBaUNBcUIsR0FqQ0x1Qzs7OEJBR0ksSUFBTEMsRUFYYzdELEtBV1QsdUJBOEJDcUIsR0E5Qk53QztRQU5HLElBQUx4RCxFQUxnQkw7UUFLWCxpQkFvQ0dxQixHQXBDUmhCOztRQWVXLElBQUx5RCxJQXBCVTlELEtBb0JMLG9DQXFCSHFCLEdBckJGeUM7TUFIRSxJQUFMQyxJQWpCYS9EO01BaUJSLG9CQXdCQXFCLEdBeEJMMEMsSUFXbUM7SUEzUi9DLFNBK1RFSSxVQUFZeEQsU0FBeUJVLEdBQUdyQjtNQUMxQyxHQURjVyxJQUFNLFFBQU5BLFdBQU1DLGFBQU53RDtNQUNkLFFBRGdDLGtCQUFORSxJQUFNRCxlQUFOQztNQUMxQixHQUQwQkEsSUFFeEIsZUFGcUNqRCxHQUFHckIsUUFJeEMsUUFKcUNxQixHQUFHckI7TUFJekIsb0NBSnNCcUIsR0FBekIrQyxJQUtVO0lBcFV4QixTQXNVRUcsVUFBV3hFLElBQU1ZLFNBQXdCMkQsSUFBSXRFO01BQy9DLEdBRG1CVyxJQUFNLFFBQU5BLFdBQU1DLGFBQU40RDtNQUNuQixRQURzQyxrQkFBTkosSUFBTUMsZUFBTkQ7TUFDaEMsR0FEYXJFO1FBS0wsSUFER3NCLEdBSkV0QixPQUtMLDRCQURHc0IsSUFDSCxJQUpKb0QsS0FHT3BEOztXQUhQb0QsS0FFVSw0QkFIS0Q7TUFRbkIsYUFSZ0NKLEtBQVdFLElBQ3ZDRyxLQUQyQ3pFO01BU3ZDLElBQUpILEVBQUksNEJBUko0RTtNQVNKLDRCQVRJQTtNQVNKLE9BREk1RSxDQUVIO0lBalZELFNBbVZFNkUsV0FBWTNFLElBQU1ZLFNBQXVCMkQsSUFBSUssR0FBRzNFO01BQ2xELEdBRG9CVyxJQUFJLFFBQUpBLFdBQUlDLGFBQUo0RDtNQUNwQixRQURzQyxrQkFBTkosSUFBTUMsZUFBTkQ7TUFDaEMsR0FEY3JFO1FBSUcsSUFBTnNCLEdBSkd0QixPQUlHLDRCQUFOc0IsSUFBTSxJQUhib0QsS0FHT3BEOztXQUhQb0QsS0FFVSw0QkFITUQ7TUFNcEIsYUFOZ0NKLEtBQVdFLElBQ3ZDRyxLQUQ4Q3pFO01BT2xELDZCQVArQzJFLEdBQzNDRjtNQU1KLG1DQU5JQSxLQU9XO0lBM1ZmLFNBNlZFRyxVQUFXN0UsSUFBTVksU0FBdUIyRCxJQUFJTyxJQUFJN0U7TUFDbEQsR0FEbUJXLElBQUksUUFBSkEsV0FBSUMsYUFBSjREO01BQ25CLFFBRHFDLGtCQUFOSixJQUFNQyxlQUFORDtNQUMvQixHQURhckU7UUFJSSxJQUFOc0IsR0FKRXRCLE9BSUksNEJBQU5zQixJQUFNLElBSGJvRCxLQUdPcEQ7O1dBSFBvRCxLQUVVLDRCQUhLRDtNQU1uQixhQU4rQkosS0FBV0UsSUFDdENHLEtBRDhDekU7TUFPaEIscUNBTjlCeUU7TUFNSjtRQUFXLHVCQVBtQ0k7O1FBT25DLDRCQU5QSjs7O01BTUosbUNBTklBLEtBT1c7SUFyV2YsU0F1V0VLLFFBQVNOLElBQUtGLElBQU0zRCxJQUFZb0UsS0FBSy9FO01BQ3ZDLEdBRHNCVyxJQUFNLFFBQU5BLFdBQU1DLGFBQU53RDtNQUNiLElBQUxPLEdBQUssc0JBRHlCSTtNQUN6QjtRQUVQLGFBSFNQLE9BQVdKLEtBQU5FLElBQ1pLLEdBRG1DM0U7UUFJckMsK0JBSEUyRTtRQUtGO1lBREdLLDhCQUNILHNCQUxFTCxJQUtGLE1BREdLLEVBRUk7SUE5V1QsU0FnWEVDLGNBQWdCdEUsSUFBYTJELElBQUlqRCxHQUFHNkQ7TUFDdEMsR0FEa0J2RSxJQUFNLFFBQU5BLFdBQU1DLGFBQU53RDtNQUNsQixZQURrQkE7TUFDVCxvQkR6YlosT0N1WUtELGVBaUQ2QkcsSUFBSWpEO01BQzFCLHFDQUQ2QjZELEdBQ0Y7SUFqWHBDLFNBbVhFQyxjQUFlcEYsSUFBTVksU0FBMEIyRCxJQUFJWTtNQUNyRCxHQUR1QnZFLElBQU0sUUFBTkEsV0FBTUMsYUFBTjREO01BQ3ZCLFFBRDBDLGtCQUFOSixJQUFNQyxlQUFORDtNQUNwQyxHQURpQnJFO1FBS1QsSUFER3NCLEdBSk10QixPQUtULDRCQURHc0IsSUFDSCxJQUpKb0QsS0FHT3BEOztXQUhQb0QsS0FFVSw0QkFIU0Q7TUFRdkIsaUJBUm9DSixLQUFhRSxJQUM3Q0csS0FEaURTO01BUzdDLElBQUpyRixFQUFJLDRCQVJKNEU7TUFTSiw0QkFUSUE7TUFTSixPQURJNUUsQ0FFSDtJQTlYRCxTQWdZRXVGLGVBQWdCckYsSUFBTVksU0FBeUIyRCxJQUFJSyxHQUFHVTtNQUN4RCxHQUR3QjFFLElBQUksUUFBSkEsV0FBSUMsYUFBSjREO01BQ3hCLFFBRDBDLGtCQUFOSixJQUFNQyxlQUFORDtNQUNwQyxHQURrQnJFO1FBSUQsSUFBTnNCLEdBSk90QixPQUlELDRCQUFOc0IsSUFBTSxJQUhib0QsS0FHT3BEOztXQUhQb0QsS0FFVSw0QkFIVUQ7TUFHTyxjQUdqQmM7UUFDWixhQVBrQ2xCLEtBQWFFLElBQzdDRyxLQUtVYTtRQUVaLDZCQVJtRFgsR0FDakRGO1FBT0YsbUNBUEVBLEtBUWM7TUFOYSxxQ0FIeUJZLElBVW5EO0lBMVlMLFNBNFlFRSxZQUFhZixJQUFNN0QsSUFBYTJELElBQUlTLEtBQUtHO01BQzNDLEdBRHFCdkUsSUFBTSxRQUFOQSxXQUFNQyxhQUFOd0Q7TUFDWixJQUFMTyxHQUFLLHNCQUQ2Qkk7TUFDN0I7UUFFUCxpQkFIYVAsT0FBTUosS0FBYUUsSUFDOUJLLEdBRHVDTztRQUl6QywrQkFIRVA7UUFLRjtZQURHSyw4QkFDSCxzQkFMRUwsSUFLRixNQURHSyxFQUVJO0lBblpULFNBc1pNUSxLQVdKeEY7TUFYVyxVQVdYQTs7OztZQU5FLE1BTUZBLEtBTmtCLGdDQUxkd0YsS0FJRXZDO1lBQ0U7O1lBSE47aUJBU0ZqRDthQVRFOzhCQUErQiwwQkFBbUIsVUFBYjBGLEVBQWEsS0FBVkQsR0FBa0I7YUFBekMscUNBRFoxQzthQUNHOzs7Z0JBQ2lCO21EQUFNNEMsRUFBT2xDLEVBQTRCO1lBQTNELG9EQURIQzs7O29CQVNOMUQ7O2FBQ1csSUFET3lGLFVBQVJDLFVBQ0MsU0FET0Q7YUFDUCxPQURPQSxNQUNaRyxJQURONUYsa0JBQVUwRixLQUNKRTs7O1lBSkosUUFHRjVGLEtBSG1CLGdDQVJmd0YsS0FPR0s7WUFDRTtNQVNKLE9BTkw3RixDQU1NO0lBdmFSLFNBdkVNOEYsR0FBR0M7TUREWjtPQ0djLG9DQUZGQTs7Ozs7O2tCQTJDQUM7Y0FDUCw4QkE1Q09EO2NBNkNQLDhCQTdDT0E7Y0E2Q1A7Ozt5QkFFT0U7a0JBQUw7cUJBQUtBLElBRUQsOEJBakRDRjtrQkFrREQsOEJBbERDQTtrQkFtREQsOEJBbkRDQSxRQStDS0k7a0JBS04sOEJBcERDSjtrQkFxREQsR0FyRENBLElBK0NVRztrQkFPWCw4QkF0RENIO2tCQXNERCxRQUNLO2NBVEoscUNBSEFDO2NBYVAsOEJBeERPRDtjQXdEUCxxQ0F4RE9BO2dCQTBCRy9GO1lBQ1YsOEJBM0JPK0Y7WUE0QlAsOEJBNUJPQSxRQTBCRy9GO1lBRVYscUNBNUJPK0Y7O2dCQTBEREs7WUFDTiw4QkEzRE9MO1lBNERQLDhCQTVET0E7WUE0RFA7Ozt1QkFFT0UsSUFBSWpHO2dCQUNQLEdBREdpRyxJQUVELDhCQWhFQ0Y7Z0JBaUVELEdBakVDQSxJQThESS9GO2dCQUdMLFFBQ0k7WUFMSCxxQ0FIRG9HO1lBU04sOEJBbkVPTDtZQW1FUCxxQ0FuRU9BO2NBR0RNO1VBQ04sOEJBSk9OO1VBS1AsOEJBTE9BLFFBR0RNO1VBRU4scUNBTE9OOztjQXNFQU87VUFDUCw4QkF2RU9QO1VBd0VQLDhCQXhFT0E7VUF3RVA7OztxQkFFT0UsSUFBSWpCO2NBQ04sR0FERWlCLElBRUEsOEJBNUVBRjtjQTZFQSxHQTdFQUEsSUEwRUlmO2NBR0osUUFDSTtVQUxKLHFDQUhBc0I7VUFTUCw4QkEvRU9QO1VBK0VQLHFDQS9FT0E7MkJBbUZTRyxlQUFOSztRQUNWLDhCQXBGT1I7UUFxRlAsOEJBckZPQTtRQXNGUCw4QkF0Rk9BLFFBbUZHUTtRQUlWLDhCQXZGT1I7UUF1RlAsR0FKZ0JHO2NBT1BNLElBUE9OO1VBUVosNkJBM0ZHSDtVQTRGSCxHQTVGR0EsSUEwRkVTO1VBR0wsNkJBN0ZHVDs7U0F5RkssNkJBekZMQTtRQThGUCw4QkE5Rk9BO1FBOEZQLHFDQTlGT0E7O1lBY0NVO1FBQ1IsOEJBZk9WO1FBZ0JQLDhCQWhCT0EsU0FjQ1U7UUFFUixxQ0FoQk9WOzs7Y0FvQkFXO1VBQ1AsOEJBckJPWDtVQXNCUCw4QkF0Qk9BLFNBb0JBVztVQUVQLHFDQXRCT1g7WUFRRlk7UUFDTCw4QkFUT1o7UUFVUCw4QkFWT0EsU0FRRlk7UUFFTCxxQ0FWT1o7O1lBc0NJYTtRQUNYLDhCQXZDT2I7UUF3Q1AsOEJBeENPQSxTQXNDSWE7UUFFWCxxQ0F4Q09iO1VBZ0NDYztNQUNSLDhCQWpDT2Q7TUFrQ1AsOEJBbENPQSxTQWdDQ2M7TUFFUixxQ0FsQ09kO0lBdUVULFNBMkJFZSxLQUFLOUcsR0FDUCwwQ0FuR004RixHQWtHQzlGLEVBQ2tCO0lBNUJ6QixTQThCTStHLE1BQU1wQixFQUFFbEM7VUFBRnVELE1BQUVDO01BQ2Q7a0JBRFlEO2dEQUFFQyxJQUVJOzttQkFGTkQ7Ozs7OzBCQUFFQztzQkFjYUMsSUFkYkQsT0FjQUUsSUFkRkgsT0Fjb0Isa0JBQWxCRyxJQUFhRDs7OzJCQWRiRDttQkF3QkQ7b0JBRlNHLEdBdEJSSDtvQkFzQkhqQixHQXRCQ2dCO29CQXVCSks7O3VCQUFlOzBEQUFLQyxNQUFTbkIsSUFBbUM7b0JBQzNELGdDQURMa0IsYUFER3JCO29CQUdFLGdDQUZMcUIsYUFEY0Q7bUJBR1Q7cUJBQ0Y7Ozt5QkFBYzs7Ozs7MEJBQ2Isd0JBRG1CRSxNQUFhbkI7eUJBQ2hDLGFBRUksTUFIb0JxQixRQUFjdEIsUUFHZjtzQkFIeEIsdUNBRkhFLEtBQ0FtQjtxQkFLUSxPQUFWRTs7OzhDQUdBO3FCQUhVOzs7Ozs7eUJBOUJGUjs7Ozs7OztzQkFtQ1FTLEtBbkNSVCxPQW1DSFUsS0FuQ0NYOzs7eUJBQUVDO3FCQW1DUVMsS0FuQ1JULE9BbUNIVSxLQW5DQ1g7OzswQkFBRUM7c0JBR0dXLElBSEhYLE9BR05ZLElBSEliLE9BR1Usa0JBQWRhLElBQVNEOzs7Ozs7d0JBSEhYOzs7Ozs7O2lCQTZDSDt1QkE3Q0dBO2tCQTRDK0JmO2tCQUFQSzt3QkE1QzFCUztrQkE0Q1FRO2tCQUFOTTtrQkFDSCxtQkFER0EsT0FBd0J2QjtpQkFDM0I7bUJBR0wsR0FKY2lCO3dCQUF5QnRCOzJCQTVDL0I2QixJQTRDK0I3QixTQTVDakM4QixJQTRDUVIsV0E1Q1JSLFFBQUVDOztvQkFpRFEsS0FMdUJmLE1BS3ZCO21CQUVUO2lCQUxFOzthQVJYO2VBQU8sSUFDTCtCLFNBREssMkJBdENMbEIsTUFtQ0tZLEtBQVdEO2VBSU4sT0FBVk87Ozt3Q0FHQTtlQUhVOzs7O3lCQXZDRmhCO3FCQUtDaUIsSUFMRGpCLE9BS1BrQixJQUxLbkIsT0FLUSxrQkFBYm1CLElBQVFEOzs7MEJBTERqQjtzQkFXT21CLElBWFBuQixPQVdIb0IsSUFYQ3JCLE9BV2Msa0JBQWZxQixJQUFVRDs7Ozs7O3dCQVhQbkI7Ozs7Ozs7cUJBb0JlcUIsSUFwQmZyQixPQW9CQ3NCLElBcEJIdkIsT0FvQnNCLGtCQUFuQnVCLElBQWNEOzs7d0JBcEJmckI7b0JBaUJTdUIsSUFqQlR2QixPQWlCRndCLElBakJBekIsT0FpQmdCLGtCQUFoQnlCLElBQVdEOzs7Ozs7O3NCQWpCVHZCOzs7Ozs7O21CQVFTeUIsSUFSVHpCLE9BUUYwQixJQVJBM0IsT0FRZ0Isa0JBQWhCMkIsSUFBV0Q7UUE2Q2QsU0FBSztJQW5GZCxTQXpDRUUsUUFBUTNDLElBQUk0QyxJQUFJaEUsSUFBSTVCO01BQ3RCLFNBQUk2RixPQUFPakU7UUFBUyxxQ0FBVEEsU0FERG9CLElBQ3VDO01BQWpELHdDQUFJNkMsUUFEVUQsSUFBSWhFLElBQUk1QixFQUVnQjtJQXVDdEMsU0FyQ0U4RixRQUFTL0k7TUFDWCxVQURXQTs7Ozs7Ozs7Ozs7O29CQWlCZTtNQUpGLFFBSU87SUFvQi9CLFNBQ01nSixPQUFRQyxXQW1GQzNFLElBbkZlTyxJQUF1QjdFO01EekV4RCxJQ3lFd0RxRztNQUNyRDtrQkFEcURBO1NBRXhDLG9DQUZpQnhCO2lCQUF1QndCOzs7Ozs7O2tCQTBDakQsT0ExQ1U0QyxXQTBDYSw4QkExQ0dwRTtrQkEyQzRCOzs2QkF3Q3ZDQTswQkFBVzdFLFdBQU51RztzQkFDMEMseUJEN0pyRSxPQ3lFU3lDLFlBbUZTMUU7c0JBQ3NCLCtCQURiaUM7c0JBQ2EscUNBRGxCMUIsbUJBQVc3RTttQkF4Q2U7d0NEcEhoRCxPQytCSzRJO2tCQXFGRSw4QkEzQzBCL0Q7a0JBMkM0QixhQTNDNUNvRTtrQkEyQ1YsWUFDdUIsOEJBNUNHcEU7Z0JBd0NiLG9DQXhDYUE7Y0FzQlgsSUFBTGhGLEVBdEJ1Q3dHO2NBc0JsQyxvQ0F0Qld4QixJQXNCaEJoRjs7dUJBdEJ1Q3dHOztnQkE2QmpELE9BN0JVNEMsV0E2QmEsOEJBN0JHcEU7bUJBbEI5QiwyQkFwQkVrRTtrQkFzRUk7O21CQUNlLHlCRDFHeEIsT0N5RVNDLFlBbUZTMUU7bUJBbERQO3dDRDFHWCxPQytCS3NFO2tCQTBFSSw4QkFoQ3dCL0Q7O2tCQXFDeEI7O21CQUNlLHlCRC9HeEIsT0N5RVNtRSxZQW1GUzFFO21CQTdDUDt3Q0QvR1gsT0MrQktzRTtrQkErRUksOEJBckN3Qi9EO2dCQXNDd0IsYUF0Q3hDb0U7Z0JBc0N3QyxZQUMzQiw4QkF2Q0dwRTtjQTJCZCxvQ0EzQmNBO1lBR2YsSUFBTDJCLElBSDJDSDtZQUd0QyxvQ0FIZXhCLElBR3BCMkI7O1lBNENKLElBREt2RCxFQTlDMENvRDtZQStDL0MsR0FvQ1MvQixLQW5DUCxxQkFGR3JCLEdBOUMwQ29EO1lBa0Q3QyxTQUpHcEQsRUFLRCxvQ0FuRG9CNEI7WUFvRGpCLE9BcERDb0UsV0FxRG1CLDhCQXJESHBFO1lBK0N4QjthQU13RDthQUNILHlCRC9IOUQsT0N5RVNtRSxZQW1GUzFFO2FBN0IrQix5QkQvSGpELE9DK0JLc0U7WUFnR1EsOEJBdERvQi9ELGNBOENuQjVCO1lBQ0wsYUEvQ1FnRztZQXNESixZQUN1Qiw4QkF2REhwRTttQkFBdUJ3Qjs7Z0JBc0UvQks7ZUFhUHBDO2NBVlA7O21DQUFJNEUsa0JBSFV4QztlQXRFK0JMOztZQStFcEM7OzthQUNpQyx5QkR6SnJELE9DeUVTMkMsWUFtRlMxRTtZQUhtQyxxQ0FoRnBCTyxTQStFbEJzRSxRQVRVekM7VUFWaEIsR0F1QlNwQyxLQXJCUCw0QkE5RDZDK0I7VUFvRW5COytDQXBFSnhCOztVQW1CYixJQUFMbEIsSUFuQnlDMEMsT0FtQnBDLG9DQW5CYXhCLElBbUJsQmxCOzs7WUFWTixJQURLa0QsSUFSMENSO1lBUy9DLEdBMEVTL0I7Y0EwRE4sSUFBTEcsS0FBSztjQUNULGdCQURJQSxLQXJJT29DO2NBcUlGLElBcElDakQsSUFxSVYsNEJBRElhOztjQXhDSyxJQUFMcEQsR0FBSztjQUNULFlBRElBLEdBN0ZPd0Y7Y0E2RkYsSUE1RkNqRCxJQTZGViw0QkFESXZDO1lBMUYrQixvQ0FYTHdELElBU3BCakI7VUFKSSxRQUx1Q3lDLE9BeUJyRCwyQkFwQlMrQzs4Q0FMcUJ2RTs7VUF5QlYsSUFBTGYsSUF6QnNDdUMsT0F5QmpDLG9DQXpCVXhCLElBeUJmZjtRQVRFLFFBaEJvQ3VDLE9BZ0JULDJCQUFoQ3RDO1FBQWdDLG9DQWhCZGMsVUFnRm1EO0lBakZqRixTQXVGRXdFLEtBQUsxSSxJQUFha0UsSUFBSTdFO01BQ3hCLEdBRE9XLElBQU0sUUFBTkEsV0FBTUMsYUFBTjBEO01BQ1A7TUFBaUMseUJEaEtwQyxPQ3lFUzBFLFlBc0ZDMUU7TUFDMEIscUNBRGJPLGNBQUk3RSxFQUMrQztJQXhGdkUsU0F0RUVzSixhQUFjaEYsSUFBSU8sSUFBSTdFLEdBQ3hCLFlBRGdCc0UsSUFBSU8sSUFBSTdFLEVBQ0o7SUFxRXBCLFNBbkVFdUosaUJBQWtCakYsSUFBSXRFO01BOEpILHlCRG5LeEIsT0MrSktxSixLQTFKa0IvRTtNQThKQywrQ0E5Skd0RSxFQUNEO0lBa0V2QixTQWhFRXdKLGtCQUFtQmxGLElBQUlLLEdBQUczRTtNQThKbEIsSUFBTitGLElBQU0sOEJBOUplcEI7TUErSkMseUJEdks3QixPQytKSzBFLEtBdkptQi9FO01BK0pLLHFDQUR0QnlCLGNBOUp3Qi9GLEVBQ0Q7SUErRDNCLFNBckVFeUosTUFBSXRKO01BQ04sZUFETUE7NENBSUw7SUFpRUQsU0EvREV1SixnQkFBY3hJLElBQUlDLE1BQU1DLEtBQUtDLEdBQUdDO01BQ2xDLDZCQUQrQkQsR0FBZkgsSUFBSUMsU0FBTUMsT0FBTkQ7TUFFcEIsNkJBRitCRSxHQUFHQztNQUVsQyxXQUYwQkY7TUFFMUIsUUFDaUI7SUE0RGpCLFNBbkRFdUksZ0JBQWN6SSxJQUFJQyxNQUFNRTtNQUMxQjtRQUNFOzs7O1lBRndCQTtZQUFWSDtZQUFJQztrQ0FBSkQsT0FBSUM7UUFJbEI7WUFER0s7O1FBQ0g7OztVQUpjTjtVQUFJQztVQUlsQixzQkFKY0QsT0FBSUM7UUFJbEIsTUFER0ssSUFHTTtJQTZDWCxTQTFCRW9JLGVBQWF2SSxHQUFHeEI7TUFDbEIsNkJBRGV3QjtNQWhCZiwyQ0FnQmtCeEIsV0FoQmxCOztZQUNBUTtRQUNFO1VBQU0sSUFsQitCcUIsRUFrQi9CLGdCQWNVN0IsRUFmbEJRO1VBQ1EsVUFsQitCcUI7V0FvQnpCLGdCQVlJN0IsRUFoQ09zQixNQWlCekJkLEVBZWVnQjs7O3FCQWhDd0JLOzs7Ozs7d0JBcUJ6QixnQkFXSTdCLEVBaENPc0IsTUFpQnpCZCxFQWVlZ0I7d0JBUEQsZ0JBT0l4QixFQWhDT3NCLE1BaUJ6QmQsRUFlZWdCO3dCQVRELGdCQVNJeEIsRUFoQ09zQixNQWlCekJkLEVBZWVnQjt3QkFWQyxnQkFVRXhCLEVBaENPc0IsTUFpQnpCZCxFQWVlZ0I7d0JBUkQsZ0JBUUl4QixFQWhDT3NCLE1BaUJ6QmQsRUFlZWdCO3lCQWJGLGdCQWFLeEIsRUFoQ09zQixNQWlCekJkLEVBZWVnQjs7Ozs7Ozs7O2VBL0JmLDZCQStCZUEsR0FBR3hCLEVBaENPc0IsU0FpQnpCZCxJQWpCeUJjO2VBRXpCLDZCQThCZUU7ZUE3QkksZUFIb0JLO2VBR3ZDLDZCQTZCZUw7ZUE3QkksU0FDQSxNQUpvQks7ZUFJdkMsNkJBNEJlTDtlQTVCZixXQWFBaEI7OztVQUNRLFNBRFJBOzs7TUFhQSxnQkFFa0JSLEVBaENPc0IsTUFnQ1ZFO2dEQUdPO0lBdUJ0QixTQXJCRXdJLHdCQUFzQmhLO01BQ2YsSUFBTHdCLEdBQUs7TUFDVCxlQURJQSxHQURvQnhCO01BRXhCLG1DQURJd0IsR0FFYztJQWtCbEIsU0FSRXlJLGFBQVd6STtNQUNiLG9DQURhQSxjQUNjO0lBTzNCLFNBTEUwSSxhQUFXMUksR0FBR3JCO01BQ2hCLFNBRGdCQTswQ0FBSHFCLFFBQ3VDO0lBTW5DOztLQURBO0lBRGpCO2FBT00ySSxlQUFhbkssRUFBRUc7TUFDckIsU0FEcUJBLEVBQ1A7TUFFWixJQUFJK0IsRUFIZS9CO01BSW5CLGVBSmlCSCxFQUFFRztNQUduQjtPQUV1Qix3QkFGbkIrQjtPQUxOLCtCQURNNUI7MENBR2FOLE9BS2M7SUFaakMsU0FjRW9LLFlBQVU1SSxHQUFHckI7TUFDZixXQURlQTtlQUViLGVBRlVxQixHQUFHckI7O2lCQVFiLDZCQVJVcUI7a0JBSVYsNkJBSlVBLE9BSVYsZUFKVUEsR0FBR3JCLEdBUVM7SUF0QnhCLFNBa0NFa0sscUJBQW1Ccks7TUFDckI7dUNBRHFCQTs7Y0FFbkJRO1VBQ0U7WUFBTSwwQkFIV1IsRUFFbkJRO1lBQ1E7Ozs7MEJBRUc7WUFGSCxTQURSQTs7O1FBS0E7Ozs7OEJBRUE7UUFqQkYsV0FpQk87SUEzQ1AsU0FpREU4SixjQUFZOUksR0FBR3JCO01BQ1gsOEJBRFdBO01BQ1g7UUFJRixjQUxhQTs0Q0FBSHFCO29CQUdWLG9DQUhVQTtNQUNSO09BTU8sb0NBUElyQjtPQVNSLHVCQUZEbUMsT0FQU25DLEVBT1RtQyxHQUdHLGlDQVZNbkM7TUFZYiw2QkFaVXFCLEdBUU54QjtNQVBGLFNBWUMscUJBTENBO01BS0QsWUFDRCw2QkFkUXdCLGdCQWNpQjtJQS9EL0IsU0FpRUUrSSwwQkFBd0IvSCxvQkFBb0JoQixHQUFHckI7TUFDakQsYUFEMEJxQztNQUMxQjtXQUNJeEMsRUFrQk8saUNBcEJzQ0c7OztvQkFFN0NILEVBRU8saUNBSnNDRztvQkFFN0NILEVBR08saUNBTHNDRztvQkFFN0NILEVBSU8saUNBTnNDRztvQkFFN0NILEVBS08saUNBUHNDRztvQkFFN0NILEVBTU8saUNBUnNDRztvQkFFN0NILEVBT08saUNBVHNDRztvQkFFN0NILEVBUU8saUNBVnNDRztvQkFFN0NILEVBU08saUNBWHNDRztvQkFFN0NILEVBVU8saUNBWnNDRztvQkFFN0NILEVBV1EsaUNBYnFDRztxQkFFN0NILEVBWVEsaUNBZHFDRztxQkFFN0NILEVBYVEsaUNBZnFDRztxQkFFN0NILEVBY1EsaUNBaEJxQ0c7cUJBRTdDSCxFQWVRLGlDQWpCcUNHO3FCQUU3Q0gsRUFnQlEsaUNBbEJxQ0c7cUJBRTdDSCxFQWlCUSxpQ0FuQnFDRztNQXNCakQsNkJBdEI4Q3FCLEdBRTFDeEI7TUFESixTQXNCRyxxQkFyQkNBO01BcUJELFlBQ0QsNkJBeEI0Q3dCLGdCQXdCbkI7SUF6RjNCLFNBNEZFZ0osbUJBQWlCaEksb0JBQW9CaEIsR0FBR3JCO01BQ3BDLDhCQURvQ0E7TUFDcEM7UUFJRixjQUxzQ0E7NENBQUhxQjs7ZUFHbkMsNkJBSG1DQTtlQU9uQywwQkFQZWdCLG9CQUFvQmhCLEdBQUdyQixFQU9VO0lBbkdwRCxTQTJHRXNLLGtCQUFnQmpKLEdBQUdyQjtNQUNmLDhCQURlQTtNQUNmO1FBSUY7O2VBTGlCQTs7O1FBTHJCO29CQVFJO01BRkU7T0FVTyxvQ0FYUUE7T0FhWix1QkFGRG1DLE9BWGFuQyxFQVdibUMsR0FHRyxpQ0FkVW5DO01BZ0JqQiw2QkFoQmNxQixHQVlWeEI7TUFYRixTQWdCQyxxQkFMQ0E7TUFLRCxZQUNELDZCQWxCWXdCLGdCQWtCYTtJQTdIL0IsU0FnSUVrSix1QkFBcUJsSSxvQkFBb0JoQixHQUFHckI7TUFDeEMsOEJBRHdDQTtNQUN4QztRQUlGOztlQUwwQ0E7OztlQW5NNUNKOztlQXNNRTtlQVFBLDBCQVhtQnlDLG9CQUFvQmhCLEdBQUdyQixFQVdNO0lBM0lwRCxTQWtMRXdLLFFBQU0zSCxNQUFNQyxNQUFNOUM7TUQxUHZCO1lDNFBVK0MsZUFBTEM7UUFDRSxXQUhJSCxNQUFZN0MsRUFFbEJnRDtrQkFBS0Q7OztnQkFQQUUsV0FBTEM7WUFDRSxXQUlVSixNQUFNOUM7WUFIaEIsV0FHSTZDLE1BQVk3QyxFQUxsQmtEO3NCQUFLRDs7VUFEQztNQU9BO0lBbkxSLFNBd0xFd0gsUUFBTXBKLElBQ1Isb0NBRFFBLE1BQ2M7SUF6THRCLFNBb09FcUosYUFBV3JKLEdBQUc0QjtNQUNoQiw2QkFEYTVCO01BRWIsUUF1QkVzSixVQXJFQUYsUUE0Q1dwSixHQUFHNEI7TUFFaEIsb0NBRmE1QixNQUdTO0lBdk90QixTQTBORXVKLGNBQVl2SixHQUFHNEI7TUFDakIsU0FBSUosTUFBTXhCO1lBQU9yQixXQUFISDtRQUNaLGVBRFF3QixHQUFJeEI7UUFFWiw2QkFGUXdCO1FBRVIsaUJBRlFBLEdBQU9yQjtNQUtqQiw2QkFOY3FCO01BT2QsUUFOSXdCLE1BbkNGNEgsUUFrQ1lwSixHQUFHNEI7TUFPakIsb0NBUGM1QixPQVFTO0lBbE92QixTQTZQRXNKLFVBbEVldEosR0FBSXJCO01BQ3JCLFVBRHFCQSxlQUVSLG9CQUZJcUI7ZUFBSXJCOzs7Z0NBc0JMLElBQUxpRCxFQXRCVWpELEtBc0JMLHFCQXRCQ3FCLEdBc0JONEI7VUFDSSxJQUFMRixJQXZCVy9DO1VBdUJOLG9CQXZCRXFCLEdBdUJQMEI7OEJBcEJLLElBQUxVLEVBSFd6RCxLQUdOLG9CQUhFcUIsR0FHUG9DO1FBUU0sSUFBTEksRUFYVTdEO1FBV0wscUJBWENxQixHQVdOd0M7MEJBTkcsSUFBTHhELEVBTFlMLEtBS1AsbUJBTEdxQixHQUtSaEI7TUFZUSxJQUFMUixFQWpCU0c7TUFpQkosc0JBakJBcUIsR0FpQkx4QixFQU1rQjtJQWxOOUIsU0ErUE1nTCxpQkF5Q1d4SixHQXpDUXJCO01BQ3pCLFVBRHlCQSxlQUVaLG9CQXVDSXFCO2VBekNRckI7Ozs7WUFzQlQ7ZUF0QlNBO2FBZ0N6Qjt1QkFBVXFCO29CQUFPckIsV0FBSEg7Z0JBQ1osZUFEUXdCLEdBQUl4QjtnQkFFWiw2QkFGUXdCO2dCQUVSLHdCQUZRQSxHQUFPckI7WUFLakIsNkJBSWlCcUI7WUFIakIsUUFOSXdCLE1BdkdGNEgsUUFnSGVwSixHQW5CTjRCO1lBZ0JYLG9DQUdpQjVCO1VBbEJGLElBQUwwQixJQXZCZS9DO1VBMEN6Qiw2QkFEaUJxQjtVQUVqQixRQTNDTXdKLGlCQXZFSkosUUFnSGVwSixHQWxCUDBCO1VBb0JWLG9DQUZpQjFCOzhCQXRDRixJQUFMb0MsRUFIZXpELEtBR1Ysb0JBc0NFcUIsR0F0Q1BvQztRQVFNLElBQUxJLEVBWGM3RDtRQVdULHlCQThCQ3FCLEdBOUJOd0M7MEJBTkcsSUFBTHhELEVBTGdCTCxLQUtYLG1CQW9DR3FCLEdBcENSaEI7TUFZUSxJQUFMUixFQWpCYUc7TUFpQlIsc0JBd0JBcUIsR0F4Qkx4QixFQU1zQjtJQXRSbEMsU0ErVEVpTCxZQUFZbkssU0FBeUJVLEdBQUdyQjtNQUMxQyxHQURjVyxJQUFNLFFBQU5BLFdBQU1DLGFBQU53RDtNQUNkLFFBRGdDLGtCQUFORSxJQUFNRCxlQUFOQztNQUMxQixHQUQwQkEsSUFFeEIsaUJBRnFDakQsR0FBR3JCLFFBSXhDLFVBSnFDcUIsR0FBR3JCO01BSXpCLG9DQUpzQnFCLEdBQXpCK0MsSUFLVTtJQXBVeEIsU0FzVUUyRyxZQUFXaEwsSUFBTVksU0FBd0IyRCxJQUFJdEU7TUFDL0MsR0FEbUJXLElBQU0sUUFBTkEsV0FBTUMsYUFBTjREO01BQ25CLFFBRHNDLGtCQUFOSixJQUFNQyxlQUFORDtNQUNoQyxHQURhckU7UUFLTCxJQURHc0IsR0FKRXRCLE9BS0wsNEJBREdzQixJQUNILElBSkpvRCxLQUdPcEQ7O1dBSFBvRCxLQUVVLDRCQUhLRDtNQVFuQixlQVJnQ0osS0FBV0UsSUFDdkNHLEtBRDJDekU7TUFTdkMsSUFBSkgsRUFBSSw0QkFSSjRFO01BU0osNEJBVElBO01BU0osT0FESTVFLENBRUg7SUFqVkQsU0FtVkVtTCxhQUFZakwsSUFBTVksU0FBdUIyRCxJQUFJSyxHQUFHM0U7TUFDbEQsR0FEb0JXLElBQUksUUFBSkEsV0FBSUMsYUFBSjREO01BQ3BCLFFBRHNDLGtCQUFOSixJQUFNQyxlQUFORDtNQUNoQyxHQURjckU7UUFJRyxJQUFOc0IsR0FKR3RCLE9BSUcsNEJBQU5zQixJQUFNLElBSGJvRCxLQUdPcEQ7O1dBSFBvRCxLQUVVLDRCQUhNRDtNQU1wQixlQU5nQ0osS0FBV0UsSUFDdkNHLEtBRDhDekU7TUFPbEQsNkJBUCtDMkUsR0FDM0NGO01BTUosbUNBTklBLEtBT1c7SUEzVmYsU0E2VkV3RyxZQUFXbEwsSUFBTVksU0FBdUIyRCxJQUFJTyxJQUFJN0U7TUFDbEQsR0FEbUJXLElBQUksUUFBSkEsV0FBSUMsYUFBSjREO01BQ25CLFFBRHFDLGtCQUFOSixJQUFNQyxlQUFORDtNQUMvQixHQURhckU7UUFJSSxJQUFOc0IsR0FKRXRCLE9BSUksNEJBQU5zQixJQUFNLElBSGJvRCxLQUdPcEQ7O1dBSFBvRCxLQUVVLDRCQUhLRDtNQU1uQixlQU4rQkosS0FBV0UsSUFDdENHLEtBRDhDekU7TUFPaEIscUNBTjlCeUU7TUFNSjtRQUFXLHVCQVBtQ0k7O1FBT25DLDRCQU5QSjs7O01BTUosbUNBTklBLEtBT1c7SUFyV2YsU0F1V0V5RyxVQUFTMUcsSUFBS0YsSUFBTTNELElBQVlvRSxLQUFLL0U7TUFDdkMsR0FEc0JXLElBQU0sUUFBTkEsV0FBTUMsYUFBTndEO01BQ2IsSUFBTE8sR0FBSyxzQkFEeUJJO01BQ3pCO1FBRVAsZUFIU1AsT0FBV0osS0FBTkUsSUFDWkssR0FEbUMzRTtRQUlyQywrQkFIRTJFO1FBS0Y7WUFER0ssOEJBQ0gsc0JBTEVMLElBS0YsTUFER0ssRUFFSTtJQTlXVCxTQWdYRW1HLGdCQUFnQnhLLElBQWEyRCxJQUFJakQsR0FBRzZEO01BQ3RDLEdBRGtCdkUsSUFBTSxRQUFOQSxXQUFNQyxhQUFOd0Q7TUFDbEIsWUFEa0JBO01BQ1Qsb0JEemJaLE9DdVlLMEcsaUJBaUQ2QnhHLElBQUlqRDtNQUMxQixxQ0FENkI2RCxHQUNGO0lBalhwQyxTQW1YRWtHLGdCQUFlckwsSUFBTVksU0FBMEIyRCxJQUFJWTtNQUNyRCxHQUR1QnZFLElBQU0sUUFBTkEsV0FBTUMsYUFBTjREO01BQ3ZCLFFBRDBDLGtCQUFOSixJQUFNQyxlQUFORDtNQUNwQyxHQURpQnJFO1FBS1QsSUFER3NCLEdBSk10QixPQUtULDRCQURHc0IsSUFDSCxJQUpKb0QsS0FHT3BEOztXQUhQb0QsS0FFVSw0QkFIU0Q7TUFRdkIsbUJBUm9DSixLQUFhRSxJQUM3Q0csS0FEaURTO01BUzdDLElBQUpyRixFQUFJLDRCQVJKNEU7TUFTSiw0QkFUSUE7TUFTSixPQURJNUUsQ0FFSDtJQTlYRCxTQWdZRXdMLGlCQUFnQnRMLElBQU1ZLFNBQXlCMkQsSUFBSUssR0FBR1U7TUFDeEQsR0FEd0IxRSxJQUFJLFFBQUpBLFdBQUlDLGFBQUo0RDtNQUN4QixRQUQwQyxrQkFBTkosSUFBTUMsZUFBTkQ7TUFDcEMsR0FEa0JyRTtRQUlELElBQU5zQixHQUpPdEIsT0FJRCw0QkFBTnNCLElBQU0sSUFIYm9ELEtBR09wRDs7V0FIUG9ELEtBRVUsNEJBSFVEO01BR08sY0FHakJjO1FBQ1osZUFQa0NsQixLQUFhRSxJQUM3Q0csS0FLVWE7UUFFWiw2QkFSbURYLEdBQ2pERjtRQU9GLG1DQVBFQSxLQVFjO01BTmEscUNBSHlCWSxJQVVuRDtJQTFZTCxTQTRZRWlHLGNBQWE5RyxJQUFNN0QsSUFBYTJELElBQUlTLEtBQUtHO01BQzNDLEdBRHFCdkUsSUFBTSxRQUFOQSxXQUFNQyxhQUFOd0Q7TUFDWixJQUFMTyxHQUFLLHNCQUQ2Qkk7TUFDN0I7UUFFUCxtQkFIYVAsT0FBTUosS0FBYUUsSUFDOUJLLEdBRHVDTztRQUl6QywrQkFIRVA7UUFLRjtZQURHSyw4QkFDSCxzQkFMRUwsSUFLRixNQURHSyxFQUVJO0lBblpULFNBc1pNdUcsT0FpQkp2TDtNQWpCVyxVQWlCWEE7OztVQVpFLE1BWUZBLEtBWmtCLGdDQUxkdUwsT0FJRXRJO1VBQ0U7O1VBSE47ZUFlRmpEO1dBZkU7NEJBQStCLDBCQUFtQixVQUFiMEYsRUFBYSxPQUFWRCxHQUFrQjtXQUF6QyxxQ0FEWjFDO1dBQ0c7OztjQUNpQjtpREFBTTRDLEVBQU9sQyxFQUE0QjtVQUEzRCxvREFESEM7TUFlRCxPQUFMMUQsQ0FBTTtJQXZhUixTQXpDRXdMLFVBQVF2RixJQUFJNEMsSUFBSWhFLElBQUk1QjtNQUN0QixTQUFJNkYsT0FBT2pFO1FBQVMscUNBQVRBLFNBRERvQixJQUN1QztNQUFqRCx3Q0FBSTZDLFFBRFVELElBQUloRSxJQUFJNUIsRUFFZ0I7SUF1Q3RDLFNBckNFd0ksVUFBU3pMO01BQ1gsVUFEV0E7Ozs7Ozs7Ozs7OztvQkFpQmU7TUFKRixRQUlPO0lBb0IvQixTQUNNMEwsU0FBUXpDLFdBbUZDM0UsSUFuRmVPLElBQXVCN0U7TUFDckQsVUFEcURBO09BRXhDLG9DQUZpQjZFO2VBQXVCN0U7Ozs7OztjQTBDakQsT0ExQ1VpSixXQTBDYSw4QkExQ0dwRTtjQTJDNEI7O3lCQXdDdkNBO3NCQUFXN0UsV0FBTnVHO2tCQUMwQztvQkQ3SnJFLE9DeUVTbUYsY0FtRlNwSDtrQkFDc0IsaUNBRGJpQztrQkFDYSxxQ0FEbEIxQixtQkFBVzdFO2VBeENlO29DRHBIaEQsT0MrQkt3TDtjQXFGRSw4QkEzQzBCM0c7Y0EyQzRCLGFBM0M1Q29FO2NBMkNWLFlBQ3VCLDhCQTVDR3BFO1lBd0NiLG9DQXhDYUE7bUJBQXVCN0U7O1lBNkJqRCxPQTdCVWlKLFdBNkJhLDhCQTdCR3BFO2VBbEI5QiwyQkFwQkU0RztjQXNFSTs7ZUFDZSx5QkQxR3hCLE9DeUVTQyxjQW1GU3BIO2VBbERQO29DRDFHWCxPQytCS2tIO2NBMEVJLDhCQWhDd0IzRzs7Y0FxQ3hCOztlQUNlLHlCRC9HeEIsT0N5RVM2RyxjQW1GU3BIO2VBN0NQO29DRC9HWCxPQytCS2tIO2NBK0VJLDhCQXJDd0IzRztZQXNDd0IsYUF0Q3hDb0U7WUFzQ3dDLFlBQzNCLDhCQXZDR3BFO1VBMkJkLG9DQTNCY0E7O1VBR2YsSUFBTHdCLElBSDJDckcsS0FHdEMsb0NBSGU2RSxJQUdwQndCO1FBTUosSUFES0csSUFSMEN4RztRQVMvQyxHQTBFU3NFO1VBMEROLElBQUxHLEtBQUs7VUFDVCxrQkFESUEsS0FySU8rQjtVQXFJRixJQXBJQzNHLEVBcUlWLDRCQURJNEU7O1VBeENLLElBQUxwRCxHQUFLO1VBQ1QsY0FESUEsR0E3Rk9tRjtVQTZGRixJQTVGQzNHLEVBNkZWLDRCQURJd0I7UUExRitCLG9DQVhMd0QsSUFTcEJoRjs7UUFKSSxRQUx1Q0csS0F5QnJELDJCQXBCU3lHOzRDQUxxQjVCO01BZ0JiLFFBaEJvQzdFLEtBZ0JULDZCQUFoQzJEO01BQWdDLG9DQWhCZGtCLFNBNENxQjtJQTdDbkQsU0F1RkU4RyxLQUFLaEwsSUFBYWtFLElBQUk3RTtNQUN4QixHQURPVyxJQUFNLFFBQU5BLFdBQU1DLGFBQU4wRDtNQUNQO01BQWlDLHlCRGhLcEMsT0N5RVNvSCxjQXNGQ3BIO01BQzBCLHFDQURiTyxjQUFJN0UsRUFDK0M7SUF4RnZFLFNBdkVNNEwsS0FBRzdGO01ERFo7T0NHYyxvQ0FGRkE7Ozs7O2dCQTJDQUM7WUFDUCw4QkE1Q09EO1lBNkNQLDhCQTdDT0E7WUE2Q1A7Ozt1QkFFT0U7Z0JBQUw7bUJBQUtBLElBRUQsOEJBakRDRjtnQkFrREQsOEJBbERDQTtnQkFtREQsOEJBbkRDQSxTQStDS0k7Z0JBS04sOEJBcERDSjtnQkFxREQsS0FyRENBLElBK0NVRztnQkFPWCw4QkF0RENIO2dCQXNERCxRQUNLO1lBVEoscUNBSEFDO1lBYVAsOEJBeERPRDtZQXdEUCxxQ0F4RE9BO2NBMERESztVQUNOLDhCQTNET0w7VUE0RFAsOEJBNURPQTtVQTREUDs7O3FCQUVPRSxJQUFJakc7Y0FDUCxHQURHaUcsSUFFRCw4QkFoRUNGO2NBaUVELEtBakVDQSxJQThESS9GO2NBR0wsUUFDSTtVQUxILHFDQUhEb0c7VUFTTiw4QkFuRU9MO1VBbUVQLHFDQW5FT0E7O2NBR0QvRjtVQUNOLDhCQUpPK0Y7VUFLUCw4QkFMT0EsU0FHRC9GO1VBRU4scUNBTE8rRjtZQW9CQU07UUFDUCw4QkFyQk9OO1FBc0JQLDhCQXRCT0EsU0FvQkFNO1FBRVAscUNBdEJPTjs7WUFRRlM7UUFDTCw4QkFUT1Q7UUFVUCw4QkFWT0EsU0FRRlM7UUFFTCxxQ0FWT1Q7VUFnQ0NVO01BQ1IsOEJBakNPVjtNQWtDUCw4QkFsQ09BLFNBZ0NDVTtNQUVSLHFDQWxDT1Y7SUF1RVQsU0EyQkU4RixPQUFLN0wsR0FDUCwwQ0FuR000TCxLQWtHQzVMLEVBQ2tCO0lBNUJ6QixTQThCTThMLFFBQU1uRyxFQUFFbEM7TUFDZCxVQURZa0M7NENBQUVsQyxFQUVJOztpQkFGTmtDOzs7c0JBQUVsQztrQkFHR3dELElBSEh4RCxLQUdOdUQsSUFISXJCLEtBR1Usa0JBQWRxQixJQUFTQzs7O3VCQUhIeEQ7bUJBcUNNMkQsR0FyQ04zRCxLQXFDSnVDLEdBckNFTDs7aUJBc0NELElBQ0w4QixPQURLLDJCQXRDTHFFLFFBcUNJOUYsR0FBVW9CO2lCQUVKLE9BQVZLOzs7MENBR0E7aUJBSFU7Ozs7Ozs7cUJBdkNGaEU7Ozs7Ozs7Y0F3QkQ7ZUFGUzhELEtBdEJSOUQ7ZUFzQkgyQyxLQXRCQ1Q7ZUF1QkowQjs7a0JBQWU7cURBQUtDLE1BQVNuQixJQUFtQztlQUMzRCxnQ0FETGtCLGFBREdqQjtlQUdFLGdDQUZMaUIsYUFEY0U7Y0FHVDtnQkFDRjs7O29CQUFjOzs7OztxQkFDYix3QkFEbUJELE1BQWFuQjtvQkFDaEMsYUFFSSxRQUhvQnFCLFFBQWN0QixRQUdmO2lCQUh4Qix5Q0FGSHlCLEtBQ0FEO2dCQUtRLE9BQVZPOzs7eUNBR0E7Z0JBSFU7OztxQkE5QkZ4RTtpQkFpQlN5RCxJQWpCVHpELEtBaUJGMEQsSUFqQkF4QixLQWlCZ0Isa0JBQWhCd0IsSUFBV0Q7OztzQkFqQlR6RDtrQkFLQ21FLElBTERuRSxLQUtQb0UsSUFMS2xDLEtBS1Esa0JBQWJrQyxJQUFRRDs7O3lDQUxEbkU7aUJBV09zRSxJQVhQdEUsS0FXSHVFLElBWENyQyxLQVdjLGtCQUFmcUMsSUFBVUQ7TUEwQ1osUUFBSztJQW5GZCxTQXRFRWdFLGVBQWN6SCxJQUFJTyxJQUFJN0UsR0FDeEIsWUFEZ0JzRSxJQUFJTyxJQUFJN0UsRUFDSjtJQXFFcEIsU0FuRUVnTSxtQkFBa0IxSCxJQUFJdEU7TUE4SkgseUJEbkt4QixPQytKSzJMLEtBMUprQnJIO01BOEpDLCtDQTlKR3RFLEVBQ0Q7SUFrRXZCLFNBaEVFaU0sb0JBQW1CM0gsSUFBSUssR0FBRzNFO01BOEpsQixJQUFOK0YsSUFBTSw4QkE5SmVwQjtNQStKQyx5QkR2SzdCLE9DK0pLZ0gsS0F2Sm1Cckg7TUErSksscUNBRHRCeUIsY0E5SndCL0YsRUFDRDtJQStEM0I7Ozs7OzthQWpDSWtNLE1BQUl4SztNQUNOLFNBRE1BOzswQkFHVSxRQUhWQTs7d0JBSVUsUUFKVkE7OytCQUVVLE9BRlZBO01BS0csNkJBQVk7SUE0QnZCLFNBMUJJeUssYUFBYUMsTUFBTTNHLEVBQUU0RztNQUN2QjtZQUR1QkE7T0FDdkIsSUFEcUI1RztPQUNyQixPQUFJNkcsT0FEbUJELGlCQUVuQkU7T0FFTywyQkFEUEMsTUFGQUYsT0FEbUJELGlCQUVuQkU7T0FFTyxLQUpVOUc7TUFJVjtPQUtILGNBSkppSCxVQUlJLGlDQURHN007O1dBSFA2TTtNQUpKO09BVUE7UUFSSUYsU0FDQUM7VUFTQSxpQ0FWQUQ7VUFZQSxpQ0FaQUEsYUFDQUM7T0FhTSxxQ0FaTkMsVUFMaUJqSCxLQVdqQmtILE1BWFdQO01BaUJMLGtCQUFOUSxJQUNVO0lBUWhCLFNBTElDLFlBQVlULE1BQU0zRyxFQUFFNEc7TUFFSywyQkFGTEE7TUFFcEI7Z0RBRllELFlBQU0zRyxFQUFFNEcsT0FHWjtJQUVaLElBQUlTLDZCQUEwQiw2QkFBWTtJQUExQyxTQUVJQyxXQUFXWCxNQUFNM0csRUFBRTRHO01BQ1Y7OEJBRFVBO09BRUosc0JBSmZTLGFBRW1CVDtNQUluQjtnREFKV0QsTUFDVFksS0FDQUM7ZUFGZXhIO2VBQUU0RyxPQUtYO0lBUFo7O0tBU0lhOztLQUNBQzs7YUFJQUMscUJBQXFCZjtNQUN2QjthQUR1QkE7T0FDdkIsS0FEdUJBO09BQ3ZCLEVBRHVCQTtPQUN2QjtZQUNJakw7TUFESixhQUFJRDtZQUlKZCxFQUpJYztRQUtGO2FBVkFnTSxTQVFFaE4sS0FHQTtVQUVlLFNBQUksZUFObkJOLEVBRUpRO1VBSW1CLGFBTGZGO1VBS2UsU0FKbkJFOzs7TUFNQSxRQVBJRixLQVVGLE9BVkVBO01BUUYsa0JBRUU7YUFhRmtOLHFCQUFxQmhCO01BQ3ZCO2FBRHVCQTtPQUN2QixLQUR1QkE7T0FDdkIsRUFEdUJBO09BQ3ZCO1lBQ0lqTDtNQURKLGFBQUlEO1lBSUpkLEVBSkljO1FBS0Y7YUFGRWhCLFFBcENGK00sTUF1Q0U7VUFFZSxTQUFJLGVBTm5Cck4sRUFFSlE7VUFJbUIsYUFMZkY7VUFLZSxTQUpuQkU7OztNQU1BLE9BUElGLEtBUUY7TUFFQSxPQVZFQSxJQVVBO2FBaUJGbU4sUUFBUTdILEVBQUU0RztNQUNaLE9BRFU1RyxhQUNWLE9BRFk0RywwQkFDWixRQUNpRDthQUUvQ2tCLFdBQVd4TixJQUFJc007TUFDakIsSUFBSTdILElBRGE2SDtNQUNqQixvQ0FEYXRNLElBQUlzTSxvQkFDYjdILElBQzhEO2FBMDJCOURnSixvQkFBVS9ILEVBQUU0RztNQUNqQjs7O2VBQ0NvQixrQ0FGY2hJLEVBQUU0RztvQ0FFaEJvQiwyQkFGY2hJLEVBQUU0RyxhQUNtQjthQUNuQ29CLGdDQUEwQmhJLEVBQUU0RyxPQUFPcUI7TURsZ0N4QyxJQ2tnQ3dDQztNQUNyQztRQUFNO1NBRCtCQztVQUMvQixnQkFsMkJKbk8saUJBaTJCbUNrTyxrQkFBUHRCO1FBQ3hCLFFBRCtCdUI7VUFxTWQsV0FyTU92QjtjQUFPc0I7OztpQkF0MEJ2QjtpQkFDQTtpQkFDQTtpQkFDQTtpQkFPQTtpQkFPQTs7V0FTSSw0QkE0eUJVbEk7V0EzeUJGLHFDQTJ5QkVBLEVBQUU0Rzs7V0ExNUIxQjthQUFTLHlDQTA1QmlCQTs7OztjQXA1QnhCLG9DQW81QnNCNUcsRUFBRTRHO2FBMzZCNUI7O1dBNENFO2FBQVMseUNBKzNCaUJBOzs7O2NBejNCeEIsc0NBeTNCc0I1RyxFQUFFNEc7YUFoNUI1Qjs7V0E4R3VEOzt3Q0FBZixrQkFreUJaQTs7V0E1eEJmLElBQU15QjtXQUFOO2FBRUksV0EweEJTckksRUFBRTRHO2FBenhCWCxnQkF5eEJXQTthQXh4Qk0sSUFBYjRCLFdBQWEsV0F3eEJSeEksRUFBRTRHO2FBdnhCWCxXQXV4QlM1RyxFQUFFNEc7YUF0eEJYLFdBc3hCUzVHLEVBQUU0RzthQXJ4QlgsV0FxeEJTNUcsRUFBRTRHO2FBeHhCTSxTQUpmeUI7YUFRa0IsZUFKaEJHLFdBSWdCLFVBb3hCWHhJLEVBQUU0Rzs7ZUFseEJULFdBa3hCTzVHLEVBQUU0RztlQWp4QlQsZ0JBaXhCTzVHLEVBQUU0RztlQWh4QlQsV0FneEJPNUcsRUFBRTRHO2VBL3dCUSxJQUFiaUMsYUFBYSxXQSt3QlY3SSxFQUFFNEc7ZUE5d0JULFdBOHdCTzVHLEVBQUU0RztlQTd3QlQsV0E2d0JPNUcsRUFBRTRHO2VBNXdCVCxXQTR3Qk81RyxFQUFFNEc7ZUEvd0JRLFNBYmpCeUI7ZUFpQm9CLGVBSmhCUSxhQUlnQixVQTJ3QmI3SSxFQUFFNEc7Ozs7O2NBdndCSiw4Q0FyQkx5QjthQXdCTjs7ZUFBTVM7V0FBTjthQUVJLFdBa3dCUzlJLEVBQUU0RzthQWp3QlgsZUFpd0JXQTthQWp3QlgsU0FIRWtDO2FBSUssd0JBZ3dCRTlJLEVBQUU0Rzs7ZUE5dkJULFdBOHZCTzVHLEVBQUU0RztlQTd2QlQsZUE2dkJPNUcsRUFBRTRHO2VBNXZCVCxXQTR2Qk81RyxFQUFFNEc7ZUE1dkJULFNBUkFrQztlQVNPLHdCQTJ2QkE5SSxFQUFFNEc7Ozs7O2NBdnZCTCw4Q0FiSmtDO2FBZ0JOO3NEQW92QmE5SSxFQUFFNEc7a0JBL3RCZixzQ0ErdEJhNUcsRUFBRTRHOztXQXB0QmY7O29CQWt0QlRtQixzQkFFc0IvSCxFQUFFNEc7eUNBRnhCbUIsZUFFc0IvSCxFQUFFNEc7O1dBbnRCYixlQW10Qlc1RyxFQUFFNEc7V0FudEJiOztvQkFpdEJYbUIsc0JBRXNCL0gsRUFBRTRHO3lDQUZ4Qm1CLGVBRXNCL0gsRUFBRTRHOztXQWx0QmIsUUFrdEJXNUcsRUFBRTRHO1dBbHRCYjs7b0JBZ3RCWG1CLHNCQUVzQi9ILEVBQUU0Rzt5Q0FGeEJtQixlQUVzQi9ILEVBQUU0Rzs7V0FqdEJmOztvQkErc0JUbUIsc0JBRXNCL0gsRUFBRTRHO3lDQUZ4Qm1CLGVBRXNCL0gsRUFBRTRHO2tCQWh0QmYsZ0RBZ3RCYTVHLEVBQUU0RztrQkEvc0JmLHNDQStzQmE1RyxFQUFFNEcsU0FzTTBCO2FBeE1sRCtCLFVBQVUzSSxFQUFFNEc7TURoZ0NyQix1QkNnZ0NTbUIsY0FBVS9ILEVBQUU0RzthQTBNaEJ3QixnQkFFOEJwSSxFQUFFNEc7TUQ1c0NyQztNQzJzQ0k7WUFDd0NxQjtRQUN6QztVQUFNO1dBRG1DQztZQUNuQyxnQkE1aUNKbE8saUJBMmlDdUNpTyxnQkFBUHJCO1VBQzVCLE9BRG1Dc0I7WUF3QmxCLFdBeEJXdEI7Z0JBQU9xQjs7O21CQXI1QnpCLG1DQXE1QmdCakk7bUJBcDVCZCxvQkFvNUJjQSxFQUFFNEc7bUJBbDVCaEIsV0FrNUJjNUcsS0FBRTRHOzthQWg1QmxCLGtEQWc1QmdCNUcsRUFBRTRHLFVBRFE7YUE0QnhDdUMsV0FFMkJuSixFQUZkNUIsRUFFa0J3STtNRHp1Q3BDO01Dd3VDSTtZQUN1Q3FCO1FBQ3hDO1VBQU07V0FEa0NDO1lBQ2xDLGdCQXprQ0psTyxpQkF3a0NzQ2lPLGdCQUFQckI7VUFDM0IsT0FEa0NzQjtZQXlCakIsV0F6QlV0QjtnQkFBT3FCOzs7O2FBMTZCeEIsTUEwNkJhakksS0F6NkJhLGlDQURwQmhDO2FBQ0Ysa0JBdTZCTEksRUF2NkJLLDRCQURFSjttQkFFSixvQkF3NkJXZ0MsRUFBSTRHO21CQXQ2QmYsV0FzNkJXNUcsS0FBSTRHOzthQXA2QmpCLGtEQW82QmE1RyxFQUFJNEcsVUFEUTthQTZCdkNzQyxvQkFzRnNDbEosRUFBSTRHO01EMzFDL0MsSUN1d0NrRHFCO01BQy9DO1FBQU07U0FEeUNDO1VBQ3pDLGdCQXZtQ0psTyxpQkFzbUM2Q2lPLGdCQW9GSHJCO1FBbkZ0QyxPQUR5Q3NCO1VBK0V4QixXQUtxQnRCO2NBcEZHcUI7Ozs7V0FPL0MsSUFwOEJTaE0sRUFvOEJULDJCQTZFNEMySztXQTdFNUMsb0NBNkV3QzVHLEtBamhDL0IvRDtpQkFDRixvQ0FnaENpQytEO2lCQS9nQ2pDLG9DQStnQ2lDQTtpQkE5Z0NqQyxvQ0E4Z0NpQ0E7aUJBN2dDakMsb0NBNmdDaUNBO2lCQTVnQ2pDLG9DQTRnQ2lDQTs7V0ExQ3hDO3lDQTBDNEM0RztZQXJDNUMsNkJBcUM0Q0E7WUFoQzVDLCtCQWdDNENBO1lBM0I1Qyw2QkEyQjRDQTtZQXpnQ3NCLFdBRm5CdEs7WUFFRSxXQUZiOE07WUFFTCxXQUZOcEw7WUFFYixRQUZFa0M7dUJBMmdDNEIzRjtpQkFBUzROO2FBQ25EO2VBQU07Z0JBRDZDa0I7aUJBQzdDLGdCQTNyQ0pyUCxpQkEwckNpRG1PLGtCQUFQdkI7ZUFDdEMsT0FENkN5QztpQkE4QzVCLFdBOUNxQnpDO3FCQUFPdUI7Ozs7a0JBT25EO2tEQVA0Q3ZCO21CQVk1QywrQkFaNENBO21CQWlCNUMsK0JBakI0Q0E7bUJBc0I1QywrQkF0QjRDQTttQkE1L0JzQixXQUZqQjJDO21CQUVBLFdBRlhEO21CQUVQLFdBRko5SDttQkFFZixRQUZJRDs4QkFDSDlEO21CQUlGLDhCQXkvQjZCdUMsS0FBRXpGLEVBNy9CN0JrRDtrQkFNRixpREF1L0I2QnVDLEVBQUk0Rzs7a0JBcC9CckMsaURBby9CaUM1RyxFQUFJNEc7O2tCQWwvQnJDLGtEQWsvQmlDNUcsRUFBSTRHO1dBcGdDakMsb0JBb2dDNkI1RyxLQUFFekY7aUJBbGdDbkMsOENBa2dDaUN5RixFQUFJNEc7a0JBamdDckMsa0RBaWdDaUM1RyxFQUFJNEcsU0FyRkk7YUFzSTlDNEMsaUJBRWlDeEosRUFBRTRHO01EOTRDeEMsSUM4NEMrQ3FCO01BQzVDO1FBQU07U0FEc0NDO1VBQ3RDLGdCQTl1Q0psTyxpQkE2dUMwQ2lPLGdCQUFQckI7UUFDL0IsT0FEc0NzQjtVQXNCckIsV0F0QmN0QjtjQUFPcUI7Ozs7V0FoaUNyQyxRQWdpQzhCckIsMEJBL2hDcEIsb0JBREo3SDtXQUVKLGVBREkzRTtXQUVKLDRCQTZoQzRCd00sb0JBL2hDeEJ4TSxJQURBMkU7V0FHSixrQ0FGSTNFO2lCQUtOLDZDQTBoQzRCNEYsRUFBRTRHO2tCQXpoQzlCLGtEQXloQzRCNUcsRUFBRTRHLFNBRFE7YUEwQjNDNkMsZUFFK0J6SixFQUFFNEc7TUR6NkN0QyxJQ3k2QzZDcUI7TUFDMUM7UUFBTTtTQURvQ0M7VUFDcEMsZ0JBendDSmxPLGlCQXd3Q3dDaU8sZ0JBQVByQjtRQUM3QixPQURvQ3NCO1VBeUJuQixXQXpCWXRCO2NBQU9xQjs7OztXQWpqQ3pCLElBQUoxTixFQUFJLFVBaWpDZ0J5RixFQUFFNEc7V0FoakMxQixXQWdqQ3dCNUcsRUFBRTRHO1dBL2lDMUIsUUEraUN3QjVHLEVBQUU0RztXQS9pQzFCLFVBRklyTTtpQkFJTjtpQkFDQSw0Q0E0aUMwQnlGLEVBQUU0RztrQkEzaUM1QixrREEyaUMwQjVHLEVBQUU0RyxTQURTO2FBNkIxQytDLFFBRXdCM0osRUFBRTRHO01EdjhDL0IsSUN1OENzQ3FCO01BQ25DO1FBQU07U0FENkJDO1VBQzdCLGdCQXZ5Q0psTyxpQkFzeUNpQ2lPLGdCQUFQckI7UUFDdEIsT0FENkJzQjtVQWlCWixXQWpCS3RCO2NBQU9xQjs7O2lCQXRrQ3hCO2lCQUNBLHlDQXFrQ2VqSSxFQUFFNEc7a0JBcGtDakIsa0RBb2tDZTVHLEVBQUU0RyxTQURTO2FBcUJuQzhDLFFBRXdCMUosRUFBRTRHO01ENzlDL0IsSUM2OUNzQ3FCO01BQ25DO1FBQU07U0FENkJDO1VBQzdCLGdCQTd6Q0psTyxpQkE0ekNpQ2lPLGdCQUFQckI7UUFDdEIsT0FENkJzQjtVQWlCWixXQWpCS3RCO2NBQU9xQjs7O2lCQXZsQzVCO2lCQUNBLDJDQXNsQ21CakksRUFBRTRHO2tCQXJsQ3JCLGtEQXFsQ21CNUcsRUFBRTRHLFNBRFM7YUFxQm5DZ0QsV0FFMkI1SixFQUFFNEc7TURuL0NsQyxJQ20vQ3lDcUI7TUFDdEM7UUFBTTtTQURnQ0M7VUFDaEMsZ0JBbjFDSmxPLGlCQWsxQ29DaU8sZ0JBQVByQjtRQUN6QixPQURnQ3NCO1VBaUJmLFdBakJRdEI7Y0FBT3FCOzs7aUJBeG1DL0I7aUJBQ0EsMkNBdW1Dc0JqSSxFQUFFNEc7a0JBdG1DeEIsa0RBc21Dc0I1RyxFQUFFNEcsU0FEUzthQXFCdENpRCxrQkFFa0M3SixFQUFFNEc7TUR6Z0R6QyxJQ3lnRGdEcUI7TUFDN0M7UUFBTTtTQUR1Q0M7VUFDdkMsZ0JBejJDSmxPLGlCQXcyQzJDaU8sZ0JBQVByQjtRQUNoQyxPQUR1Q3NCO1VBNEJ0QixXQTVCZXRCO2NBQU9xQjs7O2lCQXpuQ2xDO2lCQUNFLDRCQXduQ3VCakksTUF4bkN2QjtpQkFFRjtpQkFDQSw4Q0FxbkN5QkEsRUFBRTRHO2tCQXBuQzNCLGtEQW9uQ3lCNUcsRUFBRTRHLFNBRFM7YUFnQzdDcUMsZUFBZWpKLEVBQUU0RztNRHhpRHRCO01DeWlESTtZQUN5Q3FCO1FBQzFDO1VBQU07V0FEb0NDO1lBQ3BDLGdCQTE0Q0psTyxpQkF5NEN3Q2lPLGdCQUZ2QnJCO1VBR2IsT0FEb0NzQjtZQXNCbkIsV0F4Qkp0QjtnQkFFdUJxQjs7O21CQWxwQ25DO21CQUNBLDJDQStvQ1VqSSxFQUFFNEc7bUJBOW9DVixRQThvQ1E1RyxFQUFFNEc7aUNBQ3lCO2FBMEIxQ2tELFNBRXlCbEQ7TURya0Q5QixJQ3FrRHFDcUI7TUFDbEM7UUFBTTtTQUQ0QkM7VUFDNUIsZ0JBcjZDSmxPLGlCQW82Q2dDaU8sZ0JBQVByQjtRQUNyQixTQUQ0QnNCLGtCQWxxQ3RCO2lCQWtxQ3NCQSxrQkFqcUN0QjtRQTZxQ1csV0FaSXRCO1FBQ3JCLElBRDRCcUI7aUJBREU7YUFnQmxDSyxXQUFXdEksRUFBRTRHO01EcGxEbEI7TUNxbERJO1lBQ3FDcUI7UUFDdEM7VUFBTTtXQURnQ0M7WUFDaEMsZ0JBdDdDSmxPLGlCQXE3Q29DaU8sZ0JBRnZCckI7VUFHVCxPQURnQ3NCO1lBMkJmLFdBN0JSdEI7Z0JBRXVCcUI7OzttQkEvcUNULFFBNnFDaEJqSSxFQUFFNEc7bUJBNXFDYyxlQTRxQ2hCNUcsRUFBRTRHO21CQTNxQ2MsUUEycUNoQjVHLEVBQUU0Rzs7b0JBenFDWSxXQTBxQ2E7YUErQnRDbUQsVUFFMEIvSixFQUFFNEc7TUR0bkRqQyxJQ3NuRHdDcUI7TUFDckM7UUFBTTtTQUQrQkM7VUFDL0IsZ0JBdDlDSmxPLGlCQXE5Q21DaU8sZ0JBQVByQjtRQUN4QixPQUQrQnNCO1VBaUJkLFdBakJPdEI7Y0FBT3FCOzs7aUJBeHNDekI7aUJBQ0EsOENBdXNDZ0JqSSxFQUFFNEc7a0JBdHNDbEIsbURBc3NDZ0I1RyxFQUFFNEcsU0FEUzthQXFCckNvRCxzQkFBc0JoSyxFQUVrQjRHO01ENW9EN0MsSUM0b0RvRHFCO01BQ2pEO1FBQU07U0FEMkNDO1VBQzNDLGdCQTUrQ0psTyxpQkEyK0MrQ2lPLGdCQUFQckI7UUFDcEMsU0FEMkNzQixrQkF6dENyQztpQkF5dENxQ0Esa0JBeHRDckM7UUFvdUNXLFdBWm1CdEI7UUFDcEMsSUFEMkNxQjtpQkFERTthQWdCakRnQyxVQUUwQmpLLEVBQUU0RztNRDdwRGpDLElDNnBEd0NxQjtNQUNyQztRQUFNO1NBRCtCQztVQUMvQixnQkE3L0NKbE8saUJBNC9DbUNpTyxnQkFBUHJCO1FBQ3hCLE9BRCtCc0I7VUFnQ2QsV0FoQ090QjtjQUFPcUI7OztpQkF0dUN2QjtpQkFDQTtpQkFHQTtpQkFDQTtpQkFFQSxpREErdENjakksRUFBRTRHO2tCQTl0Q2hCLG1EQTh0Q2M1RyxFQUFFNEcsU0FEUzthQXNDckNzRCx1QkFBeUJsSyxFQUFFNEcsT0FBT3FCO01EbHNEdkMsSUNrc0R1Q0M7TUFDcEM7UUFBTTtTQUQ4QkM7VUFDOUIsZ0JBbGlESm5PLGlCQWlpRGtDa08sa0JBQVB0QjtRQUN2QixPQUQ4QnVCO1VBNENiLFdBNUNNdkI7Y0FBT3NCOzs7O1dBaHdDYjthQUFNLDhCQWd3Q0F0Qjs7OztjQTl2Q0Ysc0NBOHZDQTVHLEVBQUU0RzthQTd2Q047OzthQUFNLDhCQTZ2Q0FBOzs7O2NBM3ZDRixzQ0EydkNBNUcsRUFBRTRHO2FBMXZDTjs7V0FDRSw0QkF5dkNFNUc7V0F4dkNNLElBQUo1RixFQUFJLGdCQXd2Q040RixFQUFFNEc7V0F4dkNJO2FBS04sNEJBTEV4TSxHQU9GOztnRUFpdkNBNEYsRUFBRTRHO2lCQTV1Q04saURBNHVDSTVHLEVBQUU0RztrQkEzdUNOLG1EQTJ1Q0k1RyxFQUFFNEcsU0E2QzBCO2FBL0NyRHVELFNBQVNuSyxFQUFFNEcsUUFDWiw4QkFEVTVHLEVBQUU0RyxXQUN5QjthQWtEcEN3RCx5QkFBMkJwSyxFQUFFNEcsT0FBT3FCO01EbnZEekMsSUNtdkR5Q0M7TUFDdEM7UUFBTTtTQURnQ0M7VUFDaEMsZ0JBbmxESm5PLGlCQWtsRG9Da08sa0JBQVB0QjtRQUN6QixPQURnQ3VCO1VBcUNmLFdBckNRdkI7Y0FBT3NCOzs7O1dBenhDZjthQUE0Qyw0QkFBdEIsa0JBeXhDZHRCO2FBdnhDSjs2REF1eENFNUcsRUFBRTRHOztXQXJ4Q04sNEJBcXhDSTVHO1dBcHhDSSxJQUFKNUYsRUFBSSxnQkFveENKNEYsRUFBRTRHO1dBcHhDRTthQUtOLDRCQUxFeE0sR0FPRjs7Z0VBNndDRTRGLEVBQUU0RztpQkF4d0NSLCtDQXd3Q001RyxFQUFFNEc7a0JBdndDUixtREF1d0NNNUcsRUFBRTRHLFNBc0MwQjthQXhDdkR5RCxXQUFXckssRUFBRTRHO01BQ2QsZ0NBRFk1RyxFQUFFNEcsV0FDeUI7YUEyQ3RDMEQseUJBQTJCdEssRUFBRTRHLE9BQU9xQjtNRDd4RHpDLElDNnhEeUNDO01BQ3RDO1FBQU07U0FEZ0NDO1VBQ2hDLGdCQTduREpuTyxpQkE0bkRvQ2tPLGtCQUFQdEI7UUFDekIsT0FEZ0N1QjtVQXFDZixXQXJDUXZCO2NBQU9zQjs7OztXQTl5Q2Y7YUFBNEMsOEJBQXRCLGtCQTh5Q2R0QjthQTV5Q0o7K0RBNHlDRTVHLEVBQUU0Rzs7V0ExeUNOLDRCQTB5Q0k1RztXQXp5Q0ksSUFBSjVGLEVBQUksZ0JBeXlDSjRGLEVBQUU0RztXQXp5Q0U7YUFLTiw4QkFMRXhNLEdBT0Y7O2dFQWt5Q0U0RixFQUFFNEc7aUJBN3hDUiwrQ0E2eENNNUcsRUFBRTRHO2tCQTV4Q1IsbURBNHhDTTVHLEVBQUU0RyxTQXNDMEI7YUF4Q3ZEMkQsV0FBV3ZLLEVBQUU0RztNQUNkLGdDQURZNUcsRUFBRTRHLFdBQ3lCO2FBMkN0QzRELDBCQUE0QnhLLEVBQUU0RyxPQUFPcUI7TUR2MEQxQyxJQ3UwRDBDQztNQUN2QztRQUFNO1NBRGlDQztVQUNqQyxnQkF2cURKbk8saUJBc3FEcUNrTyxrQkFBUHRCO1FBQzFCLE9BRGlDdUI7VUFzRGhCLFdBdERTdkI7Y0FBT3NCOzs7aUJBbjBDekI7aUJBQ0E7aUJBQ0E7aUJBQ2lDLDRCQUFmLGtCQWcwQ0F0Qjs7V0EvekNoQiw0QkErekNjNUc7V0E5ekNOLElBQUo1RixFQUFJLGdCQTh6Q000RixFQUFFNEc7V0E5ekNSO2FBS04sOEJBTEV4TTs7YUFPRiw0QkFQRUE7OzswQkFZSSw0Q0FrekNNNEYsRUFBRTRHOzs7O2lCQTd5Q2xCLGdEQTZ5Q2dCNUcsRUFBRTRHO2tCQTV5Q2xCLG1EQTR5Q2dCNUcsRUFBRTRHLFNBdUQwQjthQXpEeEQ2RCxZQUFZekssRUFBRTRHO01BQ2YsaUNBRGE1RyxFQUFFNEcsV0FDeUI7YUEwRHZDOEQsWUFFNEIxSyxFQUFFNEc7TURsNERuQyxJQ2s0RDBDcUI7TUFDdkM7UUFBTTtTQURpQ0M7VUFDakMsZ0JBbHVESmxPLGlCQWl1RHFDaU8sZ0JBQVByQjtRQUMxQixPQURpQ3NCO1VBa0JoQixXQWxCU3RCO2NBQU9xQjs7OztXQXAyQzFCLDRCQW8yQ2lCakksTUFwMkNqQix1QkFvMkNpQkEsRUFBRTRHO2lCQWwyQ3JCLDJDQWsyQ21CNUcsRUFBRTRHO2tCQWoyQ3JCLG1EQWkyQ21CNUcsRUFBRTRHLFNBRFM7YUFzQnZDNkIsV0FFMkJ6SSxFQUFFNEc7TUR6NURsQyxJQ3k1RHlDcUI7TUFDdEM7UUFBTTtTQURnQ0M7VUFDaEMsZ0JBenZESmxPLGlCQXd2RG9DaU8sZ0JBQVByQjtRQUN6QixPQURnQ3NCO1VBNEJmLFdBNUJRdEI7Y0FBT3FCOzs7O1dBcjNDekIsNEJBcTNDZ0JqSSxNQXIzQ2hCLHVCQXEzQ2dCQSxFQUFFNEc7O1dBYS9CLElBaDRDV3hNLEVBZzRDWCxzQkFiK0J3TSw0QkFhL0IsT0FoNENXeE07aUJBRUEsaURBaTNDa0I0RixFQUFFNEc7a0JBaDNDcEIsbURBZzNDa0I1RyxFQUFFNEcsU0FEUzthQWdDdEMrRCxVQUUwQjNLLEVBQUU1QixFQUFFd0k7TUQxN0RuQyxJQzA3RDBDcUI7TUFDdkM7UUFBTTtTQURpQ0M7VUFDakMsZ0JBMXhESmxPLGlCQXl4RHFDaU8sZ0JBQVByQjtRQUMxQixPQURpQ3NCO1VBdUJoQixXQXZCU3RCO2NBQU9xQjs7OztXQTk0QzFCLDRCQTg0Q2VqSSxNQTk0Q2Ysa0JBODRDZUEsRUFBRTVCLEVBQUV3STs7V0FqeUQ5QixJQUFJN0gsSUFpeUQwQjZIO1dBaHlENUI7b0JBZ3lEMEJ4STtvQkFoeUQxQiwyQkFneUQ0QndJLG9CQWp5RDFCN0g7OztpQkF1WkssbURBMDRDaUJpQixFQUFJNEc7a0JBejRDckIsbURBeTRDaUI1RyxFQUFJNEcsU0FEUzthQTZCdkNnRTtNQUE4QkMsVUFBVUMsU0FBUzlLLEVBQUU0RyxPQUFPcUI7TUR0OUQvRCxJQ3M5RCtEQztNQUM1RDtRQUFNO1NBRHNEQztVQUN0RCxnQkF0ekRKbk8saUJBcXpEMERrTyxrQkFBUHRCO1FBQy9DLE9BRHNEdUI7VUErQnJDLFdBL0I4QnZCO2NBQU9zQjs7OztXQWw2Q2pELElBQU1HLE9BazZDeUJ5QztXQWw2Qy9CO2FBRUksV0FnNkNvQzlLLEVBQUU0RzthQS81Q3RDLGVBKzVDc0NBO2FBOTVDL0Isb0JBODVDVWlFLFVBbDZDZnhDLE9BazZDa0NySSxFQUFFNEc7O2VBNTVDcEMsV0E0NUNrQzVHLEVBQUU0RztlQTM1Q3BDLGVBMjVDa0M1RyxFQUFFNEc7ZUExNUNwQyxXQTA1Q2tDNUcsRUFBRTRHO2VBejVDN0Isb0JBeTVDUWlFLFVBbDZDZnhDLE9BazZDa0NySSxFQUFFNEc7Ozs7c0NBcjVDdEMsT0FiRXlCO2FBZU47NERBbTVDd0NySSxFQUFFNEc7a0JBbDVDMUMsbURBazVDd0M1RyxFQUFFNEcsU0FnQzBCO2FBbEM3RW1FLGNBQWNGLFVBQVVDLFNBQVM5SyxFQUFFNEc7TUFDcEMsbUNBRGVpRSxVQUFVQyxTQUFTOUssRUFBRTRHLFdBQ3lCO2FBcUM1RG9FLDRCQUE4QkgsVUFBVTdLLEVBQUU0RyxPQUFPcUI7TUQxL0R0RCxJQzAvRHNEQztNQUNuRDtRQUFNO1NBRDZDQztVQUM3QyxnQkExMURKbk8saUJBeTFEaURrTyxrQkFBUHRCO1FBQ3RDLE9BRDZDdUI7VUErQjVCLFdBL0JxQnZCO2NBQU9zQjs7OztXQW43Q3hDLElBQU1HO1dBQU47YUFFSSxXQWk3QzJCckksRUFBRTRHO2FBaDdDN0IsZUFnN0M2QkE7YUFoN0M3QixTQUhFeUI7YUFJSyx1QkErNkNVd0MsVUFBVTdLLEVBQUU0Rzs7ZUE3NkMzQixXQTY2Q3lCNUcsRUFBRTRHO2VBNTZDM0IsZUE0NkN5QjVHLEVBQUU0RztlQTM2QzNCLFdBMjZDeUI1RyxFQUFFNEc7ZUEzNkMzQixTQVJBeUI7ZUFTTyx1QkEwNkNRd0MsVUFBVTdLLEVBQUU0Rzs7OztzQ0F0NkM3QixPQWJFeUI7YUFlTjs0REFvNkMrQnJJLEVBQUU0RztrQkFuNkNqQyxtREFtNkMrQjVHLEVBQUU0RyxTQWdDMEI7YUFsQ3BFcUUsY0FBY0osVUFBVTdLLEVBQUU0RztNQUMzQixtQ0FEZWlFLFVBQVU3SyxFQUFFNEcsV0FDeUI7YUFtQ25EbUMsZUFFK0JuQztNRDloRXBDLElDOGhFMkNxQjtNQUN4QztRQUFNO1NBRGtDQztVQUNsQyxnQkE5M0RKbE8saUJBNjNEc0NpTyxnQkFBUHJCO1FBQzNCLFNBRGtDc0Isa0JBcDhDN0I7aUJBbzhDNkJBLGtCQW44QzdCO1FBKzhDWSxXQVpVdEI7UUFDM0IsSUFEa0NxQjtpQkFERTthQWdCeENlLGVBRStCaEosRUFBRTRHO01EL2lFdEMsSUMraUU2Q3FCO01BQzFDO1FBQU07U0FEb0NDO1VBQ3BDLGdCQS80REpsTyxpQkE4NER3Q2lPLGdCQUFQckI7UUFDN0IsT0FEb0NzQjtVQXNCbkIsV0F0Qll0QjtjQUFPcUI7OztpQkFqOUMvQjtpQkFDQTtpQkFDQSw4Q0ErOENzQmpJLEVBQUU0RztrQkE5OEN4QixtREE4OENzQjVHLEVBQUU0RyxTQURTO2FBMEIxQ3NFLFdBQVdMLFVBQVVDLFNBRXlCOUssRUFBRTRHO01EMWtFckQsSUMwa0U0RHFCO01BQ3pEO1FBQU07U0FEbURDO1VBQ25ELGdCQTE2REpsTyxpQkF5NkR1RGlPLGdCQUFQckI7UUFDNUMsT0FEbURzQjtVQXVDbEMsV0F2QzJCdEI7Y0FBT3FCOzs7aUJBcitDMUMsc0NBcStDaUNqSSxFQUFFNEc7aUJBOThDdkMsMkNBODhDcUM1RyxFQUFFNEc7a0JBNzhDdkMsbURBNjhDcUM1RyxFQUFFNEcsU0FEUzthQTJDekR1RSxlQUUrQnZFO01EdG5FcEMsSUNzbkUyQ3FCO01BQ3hDO1FBQU07U0FEa0NDO1VBQ2xDLGdCQXQ5REpsTyxpQkFxOURzQ2lPLGdCQUFQckI7UUFDM0IsU0FEa0NzQixrQkF0L0M3QjtpQkFzL0M2QkEsa0JBci9DN0I7UUFpZ0RZLFdBWlV0QjtRQUMzQixJQURrQ3FCO2lCQURFO2FBZ0J4Q21ELGdCQUVnQ3BMLEVBQUVuQixJQUFJK0g7TUR2b0UzQyxJQ3VvRWtEcUI7TUFDL0M7UUFBTTtTQUR5Q0M7VUFDekMsZ0JBditESmxPLGlCQXMrRDZDaU8sZ0JBQVByQjtRQUNsQyxPQUR5Q3NCO1VBdUJ4QixXQXZCaUJ0QjtjQUFPcUI7Ozs7V0FuZ0RwQyxHQW1nRHlCcEosSUFsZ0RyQiw4Q0FrZ0RtQm1CLEVBQU00RztXQWhnRHpCOztXQUNKLEdBKy9DeUIvSCxJQTkvQ3JCO1dBRUEsOENBNC9DbUJtQixFQUFNNEc7a0JBMy9DN0IsVUEwL0NzQzthQTJCL0N5RSxlQUUrQnJMLEVBQUU0RztNRG5xRXRDLElDbXFFNkNxQjtNQUMxQztRQUFNO1NBRG9DQztVQUNwQyxnQkFuZ0VKbE8saUJBa2dFd0NpTyxnQkFBUHJCO1FBQzdCLE9BRG9Dc0I7VUFzQm5CLFdBdEJZdEI7Y0FBT3FCOzs7aUJBcGhEL0I7aUJBQ0E7aUJBQ0EsOENBa2hEc0JqSSxFQUFFNEc7a0JBamhEeEIsbURBaWhEc0I1RyxFQUFFNEcsU0FEUzthQTBCMUMwRSxnQkFFZ0N0TCxFQUFFbkIsSUFBSStIO01EOXJFM0MsSUM4ckVrRHFCO01BQy9DO1FBQU07U0FEeUNDO1VBQ3pDLGdCQTloRUpsTyxpQkE2aEU2Q2lPLGdCQUFQckI7UUFDbEMsT0FEeUNzQjtVQWlDeEIsV0FqQ2lCdEI7Y0FBT3FCOzs7aUJBemlEcEM7O1dBQ0EsR0F3aUR5QnBKLElBdmlEckIsOENBdWlEbUJtQixFQUFNNEc7V0FyaUR6Qjs7V0FDSixHQW9pRHlCL0gsSUFuaURyQjtXQUVBLDhDQWlpRG1CbUIsRUFBTTRHO2lCQWhpRDdCLDhDQWdpRHVCNUcsRUFBTTRHO2tCQS9oRDdCLG1EQStoRHVCNUcsRUFBTTRHLFNBRFM7YUF1Qy9DMkU7TUFBcUNDLFNBQVNDLFdBQVdYLFNBQVM5SyxFQUFFNEcsT0FBT3FCO01EcHVFaEYsSUNvdUVnRkM7TUFDN0U7UUFBTTtTQUR1RUM7VUFDdkUsZ0JBcGtFSm5PLGlCQW1rRTJFa08sa0JBQVB0QjtRQUNoRSxPQUR1RXVCO1VBdUN0RCxXQXZDK0N2QjtjQUFPc0I7Ozs7V0Fqa0RsRSxJQUFNRyxPQWlrRDBDeUM7V0Fqa0RoRDthQUVJLFdBK2pEcUQ5SyxFQUFFNEc7YUE5akR2RCxnQkE4akR1REE7YUE3akR0QyxJQUFiNEIsV0FBYSxXQTZqRE9nRCxTQUE2QnhMLEVBQUU0RzthQTVqRHZELFdBNGpEcUQ1RyxFQUFFNEc7YUEzakR2RCxXQTJqRHFENUcsRUFBRTRHO2FBMWpEdkQsV0EwakRxRDVHLEVBQUU0RzthQXpqRGhELG9CQXlqRDBCNkUsV0Fqa0QvQnBELE9BSUVHLFdBNmpEaUR4SSxFQUFFNEc7O2VBdmpEckQsV0F1akRtRDVHLEVBQUU0RztlQXRqRHJELGdCQXNqRG1ENUcsRUFBRTRHO2VBcmpEckQsV0FxakRtRDVHLEVBQUU0RztlQXBqRHBDLElBQWJpQyxhQUFhLFdBb2pESzJDLFNBQTZCeEwsRUFBRTRHO2VBbmpEckQsV0FtakRtRDVHLEVBQUU0RztlQWxqRHJELFdBa2pEbUQ1RyxFQUFFNEc7ZUFqakRyRCxXQWlqRG1ENUcsRUFBRTRHO2VBaGpEOUMsb0JBZ2pEd0I2RSxXQWprRC9CcEQsT0FhSVEsYUFvakQrQzdJLEVBQUU0Rzs7Ozt1Q0E1aUR2RCxPQXJCRXlCO2FBdUJOOzREQTBpRHlEckksRUFBRTRHO2tCQXppRDNELG1EQXlpRHlENUcsRUFBRTRHLFNBd0MwQjthQTFDOUY4RSxxQkFBcUJGLFNBQVNDLFdBQVdYLFNBQVM5SyxFQUFFNEc7TUFDckQ7ZUFEc0I0RSxTQUFTQyxXQUFXWCxTQUFTOUssRUFBRTRHLFdBQ3lCO2FBMkM3RStFLFdBRTJCM0wsRUFBRTRHO01EaHhFbEMsSUNneEV5Q3FCO01BQ3RDO1FBQU07U0FEZ0NDO1VBQ2hDLGdCQWhuRUpsTyxpQkErbUVvQ2lPLGdCQUFQckI7UUFDekIsT0FEZ0NzQjtVQWlCZixXQWpCUXRCO2NBQU9xQjs7O2lCQWxsRDNCO2lCQUNBLDJDQWlsRGtCakksRUFBRTRHO2tCQWhsRHBCLG1EQWdsRGtCNUcsRUFBRTRHLFNBRFM7YUFxQnRDMkIsZ0JBRWdDM0I7TUR0eUVyQyxJQ3N5RTRDcUI7TUFDekM7UUFBTTtTQURtQ0M7VUFDbkMsZ0JBdG9FSmxPLGlCQXFvRXVDaU8sZ0JBQVByQjtRQUM1QixTQURtQ3NCLGtCQW5tRDlCO2lCQW1tRDhCQSxrQkFsbUQ5QjtRQThtRFksV0FaV3RCO1FBQzVCLElBRG1DcUI7aUJBREU7YUFnQnpDVyxnQkFFZ0M1SSxFQUFFNEc7TUR2ekV2QyxJQ3V6RThDcUI7TUFDM0M7UUFBTTtTQURxQ0M7VUFDckMsZ0JBdnBFSmxPLGlCQXNwRXlDaU8sZ0JBQVByQjtRQUM5QixPQURxQ3NCO1VBc0JwQixXQXRCYXRCO2NBQU9xQjs7O2lCQWhuRGhDO2lCQUNBO2lCQUNBLDhDQThtRHVCakksRUFBRTRHO2tCQTdtRHpCLG1EQTZtRHVCNUcsRUFBRTRHLFNBRFM7YUEwQjNDOEIsV0FFMkIxSSxFQUFFNEc7TURsMUVsQyxJQ2sxRXlDcUI7TUFDdEM7UUFBTTtTQURnQ0M7VUFDaEMsZ0JBbHJFSmxPLGlCQWlyRW9DaU8sZ0JBQVByQjtRQUN6QixPQURnQ3NCO1VBaUJmLFdBakJRdEI7Y0FBT3FCOzs7aUJBcm9EM0I7aUJBQ0EsMkNBb29Ea0JqSSxFQUFFNEc7a0JBbm9EcEIsbURBbW9Ea0I1RyxFQUFFNEcsU0FEUzthQXFCdENnRixnQkFFZ0M1TCxFQUFFNEc7TUR4MkV2QyxJQ3cyRThDcUI7TUFDM0M7UUFBTTtTQURxQ0M7VUFDckMsZ0JBeHNFSmxPLGlCQXVzRXlDaU8sZ0JBQVByQjtRQUM5QixPQURxQ3NCO1VBc0JwQixXQXRCYXRCO2NBQU9xQjs7O2lCQXRwRGhDO2lCQUNBO2lCQUNBLDhDQW9wRHVCakksRUFBRTRHO2tCQW5wRHpCLG1EQW1wRHVCNUcsRUFBRTRHLFNBRFM7YUEwQjNDaUYsVUFFMEI3TCxFQUFFNEc7TURuNEVqQyxJQ200RXdDcUI7TUFDckM7UUFBTTtTQUQrQkM7VUFDL0IsZ0JBbnVFSmxPLGlCQWt1RW1DaU8sZ0JBQVByQjtRQUN4QixPQUQrQnNCO1VBaUJkLFdBakJPdEI7Y0FBT3FCOzs7aUJBM3FEMUI7aUJBQ0EsMkNBMHFEaUJqSSxFQUFFNEc7a0JBenFEbkIsbURBeXFEaUI1RyxFQUFFNEcsU0FEUzthQXFCckNrRixVQUUwQjlMLEVBQUU0RztNRHo1RWpDLElDeTVFd0NxQjtNQUNyQztRQUFNO1NBRCtCQztVQUMvQixnQkF6dkVKbE8saUJBd3ZFbUNpTyxnQkFBUHJCO1FBQ3hCLE9BRCtCc0I7VUFpQmQsV0FqQk90QjtjQUFPcUI7OztpQkE1ckQxQjtpQkFDQSw0Q0EyckRpQmpJLEVBQUU0RztrQkExckRuQixtREEwckRpQjVHLEVBQUU0RyxTQURTO2FBcUJyQ21GLFNBRXlCL0wsRUFBRTRHO01ELzZFaEMsSUMrNkV1Q3FCO01BQ3BDO1FBQU07U0FEOEJDO1VBQzlCLGdCQS93RUpsTyxpQkE4d0VrQ2lPLGdCQUFQckI7UUFDdkIsT0FEOEJzQjtVQWlCYixXQWpCTXRCO2NBQU9xQjs7O2lCQTdzRHpCO2lCQUNBLDRDQTRzRGdCakksRUFBRTRHO2tCQTNzRGxCLG1EQTJzRGdCNUcsRUFBRTRHLFNBRFM7YUFxQnBDb0YsU0FFeUJoTSxFQUFFNEc7TURyOEVoQyxJQ3E4RXVDcUI7TUFDcEM7UUFBTTtTQUQ4QkM7VUFDOUIsZ0JBcnlFSmxPLGlCQW95RWtDaU8sZ0JBQVByQjtRQUN2QixPQUQ4QnNCO1VBaUJiLFdBakJNdEI7Y0FBT3FCOzs7aUJBOXREekI7aUJBQ0EsNENBNnREZ0JqSSxFQUFFNEc7a0JBNXREbEIsbURBNHREZ0I1RyxFQUFFNEcsU0FEUzthQXdMcENxRixzQkFFc0NqTSxFQUFFNEc7TUQ5bkY3QyxJQzhuRm9EcUI7TUFDakQ7UUFBTTtTQUQyQ0M7VUFDM0MsZ0JBOTlFSmxPLGlCQTY5RStDaU8sZ0JBQVByQjtRQUNwQyxPQUQyQ3NCO1VBaUIxQixXQWpCbUJ0QjtjQUFPcUI7OztpQkFyekQxQztpQkFDQSwrQ0FvekRpQ2pJLEVBQUU0RztrQkFuekRuQyxtREFtekRpQzVHLEVBQUU0RyxTQURTO2FBcEtqRHNGLG9CQUFVbE0sRUFBRTRHO01BQ2I7OztlQUNDdUYsa0NBRlVuTSxFQUFFNEc7b0NBRVp1RiwyQkFGVW5NLEVBQUU0RyxhQUN5QjthQUNyQ3VGLGdDQUEwQm5NLEVBQUU0RyxPQUFPcUI7TUQzOUV4QyxJQzI5RXdDQztNQUNyQztRQUFNO1NBRCtCQztVQUMvQixnQkEzekVKbk8saUJBMHpFbUNrTyxrQkFBUHRCO1FBQ3hCLFFBRCtCdUI7VUE4SmQsV0E5Sk92QjtjQUFPc0I7OztpQkE1dUR2QjtpQkFDQTtpQkFDQTtpQkFDQTtpQkFDQTtpQkFDQTtpQkFDQSw2QkFzdURjbEksRUFBRTRHO2lCQXJ1RE47aUJBQ1Y7O1dBRUM7YUFDSSxXQWl1RFM1RyxFQUFFNEc7YUFodURYLGdCQWd1RFdBO2FBL3REWCxXQSt0RFM1RyxFQUFFNEc7YUE5dERYLFdBOHREUzVHLEVBQUU0RzthQTd0RFgsV0E2dERTNUcsRUFBRTRHO2FBNXREWCxXQTR0RFM1RyxFQUFFNEc7YUEzdERYLFVBMnREUzVHLEVBQUU0RzthQWx0RFM7ZUFQbEIsV0F5dERPNUcsRUFBRTRHO2VBeHREVCxnQkF3dERPNUcsRUFBRTRHO2VBdnREVCxXQXV0RE81RyxFQUFFNEc7ZUF0dERULFdBc3RETzVHLEVBQUU0RztlQXJ0RFQsV0FxdERPNUcsRUFBRTRHO2VBcHREVCxXQW90RE81RyxFQUFFNEc7ZUFudERULFdBbXRETzVHLEVBQUU0RztlQWx0RFQsVUFrdERPNUcsRUFBRTRHOzs7O3VDQTlzRFg7YUFHSjs7O2FBQ0ksV0Ewc0RTNUcsRUFBRTRHO2FBenNEWCxlQXlzRFdBO2FBeHNEWCxVQXdzRFM1RyxFQUFFNEc7YUFuc0RTO2VBSGxCLFdBc3NETzVHLEVBQUU0RztlQXJzRFQsZUFxc0RPNUcsRUFBRTRHO2VBcHNEVCxXQW9zRE81RyxFQUFFNEc7ZUFuc0RULFVBbXNETzVHLEVBQUU0Rzs7OztzQ0EvckRYO2FBR0o7d0RBNHJEYTVHLEVBQUU0RztrQkF4cURmLHNDQXdxRGE1RyxFQUFFNEc7O1dBN3BEZjs7b0JBMnBEYnNGLHNCQUUwQmxNLEVBQUU0Rzt5Q0FGNUJzRixlQUUwQmxNLEVBQUU0Rzs7V0E1cERiLGVBNHBEVzVHLEVBQUU0RztXQTVwRGI7O29CQTBwRGZzRixzQkFFMEJsTSxFQUFFNEc7eUNBRjVCc0YsZUFFMEJsTSxFQUFFNEc7O1dBM3BEYixRQTJwRFc1RyxFQUFFNEc7V0EzcERiOztvQkF5cERmc0Ysc0JBRTBCbE0sRUFBRTRHO3lDQUY1QnNGLGVBRTBCbE0sRUFBRTRHOztXQTFwRGY7O29CQXdwRGJzRixzQkFFMEJsTSxFQUFFNEc7eUNBRjVCc0YsZUFFMEJsTSxFQUFFNEc7O1dBenBEZixtREF5cERhNUcsRUFBRTRHO2tCQXhwRGYsc0NBd3BEYTVHLEVBQUU0RyxTQStKMEI7YUFqS3REeUYsVUFBVXJNLEVBQUU0RztNRHo5RWpCLHVCQ3k5RUtzRixjQUFVbE0sRUFBRTRHO2FBeUxaMEYsb0JBRW9DdE0sRUFBRTRHO01EcHBGM0MsSUNvcEZrRHFCO01BQy9DO1FBQU07U0FEeUNDO1VBQ3pDLGdCQXAvRUpsTyxpQkFtL0U2Q2lPLGdCQUFQckI7UUFDbEMsT0FEeUNzQjtVQXdCeEIsV0F4QmlCdEI7Y0FBT3FCOzs7O1dBdDBEdEMsVUFzMEQ2QmpJLEVBQUU0RyxRQXIwRC9CLFdBcTBENkI1RyxFQUFFNEcsUUFyMEQvQixlQXEwRDZCNUcsRUFBRTRHO2lCQW4wRGpDO2lCQUNBLCtDQWswRCtCNUcsRUFBRTRHO2tCQWowRGpDLG1EQWkwRCtCNUcsRUFBRTRHLFNBRFM7YUE0Qi9Dd0YsV0FFMkJwTSxFQUFFNEc7TURqckZsQyxJQ2lyRnlDcUI7TUFDdEM7UUFBTTtTQURnQ0M7VUFDaEMsZ0JBamhGSmxPLGlCQWdoRm9DaU8sZ0JBQVByQjtRQUN6QixPQURnQ3NCO1VBc0JmLFdBdEJRdEI7Y0FBT3FCOzs7aUJBMzFEM0IsNkJBMjFEa0JqSSxFQUFFNEc7aUJBMTFEcEI7aUJBQ0EsbURBeTFEa0I1RyxFQUFFNEc7a0JBeDFEcEIsbURBdzFEa0I1RyxFQUFFNEcsU0FEUzthQWtLdEMyRix3QkFFd0N2TSxFQUFFNEc7TURwMUYvQyxJQ28xRnNEcUI7TUFDbkQ7UUFBTTtTQUQ2Q0M7VUFDN0MsZ0JBcHJGSmxPLGlCQW1yRmlEaU8sZ0JBQVByQjtRQUN0QyxPQUQ2Q3NCO1VBbUI1QixXQW5CcUJ0QjtjQUFPcUI7Ozs7V0FuNUQxQyw2QkFtNURpQ2pJO1dBbjVEakMsa0JBbTVEaUNBLEtBQUU0RztpQkFoNURyQywrQ0FnNURtQzVHLEVBQUU0RztrQkEvNERyQyxtREErNERtQzVHLEVBQUU0RyxTQURTO2FBekluRDRGLHNCQUFZeE0sRUFBRTRHO01BQ2Y7OztlQUNDNkYsb0NBRll6TSxFQUFFNEc7O2VBRWQ2Riw2QkFGWXpNLEVBQUU0RyxhQUN5QjthQUN2QzZGLGtDQUE0QnpNLEVBQUU0RyxPQUFPcUI7TUQ1c0YxQyxJQzRzRjBDQztNQUN2QztRQUFNO1NBRGlDQztVQUNqQyxnQkE1aUZKbk8saUJBMmlGcUNrTyxrQkFBUHRCO1FBQzFCLFFBRGlDdUI7VUFtSWhCLFdBbklTdkI7Y0FBT3NCOzs7aUJBdDJEekIsa0JBczJEZ0JsSSxLQUFFNEc7aUJBcDJEbEIsK0JBbzJEZ0I1RyxFQUFFNEc7O1dBbjJEakI7YUFDSSw2QkFrMkRXNUc7YUFqMkRYLGFBaTJEV0EsRUFBRTRHO2FBaDJEYixrQkFnMkRXNUcsRUFBRTRHO2FBLzFEYixhQSsxRFc1RyxFQUFFNEc7YUE5MURiLGFBODFEVzVHLEVBQUU0RzthQTcxRGIsYUE2MURXNUcsRUFBRTRHO2FBNTFEYixhQTQxRFc1RyxFQUFFNEc7YUEzMURiLFlBMjFEVzVHLEVBQUU0RzthQWwxRFM7ZUFQcEIsYUF5MURTNUcsRUFBRTRHO2VBeDFEWCxrQkF3MURTNUcsRUFBRTRHO2VBdjFEWCxhQXUxRFM1RyxFQUFFNEc7ZUF0MURYLGFBczFEUzVHLEVBQUU0RztlQXIxRFgsYUFxMURTNUcsRUFBRTRHO2VBcDFEWCxhQW8xRFM1RyxFQUFFNEc7ZUFuMURYLGFBbTFEUzVHLEVBQUU0RztlQWwxRFgsWUFrMURTNUcsRUFBRTRHOzs7O3VDQTkwRGI7YUFHSjs7O2FBQ0ksNkJBMDBEVzVHO2FBejBEWCxhQXkwRFdBLEVBQUU0RzthQXgwRGIsaUJBdzBEVzVHLEVBQUU0RzthQXYwRGIsWUF1MERXNUcsRUFBRTRHO2FBbDBEUztlQUhwQixhQXEwRFM1RyxFQUFFNEc7ZUFwMERYLGlCQW8wRFM1RyxFQUFFNEc7ZUFuMERYLGFBbTBEUzVHLEVBQUU0RztlQWwwRFgsWUFrMERTNUcsRUFBRTRHOzs7O3NDQTl6RGI7YUFHSjt1REEyekRlNUcsRUFBRTRHO2lCQXR5RGpCLHNDQXN5RGU1RyxFQUFFNEc7O1dBMXhEZixXQTB4RGE1RyxLQUFFNEc7V0ExeERmOztvQkF3eERmNEYsd0JBRTRCeE0sRUFBRTRHO3lDQUY5QjRGLGlCQUU0QnhNLEVBQUU0Rzs7V0F6eERmLDZCQXl4RGE1RztXQXh4RGIsc0JBd3hEYUEsRUFBRTRHO1dBeHhEZjs7b0JBc3hEZjRGLHdCQUU0QnhNLEVBQUU0Rzt5Q0FGOUI0RixpQkFFNEJ4TSxFQUFFNEc7O1dBdHhEZiw2QkFzeERhNUc7V0FyeERiLFFBcXhEYUEsRUFBRTRHO1dBcnhEZjs7b0JBbXhEZjRGLHdCQUU0QnhNLEVBQUU0Rzt5Q0FGOUI0RixpQkFFNEJ4TSxFQUFFNEc7O1dBbnhEZixXQW14RGE1RyxLQUFFNEc7V0FueERmOztvQkFpeERmNEYsd0JBRTRCeE0sRUFBRTRHO3lDQUY5QjRGLGlCQUU0QnhNLEVBQUU0Rzs7V0FseERqQixtREFreERlNUcsRUFBRTRHO2tCQWp4RGpCLHNDQWl4RGU1RyxFQUFFNEcsU0FvSTBCO2FBdEl4RGtHLFlBQVk5TSxFQUFFNEc7TUQxc0ZuQix1QkMwc0ZLNEYsZ0JBQVl4TSxFQUFFNEc7YUE4TGRnRyxhQUU2QjVNLEVBQUU0RztNRDE0RnBDLElDMDRGMkNxQjtNQUN4QztRQUFNO1NBRGtDQztVQUNsQyxnQkExdUZKbE8saUJBeXVGc0NpTyxnQkFBUHJCO1FBQzNCLE9BRGtDc0I7VUFzQmpCLFdBdEJVdEI7Y0FBT3FCOzs7aUJBejdEN0IsK0JBeTdEb0JqSSxFQUFFNEc7aUJBeDdEdEIsa0JBdzdEb0I1RyxLQUFFNEc7aUJBdjdEdEIsbURBdTdEb0I1RyxFQUFFNEc7a0JBdDdEdEIsbURBczdEb0I1RyxFQUFFNEcsU0FEUzthQTBCeEM4RixhQUFhMU0sRUFFa0I0RztNRHI2RnBDO01DbzZGSTtZQUN1Q3FCO1FBQ3hDO1VBQU07V0FEa0NDO1lBQ2xDLGdCQXJ3RkpsTyxpQkFvd0ZzQ2lPLGdCQUFQckI7VUFDM0IsT0FEa0NzQjtZQXNDakIsV0F0Q1V0QjtnQkFBT3FCOzs7bUJBNzhEdEMsV0EyOERhakksS0FFa0I0RyxRQTU4RC9CLFFBMDhEYTVHLEVBRWtCNEc7O2FBejhEL0IsNkJBdThEYTVHO2FBdDhEYixzQkFzOERhQSxFQUVrQjRHOzs7YUFyOEQvQiw2QkFtOERhNUc7YUFsOERiLFFBazhEYUEsRUFFa0I0Rzs7bUJBajhEL0IsV0ErN0RhNUcsS0FFa0I0RztvQkEvN0ROLFdBODdEZTthQTBDeEMrRixrQkFFa0MzTSxFQUFFNEc7TURoOUZ6QyxJQ2c5RmdEcUI7TUFDN0M7UUFBTTtTQUR1Q0M7VUFDdkMsZ0JBaHpGSmxPLGlCQSt5RjJDaU8sZ0JBQVByQjtRQUNoQyxTQUR1Q3NCO1VBdCtEekMsNkJBcytEZ0NsSSxVQXQrRGhDO2lCQXMrRHlDa0ksa0JBcCtEbEM7UUFrL0RZLFdBZGV0QjtRQUNoQyxJQUR1Q3FCO2lCQURFO2FBa0I3QzhFLGtCQUVrQy9NLEVBQUU0RztNRG4rRnpDLElDbStGZ0RxQjtNQUM3QztRQUFNO1NBRHVDQztVQUN2QyxnQkFuMEZKbE8saUJBazBGMkNpTyxnQkFBUHJCO1FBQ2hDLE9BRHVDc0I7VUFzQnRCLFdBdEJldEI7Y0FBT3FCOzs7aUJBcC9EbEMsb0NBby9EeUJqSTtpQkFuL0R2Qiw2QkFtL0R1QkEsVUFuL0R2QjtpQkFDRiwrQ0FrL0R5QkEsRUFBRTRHO2tCQWovRDNCLG1EQWkvRHlCNUcsRUFBRTRHLFNBRFM7YUEwQjdDb0csaUJBRWlDaE4sRUFBRTRHO01EOS9GeEMsSUM4L0YrQ3FCO01BQzVDO1FBQU07U0FEc0NDO1VBQ3RDLGdCQTkxRkpsTyxpQkE2MUYwQ2lPLGdCQUFQckI7UUFDL0IsU0FEc0NzQjtVQXpnRS9CLDZCQXlnRXNCbEksU0F6Z0V0QjtpQkF5Z0UrQmtJLGtCQXhnRWpDO1FBb2hFWSxXQVpjdEI7UUFDL0IsSUFEc0NxQjtpQkFERTthQWdCNUNnRixpQkFFaUNqTixFQUFFNEc7TUQvZ0d4QyxJQytnRytDcUI7TUFDNUM7UUFBTTtTQURzQ0M7VUFDdEMsZ0JBLzJGSmxPLGlCQTgyRjBDaU8sZ0JBQVByQjtRQUMvQixPQURzQ3NCO1VBc0JyQixXQXRCY3RCO2NBQU9xQjs7O2lCQXRoRWpDLG9DQXNoRXdCakk7aUJBcmhFdEIsNkJBcWhFc0JBLFNBcmhFdEI7aUJBQ0YsK0NBb2hFd0JBLEVBQUU0RztrQkFuaEUxQixtREFtaEV3QjVHLEVBQUU0RyxTQURTO2FBd0U1Q2lHLGFBRTZCN00sRUFBRTRHO01EeGxHcEMsSUN3bEcyQ3FCO01BQ3hDO1FBQU07U0FEa0NDO1VBQ2xDLGdCQXg3RkpsTyxpQkF1N0ZzQ2lPLGdCQUFQckI7UUFDM0IsT0FEa0NzQjtVQWlCakIsV0FqQlV0QjtjQUFPcUI7OztpQkE3a0U3QixvQ0E2a0VvQmpJO2lCQTVrRXBCLDRDQTRrRW9CQSxFQUFFNEc7a0JBM2tFdEIsbURBMmtFb0I1RyxFQUFFNEcsU0FEUzthQTJDeENzRyxzQkFBc0JsTixFQUVrQjRHO01EcG9HN0M7TUNtb0dJO1lBQ2dEcUI7UUFDakQ7VUFBTTtXQUQyQ0M7WUFDM0MsZ0JBcCtGSmxPLGlCQW0rRitDaU8sZ0JBQVByQjtVQUNwQyxPQUQyQ3NCO1lBd0IxQixXQXhCbUJ0QjtnQkFBT3FCOzs7bUJBL21FMUMsb0NBNm1FaUJqSTttQkE1bUVqQiw2Q0E0bUVpQkEsRUFFa0I0Rzs7YUE3bUVqQyw2QkEybUVlNUc7YUExbUVmLFFBMG1FZUEsRUFFa0I0Rzs7b0JBMW1FakMsV0F3bUVlNUcsS0FFa0I0RyxxQkFEUzthQTRCakRXLEtBRXFCWDtNRGpxRzFCLElDaXFHaUNxQjtNQUM5QjtRQUFNO1NBRHdCQztVQUN4QixnQkFqZ0dKbE8saUJBZ2dHNEJpTyxnQkFBUHJCO1FBQ2pCLFNBRHdCc0Isa0JBcG9FbkIseUJBb29FWXRCO1FBT0EsV0FQQUE7UUFDakIsSUFEd0JxQjtpQkFERTtJQXhsRzVCWixlQXVsR0ZFO2FBeG5FRTRGLFVBQVVuTixFQUFFNEc7TUFDTixJQUFKbE0sRUFBSSxTQURJc0YsRUFBRTRHO2NBQ1ZsTSxpQkFJRiw2QkFKRUE7TUFFRixxQ0FIVXNGLEVBQUU0RyxPQUtDO2FBRWJ3RyxVQUFVdkMsVUFBVTdLLEVBQUU0RztNQUNmLHVCQURHaUUsVUFBVTdLLEVBQUU0RztNQUNmLHNDQUFrQzthQWV6Q3lHLFdBQVd4QyxVQUFVN0ssRUFBRTRHO01BQ2pCLElBZFlwSixFQWNaLGNBREtxTixVQUFVN0ssRUFBRTRHO01BWnpCLEdBRG9CcEo7UUFJSjtTQURQOFAsR0FIVzlQO1NBR2hCakQsRUFIZ0JpRDtTQUlKLDhCQUpJQTtTQUtOLGlCQURKdUIsSUFETnhFO1NBRVUsS0FGTCtTO1NBRUssS0FESnZPO1FBQ0k7Y0FFUm5FO1VBQ0U7WUFBUyxtQ0FGUDJTO1lBRUYsaUJBSEVyTixFQUVKdEY7WUFFTyxpQ0FISDJTO1lBRU8sU0FEWDNTOzs7UUFJQSxPQU5Jc0Y7TUFIQSxVQWFTO2FBSWpCc04sWUFBWS9CLFdBQVdYLFNBQVM5SztNQUNsQztRRHJrQ0wsT0NrdUVLMEwscUJBM1VBakQsV0FuMUJjZ0QsV0FBV1gsU0FBUzlLLFFBQ21CO2FBU25EeU4sWUFBWXpOLEVBQUk5RSxJQUFnQjBMO01BQ2xDLEdBRGtCMUwsSUFBUyxRQUFUQSxjQUFTQyxhQUFUckI7TUFDbEIsV0FEY2tHLEVBQW9CNEc7TUFJN0IsWUFKNkJBLFFBSzlCO01BRUEsSUFKQXJNLEVBSUEsVUFQVXlGLEVBQW9CNEc7TUFPOUIsT0FQYzlNO1FBTmxCLFdBTWNrRyxFQUFvQjRHO1FBTDNCLGdCQUsyQkE7U0FKaEMsMENBSVk1RyxFQUFvQjRHO01BV2pCLE9BUmJyTSxDQVVIO2FBR0NtVCxjQUFhcFQsSUFBS1csTUFBT0csS0FBS2hCO01BQ2hDO1FBQ2U7eUNBRmlCQTtTQUd0QixhQUhLRSxJQUFLVyxNQUFPRztTQUl6QixpQkFESTRFLElBREE0Rzs7OztpQ0FJSjttQkFBNkI7YUFFN0IrRyxlQUFjclQsSUFBS1csTUFBT0csS0FBS3dTO01BQ2pDO1FBQ2U7MENBRmtCQTtTQUd2QixhQUhNdFQsSUFBS1csTUFBT0c7U0FJMUIsaUJBREk0RSxJQURBNEc7Ozs7aUNBSUo7bUJBQTZCO2FBRTdCaUgsVUFBV3ZULElBQUtXLE1BQU9HLEtBQUtrRTtNQUNyQixJQUFMc08sR0FBSyxzQkFEcUJ0TztNQUNyQjtRQUVDLElBQUovRSxFQUFJLGVBSEdELElBQUtXLE1BQU9HLEtBQ3JCd1M7UUFHRixzQkFIRUE7UUFNRixPQUpJclQ7WUFHRGdGLDhCQUNILHNCQU5FcU8sSUFNRixNQURHck8sRUFFSTs7YUFJUHVPLGdCQUFnQjlOLEVBQUk5RSxJQUFvQjBMO01BQzFDLEdBRHNCMUwsSUFBTSxRQUFOQSxXQUFNQyxhQUFONFMsb0JBQWdCLFFBQUU7TUFBWixTQUVwQjNQO1FBQ047VUFBYyx3QkFIRTRCLEVBQ2RsRyxPQURzQzhNLFFBRWxDeEk7Y0FNRm1COztpQ0FGRSxXQU5jd08sT0FNZDtVQUdBO1lBQUssV0FUU0E7Z0JBU0dDOytDQUFTLGlCQUQ1QnpPLEVBQ21CeU87VUFDakIsTUFGRnpPLEVBRVM7TUFWYSxPQUVwQm5CLENBVVA7YUFFQzZQLGdCQUFpQjNULElBQUtXLE1BQU9HLEtBQUtoQjtNQUM1QixJQUFKNEYsRUFBSSxXQURXMUYsSUFBS1csTUFBT0c7TUFFYix1QkFEZDRFLElBQ2MseUJBRmtCNUYsR0FFSTthQUV0QzhULGlCQUFrQjVULElBQUt5VCxJQUFLOVMsTUFBT0csS0FBS3dTO01BQzdCLHFDQUQ2QkEsSUFFbEMsYUFGWXRULElBQVVXLE1BQU9HO01BRTdCLHVCQUFKNEUsRUFGcUIrTixJQUNyQm5ILE9BRXlCO2FBRTNCdUgsY0FBZTdULElBQUtXLE1BQU9HLEtBQUtrRTtNQUN6QixJQUFMc08sR0FBSyxzQkFEeUJ0TztNQUN6QixTQUNMeU8sV0FBUyw2QkFEVEgsR0FDb0I7TUFEZjtlQURhM1MsWUFBWXFFO09BUXJCLGlDQVBUc087T0FRSSxhQVRTdFQsSUFHYjhULFFBSHlCaFQ7TUFTckIsdUJBQUo0RSxLQVBBK04sS0FNQW5ILE9BRXlCO2FBSTNCeUgscUJBQ0MvVCxJQUFNWSxJQUFxQkQsV0FBd0IyUztNQUN0RCxHQURTMVMsSUFBTSxRQUFOQSxXQUFNQyxhQUFONFMsb0JBQWdCLFFBQUU7TUFBWixRQUFvQyxrQkFBUk8sTUFBUTFQLGVBQVIwUDtNQUMzQyxJQUFJalQsTUFERGYsVUFHZ0I7TUFBTCxTQUdOOEQsRUFBRWhEO1FBQ1I7VUFDYTtzQ0FSdUN3UztXQVF2QyxLQUZMeFM7V0FHZ0Qsb0JEenFDL0QsT0NzcUNhZ0Q7V0FHWTswQ0FSaEIvQyxNQUQwQkosU0FNcEJHLE1BRUZtVDs7Y0FJRmhQOzsrQkFEZSxXQVhad08sT0FXWTtVQUNWLFNBTkQzUztVQU1tQixxQkFBdkJtRSxrQkQ1cUNYLE9Dc3FDYW5CLGVBTWtDO01BVDVCLHNCRG5xQ25CLE9Dc3FDYUEsRUFObUNrUSxZQWNwQzthQUVMRSxrQkFBbUJsVSxJQUFLVyxNQUFPRyxLQUFLa0U7TUFDN0IsSUFBTHNPLEdBQUssc0JBRDZCdE87TUFDN0IsU0FDTHlPLFdBQVMsNkJBRFRILEdBQ29CO01BRGYsSUFFTFEsUUFIc0JuVCxZQUFZcUU7TUFLeEIsNEJBTE9oRixPQUVqQnlULEtBQ0FLLFFBSDZCaFQsS0FDN0J3UyxHQU8wQzthQUU1Q2EsU0FBVTVQLElBQUl6RTtNQUNNLDBCQURWeUUsSUFDVSxvQkFETnpFLEdBQ3FCO2FBRW5Dc1UsUUFBUzdQLElBQUl6RTtNQUNMLCtDQURLQSxHQUNVOzthQS9xQ3pCdVUsT0FBT3hILElBQUl5SDtNQVpGLFVBWUVBOzs7Ozs7Ozs7Ozs7Ozs7TUFBd0IsMENBQTVCekgsVUFBSXlILEdBQTZDOzthQUl4REMsTUFBTS9OLEtBQUtnTztNQUNiO1FBQUksb0NBREloTyxLQUFLZ087Ozs4QkFFSzttQkFBSzthQUVyQkMsT0FBT2pPLEtBRVA4TjtNRHpCTCxVQ3lCS0E7UUFEYyxJQUFQRSxJQUNQRixNQURjLGFBRFA5TixLQUNBZ087TUFDOEIsK0JBRjlCaE87TUFFTSwrREFBYjhOO2FBRUFJLE1BQU1wVSxFQUNOZ1U7TUQ1QkwsVUM0QktBO1FBQ0U7V0FERkE7U0FDWSw4QkFETnBSO1NBQ00sbUJBRk41QyxJQUVBbUUsTUFGQW5FO2dCQUdBcVUsb0JBREFsUSxPQUNBa1E7U0FHQyxpQ0FMRHpSLEVBRUF5UjtRQURKO1NBRytCLDJCQUwzQnJVO1NBSzJCO1FBQVgseURBSnRCZ1U7TUFNbUM7a0NBUDdCaFU7T0FPNkI7TUFBdEIsOERBTmJnVTthQVNBTSxJQUFJOVEsRUFFSndRO01EdkNMLFVDdUNLQTtRQURXLElBQUxwUixFQUNOb1IsTUFEaUIsK0NBRGJ4USxFQUNFWjtNQUNBLDZDQUFOb1I7YUFFQU8sU0FFQVA7TUQzQ0wsVUMyQ0tBO1FBRGMsSUFBUEUsSUFDUEYsTUFEYyxPQUFQRTtNQUNELHNDQUFORixHQUF1QzthQUV2Q1EsVUFBVWhSLEVBRVY3RCxHRC9DTCxxQkMrQ0tBLE9BQVUsV0FGQTZELEVBRVY3RDthQUVBOFUsUUFFQVQ7TURuREwsVUNtREtBLHdDQURXLElBQUw1USxFQUNONFEsTUFEVyxPQUFMNVE7TUFDQSxvQ0FBTjRRLEdBQXFDO2FBRXJDVSxlQUdBVjtNQUhpQixVQUdqQkE7NEJBRFM7O3dCQUNUQSxPQUZXLElBQUw1USxFQUVONFEsTUFGVyxVQUFMNVE7TUFFQSw0Q0FBTjRRLEdBQTZDO2FBRTdDVyxVQUdBWDtNQUhZLFVBR1pBOzs2QkFGVSxJQUFMaFUsRUFFTGdVLE1BRlUsT0FBTGhVOytCQUNPLElBQUx3RCxFQUNQd1EsTUFEWSxPQUFMeFE7TUFDRCxzQ0FBTndRLEdBQXVDO2FBRXZDWSxpQkFJQVo7TUFKbUIsVUFJbkJBOzRCQURTOztpQkFDVEE7NkJBSFUsSUFBTGhVLEVBR0xnVSxNQUhVLFVBQUxoVTsrQkFDTyxJQUFMd0QsRUFFUHdRLE1BRlksVUFBTHhRO01BRUQsNkNBQU53USxHQUErQzthQUUvQ2EsU0FFQWI7TUR2RUwsVUN1RUtBLHdDQURZLElBQUx4USxFQUNQd1EsTUFEWSxPQUFMeFE7TUFDRCxxQ0FBTndRLEdBQXNDO2FBRXRDYyxnQkFHQWQ7TUFIa0IsVUFHbEJBOzRCQURTOzt3QkFDVEEsT0FGWSxJQUFMeFEsRUFFUHdRLE1BRlksVUFBTHhRO01BRUQsNkNBQU53USxHQUE4QzthQUU5Q2UsT0FFQWY7TURoRkwsVUNnRktBLHNDQURVLElBQUxoVSxFQUNMZ1UsTUFEVSxPQUFMaFU7TUFDQyxtQ0FBTmdVLEdBQW9DO2FBRXBDZ0IsY0FHQWhCO01BSGdCLFVBR2hCQTs0QkFEUzs7c0JBQ1RBLE9BRlUsSUFBTGhVLEVBRUxnVSxNQUZVLFVBQUxoVTtNQUVDLDJDQUFOZ1UsR0FBNEM7YUFFNUNpQixRQUVBakI7TUR6RkwsVUN5RktBLHdDQURXLElBQUxwUixFQUNOb1IsTUFEVyxPQUFMcFI7TUFDQSxxQ0FBTm9SLEdBQXNDO2FBRXRDa0IsWUFFQWxCO01EN0ZMLFVDNkZLQSx5Q0FEYSxJQUFMeFUsRUFDUndVLE1BRGEsT0FBTHhVO01BQ0Ysc0NBQU53VSxHQUF1QzthQUV2Q21CLGlCQUdBbkI7TUFIbUIsVUFHbkJBOzRCQURTOzt5QkFDVEEsT0FGYSxJQUFMeFUsRUFFUndVLE1BRmEsVUFBTHhVO01BRUYsNkNBQU53VSxHQUErQzthQUUvQ29CLGFBQWE1UixFQUVid1E7TUR0R0wsVUNzR0tBO1FBRFcsSUFBTHBSLEVBQ05vUixNQURXLGtDQURFeFEsRUFDUFo7TUFDQSw2Q0FBTm9SO2FBV0FxQixXQUFXN1IsRUFBRWQ7VUFSUStLLE1BQUk3SyxFQVFaRjtNQVBmO1dBRDJCRTtVQUlmLElBREg4UCxHQUhrQjlQLEtBR3ZCakQsRUFIdUJpRCxLQUlmLGlCQUlDWSxFQUxUN0Q7VUFDUSxVQUVRLHdCQUFMa0QsRUFOUTRLLGVBQUk3SyxFQUdsQjhQO1VBQ0csSUFKZTlQLEVBR2xCOFA7O3lDQUhjakYsS0FTUzthQVU5QjZILFFBQVE1UztVQVJRK0ssTUFBSTdLLEVBUVpGO01BUFY7V0FEc0JFO2NBR2I4UCxHQUhhOVAsS0FHbEJqRCxFQUhrQmlEO29CQUdsQmpEO1lBRWtCO2dCQUZsQkE7YUFFOEIsaUNBQWxCNFYsR0FMRTlIOzthQUFJN0ssRUFHYjhQOztjQUhhOVAsRUFHYjhQOzt5Q0FIU2pGLEtBU1M7YUFFekIrSCxhQUFheFYsRUFBRTRDO01BQ2pCOztpQkRoSUg7bUJDbUlXLElBRElBO21CQUNKO3FCQUFVLHNDQUROQSxFQUhHNUMsSUFLSTs7aUJBQ1IsUUFDVjtlQVBnQjRDLEVBT2Q7YUFFRDZTLFlBQVk3UztNQUNkOztpQkR6SUg7bUJDMklvQixJQUFMQSxXQUFLLFVBQUxBO2lCQUNELFFBQ1Y7ZUFMYUEsRUFLWDthQUVEOFMsY0FBY3JRLEVBQUV6QztNQUNsQjs7aUJEaEpIO21CQ21KVyxJQURLQTttQkFDTDtxQkFBVSx1Q0FKRnlDLEVBR0h6QyxJQUVNOztpQkFDUixRQUNWO2VBUGlCQSxFQU9mO2FBRUQrUyxhQUFhL1M7TUFDZjs7aUJEekpIO21CQzJKcUIsSUFBTEEsV0FBSyxVQUFMQTtpQkFDRixRQUNWO2VBTGNBLEVBS1o7YUFFRGdULFlBQVloVDtNQUNkOztpQkRoS0g7bUJDa0tvQixJQUFMakQsV0FBSyxVQUFMQTtpQkFDRCxRQUNWO2VBTGFpRCxFQUtYO2FBRURpVCxXQUFXalQ7TUFDYjs7aUJEdktIO21CQ3lLbUIsSUFBTGpELFdBQUssVUFBTEE7aUJBQ0EsUUFDVjtlQUxZaUQsRUFLVjthQUVEa1QsYUFBYWxUO01BQ2Y7O2lCRDlLSDttQkNnTHFCLElBQUxqRCxXQUFLLFVBQUxBO2lCQUNGLFFBQ1Y7ZUFMY2lELEVBS1o7YUFFRG1ULGNBQWNuVDtNQUNoQjs7aUJBQVc7O3dDQUVLLElBQUxqRCxXQUFLLFVBQUxBOzBDQUNPLElBQUxxRyxhQUFLLFVBQUxBO2lCQUNGLFFBQ1Y7ZUFOZXBELEVBTWI7YUFFRG9ULGNBQWNwVDtNQUNoQjs7aUJEN0xIO21CQytMc0IsSUFBTGpELFdBQUssVUFBTEE7aUJBQ0gsUUFDVjtlQUxlaUQsRUFLYjthQUVEcVQsS0FBS2xUO01BQ1Asa0JBRE9BO01BQ1AscUJBQXVCLElBQU0rQyxhQUFOLE9BQU1BLEdBQWU7TUFBOUIsd0RBQThCO2FBRTFDb1EsT0FBT25UO01BQ1Qsa0JBRFNBO01BQ1QscUJBQXVCLElBQVM4QyxlQUFULE9BQVNBLEtBQWdCO01BQWxDLHdEQUFrQzthQUU5Q3NRLFFBQVNDLE1BQVlDO01Eek0xQjtlQ3lNY0Q7Ozs7Ozs7O2VBQVlDOzs7Ozs7O1lBRUhqVCxFQUZHaVQsVUFFYi9RLEVBRkM4UTtRQUV1QiwwQ0FBeEI5USxFQUFVbEM7TUFDUixrREFBNkQ7YUEzTW5Fa1QsU0FDSjNXO01BRDhCLFVBQzlCQTs7Ozs7Y0FVRTtpQkFWRkE7ZUFVRTs7a0JBQStCLDBCQUFtQixVQUFiMEYsRUFBYSxTQUFWRCxHQUFzQjtlQUE3QyxxQ0FEWnhDO2NBQ0U7WUFGUyxJQUZaRixJQU5OL0MsS0FRa0IsZ0NBVGQyVyxTQU9FNVQ7WUFFRTs7a0NBSEssSUFBTGxELEVBTFJHLEtBS2EscUJBQUxIOztxQkFMUkc7O2tCQVlrQnlGO2NBQXlCLHVEQUF6QkE7WUFESTtNQVBKLE9BSmxCekYsQ0FZdUQ7YUFYdkQ0VyxNQUFJelc7TUFDTixlQURNQTs0Q0FJTDthQUVDMFcsZ0JBQWMzVixJQUFJQyxNQUFNQyxLQUFLQyxHQUFHQztNQUNsQyw2QkFEK0JELEdBQWZILElBQUlDLFNBQU1DLE9BQU5EO01BRXBCLDZCQUYrQkUsR0FBR0M7TUFFbEMsV0FGMEJGO01BRTFCLFFBQ2lCO2FBU2YwVixnQkFBYzVWLElBQUlDLE1BQU1FO01BQzFCO1FBQ0U7Ozs7WUFGd0JBO1lBQVZIO1lBQUlDO2tDQUFKRCxPQUFJQztRQUlsQjtZQURHSzs7UUFDSDs7O1VBSmNOO1VBQUlDO1VBSWxCLHNCQUpjRCxPQUFJQztRQUlsQixNQURHSyxJQUdNO2FBbUJUdVYsZUFBYTFWLEdBQUd4QjtNQUNsQiw2QkFEZXdCO01BaEJmLDJDQWdCa0J4QixXQWhCbEI7O1lBQ0FRO1FBQ0U7VUFBTSxJQWxCK0JxQixFQWtCL0IsZ0JBY1U3QixFQWZsQlE7VUFDUSxVQWxCK0JxQjtXQW9CekIsZ0JBWUk3QixFQWhDT3NCLE1BaUJ6QmQsRUFlZWdCOzs7cUJBaEN3Qks7Ozs7Ozt3QkFxQnpCLGdCQVdJN0IsRUFoQ09zQixNQWlCekJkLEVBZWVnQjt3QkFQRCxnQkFPSXhCLEVBaENPc0IsTUFpQnpCZCxFQWVlZ0I7d0JBVEQsZ0JBU0l4QixFQWhDT3NCLE1BaUJ6QmQsRUFlZWdCO3dCQVZDLGdCQVVFeEIsRUFoQ09zQixNQWlCekJkLEVBZWVnQjt3QkFSRCxnQkFRSXhCLEVBaENPc0IsTUFpQnpCZCxFQWVlZ0I7eUJBYkYsZ0JBYUt4QixFQWhDT3NCLE1BaUJ6QmQsRUFlZWdCOzs7Ozs7Ozs7ZUEvQmYsNkJBK0JlQSxHQUFHeEIsRUFoQ09zQixTQWlCekJkLElBakJ5QmM7ZUFFekIsNkJBOEJlRTtlQTdCSSxlQUhvQks7ZUFHdkMsNkJBNkJlTDtlQTdCSSxTQUNBLE1BSm9CSztlQUl2Qyw2QkE0QmVMO2VBNUJmLFdBYUFoQjs7O1VBQ1EsU0FEUkE7OztNQWFBLGdCQUVrQlIsRUFoQ09zQixNQWdDVkU7Z0RBR087YUFFcEIyVix3QkFBc0JuWDtNQUNmLElBQUx3QixHQUFLO01BQ1QsZUFESUEsR0FEb0J4QjtNQUV4QixtQ0FESXdCLEdBRWM7YUFVaEI0VixhQUFXNVY7TUFDYixvQ0FEYUEsY0FDYzthQUV6QjZWLGFBQVc3VixHQUFHckI7TUFDaEIsU0FEZ0JBOzBDQUFIcUIsUUFDdUM7SUFNbkM7O0tBREE7SUFEakI7YUFPTThWLGVBQWF0WCxFQUFFRztNQUNyQixTQURxQkEsRUFDUDtNQUVaLElBQUkrQixFQUhlL0I7TUFJbkIsZUFKaUJILEVBQUVHO01BR25CO09BRXVCLHdCQUZuQitCO09BTE4sK0JBRE01QjswQ0FHYU4sT0FLYztJQVpqQyxTQWNFdVgsWUFBVS9WLEdBQUdyQjtNQUNmLFdBRGVBO2VBRWIsZUFGVXFCLEdBQUdyQjs7aUJBUWIsNkJBUlVxQjtrQkFJViw2QkFKVUEsT0FJVixlQUpVQSxHQUFHckIsR0FRUztJQXRCeEIsU0FrQ0VxWCxxQkFBbUJ4WDtNQUNyQjt1Q0FEcUJBOztjQUVuQlE7VUFDRTtZQUFNLDBCQUhXUixFQUVuQlE7WUFDUTs7OzswQkFFRztZQUZILFNBRFJBOzs7UUFLQTs7Ozs4QkFFQTtRQWpCRixXQWlCTztJQTNDUCxTQWlERWlYLGNBQVlqVyxHQUFHckI7TUFDWCw4QkFEV0E7TUFDWDtRQUlGLGNBTGFBOzRDQUFIcUI7b0JBR1Ysb0NBSFVBO01BQ1I7T0FNTyxvQ0FQSXJCO09BU1IsdUJBRkRtQyxPQVBTbkMsRUFPVG1DLEdBR0csaUNBVk1uQztNQVliLDZCQVpVcUIsR0FRTnhCO01BUEYsU0FZQyxxQkFMQ0E7TUFLRCxZQUNELDZCQWRRd0IsZ0JBY2lCO0lBL0QvQixTQWlFRWtXLDBCQUF3QmxWLG9CQUFvQmhCLEdBQUdyQjtNQUNqRCxhQUQwQnFDO01BQzFCO1dBQ0l4QyxFQWtCTyxpQ0FwQnNDRzs7O29CQUU3Q0gsRUFFTyxpQ0FKc0NHO29CQUU3Q0gsRUFHTyxpQ0FMc0NHO29CQUU3Q0gsRUFJTyxpQ0FOc0NHO29CQUU3Q0gsRUFLTyxpQ0FQc0NHO29CQUU3Q0gsRUFNTyxpQ0FSc0NHO29CQUU3Q0gsRUFPTyxpQ0FUc0NHO29CQUU3Q0gsRUFRTyxpQ0FWc0NHO29CQUU3Q0gsRUFTTyxpQ0FYc0NHO29CQUU3Q0gsRUFVTyxpQ0Fac0NHO29CQUU3Q0gsRUFXUSxpQ0FicUNHO3FCQUU3Q0gsRUFZUSxpQ0FkcUNHO3FCQUU3Q0gsRUFhUSxpQ0FmcUNHO3FCQUU3Q0gsRUFjUSxpQ0FoQnFDRztxQkFFN0NILEVBZVEsaUNBakJxQ0c7cUJBRTdDSCxFQWdCUSxpQ0FsQnFDRztxQkFFN0NILEVBaUJRLGlDQW5CcUNHO01Bc0JqRCw2QkF0QjhDcUIsR0FFMUN4QjtNQURKLFNBc0JHLHFCQXJCQ0E7TUFxQkQsWUFDRCw2QkF4QjRDd0IsZ0JBd0JuQjtJQXpGM0IsU0E0RkVtVyxtQkFBaUJuVixvQkFBb0JoQixHQUFHckI7TUFDcEMsOEJBRG9DQTtNQUNwQztRQUlGLGNBTHNDQTs0Q0FBSHFCOztlQUduQyw2QkFIbUNBO2VBT25DLDBCQVBlZ0Isb0JBQW9CaEIsR0FBR3JCLEVBT1U7SUFuR3BELFNBMkdFeVgsa0JBQWdCcFcsR0FBR3JCO01BQ2YsOEJBRGVBO01BQ2Y7UUFJRjs7ZUFMaUJBOzs7UUFMckI7b0JBUUk7TUFGRTtPQVVPLG9DQVhRQTtPQWFaLHVCQUZEbUMsT0FYYW5DLEVBV2JtQyxHQUdHLGlDQWRVbkM7TUFnQmpCLDZCQWhCY3FCLEdBWVZ4QjtNQVhGLFNBZ0JDLHFCQUxDQTtNQUtELFlBQ0QsNkJBbEJZd0IsZ0JBa0JhO0lBN0gvQixTQWdJRXFXLHVCQUFxQnJWLG9CQUFvQmhCLEdBQUdyQjtNQUN4Qyw4QkFEd0NBO01BQ3hDO1FBSUY7O2VBTDBDQTs7O2VBbk01Q0o7O2VBc01FO2VBUUEsMEJBWG1CeUMsb0JBQW9CaEIsR0FBR3JCLEVBV007SUEzSXBELElBdUtFMlg7SUF2S0YsU0FrTEVDLFFBQU0vVSxNQUFNQyxNQUFNOUM7TUQxUHZCO1lDNFBVK0MsZUFBTEM7UUFDRSxXQUhJSCxNQUFZN0MsRUFFbEJnRDtrQkFBS0Q7OztnQkFQQUUsV0FBTEM7WUFDRSxXQUlVSixNQUFNOUM7WUFIaEIsV0FHSTZDLE1BQVk3QyxFQUxsQmtEO3NCQUFLRDs7VUFEQztNQU9BO0lBbkxSLFNBd0xFNFUsUUFBTXhXLElBQ1Isb0NBRFFBLE1BQ2M7SUF6THRCLFNBaVBFeVcsZ0JBQWN6VyxHQUFHeEIsRUFBRXVEO01BQ3JCLDZCQURnQi9CO01BRWhCLGVBRmdCQSxHQUFHeEI7TUFFbkIsR0FGcUJ1RCxPQUtYcEQsRUFMV29ELEtBTWQsNkJBTlMvQixPQU9ULFVBUFNBLEdBS05yQjtNQUlWLG9DQVRnQnFCLE1BU007SUExUHRCLFNBME9FMlcsY0FBWTNXLEdBQUc0QjtNQUNqQiw2QkFEYzVCO01BRWQsUUFpQkUwVyxVQXJFQUYsUUFrRFl4VyxHQUFHNEI7TUFFakIsb0NBRmM1QixNQUdRO0lBN090QixTQW9PRTRXLGFBQVc1VyxHQUFHNEI7TUFDaEIsNkJBRGE1QjtNQUViLFFBdUJFMFcsVUFyRUFGLFFBNENXeFcsR0FBRzRCO01BRWhCLG9DQUZhNUIsTUFHUztJQXZPdEIsU0EwTkU2VyxjQUFZN1csR0FBRzRCO01BQ2pCLFNBQUlKLE1BQU14QjtZQUFPckIsV0FBSEg7UUFDWixlQURRd0IsR0FBSXhCO1FBRVosNkJBRlF3QjtRQUVSLGlCQUZRQSxHQUFPckI7TUFLakIsNkJBTmNxQjtNQU9kLFFBTkl3QixNQW5DRmdWLFFBa0NZeFcsR0FBRzRCO01BT2pCLG9DQVBjNUIsT0FRUztJQWxPdkIsU0E2UEUwVyxVQWxFZTFXLEdBQUlyQjtNQUNyQixVQURxQkEsZUFFUixvQkFGSXFCO2VBQUlyQjs7K0JBeUJMLElBQUxpRCxFQXpCVWpELEtBeUJMLHFCQXpCQ3FCLEdBeUJONEI7O2dDQUhLLElBQUxGLElBdEJVL0MsS0FzQkwscUJBdEJDcUIsR0FzQk4wQjtVQUNJLElBQUxXLElBdkJXMUQ7VUF1Qk4sb0JBdkJFcUIsR0F1QlBxQzs4QkFwQkssSUFBTEQsRUFIV3pELEtBR04sb0JBSEVxQixHQUdQb0M7a0JBSFd6RCxLQTRCSm9ELFdBQUh2RDtlQTBCWmlZLGdCQXREZXpXLEdBNEJIeEIsRUFBR3VEOzs4QkFqQkQsSUFBTFMsRUFYVTdELEtBV0wscUJBWENxQixHQVdOd0M7UUFORyxJQUFMeEQsRUFMWUw7UUFLUCxtQkFMR3FCLEdBS1JoQjs7UUFHUSxJQUFMc0QsSUFSUzNELEtBUUosb0NBUkFxQixHQVFMc0M7TUFTSyxJQUFMQyxJQWpCUzVEO01BaUJKLHNCQWpCQXFCLEdBaUJMdUMsSUFXK0I7SUF2TjNDLFNBbVRFdVUsb0JBQWtCOVcsR0FBR3hCLEVBQUV1RDtNQUN6QixHQUR5QkE7WUFHaEJwRCxFQUhnQm9EO1FBSW5CLDZCQUpjL0I7UUFLZCxlQUxjQSxHQUFHeEI7UUFNakIsNkJBTmN3QjtRQU9kLGlCQVBjQSxHQUdYckI7UUFJSCxvQ0FQY3FCO01BRVIsc0JBRlFBLEdBQUd4QixFQVFLO0lBM1Q1QixTQTZTRXdZLGtCQUFnQmhYLEdBQUc0QjtNQUNyQiw2QkFEa0I1QjtNQUVsQixRQWhETStXLGlCQXZFSlAsUUFxSGdCeFcsR0FBRzRCO01BRXJCLG9DQUZrQjVCLE1BR0k7SUFoVHRCLFNBK1BNK1csaUJBeUNXL1csR0F6Q1FyQjtNQUN6QixVQUR5QkEsZUFFWixvQkF1Q0lxQjtlQXpDUXJCOzsrQkF5QlQsSUFBTGlELEVBekJjakQsS0F5QlQseUJBZ0JDcUIsR0FoQk40Qjs7O1lBSEs7aUJBdEJTakQ7YUFnQ3pCO3VCQUFVcUI7b0JBQU9yQixXQUFISDtnQkFDWixlQURRd0IsR0FBSXhCO2dCQUVaLDZCQUZRd0I7Z0JBRVIsd0JBRlFBLEdBQU9yQjtZQUtqQiw2QkFJaUJxQjtZQUhqQixRQU5Jd0IsTUF2R0ZnVixRQWdIZXhXLEdBbkJOMEI7WUFnQlgsb0NBR2lCMUI7VUFsQkYsSUFBTHFDLElBdkJlMUQ7VUEwQ3pCLDZCQURpQnFCO1VBRWpCLFFBM0NNK1csaUJBdkVKUCxRQWdIZXhXLEdBbEJQcUM7VUFvQlYsb0NBRmlCckM7OEJBdENGLElBQUxvQyxFQUhlekQsS0FHVixvQkFzQ0VxQixHQXRDUG9DO2tCQUhlekQsS0E0QlJvRCxXQUFIdkQ7ZUF3QlpzWSxvQkFYZTlXLEdBYkh4QixFQUFHdUQ7OzhCQWpCRCxJQUFMUyxFQVhjN0QsS0FXVCx5QkE4QkNxQixHQTlCTndDO1FBTkcsSUFBTHhELEVBTGdCTDtRQUtYLG1CQW9DR3FCLEdBcENSaEI7O1FBR1EsSUFBTHNELElBUmEzRCxLQVFSLG9DQWlDQXFCLEdBakNMc0M7TUFTSyxJQUFMQyxJQWpCYTVEO01BaUJSLHNCQXdCQXFCLEdBeEJMdUMsSUFXbUM7SUEzUi9DLFNBK1RFMFUsWUFBWTNYLFNBQXlCVSxHQUFHckI7TUFDMUMsR0FEY1csSUFBTSxRQUFOQSxXQUFNQyxhQUFOd0Q7TUFDZCxRQURnQyxrQkFBTkUsSUFBTUQsZUFBTkM7TUFDMUIsR0FEMEJBLElBRXhCLGlCQUZxQ2pELEdBQUdyQixRQUl4QyxVQUpxQ3FCLEdBQUdyQjtNQUl6QixvQ0FKc0JxQixHQUF6QitDLElBS1U7SUFwVXhCLFNBc1VFbVUsWUFBV3hZLElBQU1ZLFNBQXdCMkQsSUFBSXRFO01BQy9DLEdBRG1CVyxJQUFNLFFBQU5BLFdBQU1DLGFBQU40RDtNQUNuQixRQURzQyxrQkFBTkosSUFBTUMsZUFBTkQ7TUFDaEMsR0FEYXJFO1FBS0wsSUFER3NCLEdBSkV0QixPQUtMLDRCQURHc0IsSUFDSCxJQUpKb0QsS0FHT3BEOztXQUhQb0QsS0FFVSw0QkFIS0Q7TUFRbkIsZUFSZ0NKLEtBQVdFLElBQ3ZDRyxLQUQyQ3pFO01BU3ZDLElBQUpILEVBQUksNEJBUko0RTtNQVNKLDRCQVRJQTtNQVNKLE9BREk1RSxDQUVIO0lBalZELFNBbVZFMlksYUFBWXpZLElBQU1ZLFNBQXVCMkQsSUFBSUssR0FBRzNFO01BQ2xELEdBRG9CVyxJQUFJLFFBQUpBLFdBQUlDLGFBQUo0RDtNQUNwQixRQURzQyxrQkFBTkosSUFBTUMsZUFBTkQ7TUFDaEMsR0FEY3JFO1FBSUcsSUFBTnNCLEdBSkd0QixPQUlHLDRCQUFOc0IsSUFBTSxJQUhib0QsS0FHT3BEOztXQUhQb0QsS0FFVSw0QkFITUQ7TUFNcEIsZUFOZ0NKLEtBQVdFLElBQ3ZDRyxLQUQ4Q3pFO01BT2xELDZCQVArQzJFLEdBQzNDRjtNQU1KLG1DQU5JQSxLQU9XO0lBM1ZmLFNBNlZFZ1UsWUFBVzFZLElBQU1ZLFNBQXVCMkQsSUFBSU8sSUFBSTdFO01BQ2xELEdBRG1CVyxJQUFJLFFBQUpBLFdBQUlDLGFBQUo0RDtNQUNuQixRQURxQyxrQkFBTkosSUFBTUMsZUFBTkQ7TUFDL0IsR0FEYXJFO1FBSUksSUFBTnNCLEdBSkV0QixPQUlJLDRCQUFOc0IsSUFBTSxJQUhib0QsS0FHT3BEOztXQUhQb0QsS0FFVSw0QkFIS0Q7TUFNbkIsZUFOK0JKLEtBQVdFLElBQ3RDRyxLQUQ4Q3pFO01BT2hCLHFDQU45QnlFO01BTUo7UUFBVyx1QkFQbUNJOztRQU9uQyw0QkFOUEo7OztNQU1KLG1DQU5JQSxLQU9XO0lBcldmLFNBdVdFaVUsVUFBU2xVLElBQUtGLElBQU0zRCxJQUFZb0UsS0FBSy9FO01BQ3ZDLEdBRHNCVyxJQUFNLFFBQU5BLFdBQU1DLGFBQU53RDtNQUNiLElBQUxPLEdBQUssc0JBRHlCSTtNQUN6QjtRQUVQLGVBSFNQLE9BQVdKLEtBQU5FLElBQ1pLLEdBRG1DM0U7UUFJckMsK0JBSEUyRTtRQUtGO1lBREdLLDhCQUNILHNCQUxFTCxJQUtGLE1BREdLLEVBRUk7SUE5V1QsU0FnWEUyVCxnQkFBZ0JoWSxJQUFhMkQsSUFBSWpELEdBQUc2RDtNQUN0QyxHQURrQnZFLElBQU0sUUFBTkEsV0FBTUMsYUFBTndEO01BQ2xCLFlBRGtCQTtNQUNULG9CRHpiWixPQ3VZS2tVLGlCQWlENkJoVSxJQUFJakQ7TUFDMUIscUNBRDZCNkQsR0FDRjtJQWpYcEMsU0FtWEUwVCxnQkFBZTdZLElBQU1ZLFNBQTBCMkQsSUFBSVk7TUFDckQsR0FEdUJ2RSxJQUFNLFFBQU5BLFdBQU1DLGFBQU40RDtNQUN2QixRQUQwQyxrQkFBTkosSUFBTUMsZUFBTkQ7TUFDcEMsR0FEaUJyRTtRQUtULElBREdzQixHQUpNdEIsT0FLVCw0QkFER3NCLElBQ0gsSUFKSm9ELEtBR09wRDs7V0FIUG9ELEtBRVUsNEJBSFNEO01BUXZCLG1CQVJvQ0osS0FBYUUsSUFDN0NHLEtBRGlEUztNQVM3QyxJQUFKckYsRUFBSSw0QkFSSjRFO01BU0osNEJBVElBO01BU0osT0FESTVFLENBRUg7SUE5WEQsU0FnWUVnWixpQkFBZ0I5WSxJQUFNWSxTQUF5QjJELElBQUlLLEdBQUdVO01BQ3hELEdBRHdCMUUsSUFBSSxRQUFKQSxXQUFJQyxhQUFKNEQ7TUFDeEIsUUFEMEMsa0JBQU5KLElBQU1DLGVBQU5EO01BQ3BDLEdBRGtCckU7UUFJRCxJQUFOc0IsR0FKT3RCLE9BSUQsNEJBQU5zQixJQUFNLElBSGJvRCxLQUdPcEQ7O1dBSFBvRCxLQUVVLDRCQUhVRDtNQUdPLGNBR2pCYztRQUNaLGVBUGtDbEIsS0FBYUUsSUFDN0NHLEtBS1VhO1FBRVosNkJBUm1EWCxHQUNqREY7UUFPRixtQ0FQRUEsS0FRYztNQU5hLHFDQUh5QlksSUFVbkQ7SUExWUwsU0E0WUV5VCxjQUFhdFUsSUFBTTdELElBQWEyRCxJQUFJUyxLQUFLRztNQUMzQyxHQURxQnZFLElBQU0sUUFBTkEsV0FBTUMsYUFBTndEO01BQ1osSUFBTE8sR0FBSyxzQkFENkJJO01BQzdCO1FBRVAsbUJBSGFQLE9BQU1KLEtBQWFFLElBQzlCSyxHQUR1Q087UUFJekMsK0JBSEVQO1FBS0Y7WUFER0ssOEJBQ0gsc0JBTEVMLElBS0YsTUFER0ssRUFFSTtJQW5aVCxTQXNaTStULE9BV0ovWTtNQVhXLFVBV1hBOzs7O1lBTkUsTUFNRkEsS0FOa0IsZ0NBTGQrWSxPQUlFOVY7WUFDRTs7WUFITjtpQkFTRmpEO2FBVEU7O2dCQUErQiwwQkFBbUIsVUFBYjBGLEVBQWEsT0FBVkQsR0FBa0I7YUFBekMscUNBRFoxQzthQUNHOzs7Z0JBQ2lCO21EQUFNNEMsRUFBT2xDLEVBQTRCO1lBQTNELG9EQURIQzs7O29CQVNOMUQ7O2FBQ1csSUFET3lGLFVBQVJDLFVBQ0MsV0FET0Q7YUFDUCxPQURPQSxNQUNaRyxJQURONUYsa0JBQVUwRixLQUNKRTs7O1lBSkosUUFHRjVGLEtBSG1CLGdDQVJmK1ksT0FPR2xUO1lBQ0U7TUFTSixPQU5MN0YsQ0FNTTtJQXZhUixTQXpDRWdaLFVBQVEvUyxJQUFJNEMsSUFBSWhFLElBQUk1QjtNQUN0QixTQUFJNkYsT0FBT2pFO1FBQVMscUNBQVRBLFNBRERvQixJQUN1QztNQUFqRCx3Q0FBSTZDLFFBRFVELElBQUloRSxJQUFJNUIsRUFFZ0I7SUF1Q3RDLFNBckNFZ1csVUFBU2paO01BQ1gsVUFEV0E7Ozs7Ozs7Ozs7OztvQkFpQmU7TUFKRixRQUlPO0lBb0IvQixTQUNNa1osU0FBUWpRLFdBbUZDM0UsSUFuRmVPLElBQXVCN0U7TUR6RXhELElDeUV3RHFHO01BQ3JEO2tCQURxREE7U0FFeEMsb0NBRmlCeEI7aUJBQXVCd0I7OztZQStDL0MsSUFES3BELEVBOUMwQ29EO1lBK0MvQyxHQW9DUy9CLEtBbkNQLHFCQUZHckIsR0E5QzBDb0Q7WUFrRDdDLFNBSkdwRCxFQUtELG9DQW5Eb0I0QjtZQW9EakIsT0FwRENvRSxXQXFEbUIsOEJBckRIcEU7WUErQ3hCO2FBTXdEO2FBQ0gseUJEL0g5RCxPQ3lFU3FVLGNBbUZTNVU7YUE3QitCLHlCRC9IakQsT0MrQkswVTtZQWdHUSw4QkF0RG9CblUsY0E4Q25CNUI7WUFDTCxhQS9DUWdHO1lBc0RKLFlBQ3VCLDhCQXZESHBFOzs7dUJBQXVCd0I7O2dCQTBDakQsT0ExQ1U0QyxXQTBDYSw4QkExQ0dwRTtnQkEyQzRCOzsyQkF3Q3ZDQTt3QkFBVzdFLFdBQU51RztvQkFDMEM7c0JEN0pyRSxPQ3lFUzJTLGNBbUZTNVU7b0JBQ3NCLGlDQURiaUM7b0JBQ2EscUNBRGxCMUIsbUJBQVc3RTtpQkF4Q2U7c0NEcEhoRCxPQytCS2daO2dCQXFGRSw4QkEzQzBCblU7Z0JBMkM0QixhQTNDNUNvRTtnQkEyQ1YsWUFDdUIsOEJBNUNHcEU7Y0F3Q2Isb0NBeENhQTtxQkFBdUJ3Qjs7Y0E2QmpELE9BN0JVNEMsV0E2QmEsOEJBN0JHcEU7aUJBbEI5QiwyQkFwQkVvVTtnQkFzRUk7O2lCQUNlLHlCRDFHeEIsT0N5RVNDLGNBbUZTNVU7aUJBbERQO3NDRDFHWCxPQytCSzBVO2dCQTBFSSw4QkFoQ3dCblU7O2dCQXFDeEI7O2lCQUNlLHlCRC9HeEIsT0N5RVNxVSxjQW1GUzVVO2lCQTdDUDtzQ0QvR1gsT0MrQkswVTtnQkErRUksOEJBckN3Qm5VO2NBc0N3QixhQXRDeENvRTtjQXNDd0MsWUFDM0IsOEJBdkNHcEU7WUEyQmQsb0NBM0JjQTs7WUFHZixJQUFMNEIsSUFIMkNKLE9BR3RDLG9DQUhleEIsSUFHcEI0QjttQkFIMkNKOztnQkFzRS9CSztlQWFQcEM7Y0FWUDs7bUNBQUk0RSxrQkFIVXhDO2VBdEUrQkw7O1lBK0VwQzs7O2FBQ2lDLHlCRHpKckQsT0N5RVM2UyxjQW1GUzVVO1lBSG1DLHFDQWhGcEJPLFNBK0VsQnNFLFFBVFV6QztVQVZoQixHQXVCU3BDLEtBckJQLDRCQTlENkMrQjtVQW9FbkI7K0NBcEVKeEI7OztZQVN4QixJQURLZ0MsSUFSMENSO1lBUy9DLEdBMEVTL0I7Y0EwRE4sSUFBTEcsS0FBSztjQUNULGtCQURJQSxLQXJJT29DO2NBcUlGLElBcElDaEgsRUFxSVYsNEJBREk0RTs7Y0F4Q0ssSUFBTHBELEdBQUs7Y0FDVCxjQURJQSxHQTdGT3dGO2NBNkZGLElBNUZDaEgsRUE2RlYsNEJBREl3QjtZQTFGK0Isb0NBWEx3RCxJQVNwQmhGO1VBSkksUUFMdUN3RyxPQXlCckQsMkJBcEJTK0M7OENBTHFCdkU7O1VBbUJiLElBQUxsQixJQW5CeUMwQyxPQW1CcEMsb0NBbkJheEIsSUFtQmxCbEI7UUFISyxRQWhCb0MwQyxPQWdCVCw2QkFBaEN6QztRQUFnQyxvQ0FoQmRpQixVQWdGbUQ7SUFqRmpGLFNBdUZFc1UsS0FBS3hZLElBQWFrRSxJQUFJN0U7TUFDeEIsR0FET1csSUFBTSxRQUFOQSxXQUFNQyxhQUFOMEQ7TUFDUDtNQUFpQyx5QkRoS3BDLE9DeUVTNFUsY0FzRkM1VTtNQUMwQixxQ0FEYk8sY0FBSTdFLEVBQytDO0lBeEZ2RSxTQXZFTW9aLEtBQUdyVDtNRERaO09DR2Msb0NBRkZBOzs7O2NBc0VBTztVQUNQLDhCQXZFT1A7VUF3RVAsOEJBeEVPQTtVQXdFUDs7O3FCQUVPRSxJQUFJakI7Y0FDTixHQURFaUIsSUFFQSw4QkE1RUFGO2NBNkVBLEtBN0VBQSxJQTBFSWY7Y0FHSixRQUNJO1VBTEoscUNBSEFzQjtVQVNQLDhCQS9FT1A7VUErRVAscUNBL0VPQTs7O2dCQTJDQUM7WUFDUCw4QkE1Q09EO1lBNkNQLDhCQTdDT0E7WUE2Q1A7Ozt1QkFFT0U7Z0JBQUw7bUJBQUtBLElBRUQsOEJBakRDRjtnQkFrREQsOEJBbERDQTtnQkFtREQsOEJBbkRDQSxTQStDS0k7Z0JBS04sOEJBcERDSjtnQkFxREQsS0FyRENBLElBK0NVRztnQkFPWCw4QkF0RENIO2dCQXNERCxRQUNLO1lBVEoscUNBSEFDO1lBYVAsOEJBeERPRDtZQXdEUCxxQ0F4RE9BO2NBMERESztVQUNOLDhCQTNET0w7VUE0RFAsOEJBNURPQTtVQTREUDs7O3FCQUVPRSxJQUFJakc7Y0FDUCxHQURHaUcsSUFFRCw4QkFoRUNGO2NBaUVELEtBakVDQSxJQThESS9GO2NBR0wsUUFDSTtVQUxILHFDQUhEb0c7VUFTTiw4QkFuRU9MO1VBbUVQLHFDQW5FT0E7O2NBR0QvRjtVQUNOLDhCQUpPK0Y7VUFLUCw4QkFMT0EsU0FHRC9GO1VBRU4scUNBTE8rRjsyQkFtRlNHLGVBQU5LO1FBQ1YsOEJBcEZPUjtRQXFGUCw4QkFyRk9BO1FBc0ZQLDhCQXRGT0EsU0FtRkdRO1FBSVYsOEJBdkZPUjtRQXVGUCxHQUpnQkc7Y0FPUEcsSUFQT0g7VUFRWiw2QkEzRkdIO1VBNEZILEtBNUZHQSxJQTBGRU07VUFHTCw2QkE3RkdOOztTQXlGSyw2QkF6RkxBO1FBOEZQLDhCQTlGT0E7UUE4RlAscUNBOUZPQTs7O2NBb0JBUztVQUNQLDhCQXJCT1Q7VUFzQlAsOEJBdEJPQSxTQW9CQVM7VUFFUCxxQ0F0Qk9UO1lBUUZVO1FBQ0wsOEJBVE9WO1FBVVAsOEJBVk9BLFNBUUZVO1FBRUwscUNBVk9WOztZQWNDVztRQUNSLDhCQWZPWDtRQWdCUCw4QkFoQk9BLFNBY0NXO1FBRVIscUNBaEJPWDtVQWdDQ1k7TUFDUiw4QkFqQ09aO01Ba0NQLDhCQWxDT0EsU0FnQ0NZO01BRVIscUNBbENPWjtJQXVFVCxTQTJCRXNULE9BQUtyWixHQUNQLDBDQW5HTW9aLEtBa0dDcFosRUFDa0I7SUE1QnpCLFNBOEJNc1osUUFBTTNULEVBQUVsQztVQUFGdUQsTUFBRUM7TUFDZDtrQkFEWUQ7Z0RBQUVDLElBRUk7O21CQUZORDs7Ozs7MEJBQUVDO3NCQW1DUUcsR0FuQ1JILE9BbUNIakIsR0FuQ0NnQjs7Ozs7Ozt3QkFBRUM7Ozs7Ozs7aUJBd0JEO2tCQUZTTSxLQXRCUk47a0JBc0JIYixLQXRCQ1k7a0JBdUJKSzs7cUJBQWU7d0RBQUtDLE1BQVNuQixJQUFtQztrQkFDM0QsZ0NBRExrQixhQURHakI7a0JBR0UsZ0NBRkxpQixhQURjRTtpQkFHVDttQkFDRjs7O3VCQUFjOzs7Ozt3QkFDYix3QkFEbUJELE1BQWFuQjt1QkFDaEMsYUFFSSxRQUhvQnFCLFFBQWN0QixRQUdmO29CQUh4Qix5Q0FGSHlCLEtBQ0FEO21CQUtRLE9BQVZPOzs7NENBR0E7bUJBSFU7Ozt5QkE5QkZoQjtxQkFtQ1FHLEdBbkNSSCxPQW1DSGpCLEdBbkNDZ0I7Ozs7Ozs7O3lCQUFFQzs7Ozs7OztzQkFHR0MsSUFISEQsT0FHTkUsSUFISUgsT0FHVSxrQkFBZEcsSUFBU0Q7O3lCQUhIRDtpQkE2Q0g7dUJBN0NHQTtrQkE0QytCZjtrQkFBUEs7d0JBNUMxQlM7a0JBNENRUTtrQkFBTk07a0JBQ0gsbUJBREdBLE9BQXdCdkI7aUJBQzNCO21CQUdMLEdBSmNpQjt3QkFBeUJ0QjsyQkE1Qy9CMEIsSUE0QytCMUIsU0E1Q2pDMkIsSUE0Q1FMLFdBNUNSUixRQUFFQzs7b0JBaURRLEtBTHVCZixNQUt2QjttQkFFVDtpQkFMRTs7YUFSWDtlQUFPLElBQ0x1QixPQURLLDJCQXRDTDZSLFFBbUNLdFQsR0FBV29CO2VBSU4sT0FBVks7Ozt3Q0FHQTtlQUhVOzs7O3lCQXZDRlI7cUJBS0NjLElBTERkLE9BS1BlLElBTEtoQixPQUtRLGtCQUFiZ0IsSUFBUUQ7Ozs7Ozs7dUJBTERkOzs7Ozs7O29CQVdPaUIsSUFYUGpCLE9BV0hrQixJQVhDbkIsT0FXYyxrQkFBZm1CLElBQVVEOzs7d0JBWFBqQjtvQkFpQlNtQixJQWpCVG5CLE9BaUJGb0IsSUFqQkFyQixPQWlCZ0Isa0JBQWhCcUIsSUFBV0Q7Ozs7Ozs7c0JBakJUbkI7Ozs7Ozs7bUJBUVNxQixJQVJUckIsT0FRRnNCLElBUkF2QixPQVFnQixrQkFBaEJ1QixJQUFXRDtRQTZDZCxTQUFLO0lBbkZkLFNBdEVFaVIsZUFBY2pWLElBQUlPLElBQUk3RSxHQUN4QixZQURnQnNFLElBQUlPLElBQUk3RSxFQUNKO0lBcUVwQixTQW5FRXdaLG1CQUFrQmxWLElBQUl0RTtNQThKSCx5QkRuS3hCLE9DK0pLbVosS0ExSmtCN1U7TUE4SkMsK0NBOUpHdEUsRUFDRDtJQWtFdkIsU0FoRUV5WixvQkFBbUJuVixJQUFJSyxHQUFHM0U7TUE4SmxCLElBQU4rRixJQUFNLDhCQTlKZXBCO01BK0pDLHlCRHZLN0IsT0MrSkt3VSxLQXZKbUI3VTtNQStKSyxxQ0FEdEJ5QixjQTlKd0IvRixFQUNEO0lBK0QzQjs7Ozs7O2FBakNJMFosTUFBSWhZO01BQ04sU0FETUE7OzBCQUdVLFFBSFZBOzt3QkFJVSxRQUpWQTs7K0JBRVUsT0FGVkE7TUFLRyw2QkFBWTtJQTRCdkIsU0ExQklpWSxlQUFhdk4sTUFBTTNHLEVBQUU0RztNQUN2QjtZQUR1QkE7T0FDdkIsSUFEcUI1RztPQUNyQixPQUFJNkcsT0FEbUJELGlCQUVuQkU7T0FFTywyQkFEUEMsTUFGQUYsT0FEbUJELGlCQUVuQkU7T0FFTyxLQUpVOUc7TUFJVjtPQUtILGNBSkppSCxVQUlJLGlDQURHN007O1dBSFA2TTtNQUpKO09BVUE7UUFSSUYsU0FDQUM7VUFTQSxpQ0FWQUQ7VUFZQSxpQ0FaQUEsYUFDQUM7T0FhTSxxQ0FaTkMsVUFMaUJqSCxLQVdqQmtILE1BWFdQO01BaUJMLGtCQUFOUSxJQUNVO0lBUWhCLFNBTElnTixjQUFZeE4sTUFBTTNHLEVBQUU0RztNQUVLLDZCQUZMQTtNQUVwQjtnREFGWUQsWUFBTTNHLEVBQUU0RyxPQUdaO0lBRVosSUFBSXdOLCtCQUEwQiw2QkFBWTtJQUExQyxTQUVJQyxhQUFXMU4sTUFBTTNHLEVBQUU0RztNQUNWO2dDQURVQTtPQUVKLHNCQUpmd04sZUFFbUJ4TjtNQUluQjtnREFKV0QsTUFDVFksS0FDQUM7ZUFGZXhIO2VBQUU0RyxPQUtYO0lBUFo7O0tBU0kwTjs7S0FDQUM7O2FBSUFDLHVCQUFxQjVOO01BQ3ZCO2FBRHVCQTtPQUN2QixLQUR1QkE7T0FDdkIsRUFEdUJBO09BQ3ZCO1lBQ0lqTDtNQURKLGFBQUlEO1lBSUpkLEVBSkljO1FBS0Y7YUFWQTZZLFdBUUU3WixLQUdBO1VBRWUsU0FBSSxlQU5uQk4sRUFFSlE7VUFJbUIsYUFMZkY7VUFLZSxTQUpuQkU7OztNQU1BLFFBUElGLEtBVUYsT0FWRUE7TUFRRixvQkFFRTthQWFGK1osdUJBQXFCN047TUFDdkI7YUFEdUJBO09BQ3ZCLEtBRHVCQTtPQUN2QixFQUR1QkE7T0FDdkI7WUFDSWpMO01BREosYUFBSUQ7WUFJSmQsRUFKSWM7UUFLRjthQUZFaEIsUUFwQ0Y0WixRQXVDRTtVQUVlLFNBQUksZUFObkJsYSxFQUVKUTtVQUltQixhQUxmRjtVQUtlLFNBSm5CRTs7O01BTUEsT0FQSUYsS0FRRjtNQUVBLE9BVkVBLElBVUE7YUFpQkZnYSxVQUFRMVUsRUFBRTRHO01BQ1osT0FEVTVHLGFBQ1YsT0FEWTRHLDBCQUNaLFFBQ2lEO2FBRS9DK04sYUFBV3JhLElBQUlzTTtNQUNqQixJQUFJN0gsSUFEYTZIO01BQ2pCLG9DQURhdE0sSUFBSXNNLG9CQUNiN0gsSUFDOEQ7YUEwMkI5RDZWLG9CQUFVNVUsRUFBRTRHO01BQ2pCOzs7ZUFDQ2lPLG9DQUZjN1UsRUFBRTRHOztlQUVoQmlPLDZCQUZjN1UsRUFBRTRHLGFBQ21CO2FBQ25DaU8sa0NBQTBCN1UsRUFBRTRHLE9BQU9xQjtNRGxnQ3hDLElDa2dDd0NDO01BQ3JDO1FBQU07U0FEK0JDO1VBQy9CLGdCQWwyQkpsTyxtQkFpMkJtQ2lPLGtCQUFQdEI7UUFDeEIsUUFEK0J1QjtVQXFNZCxXQXJNT3ZCO2NBQU9zQjs7O2lCQXQwQnZCO2lCQUNBO2lCQUNBO2lCQUNBO2lCQU9BO2lCQU9BOztXQVNJLDRCQTR5QlVsSTtXQTN5QkYscUNBMnlCRUEsRUFBRTRHOztXQTE1QjFCO2FBQVMsMkNBMDVCaUJBOzs7O2NBdDVCaEIseUNBczVCZ0JBO2FBMzZCNUI7O1dBNENFO2FBQVMsMkNBKzNCaUJBOzs7O2NBMzNCaEIseUNBMjNCZ0JBO2FBaDVCNUI7O1dBOEd1RDs7d0NBQWYsb0JBa3lCWkE7O1dBNXhCZixJQUFNeUI7V0FBTjthQUVJLGFBMHhCU3JJLEVBQUU0RzthQXp4Qlgsa0JBeXhCV0E7YUF4eEJNLElBQWI0QixXQUFhLGFBd3hCUnhJLEVBQUU0RzthQXZ4QlgsYUF1eEJTNUcsRUFBRTRHO2FBdHhCWCxhQXN4QlM1RyxFQUFFNEc7YUFyeEJYLGFBcXhCUzVHLEVBQUU0RzthQXh4Qk0sU0FKZnlCO2FBUWtCLGVBSmhCRyxXQUlnQixZQW94Qlh4SSxFQUFFNEc7O2VBbHhCVCxhQWt4Qk81RyxFQUFFNEc7ZUFqeEJULGtCQWl4Qk81RyxFQUFFNEc7ZUFoeEJULGFBZ3hCTzVHLEVBQUU0RztlQS93QlEsSUFBYmlDLGFBQWEsYUErd0JWN0ksRUFBRTRHO2VBOXdCVCxhQTh3Qk81RyxFQUFFNEc7ZUE3d0JULGFBNndCTzVHLEVBQUU0RztlQTV3QlQsYUE0d0JPNUcsRUFBRTRHO2VBL3dCUSxTQWJqQnlCO2VBaUJvQixlQUpoQlEsYUFJZ0IsWUEyd0JiN0ksRUFBRTRHOzs7OztjQXZ3QkosOENBckJMeUI7YUF3Qk47O2VBQU1TO1dBQU47YUFFSSxhQWt3QlM5SSxFQUFFNEc7YUFqd0JYLGlCQWl3QldBO2FBandCWCxTQUhFa0M7YUFJSywwQkFnd0JFOUksRUFBRTRHOztlQTl2QlQsYUE4dkJPNUcsRUFBRTRHO2VBN3ZCVCxpQkE2dkJPNUcsRUFBRTRHO2VBNXZCVCxhQTR2Qk81RyxFQUFFNEc7ZUE1dkJULFNBUkFrQztlQVNPLDBCQTJ2QkE5SSxFQUFFNEc7Ozs7O2NBdnZCTCw4Q0FiSmtDO2FBZ0JOOztlQUVReU07V0FGUjthQUlNLGFBZ3ZCT3ZWLEVBQUU0RzthQS91QlQsaUJBK3VCU0E7YUEvdUJULFNBSEUyTzthQUlLLDBCQTh1QkF2VixFQUFFNEc7O2VBNXVCUCxhQTR1Qks1RyxFQUFFNEc7ZUEzdUJQLGlCQTJ1Qks1RyxFQUFFNEc7ZUExdUJQLGFBMHVCSzVHLEVBQUU0RztlQTF1QlAsU0FSQTJPO2VBU08sMEJBeXVCRnZWLEVBQUU0Rzs7Ozs7Y0FydUJGLDhDQWJMMk87YUFtQlI7O1dBRUksYUE2dEJTdlYsRUFBRTRHO1dBNXRCQSxJQUFQOE8sS0FBTyxhQTR0QkYxVixFQUFFNEc7V0EzdEJYLGFBMnRCUzVHLEVBQUU0RztXQTF0QkssdUJBRlo4TyxLQUVZLGlCQTB0QlAxVixFQUFFNEc7O1dBcHRCZjs7b0JBa3RCVGdPLHNCQUVzQjVVLEVBQUU0Rzt5Q0FGeEJnTyxlQUVzQjVVLEVBQUU0Rzs7V0FudEJiLGlCQW10Qlc1RyxFQUFFNEc7V0FudEJiOztvQkFpdEJYZ08sc0JBRXNCNVUsRUFBRTRHO3lDQUZ4QmdPLGVBRXNCNVUsRUFBRTRHOztXQWx0QmIsVUFrdEJXNUcsRUFBRTRHO1dBbHRCYjs7b0JBZ3RCWGdPLHNCQUVzQjVVLEVBQUU0Rzt5Q0FGeEJnTyxlQUVzQjVVLEVBQUU0Rzs7V0FqdEJmOztvQkErc0JUZ08sc0JBRXNCNVUsRUFBRTRHO3lDQUZ4QmdPLGVBRXNCNVUsRUFBRTRHOztXQWh0QmYscURBZ3RCYTVHLEVBQUU0RztrQkEvc0JmLHdDQStzQmE1RyxFQUFFNEcsU0FzTTBCO2FBeE1sRHVPLFlBQVVuVixFQUFFNEc7TURoZ0NyQix1QkNnZ0NTZ08sY0FBVTVVLEVBQUU0RzthQTBNaEJrTyxnQkFFOEI5VSxFQUFFNEc7TUQ1c0NyQztNQzJzQ0k7WUFDd0NxQjtRQUN6QztVQUFNO1dBRG1DQztZQUNuQyxnQkE1aUNKak8sbUJBMmlDdUNnTyxnQkFBUHJCO1VBQzVCLE9BRG1Dc0I7WUF3QmxCLFdBeEJXdEI7Z0JBQU9xQjs7O21CQXI1QnpCLG1DQXE1QmdCakk7bUJBcDVCZCxzQkFvNUJjQSxFQUFFNEc7bUJBbDVCaEIsYUFrNUJjNUcsS0FBRTRHOzthQWg1QmxCLHFEQWc1QmdCNUcsRUFBRTRHLFVBRFE7YUE0QnhDa1AsYUFFMkI5VixFQUZkNUIsRUFFa0J3STtNRHp1Q3BDO01Dd3VDSTtZQUN1Q3FCO1FBQ3hDO1VBQU07V0FEa0NDO1lBQ2xDLGdCQXprQ0pqTyxtQkF3a0NzQ2dPLGdCQUFQckI7VUFDM0IsT0FEa0NzQjtZQXlCakIsV0F6QlV0QjtnQkFBT3FCOzs7O2FBMTZCeEIsTUEwNkJhakksS0F6NkJhLGlDQURwQmhDO2FBQ0Ysa0JBdTZCTEksRUF2NkJLLDRCQURFSjttQkFFSixzQkF3NkJXZ0MsRUFBSTRHO21CQXQ2QmYsYUFzNkJXNUcsS0FBSTRHOzthQXA2QmpCLHFEQW82QmE1RyxFQUFJNEcsVUFEUTthQTZCdkNpUCxzQkFzRnNDN1YsRUFBSTRHO01EMzFDL0MsSUN1d0NrRHFCO01BQy9DO1FBQU07U0FEeUNDO1VBQ3pDLGdCQXZtQ0pqTyxtQkFzbUM2Q2dPLGdCQW9GSHJCO1FBbkZ0QyxPQUR5Q3NCO1VBK0V4QixXQUtxQnRCO2NBcEZHcUI7Ozs7V0FPL0MsSUFwOEJTaE0sRUFvOEJULDZCQTZFNEMySztXQTdFNUMsb0NBNkV3QzVHLEtBamhDL0IvRDtpQkFDRixvQ0FnaENpQytEO2lCQS9nQ2pDLG9DQStnQ2lDQTtpQkE5Z0NqQyxvQ0E4Z0NpQ0E7aUJBN2dDakMsb0NBNmdDaUNBO2lCQTVnQ2pDLG9DQTRnQ2lDQTs7V0ExQ3hDOzJDQTBDNEM0RztZQXJDNUMsK0JBcUM0Q0E7WUFoQzVDLGlDQWdDNENBO1lBM0I1QywrQkEyQjRDQTtZQXpnQ3NCLFdBRm5CdEs7WUFFRSxXQUZiOE07WUFFTCxXQUZOcEw7WUFFYixRQUZFa0M7dUJBMmdDNEIzRjtpQkFBUzROO2FBQ25EO2VBQU07Z0JBRDZDa0I7aUJBQzdDLGdCQTNyQ0pwUCxtQkEwckNpRGtPLGtCQUFQdkI7ZUFDdEMsT0FENkN5QztpQkE4QzVCLFdBOUNxQnpDO3FCQUFPdUI7Ozs7a0JBT25EO29EQVA0Q3ZCO21CQVk1QyxpQ0FaNENBO21CQWlCNUMsaUNBakI0Q0E7bUJBc0I1QyxpQ0F0QjRDQTttQkE1L0JzQixXQUZqQjJDO21CQUVBLFdBRlhEO21CQUVQLFdBRko5SDttQkFFZixRQUZJRDs4QkFDSDlEO21CQUlGLDhCQXkvQjZCdUMsS0FBRXpGLEVBNy9CN0JrRDtrQkFNRjs0REF1L0I2QnVDLEVBQUk0Rzs7a0JBcC9CckM7NERBby9CaUM1RyxFQUFJNEc7O2tCQWwvQnJDOzBEQWsvQmlDNUcsRUFBSTRHO1dBcGdDakMsb0JBb2dDNkI1RyxLQUFFekY7aUJBbGdDbkMsa0RBa2dDaUN5RixFQUFJNEc7O1dBamdDckMscURBaWdDaUM1RyxFQUFJNEcsU0FyRkk7YUFzSTlDbVAsbUJBRWlDL1YsRUFBRTRHO01EOTRDeEMsSUM4NEMrQ3FCO01BQzVDO1FBQU07U0FEc0NDO1VBQ3RDLGdCQTl1Q0pqTyxtQkE2dUMwQ2dPLGdCQUFQckI7UUFDL0IsT0FEc0NzQjtVQXNCckIsV0F0QmN0QjtjQUFPcUI7Ozs7V0FoaUNyQyxRQWdpQzhCckIsMEJBL2hDcEIsb0JBREo3SDtXQUVKLGVBREkzRTtXQUVKLDRCQTZoQzRCd00sb0JBL2hDeEJ4TSxJQURBMkU7V0FHSixrQ0FGSTNFO2lCQUtOLGlEQTBoQzRCNEYsRUFBRTRHOztXQXpoQzlCLHFEQXloQzRCNUcsRUFBRTRHLFNBRFE7YUEwQjNDK08saUJBRStCM1YsRUFBRTRHO01EejZDdEMsSUN5NkM2Q3FCO01BQzFDO1FBQU07U0FEb0NDO1VBQ3BDLGdCQXp3Q0pqTyxtQkF3d0N3Q2dPLGdCQUFQckI7UUFDN0IsT0FEb0NzQjtVQXlCbkIsV0F6Qll0QjtjQUFPcUI7Ozs7V0FqakN6QixJQUFKMU4sRUFBSSxZQWlqQ2dCeUYsRUFBRTRHO1dBaGpDMUIsYUFnakN3QjVHLEVBQUU0RztXQS9pQzFCLFVBK2lDd0I1RyxFQUFFNEc7V0EvaUMxQixVQUZJck07aUJBSU47aUJBQ0EsaURBNGlDMEJ5RixFQUFFNEc7O1dBM2lDNUIscURBMmlDMEI1RyxFQUFFNEcsU0FEUzthQTZCMUNxUCxVQUV3QmpXLEVBQUU0RztNRHY4Qy9CLElDdThDc0NxQjtNQUNuQztRQUFNO1NBRDZCQztVQUM3QixnQkF2eUNKak8sbUJBc3lDaUNnTyxnQkFBUHJCO1FBQ3RCLE9BRDZCc0I7VUFpQlosV0FqQkt0QjtjQUFPcUI7OztpQkF0a0N4QjtpQkFDQSw4Q0Fxa0NlakksRUFBRTRHOztXQXBrQ2pCLHFEQW9rQ2U1RyxFQUFFNEcsU0FEUzthQXFCbkNvUCxVQUV3QmhXLEVBQUU0RztNRDc5Qy9CLElDNjlDc0NxQjtNQUNuQztRQUFNO1NBRDZCQztVQUM3QixnQkE3ekNKak8sbUJBNHpDaUNnTyxnQkFBUHJCO1FBQ3RCLE9BRDZCc0I7VUFpQlosV0FqQkt0QjtjQUFPcUI7OztpQkF2bEM1QjtpQkFDQSw4Q0FzbENtQmpJLEVBQUU0Rzs7V0FybENyQixxREFxbENtQjVHLEVBQUU0RyxTQURTO2FBcUJuQ3NQLGFBRTJCbFcsRUFBRTRHO01Ebi9DbEMsSUNtL0N5Q3FCO01BQ3RDO1FBQU07U0FEZ0NDO1VBQ2hDLGdCQW4xQ0pqTyxtQkFrMUNvQ2dPLGdCQUFQckI7UUFDekIsT0FEZ0NzQjtVQWlCZixXQWpCUXRCO2NBQU9xQjs7O2lCQXhtQy9CO2lCQUNBLDhDQXVtQ3NCakksRUFBRTRHOztXQXRtQ3hCLHFEQXNtQ3NCNUcsRUFBRTRHLFNBRFM7YUFxQnRDdVAsb0JBRWtDblcsRUFBRTRHO01EemdEekMsSUN5Z0RnRHFCO01BQzdDO1FBQU07U0FEdUNDO1VBQ3ZDLGdCQXoyQ0pqTyxtQkF3MkMyQ2dPLGdCQUFQckI7UUFDaEMsT0FEdUNzQjtVQTRCdEIsV0E1QmV0QjtjQUFPcUI7OztpQkF6bkNsQztpQkFDRSw0QkF3bkN1QmpJLE1BeG5DdkI7aUJBRUY7aUJBQ0EsaURBcW5DeUJBLEVBQUU0Rzs7V0FwbkMzQixxREFvbkN5QjVHLEVBQUU0RyxTQURTO2FBZ0M3Q2dQLGlCQUFlNVYsRUFBRTRHO01EeGlEdEI7TUN5aURJO1lBQ3lDcUI7UUFDMUM7VUFBTTtXQURvQ0M7WUFDcEMsZ0JBMTRDSmpPLG1CQXk0Q3dDZ08sZ0JBRnZCckI7VUFHYixPQURvQ3NCO1lBc0JuQixXQXhCSnRCO2dCQUV1QnFCOzs7bUJBbHBDbkM7bUJBQ0EsK0NBK29DVWpJLEVBQUU0RzttQkE5b0NWLFVBOG9DUTVHLEVBQUU0RztpQ0FDeUI7YUEwQjFDd1AsV0FFeUJ4UDtNRHJrRDlCLElDcWtEcUNxQjtNQUNsQztRQUFNO1NBRDRCQztVQUM1QixnQkFyNkNKak8sbUJBbzZDZ0NnTyxnQkFBUHJCO1FBQ3JCLFNBRDRCc0Isa0JBbHFDdEI7aUJBa3FDc0JBLGtCQWpxQ3RCO1FBNnFDVyxXQVpJdEI7UUFDckIsSUFENEJxQjtpQkFERTthQWdCbEM4TSxhQUFXL1UsRUFBRTRHO01EcGxEbEI7TUNxbERJO1lBQ3FDcUI7UUFDdEM7VUFBTTtXQURnQ0M7WUFDaEMsZ0JBdDdDSmpPLG1CQXE3Q29DZ08sZ0JBRnZCckI7VUFHVCxPQURnQ3NCO1lBMkJmLFdBN0JSdEI7Z0JBRXVCcUI7OzttQkEvcUNULFVBNnFDaEJqSSxFQUFFNEc7bUJBNXFDYyxpQkE0cUNoQjVHLEVBQUU0RzttQkEzcUNjLFVBMnFDaEI1RyxFQUFFNEc7O29CQXpxQ1ksV0EwcUNhO2FBK0J0Q3lQLFlBRTBCclcsRUFBRTRHO01EdG5EakMsSUNzbkR3Q3FCO01BQ3JDO1FBQU07U0FEK0JDO1VBQy9CLGdCQXQ5Q0pqTyxtQkFxOUNtQ2dPLGdCQUFQckI7UUFDeEIsT0FEK0JzQjtVQWlCZCxXQWpCT3RCO2NBQU9xQjs7O2lCQXhzQ3pCO2lCQUNBLGtEQXVzQ2dCakksRUFBRTRHOztXQXRzQ2xCLHFEQXNzQ2dCNUcsRUFBRTRHLFNBRFM7YUFxQnJDMFAsd0JBQXNCdFcsRUFFa0I0RztNRDVvRDdDLElDNG9Eb0RxQjtNQUNqRDtRQUFNO1NBRDJDQztVQUMzQyxnQkE1K0NKak8sbUJBMitDK0NnTyxnQkFBUHJCO1FBQ3BDLFNBRDJDc0Isa0JBenRDckM7aUJBeXRDcUNBLGtCQXh0Q3JDO1FBb3VDVyxXQVptQnRCO1FBQ3BDLElBRDJDcUI7aUJBREU7YUFnQmpEc08sWUFFMEJ2VyxFQUFFNEc7TUQ3cERqQyxJQzZwRHdDcUI7TUFDckM7UUFBTTtTQUQrQkM7VUFDL0IsZ0JBNy9DSmpPLG1CQTQvQ21DZ08sZ0JBQVByQjtRQUN4QixPQUQrQnNCO1VBZ0NkLFdBaENPdEI7Y0FBT3FCOzs7aUJBdHVDdkI7aUJBQ0E7aUJBR0E7aUJBQ0E7O1dBRUEscURBK3RDY2pJLEVBQUU0Rzs7V0E5dENoQixxREE4dENjNUcsRUFBRTRHLFNBRFM7YUFzQ3JDNFAseUJBQXlCeFcsRUFBRTRHLE9BQU9xQjtNRGxzRHZDLElDa3NEdUNDO01BQ3BDO1FBQU07U0FEOEJDO1VBQzlCLGdCQWxpREpsTyxtQkFpaURrQ2lPLGtCQUFQdEI7UUFDdkIsT0FEOEJ1QjtVQTRDYixXQTVDTXZCO2NBQU9zQjs7OztXQWh3Q2I7YUFBTSxnQ0Fnd0NBdEI7Ozs7Y0E5dkNGLHdDQTh2Q0E1RyxFQUFFNEc7YUE3dkNOOzs7YUFBTSxnQ0E2dkNBQTs7OztjQTN2Q0Ysd0NBMnZDQTVHLEVBQUU0RzthQTF2Q047O1dBQ0UsNEJBeXZDRTVHO1dBeHZDTSxJQUFKNUYsRUFBSSxnQkF3dkNONEYsRUFBRTRHO1dBeHZDSTthQUtOLDRCQUxFeE0sR0FPRjs7b0VBaXZDQTRGLEVBQUU0Rzs7V0E1dUNOLHFEQTR1Q0k1RyxFQUFFNEc7O1dBM3VDTixxREEydUNJNUcsRUFBRTRHLFNBNkMwQjthQS9DckQ2UCxXQUFTelcsRUFBRTRHO01BQ1osZ0NBRFU1RyxFQUFFNEcsV0FDeUI7YUFrRHBDOFAsMkJBQTJCMVcsRUFBRTRHLE9BQU9xQjtNRG52RHpDLElDbXZEeUNDO01BQ3RDO1FBQU07U0FEZ0NDO1VBQ2hDLGdCQW5sREpsTyxtQkFrbERvQ2lPLGtCQUFQdEI7UUFDekIsT0FEZ0N1QjtVQXFDZixXQXJDUXZCO2NBQU9zQjs7OztXQXp4Q2Y7YUFBNEMsNEJBQXRCLG9CQXl4Q2R0QjthQXZ4Q0o7aUVBdXhDRTVHLEVBQUU0Rzs7V0FyeENOLDRCQXF4Q0k1RztXQXB4Q0ksSUFBSjVGLEVBQUksZ0JBb3hDSjRGLEVBQUU0RztXQXB4Q0U7YUFLTiw0QkFMRXhNLEdBT0Y7O29FQTZ3Q0U0RixFQUFFNEc7aUJBeHdDUixtREF3d0NNNUcsRUFBRTRHOztXQXZ3Q1IscURBdXdDTTVHLEVBQUU0RyxTQXNDMEI7YUF4Q3ZEK1AsYUFBVzNXLEVBQUU0RztNQUNkLGtDQURZNUcsRUFBRTRHLFdBQ3lCO2FBMkN0Q2dRLDJCQUEyQjVXLEVBQUU0RyxPQUFPcUI7TUQ3eER6QyxJQzZ4RHlDQztNQUN0QztRQUFNO1NBRGdDQztVQUNoQyxnQkE3bkRKbE8sbUJBNG5Eb0NpTyxrQkFBUHRCO1FBQ3pCLE9BRGdDdUI7VUFxQ2YsV0FyQ1F2QjtjQUFPc0I7Ozs7V0E5eUNmO2FBQTRDLDhCQUF0QixvQkE4eUNkdEI7YUE1eUNKO2lFQTR5Q0U1RyxFQUFFNEc7O1dBMXlDTiw0QkEweUNJNUc7V0F6eUNJLElBQUo1RixFQUFJLGdCQXl5Q0o0RixFQUFFNEc7V0F6eUNFO2FBS04sOEJBTEV4TSxHQU9GOztvRUFreUNFNEYsRUFBRTRHO2lCQTd4Q1IsbURBNnhDTTVHLEVBQUU0Rzs7V0E1eENSLHFEQTR4Q001RyxFQUFFNEcsU0FzQzBCO2FBeEN2RGlRLGFBQVc3VyxFQUFFNEc7TUFDZCxrQ0FEWTVHLEVBQUU0RyxXQUN5QjthQTJDdENrUSw0QkFBNEI5VyxFQUFFNEcsT0FBT3FCO01EdjBEMUMsSUN1MEQwQ0M7TUFDdkM7UUFBTTtTQURpQ0M7VUFDakMsZ0JBdnFESmxPLG1CQXNxRHFDaU8sa0JBQVB0QjtRQUMxQixPQURpQ3VCO1VBc0RoQixXQXREU3ZCO2NBQU9zQjs7O2lCQW4wQ3pCO2lCQUNBO2lCQUNBO2lCQUNpQyw0QkFBZixvQkFnMENBdEI7O1dBL3pDaEIsNEJBK3pDYzVHO1dBOXpDTixJQUFKNUYsRUFBSSxnQkE4ekNNNEYsRUFBRTRHO1dBOXpDUjthQUtOLDhCQUxFeE07O2FBT0YsNEJBUEVBOzs7MEJBWUksZ0RBa3pDTTRGLEVBQUU0Rzs7Ozs7V0E3eUNsQixvREE2eUNnQjVHLEVBQUU0Rzs7V0E1eUNsQixxREE0eUNnQjVHLEVBQUU0RyxTQXVEMEI7YUF6RHhEbVEsY0FBWS9XLEVBQUU0RztNQUNmLG1DQURhNUcsRUFBRTRHLFdBQ3lCO2FBMER2Q29RLGNBRTRCaFgsRUFBRTRHO01EbDREbkMsSUNrNEQwQ3FCO01BQ3ZDO1FBQU07U0FEaUNDO1VBQ2pDLGdCQWx1REpqTyxtQkFpdURxQ2dPLGdCQUFQckI7UUFDMUIsT0FEaUNzQjtVQWtCaEIsV0FsQlN0QjtjQUFPcUI7Ozs7V0FwMkMxQiw0QkFvMkNpQmpJLE1BcDJDakIsdUJBbzJDaUJBLEVBQUU0RztpQkFsMkNyQiw4Q0FrMkNtQjVHLEVBQUU0Rzs7V0FqMkNyQixxREFpMkNtQjVHLEVBQUU0RyxTQURTO2FBc0J2Q3FPLGFBRTJCalYsRUFBRTRHO01EejVEbEMsSUN5NUR5Q3FCO01BQ3RDO1FBQU07U0FEZ0NDO1VBQ2hDLGdCQXp2REpqTyxtQkF3dkRvQ2dPLGdCQUFQckI7UUFDekIsT0FEZ0NzQjtVQTRCZixXQTVCUXRCO2NBQU9xQjs7OztXQXIzQ3pCLDRCQXEzQ2dCakksTUFyM0NoQix1QkFxM0NnQkEsRUFBRTRHOztXQWEvQixJQWg0Q1d4TSxFQWc0Q1gsd0JBYitCd00sNEJBYS9CLE9BaDRDV3hNOztXQUVBLHFEQWkzQ2tCNEYsRUFBRTRHOztXQWgzQ3BCLHFEQWczQ2tCNUcsRUFBRTRHLFNBRFM7YUFnQ3RDcVEsWUFFMEJqWCxFQUFFNUIsRUFBRXdJO01EMTdEbkMsSUMwN0QwQ3FCO01BQ3ZDO1FBQU07U0FEaUNDO1VBQ2pDLGdCQTF4REpqTyxtQkF5eERxQ2dPLGdCQUFQckI7UUFDMUIsT0FEaUNzQjtVQXVCaEIsV0F2QlN0QjtjQUFPcUI7Ozs7V0E5NEMxQiw0QkE4NENlakksTUE5NENmLG9CQTg0Q2VBLEVBQUU1QixFQUFFd0k7O1dBanlEOUIsSUFBSTdILElBaXlEMEI2SDtXQWh5RDVCO29CQWd5RDBCeEk7b0JBaHlEMUIsMkJBZ3lENEJ3SSxvQkFqeUQxQjdIOzs7O1dBdVpLLHFEQTA0Q2lCaUIsRUFBSTRHOztXQXo0Q3JCLHFEQXk0Q2lCNUcsRUFBSTRHLFNBRFM7YUE2QnZDc1E7TUFBOEJyTSxVQUFVQyxTQUFTOUssRUFBRTRHLE9BQU9xQjtNRHQ5RC9ELElDczlEK0RDO01BQzVEO1FBQU07U0FEc0RDO1VBQ3RELGdCQXR6REpsTyxtQkFxekQwRGlPLGtCQUFQdEI7UUFDL0MsT0FEc0R1QjtVQStCckMsV0EvQjhCdkI7Y0FBT3NCOzs7O1dBbDZDakQsSUFBTUcsT0FrNkN5QnlDO1dBbDZDL0I7YUFFSSxhQWc2Q29DOUssRUFBRTRHO2FBLzVDdEMsaUJBKzVDc0NBO2FBOTVDL0Isb0JBODVDVWlFLFVBbDZDZnhDLE9BazZDa0NySSxFQUFFNEc7O2VBNTVDcEMsYUE0NUNrQzVHLEVBQUU0RztlQTM1Q3BDLGlCQTI1Q2tDNUcsRUFBRTRHO2VBMTVDcEMsYUEwNUNrQzVHLEVBQUU0RztlQXo1QzdCLG9CQXk1Q1FpRSxVQWw2Q2Z4QyxPQWs2Q2tDckksRUFBRTRHOzs7O3NDQXI1Q3RDLE9BYkV5QjthQWVOOytEQW01Q3dDckksRUFBRTRHOztXQWw1QzFDLHFEQWs1Q3dDNUcsRUFBRTRHLFNBZ0MwQjthQWxDN0V1USxnQkFBY3RNLFVBQVVDLFNBQVM5SyxFQUFFNEc7TUFDcEMscUNBRGVpRSxVQUFVQyxTQUFTOUssRUFBRTRHLFdBQ3lCO2FBcUM1RHdRLDhCQUE4QnZNLFVBQVU3SyxFQUFFNEcsT0FBT3FCO01EMS9EdEQsSUMwL0RzREM7TUFDbkQ7UUFBTTtTQUQ2Q0M7VUFDN0MsZ0JBMTFESmxPLG1CQXkxRGlEaU8sa0JBQVB0QjtRQUN0QyxPQUQ2Q3VCO1VBK0I1QixXQS9CcUJ2QjtjQUFPc0I7Ozs7V0FuN0N4QyxJQUFNRztXQUFOO2FBRUksYUFpN0MyQnJJLEVBQUU0RzthQWg3QzdCLGlCQWc3QzZCQTthQWg3QzdCLFNBSEV5QjthQUlLLHVCQSs2Q1V3QyxVQUFVN0ssRUFBRTRHOztlQTc2QzNCLGFBNjZDeUI1RyxFQUFFNEc7ZUE1NkMzQixpQkE0NkN5QjVHLEVBQUU0RztlQTM2QzNCLGFBMjZDeUI1RyxFQUFFNEc7ZUEzNkMzQixTQVJBeUI7ZUFTTyx1QkEwNkNRd0MsVUFBVTdLLEVBQUU0Rzs7OztzQ0F0NkM3QixPQWJFeUI7YUFlTjsrREFvNkMrQnJJLEVBQUU0Rzs7V0FuNkNqQyxxREFtNkMrQjVHLEVBQUU0RyxTQWdDMEI7YUFsQ3BFeVEsZ0JBQWN4TSxVQUFVN0ssRUFBRTRHO01BQzNCLHFDQURlaUUsVUFBVTdLLEVBQUU0RyxXQUN5QjthQW1DbkR5TyxpQkFFK0J6TztNRDloRXBDLElDOGhFMkNxQjtNQUN4QztRQUFNO1NBRGtDQztVQUNsQyxnQkE5M0RKak8sbUJBNjNEc0NnTyxnQkFBUHJCO1FBQzNCLFNBRGtDc0Isa0JBcDhDN0I7aUJBbzhDNkJBLGtCQW44QzdCO1FBKzhDWSxXQVpVdEI7UUFDM0IsSUFEa0NxQjtpQkFERTthQWdCeENxTixpQkFFK0J0VixFQUFFNEc7TUQvaUV0QyxJQytpRTZDcUI7TUFDMUM7UUFBTTtTQURvQ0M7VUFDcEMsZ0JBLzRESmpPLG1CQTg0RHdDZ08sZ0JBQVByQjtRQUM3QixPQURvQ3NCO1VBc0JuQixXQXRCWXRCO2NBQU9xQjs7O2lCQWo5Qy9CO2lCQUNBO2lCQUNBLGlEQSs4Q3NCakksRUFBRTRHOztXQTk4Q3hCLHFEQTg4Q3NCNUcsRUFBRTRHLFNBRFM7YUE0QjFDMFE7TUFBMkJ6TSxVQUFVQyxTQUFTOUssRUFBRTRHLE9BQU9xQjtNRDFrRTVELElDMGtFNERDO01BQ3pEO1FBQU07U0FEbURDO1VBQ25ELGdCQTE2REpsTyxtQkF5NkR1RGlPLGtCQUFQdEI7UUFDNUMsT0FEbUR1QjtVQXVDbEMsV0F2QzJCdkI7Y0FBT3NCOzs7O1dBcitDMUMscUJBcStDd0I0QztXQXIrQ3hCO2FBS00sYUFnK0MyQjlLLEVBQUU0RzthQS85QzdCLGlCQSs5QzZCQTthQTk5Q3RCLG9CQTg5Q0NpRSxVQW4rQ04wTSxPQUNBbFAsT0FrK0N5QnJJLEVBQUU0RzthQTk5Q3RCOztlQUdMLGFBMjlDeUI1RyxFQUFFNEc7ZUExOUMzQixpQkEwOUN5QjVHLEVBQUU0RztlQXo5QzNCLGFBeTlDeUI1RyxFQUFFNEc7ZUF4OUNwQixvQkF3OUNEaUUsVUFuK0NOME0sT0FDQWxQLE9BaytDeUJySSxFQUFFNEc7ZUF4OUNwQjs7OztzQ0FLVCxPQWZFeUI7YUFvQlo7K0RBODhDcUNySSxFQUFFNEc7O1dBNzhDdkMscURBNjhDcUM1RyxFQUFFNEcsU0F3QzBCO2FBMUMxRTRRLGFBQVczTSxVQUFVQyxTQUFTOUssRUFBRTRHO01BQ2pDLGdDQURZaUUsVUFBVUMsU0FBUzlLLEVBQUU0RyxXQUN5QjthQTJDekQ0TyxpQkFFK0I1TztNRHRuRXBDLElDc25FMkNxQjtNQUN4QztRQUFNO1NBRGtDQztVQUNsQyxnQkF0OURKak8sbUJBcTlEc0NnTyxnQkFBUHJCO1FBQzNCLFNBRGtDc0Isa0JBdC9DN0I7aUJBcy9DNkJBLGtCQXIvQzdCO1FBaWdEWSxXQVpVdEI7UUFDM0IsSUFEa0NxQjtpQkFERTthQWdCeEN3UCxrQkFFZ0N6WCxFQUFFbkIsSUFBSStIO01Edm9FM0MsSUN1b0VrRHFCO01BQy9DO1FBQU07U0FEeUNDO1VBQ3pDLGdCQXYrREpqTyxtQkFzK0Q2Q2dPLGdCQUFQckI7UUFDbEMsT0FEeUNzQjtVQXVCeEIsV0F2QmlCdEI7Y0FBT3FCOzs7O1dBbmdEcEMsR0FtZ0R5QnBKLElBbGdEckIsaURBa2dEbUJtQixFQUFNNEc7V0FoZ0R6Qjs7V0FDSixHQSsvQ3lCL0gsSUE5L0NyQjtXQUVBLGlEQTQvQ21CbUIsRUFBTTRHO2tCQTMvQzdCLFVBMC9Dc0M7YUEyQi9DNk8saUJBRStCelYsRUFBRTRHO01EbnFFdEMsSUNtcUU2Q3FCO01BQzFDO1FBQU07U0FEb0NDO1VBQ3BDLGdCQW5nRUpqTyxtQkFrZ0V3Q2dPLGdCQUFQckI7UUFDN0IsT0FEb0NzQjtVQXNCbkIsV0F0Qll0QjtjQUFPcUI7OztpQkFwaEQvQjtpQkFDQTtpQkFDQSxpREFraERzQmpJLEVBQUU0Rzs7V0FqaER4QixxREFpaERzQjVHLEVBQUU0RyxTQURTO2FBMEIxQzhRLGtCQUVnQzFYLEVBQUVuQixJQUFJK0g7TUQ5ckUzQyxJQzhyRWtEcUI7TUFDL0M7UUFBTTtTQUR5Q0M7VUFDekMsZ0JBOWhFSmpPLG1CQTZoRTZDZ08sZ0JBQVByQjtRQUNsQyxPQUR5Q3NCO1VBaUN4QixXQWpDaUJ0QjtjQUFPcUI7OztpQkF6aURwQzs7V0FDQSxHQXdpRHlCcEosSUF2aURyQixpREF1aURtQm1CLEVBQU00RztXQXJpRHpCOztXQUNKLEdBb2lEeUIvSCxJQW5pRHJCO1dBRUEsaURBaWlEbUJtQixFQUFNNEc7aUJBaGlEN0IsaURBZ2lEdUI1RyxFQUFNNEc7O1dBL2hEN0IscURBK2hEdUI1RyxFQUFNNEcsU0FEUzthQXVDL0MrUTtNQUFxQ25NLFNBQVNDLFdBQVdYLFNBQVM5SyxFQUFFNEcsT0FBT3FCO01EcHVFaEYsSUNvdUVnRkM7TUFDN0U7UUFBTTtTQUR1RUM7VUFDdkUsZ0JBcGtFSmxPLG1CQW1rRTJFaU8sa0JBQVB0QjtRQUNoRSxPQUR1RXVCO1VBdUN0RCxXQXZDK0N2QjtjQUFPc0I7Ozs7V0Fqa0RsRSxJQUFNRyxPQWlrRDBDeUM7V0Fqa0RoRDthQUVJLGFBK2pEcUQ5SyxFQUFFNEc7YUE5akR2RCxrQkE4akR1REE7YUE3akR0QyxJQUFiNEIsV0FBYSxXQTZqRE9nRCxTQUE2QnhMLEVBQUU0RzthQTVqRHZELGFBNGpEcUQ1RyxFQUFFNEc7YUEzakR2RCxhQTJqRHFENUcsRUFBRTRHO2FBMWpEdkQsYUEwakRxRDVHLEVBQUU0RzthQXpqRGhELG9CQXlqRDBCNkUsV0Fqa0QvQnBELE9BSUVHLFdBNmpEaUR4SSxFQUFFNEc7O2VBdmpEckQsYUF1akRtRDVHLEVBQUU0RztlQXRqRHJELGtCQXNqRG1ENUcsRUFBRTRHO2VBcmpEckQsYUFxakRtRDVHLEVBQUU0RztlQXBqRHBDLElBQWJpQyxhQUFhLFdBb2pESzJDLFNBQTZCeEwsRUFBRTRHO2VBbmpEckQsYUFtakRtRDVHLEVBQUU0RztlQWxqRHJELGFBa2pEbUQ1RyxFQUFFNEc7ZUFqakRyRCxhQWlqRG1ENUcsRUFBRTRHO2VBaGpEOUMsb0JBZ2pEd0I2RSxXQWprRC9CcEQsT0FhSVEsYUFvakQrQzdJLEVBQUU0Rzs7Ozt1Q0E1aUR2RCxPQXJCRXlCO2FBdUJOOytEQTBpRHlEckksRUFBRTRHOztXQXppRDNELHFEQXlpRHlENUcsRUFBRTRHLFNBd0MwQjthQTFDOUZnUix1QkFBcUJwTSxTQUFTQyxXQUFXWCxTQUFTOUssRUFBRTRHO01BQ3JEO2VBRHNCNEUsU0FBU0MsV0FBV1gsU0FBUzlLLEVBQUU0RyxXQUN5QjthQTJDN0VpUixhQUUyQjdYLEVBQUU0RztNRGh4RWxDLElDZ3hFeUNxQjtNQUN0QztRQUFNO1NBRGdDQztVQUNoQyxnQkFobkVKak8sbUJBK21Fb0NnTyxnQkFBUHJCO1FBQ3pCLE9BRGdDc0I7VUFpQmYsV0FqQlF0QjtjQUFPcUI7OztpQkFsbEQzQjtpQkFDQSw4Q0FpbERrQmpJLEVBQUU0Rzs7V0FobERwQixxREFnbERrQjVHLEVBQUU0RyxTQURTO2FBcUJ0Q29PLGtCQUVnQ3BPO01EdHlFckMsSUNzeUU0Q3FCO01BQ3pDO1FBQU07U0FEbUNDO1VBQ25DLGdCQXRvRUpqTyxtQkFxb0V1Q2dPLGdCQUFQckI7UUFDNUIsU0FEbUNzQixrQkFubUQ5QjtpQkFtbUQ4QkEsa0JBbG1EOUI7UUE4bURZLFdBWld0QjtRQUM1QixJQURtQ3FCO2lCQURFO2FBZ0J6Q21OLGtCQUVnQ3BWLEVBQUU0RztNRHZ6RXZDLElDdXpFOENxQjtNQUMzQztRQUFNO1NBRHFDQztVQUNyQyxnQkF2cEVKak8sbUJBc3BFeUNnTyxnQkFBUHJCO1FBQzlCLE9BRHFDc0I7VUFzQnBCLFdBdEJhdEI7Y0FBT3FCOzs7aUJBaG5EaEM7aUJBQ0E7aUJBQ0EsaURBOG1EdUJqSSxFQUFFNEc7O1dBN21EekIscURBNm1EdUI1RyxFQUFFNEcsU0FEUzthQTBCM0NzTyxhQUUyQmxWLEVBQUU0RztNRGwxRWxDLElDazFFeUNxQjtNQUN0QztRQUFNO1NBRGdDQztVQUNoQyxnQkFsckVKak8sbUJBaXJFb0NnTyxnQkFBUHJCO1FBQ3pCLE9BRGdDc0I7VUFpQmYsV0FqQlF0QjtjQUFPcUI7OztpQkFyb0QzQjtpQkFDQSw4Q0Fvb0RrQmpJLEVBQUU0Rzs7V0Fub0RwQixxREFtb0RrQjVHLEVBQUU0RyxTQURTO2FBcUJ0Q2tSLGtCQUVnQzlYLEVBQUU0RztNRHgyRXZDLElDdzJFOENxQjtNQUMzQztRQUFNO1NBRHFDQztVQUNyQyxnQkF4c0VKak8sbUJBdXNFeUNnTyxnQkFBUHJCO1FBQzlCLE9BRHFDc0I7VUFzQnBCLFdBdEJhdEI7Y0FBT3FCOzs7aUJBdHBEaEM7aUJBQ0E7aUJBQ0EsaURBb3BEdUJqSSxFQUFFNEc7O1dBbnBEekIscURBbXBEdUI1RyxFQUFFNEcsU0FEUzthQTBCM0NtUixZQUUwQi9YLEVBQUU0RztNRG40RWpDLElDbTRFd0NxQjtNQUNyQztRQUFNO1NBRCtCQztVQUMvQixnQkFudUVKak8sbUJBa3VFbUNnTyxnQkFBUHJCO1FBQ3hCLE9BRCtCc0I7VUFpQmQsV0FqQk90QjtjQUFPcUI7OztpQkEzcUQxQjtpQkFDQSw4Q0EwcURpQmpJLEVBQUU0Rzs7V0F6cURuQixxREF5cURpQjVHLEVBQUU0RyxTQURTO2FBcUJyQ29SLFlBRTBCaFksRUFBRTRHO01EejVFakMsSUN5NUV3Q3FCO01BQ3JDO1FBQU07U0FEK0JDO1VBQy9CLGdCQXp2RUpqTyxtQkF3dkVtQ2dPLGdCQUFQckI7UUFDeEIsT0FEK0JzQjtVQWlCZCxXQWpCT3RCO2NBQU9xQjs7O2lCQTVyRDFCO2lCQUNBLDhDQTJyRGlCakksRUFBRTRHOztXQTFyRG5CLHFEQTByRGlCNUcsRUFBRTRHLFNBRFM7YUFxQnJDcVIsV0FFeUJqWSxFQUFFNEc7TUQvNkVoQyxJQys2RXVDcUI7TUFDcEM7UUFBTTtTQUQ4QkM7VUFDOUIsZ0JBL3dFSmpPLG1CQTh3RWtDZ08sZ0JBQVByQjtRQUN2QixPQUQ4QnNCO1VBaUJiLFdBakJNdEI7Y0FBT3FCOzs7aUJBN3NEekI7aUJBQ0EsOENBNHNEZ0JqSSxFQUFFNEc7O1dBM3NEbEIscURBMnNEZ0I1RyxFQUFFNEcsU0FEUzthQXFCcENzUixXQUV5QmxZLEVBQUU0RztNRHI4RWhDLElDcThFdUNxQjtNQUNwQztRQUFNO1NBRDhCQztVQUM5QixnQkFyeUVKak8sbUJBb3lFa0NnTyxnQkFBUHJCO1FBQ3ZCLE9BRDhCc0I7VUFpQmIsV0FqQk10QjtjQUFPcUI7OztpQkE5dER6QjtpQkFDQSw4Q0E2dERnQmpJLEVBQUU0Rzs7V0E1dERsQixxREE0dERnQjVHLEVBQUU0RyxTQURTO2FBOE1wQ3VSLHNCQUVvQ25ZLEVBQUU0RztNRHBwRjNDLElDb3BGa0RxQjtNQUMvQztRQUFNO1NBRHlDQztVQUN6QyxnQkFwL0VKak8sbUJBbS9FNkNnTyxnQkFBUHJCO1FBQ2xDLE9BRHlDc0I7VUF3QnhCLFdBeEJpQnRCO2NBQU9xQjs7OztXQXQwRHRDLFlBczBENkJqSSxFQUFFNEc7V0FyMEQvQixhQXEwRDZCNUcsRUFBRTRHO1dBcjBEL0IsaUJBcTBENkI1RyxFQUFFNEc7aUJBbjBEakM7aUJBQ0EsaURBazBEK0I1RyxFQUFFNEc7O1dBajBEakMscURBaTBEK0I1RyxFQUFFNEcsU0FEUzthQXZCL0N5Uix3QkFFc0NyWSxFQUFFNEc7TUQ5bkY3QyxJQzhuRm9EcUI7TUFDakQ7UUFBTTtTQUQyQ0M7VUFDM0MsZ0JBOTlFSmpPLG1CQTY5RStDZ08sZ0JBQVByQjtRQUNwQyxPQUQyQ3NCO1VBaUIxQixXQWpCbUJ0QjtjQUFPcUI7OztpQkFyekQxQztpQkFDQSxpREFvekRpQ2pJLEVBQUU0Rzs7V0FuekRuQyxxREFtekRpQzVHLEVBQUU0RyxTQURTO2FBcEtqRDBSLG9CQUFVdFksRUFBRTRHO01BQ2I7OztlQUNDMlIsb0NBRlV2WSxFQUFFNEc7O2VBRVoyUiw2QkFGVXZZLEVBQUU0RyxhQUN5QjthQUNyQzJSLGtDQUEwQnZZLEVBQUU0RyxPQUFPcUI7TUQzOUV4QyxJQzI5RXdDQztNQUNyQztRQUFNO1NBRCtCQztVQUMvQixnQkEzekVKbE8sbUJBMHpFbUNpTyxrQkFBUHRCO1FBQ3hCLFFBRCtCdUI7VUE4SmQsV0E5Sk92QjtjQUFPc0I7OztpQkE1dUR2QjtpQkFDQTtpQkFDQTtpQkFDQTtpQkFDQTtpQkFDQTtpQkFDQSwrQkFzdURjbEksRUFBRTRHO2lCQXJ1RE47aUJBQ1Y7O1dBRUM7YUFDSSxhQWl1RFM1RyxFQUFFNEc7YUFodURYLGtCQWd1RFdBO2FBL3REWCxhQSt0RFM1RyxFQUFFNEc7YUE5dERYLGFBOHREUzVHLEVBQUU0RzthQTd0RFgsYUE2dERTNUcsRUFBRTRHO2FBNXREWCxhQTR0RFM1RyxFQUFFNEc7YUEzdERYLFlBMnREUzVHLEVBQUU0RzthQWx0RFM7ZUFQbEIsYUF5dERPNUcsRUFBRTRHO2VBeHREVCxrQkF3dERPNUcsRUFBRTRHO2VBdnREVCxhQXV0RE81RyxFQUFFNEc7ZUF0dERULGFBc3RETzVHLEVBQUU0RztlQXJ0RFQsYUFxdERPNUcsRUFBRTRHO2VBcHREVCxhQW90RE81RyxFQUFFNEc7ZUFudERULGFBbXRETzVHLEVBQUU0RztlQWx0RFQsWUFrdERPNUcsRUFBRTRHOzs7O3VDQTlzRFg7YUFHSjs7O2FBQ0ksYUEwc0RTNUcsRUFBRTRHO2FBenNEWCxpQkF5c0RXQTthQXhzRFgsWUF3c0RTNUcsRUFBRTRHO2FBbnNEUztlQUhsQixhQXNzRE81RyxFQUFFNEc7ZUFyc0RULGlCQXFzRE81RyxFQUFFNEc7ZUFwc0RULGFBb3NETzVHLEVBQUU0RztlQW5zRFQsWUFtc0RPNUcsRUFBRTRHOzs7O3NDQS9yRFg7YUFHSjs7O2FBR00sYUF5ckRPNUcsRUFBRTRHO2FBeHJEVCxpQkF3ckRTQTthQXZyRFQsWUF1ckRPNUcsRUFBRTRHO2FBbHJEVztlQUhsQixhQXFyREs1RyxFQUFFNEc7ZUFwckRQLGlCQW9yREs1RyxFQUFFNEc7ZUFuckRQLGFBbXJESzVHLEVBQUU0RztlQWxyRFAsWUFrckRLNUcsRUFBRTRHOzs7O3NDQTlxRFQ7YUFNTjs7V0FFSSxhQXNxRFM1RyxFQUFFNEc7V0FycURYLGFBcXFEUzVHLEVBQUU0RztXQXBxRFgsYUFvcURTNUcsRUFBRTRHO1dBcHFEWCw2QkFvcURTNUcsRUFBRTRHOztXQTdwRGY7O29CQTJwRGIwUixzQkFFMEJ0WSxFQUFFNEc7eUNBRjVCMFIsZUFFMEJ0WSxFQUFFNEc7O1dBNXBEYixpQkE0cERXNUcsRUFBRTRHO1dBNXBEYjs7b0JBMHBEZjBSLHNCQUUwQnRZLEVBQUU0Rzt5Q0FGNUIwUixlQUUwQnRZLEVBQUU0Rzs7V0EzcERiLFVBMnBEVzVHLEVBQUU0RztXQTNwRGI7O29CQXlwRGYwUixzQkFFMEJ0WSxFQUFFNEc7eUNBRjVCMFIsZUFFMEJ0WSxFQUFFNEc7O1dBMXBEZjs7b0JBd3BEYjBSLHNCQUUwQnRZLEVBQUU0Rzt5Q0FGNUIwUixlQUUwQnRZLEVBQUU0Rzs7V0F6cERmLHFEQXlwRGE1RyxFQUFFNEc7a0JBeHBEZix5Q0F3cERhNUcsRUFBRTRHLFNBK0owQjthQWpLdER3UixZQUFVcFksRUFBRTRHO01EejlFakIsdUJDeTlFSzBSLGNBQVV0WSxFQUFFNEc7YUFzTlo0UixhQUUyQnhZLEVBQUU0RztNRGpyRmxDLElDaXJGeUNxQjtNQUN0QztRQUFNO1NBRGdDQztVQUNoQyxnQkFqaEZKak8sbUJBZ2hGb0NnTyxnQkFBUHJCO1FBQ3pCLE9BRGdDc0I7VUFzQmYsV0F0QlF0QjtjQUFPcUI7OztpQkEzMUQzQiwrQkEyMURrQmpJLEVBQUU0RztpQkExMURwQjs7V0FDQSxxREF5MURrQjVHLEVBQUU0Rzs7V0F4MURwQixxREF3MURrQjVHLEVBQUU0RyxTQURTO2FBMEx0QzZSLHNCQW9RMEJ6WSxFQUFFNEc7TUQ5bUdqQyxJQzQyRm9EcUI7TUFDakQ7UUFBTTtTQUQyQ0M7VUFDM0MsZ0JBNXNGSmpPLG1CQTJzRitDZ08sZ0JBa1FuQnJCO1FBalF4QixPQUQyQ3NCO1VBeUIxQixXQXlPT3RCO2NBbFFtQnFCOzs7O1dBcDZEeEMsNkJBc3FFbUJqSTtXQXJxRW5CLGNBcXFFbUJBLEVBQUU0RztXQXBxRXJCLGVBb3FFbUI1RyxFQUFFNEc7ZUFBT3VCO1dBQ3JDO2FBQU07Y0FEK0JrQjtlQUMvQixnQkE5OEZKcFAsbUJBNjhGbUNrTyxrQkFBUHZCO2FBQ3hCLE9BRCtCeUM7ZUFpQmQsV0FqQk96QzttQkFBT3VCOzs7c0JBOWxFOUIsb0NBOGxFcUJuSTtzQkE3bEVyQiw4Q0E2bEVxQkEsRUFBRTRHOztnQkE1bEV2QixxREE0bEVxQjVHLEVBQUU0RztpQkFscUV2QixvQ0FrcUVxQjVHO2lCQWpxRXJCLGlEQWlxRXFCQSxFQUFFNEc7O1dBaHFFdkIscURBZ3FFcUI1RyxFQUFFNEcsU0FuUXFCO2FBekJqRGdTLDBCQUV3QzVZLEVBQUU0RztNRHAxRi9DLElDbzFGc0RxQjtNQUNuRDtRQUFNO1NBRDZDQztVQUM3QyxnQkFwckZKak8sbUJBbXJGaURnTyxnQkFBUHJCO1FBQ3RDLE9BRDZDc0I7VUFtQjVCLFdBbkJxQnRCO2NBQU9xQjs7OztXQW41RDFDLDZCQW01RGlDakk7V0FuNURqQyxvQkFtNURpQ0EsS0FBRTRHO2lCQWg1RHJDLGlEQWc1RG1DNUcsRUFBRTRHOztXQS80RHJDLHFEQSs0RG1DNUcsRUFBRTRHLFNBRFM7YUF6SW5EaVMsc0JBQVk3WSxFQUFFNEc7TUFDZjs7O2VBQ0NrUyxzQ0FGWTlZLEVBQUU0Rzs7ZUFFZGtTLCtCQUZZOVksRUFBRTRHLGFBQ3lCO2FBQ3ZDa1Msb0NBQTRCOVksRUFBRTRHLE9BQU9xQjtNRDVzRjFDLElDNHNGMENDO01BQ3ZDO1FBQU07U0FEaUNDO1VBQ2pDLGdCQTVpRkpsTyxtQkEyaUZxQ2lPLGtCQUFQdEI7UUFDMUIsUUFEaUN1QjtVQW1JaEIsV0FuSVN2QjtjQUFPc0I7OztpQkF0MkR6QixvQkFzMkRnQmxJLEtBQUU0RztpQkFwMkRsQixpQ0FvMkRnQjVHLEVBQUU0Rzs7V0FuMkRqQjthQUNJLDZCQWsyRFc1RzthQWoyRFgsZUFpMkRXQSxFQUFFNEc7YUFoMkRiLG9CQWcyRFc1RyxFQUFFNEc7YUEvMURiLGVBKzFEVzVHLEVBQUU0RzthQTkxRGIsZUE4MURXNUcsRUFBRTRHO2FBNzFEYixlQTYxRFc1RyxFQUFFNEc7YUE1MURiLGVBNDFEVzVHLEVBQUU0RzthQTMxRGIsY0EyMURXNUcsRUFBRTRHO2FBbDFEUztlQVBwQixlQXkxRFM1RyxFQUFFNEc7ZUF4MURYLG9CQXcxRFM1RyxFQUFFNEc7ZUF2MURYLGVBdTFEUzVHLEVBQUU0RztlQXQxRFgsZUFzMURTNUcsRUFBRTRHO2VBcjFEWCxlQXExRFM1RyxFQUFFNEc7ZUFwMURYLGVBbzFEUzVHLEVBQUU0RztlQW4xRFgsZUFtMURTNUcsRUFBRTRHO2VBbDFEWCxjQWsxRFM1RyxFQUFFNEc7Ozs7dUNBOTBEYjthQUdKOzs7YUFDSSw2QkEwMERXNUc7YUF6MERYLGVBeTBEV0EsRUFBRTRHO2FBeDBEYixtQkF3MERXNUcsRUFBRTRHO2FBdjBEYixjQXUwRFc1RyxFQUFFNEc7YUFsMERTO2VBSHBCLGVBcTBEUzVHLEVBQUU0RztlQXAwRFgsbUJBbzBEUzVHLEVBQUU0RztlQW4wRFgsZUFtMERTNUcsRUFBRTRHO2VBbDBEWCxjQWswRFM1RyxFQUFFNEc7Ozs7c0NBOXpEYjthQUdKOzs7YUFHTSw2QkF3ekRTNUc7YUF2ekRULGVBdXpEU0EsRUFBRTRHO2FBdHpEWCxpQkFzekRTNUcsRUFBRTRHO2FBcnpEWCxjQXF6RFM1RyxFQUFFNEc7YUFoekRXO2VBSHBCLGVBbXpETzVHLEVBQUU0RztlQWx6RFQsaUJBa3pETzVHLEVBQUU0RztlQWp6RFQsZUFpekRPNUcsRUFBRTRHO2VBaHpEVCxjQWd6RE81RyxFQUFFNEc7Ozs7c0NBNXlEWDthQU1OOztXQUVJLDZCQW95RFc1RztXQW55RFgsZUFteURXQSxFQUFFNEc7V0FseURiLGVBa3lEVzVHLEVBQUU0RztXQWp5RGIsZUFpeURXNUcsRUFBRTRHO1dBanlEYiw2QkFpeURXNUcsRUFBRTRHOztXQTF4RGYsYUEweERhNUcsS0FBRTRHO1dBMXhEZjs7b0JBd3hEZmlTLHdCQUU0QjdZLEVBQUU0Rzt5Q0FGOUJpUyxpQkFFNEI3WSxFQUFFNEc7O1dBenhEZiw2QkF5eERhNUc7V0F4eERiLHdCQXd4RGFBLEVBQUU0RztXQXh4RGY7O29CQXN4RGZpUyx3QkFFNEI3WSxFQUFFNEc7eUNBRjlCaVMsaUJBRTRCN1ksRUFBRTRHOztXQXR4RGYsNkJBc3hEYTVHO1dBcnhEYixVQXF4RGFBLEVBQUU0RztXQXJ4RGY7O29CQW14RGZpUyx3QkFFNEI3WSxFQUFFNEc7eUNBRjlCaVMsaUJBRTRCN1ksRUFBRTRHOztXQW54RGYsYUFteERhNUcsS0FBRTRHO1dBbnhEZjs7b0JBaXhEZmlTLHdCQUU0QjdZLEVBQUU0Rzt5Q0FGOUJpUyxpQkFFNEI3WSxFQUFFNEc7O1dBbHhEakIscURBa3hEZTVHLEVBQUU0RztrQkFqeERqQix5Q0FpeERlNUcsRUFBRTRHLFNBb0kwQjthQXRJeEQ4UixjQUFZMVksRUFBRTRHO01EMXNGbkIsdUJDMHNGS2lTLGdCQUFZN1ksRUFBRTRHO2FBOExkb1MsZUFFNkJoWixFQUFFNEc7TUQxNEZwQyxJQzA0RjJDcUI7TUFDeEM7UUFBTTtTQURrQ0M7VUFDbEMsZ0JBMXVGSmpPLG1CQXl1RnNDZ08sZ0JBQVByQjtRQUMzQixPQURrQ3NCO1VBc0JqQixXQXRCVXRCO2NBQU9xQjs7O2lCQXo3RDdCLGlDQXk3RG9CakksRUFBRTRHO2lCQXg3RHRCLG9CQXc3RG9CNUcsS0FBRTRHOztXQXY3RHRCLHFEQXU3RG9CNUcsRUFBRTRHOztXQXQ3RHRCLHFEQXM3RG9CNUcsRUFBRTRHLFNBRFM7YUEwQnhDK1IsZUFBYTNZLEVBRWtCNEc7TURyNkZwQztNQ282Rkk7WUFDdUNxQjtRQUN4QztVQUFNO1dBRGtDQztZQUNsQyxnQkFyd0ZKak8sbUJBb3dGc0NnTyxnQkFBUHJCO1VBQzNCLE9BRGtDc0I7WUFzQ2pCLFdBdENVdEI7Z0JBQU9xQjs7O21CQTc4RHRDLGFBMjhEYWpJLEtBRWtCNEcsUUE1OEQvQixVQTA4RGE1RyxFQUVrQjRHOzthQXo4RC9CLDZCQXU4RGE1RzthQXQ4RGIsd0JBczhEYUEsRUFFa0I0Rzs7O2FBcjhEL0IsNkJBbThEYTVHO2FBbDhEYixVQWs4RGFBLEVBRWtCNEc7O21CQWo4RC9CLGFBKzdEYTVHLEtBRWtCNEc7b0JBLzdETixXQTg3RGU7YUEwQ3hDbVMsb0JBRWtDL1ksRUFBRTRHO01EaDlGekMsSUNnOUZnRHFCO01BQzdDO1FBQU07U0FEdUNDO1VBQ3ZDLGdCQWh6RkpqTyxtQkEreUYyQ2dPLGdCQUFQckI7UUFDaEMsU0FEdUNzQjtVQXQrRHpDLDZCQXMrRGdDbEksVUF0K0RoQztpQkFzK0R5Q2tJLGtCQXArRGxDO1FBay9EWSxXQWRldEI7UUFDaEMsSUFEdUNxQjtpQkFERTthQWtCN0NpUixvQkFFa0NsWixFQUFFNEc7TURuK0Z6QyxJQ20rRmdEcUI7TUFDN0M7UUFBTTtTQUR1Q0M7VUFDdkMsZ0JBbjBGSmpPLG1CQWswRjJDZ08sZ0JBQVByQjtRQUNoQyxPQUR1Q3NCO1VBc0J0QixXQXRCZXRCO2NBQU9xQjs7O2lCQXAvRGxDLG9DQW8vRHlCakk7aUJBbi9EdkIsNkJBbS9EdUJBLFVBbi9EdkI7aUJBQ0YsaURBay9EeUJBLEVBQUU0Rzs7V0FqL0QzQixxREFpL0R5QjVHLEVBQUU0RyxTQURTO2FBMEI3Q3VTLG1CQUVpQ25aLEVBQUU0RztNRDkvRnhDLElDOC9GK0NxQjtNQUM1QztRQUFNO1NBRHNDQztVQUN0QyxnQkE5MUZKak8sbUJBNjFGMENnTyxnQkFBUHJCO1FBQy9CLFNBRHNDc0I7VUF6Z0UvQiw2QkF5Z0VzQmxJLFNBemdFdEI7aUJBeWdFK0JrSSxrQkF4Z0VqQztRQW9oRVksV0FaY3RCO1FBQy9CLElBRHNDcUI7aUJBREU7YUFnQjVDbVIsbUJBRWlDcFosRUFBRTRHO01EL2dHeEMsSUMrZ0crQ3FCO01BQzVDO1FBQU07U0FEc0NDO1VBQ3RDLGdCQS8yRkpqTyxtQkE4MkYwQ2dPLGdCQUFQckI7UUFDL0IsT0FEc0NzQjtVQXNCckIsV0F0QmN0QjtjQUFPcUI7OztpQkF0aEVqQyxvQ0FzaEV3QmpJO2lCQXJoRXRCLDZCQXFoRXNCQSxTQXJoRXRCO2lCQUNGLGlEQW9oRXdCQSxFQUFFNEc7O1dBbmhFMUIscURBbWhFd0I1RyxFQUFFNEcsU0FEUzthQTBCNUN5UyxpQkFFaUNyWixFQUFFNEc7TUQxaUd4QyxJQzBpRytDcUI7TUFDNUM7UUFBTTtTQURzQ0M7VUFDdEMsZ0JBMTRGSmpPLG1CQXk0RjBDZ08sZ0JBQVByQjtRQUMvQixTQURzQ3NCO1VBMWlFeEMsNkJBMGlFK0JsSSxTQTFpRS9CO2lCQTBpRXdDa0ksa0JBeGlFakM7UUFzakVZLFdBZGN0QjtRQUMvQixJQURzQ3FCO2lCQURFO2FBa0I1Q3FSLGlCQUVpQ3RaLEVBQUU0RztNRDdqR3hDLElDNmpHK0NxQjtNQUM1QztRQUFNO1NBRHNDQztVQUN0QyxnQkE3NUZKak8sbUJBNDVGMENnTyxnQkFBUHJCO1FBQy9CLE9BRHNDc0I7VUFzQnJCLFdBdEJjdEI7Y0FBT3FCOzs7aUJBeGpFakMsb0NBd2pFd0JqSTtpQkF2akV0Qiw2QkF1akVzQkEsU0F2akV0QjtpQkFDRixpREFzakV3QkEsRUFBRTRHOztXQXJqRTFCLHFEQXFqRXdCNUcsRUFBRTRHLFNBRFM7YUEwQjVDcVMsZUFFNkJqWixFQUFFNEc7TUR4bEdwQyxJQ3dsRzJDcUI7TUFDeEM7UUFBTTtTQURrQ0M7VUFDbEMsZ0JBeDdGSmpPLG1CQXU3RnNDZ08sZ0JBQVByQjtRQUMzQixPQURrQ3NCO1VBaUJqQixXQWpCVXRCO2NBQU9xQjs7O2lCQTdrRTdCLG9DQTZrRW9Cakk7aUJBNWtFcEIsOENBNGtFb0JBLEVBQUU0Rzs7V0Eza0V0QixxREEya0VvQjVHLEVBQUU0RyxTQURTO2FBMkN4QzJTLHdCQUFzQnZaLEVBRWtCNEc7TURwb0c3QztNQ21vR0k7WUFDZ0RxQjtRQUNqRDtVQUFNO1dBRDJDQztZQUMzQyxnQkFwK0ZKak8sbUJBbStGK0NnTyxnQkFBUHJCO1VBQ3BDLE9BRDJDc0I7WUF3QjFCLFdBeEJtQnRCO2dCQUFPcUI7OzttQkEvbUUxQyxvQ0E2bUVpQmpJO21CQTVtRWpCLCtDQTRtRWlCQSxFQUVrQjRHOzthQTdtRWpDLDZCQTJtRWU1RzthQTFtRWYsVUEwbUVlQSxFQUVrQjRHOztvQkExbUVqQyxhQXdtRWU1RyxLQUVrQjRHLHFCQURTO2FBNEJqRDRTLE9BRXFCNVM7TURqcUcxQixJQ2lxR2lDcUI7TUFDOUI7UUFBTTtTQUR3QkM7VUFDeEIsZ0JBamdHSmpPLG1CQWdnRzRCZ08sZ0JBQVByQjtRQUNqQixTQUR3QnNCLGtCQXBvRW5CLDJCQW9vRVl0QjtRQU9BLFdBUEFBO1FBQ2pCLElBRHdCcUI7aUJBREU7SUF4bEc1Qm1NLGlCQXVsR0ZvRjthQXhuRUVDLFlBQVV6WixFQUFFNEc7TUFDTixJQUFKbE0sRUFBSSxXQURJc0YsRUFBRTRHO2NBQ1ZsTSxpQkFJRiw2QkFKRUE7TUFFRix5Q0FIVXNGLEVBQUU0RyxPQUtDO2FBRWI4UyxZQUFVN08sVUFBVTdLLEVBQUU0RztNQUNmLHlCQURHaUUsVUFBVTdLLEVBQUU0RztNQUNmLHNDQUFrQzthQWV6QytTLGFBQVc5TyxVQUFVN0ssRUFBRTRHO01BQ2pCLElBZFlwSixFQWNaLGdCQURLcU4sVUFBVTdLLEVBQUU0RztNQVp6QixHQURvQnBKO1FBSUo7U0FEUDhQLEdBSFc5UDtTQUdoQmpELEVBSGdCaUQ7U0FJSiw4QkFKSUE7U0FLTixpQkFESnVCLElBRE54RTtTQUVVLEtBRkwrUztTQUVLLEtBREp2TztRQUNJO2NBRVJuRTtVQUNFO1lBQVMsbUNBRlAyUztZQUVGLGlCQUhFck4sRUFFSnRGO1lBRU8saUNBSEgyUztZQUVPLFNBRFgzUzs7O1FBSUEsT0FOSXNGO01BSEEsVUFhUzthQUlqQjBaLGNBQVluTyxXQUFXWCxTQUFTOUs7TUFDbEM7UURya0NMLE9Da3VFSzRYLHVCQTNVQTNDLGFBbjFCY3hKLFdBQVdYLFNBQVM5SyxRQUNtQjthQVNuRDZaLGNBQVk3WixFQUFJOUUsSUFBZ0IwTDtNQUNsQyxHQURrQjFMLElBQVMsUUFBVEEsY0FBU0MsYUFBVHJCO01BQ2xCLGFBRGNrRyxFQUFvQjRHO01BSTdCLGNBSjZCQSxRQUs5QjtNQUVBLElBSkFyTSxFQUlBLFlBUFV5RixFQUFvQjRHO01BTzlCLE9BUGM5TTtRQU5sQixhQU1ja0csRUFBb0I0RztRQUwzQixrQkFLMkJBO1NBSmhDLDhDQUlZNUcsRUFBb0I0RztNQVdqQixPQVJick0sQ0FVSDthQUdDdWYsY0FBYXhmLElBQUtXLE1BQU9HLEtBQUtoQjtNQUNoQztRQUNlOzJDQUZpQkE7U0FHdEIsYUFIS0UsSUFBS1csTUFBT0c7U0FJekIsbUJBREk0RSxJQURBNEc7Ozs7aUNBSUo7bUJBQTZCO2FBRTdCbVQsZUFBY3pmLElBQUtXLE1BQU9HLEtBQUt3UztNQUNqQztRQUNlOzRDQUZrQkE7U0FHdkIsYUFITXRULElBQUtXLE1BQU9HO1NBSTFCLG1CQURJNEUsSUFEQTRHOzs7O2lDQUlKO21CQUE2QjthQUU3Qm9ULFlBQVcxZixJQUFLVyxNQUFPRyxLQUFLa0U7TUFDckIsSUFBTHNPLEdBQUssc0JBRHFCdE87TUFDckI7UUFFQyxJQUFKL0UsRUFBSSxlQUhHRCxJQUFLVyxNQUFPRyxLQUNyQndTO1FBR0Ysc0JBSEVBO1FBTUYsT0FKSXJUO1lBR0RnRiw4QkFDSCxzQkFORXFPLElBTUYsTUFER3JPLEVBRUk7O2FBSVAwYSxrQkFBZ0JqYSxFQUFJOUUsSUFBb0IwTDtNQUMxQyxHQURzQjFMLElBQU0sUUFBTkEsV0FBTUMsYUFBTjRTLG9CQUFnQixRQUFFO01BQVosU0FFcEIzUDtRQUNOO1VBQWMsMEJBSEU0QixFQUNkbkcsU0FEc0MrTSxRQUVsQ3hJO2NBTUZtQjs7aUNBRkUsV0FOY3dPLE9BTWQ7VUFHQTtZQUFLLFdBVFNBO2dCQVNHQzsrQ0FBUyxtQkFENUJ6TyxFQUNtQnlPO1VBQ2pCLE1BRkZ6TyxFQUVTO01BVmEsT0FFcEJuQixDQVVQO2FBRUM4YixrQkFBaUI1ZixJQUFLVyxNQUFPRyxLQUFLaEI7TUFDNUIsSUFBSjRGLEVBQUksV0FEVzFGLElBQUtXLE1BQU9HO01BRWIseUJBRGQ0RSxJQUNjLDJCQUZrQjVGLEdBRUk7YUFFdEMrZixtQkFBa0I3ZixJQUFLeVQsSUFBSzlTLE1BQU9HLEtBQUt3UztNQUM3QjswQ0FENkJBO09BRWxDLGFBRll0VCxJQUFVVyxNQUFPRztNQUU3Qix5QkFBSjRFLEVBRnFCK04sSUFDckJuSCxPQUV5QjthQUUzQndULGdCQUFlOWYsSUFBS1csTUFBT0csS0FBS2tFO01BQ3pCLElBQUxzTyxHQUFLLHNCQUR5QnRPO01BQ3pCLFNBQ0x5TyxXQUFTLDZCQURUSCxHQUNvQjtNQURmO2VBRGEzUyxZQUFZcUU7T0FRckIsbUNBUFRzTztPQVFJLGFBVFN0VCxJQUdiOFQsUUFIeUJoVDtNQVNyQix5QkFBSjRFLEtBUEErTixLQU1BbkgsT0FFeUI7YUFJM0J5VCx1QkFDQy9mLElBQU1ZLElBQXFCRCxXQUF3QjJTO01BQ3RELEdBRFMxUyxJQUFNLFFBQU5BLFdBQU1DLGFBQU40UyxvQkFBZ0IsUUFBRTtNQUFaLFFBQW9DLGtCQUFSTyxNQUFRMVAsZUFBUjBQO01BQzNDLElBQUlqVCxNQUREZixVQUdnQjtNQUFMLFNBR044RCxFQUFFaEQ7UUFDUjtVQUNhO3NDQVJ1Q3dTO1dBUXZDLEtBRkx4UztXQUdnRCxvQkR6cUMvRCxPQ3NxQ2FnRDtXQUdZOzBDQVJoQi9DLE1BRDBCSixTQU1wQkcsTUFFRm1UOztjQUlGaFA7OytCQURlLFdBWFp3TyxPQVdZO1VBQ1YsU0FORDNTO1VBTW1CLHFCQUF2Qm1FLGtCRDVxQ1gsT0NzcUNhbkIsZUFNa0M7TUFUNUIsc0JEbnFDbkIsT0NzcUNhQSxFQU5tQ2tRLFlBY3BDO2FBRUxnTSxvQkFBbUJoZ0IsSUFBS1csTUFBT0csS0FBS2tFO01BQzdCLElBQUxzTyxHQUFLLHNCQUQ2QnRPO01BQzdCLFNBQ0x5TyxXQUFTLDZCQURUSCxHQUNvQjtNQURmLElBRUxRLFFBSHNCblQsWUFBWXFFO01BS3hCLDhCQUxPaEYsT0FFakJ5VCxLQUNBSyxRQUg2QmhULEtBQzdCd1MsR0FPMEM7YUFFNUMyTSxXQUFVMWIsSUFBSXpFO01BQ00sMEJBRFZ5RSxJQUNVLG9CQUROekUsR0FDcUI7YUFFbkNvZ0IsVUFBUzNiLElBQUl6RTtNQUNMLCtDQURLQSxHQUNVOzthQS9xQ3pCcWdCLFNBQU90VCxJQUFJeUg7TUFaRixVQVlFQTs7Ozs7Ozs7Ozs7Ozs7O01BQXdCLDRDQUE1QnpILFVBQUl5SCxHQUE2Qzs7YUFJeEQ4TCxRQUFNNVosS0FBS2dPO01BQ2I7UUFBSSxvQ0FESWhPLEtBQUtnTzs7OzhCQUVLO21CQUFLO2FBRXJCNkwsU0FBTzdaLEtBRVA4TjtNRHpCTCxVQ3lCS0E7UUFEYyxJQUFQRSxJQUNQRixNQURjLGVBRFA5TixLQUNBZ087TUFDOEIsK0JBRjlCaE87TUFFTSxtRUFBYjhOO2FBRUFnTSxRQUFNaGdCLEVBQ05nVTtNRDVCTCxVQzRCS0E7UUFDRTtXQURGQTtTQUNZLDhCQUROcFI7U0FDTSxtQkFGTjVDLElBRUFtRSxNQUZBbkU7Z0JBR0FxVSxvQkFEQWxRLE9BQ0FrUTtTQUdDLGlDQUxEelIsRUFFQXlSO1FBREo7U0FHK0IsMkJBTDNCclU7U0FLMkI7UUFBWCw2REFKdEJnVTtNQU1tQztrQ0FQN0JoVTtPQU82QjtNQUF0QixrRUFOYmdVO2FBU0FpTSxNQUFJemMsRUFFSndRO01EdkNMLFVDdUNLQTtRQURXLElBQUxwUixFQUNOb1IsTUFEaUIsK0NBRGJ4USxFQUNFWjtNQUNBLGlEQUFOb1I7YUFFQWtNLFdBRUFsTTtNRDNDTCxVQzJDS0E7UUFEYyxJQUFQRSxJQUNQRixNQURjLE9BQVBFO01BQ0QsMENBQU5GLEdBQXVDO2FBRXZDbU0sWUFBVTNjLEVBRVY3RCxHRC9DTCxxQkMrQ0tBLE9BQVUsV0FGQTZELEVBRVY3RDthQUVBeWdCLFVBRUFwTTtNRG5ETCxVQ21ES0Esd0NBRFcsSUFBTDVRLEVBQ040USxNQURXLE9BQUw1UTtNQUNBLHdDQUFONFEsR0FBcUM7YUFFckNxTSxpQkFHQXJNO01BSGlCLFVBR2pCQTs0QkFEUzs7d0JBQ1RBLE9BRlcsSUFBTDVRLEVBRU40USxNQUZXLFVBQUw1UTtNQUVBLGdEQUFONFEsR0FBNkM7YUFFN0NzTSxZQUdBdE07TUFIWSxVQUdaQTs7NkJBRlUsSUFBTGhVLEVBRUxnVSxNQUZVLE9BQUxoVTsrQkFDTyxJQUFMd0QsRUFDUHdRLE1BRFksT0FBTHhRO01BQ0QsMENBQU53USxHQUF1QzthQUV2Q3VNLG1CQUlBdk07TUFKbUIsVUFJbkJBOzRCQURTOztpQkFDVEE7NkJBSFUsSUFBTGhVLEVBR0xnVSxNQUhVLFVBQUxoVTsrQkFDTyxJQUFMd0QsRUFFUHdRLE1BRlksVUFBTHhRO01BRUQsaURBQU53USxHQUErQzthQUUvQ3dNLFdBRUF4TTtNRHZFTCxVQ3VFS0Esd0NBRFksSUFBTHhRLEVBQ1B3USxNQURZLE9BQUx4UTtNQUNELHlDQUFOd1EsR0FBc0M7YUFFdEN5TSxrQkFHQXpNO01BSGtCLFVBR2xCQTs0QkFEUzs7d0JBQ1RBLE9BRlksSUFBTHhRLEVBRVB3USxNQUZZLFVBQUx4UTtNQUVELGlEQUFOd1EsR0FBOEM7YUFFOUMwTSxTQUVBMU07TURoRkwsVUNnRktBLHNDQURVLElBQUxoVSxFQUNMZ1UsTUFEVSxPQUFMaFU7TUFDQyx1Q0FBTmdVLEdBQW9DO2FBRXBDMk0sZ0JBR0EzTTtNQUhnQixVQUdoQkE7NEJBRFM7O3NCQUNUQSxPQUZVLElBQUxoVSxFQUVMZ1UsTUFGVSxVQUFMaFU7TUFFQywrQ0FBTmdVLEdBQTRDO2FBRTVDNE0sVUFFQTVNO01EekZMLFVDeUZLQSx3Q0FEVyxJQUFMcFIsRUFDTm9SLE1BRFcsT0FBTHBSO01BQ0EseUNBQU5vUixHQUFzQzthQUV0QzZNLFlBRUE3TTtNRDdGTCxVQzZGS0EseUNBRGEsSUFBTHhVLEVBQ1J3VSxNQURhLE9BQUx4VTtNQUNGLDBDQUFOd1UsR0FBdUM7YUFFdkM4TSxtQkFHQTlNO01BSG1CLFVBR25CQTs0QkFEUzs7eUJBQ1RBLE9BRmEsSUFBTHhVLEVBRVJ3VSxNQUZhLFVBQUx4VTtNQUVGLGlEQUFOd1UsR0FBK0M7YUFFL0MrTSxlQUFhdmQsRUFFYndRO01EdEdMLFVDc0dLQTtRQURXLElBQUxwUixFQUNOb1IsTUFEVyxrQ0FERXhRLEVBQ1BaO01BQ0EsaURBQU5vUjthQVdBZ04sYUFBV3hkLEVBQUVkO1VBUlErSyxNQUFJN0ssRUFRWkY7TUFQZjtXQUQyQkU7VUFJZixJQURIOFAsR0FIa0I5UCxLQUd2QmpELEVBSHVCaUQsS0FJZixpQkFJQ1ksRUFMVDdEO1VBQ1EsVUFFUSx3QkFBTGtELEVBTlE0SyxlQUFJN0ssRUFHbEI4UDtVQUNHLElBSmU5UCxFQUdsQjhQOzt5Q0FIY2pGLEtBU1M7YUFVOUJ3VCxVQUFRdmU7VUFSUStLLE1BQUk3SyxFQVFaRjtNQVBWO1dBRHNCRTtjQUdiOFAsR0FIYTlQLEtBR2xCakQsRUFIa0JpRDtvQkFHbEJqRDtZQUVrQjtnQkFGbEJBO2FBRThCLGlDQUFsQjRWLEdBTEU5SDs7YUFBSTdLLEVBR2I4UDs7Y0FIYTlQLEVBR2I4UDs7eUNBSFNqRixLQVNTO2FBRXpCeVQsZUFBYWxoQixFQUFFNEM7TUFDakI7O2lCRGhJSDttQkNtSVcsSUFESUE7bUJBQ0o7cUJBQVUsc0NBRE5BLEVBSEc1QyxJQUtJOztpQkFDUixRQUNWO2VBUGdCNEMsRUFPZDthQUVEdWUsY0FBWXZlO01BQ2Q7O2lCRHpJSDttQkMySW9CLElBQUxBLFdBQUssVUFBTEE7aUJBQ0QsUUFDVjtlQUxhQSxFQUtYO2FBRUR3ZSxnQkFBYy9iLEVBQUV6QztNQUNsQjs7aUJEaEpIO21CQ21KVyxJQURLQTttQkFDTDtxQkFBVSx1Q0FKRnlDLEVBR0h6QyxJQUVNOztpQkFDUixRQUNWO2VBUGlCQSxFQU9mO2FBRUR5ZSxlQUFhemU7TUFDZjs7aUJEekpIO21CQzJKcUIsSUFBTEEsV0FBSyxVQUFMQTtpQkFDRixRQUNWO2VBTGNBLEVBS1o7YUFFRDBlLGNBQVkxZTtNQUNkOztpQkRoS0g7bUJDa0tvQixJQUFMakQsV0FBSyxVQUFMQTtpQkFDRCxRQUNWO2VBTGFpRCxFQUtYO2FBRUQyZSxhQUFXM2U7TUFDYjs7aUJEdktIO21CQ3lLbUIsSUFBTGpELFdBQUssVUFBTEE7aUJBQ0EsUUFDVjtlQUxZaUQsRUFLVjthQUVENGUsZUFBYTVlO01BQ2Y7O2lCRDlLSDttQkNnTHFCLElBQUxqRCxXQUFLLFVBQUxBO2lCQUNGLFFBQ1Y7ZUFMY2lELEVBS1o7YUFFRDZlLGdCQUFjN2U7TUFDaEI7O2lCQUFXOzt3Q0FFSyxJQUFMakQsV0FBSyxVQUFMQTswQ0FDTyxJQUFMcUcsYUFBSyxVQUFMQTtpQkFDRixRQUNWO2VBTmVwRCxFQU1iO2FBRUQ4ZSxnQkFBYzllO01BQ2hCOztpQkQ3TEg7bUJDK0xzQixJQUFMakQsV0FBSyxVQUFMQTtpQkFDSCxRQUNWO2VBTGVpRCxFQUtiO2FBRUQrZSxPQUFLNWU7TUFDUCxvQkFET0E7TUFDUCxxQkFBdUIsSUFBTStDLGFBQU4sT0FBTUEsR0FBZTtNQUE5Qix3REFBOEI7YUFFMUM4YixTQUFPN2U7TUFDVCxvQkFEU0E7TUFDVCxxQkFBdUIsSUFBUzhDLGVBQVQsT0FBU0EsS0FBZ0I7TUFBbEMsd0RBQWtDO2FBRTlDZ2MsVUFBU3pMLE1BQVlDO01Eek0xQjtlQ3lNY0Q7Ozs7Ozs7O2VBQVlDOzs7Ozs7O1lBRUhqVCxFQUZHaVQsVUFFYi9RLEVBRkM4UTtRQUV1QiwwQ0FBeEI5USxFQUFVbEM7TUFDUixvREFBNkQ7YUF6TXZFMGUsTUFBSWhpQjtNQUNOLGVBRE1BOzRDQUlMO2FBRUNpaUIsZ0JBQWNsaEIsSUFBSUMsTUFBTUMsS0FBS0MsR0FBR0M7TUFDbEMsNkJBRCtCRCxHQUFmSCxJQUFJQyxTQUFNQyxPQUFORDtNQUVwQiw2QkFGK0JFLEdBQUdDO01BRWxDLFdBRjBCRjtNQUUxQixRQUNpQjthQVNmaWhCLGdCQUFjbmhCLElBQUlDLE1BQU1FO01BQzFCO1FBQ0U7Ozs7WUFGd0JBO1lBQVZIO1lBQUlDO2tDQUFKRCxPQUFJQztRQUlsQjtZQURHSzs7UUFDSDs7O1VBSmNOO1VBQUlDO1VBSWxCLHNCQUpjRCxPQUFJQztRQUlsQixNQURHSyxJQUdNO2FBbUJUOGdCLGVBQWFqaEIsR0FBR3hCO01BQ2xCLDZCQURld0I7TUFoQmYsMkNBZ0JrQnhCLFdBaEJsQjs7WUFDQVE7UUFDRTtVQUFNLElBbEIrQnFCLEVBa0IvQixnQkFjVTdCLEVBZmxCUTtVQUNRLFVBbEIrQnFCO1dBb0J6QixnQkFZSTdCLEVBaENPc0IsTUFpQnpCZCxFQWVlZ0I7OztxQkFoQ3dCSzs7Ozs7O3dCQXFCekIsZ0JBV0k3QixFQWhDT3NCLE1BaUJ6QmQsRUFlZWdCO3dCQVBELGdCQU9JeEIsRUFoQ09zQixNQWlCekJkLEVBZWVnQjt3QkFURCxnQkFTSXhCLEVBaENPc0IsTUFpQnpCZCxFQWVlZ0I7d0JBVkMsZ0JBVUV4QixFQWhDT3NCLE1BaUJ6QmQsRUFlZWdCO3dCQVJELGdCQVFJeEIsRUFoQ09zQixNQWlCekJkLEVBZWVnQjt5QkFiRixnQkFhS3hCLEVBaENPc0IsTUFpQnpCZCxFQWVlZ0I7Ozs7Ozs7OztlQS9CZiw2QkErQmVBLEdBQUd4QixFQWhDT3NCLFNBaUJ6QmQsSUFqQnlCYztlQUV6Qiw2QkE4QmVFO2VBN0JJLGVBSG9CSztlQUd2Qyw2QkE2QmVMO2VBN0JJLFNBQ0EsTUFKb0JLO2VBSXZDLDZCQTRCZUw7ZUE1QmYsV0FhQWhCOzs7VUFDUSxTQURSQTs7O01BYUEsZ0JBRWtCUixFQWhDT3NCLE1BZ0NWRTtnREFHTzthQUVwQmtoQix3QkFBc0IxaUI7TUFDZixJQUFMd0IsR0FBSztNQUNULGVBRElBLEdBRG9CeEI7TUFFeEIsbUNBREl3QixHQUVjO2FBVWhCbWhCLGFBQVduaEI7TUFDYixvQ0FEYUEsY0FDYzthQUV6Qm9oQixhQUFXcGhCLEdBQUdyQjtNQUNoQixTQURnQkE7MENBQUhxQixRQUN1QztJQU1uQzs7S0FEQTtJQURqQjtJQUVpQjtLQUZqQjs7O2FBa0xFd2hCLFFBQU1oZ0IsTUFBTUMsTUFBTTlDO01EMVB2QjtZQzRQVStDLGVBQUxDO1FBQ0UsV0FISUgsTUFBWTdDLEVBRWxCZ0Q7a0JBQUtEOzs7Z0JBUEFFLFdBQUxDO1lBQ0UsV0FJVUosTUFBTTlDO1lBSGhCLFdBR0k2QyxNQUFZN0MsRUFMbEJrRDtzQkFBS0Q7O1VBREM7TUFPQTtJQW5MUixTQXdMRTZmLFFBQU16aEIsSUFDUixvQ0FEUUEsTUFDYztJQXpMdEIsU0FpUEUwaEIsZ0JBQWMxaEIsR0FBR3hCLEVBQUV1RDtNQUNyQiw2QkFEZ0IvQjtNQUVoQixlQUZnQkEsR0FBR3hCO01BRW5CLEdBRnFCdUQsT0FLWHBELEVBTFdvRCxLQU1kLDZCQU5TL0IsT0FPVCxVQVBTQSxHQUtOckI7TUFJVixvQ0FUZ0JxQixNQVNNO0lBMVB0QixTQTBPRTRoQixjQUFZNWhCLEdBQUc0QjtNQUNqQiw2QkFEYzVCO01BRWQsUUFpQkUyaEIsVUFyRUFGLFFBa0RZemhCLEdBQUc0QjtNQUVqQixvQ0FGYzVCLE1BR1E7SUE3T3RCLFNBb09FNmhCLGFBQVc3aEIsR0FBRzRCO01BQ2hCLDZCQURhNUI7TUFFYixRQXVCRTJoQixVQXJFQUYsUUE0Q1d6aEIsR0FBRzRCO01BRWhCLG9DQUZhNUIsTUFHUztJQXZPdEIsU0EwTkU4aEIsY0FBWTloQixHQUFHNEI7TUFDakIsU0FBSUosTUFBTXhCO1lBQU9yQixXQUFISDtRQUNaLGVBRFF3QixHQUFJeEI7UUFFWiw2QkFGUXdCO1FBRVIsaUJBRlFBLEdBQU9yQjtNQUtqQiw2QkFOY3FCO01BT2QsUUFOSXdCLE1BbkNGaWdCLFFBa0NZemhCLEdBQUc0QjtNQU9qQixvQ0FQYzVCLE9BUVM7SUFsT3ZCLFNBNlBFMmhCLFVBbEVlM2hCLEdBQUlyQjtNQUNyQixVQURxQkEsZUFFUixvQkFGSXFCO2VBQUlyQjs7O2dDQXNCTCxJQUFMaUQsRUF0QlVqRCxLQXNCTCxxQkF0QkNxQixHQXNCTjRCO1VBUlEsSUFBTHBELEVBZE9HO1VBY0Ysb0NBZEZxQixHQWNIeEI7OEJBU0MsSUFBTGtELElBdkJXL0MsS0F1Qk4sb0JBdkJFcUIsR0F1QlAwQjtRQXBCSyxJQUFMVSxFQUhXekQ7UUFHTixvQkFIRXFCLEdBR1BvQzs7OEJBc0JNLElBQUxDLElBekJVMUQsS0F5QkwscUJBekJDcUIsR0F5Qk5xQztrQkF6QlUxRCxLQTRCSm9ELFdBQUhPO2VBMEJab2YsZ0JBdERlMWhCLEdBNEJIc0MsSUFBR1A7O1FBUkcsSUFBTFEsSUFwQk01RCxLQW9CRCxvQ0FwQkhxQixHQW9CRnVDO01BWkUsSUFBTEUsSUFSUzlEO01BUUosb0NBUkFxQixHQVFMeUMsSUFvQitCO0lBdk4zQyxTQW1URXNmLG9CQUFrQi9oQixHQUFHeEIsRUFBRXVEO01BQ3pCLEdBRHlCQTtZQUdoQnBELEVBSGdCb0Q7UUFJbkIsNkJBSmMvQjtRQUtkLGVBTGNBLEdBQUd4QjtRQU1qQiw2QkFOY3dCO1FBT2QsaUJBUGNBLEdBR1hyQjtRQUlILG9DQVBjcUI7TUFFUixzQkFGUUEsR0FBR3hCLEVBUUs7SUEzVDVCLFNBNlNFeWpCLGtCQUFnQmppQixHQUFHNEI7TUFDckIsNkJBRGtCNUI7TUFFbEIsUUFoRE1naUIsaUJBdkVKUCxRQXFIZ0J6aEIsR0FBRzRCO01BRXJCLG9DQUZrQjVCLE1BR0k7SUFoVHRCLFNBK1BNZ2lCLGlCQXlDV2hpQixHQXpDUXJCO01BQ3pCLFVBRHlCQSxlQUVaLG9CQXVDSXFCO2VBekNRckI7Ozs7WUFzQlQ7ZUF0QlNBO2FBZ0N6Qjt1QkFBVXFCO29CQUFPckIsV0FBSEg7Z0JBQ1osZUFEUXdCLEdBQUl4QjtnQkFFWiw2QkFGUXdCO2dCQUVSLHdCQUZRQSxHQUFPckI7WUFLakIsNkJBSWlCcUI7WUFIakIsUUFOSXdCLE1BdkdGaWdCLFFBZ0hlemhCLEdBbkJONEI7WUFnQlgsb0NBR2lCNUI7VUEzQkUsSUFBTHhCLEVBZFdHO1VBY04sb0NBMkJGcUIsR0EzQkh4Qjs7VUFTQyxJQUFMa0QsSUF2QmUvQztVQTBDekIsNkJBRGlCcUI7VUFFakIsUUEzQ01naUIsaUJBdkVKUCxRQWdIZXpoQixHQWxCUDBCO1VBb0JWLG9DQUZpQjFCO1FBdENGLElBQUxvQyxFQUhlekQ7UUFHVixvQkFzQ0VxQixHQXRDUG9DOzs4QkFzQk0sSUFBTEMsSUF6QmMxRCxLQXlCVCx5QkFnQkNxQixHQWhCTnFDO2tCQXpCYzFELEtBNEJSb0QsV0FBSE87ZUF3Qlp5ZixvQkFYZS9oQixHQWJIc0MsSUFBR1A7O1FBUkcsSUFBTFEsSUFwQlU1RCxLQW9CTCxvQ0FxQkhxQixHQXJCRnVDO01BWkUsSUFBTEUsSUFSYTlEO01BUVIsb0NBaUNBcUIsR0FqQ0x5QyxJQW9CbUM7SUEzUi9DLFNBK1RFeWYsWUFBWTVpQixTQUF5QlUsR0FBR3JCO01BQzFDLEdBRGNXLElBQU0sUUFBTkEsV0FBTUMsYUFBTndEO01BQ2QsUUFEZ0Msa0JBQU5FLElBQU1ELGVBQU5DO01BQzFCLEdBRDBCQSxJQUV4QixpQkFGcUNqRCxHQUFHckIsUUFJeEMsVUFKcUNxQixHQUFHckI7TUFJekIsb0NBSnNCcUIsR0FBekIrQyxJQUtVO0lBcFV4QixTQXNVRW9mLFlBQVd6akIsSUFBTVksU0FBd0IyRCxJQUFJdEU7TUFDL0MsR0FEbUJXLElBQU0sUUFBTkEsV0FBTUMsYUFBTjREO01BQ25CLFFBRHNDLGtCQUFOSixJQUFNQyxlQUFORDtNQUNoQyxHQURhckU7UUFLTCxJQURHc0IsR0FKRXRCLE9BS0wsNEJBREdzQixJQUNILElBSkpvRCxLQUdPcEQ7O1dBSFBvRCxLQUVVLDRCQUhLRDtNQVFuQixlQVJnQ0osS0FBV0UsSUFDdkNHLEtBRDJDekU7TUFTdkMsSUFBSkgsRUFBSSw0QkFSSjRFO01BU0osNEJBVElBO01BU0osT0FESTVFLENBRUg7SUFqVkQsU0FtVkU0akIsYUFBWTFqQixJQUFNWSxTQUF1QjJELElBQUlLLEdBQUczRTtNQUNsRCxHQURvQlcsSUFBSSxRQUFKQSxXQUFJQyxhQUFKNEQ7TUFDcEIsUUFEc0Msa0JBQU5KLElBQU1DLGVBQU5EO01BQ2hDLEdBRGNyRTtRQUlHLElBQU5zQixHQUpHdEIsT0FJRyw0QkFBTnNCLElBQU0sSUFIYm9ELEtBR09wRDs7V0FIUG9ELEtBRVUsNEJBSE1EO01BTXBCLGVBTmdDSixLQUFXRSxJQUN2Q0csS0FEOEN6RTtNQU9sRCw2QkFQK0MyRSxHQUMzQ0Y7TUFNSixtQ0FOSUEsS0FPVztJQTNWZixTQTZWRWlmLFlBQVczakIsSUFBTVksU0FBdUIyRCxJQUFJTyxJQUFJN0U7TUFDbEQsR0FEbUJXLElBQUksUUFBSkEsV0FBSUMsYUFBSjREO01BQ25CLFFBRHFDLGtCQUFOSixJQUFNQyxlQUFORDtNQUMvQixHQURhckU7UUFJSSxJQUFOc0IsR0FKRXRCLE9BSUksNEJBQU5zQixJQUFNLElBSGJvRCxLQUdPcEQ7O1dBSFBvRCxLQUVVLDRCQUhLRDtNQU1uQixlQU4rQkosS0FBV0UsSUFDdENHLEtBRDhDekU7TUFPaEIscUNBTjlCeUU7TUFNSjtRQUFXLHVCQVBtQ0k7O1FBT25DLDRCQU5QSjs7O01BTUosbUNBTklBLEtBT1c7SUFyV2YsU0F1V0VrZixVQUFTbmYsSUFBS0YsSUFBTTNELElBQVlvRSxLQUFLL0U7TUFDdkMsR0FEc0JXLElBQU0sUUFBTkEsV0FBTUMsYUFBTndEO01BQ2IsSUFBTE8sR0FBSyxzQkFEeUJJO01BQ3pCO1FBRVAsZUFIU1AsT0FBV0osS0FBTkUsSUFDWkssR0FEbUMzRTtRQUlyQywrQkFIRTJFO1FBS0Y7WUFER0ssOEJBQ0gsc0JBTEVMLElBS0YsTUFER0ssRUFFSTtJQTlXVCxTQWdYRTRlLGdCQUFnQmpqQixJQUFhMkQsSUFBSWpELEdBQUc2RDtNQUN0QyxHQURrQnZFLElBQU0sUUFBTkEsV0FBTUMsYUFBTndEO01BQ2xCLFlBRGtCQTtNQUNULG9CRHpiWixPQ3VZS21mLGlCQWlENkJqZixJQUFJakQ7TUFDMUIscUNBRDZCNkQsR0FDRjtJQWpYcEMsU0FtWEUyZSxnQkFBZTlqQixJQUFNWSxTQUEwQjJELElBQUlZO01BQ3JELEdBRHVCdkUsSUFBTSxRQUFOQSxXQUFNQyxhQUFONEQ7TUFDdkIsUUFEMEMsa0JBQU5KLElBQU1DLGVBQU5EO01BQ3BDLEdBRGlCckU7UUFLVCxJQURHc0IsR0FKTXRCLE9BS1QsNEJBREdzQixJQUNILElBSkpvRCxLQUdPcEQ7O1dBSFBvRCxLQUVVLDRCQUhTRDtNQVF2QixtQkFSb0NKLEtBQWFFLElBQzdDRyxLQURpRFM7TUFTN0MsSUFBSnJGLEVBQUksNEJBUko0RTtNQVNKLDRCQVRJQTtNQVNKLE9BREk1RSxDQUVIO0lBOVhELFNBZ1lFaWtCLGlCQUFnQi9qQixJQUFNWSxTQUF5QjJELElBQUlLLEdBQUdVO01BQ3hELEdBRHdCMUUsSUFBSSxRQUFKQSxXQUFJQyxhQUFKNEQ7TUFDeEIsUUFEMEMsa0JBQU5KLElBQU1DLGVBQU5EO01BQ3BDLEdBRGtCckU7UUFJRCxJQUFOc0IsR0FKT3RCLE9BSUQsNEJBQU5zQixJQUFNLElBSGJvRCxLQUdPcEQ7O1dBSFBvRCxLQUVVLDRCQUhVRDtNQUdPLGNBR2pCYztRQUNaLGVBUGtDbEIsS0FBYUUsSUFDN0NHLEtBS1VhO1FBRVosNkJBUm1EWCxHQUNqREY7UUFPRixtQ0FQRUEsS0FRYztNQU5hLHFDQUh5QlksSUFVbkQ7SUExWUwsU0E0WUUwZSxjQUFhdmYsSUFBTTdELElBQWEyRCxJQUFJUyxLQUFLRztNQUMzQyxHQURxQnZFLElBQU0sUUFBTkEsV0FBTUMsYUFBTndEO01BQ1osSUFBTE8sR0FBSyxzQkFENkJJO01BQzdCO1FBRVAsbUJBSGFQLE9BQU1KLEtBQWFFLElBQzlCSyxHQUR1Q087UUFJekMsK0JBSEVQO1FBS0Y7WUFER0ssOEJBQ0gsc0JBTEVMLElBS0YsTUFER0ssRUFFSTtJQW5aVCxTQXNaTWdmLE9BV0poa0I7TUFYVyxVQVdYQTs7OztZQU5FLE1BTUZBLEtBTmtCLGdDQUxkZ2tCLE9BSUUvZ0I7WUFDRTs7WUFITjtpQkFTRmpEO2FBVEU7O2dCQUErQiwwQkFBbUIsVUFBYjBGLEVBQWEsT0FBVkQsR0FBa0I7YUFBekMscUNBRFoxQzthQUNHOzs7Z0JBQ2lCO21EQUFNNEMsRUFBT2xDLEVBQTRCO1lBQTNELG9EQURIQzs7O29CQVNOMUQ7O2FBQ1csSUFET3lGLFVBQVJDLFVBQ0MsV0FET0Q7YUFDUCxPQURPQSxNQUNaRyxJQURONUYsa0JBQVUwRixLQUNKRTs7O1lBSkosUUFHRjVGLEtBSG1CLGdDQVJmZ2tCLE9BT0duZTtZQUNFO01BU0osT0FOTDdGLENBTU07SUF2YVIsU0F6Q0Vpa0IsVUFBUWhlLElBQUk0QyxJQUFJaEUsSUFBSTVCO01BQ3RCLFNBQUk2RixPQUFPakU7UUFBUyxxQ0FBVEEsU0FERG9CLElBQ3VDO01BQWpELHdDQUFJNkMsUUFEVUQsSUFBSWhFLElBQUk1QixFQUVnQjtJQXVDdEMsU0FyQ0VpaEIsVUFBU2xrQjtNQUNYLFVBRFdBOzs7Ozs7Ozs7Ozs7b0JBaUJlO01BSkYsUUFJTztJQW9CL0IsU0FDTW1rQixTQUFRbGIsV0FtRkMzRSxJQW5GZU8sSUFBdUI3RTtNRHpFeEQsSUN5RXdEcUc7TUFDckQ7a0JBRHFEQTtTQUV4QyxvQ0FGaUJ4QjtpQkFBdUJ3Qjs7Ozs7O2dCQTBDakQsT0ExQ1U0QyxXQTBDYSw4QkExQ0dwRTtnQkEyQzRCOzsyQkF3Q3ZDQTt3QkFBVzdFLFdBQU51RztvQkFDMEM7c0JEN0pyRSxPQ3lFUzRkLGNBbUZTN2Y7b0JBQ3NCLGlDQURiaUM7b0JBQ2EscUNBRGxCMUIsbUJBQVc3RTtpQkF4Q2U7c0NEcEhoRCxPQytCS2lrQjtnQkFxRkUsOEJBM0MwQnBmO2dCQTJDNEIsYUEzQzVDb0U7Z0JBMkNWLFlBQ3VCLDhCQTVDR3BFO2NBd0NiLG9DQXhDYUE7WUFzQlgsSUFBTGhGLEVBdEJ1Q3dHO1lBc0JsQyxvQ0F0Qld4QixJQXNCaEJoRjs7cUJBdEJ1Q3dHOztjQTZCakQsT0E3QlU0QyxXQTZCYSw4QkE3QkdwRTtpQkFsQjlCLDJCQXBCRXFmO2dCQXNFSTs7aUJBQ2UseUJEMUd4QixPQ3lFU0MsY0FtRlM3ZjtpQkFsRFA7c0NEMUdYLE9DK0JLMmY7Z0JBMEVJLDhCQWhDd0JwZjs7Z0JBcUN4Qjs7aUJBQ2UseUJEL0d4QixPQ3lFU3NmLGNBbUZTN2Y7aUJBN0NQO3NDRC9HWCxPQytCSzJmO2dCQStFSSw4QkFyQ3dCcGY7Y0FzQ3dCLGFBdEN4Q29FO2NBc0N3QyxZQUMzQiw4QkF2Q0dwRTtZQTJCZCxvQ0EzQmNBO1VBR2YsSUFBTDJCLElBSDJDSDtVQUd0QyxvQ0FIZXhCLElBR3BCMkI7OztZQTRDSixJQURLdkQsRUE5QzBDb0Q7WUErQy9DLEdBb0NTL0IsS0FuQ1AscUJBRkdyQixHQTlDMENvRDtZQWtEN0MsU0FKR3BELEVBS0Qsb0NBbkRvQjRCO1lBb0RqQixPQXBEQ29FLFdBcURtQiw4QkFyREhwRTtZQStDeEI7YUFNd0Q7YUFDSCx5QkQvSDlELE9DeUVTc2YsY0FtRlM3ZjthQTdCK0IseUJEL0hqRCxPQytCSzJmO1lBZ0dRLDhCQXREb0JwZixjQThDbkI1QjtZQUNMLGFBL0NRZ0c7WUFzREosWUFDdUIsOEJBdkRIcEU7bUJBQXVCd0I7O2dCQXNFL0JLO2VBYVBwQztjQVJQOzttQ0FBSTRFLGtCQUxVeEM7ZUF0RStCTDs7WUErRXBDOzs7YUFDaUMseUJEekpyRCxPQ3lFUzhkLGNBbUZTN2Y7WUFIbUMscUNBaEZwQk8sU0ErRWxCc0UsUUFUVXpDO1VBVmhCLEdBdUJTcEMsS0FuQlAsNEJBaEU2QytCO1VBb0VuQjsrQ0FwRUp4Qjs7VUF5QlYsSUFBTGxCLElBekJzQzBDLE9BeUJqQyxvQ0F6QlV4QixJQXlCZmxCO1FBTkUsSUFBTEMsSUFuQnlDeUM7UUFtQnBDLG9DQW5CYXhCLElBbUJsQmpCLEtBNkRxRTtJQWpGakYsU0F1RkV3Z0IsS0FBS3pqQixJQUFha0UsSUFBSTdFO01BQ3hCLEdBRE9XLElBQU0sUUFBTkEsV0FBTUMsYUFBTjBEO01BQ1A7TUFBaUMseUJEaEtwQyxPQ3lFUzZmLGNBc0ZDN2Y7TUFDMEIscUNBRGJPLGNBQUk3RSxFQUMrQztJQXhGdkUsU0F2RU1xa0IsS0FBR3RlO01ERFo7T0NHYyxvQ0FGRkE7Ozs7O2dCQTJDQUM7WUFDUCw4QkE1Q09EO1lBNkNQLDhCQTdDT0E7WUE2Q1A7Ozt1QkFFT0U7Z0JBQUw7bUJBQUtBLElBRUQsOEJBakRDRjtnQkFrREQsOEJBbERDQTtnQkFtREQsOEJBbkRDQSxTQStDS0k7Z0JBS04sOEJBcERDSjtnQkFxREQsS0FyRENBLElBK0NVRztnQkFPWCw4QkF0RENIO2dCQXNERCxRQUNLO1lBVEoscUNBSEFDO1lBYVAsOEJBeERPRDtZQXdEUCxxQ0F4RE9BO2NBMEJHL0Y7VUFDViw4QkEzQk8rRjtVQTRCUCw4QkE1Qk9BLFNBMEJHL0Y7VUFFVixxQ0E1Qk8rRjs7Y0EwRERLO1VBQ04sOEJBM0RPTDtVQTREUCw4QkE1RE9BO1VBNERQOzs7cUJBRU9FLElBQUlqRztjQUNQLEdBREdpRyxJQUVELDhCQWhFQ0Y7Y0FpRUQsS0FqRUNBLElBOERJL0Y7Y0FHTCxRQUNJO1VBTEgscUNBSERvRztVQVNOLDhCQW5FT0w7VUFtRVAscUNBbkVPQTtZQUdETTtRQUNOLDhCQUpPTjtRQUtQLDhCQUxPQSxTQUdETTtRQUVOLHFDQUxPTjs7O2NBc0VBTztVQUNQLDhCQXZFT1A7VUF3RVAsOEJBeEVPQTtVQXdFUDs7O3FCQUVPRSxJQUFJakI7Y0FDTixHQURFaUIsSUFFQSw4QkE1RUFGO2NBNkVBLEtBN0VBQSxJQTBFSWY7Y0FHSixRQUNJO1VBTEoscUNBSEFzQjtVQVNQLDhCQS9FT1A7VUErRVAscUNBL0VPQTsyQkFtRlNHLGVBQU5LO1FBQ1YsOEJBcEZPUjtRQXFGUCw4QkFyRk9BO1FBc0ZQLDhCQXRGT0EsU0FtRkdRO1FBSVYsOEJBdkZPUjtRQXVGUCxHQUpnQkc7Y0FPUE0sSUFQT047VUFRWiw2QkEzRkdIO1VBNEZILEtBNUZHQSxJQTBGRVM7VUFHTCw2QkE3RkdUOztTQXlGSyw2QkF6RkxBO1FBOEZQLDhCQTlGT0E7UUE4RlAscUNBOUZPQTs7WUFzQ0lVO1FBQ1gsOEJBdkNPVjtRQXdDUCw4QkF4Q09BLFNBc0NJVTtRQUVYLHFDQXhDT1Y7VUFjQ1c7TUFDUiw4QkFmT1g7TUFnQlAsOEJBaEJPQSxTQWNDVztNQUVSLHFDQWhCT1g7SUF1RVQsU0EyQkV1ZSxPQUFLdGtCLEdBQ1AsMENBbkdNcWtCLEtBa0dDcmtCLEVBQ2tCO0lBNUJ6QixTQThCTXVrQixRQUFNNWUsRUFBRWxDO1VBQUZ1RCxNQUFFQztNQUNkO2tCQURZRDtnREFBRUMsSUFFSTs7bUJBRk5EOzs7OzBCQUFFQztzQkFjYUMsSUFkYkQsT0FjQUUsSUFkRkgsT0Fjb0Isa0JBQWxCRyxJQUFhRDs7Ozs7Ozt3QkFkYkQ7Ozs7Ozs7aUJBd0JEO2tCQUZTRyxHQXRCUkg7a0JBc0JIakIsR0F0QkNnQjtrQkF1QkpLOztxQkFBZTt3REFBS0MsTUFBU25CLElBQW1DO2tCQUMzRCxnQ0FETGtCLGFBREdyQjtrQkFHRSxnQ0FGTHFCLGFBRGNEO2lCQUdUO21CQUNGOzs7dUJBQWM7Ozs7O3dCQUNiLHdCQURtQkUsTUFBYW5CO3VCQUNoQyxhQUVJLFFBSG9CcUIsUUFBY3RCLFFBR2Y7b0JBSHhCLHVDQUZIRSxLQUNBbUI7bUJBS1EsT0FBVkU7Ozs0Q0FHQTttQkFIVTs7O3lCQTlCRlI7cUJBR0dXLElBSEhYLE9BR05ZLElBSEliLE9BR1Usa0JBQWRhLElBQVNEOzs7Ozs7O3VCQUhIWDs7Ozs7OztvQkFtQ1FTLEtBbkNSVCxPQW1DSFUsS0FuQ0NYOzs7O3lCQUFFQztpQkE2Q0g7dUJBN0NHQTtrQkE0QytCZjtrQkFBUEs7d0JBNUMxQlM7a0JBNENRUTtrQkFBTk07a0JBQ0gsbUJBREdBLE9BQXdCdkI7aUJBQzNCO21CQUdMLEdBSmNpQjt3QkFBeUJ0QjsyQkE1Qy9CNkIsSUE0QytCN0IsU0E1Q2pDOEIsSUE0Q1FSLFdBNUNSUixRQUFFQzs7b0JBaURRLEtBTHVCZixNQUt2QjttQkFFVDtpQkFMRTs7Ozs7Ozt1QkE5Q0RlOzs7Ozs7O29CQW1DUVMsS0FuQ1JULE9BbUNIVSxLQW5DQ1g7Ozt3QkFBRUM7b0JBUVNpQixJQVJUakIsT0FRRmtCLElBUkFuQixPQVFnQixrQkFBaEJtQixJQUFXRDs7Ozs7OztzQkFSVGpCOzs7Ozs7O21CQW9CZW1CLElBcEJmbkIsT0FvQkNvQixJQXBCSHJCLE9Bb0JzQixrQkFBbkJxQixJQUFjRDs7V0FrQnpCO2FBQU8sSUFDTEgsU0FESywyQkF0Q0xzYyxRQW1DSzVjLEtBQVdEO2FBSU4sT0FBVk87OztzQ0FHQTthQUhVO1FBY1AsU0FBSztJQW5GZCxTQXRFRXVjLGVBQWNsZ0IsSUFBSU8sSUFBSTdFLEdBQ3hCLFlBRGdCc0UsSUFBSU8sSUFBSTdFLEVBQ0o7SUFxRXBCLFNBbkVFeWtCLG1CQUFrQm5nQixJQUFJdEU7TUE4SkgseUJEbkt4QixPQytKS29rQixLQTFKa0I5ZjtNQThKQywrQ0E5Skd0RSxFQUNEO0lBa0V2QixTQWhFRTBrQixvQkFBbUJwZ0IsSUFBSUssR0FBRzNFO01BOEpsQixJQUFOK0YsSUFBTSw4QkE5SmVwQjtNQStKQyx5QkR2SzdCLE9DK0pLeWYsS0F2Sm1COWY7TUErSksscUNBRHRCeUIsY0E5SndCL0YsRUFDRDtJQStEM0I7Ozs7OzthQWpDSTJrQixNQUFJampCO01BQ04sU0FETUE7OzBCQUdVLFFBSFZBOzt3QkFJVSxRQUpWQTs7K0JBRVUsT0FGVkE7TUFLRyw2QkFBWTtJQTRCdkIsU0ExQklrakIsZUFBYXhZLE1BQU0zRyxFQUFFNEc7TUFDdkI7WUFEdUJBO09BQ3ZCLElBRHFCNUc7T0FDckIsT0FBSTZHLE9BRG1CRCxpQkFFbkJFO09BRU8sMkJBRFBDLE1BRkFGLE9BRG1CRCxpQkFFbkJFO09BRU8sS0FKVTlHO01BSVY7T0FLSCxjQUpKaUgsVUFJSSxpQ0FERzdNOztXQUhQNk07TUFKSjtPQVVBO1FBUklGLFNBQ0FDO1VBU0EsaUNBVkFEO1VBWUEsaUNBWkFBLGFBQ0FDO09BYU0scUNBWk5DLFVBTGlCakgsS0FXakJrSCxNQVhXUDtNQWlCTCxrQkFBTlEsSUFDVTtJQVFoQixTQUxJaVksY0FBWXpZLE1BQU0zRyxFQUFFNEc7TUFFSyw2QkFGTEE7TUFFcEI7Z0RBRllELFlBQU0zRyxFQUFFNEcsT0FHWjtJQUVaLElBQUl5WSwrQkFBMEIsNkJBQVk7SUFBMUMsU0FFSUMsYUFBVzNZLE1BQU0zRyxFQUFFNEc7TUFDVjtnQ0FEVUE7T0FFSixzQkFKZnlZLGVBRW1Celk7TUFJbkI7Z0RBSldELE1BQ1RZLEtBQ0FDO2VBRmV4SDtlQUFFNEcsT0FLWDtJQVBaOztLQVNJMlk7O0tBQ0FDOzthQUlBQyx1QkFBcUI3WTtNQUN2QjthQUR1QkE7T0FDdkIsS0FEdUJBO09BQ3ZCLEVBRHVCQTtPQUN2QjtZQUNJakw7TUFESixhQUFJRDtZQUlKZCxFQUpJYztRQUtGO2FBVkE4akIsV0FRRTlrQixLQUdBO1VBRWUsU0FBSSxlQU5uQk4sRUFFSlE7VUFJbUIsYUFMZkY7VUFLZSxTQUpuQkU7OztNQU1BLFFBUElGLEtBVUYsT0FWRUE7TUFRRixvQkFFRTthQUVGZ2xCLGtCQUFrQjFmLEVBQUU0RztNQU1WLHlDQU5VQSxRQU1LO2FBS3pCK1ksdUJBQXFCL1k7TUFDdkI7YUFEdUJBO09BQ3ZCLEtBRHVCQTtPQUN2QixFQUR1QkE7T0FDdkI7WUFDSWpMO01BREosYUFBSUQ7WUFJSmQsRUFKSWM7UUFLRjthQUZFaEIsUUFwQ0Y2a0IsUUF1Q0U7VUFFZSxTQUFJLGVBTm5CbmxCLEVBRUpRO1VBSW1CLGFBTGZGO1VBS2UsU0FKbkJFOzs7TUFNQSxPQVBJRixLQVFGO01BRUEsT0FWRUEsSUFVQTthQUVGa2xCLGtCQUFrQjVmLEVBQUU0RztNQU1WLHlDQU5VQSxRQU1LO2FBU3pCaVosVUFBUTdmLEVBQUU0RztNQUNaLE9BRFU1RyxhQUNWLE9BRFk0RywwQkFDWixRQUNpRDthQUUvQ2taLGFBQVd4bEIsSUFBSXNNO01BQ2pCLElBQUk3SCxJQURhNkg7TUFDakIsb0NBRGF0TSxJQUFJc00sb0JBQ2I3SCxJQUM4RDthQTAyQjlEZ2hCLG9CQUFVL2YsRUFBRTRHO01BQ2pCOzs7ZUFDQ29aLG9DQUZjaGdCLEVBQUU0Rzs7ZUFFaEJvWiw2QkFGY2hnQixFQUFFNEcsYUFDbUI7YUFDbkNvWixrQ0FBMEJoZ0IsRUFBRTRHLE9BQU9xQjtNRGxnQ3hDLElDa2dDd0NDO01BQ3JDO1FBQU07U0FEK0JDO1VBQy9CLGdCQWwyQkpqTyxtQkFpMkJtQ2dPLGtCQUFQdEI7UUFDeEIsUUFEK0J1QjtVQXFNZCxXQXJNT3ZCO2NBQU9zQjs7O2lCQXQwQnZCO2lCQUNBO2lCQUNBO2lCQUNBO2lCQU9BO2lCQU9BO2lCQVllLHdDQXl5QkRsSSxFQUFFNEc7aUJBdHlCUCx5QkFzeUJLNUcsRUFBRTRHO2lCQXJ5QlAseUJBcXlCSzVHLEVBQUU0RztpQkFoeUJGLHdDQWd5QkVBOztXQTV4QmYsSUFBTXlCO1dBQU47YUFFSSxhQTB4QlNySSxFQUFFNEc7YUF6eEJYLGtCQXl4QldBO2FBeHhCTSxJQUFiNEIsV0FBYSxhQXd4QlJ4SSxFQUFFNEc7YUF2eEJYLGFBdXhCUzVHLEVBQUU0RzthQXR4QlgsYUFzeEJTNUcsRUFBRTRHO2FBcnhCWCxhQXF4QlM1RyxFQUFFNEc7YUF4eEJNLFNBSmZ5QjthQVFrQixlQUpoQkcsV0FJZ0IsWUFveEJYeEksRUFBRTRHOztlQWx4QlQsYUFreEJPNUcsRUFBRTRHO2VBanhCVCxrQkFpeEJPNUcsRUFBRTRHO2VBaHhCVCxhQWd4Qk81RyxFQUFFNEc7ZUEvd0JRLElBQWJpQyxhQUFhLGFBK3dCVjdJLEVBQUU0RztlQTl3QlQsYUE4d0JPNUcsRUFBRTRHO2VBN3dCVCxhQTZ3Qk81RyxFQUFFNEc7ZUE1d0JULGFBNHdCTzVHLEVBQUU0RztlQS93QlEsU0FiakJ5QjtlQWlCb0IsZUFKaEJRLGFBSWdCLFlBMndCYjdJLEVBQUU0Rzs7Ozs7Y0F2d0JKLDhDQXJCTHlCO2FBd0JOOztlQUFNUztXQUFOO2FBRUksYUFrd0JTOUksRUFBRTRHO2FBandCWCxpQkFpd0JXQTthQWp3QlgsU0FIRWtDO2FBSUssMEJBZ3dCRTlJLEVBQUU0Rzs7ZUE5dkJULGFBOHZCTzVHLEVBQUU0RztlQTd2QlQsaUJBNnZCTzVHLEVBQUU0RztlQTV2QlQsYUE0dkJPNUcsRUFBRTRHO2VBNXZCVCxTQVJBa0M7ZUFTTywwQkEydkJBOUksRUFBRTRHOzs7OztjQXZ2QkwsOENBYkprQzthQWdCTjs7ZUFFUXlNO1dBRlI7YUFJTSxhQWd2Qk92VixFQUFFNEc7YUEvdUJULGlCQSt1QlNBO2FBL3VCVCxTQUhFMk87YUFJSywwQkE4dUJBdlYsRUFBRTRHOztlQTV1QlAsYUE0dUJLNUcsRUFBRTRHO2VBM3VCUCxpQkEydUJLNUcsRUFBRTRHO2VBMXVCUCxhQTB1Qks1RyxFQUFFNEc7ZUExdUJQLFNBUkEyTztlQVNPLDBCQXl1QkZ2VixFQUFFNEc7Ozs7O2NBcnVCRiw4Q0FiTDJPO2FBbUJSOztXQUVJLGFBNnRCU3ZWLEVBQUU0RztXQTV0QkEsSUFBUDhPLEtBQU8sYUE0dEJGMVYsRUFBRTRHO1dBM3RCWCxhQTJ0QlM1RyxFQUFFNEc7V0ExdEJLLHVCQUZaOE8sS0FFWSxpQkEwdEJQMVYsRUFBRTRHOztXQXB0QmY7O29CQWt0QlRtWixzQkFFc0IvZixFQUFFNEc7eUNBRnhCbVosZUFFc0IvZixFQUFFNEc7O1dBbnRCYixpQkFtdEJXNUcsRUFBRTRHO1dBbnRCYjs7b0JBaXRCWG1aLHNCQUVzQi9mLEVBQUU0Rzt5Q0FGeEJtWixlQUVzQi9mLEVBQUU0Rzs7V0FsdEJiLFVBa3RCVzVHLEVBQUU0RztXQWx0QmI7O29CQWd0QlhtWixzQkFFc0IvZixFQUFFNEc7eUNBRnhCbVosZUFFc0IvZixFQUFFNEc7O1dBanRCZjs7b0JBK3NCVG1aLHNCQUVzQi9mLEVBQUU0Rzt5Q0FGeEJtWixlQUVzQi9mLEVBQUU0Rzs7V0FodEJmLHFEQWd0QmE1RyxFQUFFNEc7a0JBL3NCZix5Q0Erc0JhNUcsRUFBRTRHLFNBc00wQjthQXhNbEQwWixZQUFVdGdCLEVBQUU0RztNRGhnQ3JCLHVCQ2dnQ1NtWixjQUFVL2YsRUFBRTRHO2FBME1oQmthLGdCQUU4QjlnQixFQUFFNEc7TUQ1c0NyQztNQzJzQ0k7WUFDd0NxQjtRQUN6QztVQUFNO1dBRG1DQztZQUNuQyxnQkE1aUNKaE8sbUJBMmlDdUMrTixnQkFBUHJCO1VBQzVCLE9BRG1Dc0I7WUF3QmxCLFdBeEJXdEI7Z0JBQU9xQjs7O21CQXI1QnpCLG1DQXE1QmdCakk7bUJBcDVCZCxzQkFvNUJjQSxFQUFFNEc7bUJBbDVCaEIsYUFrNUJjNUcsS0FBRTRHOzthQWg1QmxCLHFEQWc1QmdCNUcsRUFBRTRHLFVBRFE7YUE0QnhDb2EsYUFFMkJoaEIsRUFGZDVCLEVBRWtCd0k7TUR6dUNwQztNQ3d1Q0k7WUFDdUNxQjtRQUN4QztVQUFNO1dBRGtDQztZQUNsQyxnQkF6a0NKaE8sbUJBd2tDc0MrTixnQkFBUHJCO1VBQzNCLE9BRGtDc0I7WUF5QmpCLFdBekJVdEI7Z0JBQU9xQjs7OzthQTE2QnhCLE1BMDZCYWpJLEtBejZCYSxpQ0FEcEJoQzthQUNGLGtCQXU2QkxJLEVBdjZCSyw0QkFERUo7bUJBRUosc0JBdzZCV2dDLEVBQUk0RzttQkF0NkJmLGFBczZCVzVHLEtBQUk0Rzs7YUFwNkJqQixxREFvNkJhNUcsRUFBSTRHLFVBRFE7YUE2QnZDbWEsc0JBc0ZzQy9nQixFQUFJNEc7TUQzMUMvQyxJQ3V3Q2tEcUI7TUFDL0M7UUFBTTtTQUR5Q0M7VUFDekMsZ0JBdm1DSmhPLG1CQXNtQzZDK04sZ0JBb0ZIckI7UUFuRnRDLE9BRHlDc0I7VUErRXhCLFdBS3FCdEI7Y0FwRkdxQjs7OztXQU8vQyxJQXA4QlNoTSxFQW84QlQsNkJBNkU0QzJLO1dBN0U1QyxvQ0E2RXdDNUcsS0FqaEMvQi9EO2lCQUNGLG9DQWdoQ2lDK0Q7aUJBL2dDakMsb0NBK2dDaUNBO2lCQTlnQ2pDLG9DQThnQ2lDQTtpQkE3Z0NqQyxvQ0E2Z0NpQ0E7aUJBNWdDakMsb0NBNGdDaUNBOztXQTFDeEM7MkNBMEM0QzRHO1lBckM1QywrQkFxQzRDQTtZQWhDNUMsaUNBZ0M0Q0E7WUEzQjVDLCtCQTJCNENBO1lBemdDc0IsV0FGbkJ0SztZQUVFLFdBRmI4TTtZQUVMLFdBRk5wTDtZQUViLFFBRkVrQzt1QkEyZ0M0QjNGO2lCQUFTNE47YUFDbkQ7ZUFBTTtnQkFENkNrQjtpQkFDN0MsZ0JBM3JDSm5QLG1CQTByQ2lEaU8sa0JBQVB2QjtlQUN0QyxPQUQ2Q3lDO2lCQThDNUIsV0E5Q3FCekM7cUJBQU91Qjs7OztrQkFPbkQ7b0RBUDRDdkI7bUJBWTVDLGlDQVo0Q0E7bUJBaUI1QyxpQ0FqQjRDQTttQkFzQjVDLGlDQXRCNENBO21CQTUvQnNCLFdBRmpCMkM7bUJBRUEsV0FGWEQ7bUJBRVAsV0FGSjlIO21CQUVmLFFBRklEOzhCQUNIOUQ7bUJBSUYsOEJBeS9CNkJ1QyxLQUFFekYsRUE3L0I3QmtEO2tCQU1GOzREQXUvQjZCdUMsRUFBSTRHOztrQkFwL0JyQzs0REFvL0JpQzVHLEVBQUk0Rzs7a0JBbC9CckM7MERBay9CaUM1RyxFQUFJNEc7V0FwZ0NqQyxvQkFvZ0M2QjVHLEtBQUV6RjtpQkFsZ0NuQyxrREFrZ0NpQ3lGLEVBQUk0Rzs7V0FqZ0NyQyxxREFpZ0NpQzVHLEVBQUk0RyxTQXJGSTthQXNJOUNxWixtQkFFaUNqZ0IsRUFBRTRHO01EOTRDeEMsSUM4NEMrQ3FCO01BQzVDO1FBQU07U0FEc0NDO1VBQ3RDLGdCQTl1Q0poTyxtQkE2dUMwQytOLGdCQUFQckI7UUFDL0IsT0FEc0NzQjtVQXNCckIsV0F0QmN0QjtjQUFPcUI7Ozs7V0FoaUNyQyxRQWdpQzhCckIsMEJBL2hDcEIsb0JBREo3SDtXQUVKLGVBREkzRTtXQUVKLDRCQTZoQzRCd00sb0JBL2hDeEJ4TSxJQURBMkU7V0FHSixrQ0FGSTNFO2lCQUtOLGlEQTBoQzRCNEYsRUFBRTRHOztXQXpoQzlCLHFEQXloQzRCNUcsRUFBRTRHLFNBRFE7YUEwQjNDZ2EsaUJBRStCNWdCLEVBQUU0RztNRHo2Q3RDLElDeTZDNkNxQjtNQUMxQztRQUFNO1NBRG9DQztVQUNwQyxnQkF6d0NKaE8sbUJBd3dDd0MrTixnQkFBUHJCO1FBQzdCLE9BRG9Dc0I7VUF5Qm5CLFdBekJZdEI7Y0FBT3FCOzs7O1dBampDekIsSUFBSjFOLEVBQUksWUFpakNnQnlGLEVBQUU0RztXQWhqQzFCLGFBZ2pDd0I1RyxFQUFFNEc7V0EvaUMxQixVQStpQ3dCNUcsRUFBRTRHO1dBL2lDMUIsVUFGSXJNO2lCQUlOO2lCQUNBLGlEQTRpQzBCeUYsRUFBRTRHOztXQTNpQzVCLHFEQTJpQzBCNUcsRUFBRTRHLFNBRFM7YUE2QjFDc2EsVUFFd0JsaEIsRUFBRTRHO01EdjhDL0IsSUN1OENzQ3FCO01BQ25DO1FBQU07U0FENkJDO1VBQzdCLGdCQXZ5Q0poTyxtQkFzeUNpQytOLGdCQUFQckI7UUFDdEIsT0FENkJzQjtVQWlCWixXQWpCS3RCO2NBQU9xQjs7O2lCQXRrQ3hCO2lCQUNBLDhDQXFrQ2VqSSxFQUFFNEc7O1dBcGtDakIscURBb2tDZTVHLEVBQUU0RyxTQURTO2FBcUJuQ3FhLFVBRXdCamhCLEVBQUU0RztNRDc5Qy9CLElDNjlDc0NxQjtNQUNuQztRQUFNO1NBRDZCQztVQUM3QixnQkE3ekNKaE8sbUJBNHpDaUMrTixnQkFBUHJCO1FBQ3RCLE9BRDZCc0I7VUFpQlosV0FqQkt0QjtjQUFPcUI7OztpQkF2bEM1QjtpQkFDQSw4Q0FzbENtQmpJLEVBQUU0Rzs7V0FybENyQixzREFxbENtQjVHLEVBQUU0RyxTQURTO2FBcUJuQ3VhLGFBRTJCbmhCLEVBQUU0RztNRG4vQ2xDLElDbS9DeUNxQjtNQUN0QztRQUFNO1NBRGdDQztVQUNoQyxnQkFuMUNKaE8sbUJBazFDb0MrTixnQkFBUHJCO1FBQ3pCLE9BRGdDc0I7VUFpQmYsV0FqQlF0QjtjQUFPcUI7OztpQkF4bUMvQjtpQkFDQSw4Q0F1bUNzQmpJLEVBQUU0Rzs7V0F0bUN4QixzREFzbUNzQjVHLEVBQUU0RyxTQURTO2FBcUJ0Q3dhLG9CQUVrQ3BoQixFQUFFNEc7TUR6Z0R6QyxJQ3lnRGdEcUI7TUFDN0M7UUFBTTtTQUR1Q0M7VUFDdkMsZ0JBejJDSmhPLG1CQXcyQzJDK04sZ0JBQVByQjtRQUNoQyxPQUR1Q3NCO1VBNEJ0QixXQTVCZXRCO2NBQU9xQjs7O2lCQXpuQ2xDO2lCQUNFLDRCQXduQ3VCakksTUF4bkN2QjtpQkFFRjtpQkFDQSxpREFxbkN5QkEsRUFBRTRHOztXQXBuQzNCLHNEQW9uQ3lCNUcsRUFBRTRHLFNBRFM7YUFnQzdDaWEsaUJBQWU3Z0IsRUFBRTRHO01EeGlEdEI7TUN5aURJO1lBQ3lDcUI7UUFDMUM7VUFBTTtXQURvQ0M7WUFDcEMsZ0JBMTRDSmhPLG1CQXk0Q3dDK04sZ0JBRnZCckI7VUFHYixPQURvQ3NCO1lBc0JuQixXQXhCSnRCO2dCQUV1QnFCOzs7bUJBbHBDbkM7bUJBQ0EsK0NBK29DVWpJLEVBQUU0RzttQkE5b0NWLFVBOG9DUTVHLEVBQUU0RztpQ0FDeUI7YUEwQjFDeWEsV0FFeUJ6YTtNRHJrRDlCLElDcWtEcUNxQjtNQUNsQztRQUFNO1NBRDRCQztVQUM1QixnQkFyNkNKaE8sbUJBbzZDZ0MrTixnQkFBUHJCO1FBQ3JCLFNBRDRCc0Isa0JBbHFDdEI7aUJBa3FDc0JBLGtCQWpxQ3RCO1FBNnFDVyxXQVpJdEI7UUFDckIsSUFENEJxQjtpQkFERTthQWdCbENpWSxhQUFXbGdCLEVBQUU0RztNRHBsRGxCO01DcWxESTtZQUNxQ3FCO1FBQ3RDO1VBQU07V0FEZ0NDO1lBQ2hDLGdCQXQ3Q0poTyxtQkFxN0NvQytOLGdCQUZ2QnJCO1VBR1QsT0FEZ0NzQjtZQTJCZixXQTdCUnRCO2dCQUV1QnFCOzs7bUJBL3FDVCxVQTZxQ2hCakksRUFBRTRHO21CQTVxQ2MsaUJBNHFDaEI1RyxFQUFFNEc7bUJBM3FDYyxVQTJxQ2hCNUcsRUFBRTRHOztvQkF6cUNZLFdBMHFDYTthQStCdEMwYSxZQUUwQnRoQixFQUFFNEc7TUR0bkRqQyxJQ3NuRHdDcUI7TUFDckM7UUFBTTtTQUQrQkM7VUFDL0IsZ0JBdDlDSmhPLG1CQXE5Q21DK04sZ0JBQVByQjtRQUN4QixPQUQrQnNCO1VBaUJkLFdBakJPdEI7Y0FBT3FCOzs7aUJBeHNDekI7aUJBQ0Esa0RBdXNDZ0JqSSxFQUFFNEc7O1dBdHNDbEIsc0RBc3NDZ0I1RyxFQUFFNEcsU0FEUzthQXFCckMyYSx3QkFBc0J2aEIsRUFFa0I0RztNRDVvRDdDLElDNG9Eb0RxQjtNQUNqRDtRQUFNO1NBRDJDQztVQUMzQyxnQkE1K0NKaE8sbUJBMitDK0MrTixnQkFBUHJCO1FBQ3BDLFNBRDJDc0Isa0JBenRDckM7aUJBeXRDcUNBLGtCQXh0Q3JDO1FBb3VDVyxXQVptQnRCO1FBQ3BDLElBRDJDcUI7aUJBREU7YUFnQmpEdVosWUFFMEJ4aEIsRUFBRTRHO01EN3BEakMsSUM2cER3Q3FCO01BQ3JDO1FBQU07U0FEK0JDO1VBQy9CLGdCQTcvQ0poTyxtQkE0L0NtQytOLGdCQUFQckI7UUFDeEIsT0FEK0JzQjtVQWdDZCxXQWhDT3RCO2NBQU9xQjs7O2lCQXR1Q3ZCO2lCQUNBO2lCQUdBO2lCQUNBOztXQUVBLHFEQSt0Q2NqSSxFQUFFNEc7O1dBOXRDaEIsc0RBOHRDYzVHLEVBQUU0RyxTQURTO2FBc0NyQzZhLHlCQUF5QnpoQixFQUFFNEcsT0FBT3FCO01EbHNEdkMsSUNrc0R1Q0M7TUFDcEM7UUFBTTtTQUQ4QkM7VUFDOUIsZ0JBbGlESmpPLG1CQWlpRGtDZ08sa0JBQVB0QjtRQUN2QixPQUQ4QnVCO1VBNENiLFdBNUNNdkI7Y0FBT3NCOzs7O1dBaHdDYjthQUFNLGdDQWd3Q0F0Qjs7OztjQTl2Q0Ysd0NBOHZDQTVHLEVBQUU0RzthQTd2Q047OzthQUFNLGdDQTZ2Q0FBOzs7O2NBM3ZDRix3Q0EydkNBNUcsRUFBRTRHO2FBMXZDTjs7V0FDRSw0QkF5dkNFNUc7V0F4dkNNLElBQUo1RixFQUFJLGdCQXd2Q040RixFQUFFNEc7V0F4dkNJO2FBS04sNEJBTEV4TSxHQU9GOztvRUFpdkNBNEYsRUFBRTRHOztXQTV1Q04scURBNHVDSTVHLEVBQUU0Rzs7V0EzdUNOLHNEQTJ1Q0k1RyxFQUFFNEcsU0E2QzBCO2FBL0NyRDhhLFdBQVMxaEIsRUFBRTRHO01BQ1osZ0NBRFU1RyxFQUFFNEcsV0FDeUI7YUFrRHBDK2EsMkJBQTJCM2hCLEVBQUU0RyxPQUFPcUI7TURudkR6QyxJQ212RHlDQztNQUN0QztRQUFNO1NBRGdDQztVQUNoQyxnQkFubERKak8sbUJBa2xEb0NnTyxrQkFBUHRCO1FBQ3pCLE9BRGdDdUI7VUFxQ2YsV0FyQ1F2QjtjQUFPc0I7Ozs7V0F6eENmO2FBQTRDLDRCQUF0QixvQkF5eENkdEI7YUF2eENKO2lFQXV4Q0U1RyxFQUFFNEc7O1dBcnhDTiw0QkFxeENJNUc7V0FweENJLElBQUo1RixFQUFJLGdCQW94Q0o0RixFQUFFNEc7V0FweENFO2FBS04sNEJBTEV4TSxHQU9GOztvRUE2d0NFNEYsRUFBRTRHO2lCQXh3Q1IsbURBd3dDTTVHLEVBQUU0Rzs7V0F2d0NSLHNEQXV3Q001RyxFQUFFNEcsU0FzQzBCO2FBeEN2RGdiLGFBQVc1aEIsRUFBRTRHO01BQ2Qsa0NBRFk1RyxFQUFFNEcsV0FDeUI7YUEyQ3RDaWIsMkJBQTJCN2hCLEVBQUU0RyxPQUFPcUI7TUQ3eER6QyxJQzZ4RHlDQztNQUN0QztRQUFNO1NBRGdDQztVQUNoQyxnQkE3bkRKak8sbUJBNG5Eb0NnTyxrQkFBUHRCO1FBQ3pCLE9BRGdDdUI7VUFxQ2YsV0FyQ1F2QjtjQUFPc0I7Ozs7V0E5eUNmO2FBQTRDLDhCQUF0QixvQkE4eUNkdEI7YUE1eUNKO2lFQTR5Q0U1RyxFQUFFNEc7O1dBMXlDTiw0QkEweUNJNUc7V0F6eUNJLElBQUo1RixFQUFJLGdCQXl5Q0o0RixFQUFFNEc7V0F6eUNFO2FBS04sOEJBTEV4TSxHQU9GOztvRUFreUNFNEYsRUFBRTRHO2lCQTd4Q1IsbURBNnhDTTVHLEVBQUU0Rzs7V0E1eENSLHNEQTR4Q001RyxFQUFFNEcsU0FzQzBCO2FBeEN2RGtiLGFBQVc5aEIsRUFBRTRHO01BQ2Qsa0NBRFk1RyxFQUFFNEcsV0FDeUI7YUEyQ3RDbWIsNEJBQTRCL2hCLEVBQUU0RyxPQUFPcUI7TUR2MEQxQyxJQ3UwRDBDQztNQUN2QztRQUFNO1NBRGlDQztVQUNqQyxnQkF2cURKak8sbUJBc3FEcUNnTyxrQkFBUHRCO1FBQzFCLE9BRGlDdUI7VUFzRGhCLFdBdERTdkI7Y0FBT3NCOzs7aUJBbjBDekI7aUJBQ0E7aUJBQ0E7aUJBQ2lDLDRCQUFmLG9CQWcwQ0F0Qjs7V0EvekNoQiw0QkErekNjNUc7V0E5ekNOLElBQUo1RixFQUFJLGdCQTh6Q000RixFQUFFNEc7V0E5ekNSO2FBS04sOEJBTEV4TTs7YUFPRiw0QkFQRUE7OzswQkFZSSxnREFrekNNNEYsRUFBRTRHOzs7OztXQTd5Q2xCLG9EQTZ5Q2dCNUcsRUFBRTRHOztXQTV5Q2xCLHNEQTR5Q2dCNUcsRUFBRTRHLFNBdUQwQjthQXpEeERvYixjQUFZaGlCLEVBQUU0RztNQUNmLG1DQURhNUcsRUFBRTRHLFdBQ3lCO2FBMER2Q3FiLGNBRTRCamlCLEVBQUU0RztNRGw0RG5DLElDazREMENxQjtNQUN2QztRQUFNO1NBRGlDQztVQUNqQyxnQkFsdURKaE8sbUJBaXVEcUMrTixnQkFBUHJCO1FBQzFCLE9BRGlDc0I7VUFrQmhCLFdBbEJTdEI7Y0FBT3FCOzs7O1dBcDJDMUIsNEJBbzJDaUJqSSxNQXAyQ2pCLHVCQW8yQ2lCQSxFQUFFNEc7aUJBbDJDckIsOENBazJDbUI1RyxFQUFFNEc7O1dBajJDckIsc0RBaTJDbUI1RyxFQUFFNEcsU0FEUzthQXNCdkN3WixhQUUyQnBnQixFQUFFNEc7TUR6NURsQyxJQ3k1RHlDcUI7TUFDdEM7UUFBTTtTQURnQ0M7VUFDaEMsZ0JBenZESmhPLG1CQXd2RG9DK04sZ0JBQVByQjtRQUN6QixPQURnQ3NCO1VBNEJmLFdBNUJRdEI7Y0FBT3FCOzs7O1dBcjNDekIsNEJBcTNDZ0JqSSxNQXIzQ2hCLHVCQXEzQ2dCQSxFQUFFNEc7O1dBYS9CLElBaDRDV3hNLEVBZzRDWCx3QkFiK0J3TSw0QkFhL0IsT0FoNENXeE07O1dBRUEscURBaTNDa0I0RixFQUFFNEc7O1dBaDNDcEIsc0RBZzNDa0I1RyxFQUFFNEcsU0FEUzthQWdDdENzYixZQUUwQmxpQixFQUFFNUIsRUFBRXdJO01EMTdEbkMsSUMwN0QwQ3FCO01BQ3ZDO1FBQU07U0FEaUNDO1VBQ2pDLGdCQTF4REpoTyxtQkF5eERxQytOLGdCQUFQckI7UUFDMUIsT0FEaUNzQjtVQXVCaEIsV0F2QlN0QjtjQUFPcUI7Ozs7V0E5NEMxQiw0QkE4NENlakksTUE5NENmLG9CQTg0Q2VBLEVBQUU1QixFQUFFd0k7O1dBanlEOUIsSUFBSTdILElBaXlEMEI2SDtXQWh5RDVCO29CQWd5RDBCeEk7b0JBaHlEMUIsMkJBZ3lENEJ3SSxvQkFqeUQxQjdIOzs7O1dBdVpLLHFEQTA0Q2lCaUIsRUFBSTRHOztXQXo0Q3JCLHNEQXk0Q2lCNUcsRUFBSTRHLFNBRFM7YUE2QnZDdWI7TUFBOEJ0WCxVQUFVQyxTQUFTOUssRUFBRTRHLE9BQU9xQjtNRHQ5RC9ELElDczlEK0RDO01BQzVEO1FBQU07U0FEc0RDO1VBQ3RELGdCQXR6REpqTyxtQkFxekQwRGdPLGtCQUFQdEI7UUFDL0MsT0FEc0R1QjtVQStCckMsV0EvQjhCdkI7Y0FBT3NCOzs7O1dBbDZDakQsSUFBTUcsT0FrNkN5QnlDO1dBbDZDL0I7YUFFSSxhQWc2Q29DOUssRUFBRTRHO2FBLzVDdEMsaUJBKzVDc0NBO2FBOTVDL0Isb0JBODVDVWlFLFVBbDZDZnhDLE9BazZDa0NySSxFQUFFNEc7O2VBNTVDcEMsYUE0NUNrQzVHLEVBQUU0RztlQTM1Q3BDLGlCQTI1Q2tDNUcsRUFBRTRHO2VBMTVDcEMsYUEwNUNrQzVHLEVBQUU0RztlQXo1QzdCLG9CQXk1Q1FpRSxVQWw2Q2Z4QyxPQWs2Q2tDckksRUFBRTRHOzs7O3NDQXI1Q3RDLE9BYkV5QjthQWVOOytEQW01Q3dDckksRUFBRTRHOztXQWw1QzFDLHNEQWs1Q3dDNUcsRUFBRTRHLFNBZ0MwQjthQWxDN0V3YixnQkFBY3ZYLFVBQVVDLFNBQVM5SyxFQUFFNEc7TUFDcEMscUNBRGVpRSxVQUFVQyxTQUFTOUssRUFBRTRHLFdBQ3lCO2FBcUM1RHliLDhCQUE4QnhYLFVBQVU3SyxFQUFFNEcsT0FBT3FCO01EMS9EdEQsSUMwL0RzREM7TUFDbkQ7UUFBTTtTQUQ2Q0M7VUFDN0MsZ0JBMTFESmpPLG1CQXkxRGlEZ08sa0JBQVB0QjtRQUN0QyxPQUQ2Q3VCO1VBK0I1QixXQS9CcUJ2QjtjQUFPc0I7Ozs7V0FuN0N4QyxJQUFNRztXQUFOO2FBRUksYUFpN0MyQnJJLEVBQUU0RzthQWg3QzdCLGlCQWc3QzZCQTthQWg3QzdCLFNBSEV5QjthQUlLLHVCQSs2Q1V3QyxVQUFVN0ssRUFBRTRHOztlQTc2QzNCLGFBNjZDeUI1RyxFQUFFNEc7ZUE1NkMzQixpQkE0NkN5QjVHLEVBQUU0RztlQTM2QzNCLGFBMjZDeUI1RyxFQUFFNEc7ZUEzNkMzQixTQVJBeUI7ZUFTTyx1QkEwNkNRd0MsVUFBVTdLLEVBQUU0Rzs7OztzQ0F0NkM3QixPQWJFeUI7YUFlTjsrREFvNkMrQnJJLEVBQUU0Rzs7V0FuNkNqQyxzREFtNkMrQjVHLEVBQUU0RyxTQWdDMEI7YUFsQ3BFMGIsZ0JBQWN6WCxVQUFVN0ssRUFBRTRHO01BQzNCLHFDQURlaUUsVUFBVTdLLEVBQUU0RyxXQUN5QjthQW1DbkQ0WixpQkFFK0I1WjtNRDloRXBDLElDOGhFMkNxQjtNQUN4QztRQUFNO1NBRGtDQztVQUNsQyxnQkE5M0RKaE8sbUJBNjNEc0MrTixnQkFBUHJCO1FBQzNCLFNBRGtDc0Isa0JBcDhDN0I7aUJBbzhDNkJBLGtCQW44QzdCO1FBKzhDWSxXQVpVdEI7UUFDM0IsSUFEa0NxQjtpQkFERTthQWdCeEN3WSxpQkFFK0J6Z0IsRUFBRTRHO01EL2lFdEMsSUMraUU2Q3FCO01BQzFDO1FBQU07U0FEb0NDO1VBQ3BDLGdCQS80REpoTyxtQkE4NER3QytOLGdCQUFQckI7UUFDN0IsT0FEb0NzQjtVQXNCbkIsV0F0Qll0QjtjQUFPcUI7OztpQkFqOUMvQjtpQkFDQTtpQkFDQSxpREErOENzQmpJLEVBQUU0Rzs7V0E5OEN4QixzREE4OENzQjVHLEVBQUU0RyxTQURTO2FBNEIxQzJiO01BQTJCMVgsVUFBVUMsU0FBUzlLLEVBQUU0RyxPQUFPcUI7TUQxa0U1RCxJQzBrRTREQztNQUN6RDtRQUFNO1NBRG1EQztVQUNuRCxnQkExNkRKak8sbUJBeTZEdURnTyxrQkFBUHRCO1FBQzVDLE9BRG1EdUI7VUF1Q2xDLFdBdkMyQnZCO2NBQU9zQjs7OztXQXIrQzFDLHFCQXErQ3dCNEM7V0FyK0N4QjthQUtNLGFBZytDMkI5SyxFQUFFNEc7YUEvOUM3QixpQkErOUM2QkE7YUE5OUN0QixvQkE4OUNDaUUsVUFuK0NOME0sT0FDQWxQLE9BaytDeUJySSxFQUFFNEc7YUE5OUN0Qjs7ZUFHTCxhQTI5Q3lCNUcsRUFBRTRHO2VBMTlDM0IsaUJBMDlDeUI1RyxFQUFFNEc7ZUF6OUMzQixhQXk5Q3lCNUcsRUFBRTRHO2VBeDlDcEIsb0JBdzlDRGlFLFVBbitDTjBNLE9BQ0FsUCxPQWsrQ3lCckksRUFBRTRHO2VBeDlDcEI7Ozs7c0NBS1QsT0FmRXlCO2FBb0JaOytEQTg4Q3FDckksRUFBRTRHOztXQTc4Q3ZDLHNEQTY4Q3FDNUcsRUFBRTRHLFNBd0MwQjthQTFDMUU0YixhQUFXM1gsVUFBVUMsU0FBUzlLLEVBQUU0RztNQUNqQyxrQ0FEWWlFLFVBQVVDLFNBQVM5SyxFQUFFNEcsV0FDeUI7YUEyQ3pEOFosaUJBRStCOVo7TUR0bkVwQyxJQ3NuRTJDcUI7TUFDeEM7UUFBTTtTQURrQ0M7VUFDbEMsZ0JBdDlESmhPLG1CQXE5RHNDK04sZ0JBQVByQjtRQUMzQixTQURrQ3NCLGtCQXQvQzdCO2lCQXMvQzZCQSxrQkFyL0M3QjtRQWlnRFksV0FaVXRCO1FBQzNCLElBRGtDcUI7aUJBREU7YUFnQnhDd2Esa0JBRWdDemlCLEVBQUVuQixJQUFJK0g7TUR2b0UzQyxJQ3VvRWtEcUI7TUFDL0M7UUFBTTtTQUR5Q0M7VUFDekMsZ0JBditESmhPLG1CQXMrRDZDK04sZ0JBQVByQjtRQUNsQyxPQUR5Q3NCO1VBdUJ4QixXQXZCaUJ0QjtjQUFPcUI7Ozs7V0FuZ0RwQyxHQW1nRHlCcEosSUFsZ0RyQixpREFrZ0RtQm1CLEVBQU00RztXQWhnRHpCOztXQUNKLEdBKy9DeUIvSCxJQTkvQ3JCO1dBRUEsaURBNC9DbUJtQixFQUFNNEc7a0JBMy9DN0IsVUEwL0NzQzthQTJCL0MrWixpQkFFK0IzZ0IsRUFBRTRHO01EbnFFdEMsSUNtcUU2Q3FCO01BQzFDO1FBQU07U0FEb0NDO1VBQ3BDLGdCQW5nRUpoTyxtQkFrZ0V3QytOLGdCQUFQckI7UUFDN0IsT0FEb0NzQjtVQXNCbkIsV0F0Qll0QjtjQUFPcUI7OztpQkFwaEQvQjtpQkFDQTtpQkFDQSxpREFraERzQmpJLEVBQUU0Rzs7V0FqaER4QixzREFpaERzQjVHLEVBQUU0RyxTQURTO2FBMEIxQzhiLGtCQUVnQzFpQixFQUFFbkIsSUFBSStIO01EOXJFM0MsSUM4ckVrRHFCO01BQy9DO1FBQU07U0FEeUNDO1VBQ3pDLGdCQTloRUpoTyxtQkE2aEU2QytOLGdCQUFQckI7UUFDbEMsT0FEeUNzQjtVQWlDeEIsV0FqQ2lCdEI7Y0FBT3FCOzs7aUJBemlEcEM7O1dBQ0EsR0F3aUR5QnBKLElBdmlEckIsaURBdWlEbUJtQixFQUFNNEc7V0FyaUR6Qjs7V0FDSixHQW9pRHlCL0gsSUFuaURyQjtXQUVBLGlEQWlpRG1CbUIsRUFBTTRHO2lCQWhpRDdCLGlEQWdpRHVCNUcsRUFBTTRHOztXQS9oRDdCLHNEQStoRHVCNUcsRUFBTTRHLFNBRFM7YUF1Qy9DK2I7TUFBcUNuWCxTQUFTQyxXQUFXWCxTQUFTOUssRUFBRTRHLE9BQU9xQjtNRHB1RWhGLElDb3VFZ0ZDO01BQzdFO1FBQU07U0FEdUVDO1VBQ3ZFLGdCQXBrRUpqTyxtQkFta0UyRWdPLGtCQUFQdEI7UUFDaEUsT0FEdUV1QjtVQXVDdEQsV0F2QytDdkI7Y0FBT3NCOzs7O1dBamtEbEUsSUFBTUcsT0Fpa0QwQ3lDO1dBamtEaEQ7YUFFSSxhQStqRHFEOUssRUFBRTRHO2FBOWpEdkQsa0JBOGpEdURBO2FBN2pEdEMsSUFBYjRCLFdBQWEsV0E2akRPZ0QsU0FBNkJ4TCxFQUFFNEc7YUE1akR2RCxhQTRqRHFENUcsRUFBRTRHO2FBM2pEdkQsYUEyakRxRDVHLEVBQUU0RzthQTFqRHZELGFBMGpEcUQ1RyxFQUFFNEc7YUF6akRoRCxvQkF5akQwQjZFLFdBamtEL0JwRCxPQUlFRyxXQTZqRGlEeEksRUFBRTRHOztlQXZqRHJELGFBdWpEbUQ1RyxFQUFFNEc7ZUF0akRyRCxrQkFzakRtRDVHLEVBQUU0RztlQXJqRHJELGFBcWpEbUQ1RyxFQUFFNEc7ZUFwakRwQyxJQUFiaUMsYUFBYSxXQW9qREsyQyxTQUE2QnhMLEVBQUU0RztlQW5qRHJELGFBbWpEbUQ1RyxFQUFFNEc7ZUFsakRyRCxhQWtqRG1ENUcsRUFBRTRHO2VBampEckQsYUFpakRtRDVHLEVBQUU0RztlQWhqRDlDLG9CQWdqRHdCNkUsV0Fqa0QvQnBELE9BYUlRLGFBb2pEK0M3SSxFQUFFNEc7Ozs7dUNBNWlEdkQsT0FyQkV5QjthQXVCTjsrREEwaUR5RHJJLEVBQUU0Rzs7V0F6aUQzRCxzREF5aUR5RDVHLEVBQUU0RyxTQXdDMEI7YUExQzlGZ2MsdUJBQXFCcFgsU0FBU0MsV0FBV1gsU0FBUzlLLEVBQUU0RztNQUNyRDtlQURzQjRFLFNBQVNDLFdBQVdYLFNBQVM5SyxFQUFFNEcsV0FDeUI7YUEyQzdFaWMsYUFFMkI3aUIsRUFBRTRHO01EaHhFbEMsSUNneEV5Q3FCO01BQ3RDO1FBQU07U0FEZ0NDO1VBQ2hDLGdCQWhuRUpoTyxtQkErbUVvQytOLGdCQUFQckI7UUFDekIsT0FEZ0NzQjtVQWlCZixXQWpCUXRCO2NBQU9xQjs7O2lCQWxsRDNCO2lCQUNBLDhDQWlsRGtCakksRUFBRTRHOztXQWhsRHBCLHNEQWdsRGtCNUcsRUFBRTRHLFNBRFM7YUFxQnRDdVosa0JBRWdDdlo7TUR0eUVyQyxJQ3N5RTRDcUI7TUFDekM7UUFBTTtTQURtQ0M7VUFDbkMsZ0JBdG9FSmhPLG1CQXFvRXVDK04sZ0JBQVByQjtRQUM1QixTQURtQ3NCLGtCQW5tRDlCO2lCQW1tRDhCQSxrQkFsbUQ5QjtRQThtRFksV0FaV3RCO1FBQzVCLElBRG1DcUI7aUJBREU7YUFnQnpDc1ksa0JBRWdDdmdCLEVBQUU0RztNRHZ6RXZDLElDdXpFOENxQjtNQUMzQztRQUFNO1NBRHFDQztVQUNyQyxnQkF2cEVKaE8sbUJBc3BFeUMrTixnQkFBUHJCO1FBQzlCLE9BRHFDc0I7VUFzQnBCLFdBdEJhdEI7Y0FBT3FCOzs7aUJBaG5EaEM7aUJBQ0E7aUJBQ0EsaURBOG1EdUJqSSxFQUFFNEc7O1dBN21EekIsc0RBNm1EdUI1RyxFQUFFNEcsU0FEUzthQTBCM0N5WixhQUUyQnJnQixFQUFFNEc7TURsMUVsQyxJQ2sxRXlDcUI7TUFDdEM7UUFBTTtTQURnQ0M7VUFDaEMsZ0JBbHJFSmhPLG1CQWlyRW9DK04sZ0JBQVByQjtRQUN6QixPQURnQ3NCO1VBaUJmLFdBakJRdEI7Y0FBT3FCOzs7aUJBcm9EM0I7aUJBQ0EsOENBb29Ea0JqSSxFQUFFNEc7O1dBbm9EcEIsc0RBbW9Ea0I1RyxFQUFFNEcsU0FEUzthQXFCdENrYyxrQkFFZ0M5aUIsRUFBRTRHO01EeDJFdkMsSUN3MkU4Q3FCO01BQzNDO1FBQU07U0FEcUNDO1VBQ3JDLGdCQXhzRUpoTyxtQkF1c0V5QytOLGdCQUFQckI7UUFDOUIsT0FEcUNzQjtVQXNCcEIsV0F0QmF0QjtjQUFPcUI7OztpQkF0cERoQztpQkFDQTtpQkFDQSxpREFvcER1QmpJLEVBQUU0Rzs7V0FucER6QixzREFtcER1QjVHLEVBQUU0RyxTQURTO2FBMEIzQ21jLFlBRTBCL2lCLEVBQUU0RztNRG40RWpDLElDbTRFd0NxQjtNQUNyQztRQUFNO1NBRCtCQztVQUMvQixnQkFudUVKaE8sbUJBa3VFbUMrTixnQkFBUHJCO1FBQ3hCLE9BRCtCc0I7VUFpQmQsV0FqQk90QjtjQUFPcUI7OztpQkEzcUQxQjtpQkFDQSw4Q0EwcURpQmpJLEVBQUU0Rzs7V0F6cURuQixzREF5cURpQjVHLEVBQUU0RyxTQURTO2FBcUJyQ29jLFlBRTBCaGpCLEVBQUU0RztNRHo1RWpDLElDeTVFd0NxQjtNQUNyQztRQUFNO1NBRCtCQztVQUMvQixnQkF6dkVKaE8sbUJBd3ZFbUMrTixnQkFBUHJCO1FBQ3hCLE9BRCtCc0I7VUFpQmQsV0FqQk90QjtjQUFPcUI7OztpQkE1ckQxQjtpQkFDQSw4Q0EyckRpQmpJLEVBQUU0Rzs7V0ExckRuQixzREEwckRpQjVHLEVBQUU0RyxTQURTO2FBcUJyQ3FjLFdBRXlCampCLEVBQUU0RztNRC82RWhDLElDKzZFdUNxQjtNQUNwQztRQUFNO1NBRDhCQztVQUM5QixnQkEvd0VKaE8sbUJBOHdFa0MrTixnQkFBUHJCO1FBQ3ZCLE9BRDhCc0I7VUFpQmIsV0FqQk10QjtjQUFPcUI7OztpQkE3c0R6QjtpQkFDQSw4Q0E0c0RnQmpJLEVBQUU0Rzs7V0Ezc0RsQixzREEyc0RnQjVHLEVBQUU0RyxTQURTO2FBcUJwQ3NjLFdBRXlCbGpCLEVBQUU0RztNRHI4RWhDLElDcThFdUNxQjtNQUNwQztRQUFNO1NBRDhCQztVQUM5QixnQkFyeUVKaE8sbUJBb3lFa0MrTixnQkFBUHJCO1FBQ3ZCLE9BRDhCc0I7VUFpQmIsV0FqQk10QjtjQUFPcUI7OztpQkE5dER6QjtpQkFDQSw4Q0E2dERnQmpJLEVBQUU0Rzs7V0E1dERsQixzREE0dERnQjVHLEVBQUU0RyxTQURTO2FBOE1wQ3VjLHNCQUVvQ25qQixFQUFFNEc7TURwcEYzQyxJQ29wRmtEcUI7TUFDL0M7UUFBTTtTQUR5Q0M7VUFDekMsZ0JBcC9FSmhPLG1CQW0vRTZDK04sZ0JBQVByQjtRQUNsQyxPQUR5Q3NCO1VBd0J4QixXQXhCaUJ0QjtjQUFPcUI7Ozs7V0F0MER0QyxZQXMwRDZCakksRUFBRTRHO1dBcjBEL0IsYUFxMEQ2QjVHLEVBQUU0RztXQXIwRC9CLGlCQXEwRDZCNUcsRUFBRTRHO2lCQW4wRGpDO2lCQUNBLGlEQWswRCtCNUcsRUFBRTRHOztXQWowRGpDLHNEQWkwRCtCNUcsRUFBRTRHLFNBRFM7YUF2Qi9DeWMsd0JBRXNDcmpCLEVBQUU0RztNRDluRjdDLElDOG5Gb0RxQjtNQUNqRDtRQUFNO1NBRDJDQztVQUMzQyxnQkE5OUVKaE8sbUJBNjlFK0MrTixnQkFBUHJCO1FBQ3BDLE9BRDJDc0I7VUFpQjFCLFdBakJtQnRCO2NBQU9xQjs7O2lCQXJ6RDFDO2lCQUNBLGlEQW96RGlDakksRUFBRTRHOztXQW56RG5DLHNEQW16RGlDNUcsRUFBRTRHLFNBRFM7YUFwS2pEMGMsb0JBQVV0akIsRUFBRTRHO01BQ2I7OztlQUNDMmMsb0NBRlV2akIsRUFBRTRHOztlQUVaMmMsNkJBRlV2akIsRUFBRTRHLGFBQ3lCO2FBQ3JDMmMsa0NBQTBCdmpCLEVBQUU0RyxPQUFPcUI7TUQzOUV4QyxJQzI5RXdDQztNQUNyQztRQUFNO1NBRCtCQztVQUMvQixnQkEzekVKak8sbUJBMHpFbUNnTyxrQkFBUHRCO1FBQ3hCLFFBRCtCdUI7VUE4SmQsV0E5Sk92QjtjQUFPc0I7OztpQkE1dUR2QjtpQkFDQTtpQkFDQTtpQkFDQTtpQkFDQTtpQkFDQTtpQkFDQSwrQkFzdURjbEksRUFBRTRHO2lCQXJ1RE47aUJBQ1Y7O1dBRUM7YUFDSSxhQWl1RFM1RyxFQUFFNEc7YUFodURYLGtCQWd1RFdBO2FBL3REWCxhQSt0RFM1RyxFQUFFNEc7YUE5dERYLGFBOHREUzVHLEVBQUU0RzthQTd0RFgsYUE2dERTNUcsRUFBRTRHO2FBNXREWCxhQTR0RFM1RyxFQUFFNEc7YUEzdERYLFlBMnREUzVHLEVBQUU0RzthQWx0RFM7ZUFQbEIsYUF5dERPNUcsRUFBRTRHO2VBeHREVCxrQkF3dERPNUcsRUFBRTRHO2VBdnREVCxhQXV0RE81RyxFQUFFNEc7ZUF0dERULGFBc3RETzVHLEVBQUU0RztlQXJ0RFQsYUFxdERPNUcsRUFBRTRHO2VBcHREVCxhQW90RE81RyxFQUFFNEc7ZUFudERULGFBbXRETzVHLEVBQUU0RztlQWx0RFQsWUFrdERPNUcsRUFBRTRHOzs7O3VDQTlzRFg7YUFHSjs7O2FBQ0ksYUEwc0RTNUcsRUFBRTRHO2FBenNEWCxpQkF5c0RXQTthQXhzRFgsWUF3c0RTNUcsRUFBRTRHO2FBbnNEUztlQUhsQixhQXNzRE81RyxFQUFFNEc7ZUFyc0RULGlCQXFzRE81RyxFQUFFNEc7ZUFwc0RULGFBb3NETzVHLEVBQUU0RztlQW5zRFQsWUFtc0RPNUcsRUFBRTRHOzs7O3NDQS9yRFg7YUFHSjs7O2FBR00sYUF5ckRPNUcsRUFBRTRHO2FBeHJEVCxpQkF3ckRTQTthQXZyRFQsWUF1ckRPNUcsRUFBRTRHO2FBbHJEVztlQUhsQixhQXFyREs1RyxFQUFFNEc7ZUFwckRQLGlCQW9yREs1RyxFQUFFNEc7ZUFuckRQLGFBbXJESzVHLEVBQUU0RztlQWxyRFAsWUFrckRLNUcsRUFBRTRHOzs7O3NDQTlxRFQ7YUFNTjs7V0FFSSxhQXNxRFM1RyxFQUFFNEc7V0FycURYLGFBcXFEUzVHLEVBQUU0RztXQXBxRFgsYUFvcURTNUcsRUFBRTRHO1dBcHFEWCw2QkFvcURTNUcsRUFBRTRHOztXQTdwRGY7O29CQTJwRGIwYyxzQkFFMEJ0akIsRUFBRTRHO3lDQUY1QjBjLGVBRTBCdGpCLEVBQUU0Rzs7V0E1cERiLGlCQTRwRFc1RyxFQUFFNEc7V0E1cERiOztvQkEwcERmMGMsc0JBRTBCdGpCLEVBQUU0Rzt5Q0FGNUIwYyxlQUUwQnRqQixFQUFFNEc7O1dBM3BEYixVQTJwRFc1RyxFQUFFNEc7V0EzcERiOztvQkF5cERmMGMsc0JBRTBCdGpCLEVBQUU0Rzt5Q0FGNUIwYyxlQUUwQnRqQixFQUFFNEc7O1dBMXBEZjs7b0JBd3BEYjBjLHNCQUUwQnRqQixFQUFFNEc7eUNBRjVCMGMsZUFFMEJ0akIsRUFBRTRHOztXQXpwRGYsc0RBeXBEYTVHLEVBQUU0RztrQkF4cERmLHlDQXdwRGE1RyxFQUFFNEcsU0ErSjBCO2FBakt0RHdjLFlBQVVwakIsRUFBRTRHO01EejlFakIsdUJDeTlFSzBjLGNBQVV0akIsRUFBRTRHO2FBc05aNGMsYUFFMkJ4akIsRUFBRTRHO01EanJGbEMsSUNpckZ5Q3FCO01BQ3RDO1FBQU07U0FEZ0NDO1VBQ2hDLGdCQWpoRkpoTyxtQkFnaEZvQytOLGdCQUFQckI7UUFDekIsT0FEZ0NzQjtVQXNCZixXQXRCUXRCO2NBQU9xQjs7O2lCQTMxRDNCLCtCQTIxRGtCakksRUFBRTRHO2lCQTExRHBCOztXQUNBLHFEQXkxRGtCNUcsRUFBRTRHOztXQXgxRHBCLHNEQXcxRGtCNUcsRUFBRTRHLFNBRFM7YUEwTHRDNmMsd0JBb1EwQnpqQixFQUFFNEc7TUQ5bUdqQyxJQzQyRm9EcUI7TUFDakQ7UUFBTTtTQUQyQ0M7VUFDM0MsZ0JBNXNGSmhPLG1CQTJzRitDK04sZ0JBa1FuQnJCO1FBalF4QixPQUQyQ3NCO1VBeUIxQixXQXlPT3RCO2NBbFFtQnFCOzs7O1dBcDZEeEMsNkJBc3FFbUJqSTtXQXJxRW5CLGNBcXFFbUJBLEVBQUU0RztXQXBxRXJCLGVBb3FFbUI1RyxFQUFFNEc7ZUFBT3VCO1dBQ3JDO2FBQU07Y0FEK0JrQjtlQUMvQixnQkE5OEZKblAsbUJBNjhGbUNpTyxrQkFBUHZCO2FBQ3hCLE9BRCtCeUM7ZUFpQmQsV0FqQk96QzttQkFBT3VCOzs7c0JBOWxFOUIsb0NBOGxFcUJuSTtzQkE3bEVyQiw4Q0E2bEVxQkEsRUFBRTRHOztnQkE1bEV2Qjt5REE0bEVxQjVHLEVBQUU0RztpQkFscUV2QixvQ0FrcUVxQjVHO2lCQWpxRXJCLGlEQWlxRXFCQSxFQUFFNEc7O1dBaHFFdkIsc0RBZ3FFcUI1RyxFQUFFNEcsU0FuUXFCO2FBekJqRGdkLDBCQUV3QzVqQixFQUFFNEc7TURwMUYvQyxJQ28xRnNEcUI7TUFDbkQ7UUFBTTtTQUQ2Q0M7VUFDN0MsZ0JBcHJGSmhPLG1CQW1yRmlEK04sZ0JBQVByQjtRQUN0QyxPQUQ2Q3NCO1VBbUI1QixXQW5CcUJ0QjtjQUFPcUI7Ozs7V0FuNUQxQyw2QkFtNURpQ2pJO1dBbjVEakMsb0JBbTVEaUNBLEtBQUU0RztpQkFoNURyQyxpREFnNURtQzVHLEVBQUU0Rzs7V0EvNERyQyxzREErNERtQzVHLEVBQUU0RyxTQURTO2FBekluRGlkLHNCQUFZN2pCLEVBQUU0RztNQUNmOzs7ZUFDQ2tkLHNDQUZZOWpCLEVBQUU0Rzs7ZUFFZGtkLCtCQUZZOWpCLEVBQUU0RyxhQUN5QjthQUN2Q2tkLG9DQUE0QjlqQixFQUFFNEcsT0FBT3FCO01ENXNGMUMsSUM0c0YwQ0M7TUFDdkM7UUFBTTtTQURpQ0M7VUFDakMsZ0JBNWlGSmpPLG1CQTJpRnFDZ08sa0JBQVB0QjtRQUMxQixRQURpQ3VCO1VBbUloQixXQW5JU3ZCO2NBQU9zQjs7O2lCQXQyRHpCLG9CQXMyRGdCbEksS0FBRTRHO2lCQXAyRGxCLGlDQW8yRGdCNUcsRUFBRTRHOztXQW4yRGpCO2FBQ0ksNkJBazJEVzVHO2FBajJEWCxlQWkyRFdBLEVBQUU0RzthQWgyRGIsb0JBZzJEVzVHLEVBQUU0RzthQS8xRGIsZUErMURXNUcsRUFBRTRHO2FBOTFEYixlQTgxRFc1RyxFQUFFNEc7YUE3MURiLGVBNjFEVzVHLEVBQUU0RzthQTUxRGIsZUE0MURXNUcsRUFBRTRHO2FBMzFEYixjQTIxRFc1RyxFQUFFNEc7YUFsMURTO2VBUHBCLGVBeTFEUzVHLEVBQUU0RztlQXgxRFgsb0JBdzFEUzVHLEVBQUU0RztlQXYxRFgsZUF1MURTNUcsRUFBRTRHO2VBdDFEWCxlQXMxRFM1RyxFQUFFNEc7ZUFyMURYLGVBcTFEUzVHLEVBQUU0RztlQXAxRFgsZUFvMURTNUcsRUFBRTRHO2VBbjFEWCxlQW0xRFM1RyxFQUFFNEc7ZUFsMURYLGNBazFEUzVHLEVBQUU0Rzs7Ozt1Q0E5MERiO2FBR0o7OzthQUNJLDZCQTAwRFc1RzthQXowRFgsZUF5MERXQSxFQUFFNEc7YUF4MERiLG1CQXcwRFc1RyxFQUFFNEc7YUF2MERiLGNBdTBEVzVHLEVBQUU0RzthQWwwRFM7ZUFIcEIsZUFxMERTNUcsRUFBRTRHO2VBcDBEWCxtQkFvMERTNUcsRUFBRTRHO2VBbjBEWCxlQW0wRFM1RyxFQUFFNEc7ZUFsMERYLGNBazBEUzVHLEVBQUU0Rzs7OztzQ0E5ekRiO2FBR0o7OzthQUdNLDZCQXd6RFM1RzthQXZ6RFQsZUF1ekRTQSxFQUFFNEc7YUF0ekRYLG1CQXN6RFM1RyxFQUFFNEc7YUFyekRYLGNBcXpEUzVHLEVBQUU0RzthQWh6RFc7ZUFIcEIsZUFtekRPNUcsRUFBRTRHO2VBbHpEVCxtQkFrekRPNUcsRUFBRTRHO2VBanpEVCxlQWl6RE81RyxFQUFFNEc7ZUFoekRULGNBZ3pETzVHLEVBQUU0Rzs7OztzQ0E1eURYO2FBTU47O1dBRUksNkJBb3lEVzVHO1dBbnlEWCxlQW15RFdBLEVBQUU0RztXQWx5RGIsZUFreURXNUcsRUFBRTRHO1dBanlEYixlQWl5RFc1RyxFQUFFNEc7V0FqeURiLCtCQWl5RFc1RyxFQUFFNEc7O1dBMXhEZixhQTB4RGE1RyxLQUFFNEc7V0ExeERmOztvQkF3eERmaWQsd0JBRTRCN2pCLEVBQUU0Rzt5Q0FGOUJpZCxpQkFFNEI3akIsRUFBRTRHOztXQXp4RGYsNkJBeXhEYTVHO1dBeHhEYix3QkF3eERhQSxFQUFFNEc7V0F4eERmOztvQkFzeERmaWQsd0JBRTRCN2pCLEVBQUU0Rzt5Q0FGOUJpZCxpQkFFNEI3akIsRUFBRTRHOztXQXR4RGYsNkJBc3hEYTVHO1dBcnhEYixVQXF4RGFBLEVBQUU0RztXQXJ4RGY7O29CQW14RGZpZCx3QkFFNEI3akIsRUFBRTRHO3lDQUY5QmlkLGlCQUU0QjdqQixFQUFFNEc7O1dBbnhEZixhQW14RGE1RyxLQUFFNEc7V0FueERmOztvQkFpeERmaWQsd0JBRTRCN2pCLEVBQUU0Rzt5Q0FGOUJpZCxpQkFFNEI3akIsRUFBRTRHOztXQWx4RGpCLHNEQWt4RGU1RyxFQUFFNEc7a0JBanhEakIseUNBaXhEZTVHLEVBQUU0RyxTQW9JMEI7YUF0SXhEOGMsY0FBWTFqQixFQUFFNEc7TUQxc0ZuQix1QkMwc0ZLaWQsZ0JBQVk3akIsRUFBRTRHO2FBOExkb2QsZUFFNkJoa0IsRUFBRTRHO01EMTRGcEMsSUMwNEYyQ3FCO01BQ3hDO1FBQU07U0FEa0NDO1VBQ2xDLGdCQTF1RkpoTyxtQkF5dUZzQytOLGdCQUFQckI7UUFDM0IsT0FEa0NzQjtVQXNCakIsV0F0QlV0QjtjQUFPcUI7OztpQkF6N0Q3QixpQ0F5N0RvQmpJLEVBQUU0RztpQkF4N0R0QixvQkF3N0RvQjVHLEtBQUU0Rzs7V0F2N0R0QixzREF1N0RvQjVHLEVBQUU0Rzs7V0F0N0R0QixzREFzN0RvQjVHLEVBQUU0RyxTQURTO2FBMEJ4QytjLGVBQWEzakIsRUFFa0I0RztNRHI2RnBDO01DbzZGSTtZQUN1Q3FCO1FBQ3hDO1VBQU07V0FEa0NDO1lBQ2xDLGdCQXJ3RkpoTyxtQkFvd0ZzQytOLGdCQUFQckI7VUFDM0IsT0FEa0NzQjtZQXNDakIsV0F0Q1V0QjtnQkFBT3FCOzs7bUJBNzhEdEMsYUEyOERhakksS0FFa0I0RyxRQTU4RC9CLFVBMDhEYTVHLEVBRWtCNEc7O2FBejhEL0IsNkJBdThEYTVHO2FBdDhEYix3QkFzOERhQSxFQUVrQjRHOzs7YUFyOEQvQiw2QkFtOERhNUc7YUFsOERiLFVBazhEYUEsRUFFa0I0Rzs7bUJBajhEL0IsYUErN0RhNUcsS0FFa0I0RztvQkEvN0ROLFdBODdEZTthQTBDeENtZCxvQkFFa0MvakIsRUFBRTRHO01EaDlGekMsSUNnOUZnRHFCO01BQzdDO1FBQU07U0FEdUNDO1VBQ3ZDLGdCQWh6RkpoTyxtQkEreUYyQytOLGdCQUFQckI7UUFDaEMsU0FEdUNzQjtVQXQrRHpDLDZCQXMrRGdDbEksVUF0K0RoQztpQkFzK0R5Q2tJLGtCQXArRGxDO1FBay9EWSxXQWRldEI7UUFDaEMsSUFEdUNxQjtpQkFERTthQWtCN0NpYyxvQkFFa0Nsa0IsRUFBRTRHO01EbitGekMsSUNtK0ZnRHFCO01BQzdDO1FBQU07U0FEdUNDO1VBQ3ZDLGdCQW4wRkpoTyxtQkFrMEYyQytOLGdCQUFQckI7UUFDaEMsT0FEdUNzQjtVQXNCdEIsV0F0QmV0QjtjQUFPcUI7OztpQkFwL0RsQyxvQ0FvL0R5QmpJO2lCQW4vRHZCLDZCQW0vRHVCQSxVQW4vRHZCO2lCQUNGLGlEQWsvRHlCQSxFQUFFNEc7O1dBai9EM0Isc0RBaS9EeUI1RyxFQUFFNEcsU0FEUzthQTBCN0N1ZCxtQkFFaUNua0IsRUFBRTRHO01EOS9GeEMsSUM4L0YrQ3FCO01BQzVDO1FBQU07U0FEc0NDO1VBQ3RDLGdCQTkxRkpoTyxtQkE2MUYwQytOLGdCQUFQckI7UUFDL0IsU0FEc0NzQjtVQXpnRS9CLDZCQXlnRXNCbEksU0F6Z0V0QjtpQkF5Z0UrQmtJLGtCQXhnRWpDO1FBb2hFWSxXQVpjdEI7UUFDL0IsSUFEc0NxQjtpQkFERTthQWdCNUNtYyxtQkFFaUNwa0IsRUFBRTRHO01EL2dHeEMsSUMrZ0crQ3FCO01BQzVDO1FBQU07U0FEc0NDO1VBQ3RDLGdCQS8yRkpoTyxtQkE4MkYwQytOLGdCQUFQckI7UUFDL0IsT0FEc0NzQjtVQXNCckIsV0F0QmN0QjtjQUFPcUI7OztpQkF0aEVqQyxvQ0FzaEV3QmpJO2lCQXJoRXRCLDZCQXFoRXNCQSxTQXJoRXRCO2lCQUNGLGlEQW9oRXdCQSxFQUFFNEc7O1dBbmhFMUIsc0RBbWhFd0I1RyxFQUFFNEcsU0FEUzthQTBCNUN5ZCxtQkFFaUNya0IsRUFBRTRHO01EMWlHeEMsSUMwaUcrQ3FCO01BQzVDO1FBQU07U0FEc0NDO1VBQ3RDLGdCQTE0RkpoTyxtQkF5NEYwQytOLGdCQUFQckI7UUFDL0IsU0FEc0NzQjtVQTFpRXhDLDZCQTBpRStCbEksU0ExaUUvQjtpQkEwaUV3Q2tJLGtCQXhpRWpDO1FBc2pFWSxXQWRjdEI7UUFDL0IsSUFEc0NxQjtpQkFERTthQWtCNUNxYyxtQkFFaUN0a0IsRUFBRTRHO01EN2pHeEMsSUM2akcrQ3FCO01BQzVDO1FBQU07U0FEc0NDO1VBQ3RDLGdCQTc1RkpoTyxtQkE0NUYwQytOLGdCQUFQckI7UUFDL0IsT0FEc0NzQjtVQXNCckIsV0F0QmN0QjtjQUFPcUI7OztpQkF4akVqQyxvQ0F3akV3QmpJO2lCQXZqRXRCLDZCQXVqRXNCQSxTQXZqRXRCO2lCQUNGLGlEQXNqRXdCQSxFQUFFNEc7O1dBcmpFMUIsc0RBcWpFd0I1RyxFQUFFNEcsU0FEUzthQTBCNUNxZCxlQUU2QmprQixFQUFFNEc7TUR4bEdwQyxJQ3dsRzJDcUI7TUFDeEM7UUFBTTtTQURrQ0M7VUFDbEMsZ0JBeDdGSmhPLG1CQXU3RnNDK04sZ0JBQVByQjtRQUMzQixPQURrQ3NCO1VBaUJqQixXQWpCVXRCO2NBQU9xQjs7O2lCQTdrRTdCLG9DQTZrRW9Cakk7aUJBNWtFcEIsOENBNGtFb0JBLEVBQUU0Rzs7V0Eza0V0QixzREEya0VvQjVHLEVBQUU0RyxTQURTO2FBMkN4QzJkLHdCQUFzQnZrQixFQUVrQjRHO01EcG9HN0M7TUNtb0dJO1lBQ2dEcUI7UUFDakQ7VUFBTTtXQUQyQ0M7WUFDM0MsZ0JBcCtGSmhPLG1CQW0rRitDK04sZ0JBQVByQjtVQUNwQyxPQUQyQ3NCO1lBd0IxQixXQXhCbUJ0QjtnQkFBT3FCOzs7bUJBL21FMUMsb0NBNm1FaUJqSTttQkE1bUVqQiwrQ0E0bUVpQkEsRUFFa0I0Rzs7YUE3bUVqQyw2QkEybUVlNUc7YUExbUVmLFVBMG1FZUEsRUFFa0I0Rzs7b0JBMW1FakMsYUF3bUVlNUcsS0FFa0I0RyxxQkFEUzthQTRCakQ0ZCxPQUVxQjVkO01EanFHMUIsSUNpcUdpQ3FCO01BQzlCO1FBQU07U0FEd0JDO1VBQ3hCLGdCQWpnR0poTyxtQkFnZ0c0QitOLGdCQUFQckI7UUFDakIsU0FEd0JzQixrQkFwb0VuQiwyQkFvb0VZdEI7UUFPQSxXQVBBQTtRQUNqQixJQUR3QnFCO2lCQURFO0lBeGxHNUJvWCxpQkF1bEdGbUY7YUF4bkVFQyxZQUFVemtCLEVBQUU0RztNQUNOLElBQUpsTSxFQUFJLFdBRElzRixFQUFFNEc7Y0FDVmxNLGlCQUlGLDZCQUpFQTtNQUVGLHlDQUhVc0YsRUFBRTRHLE9BS0M7YUFFYjhkLFlBQVU3WixVQUFVN0ssRUFBRTRHO01BQ2YseUJBREdpRSxVQUFVN0ssRUFBRTRHO01BQ2Ysc0NBQWtDO2FBZXpDK2QsYUFBVzlaLFVBQVU3SyxFQUFFNEc7TUFDakIsSUFkWXBKLEVBY1osZ0JBREtxTixVQUFVN0ssRUFBRTRHO01BWnpCLEdBRG9CcEo7UUFJSjtTQURQOFAsR0FIVzlQO1NBR2hCakQsRUFIZ0JpRDtTQUlKLDhCQUpJQTtTQUtOLGlCQURKdUIsSUFETnhFO1NBRVUsS0FGTCtTO1NBRUssS0FESnZPO1FBQ0k7Y0FFUm5FO1VBQ0U7WUFBUyxtQ0FGUDJTO1lBRUYsaUJBSEVyTixFQUVKdEY7WUFFTyxpQ0FISDJTO1lBRU8sU0FEWDNTOzs7UUFJQSxPQU5Jc0Y7TUFIQSxVQWFTO2FBSWpCMGtCLGNBQVluWixXQUFXWCxTQUFTOUs7TUFDbEM7UURya0NMLE9Da3VFSzRpQix1QkEzVUF4QyxhQW4xQmMzVSxXQUFXWCxTQUFTOUssUUFDbUI7YUFTbkQ2a0IsY0FBWTdrQixFQUFJOUUsSUFBZ0IwTDtNQUNsQyxHQURrQjFMLElBQVMsUUFBVEEsY0FBU0MsYUFBVHJCO01BQ2xCLGFBRGNrRyxFQUFvQjRHO01BSTdCLGNBSjZCQSxRQUs5QjtNQUVBLElBSkFyTSxFQUlBLFlBUFV5RixFQUFvQjRHO01BTzlCLE9BUGM5TTtRQU5sQixhQU1ja0csRUFBb0I0RztRQUwzQixrQkFLMkJBO1NBSmhDLDhDQUlZNUcsRUFBb0I0RztNQVdqQixPQVJick0sQ0FVSDthQUdDdXFCLGNBQWF4cUIsSUFBS1csTUFBT0csS0FBS2hCO01BQ2hDO1FBQ2U7MkNBRmlCQTtTQUd0QixhQUhLRSxJQUFLVyxNQUFPRztTQUl6QixtQkFESTRFLElBREE0Rzs7OztpQ0FJSjttQkFBNkI7YUFFN0JtZSxlQUFjenFCLElBQUtXLE1BQU9HLEtBQUt3UztNQUNqQztRQUNlOzRDQUZrQkE7U0FHdkIsYUFITXRULElBQUtXLE1BQU9HO1NBSTFCLG1CQURJNEUsSUFEQTRHOzs7O2lDQUlKO21CQUE2QjthQUU3Qm9lLFlBQVcxcUIsSUFBS1csTUFBT0csS0FBS2tFO01BQ3JCLElBQUxzTyxHQUFLLHNCQURxQnRPO01BQ3JCO1FBRUMsSUFBSi9FLEVBQUksZUFIR0QsSUFBS1csTUFBT0csS0FDckJ3UztRQUdGLHNCQUhFQTtRQU1GLE9BSklyVDtZQUdEZ0YsOEJBQ0gsc0JBTkVxTyxJQU1GLE1BREdyTyxFQUVJOzthQUlQMGxCLGtCQUFnQmpsQixFQUFJOUUsSUFBb0IwTDtNQUMxQyxHQURzQjFMLElBQU0sUUFBTkEsV0FBTUMsYUFBTjRTLG9CQUFnQixRQUFFO01BQVosU0FFcEIzUDtRQUNOO1VBQWMsMEJBSEU0QixFQUNkcEcsU0FEc0NnTixRQUVsQ3hJO2NBTUZtQjs7aUNBRkUsV0FOY3dPLE9BTWQ7VUFHQTtZQUFLLFdBVFNBO2dCQVNHQzsrQ0FBUyxtQkFENUJ6TyxFQUNtQnlPO1VBQ2pCLE1BRkZ6TyxFQUVTO01BVmEsT0FFcEJuQixDQVVQO2FBRUM4bUIsa0JBQWlCNXFCLElBQUtXLE1BQU9HLEtBQUtoQjtNQUM1QixJQUFKNEYsRUFBSSxXQURXMUYsSUFBS1csTUFBT0c7TUFFYix5QkFEZDRFLElBQ2MsMkJBRmtCNUYsR0FFSTthQUV0QytxQixtQkFBa0I3cUIsSUFBS3lULElBQUs5UyxNQUFPRyxLQUFLd1M7TUFDN0I7MENBRDZCQTtPQUVsQyxhQUZZdFQsSUFBVVcsTUFBT0c7TUFFN0IseUJBQUo0RSxFQUZxQitOLElBQ3JCbkgsT0FFeUI7YUFFM0J3ZSxnQkFBZTlxQixJQUFLVyxNQUFPRyxLQUFLa0U7TUFDekIsSUFBTHNPLEdBQUssc0JBRHlCdE87TUFDekIsU0FDTHlPLFdBQVMsNkJBRFRILEdBQ29CO01BRGY7ZUFEYTNTLFlBQVlxRTtPQVFyQixtQ0FQVHNPO09BUUksYUFUU3RULElBR2I4VCxRQUh5QmhUO01BU3JCLHlCQUFKNEUsS0FQQStOLEtBTUFuSCxPQUV5QjthQUkzQnllLHVCQUNDL3FCLElBQU1ZLElBQXFCRCxXQUF3QjJTO01BQ3RELEdBRFMxUyxJQUFNLFFBQU5BLFdBQU1DLGFBQU40UyxvQkFBZ0IsUUFBRTtNQUFaLFFBQW9DLGtCQUFSTyxNQUFRMVAsZUFBUjBQO01BQzNDLElBQUlqVCxNQUREZixVQUdnQjtNQUFMLFNBR044RCxFQUFFaEQ7UUFDUjtVQUNhO3NDQVJ1Q3dTO1dBUXZDLEtBRkx4UztXQUdnRCxvQkR6cUMvRCxPQ3NxQ2FnRDtXQUdZOzBDQVJoQi9DLE1BRDBCSixTQU1wQkcsTUFFRm1UOztjQUlGaFA7OytCQURlLFdBWFp3TyxPQVdZO1VBQ1YsU0FORDNTO1VBTW1CLHFCQUF2Qm1FLGtCRDVxQ1gsT0NzcUNhbkIsZUFNa0M7TUFUNUIsc0JEbnFDbkIsT0NzcUNhQSxFQU5tQ2tRLFlBY3BDO2FBRUxnWCxvQkFBbUJockIsSUFBS1csTUFBT0csS0FBS2tFO01BQzdCLElBQUxzTyxHQUFLLHNCQUQ2QnRPO01BQzdCLFNBQ0x5TyxXQUFTLDZCQURUSCxHQUNvQjtNQURmLElBRUxRLFFBSHNCblQsWUFBWXFFO01BS3hCLDhCQUxPaEYsT0FFakJ5VCxLQUNBSyxRQUg2QmhULEtBQzdCd1MsR0FPMEM7YUFFNUMyWCxXQUFVMW1CLElBQUl6RTtNQUNNLDBCQURWeUUsSUFDVSxvQkFETnpFLEdBQ3FCO2FBRW5Db3JCLFVBQVMzbUIsSUFBSXpFO01BQ0wsK0NBREtBLEdBQ1U7Ozs7T0E3ckN6Qkw7O09BSUFJOztPQStGQWE7Ozs7OztRQTBTQXNLO1FBYUFDO1FBVUFDO1FBVUFDO1FBeENBSjtRQW9EQU07UUFhQUM7UUFZQUM7UUE1QkFIO1FBbkhBUjtRQXlKSVk7UUE5Wkp6QjtRQUdBQztRQW1CQUU7UUFtQ0FFO1FBMERBRztRQWZBRDtRQW9DQUU7UUExSkFYO1FBb1BBZ0I7UUFVQUY7UUF5QkFDO1FBRUlFO1FBdFVBZTtRQWtHSkM7UUFHSUM7UUFwR0pDO1FBR0FDO1FBR0FDO1FBa3JDRWlJO1FBR0FDOztRQS9GQWhCO1FBUUFDO1FBUUFFO1FBMWdDRjdTO1FBMCtCRXlTO1FBMERBUTtRQUlBQztRQUtBQztRQXZCQUw7UUFxQ0FPO1FBaUJBRztRQWhMRTdGO1FBME1KUDtRQXNyQkFzQztRQXVCQWpDO1FBaHJCQVU7UUFpdEJBd0I7UUFqYkFkO1FBaEdBSjtRQTJ1Q0E2QztRQTdzQ0EzQztRQXNCQUQ7UUFzQkFFO1FBckdBSjtRQWd2Q0F5QztRQXYzQ0EvQztRQW1TQUQ7UUE0Q0FYO1FBakJBd0I7UUFpREFDO1FBc0JBQztRQWlCQUM7UUFxQ0FFO1FBenBCRWdEO1FBMHNCRjlDO1FBMENBRTtRQTBDQUU7UUEwMkJBMkI7UUEzdEJBckI7UUF0NkJFcUM7UUEwOEJGbkM7UUFvQ0FsQztRQWlCQUM7UUEvK0JFcUU7UUEwZ0NGbkM7UUE4UkFVO1FBMkJBQztRQXNCQUM7UUFuU0FYO1FBaUJBQztRQTRCQUM7UUEyQkFDO1FBaVBBUztRQXNCQUM7UUEvM0NFd0I7UUE4cENGOUI7UUE0Q0FDO1FBc0JBcEQ7UUFpQkFLO1FBMkJBRjtRQWgxQ0lDO1FBeTlDSjBEO1FBaVBBUzs7OztTQXZnRkErRDtTQUdBQztTQUdBQztTQWxMQWhDO1NBSUFDO1NBVUFFO1NBSUFDO1NBSUFDO1NBSUFDO1NBSUFDO1NBS0FDO1NBS0FDO1NBTUFDO1NBSUFDO1NBS0FDO1NBSUFDO1NBS0FDO1NBSUFDO1NBSUFDO1NBS0FDO1NBYUFDO1NBV0FDO1NBR0FFO1NBU0FDO1NBT0FDO1NBU0FDO1NBT0FDO1NBT0FDO1NBT0FDO1NBT0FDO1NBUUFDOztRQTNMSStDO1FBa0dKQztRQUdJQztRQXJHQTNDO1FBNllKNEI7UUFhQUM7UUFVQUM7UUFVQUM7UUF4Q0FKO1FBb0RBTTtRQWFBQztRQVlBQztRQTVCQUg7UUFuSEFaO1FBeUpJZ0I7UUE5Wko5QjtRQUdBQztRQW1CQUU7UUFtQ0FFO1FBMERBRztRQWZBRDtRQW9DQUU7UUExSkFYO1FBaU1BWTtRQW1EQU87UUFVQUQ7UUFNQUQ7UUFtRUFLO1FBNURBUDtRQWtFQUs7UUF0REFKO1FBRUlLO1FBclVKbUI7UUFHQUM7UUFHQUM7UUFrckNFdUc7UUFHQUM7O1FBL0ZBVjtRQVFBQztRQVFBQztRQTFnQ0ZoZjtRQTArQkU2ZTtRQTBEQUs7UUFJQUM7UUFLQUM7UUF2QkFIO1FBcUNBSTtRQWlCQUM7UUFoTEVuRjtRQTBNSkw7UUFzckJBa0M7UUF1QkEvQjtRQWhyQkFhO1FBaXRCQW1CO1FBamJBZDtRQWhHQVI7UUEydUNBd0M7UUE3c0NBbEM7UUFzQkFEO1FBc0JBRTtRQXJHQUg7UUFndkNBc0M7UUF2M0NBeEM7UUFtU0FEO1FBNENBYjtRQWpCQXFCO1FBaURBQztRQXNCQUM7UUFpQkFDO1FBcUNBRTtRQXpwQkVnRDtRQTBzQkY5QztRQTBDQUU7UUEwQ0FFO1FBMDJCQXlCO1FBM3RCQXJCO1FBdDZCRXVDO1FBMDhCRnJDO1FBb0NBaEM7UUFpQkFDO1FBLytCRXFFO1FBMGdDRm5DO1FBOFJBTTtRQTJCQUM7UUFzQkFDO1FBblNBeEM7UUFpQkFpQztRQTRCQWhDO1FBMkJBaUM7UUFpUEFPO1FBc0JBQztRQS8zQ0UwQjtRQThwQ0ZoQztRQTRDQUM7UUFzQkE3QztRQWlCQUk7UUEyQkFGO1FBaDFDSUM7UUF5OUNKaUQ7UUFpUEFNOzs7O1NBdmdGQTZEO1NBR0FDO1NBR0FDO1NBbExBOUI7U0FJQUM7U0FVQUM7U0FJQUM7U0FJQUM7U0FJQUM7U0FJQUM7U0FLQUM7U0FLQUM7U0FNQUM7U0FJQUM7U0FLQUM7U0FJQUM7U0FLQUM7U0FJQUM7U0FJQUM7U0FLQUM7U0FhQUM7U0FXQUM7U0FHQUM7U0FTQUM7U0FPQUM7U0FTQUM7U0FPQUM7U0FPQUM7U0FPQUM7U0FPQUM7U0FRQUM7O1FBM0xJc0M7UUFrR0pDO1FBR0lDO1FBd1NKZjtRQWFBQztRQVVBQztRQVVBQztRQXhDQUo7UUFvREFNO1FBYUFDO1FBWUFDO1FBNUJBSDtRQW5IQVo7UUF5SklnQjtRQTlaSnhCO1FBR0FDO1FBNEtBQztRQUNBQztRQUNBQztRQWlEQU87UUFVQUQ7UUFNQUQ7UUFtRUFLO1FBNURBUDtRQWtFQUs7UUF0REFKO1FBRUlLO1FBclVKbUI7UUFHQUM7UUFHQUM7UUFrckNFc0c7UUFHQUM7O1FBL0ZBVjtRQVFBQztRQVFBQztRQTFnQ0ZocUI7UUEwK0JFNnBCO1FBMERBSztRQUlBQztRQUtBQztRQXZCQUg7UUFxQ0FJO1FBaUJBQztRQWhMRWhGO1FBME1KUTtRQXNyQkFtQjtRQXVCQTdCO1FBaHJCQVk7UUFpdEJBa0I7UUFqYkFkO1FBaEdBUjtRQTJ1Q0F1QztRQTdzQ0FqQztRQXNCQUQ7UUFzQkFFO1FBckdBbEI7UUFndkNBb0Q7UUF2M0NBdEM7UUFtU0FGO1FBNENBWDtRQWpCQW1CO1FBaURBQztRQXNCQUM7UUFpQkFDO1FBcUNBRTtRQXpwQkUrQztRQTBzQkY3QztRQTBDQUU7UUEwQ0FFO1FBMDJCQXdCO1FBM3RCQXBCO1FBdDZCRXNDO1FBMDhCRnBDO1FBb0NBOUI7UUFpQkFDO1FBLytCRWtFO1FBMGdDRm5DO1FBOFJBTTtRQTJCQUM7UUFzQkFDO1FBblNBdEM7UUFpQkErQjtRQTRCQTlCO1FBMkJBK0I7UUFpUEFPO1FBc0JBQztRQS8zQ0UwQjtRQThwQ0ZoQztRQTRDQUM7UUFzQkExQztRQWlCQUk7UUEyQkFGO1FBaDFDSUM7UUF5OUNKOEM7UUFpUEFNO09BenNGSXJqQjtPQWtHSmdCO09BR0lDO09Bd1NKeEM7T0FhQUc7T0FVQUU7T0FVQUU7T0F4Q0FYO09Bb0RBZ0I7T0FhQUM7T0FZQUc7T0E1QkFOO09BbkhBNUI7T0F5SkltQztPQTlaSjVEO09BR0FDO09BbUJBRztPQW1DQUU7T0EwREFLO09BZkFEO09Bb0NBRTtPQTFKQWY7T0FpTUFnQjtPQUNBQztPQUNBQztPQWlEQWE7T0FVQUQ7T0FNQUQ7T0FtRUFZO09BNURBZjtPQWtFQWE7T0F0REFYO09BRUlZO09BclVKcUY7T0FHQUM7T0FHQUM7O1VEUkw7Ozs7Ozs7SUNBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YUNPSzBoQixzQkFBd0IsZ0JBQUs7YUFDN0JDLGVBQWVDLEdBQVEsb0JBQVJBLEVBQWU7YUFDOUJDLGlCQUFpQkMsS0FBVSxxQkFBVkEsSUFBcUI7YUFDdENDLGdCQUFnQkM7TUFBb0Isc0RBQXBCQSxPQUEyQzthQUMzREMsZUFBZUM7TUFBZ0IseURBQWhCQSxHQUFpQzthQUNoREMsY0FBY0MsR0FBUSxrQkFBUkEsRUFBYzthQUM1QkMsZ0JBQWdCRCxHQUFRLG9CQUFSQSxFQUFnQjthQUNoQ0UsZ0JBQWlCRjtNQUEyQixpREFBM0JBLEdBQThDO2FBQy9ERyxnQkFBaUJIO01BQTJCLGlEQUEzQkEsR0FBOEM7YUFDL0RJLG9CQUFvQko7TUFBZ0IscURBQWhCQSxHQUF1QzthQUMzREssY0FBY0MsWUFBYUM7TUFBSyxrQkFBbEJELFlBQWFDLE1BQXFCO2FBQ2hEQyxpQkFBaUJGLFlBQWFHO01BQUs7Z0NBQUxBO09BQUssZ0JBQUxBO01BQWtCLGtCQUEvQkgsZ0JBQThDO2FBRS9ESSxpQkFBaUJKO01EcEJ0QixVQ3FCZSxJQUFMSyxXQUFLLGtCQURPTCxZQUNaSztNQUNHO2FBR1JDLGVBQWVOLFlBQWFPO01BQ04sSUFEdUJyQixXQUFIc0IsV0FDcEIsa0JBRE1ELFlBQWlCckI7TUFDdkMsa0NBRFNjLFlBQTJCUTthQUkxQ0MsaUJBQWlCVCxZQUFhTyxZQUFhRztNQUNMO09BRHlCbEI7T0FBSE47T0FBSHNCO09BQ25CLGtCQURLRSxZQUFvQmxCO09BQ3pDLGtCQURRZSxZQUE4QnJCO01BQ3RELGtDQURXYyxZQUF3Q1E7YUFNekRHLGVBQWVYLFlBQWFZO01BQXNCLHlDQUFuQ1osWUFBYVk7TUFBWSx5REFBNkM7YUFFckZDLGdCQUFnQmIsWUFBYWM7TUFDL0Isc0JBRCtCQTtNQUMvQjtZQUNBRTtRQUNFO2tCQUZFRDtVQUVTOzt3QkFIS2YsWUFHUSxpQkFIS2MsR0FFL0JFO1VBQ0UsUUFERkE7OztNQUdBLG9CQUpJRCxXQUlVO2FBR1pFLGtCQUFrQkMsY0FBY0MsY0FBY0M7TUFDaEQsU0FBSUMsS0FBVUMsRUFBUUMsRUFBRUM7UUFBK0Isc0JBRHJCTCxjQUNaSTtRQUFnQixxQ0FEbEJMLGNBQ05JLFNBQVVFLElBQXVEO01BQ3pFLHdEQURGSCxLQUQ0Q0QsUUFFTjthQUd4Q0ssd0JBQXFCLFVBQWtCO2FBQ3ZDQyxxQkFBa0IsVUFBZTs7O0tBSWpDQzthQUNBQyxvQkFBb0JDLElBQUlDO01BQVMseUJBQWJELElBQUlDLE9BQThDO2FBQ3RFQyxnQkFBZ0JDLEtBQUtGO01BQVMsc0NBQWRFLE1BQUtGLE9BQXVEO2FBRTVFRyxlQUFlSDtNQUNqQixxQkFEaUJBOztlQUdWLCtDQUhVQSxPQUcyQzthQUcxREksZUFBZUo7TURqRXBCLFVDaUVvQkE7UUFFSixJQUFMUCxFQUZTTyxVQUVKLE9BQUxQO01BQ0Qsc0RBSFVPLE9BR2dEO2FBRy9ESyxpQkFBaUJMO01EdkV0QixVQ3VFc0JBO1FBRUYsSUFBUDFDLElBRlMwQyxVQUVGLE9BQVAxQztNQUNILHNEQUhZMEMsT0FHNEM7YUFHN0RNLGdCQUFnQk47TUQ3RXJCLFVDNkVxQkE7UUFFRCxJQUFQMUMsSUFGUTBDLFVBRUQsd0NBQVAxQztNQUNILHNEQUhXMEMsT0FHNEM7YUFHNURPLGVBQWVQO01EbkZwQixVQ21Gb0JBO1FBR2YsSUFEUTFDLElBRk8wQztRQUdmLHVDQURRMUM7U0FFSCwrQ0FKVTBDO1FBS2YsK0JBSFExQztNQUlILHNEQU5VMEMsT0FNd0Q7YUFHdkVRLGNBQWNSO01ENUZuQixVQzRGbUJBO1FBRUosSUFBTFAsRUFGU08sVUFFSixPQUFMUDtNQUNBLHNEQUhTTyxPQUc2QzthQUczRFMsZ0JBQWdCVDtNQUNsQixVQURrQkE7OztVQUlELElBQVAxQyxJQUpRMEMsVUFJRCxvQ0FBUDFDOzRCQURFLElBQUw0QixFQUhXYyxVQUdOLE9BQUxkOzhCQURPLElBQUxPLEVBRlNPLFVBRUosT0FBTFA7TUFHRixzREFMV08sT0FLMkM7YUFHM0RVLGdCQUFnQlY7TUFDbEIsVUFEa0JBOzs7VUFFRCxJQUFQMUMsSUFGUTBDLFVBRUQsMEJBQVAxQzs0QkFDRSxJQUFMbUMsRUFIV08sVUFHTixPQUFMUDtNQUNBLHNEQUpXTyxPQUk2QzthQUc3RFcsZ0JBQWdCWDtNQUNsQixVQURrQkE7OztVQUVELElBQVAxQyxJQUZRMEMsVUFFRCxvQ0FBUDFDOztVQUNFLElBQUxtQyxFQUhXTyxVQUdOLG1DQUFMUDtNQUNBLHNEQUpXTyxPQUk2QzthQUc3RFksb0JBQW9CWjtNQUN0QixVQURzQkE7OztVQUVMLElBQVAxQyxJQUZZMEMsVUFFTCwwQkFBUDFDOzRCQUNFLElBQUxtQyxFQUhlTyxVQUdWLE9BQUxQO01BQ0Esc0RBSmVPLE9BSTZDO2FBR2pFYSxjQUFjQyxZQUFhZDtNQUFhLHFCQUExQmMsWUFBYWQsUUFBa0M7YUFDN0RlLGlCQUFpQkQsWUFBYWQ7TUFBdUIsbUJBQXBDYyxZQUFhZDtNQUF1QixxQ0FBcUI7YUFFMUVnQixpQkFBaUJGLFlBQWFkO01BQ2hDLHFCQURnQ0EsWUFHbkIsV0FITWMsWUFBYWQsUUFHRjthQUc1QmlCLGVBQWVILFlBQWFJLFlBQWFsQjtNRHhJOUMsVUN3SThDQTs7Ozs7WUFHakM7YUFEVW1CO2FBQVZDO2FBQ0EsYUFIT04sWUFFUE07YUFFQSxhQUpvQkYsWUFFVkM7WUFFVixVQURKekMsRUFDQXRCO01BRUMsc0RBTm9DNEMsT0FNbUI7YUFHNURxQixpQkFBaUJQLFlBQWFJLFlBQWFJLFlBQWF0QjtNRGpKN0QsVUNpSjZEQTs7Ozs7OztjQUdoRDtlQURvQnVCO2VBQVZKO2VBQVZDO2VBQ0EsYUFIU04sWUFFVE07ZUFFQSxhQUpzQkYsWUFFWkM7ZUFHVixhQUxtQ0csWUFFZkM7Y0FHcEIsVUFGSjdDLEVBQ0F0QixFQUNBTTtNQUVDLHNEQVBtRHNDLE9BT007YUFHOUR3QixlQUFlVixZQUFhZDtNRDNKakMsVUMySmlDQTtRQUc1QjthQUg0QkE7U0FHZCx5Q0FIQ2MsWUFFVGhDO1FBQ1EsdUNBQVYyQztNQUVDLHNEQUx1QnpCLE9BSzZCO2FBR3pEMEIsZ0JBQWdCWixZQUFhZDtNRG5LbEMsVUNtS2tDQTs7O1VBSW5CO1dBREUyQjtXQUFMQztXQUNHLG9DQURFRDtXQUVGLDJCQURORSxJQUNxQixXQUxUZixZQUdUYzs7aUJBQUtEOzs7Y0FNRyxJQUROSSxhQUFMQyxhQUNXLGVBVENsQixZQVFaa0I7Y0FDQSxpQkFKQUY7Y0FJVyxJQUFYLDBCQURLQzs7WUFEQyxPQUZORDtRQUhRO01BV1Asc0RBYndCOUIsT0FhNkI7YUFHMURpQyxrQkFBa0JDLGNBQWNDLGNBQWNuQztNRG5MbkQsVUNtTG1EQTtRQUc5QzthQUg4Q0E7U0FHbkM7OztZRHRMaEI7Ozs7O2tCQ3lMOEQ7bUJBRG5DcUM7bUJBQVZDO21CQUM2QyxlQU56QkgsY0FLVkU7bUJBQ0ksZUFOUkgsY0FLTkk7a0JBQ2MsMENBSHRCaEQ7WUFJSyxzREFQcUNVLE9BT3dCO1FBRXRFLGlDQUxJb0MsSUFGRXREO1FBT04sT0FOSVE7TUFRQyxzREFYeUNVLE9BV2M7YUFHNUR1QyxpQkFBaUJ2QztNQUNuQixzREFEbUJBLE9BQ29EO2FBR3JFd0MsY0FBY3hDO01BQ2hCLHNEQURnQkEsT0FDc0Q7Ozs7T0EvTHBFOUM7T0FDQUM7T0FDQUU7T0FDQUU7T0FDQUU7T0FDQUU7T0FDQUU7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUc7T0FFQUU7T0FLQUU7T0FJQUc7T0FNQUU7T0FFQUU7T0FRQUk7T0FLQVE7T0FDQUM7O09BSUFDO09BRUFJO09BREFIO09BR0FLO09BTUFDO09BTUFDO09BTUFDO09BTUFDO09BU0FDO09BTUFDO09BUUFDO09BT0FDO09BT0FDO09BT0FDO09BQ0FFO09BRUFDO09BTUFDO09BU0FJO09BVUFHO09BUUFFO09BZ0JBTztPQWNBTTtPQUlBQzs7UUE5TEF0RjtRQUNBQztRQUNBRTtRQUNBRTtRQUNBRTtRQUNBRTtRQUNBRTtRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBRztRQUVBRTtRQWVBTztRQUVBRTtRQVFBSTtRQWNBZ0I7UUFNQUM7UUFNQUM7UUFNQUM7UUFNQUM7UUFTQUM7UUFNQUM7UUFRQUM7UUFPQUM7UUFPQUM7UUFPQUM7UUFDQUU7UUFFQUM7UUF5QkFRO1FBUUFFO1FBZ0JBTzs7O1FDNUtBUTthQUlBQyx5QkFBeUJDLElBQUkvRSxFQUFFb0M7TUFDakIsa0NBTGR5QyxZQUl5QkUsSUFBSS9FLEdBQUVvQyxPQUMrQzthQUs5RTRDLGFBQWFELElBQUkzQztNQUNIO3FDQUREMkM7ZUFBSTNDLE9BQ2tFO2FBR25GNkMsc0JBQXNCRixJQUFJRyxJQUFJOUM7TUFFOUIsSUFERStDLElBQ0YsV0FoQkFOLFlBY3NCRSxJQUFJRztNQUUxQix1QkFERUMsSUFENEIvQyxPQUlOO2FBR3hCZ0QsZ0JBQWdCTCxJQUFJM0M7TUFDTjtxQ0FERTJDO2VBQUkzQyxPQUMwRDthQUc5RWlELHdCQUF3Qk4sSUFBSTNDO01BQ2Q7cUNBRFUyQztlQUFJM0MsT0FDeUQ7YUFHckZrRCx1QkFBdUJQLElBQUkzQztNQUNiO3FDQURTMkM7ZUFBSTNDLE9BQzBEO2FBR3JGbUQsZ0JBQWdCUixJQUFJM0M7TUFDTjtxQ0FERTJDO2VBQUkzQyxPQUNxRDthQUt6RW9ELDBCQUEyQmxELEtBQU15QyxJQUFJVSxjQUFjckQ7TUFDbkI7MkNBREtxRDtPQUNuQjtPQUNWLGVBekNSWixZQXVDaUNFLElBQU56QyxLQUN6Qm9EO01BQ00sdUJBQU5QLElBRmlEL0MsT0FHM0I7YUFHeEJ1RCx3QkFBd0JaLElBQUlVLGNBQWNyRDtNQUM1QztvQ0FEMEIyQyxJQUFJVSxjQUFjckQsT0FDZ0M7YUFHMUV3RCxvQkFBb0JiLElBQUlVLGNBQWNyRDtNQUN4QztnQ0FEc0IyQyxJQUFJVSxjQUFjckQsT0FDZ0M7YUFHbEV5RDs7Ozs7OzthQUVhQzthQUFWQzs7O3FCQUFVRDs7VUFDSiwrQkFBUkU7O1FBRmU7O2FBS3BCQywwQkFBMEJsQixJQUFJM0MsT0FBT2xCO01BQ3ZCOytDQUR1QkE7T0FHckMsZUE5REEyRCxZQTJEMEJFLElBQ3hCbUI7TUFFRix1QkFERWYsSUFGNEIvQyxPQUtOO2FBR3hCK0QseUJBQXlCcEIsSUFBSTNDO01BQ3JCLElBQU4rQyxJQUFNLHNCQURpQko7TUFDakIsdUJBQU5JLElBRDJCL0MsT0FFTDthQUd4QmdFLHdCQUF3QnJCLElBQUkzQztNQUU1QixJQURFK0MsSUFDRixzQkFGd0JKO01BRXhCLHVCQURFSSxJQUQwQi9DLE9BTUo7Ozs7YUFPeEJpRSx3QkFBc0Isc0JBQXNCO2FBRTVDQywwQkFBMEJ2QixJQUFJM0M7TUFDaEI7cUNBRFkyQztlQUFJM0MsT0FDc0M7YUFHcEVtRSxhQUFheEIsSUFBSTNDO01BQ0g7cUNBREQyQztlQUFJM0MsT0FDcUU7YUFHdEZvRSxzQkFBc0J6QixJQUFJMEIsTUFBTXJFO01BRWhDLElBREUrQyxJQUNGLFdBakdBTixZQStGc0JFLElBQUkwQjtNQUUxQix1QkFERXRCLElBRDhCL0MsT0FPUjthQUd4QnNFLGdCQUFnQjNCLElBQUkzQztNQUNOO3FDQURFMkM7ZUFBSTNDLE9BQ2dFO2FBR3BGdUUsNkJBQTZCNUIsSUFBSTNDO01BRWpDO3FDQUY2QjJDO2VBQUkzQyxPQUczQjthQUdOd0UsNEJBQTRCN0IsSUFBSTNDO01BRWhDO3FDQUY0QjJDO2VBQUkzQyxPQUcxQjthQUdOeUUsV0FBVzlCLElBQUkzQztNQUNEO3FDQURIMkM7ZUFBSTNDLE9BQzJEOzs7O09BMUgxRXlDO09BSUFDO09BTUFFO09BSUFDO09BT0FHO09BSUFDO09BSUFDO09BSUFDO09BTUFDO09BTUFHO09BSUFDO09BSUlDO09BTUpJO09BUUFFO09BS0FDOztPQWFBQztPQUVBQztPQUlBQztPQUlBQztPQVVBRTtPQUlBQztPQU1BQztPQU1BQzs7Ozs7SUMxSFk7YUFTWkMsT0FBMkJuRyxHQUFLLE9BQUxBLElBQU87SUFUdEIsb0NBU1ptRztJQVRZO1VITmpCOzs7Ozs7O0lHQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthQ3lCQ0M7MkJBQWdCLGtCQUFRLG1CQUFZLFdBQWtDO2FBQ3RFQzs7OztPQUFxQ0c7O09BQXJCRSxNQURoQk4sbUJBQ2dCRzt3Q0FBcUJFOzBCQUFyQkUsT0FBOEQ7YUFFOUVDOzs7Ozs7OztPQU1FSjs7Ozs7O09BREFFOzBDQUNBRDtPQUZBVTt3Q0FDQVI7T0FGQVU7NENBQ0FEO09BRkFHOzBDQUNBRDtPQUZBRzt3Q0FDQUQ7MEJBREFFLE9BT29COzs7Ozs7Ozs7OzthQVVsQkMsc0JBQXVCQyxPQUEwQix1QkFBMUJBLE1BQTJDO2FBQ2xFQyxtQkFBb0JDLE9BQXVCLHdCQUF2QkEsVUFBb0Q7YUFDeEVDLHVCQUF3QkgsT0FBMkIsT0FBM0JBLEtBQWdDO2FBQ3hESSxlQUFnQkMsR0FBaUMsT0FBWixpQkFBckJBLFNBQXlDO2FBRXpEQyxpQkFBa0JDO01BQ0MsOEJBQVQsc0JBRFFBO01BQ1IsNkJBQXdCO2FBRWxDQyxnQkFBaUJIO01BQytCOztPQUFkLHFCQURqQkE7T0FDZ0I7T0FBVDtvREFBb0M7YUFFNURJLGVBQWVKLEdBQUksT0FBSkEsQ0FBSzthQUVwQkssWUFBYUw7TUFDSSwrQkFESkEsT0FDSTtNQUVKLHlCQUFULGlCQUZLTDtPQUV1Qix3QkFGOUJFO01BQWUsSUFHSyx1QkFIcEJBLE9BR0ksc0JBSEpBO01BR0ksaUNBQTJDO2FBRWpEUyxrQkFBbUJKLEdBQXdCLHdCQUF4QkEsRUFBcUM7YUFDeERLLGlCQUFrQkwsR0FBdUIsd0JBQXZCQSxFQUFtQzthQUNyRE0saUJBQWtCTixHQUF1Qix3QkFBdkJBLEVBQW1DO2FBQ3JETyxtQkFBb0JQLEdBQXlCLHVCQUF6QkEsRUFBc0M7YUFFMURRLGtCQUFvQkMsZ0JBQXdCQztNQUNuQzs2QkFEbUNBO09BRWhDLHNCQUZnQ0E7T0FFdEM7T0FDTSxzQkFIZ0NBO09BR3RDO09BQ08sMEJBRlhFLEVBQ0FaO09BRVEsd0JBSFJZLEVBQ0FaO09BRVE7ZUFFUmdCLGVBQWdCRDtRQUNsQixjQUVTRSxNQUFNQztVQUNULGNBRFNBLHNCQUVHLE9BRkhBO2NBR0FSLEVBSEFRO1VBR1csa0JBSGpCRDtrQ0FHTVA7Z0NBQXdEO1FBSnJFLDBDQUZnQks7UUFFaEIsd0JBT1UsSUFBTEwsV0FBSyxPQUFMQTtRQVBMLElBUU9TO1FBQUssT0FBTEEsR0FBTTs7UUFHZix5QkFmRUw7VUFnQnVCLHdCQWZ2QkM7VUFlQzt1Q0FmREE7O1lBTmtCTjtZQXVCZiwwQkFsQkhLO1lBa0JHLFNBakJIQztZQWtCUSxnQ0FuQlJELE9BRkFkO1lBc0JHLDBCQXBCSGMsT0FGQWQ7O1FBK0J3Qjs2QkE1QnhCZTtTQTRCRTtxQ0E1QkZBOztXQU5rQk47OztTQWlDcEIsK0JBM0JFTTtTQTJCRjttQkFEUUssSUFBSUg7WUFBUyxxQ0FBYkcsY0FBSUgsTUFBaUQ7U0FDN0QsaUJBRmdCRyxXQUFXLFFBQUU7U0FEN0I7O21CQTdCRVQ7O2tEQUdBRSx5QkErQk07YUFFUlEsY0FBZUM7TUFHVDswQkFIU0E7T0FJVCxtQkFKU0E7T0FLd0Isd0JBRHJDdEI7T0FDaUIsd0JBRmpCWTtPQUVvQyx1QkFBcEIsc0JBRGhCWjtNQUNvQyw0QkFBZ0I7YUFFdER1QixpQkFBa0J6QjtNQUNFLDhCQUFoQixxQkFEY0E7TUFDZCxrQ0FBOEI7YUFFbEMwQixrQkFBbUJDLEdBQXdCLHVCQUF4QkEsRUFBcUM7YUFDeERDLGtCQUFtQmhCLEdBQXdCLHdCQUF4QkEsRUFBcUM7YUFDeERpQixlQUFnQmpCLEdBQXFCLHdCQUFyQkEsRUFBK0I7YUFDL0NrQixlQUFnQmxCLEdBQXFCLE9BQXJCQSxDQUErQjthQUMvQ21CLHVCQUF3Qm5CLEVBQWNvQixHQUFxQix3QkFBbkNwQixFQUFjb0IsRUFBOEI7UUFDcEVDO2FBRUFDLGFBQWNoQztNQUNGLHlDQURFQSxHQUNGLGtCQUFWaUMsQ0FDTTthQUVSQyxxQkFBc0JsQztNQUNWLHlDQURVQSxHQUNWLGtCQUFQRixDQUNHO2FBRVJxQyxhQUFjRjtNQUNSLElBQUpHLElBQUksaUJBRFFILEdBQ1IsdUNBQUpHLElBQzJCO2FBRTdCQyxxQkFBc0JyQztNQUNWLHlDQURVQSxHQUNWLG9CQUFKc0MsR0FDQTthQUVSQyxnQkFBaUJDLEtBQWFDLE1BQWNDO01BQzlDO1FBQUksd0NBRGVGLEtBQWFDLE1BQWNDLEtBRXBDO3VDQUFvQjthQUU1QkMsZUFBZ0IzQztNQUNsQiw2REFEa0JBLEVBQ2lDOztLQUVqRDRDO0tBQ0FDO2FBRUFDLG9CQUFxQk4sS0FBYUMsTUFBY0M7TUFDbEQsdUNBRHVCRixLQUFhQyxNQUFjQyxJQUNjO2FBRTlESyxtQkFBb0IvQztNQUN0Qiw4REFEc0JBLEVBQytCO2FBZW5EZ0QsOEJBQStCaEQ7TUFDakMsdUNBRGlDQSxFQUNBO2FBUW5DaUQ7Ozs7OztVQUVFOzs7OztVQUNBLGtCQVR1QywrQkFTdkNHOzs7VUFDQSxrQkFUeUMsK0JBU3pDRTs7O1VBQ0Esa0JBVDJDLG1DQVMzQ0U7OztVQUNBLGtCQVRzQyxrQ0FTdENFOzs7VUFDQSxtQkFUOEMsc0NBUzlDRTs7OztXQUNBRTs7Ozs7OztXQUF5QkcsS0FBekJIO1dBQXlCSSxNQUF6Qko7V0FBeUJLO2dCQVIzQmxCLHdCQVEyQmdCO1dBQXpCSSxxQkFBeUJGO3dDQUF6Qkg7OztXQUNBTTs7Ozs7Ozs7OztlQUEyQlI7OztvQkFUN0JiLHdCQVM2QmE7O1dBQTNCVzs7O1VBQ0E7Ozs7O2NBVkZ4QjtjQVVFeUI7bURBRW9CO2FBRWxCRSxvQkFBaUIsUUFBWTthQUM3QkMsa0JBQWdCLFFBQUk7YUFDcEJDLFdBQVdDLEdBQUksVUFBSkEsRUFBVTthQUNyQkMsWUFBWUQsR0FBSSxVQUFKQSxFQUFXO2FBQ3ZCRSxjQUFjRixHQUFJLFVBQUpBLEVBQWE7YUFDM0JHLGNBQWNILEdBQUksVUFBSkEsRUFBYTthQUMzQkksV0FBV0osR0FBSSxVQUFKQSxFQUFVO2FBQ3JCSyxlQUFlTCxHQUFJLFVBQUpBLEVBQWM7YUFDN0JNLFlBQVlDLEVBQUVQLEdBQVUsc0NBQVpPLEVBQUVQLEdBQXlCO2FBRTNDUTtNRDFNRDs7O2VDME1DQzthQVFBQzs7O1NBQ0U7OztTQUNBOzs7O1VBSUlHO1VBREFDO1VBREFDO1VBRUF6SDs7b0RBTk5vSCxnQkFNTUc7O1VBREFySDs7O2FBS05tSDthQUxNRzt5Q0FDQXZIO1VBRkFVLE1BWk51RyxzQkFZTU87dUNBQ0F0SDtvREFEQVMsYUFJZ0I7YUFFdEJ5Rzs7Ozs7Ozs7MERBUUFDO09BSEV0SDs7T0FEQUUsTUE5Q0YwRSx3QkE4Q0UrQztxQ0FDQTFIO09BRkFVLE1Bck1GZCxpQkFxTUUrSDtrQ0FDQXpIO09BRkFVLE1BcEJGcUcsc0JBb0JFTztzQ0FDQTdHO09BRkFHOzs7VUFqTUZYO1VBaU1FeUg7bUNBQ0EvRzswQkFEQUUsT0FLRDthQUVEc0c7Ozs7OztPQUlFdEgsSUFaRnFILGtCQVlFUzs7T0FEQTVIOztpREFyQkZrSCxnQkFxQkVHO3NDQUNBdEg7T0FGQVU7OztVQVZGMEc7VUFVRVU7MENBQ0E1SDtPQUZBVSxNQTNCRnFHLHNCQTJCRWM7d0NBQ0FwSDswQkFEQUUsT0FJRDtRQUVHbUg7YUFDQUMsaUJBQWUsdUJBQWE7YUFDNUJDLG9CQUFrQixpQ0FGbEJGLFdBRW1DO2FBRW5DRyxlQUFlQyxLQUFLcEI7TUFDdEIsbUJBRGlCb0IsTUFKZkosWUFLRixPQURzQmhCLENBRXJCO2FBRUNxQixhQUFhRCxLQUFLM0I7TUFDcEIsbUJBRGUyQixNQVJiSixZQVNGLE9BRG9CdkIsQ0FFbkI7YUFFQzZCLHdCQUF5QkYsS0FBcUJHLEdBQWFDLE1BQU8vQjtNQUNwRSxTQWJFdUI7TUFhdUMsbUJBRGRJLEtBQXFCRyxHQUNQLFdBRG9CQyxNQUFPL0I7TUFDM0IsT0FEMkJBLENBRW5FO2FBRUNnQyxtQkFBbUJDLElBQUlqQztNQUN6QixHQUR5QkEsRUFDZixtQkFEV2lDLEtBaEJuQlYsWUFrQkYsT0FGeUJ2QixDQUV4QjthQUVLa0MsVUFBWUMsSUFBc0JDLElBQUlDO01BQzVDLEdBRGtCRixJQUFnQixRQUFoQkEscUJBQWdCRyxhQUFoQkM7TUFDbEIsU0FBUUMsZUFBZUosSUFBSUs7UUFDekIsU0FEeUJBLFNBR3ZCLHVDQUh1QkE7UUFHdkI7O2lCQUhtQkw7O2lCQUtuQk07aUJBTHVCRDs7aUJBMkJ2QkU7c0JBdkJzQjtNQUoxQixTQUtJRCxlQUFlTjtRRHJRdEI7VUN3UU8sSUFES0g7VUFDTCxxQ0FIZUcsUUFFVkg7UUFERyxxQ0FET0c7TUFMbkIsU0FVSVEsZ0JBQWdCUjtRQUNsQjs7O29CQUNlQSxXQUFVLHFDQUFWQSxRQUFpQztRQURoRCwwQ0FYTUksZUFVWUosSUFHRTtNQWJ0QixTQWNJUyw4QkFBOEJULElBQUlVO1FBQ3BDLFNBRG9DQTtRQUNwQzs7O1lBR0U7O3VCQU9VVixJQUFJVyxVQUFZLG9CQUFoQlgsT0FBSVcsVUFBK0M7YUFQN0Q7O3dCQU1rQlg7aUJBQVUscUNBQVZBLFFBQWtDO2FBRGxEO2tCQVRnQ1U7YUFPaEMsdUNBUGdDQTtZQU9oQzs7cUJBUDRCVjs7O3FCQWE5Qk87Ozs7UUFYa0Isc0JBRllQLElBQUlVLGFBWXZCO01BMUJmLFNBMkJJSCxhQUFhUDtRRDNScEI7O2tCQzZSZSw4QkFGS0E7a0JBQ0csOEJBREhBOzs7O1lBR0gsSUFBTHBDLFdBQUsscUNBSEdvQyxRQUdScEM7O1lBQ00saUJBQTJCLHFCQUFoQ2lEO1lBQWdDLHFDQUp6QmI7O1lBS0EsaUJBQXdCLG9CQUE3QmM7WUFBNkIscUNBTHhCZDs7WUFPYixpQkFBd0IsMEJBRGhCZTtZQUNnQixxQ0FQWGY7O1lBUUgsaUJBQXdCLG9CQUE3QmdCO1lBQTZCLHFDQVJyQmhCOztZQVNDLGlCQUF3Qix3QkFBN0JpQjtZQUE2QixxQ0FUekJqQjs7K0JBVUhrQjtpREFWR2xCLFFBVUhrQjs7WUFJUjthQUhZQzthQUFOQzs7dUJBS0VuSDtnQkFBTDs7NENBQUtBLFFBQUtpSCxLQWhCZlgsYUFnQnFCYyxNQUNzQzs7O3dCQUZ6Q3JCO2lCQUFVLHFDQUFWQSxRQUFrQzthQURsRDthQURBLHVDQUZNb0I7WUFFTixxQ0FiV3BCLGtCQVdDbUI7O1lBU2Q7O2FBSUUsaUNBTElHO2FBS0o7O3dCQUZnQnRCO2lCQUFVLHFDQUFWQSxRQUFrQzthQURsRCx3Q0FyQkZPO1lBcUJFLHFDQXJCV1A7TUEzQmpCLFNBb0RJWSxhQUFhWjtRRHBUcEI7O1dDc1RZLElBRFV1QjtXQUNWLG9DQURVQTtvQkFFZjs7c0JBSGF2Qjs7c0JBdENiUztzQkF1Q2VjO29CQUdXO3lDQUpidkIsUUFwRFRJLGVBcURXbUI7O1dBZ0JiOztZQVpvQ0M7WUFBTkM7WUFBWkM7WUFBVkM7WUFZUix5QkRyVVQsT0MrUFM3QjtZQXNFQTs7dUJBSGdCN0Y7Z0JBQVUsb0NBQVZBLFVBQXlDO1lBRHpELHdDQWpFRW1HO1lBZ0VGLHVDQVBRdUI7V0FPUjs7b0JBWlczQjs7OztvQkFLTzBCO29CQTNDcEJqQjtvQkEyQ3NDZTs7b0JBQU5DOztXQXNCOUI7WUFSMkJHO1lBQVJDO1lBQU5YO1lBUWIseUJEL1VULE9DK1BTcEI7WUErRUEsdUNBUGFvQjtXQU9iOztvQkExQldsQjs7O29CQTFDYlE7b0JBNkRxQnFCOztvQkFBUUQ7TUF2RWpDOztvQkFxRmtCNUIsV0FBVSxxQ0FBVkEsUUFBaUM7T0FEakQsd0NBaENFWTtPQWdDRixLQXJGZ0JUO09Bb0ZoQjsyQ0FwRnNDSCxjQUFJQyxPQXdGcEM7OztLQWtCRjZCO0tBV0ZDLGFBWEVEOzthQTJCRkU7TUFBc0I7O1NBRVU7VUFEdEJkO1VBQ3NCLHdDQUR0QkE7VUFDc0I7VUFBaEM7OztTQUU4QjtVQUR0QkU7VUFDc0Isd0NBRHRCQTtVQUNzQjtVQUE5Qjs7O1NBSUc7VUFIMkJDO1VBQUozQjtVQUFOdUM7VUFHakIsNkJBSDJCWjtVQUc1Qjs7VUFyQkosS0FrQjRCM0I7U0FqQlIsS0FpQlFBOztXQWYxQixTQWUwQkE7V0FUVyxHQVNYQTs7Ozs7O1dBZjFCO1NBa0JHLFNBREQsbUNBRmtCdUM7U0FFbEI7O1NBR0YsSUFEY3BDO1NBQ2Q7d0NBRGNBLG9DQUVnQzthQUkxQ3FDLFdBQVlDLEVBQWlCQztNQUNuQyxHQURtQ0E7WUFHNUJDLEVBSDRCRCxLQUdqQ0UsRUFIaUNGO1FBR3JCLGNBSElELEVBR2hCRztVQUNjLHFCQUpFSCxFQUdYRSxHQUNTO3VCQURkQyxFQUNJRSxLQUFHRDtRQUVGLFlBTjRCSDtNQUUzQixXQUlJO2FBRVZLLGlCQUFpQkM7TUFDQyxJQUFoQkMsY0FBZ0IsMEJBREREO01BQ0MsU0FDaEJFLGlCQUFpQkM7UUFBWSx1Q0FBWkEsVUFBNkI7TUFEOUIsU0FHaEJDLFdBQVc1QjtRQUFXLHVDQUFYQSxTQUEyQjtNQUh0QixTQVlaNkIsYUFBY0M7UUR4YTNCLElDd2EyQkM7O1FBQ3BCO21CQURvQkE7VUFDcEI7Ozs7bUJBZ0ZxQlYsYUFBVE07d0JBM0ZtQiwwQkEyRm5CQTtpQkFBNkMsR0FBN0NBOzs7Ozt1QkFHTzt3QkFEWEs7d0JBQ1cseUJBbkpqQnBCLFVBZ0ptQlM7d0JBbEpmLGlDQW9KRVcsU0FuRllEO3VCQWpFZDt3QkFBNEMsb0JBc0oxQ3BCLE9BdEpvQ3VCOzs0QkFzSnBDdkI7dUJBRFc7d0JBcEZDd0I7OztnQ0FpRlJSLE1BSUpoQixPQURBc0IsYUFwRllGOzBCQW9GWkU7d0JBcEZZRjs7aUJBOEZYOzs7ZUFDYyxtQkFBb0IsK0JBL0Z2QkE7ZUErRnVCLFVBL0Z2QkEsY0ErRkxLOzttQkE1RnNCQyxlQUFmckM7ZUFBeUIsY0FBekJBO2lCQUdwQixhQU5rQitCLGtCQUdpQk0sUUFIakJOO2tCQUdpQk07OzttQkF5RWUsSUFBaEJFO21CQUFnQixvQkFBaEJBO3FCQUViOzZDQTlFSFI7c0JBOEVHOzsrQkE5RUhBLGVBOEVSdEMsVUE5RVFzQyxVQThFZFU7c0JBOUVjVjs7Ozs7Ozs7bUJBRmhCO29CQVMyRFk7b0JBQVZ4QztvQkFBSjNCO29CQUFOMEI7b0JBQTNCdkI7b0JBVFoscUNBU3VDdUI7bUJBVHZDO29CQUFvQztvREFTR0E7MEJBVEg7Ozs7cUJBVUMsR0FERUE7Ozt5QkFJdkM7OzBCQUNXOzJEQUZQMEM7MEJBRUY7K0JBWmNiOzBCQVlkLFFBTFVwRCxLQUEyQnVCLE9BQU0xQixHQUFJMkI7MEJBSy9DLEtBWmM0QjswQkF4RWQsK0JBRENoQjt5QkFDRDswQkFDTzs7d0RBRk5BLFVBQWdCNUQsRUFFaEIwRjs7bUNBQ0csd0JBSEg5QixVQUFnQjVEO3lCQW9GbkIsSUFYZ0IyRixtQkFPMkNILFFBUDNDWjs7cUJBd0JoQjs7bUJBMUJBO21CQTRCRyxjQW5Cb0M3Qjs7O3FCQWR2QzsyREFjdUNBO3NCQWR2Qzs7eUJBQW9CO3dDQUFXLDBCQWNRQTs7Ozs7eUJBQW9CeUM7Ozs4QkE2Qk5JOzBCQUNsRCxvQkFEa0RBOzRCQWVaO29FQW5EekJoQjs2QkF1Q01rQjs2QkFZbEJDLE9BWjRCRjs0QkFDaEM7OEJBQ0U7OztrREFDRSx5QkFBb0QsRUFTcERFOytCQVZGOzs7O2tDQUk2QixJQUFoQkM7a0NBQWdCLG9CQUFoQkE7b0NBQ1E7NERBS25CRDtxQ0FMbUI7O29EQUFYRSxXQVBVSDs7cUNBWWxCQyxPQVo0QjFCOzs4QkFFOUIsSUFVUThCLFlBSFMsMEJBVEdMO2lDQVlsQkM7Ozs7a0NBRXNDSyxPQUZ0Q0w7a0NBRTRCTTtrQ0FBSkM7a0NBQU5DO2tDQUhkQyxrQkEzQ0loRixLQThDVStFLE9BQU1ELEtBQUlELFdBRnRCRjtrQ0FEUk0sT0FHd0NMOztpQ0FZbkI7O29DQTdFekI5QixnQkE2RXlCLDBCQWRuQnlCOzs7OztrQ0FjRTs7a0NBREE7a0NBREE7O2tDQURBOztrQ0FEQSx3Q0F6QitDSDtrQ0F5Qi9DO2tDQURGOztrQ0FWSVk7a0NBQU5DOzsrQkFvQkk7d0VBbEMrQ2I7Z0NBa0MvQzs7Z0NBREY7O2dDQW5CSVk7Z0NBQU5DOzhCQVRBOytCQWtDSixTQTNFa0I3QixZQWtEUjRCLFNBbERRNUIsVUFrRGQ2QjsrQkFsRGM3Qjs7O3FCQTJCbEI7Ozt3QkEzQmtCQTtvQ0FPSnBELEtBQTJCdUIsT0FBTTFCLEdBQUkyQixVQVBqQzRCO3dCQU8yQ1k7c0JBUDNDWjs7WUFnRzZCOzthQUF4Qjs7VUEvRnpCLElBQ1EsS0FGWUEsU0FFUSwrQkFGUkE7VUFFUSxVQUZSQSxvQkFnR3VEO01BNUd6RCxTQTZHaEJTLGVBQWV6RDtRQUVmOzs7O2NBQ0U7Z0JBQ3VDOztpQkExR3ZDLHFDQTBHd0JpQjtnQkExR3hCO2tCQUNrQyxtQ0F5R1ZBO2tCQXpHVTtnQkFIdEM7Y0E2R2EsUUFBTTtZQUxGakI7U0FFZjs7OztnQkFNMkJzQyxhQUFUTSxjQUFsQmhCO1lBQXFDLG9CQUFuQmdCO2NBQ2xCOzs7a0JBQzJCO3dCQUNTeEIsZUFBSjNCLFlBQU53QjtxQ0FBTXhCLEdBQUkyQjtrQkFFekIsNkJBQWE7ZUFIdEIsaURBRkZRO2VBU0kseUJBakxKQyxRQXdLMkJTO2VBV1YsbUNBSFhZO2VBSTRDLGlDQUQ1QzhCO2VBQ1csK0JBRFhBO2VBQ1c7c0JBSlg5QjtjQUlXLFNBTEQzQjtlQVNjLFlBVGRBLFVBT1oyRCxTQUVlRDs7O2dCQUZmQztpQkFHSztjQUF1RCxVQVY1RDdCLFVBUGNULE1BQ2RuQixXQU1NRCxLQU9OMEQ7UUFPQywyREFBMEM7TUExSS9CO1FBOElkLHlCQWpNRnJELFVBa0RlWSxhQThJZk07Ozs7UUFJQSxJQUZXb0M7UUFFWCxpQ0FGV0E7UUFFWCxJQUpBcEMsSUFyTEZqQjtNQTRMRixPQVBJaUIsTUFPTTthQUdWcUMsZUFPQ3hGLElBQUl5RixXQUFXQyxLQUFLQztNQUN2QjtvQkFFU0MsSUFBSUM7UUFDUDtVQUF1Qix1QkFEaEJBLFdBQ0hDOzs7OztRQUNKLEdBRkdGLEtBS2lCLEdBSmhCRSxRQUlnQix1QkFSdkI5RixLQU9xQixPQUpmNEY7UUFHVSxPQUZURSxPQUl5QztNQU5qRCxJQURFRCxPQUNGLHNDQUZLSjtNQUVMLEdBREVJLFFBV1EsSUFBTDlILEVBWEg4SCxVQVdRLE9BQUw5SDtNQUNNLGNBYksySCxRQWFRLGtCQWJIQztNQWFnQixnQkFBZ0I7YUFFckRJLG1CQUNDL0YsSUFDQXlGLFdBQ0FDLEtBQ0FDO01BQ0gsY0FFU0MsSUFBSUM7UUFDUCxTQURHRCxPQUVhLE9BRlRDOzJCQUdlLE9BSG5CRDtRQUltQix1QkFWekI1RixJQVVrRDtNQUxuRCxJQURFNkYsT0FDRixzQ0FKQ0o7TUFJRCxTQURFSTtRQVlJLHFCQWRMSDtRQWNLLGtCQUVPO1FBRlAsSUFDRU07UUFBSyxPQUFMQSxFQUFlLFdBZHRCTDtNQVdVLE9BVlRFLE1BY29CO2FBRXRCSSxnQkFBaUMsZ0JBQWdCO2FBSWpEQyxnQkFBaUJDLEdBQWdCQztNQUNuQztRQUNnQjtpREFGR0Q7U0FHSCx3Q0FIbUJDO1NBR25CLDhCQURWQyxRQUNBQzs7Ozt3Q0FFd0M7UUFUWCxXQVNzQzthQUt2RUMsY0FBZUosR0FBZ0JDO01BQ2pDO1FBQW9DOzhDQURuQkQsR0FBZ0JDO1NBQzdCOzs7O3dDQUMwQzttQkFBMkI7YUFHckVJLFlEam5CUDthQ2tuQk9DLFNBQVNDLEdBQUksT0FBSkEsWUFBNkI7YUFXdENDLFlBQVlDLElBQUssNkJBQUxBLEdBQW9CO2FBQ2hDQyxZQUFZRCxJQUFLLDZCQUFMQSxHQUFvQjthQUNoQ0UsWUFBWUMsSUFBSyw2QkFBTEEsR0FBb0I7UUFDaENDO2FBQ0FDLGlCRGpvQlAsd0JDK25Cd0I7YUFHakJDLGdCRGxvQlA7YUNtb0JPQyxpQkRub0JQO1FDb29CT0MsZ0JBQ0FDO2FBRUFDLFNBQVNoSixFQUFFaUosSUFBSWI7TUFDakIsSUFBSWMsSUFEYWQ7TUFDakIsU0FBSWMsSUFDWSxPQUZIRDtNQUNiLElBR2Msc0JBSkdiLFNBSUgsS0FIVmMsWUFHVTs7WUFDWjlOO1FBQ0U7VUFBVSwwQkFOR2dOLEVBS2ZoTjtVQUNPLGtCQU5FNEUsRUFJTG1KO1VBRVEsU0FEWi9OOzs7TUFHQSxPQUpJK04sSUFJRjtRQUVGQzthQUNBQyxTQUFTckosRUFBRW9JO01BQWlDO3dDQUFqQ0E7T0FBa0IsZ0NBQXBCcEk7TUFBb0Isd0NBQWlDO2FBQzlEc0osY0FBY2hCLEdBQUdpQixJQUFLLHdCQUFSakIsR0FBR2lCLEdBQWdCO2FBQ2pDQyxjQUFjbEIsR0FBR2lCLElBQUssd0JBQVJqQixHQUFHaUIsR0FBZ0I7YUFDakNFLGNBQWNoQixHQUFHaUIsSUFBSyx3QkFBUmpCLEdBQUdpQixHQUFnQjthQUNqQ0MsY0FBY1IsRUFBRVMsR0FBR0M7TUFBSyx5Q0FBVlYsR0FBRVMsR0FBR0MsR0FBOEM7UUFDakVDO2FBQ0FDLGNBQWN6QixHQUFHaUIsSUFBSyx3QkFBUmpCLEdBQUdpQixHQUFnQjthQUNqQ1MsY0FBYzFCLEdBQUdpQixJQUFLLHdCQUFSakIsR0FBR2lCLEdBQWdCO2FBQ2pDVSxjQUFjeEIsR0FBR2lCLElBQUssd0JBQVJqQixHQUFHaUIsR0FBZ0I7UUFDakNRO2FBQ0FDLGNBQWNDLElBQUlDO01BQXNDLHlDQUF0Q0E7TUFBc0Msd0NBQTFDRCxTQUEyRDtRQUN6RUU7YUFDQUMsZUFBZWpDLEdBQUdpQixJQUFLLHdCQUFSakIsR0FBR2lCLEdBQWdCO2FBQ2xDaUIsZUFBZWxDLEdBQUdpQixJQUFLLHdCQUFSakIsR0FBR2lCLEdBQWdCO2FBRWxDa0IsZUFBZW5DLEdBQUdpQjtNQUNQOytCQURJakI7T0FFSix3QkFGT2lCO09BR08sc0JBSFBBO09BR0wsNENBSEVqQjtPQUlNLHFCQUhuQm9DO09BR2EsaUNBRmJDO09BRzhDLHNCQUQ5Q0U7T0FDNkMsMkJBQWxCLGlCQUQzQkE7T0FDNkM7O09BR25CLHNCQUoxQkE7TUFJc0IsNkJBQXBCLG1CQUhHQztRQUlKLDBCQUpEQztRQUlDLDZCQU5ESDtNQU9DLHdCQUxERyxJQUZBSCxTQU8wQjthQUU1QkksZUFBZXRRLEVBQUVGO01BQWtDLDBCQUFsQ0E7TUFBa0MsdUNBQXBDRSxPQUFnRDthQUUvRHVRLGNBQWMzQyxHQUFHaUI7TUFFaEIsbUJBRmdCQSxJQUVDO01BQ1EseUJBSFRBLElBR1IscUJBSEtqQjtNQUdMLGtDQUFpQzthQUUxQzRDLGNBQWM1QyxHQUFHaUI7TUFDaEIsbUJBRGdCQSxJQUNDLGlCQUE0Qix3QkFEaENqQixHQUFHaUIsR0FDd0M7YUFFekQ0QixjQUFjMUMsR0FBR2lCO01BQ2hCLG1CQURnQkEsSUFDQztNQUNRLHlCQUZUQSxJQUVSLHFCQUZLakI7TUFFTCxrQ0FBaUM7YUFFMUMyQyxjQUFjM0MsR0FBRzRDO01BQ2hCLG1CQURnQkEsSUFDQztNQUE4QyxzQkFEbEQ1QyxHQUNrRCxpQkFEL0M0QyxJQUN5RDthQUUxRUMsY0FBY0MsR0FBR0M7TUFDbkI7UUFHcUI7NENBSkZBO1NBR0UsbUNBSExEOzs7d0NBS2dDO1FBRWhEOzJCQU5JakQsR0FBSWlCLEdBTVc7YUFFakJrQyxhQUFhbkQsR0FBR2lCLElBQUssNEJBQVJqQixHQUFHaUIsV0FBd0I7YUFDeENtQyxhQUFhcEQsR0FBR2lCLElBQUssd0JBQVJqQixHQUFHaUIsV0FBd0I7YUFDeENvQyxhQUFhbEQsR0FBR2lCLElBQUssNEJBQVJqQixHQUFHaUIsV0FBd0I7YUFDeENrQyxhQUFhTCxHQUFHQyxJQUFLLHVCQUFSRCxHQUFHQyxXQUE4QjthQUM5Q0ssYUFBYU4sR0FBR0M7TUFBSyxzQ0FBUkQsR0FBR0MsV0FBNkM7YUFDN0RNLGNBQWN4RCxHQUFHaUIsSUFBSyw0QkFBUmpCLEdBQUdpQixZQUF5QjthQUMxQ3dDLGNBQWN6RCxHQUFHaUIsSUFBSyx3QkFBUmpCLEdBQUdpQixZQUF5QjthQUMxQ3lDLGNBQWN2RCxHQUFHaUIsSUFBSyw0QkFBUmpCLEdBQUdpQixZQUF5QjthQUMxQ3VDLGNBQWNWLEdBQUdDLElBQUssdUJBQVJELEdBQUdDLFlBQStCO2FBQ2hEVSxjQUFjWCxHQUFHQztNQUFLLHNDQUFSRCxHQUFHQyxZQUE4QzthQUMvRFcsYUFBYTdELEdBQUdpQixJQUFLLGdDQUFSakIsR0FBR2lCLE9BQXdCO2FBQ3hDNkMsYUFBYTlELEdBQUdpQixJQUFLLDRCQUFSakIsR0FBR2lCLE9BQXdCO2FBQ3hDOEMsYUFBYTVELEdBQUdpQixJQUFLLGdDQUFSakIsR0FBR2lCLE9BQXdCO2FBQ3hDNEMsYUFBYWYsR0FBR0MsSUFBSywyQkFBUkQsR0FBR0MsT0FBOEI7YUFDOUNlLGFBQWFoQixHQUFHQztNQUFLLDBDQUFSRCxHQUFHQyxPQUE2QzthQUM3RGdCLGNBQWNsRSxHQUFHaUIsSUFBSyxpQ0FBUmpCLEdBQUdpQixPQUF5QjthQUMxQ2tELGNBQWNuRSxHQUFHaUIsSUFBSyw2QkFBUmpCLEdBQUdpQixPQUF5QjthQUMxQ21ELGNBQWNqRSxHQUFHaUIsSUFBSyxpQ0FBUmpCLEdBQUdpQixPQUF5QjthQUMxQ2lELGNBQWNwQixHQUFHQyxJQUFLLDRCQUFSRCxHQUFHQyxPQUErQjthQUNoRG9CLGNBQWNyQixHQUFHQztNQUFLLDJDQUFSRCxHQUFHQyxPQUE4QzthQUMvRHFCLGFBQWF2RSxHQUFHaUIsSUFBSywwQkFBUmpCLEdBQUdpQixHQUFrQjthQUNsQ3VELGFBQWF4RSxHQUFHaUIsSUFBSyx3QkFBUmpCLEdBQUdpQixHQUFrQjthQUNsQ3dELGFBQWF0RSxHQUFHaUIsSUFBSywwQkFBUmpCLEdBQUdpQixHQUFrQjthQUNsQ3NELGFBQWF6QixHQUFHQyxJQUFLLHFCQUFSRCxHQUFHQyxHQUF3QjthQUN4Q3lCLGFBQWExQixHQUFHQztNQUFLLDRDQUFSRCxHQUFHQyxPQUE2Qzs7S0FDN0QwQjs7O09BL0dBaEY7T0FDQUM7T0E5aUJGbE47T0E4Q0FnQjtPQS9EQXhCO09BcUZBc0M7T0FSQUg7T0FKQUY7T0F1QkFZO09BQ0FDO09BekZBMUM7T0FnREFrQjtPQWtoQkVzTTtPQUNBRTtPQUNBQztPQUNBRTtPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUVBQztPQVVBSTtPQUNBQztPQUNBQztPQUNBRTtPQUNBQztPQUNBRTtPQUNBRztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBRztPQUNBQztPQUNBQztPQUVBQztPQVlBTztPQUVBQztPQUtBQztPQUdBQztPQUlBQztPQUdBRTtPQVNBRztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztLQS9HQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FFQUM7S0FVQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FFQUM7S0FZQUM7S0FFQUM7S0FLQUM7S0FHQUM7S0FJQUM7S0FHQUM7S0FTQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7OztPQXZzQk43WTtPQUNBQzs7Ozs7Ozs7T0F3SkErRTtPQWNJMkI7T0FDQUM7T0FDQUM7T0FDQUU7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FFSkU7T0FRQUU7T0FVQUM7T0FRQUM7T0FTSWE7VUE4S0VvRDtPQS9LRnJEO09BR0FFO09BSUFFO09BSUFDO09BSUFHO09BSUlFO09Bak5Kekg7T0FDQUU7T0FJQUs7T0FIQUg7T0FDQUM7T0FLQUk7T0FHQUM7T0FFQUM7T0FNQUM7T0FLQUk7T0FGQUQ7T0FEQUQ7T0FEQUQ7T0F5Q0FnQjtPQU9BRTtPQUdBQztPQUNBRTtPQUNBQztPQUNBQztPQUVBRztPQURBRjtPQWVBUTtPQVJBSDtPQUlBQztPQVJBSDtPQW9CQVc7T0FKQUo7T0FPQUs7T0FDQUM7T0FFQUM7T0FtQkFFO09BaEJBRDtPQTBaQXlKO09Bc0JBTztPQXFCQUU7O09BbUJFd0Y7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FFQUM7T0FVQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FFQUM7T0FZQUM7T0FFQUM7T0FLQUM7T0FHQUM7T0FJQUM7T0FHQUM7T0FTQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7O1VEaHVCUDs7Ozs7OztJQ0FBOzs7Ozs7Ozs7S0MwR09DO0tBRUFDOzs7Ozs7O3dDQUZBRCxRQUVBQzs7O0lBM0dNOztZQXlHTkQsUUFFQUM7S0EzR007SUF5SUY7SUFFZSxTQUFuQkMsTUFBS0MsS0FBTyxNQUFNQSxHQUF2QjtJQUF3Qjs7O09BQW5CRDs7OztLQUFtQjs7Ozs7O1VENUkxQjs7Ozs7OztJQ0FBO3lCQ0NVRSx1QkFBdUJBLGtCQUFtQkM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUREcEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJRW1CZTs7Ozs7Ozs7Ozs7Ozs7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QUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUlBRTtPQUZBRDtPQUlBRTtPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztLQWttRmdCOztPQXR6RGxCQzs7T0ErbkJBTTtPQU5BRDtPQVFBRTtPQWRBSjtPQWhPQUY7O09BaDRDQXZRO09BRUFtRztPQUVBRztPQUVBRTtPQTJpRUFDO09BRUFzVTs7T0EzMkRBcFU7T0FGQU07T0FJQUk7T0FtNURBZ1U7T0FZQUc7T0E3NURBaFU7T0FzNERBNFQ7T0FsQkFIO09BTUFDO09BT0FDO1VBOGNFYyxTQXZHQUw7VUEwSEFVO09BNzBCRmhMO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFD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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDT3dCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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T0FLQUM7T0FrQkZDO09BV0FDO09Ba0JFRTtPQU9BRTtPQWdCQUM7T0FTQUU7T0F1QkFDO09BZ0JBRTtPQWlDRkM7T0FZQUM7T0F5QkUzTDtPQVdBbUI7T0F5QkF5SztPQVFBQztPQTRCQUM7T0EwQkFDO09Bd0NBQztPQWNBRTtPQStCRkM7T0FlQUM7T0F5QkFFO09BWUFDO09BeUJBRTtPQVdBQztPQXNCQUU7T0FZQUM7T0FxQkVDO09BU0FDO09BZ0NBQztPQXNCQUM7T0FzQ0FDO09Bb0JBQztPQXdCQUM7T0FXQUM7T0E4QkFDO09BaUJBRTtPQXFDQUM7T0FlQUM7T0E2QkZDO09BV0FDO09BeUJBQztPQWdCQUM7T0ErQkFFO09BdUJBQztPQTZCRUM7T0FvQkFDO09BZ0NBQztPQVlBRTtPQTZCQUM7T0FtQkFDO09Ba0NBQztPQThCQUM7T0F3QkFoTjtPQVlBQztPQXNCQVA7T0FhQUM7T0E0QkFzTjtPQWtCQUM7T0E0QkFDO09BVUFDO09Ba0NBQztPQWtDQUM7T0FpRUFuZjtPQWNBQztPQTJCQW1mO09Bb0JBQztPQXVDQUM7T0E0Q0FDO09BbURBQztPQVVBQztPQW1DQUM7T0FvQ0FDO09BNkVBQztPQXNCQUM7T0FxREFDO09Bb0NBQztPQTBFQUM7T0FvQ0FDO09BK0VBQztPQTJCQUM7T0FvREFDO09Bb0JBQztPQThCQUM7T0FNQUM7T0FpQkFDO09BZ0JBQztPQTZCQXJQO09BWUFzUDtPQXFCQUM7T0FjQUM7T0F1QkFDO09BUUFDO09BZ0JBQztPQVlBQztPQW9CQUM7T0FXQUM7T0FnQkFDO09BS0FDO09BYUFDO09BZ0JBQztPQWdCRkM7T0FTQXJoQjtPQVNBc2hCO09BU0FDO09BU0FDO09BU0FDO09BU0FDO09BU0FDO09BU0FDO09BU0FDO09BS0FDO09BU0FDO09BU0FDO09BU0FDO09BU0FDO09BU0FDO09BU0FDO09BU0FDO09BU0FDO09BU0FDO09BU0FoUjtPQVNBTTtPQVNBMlE7T0FTQUM7T0FTQUM7SUFVRDs7OztVSi9pSko7Ozs7Ozs7SUlBQTs7Ozs7Ozs7Ozs7Ozs7OztNQzRDMkI7d0JBQUtDO2lCQUNsQjttQkFFTTs7Ozt1QkFIWUE7dUNBTUs7aUJBTHZCLDhDQUt3QixFQUFDOztNQWpCWjt3QkFBS0M7aUJBQ2xCO21CQUVNOzs7O3VCQUhZQTswQ0FNUTtpQkFMMUIsOENBSzJCLEVBQUM7SUFadkM7Ozs7Ozs7VUQzQkg7Ozs7Ozs7SUNBQTs7OztJQ2tCUzs7O1VEbEJUIiwic291cmNlc0NvbnRlbnQiOltdfQ== \ No newline at end of file